152 lines
6.3 KiB
Lua
152 lines
6.3 KiB
Lua
-------------------------------------------------------------------------------
|
|
---Class to build product edition dialog
|
|
---@class ModelEdition
|
|
ModelEdition = newclass(FormModel)
|
|
|
|
-------------------------------------------------------------------------------
|
|
---On initialization
|
|
function ModelEdition:onInit()
|
|
self.panelCaption = ({"helmod_panel.model-edition"})
|
|
end
|
|
|
|
-------------------------------------------------------------------------------
|
|
---On Style
|
|
---@param styles table
|
|
---@param width_main number
|
|
---@param height_main number
|
|
function ModelEdition:onStyle(styles, width_main, height_main)
|
|
styles.flow_panel = {
|
|
minimal_height = 500,
|
|
maximal_height = math.max(height_main,600),
|
|
}
|
|
end
|
|
|
|
-------------------------------------------------------------------------------
|
|
---On Bind Dispatcher
|
|
function ModelEdition:onBind()
|
|
Dispatcher:bind("on_gui_refresh", self, self.update)
|
|
end
|
|
|
|
-------------------------------------------------------------------------------
|
|
---On update
|
|
---@param event LuaEvent
|
|
function ModelEdition:onUpdate(event)
|
|
self:updateInfo(event)
|
|
self:updateShare(event)
|
|
self:updateNote(event)
|
|
end
|
|
|
|
-------------------------------------------------------------------------------
|
|
---Update information
|
|
---@param event LuaEvent
|
|
function ModelEdition:updateInfo(event)
|
|
local model = self:getParameterObjects()
|
|
local info_panel = self:getFramePanel("information")
|
|
info_panel.clear()
|
|
|
|
GuiElement.add(info_panel, GuiLabel("label-info"):caption({"helmod_common.information"}):style("helmod_label_title_frame"))
|
|
|
|
local block_table = GuiElement.add(info_panel, GuiTable("output-table"):column(2))
|
|
|
|
GuiElement.add(block_table, GuiLabel("label-owner"):caption({"helmod_result-panel.owner"}))
|
|
GuiElement.add(block_table, GuiLabel("value-owner"):caption(model.owner))
|
|
|
|
end
|
|
|
|
-------------------------------------------------------------------------------
|
|
---Update share
|
|
---@param event LuaEvent
|
|
function ModelEdition:updateShare(event)
|
|
local model = self:getParameterObjects()
|
|
local share_panel = self:getFramePanel("share")
|
|
share_panel.clear()
|
|
|
|
GuiElement.add(share_panel, GuiLabel("label-share"):caption({"helmod_result-panel.share"}):style("helmod_label_title_frame"))
|
|
|
|
local block_table = GuiElement.add(share_panel, GuiTable("output-table"):column(2))
|
|
|
|
local tableAdminPanel = GuiElement.add(block_table, GuiTable("table"):column(2))
|
|
local model_read = false
|
|
if model.share ~= nil and bit32.band(model.share, 1) > 0 then model_read = true end
|
|
GuiElement.add(tableAdminPanel, GuiLabel(self.classname, "share-model-read"):caption({"helmod_common.reading"}):tooltip({"tooltip.share-mod", {"helmod_common.reading"}}))
|
|
GuiElement.add(tableAdminPanel, GuiCheckBox(self.classname, "share-model", model.id, "read"):state(model_read):tooltip({"tooltip.share-mod", {"helmod_common.reading"}}))
|
|
|
|
local model_write = false
|
|
if model.share ~= nil and bit32.band(model.share, 2) > 0 then model_write = true end
|
|
GuiElement.add(tableAdminPanel, GuiLabel(self.classname, "share-model-write"):caption({"helmod_common.writing"}):tooltip({"tooltip.share-mod", {"helmod_common.writing"}}))
|
|
GuiElement.add(tableAdminPanel, GuiCheckBox(self.classname, "share-model", model.id, "write"):state(model_write):tooltip({"tooltip.share-mod", {"helmod_common.writing"}}))
|
|
|
|
local model_delete = false
|
|
if model.share ~= nil and bit32.band(model.share, 4) > 0 then model_delete = true end
|
|
GuiElement.add(tableAdminPanel, GuiLabel(self.classname, "share-model-delete"):caption({"helmod_common.removal"}):tooltip({"tooltip.share-mod", {"helmod_common.removal"}}))
|
|
GuiElement.add(tableAdminPanel,GuiCheckBox( self.classname, "share-model", model.id, "delete"):state(model_delete):tooltip({"tooltip.share-mod", {"helmod_common.removal"}}))
|
|
end
|
|
|
|
-------------------------------------------------------------------------------
|
|
---Update note
|
|
---@param event LuaEvent
|
|
function ModelEdition:updateNote(event)
|
|
local model = self:getParameterObjects()
|
|
local note_panel = self:getFramePanel("note")
|
|
note_panel.clear()
|
|
local group_string = model.group or ""
|
|
GuiElement.add(note_panel, GuiLabel("label-group"):caption({"helmod_common.group"}):style("helmod_label_title_frame"))
|
|
local text_group = GuiElement.add(note_panel, GuiTextField(self.classname, "group-text"):text(group_string))
|
|
text_group.style.width = 250
|
|
|
|
local data_string = model.note or ""
|
|
GuiElement.add(note_panel, GuiLabel("label-note"):caption({"helmod_common.note"}):style("helmod_label_title_frame"))
|
|
local text_box = GuiElement.add(note_panel, GuiTextBox(self.classname, "note-text"):text(data_string))
|
|
|
|
GuiElement.add(note_panel, GuiButton(self.classname, "model-note"):caption({"helmod_button.save"}))
|
|
end
|
|
|
|
-------------------------------------------------------------------------------
|
|
---On event
|
|
---@param event LuaEvent
|
|
function ModelEdition:onEvent(event)
|
|
local model = self:getParameterObjects()
|
|
if User.isWriter(model) then
|
|
if event.action == "model-note" then
|
|
local group_field_name = table.concat({self.classname, "group-text"},"=")
|
|
local note_field_name = table.concat({self.classname, "note-text"},"=")
|
|
if event.element.parent ~= nil and event.element.parent[group_field_name] ~= nil then
|
|
local group = event.element.parent[group_field_name].text
|
|
model.group = group or ""
|
|
end
|
|
if event.element.parent ~= nil and event.element.parent[note_field_name] ~= nil then
|
|
local note = event.element.parent[note_field_name].text
|
|
model.note = note or ""
|
|
end
|
|
Controller:send("on_gui_refresh", event)
|
|
end
|
|
|
|
if event.action == "share-model" then
|
|
local access = event.item2
|
|
if model ~= nil then
|
|
if access == "read" then
|
|
if model.share == nil or not(bit32.band(model.share, 1) > 0) then
|
|
model.share = 1
|
|
else
|
|
model.share = 0
|
|
end
|
|
end
|
|
if access == "write" then
|
|
if model.share == nil or not(bit32.band(model.share, 2) > 0) then
|
|
model.share = 3
|
|
else
|
|
model.share = 1
|
|
end
|
|
end
|
|
if access == "delete" then
|
|
if model.share == nil or not(bit32.band(model.share, 4) > 0) then
|
|
model.share = 7
|
|
else
|
|
model.share = 3
|
|
end
|
|
end
|
|
end
|
|
Controller:send("on_gui_refresh", event)
|
|
end
|
|
end
|
|
end |