Skip to content

Commit 17a0ac1

Browse files
# Release 4.2.0 (#3)
# Release 4.2.0 ## New features - Edit values within parameters via UI - Trigger other modules to load specific parameters
1 parent e2d1222 commit 17a0ac1

File tree

10 files changed

+2076
-236
lines changed

10 files changed

+2076
-236
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
# Changelog
22
All notable changes to this project will be documented in this file.
33

4+
## Release 4.2.0
5+
6+
### New features
7+
- Edit values within parameters via UI
8+
- Trigger other modules to load specific parameters
9+
410
## Release 4.1.0
511

612
### New features

CSK_Module_PersistentData/pages/pages/CSK_Module_PersistentData/CSK_Module_PersistentData.html

Lines changed: 314 additions & 5 deletions
Large diffs are not rendered by default.

CSK_Module_PersistentData/project.mf.xml

Lines changed: 82 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,60 @@ After that, do not forget to save the received data as stated in step 4. +
121121
<desc>Notify event to trigger other modules to load their related data.</desc>
122122
<param alias="Container" desc="Data container with parameters to load." multiplicity="1" name="data" type="object"/>
123123
</event>
124+
<event name="OnNewStatusParameterTypeSelected">
125+
<desc>Notify what parameter type was selected within a parameter set.</desc>
126+
<param desc="Type of parameter." multiplicity="1" name="parameterType" type="string"/>
127+
</event>
128+
<event name="OnNewStatusSelectedParameterIsTable">
129+
<desc>Notfiy if currently selected parameter holds table data.</desc>
130+
<param desc="Status" multiplicity="1" name="status" type="bool"/>
131+
</event>
132+
<event name="OnNewStatusSelectedParameterWithinTable">
133+
<desc>Notify name of selected parameter within parameter table.</desc>
134+
<param desc="Name" multiplicity="1" name="name" type="string"/>
135+
</event>
136+
<event name="OnNewStatusListOfTableParameters">
137+
<desc>Notify list of parameter names within parameter table.</desc>
138+
<param desc="List of parameter names." multiplicity="1" name="list" type="string"/>
139+
</event>
140+
<event name="OnNewStatusStringValueOfSelecteParameter">
141+
<desc>Notify string value of currently selected parameter.</desc>
142+
<param desc="Value" multiplicity="1" name="value" type="string"/>
143+
</event>
144+
<event name="OnNewStatusNumberValueOfSelecteParameter">
145+
<desc>Notify number value of currently selected parameter.</desc>
146+
<param desc="Value" multiplicity="1" name="value" type="float"/>
147+
</event>
148+
<event name="OnNewStatusBooleanValueOfSelecteParameter">
149+
<desc>Notify string value of currently selected parameter.</desc>
150+
<param desc="Value" multiplicity="1" name="value" type="bool"/>
151+
</event>
152+
<event name="OnNewStatusListOfModules">
153+
<desc>Notify list of available CSK modules.</desc>
154+
<param desc="List of CSK modules." multiplicity="1" name="list" type="string"/>
155+
</event>
156+
<event name="OnNewStatusSelectedModuleToSendParameter">
157+
<desc>Notify preselected module to send currently selected parameter.</desc>
158+
<param desc="Module" multiplicity="1" name="module" type="string"/>
159+
</event>
160+
<event name="OnNewStatusSendParametersToModule">
161+
<desc>Notify event to trigger a module to load specific parameters.</desc>
162+
<param desc="Name of module." multiplicity="1" name="moduleName" type="string"/>
163+
<param desc="Name of parameters to load." multiplicity="1" name="parameterName" type="string"/>
164+
<param desc="Optional number of instance of module." multiplicity="?" name="instance" type="int"/>
165+
</event>
166+
<event name="OnNewStatusSelectedModuleInstanceToSendParameter">
167+
<desc>Notify instance of preselected module to send currently selected parameter.</desc>
168+
<param desc="Instance identifier." multiplicity="1" name="instance" type="int"/>
169+
</event>
170+
<event name="OnNewStatusSelectionIsMultiModule">
171+
<desc>Notify if selected module to send parameters is a multi module.</desc>
172+
<param desc="Status" multiplicity="1" name="status" type="bool"/>
173+
</event>
174+
<event name="OnNewThreadFeedbackStatus">
175+
<desc>Notify current thread status.</desc>
176+
<param desc="Status of the module." multiplicity="1" name="status" type="string"/>
177+
</event>
124178
<function name="saveData">
125179
<desc>Save current parameter set.</desc>
126180
<return desc="Success of saving parameters." multiplicity="1" name="success" type="bool"/>
@@ -222,15 +276,41 @@ To make this permanent, it is needed to save the persistent data afterwards (see
222276
<desc>Function to get info what parameter file is currently in use.</desc>
223277
<return desc="Name of parameter file." multiplicity="1" name="parameterName" type="string"/>
224278
</function>
279+
<function name="setSelectedParameterWithinTableViaUI">
280+
<desc>Function to select parameter within UI.</desc>
281+
<param desc="Selection" multiplicity="1" name="selection" type="string"/>
282+
</function>
283+
<function name="setParameterSelectionWithinTable">
284+
<desc>Function to set selected parameter within selected parameter set table.</desc>
285+
<param desc="Selection" multiplicity="1" name="selection" type="string"/>
286+
</function>
287+
<function name="setNewValueForSelectedParameter">
288+
<desc>Function to preset value for selected parameter.</desc>
289+
<param desc="Value (can be string, nnumber or boolean)." multiplicity="1" name="value" type="auto"/>
290+
</function>
291+
<function name="setNewValueToParameterViaUI">
292+
<desc>Function to set preconfigured value to parameter.</desc>
293+
</function>
294+
<function name="setModuleToSendParameters">
295+
<desc>Function to select module to send parameters.</desc>
296+
<param desc="Module to select." multiplicity="1" name="selection" type="string"/>
297+
</function>
298+
<function name="sendParameterToModuleViaUI">
299+
<desc>Function to trigger a module to load currently selected parameters (optionally for specific instance). Needs to be preconfigured via 'setModuleToSendParameters' and (optionally) 'setModuleInstanceToSendParameters'.</desc>
300+
</function>
301+
<function name="setModuleInstanceToSendParameters">
302+
<desc>Function to select instance of selected module to send parameters.</desc>
303+
<param desc="Instance of module." multiplicity="1" name="selection" type="int"/>
304+
</function>
225305
</serves>
226306
</crown>
227307
<meta key="author">SICK AG</meta>
228-
<meta key="version">4.1.0</meta>
308+
<meta key="version">4.2.0</meta>
229309
<meta key="priority">low</meta>
230310
<meta key="copy-protected">false</meta>
231311
<meta key="read-protected">false</meta>
232312
<meta key="crown2-flow-engine">false</meta>
233-
<meta key="LuaLoadAllEngineAPI">true</meta>
313+
<meta key="LuaLoadAllEngineAPI">false</meta>
234314
<entry default="CSK_Module_PersistentData.lua" path="scripts"/>
235315
</application>
236316
</manifest>

CSK_Module_PersistentData/scripts/CSK_Module_PersistentData_AsyncLoadData.lua

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
---@diagnostic disable: undefined-global, redundant-parameter, missing-parameter
22

3+
Script.serveEvent("CSK_PersistentData.OnNewThreadFeedbackStatus", "PersistentData_OnNewThreadFeedbackStatus")
4+
35
-- If App property "LuaLoadAllEngineAPI" is FALSE, use this to load and check for required APIs
46
-- This can improve performance of garbage collection
57
local availableAPIs = require('Configuration/PersistentData/helper/checkAPIs') -- check for available APIs
@@ -12,6 +14,17 @@ _G.logger = Log.SharedLogger.create('ModuleLogger')
1214
local json = require("Configuration.PersistentData.helper.Json")
1315
local scriptParams = Script.getStartArgument() -- Get parameters from model
1416

17+
-- Timer to hide UI messages after 5 seconds
18+
local logTmr = Timer.create()
19+
logTmr:setExpirationTime(5000)
20+
logTmr:setPeriodic(false)
21+
22+
--- Function to hide UI message
23+
local function handleOnLogTmrExpired()
24+
Script.notifyEvent('PersistentData_OnNewThreadFeedbackStatus', 'EMPTY')
25+
end
26+
Timer.register(logTmr, 'OnExpired', handleOnLogTmrExpired)
27+
1528
--- Function to trigger other modules to load their specific parameters
1629
---@param data Container Data container with parameters to load.
1730
local function handleOnNewDataToLoad(data)
@@ -85,3 +98,67 @@ local function handleOnNewDataToLoad(data)
8598
end
8699
Script.register('CSK_PersistentData.OnNewDataToLoad', handleOnNewDataToLoad)
87100

101+
102+
--- Function to trigger other modules to load specific parameters
103+
---@param moduleName string Name of module.
104+
---@param parameterName string Name of parameters to load.
105+
---@param instance? int Optional number of instance of module.
106+
local function handleOnNewStatusSendParametersToModule(moduleName, parameterName, instance)
107+
108+
local name = string.gsub(moduleName, '_1stModule_', '_')
109+
name = string.gsub(name, '_Module_', '_')
110+
name = string.gsub(name, '_Application_', '_')
111+
112+
_G.logger:fine(nameOfModule .. ": Try to set parameters " .. tostring(parameterName) .. " to module " .. tostring(name) .. " (optional instance = " .. tostring(instance) .. ").")
113+
local instanceSelectionExists = false
114+
local setInstanceExists = false
115+
local instanceAmountExists = false
116+
117+
if instance then
118+
instanceSelectionExists = Script.isServedAsFunction(name .. '.setSelectedInstance')
119+
setInstanceExists = Script.isServedAsFunction(name .. '.setInstance')
120+
instanceAmountExists = Script.isServedAsFunction(name .. '.getInstancesAmount')
121+
122+
if instanceAmountExists then
123+
local _, amount = Script.callFunction(name .. '.getInstancesAmount')
124+
if amount <= instance then
125+
if instanceSelectionExists then
126+
Script.callFunction(name .. '.setSelectedInstance', instance)
127+
elseif setInstanceExists then
128+
Script.callFunction(name .. '.setInstance', instance)
129+
else
130+
_G.logger:warning(nameOfModule .. ": Not possible to set instance.")
131+
Script.notifyEvent('PersistentData_OnNewThreadFeedbackStatus', 'ERR')
132+
logTmr:start()
133+
return
134+
end
135+
else
136+
_G.logger:warning(nameOfModule .. ": Instance does not exists.")
137+
Script.notifyEvent('PersistentData_OnNewThreadFeedbackStatus', 'ERR')
138+
logTmr:start()
139+
return
140+
end
141+
end
142+
end
143+
144+
local setParameterNameExists = Script.isServedAsFunction(name .. '.setParameterName')
145+
local loadParametersExists = Script.isServedAsFunction(name .. '.loadParameters')
146+
147+
if setParameterNameExists and loadParametersExists then
148+
Script.callFunction(name .. '.setParameterName', parameterName)
149+
Script.sleep(1000)
150+
local _, suc = Script.callFunction(name .. '.loadParameters')
151+
if suc == nil or suc == false then
152+
Script.notifyEvent('PersistentData_OnNewThreadFeedbackStatus', 'ERR')
153+
logTmr:start()
154+
else
155+
Script.notifyEvent('PersistentData_OnNewThreadFeedbackStatus', 'OK')
156+
logTmr:start()
157+
end
158+
else
159+
_G.logger:warning(nameOfModule .. ": Not possible to load parameters.")
160+
Script.notifyEvent('PersistentData_OnNewThreadFeedbackStatus', 'ERR')
161+
logTmr:start()
162+
end
163+
end
164+
Script.register('CSK_PersistentData.OnNewStatusSendParametersToModule', handleOnNewStatusSendParametersToModule)

0 commit comments

Comments
 (0)