Skip to content

Commit 44d6be1

Browse files
Release 2.1.0 (#4)
# Release 2.1.0 ## New features - Check if persistent data to load provides all relevant parameters. Otherwise add default values ## Improvements - Better instance handling regarding FlowConfig ## Bugfix - Legacy bindings of ValueDisplay elements within UI did not work if deployed with VS Code AppSpace SDK - UI differs if deployed via Appstudio or VS Code AppSpace SDK - Fullscreen icon of iFrame was visible
1 parent 64015e5 commit 44d6be1

14 files changed

Lines changed: 147 additions & 83 deletions

CHANGELOG.md

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

4+
## Release 2.1.0
5+
6+
### New features
7+
- Check if persistent data to load provides all relevant parameters. Otherwise add default values
8+
9+
### Improvements
10+
- Better instance handling regarding FlowConfig
11+
12+
### Bugfix
13+
- Legacy bindings of ValueDisplay elements within UI did not work if deployed with VS Code AppSpace SDK
14+
- UI differs if deployed via Appstudio or VS Code AppSpace SDK
15+
- Fullscreen icon of iFrame was visible
16+
417
## Release 2.0.1
518

619
### Bugfix

CSK_Module_MultiImageEdgeMatcher/pages/pages/CSK_Module_MultiImageEdgeMatcher/CSK_Module_MultiImageEdgeMatcher.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,5 +116,5 @@
116116

117117
.myCustomButton_CSK_Module_MultiImageEdgeMatcher {
118118
border-radius: 30px;
119-
padding-right: 0px;
119+
padding: 11px;
120120
}

CSK_Module_MultiImageEdgeMatcher/pages/pages/CSK_Module_MultiImageEdgeMatcher/CSK_Module_MultiImageEdgeMatcher.html

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,12 @@
66
<layout-row id="RowLayout44">
77
<layout-column id="ColumnLayout61" style="align-items: stretch">
88
<layout-row id="RowLayout01" style="align-items: baseline">
9-
<davinci-value-display id="VD_Title" class="myCustomLabel_CSK_Module_MultiImageEdgeMatcher"
10-
value="Image EdgeMatcher">
11-
</davinci-value-display>
9+
<h1 id="Heading_Title" class="myCustomLabel_CSK_Module_MultiImageEdgeMatcher">
10+
Image EdgeMatcher
11+
</h1>
1212
<davinci-value-display id="VD_Version">
13-
<crown-edpws-binding property="value" name="CSK_MultiImageEdgeMatcher/OnNewStatusModuleVersion"
14-
update-on-resume>
15-
</crown-edpws-binding>
13+
<crown-on property="value" crown-event="CSK_MultiImageEdgeMatcher/OnNewStatusModuleVersion">
14+
</crown-on>
1615
</davinci-value-display>
1716
</layout-row>
1817
</layout-column>
@@ -59,17 +58,18 @@
5958
style="align-items: center; justify-content: center">
6059
<davinci-button id="Button_AddInstance"
6160
class="myCustomButton_CSK_Module_MultiImageEdgeMatcher"
62-
type="outline" icon-position="append" icon="content/add">
61+
type="outline">
62+
<davinci-icon icon="content/add"></davinci-icon>
6363
<span></span>
6464
<crown-binding event="submit"
6565
name="CSK_MultiImageEdgeMatcher/addInstance" auto-commit>
6666
</crown-binding>
6767
</davinci-button>
6868
<davinci-button id="Button_ResetInstances"
6969
class="myCustomButton_CSK_Module_MultiImageEdgeMatcher"
70-
type="outline" icon-position="append"
71-
title="Reset insances to single instance. Reload app after reseting."
72-
icon="action/delete">
70+
type="outline"
71+
title="Reset insances to single instance. Reload app after reseting.">
72+
<davinci-icon icon="action/delete"></davinci-icon>
7373
<span></span>
7474
<crown-binding event="submit"
7575
name="CSK_MultiImageEdgeMatcher/resetInstances" auto-commit>
@@ -117,9 +117,9 @@
117117
style="justify-content: center; align-items: center">
118118
<davinci-button id="B_LoadConfig"
119119
class="myCustomButton_CSK_Module_MultiImageEdgeMatcher"
120-
type="outline" icon-position="append"
121-
title="Load configured parameters from CSK_PersistentData module."
122-
icon="action/history">
120+
type="outline"
121+
title="Load configured parameters from CSK_PersistentData module.">
122+
<davinci-icon icon="action/history"></davinci-icon>
123123
<span></span>
124124
<crown-binding event="submit"
125125
name="CSK_MultiImageEdgeMatcher/loadParameters"
@@ -133,9 +133,9 @@
133133
</davinci-button>
134134
<davinci-button id="B_SaveConfig"
135135
class="myCustomButton_CSK_Module_MultiImageEdgeMatcher"
136-
type="outline" icon-position="append"
137-
title="Save current configured parameters of this module within CSK_PersistentData module."
138-
icon="content/save">
136+
type="outline"
137+
title="Save current configured parameters of this module within CSK_PersistentData module.">
138+
<davinci-icon icon="content/save"></davinci-icon>
139139
<span></span>
140140
<crown-binding event="submit"
141141
name="CSK_MultiImageEdgeMatcher/sendParameters"
@@ -268,18 +268,16 @@
268268
<layout-column id="ColumnLayout23" style="align-items: stretch">
269269
<layout-row id="RowLayout25" style="justify-content: flex-end">
270270
<davinci-value-display id="VD_FoundValidMatchesValue">
271-
<crown-edpws-binding property="value"
272-
name="CSK_MultiImageEdgeMatcher/OnNewStatusFoundValidMatches"
273-
update-on-resume>
274-
</crown-edpws-binding>
271+
<crown-on property="value"
272+
crown-event="CSK_MultiImageEdgeMatcher/OnNewStatusFoundValidMatches">
273+
</crown-on>
275274
</davinci-value-display>
276275
<davinci-value-display id="VD_Seperator" value="/">
277276
</davinci-value-display>
278277
<davinci-value-display id="VD_FoundMatchesValue">
279-
<crown-edpws-binding property="value"
280-
name="CSK_MultiImageEdgeMatcher/OnNewStatusFoundMatches"
281-
update-on-resume>
282-
</crown-edpws-binding>
278+
<crown-on property="value"
279+
crown-event="CSK_MultiImageEdgeMatcher/OnNewStatusFoundMatches">
280+
</crown-on>
283281
</davinci-value-display>
284282
</layout-row>
285283
</layout-column>
@@ -295,10 +293,9 @@
295293
<layout-column id="ColumnLayout25" style="align-items: stretch">
296294
<layout-row id="RowLayout39" style="justify-content: flex-end">
297295
<davinci-value-display id="VD_ScoreValue">
298-
<crown-edpws-binding property="value"
299-
name="CSK_MultiImageEdgeMatcher/OnNewStatusMatchScoreResult"
300-
update-on-resume>
301-
</crown-edpws-binding>
296+
<crown-on property="value"
297+
crown-event="CSK_MultiImageEdgeMatcher/OnNewStatusMatchScoreResult">
298+
</crown-on>
302299
</davinci-value-display>
303300
</layout-row>
304301
</layout-column>
@@ -380,8 +377,9 @@
380377
style="align-items: stretch">
381378
<davinci-button id="Button_Teach"
382379
class="myCustomButton_CSK_Module_MultiImageEdgeMatcher"
383-
type="outline" icon-position="append" toggle
384-
icon="content/select_all">
380+
type="outline" toggle>
381+
<davinci-icon icon="content/select_all">
382+
</davinci-icon>
385383
<span>Teach</span>
386384
<crown-binding event="change"
387385
name="CSK_MultiImageEdgeMatcher/setTeachMode"

CSK_Module_MultiImageEdgeMatcher/pages/src/converter.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ export function changeID(id) {
1212
export function changeStyle(theme) {
1313
const style: HTMLStyleElement = document.createElement('style');
1414
style.id ='blub'
15+
16+
const toggleSW = document.querySelectorAll("davinci-toggle-switch")
17+
toggleSW.forEach((userItem) => {
18+
const shadowToggle = userItem.shadowRoot
19+
const finalToggleSW = shadowToggle?.querySelector('div')
20+
finalToggleSW?.classList.add('hasIcon')
21+
});
22+
1523
if (theme == 'CSK_Style'){
1624
var headerToolbar = `.sopasjs-ui-header-toolbar-wrapper { background-color: #FFFFFF; }`
1725
var uiHeader = `.sopasjs-ui-header>.app-logo { margin-right:0px; }`

CSK_Module_MultiImageEdgeMatcher/pages/src/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ document.addEventListener('sopasjs-ready', () => {
1212
page_Setup.remove();
1313

1414
setTimeout(() => {
15+
const element = document.querySelector("div.sjs-wrapper > div > div.sjs-fullscreen-toggle")
16+
if(element) {
17+
element.parentElement.removeChild(element)
18+
}
1519
document.title = 'CSK_Module_MultiImageEdgeMatcher'
1620
}, 500);
1721
})

CSK_Module_MultiImageEdgeMatcher/project.mf.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ Setting this parameter will invalidate any previous teach call!</desc>
470470
</crown>
471471
</crown>
472472
<meta key="author">SICK AG</meta>
473-
<meta key="version">2.0.1</meta>
473+
<meta key="version">2.1.0</meta>
474474
<meta key="priority">low</meta>
475475
<meta key="copy-protected">false</meta>
476476
<meta key="read-protected">false</meta>

CSK_Module_MultiImageEdgeMatcher/scripts/CSK_Module_MultiImageEdgeMatcher.lua

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,9 @@ local multiImageEdgeMatcher_Instances = {} -- Handle all instances
5050
local multiImageEdgeMatcherController = require('ImageProcessing/MultiImageEdgeMatcher/MultiImageEdgeMatcher_Controller')
5151

5252
if _G.availableAPIs.default and _G.availableAPIs.specific then
53-
local setInstanceHandle = require('ImageProcessing/MultiImageEdgeMatcher/FlowConfig/MultiImageEdgeMatcher_FlowConfig')
53+
require('ImageProcessing/MultiImageEdgeMatcher/FlowConfig/MultiImageEdgeMatcher_FlowConfig')
5454
table.insert(multiImageEdgeMatcher_Instances, multiImageEdgeMatcher_Model.create(1)) -- Create at least 1 instance
5555
multiImageEdgeMatcherController.setMultiImageEdgeMatcher_Instances_Handle(multiImageEdgeMatcher_Instances) -- share handle of instances
56-
setInstanceHandle(multiImageEdgeMatcher_Instances)
5756
else
5857
_G.logger:warning("CSK_MultiImageEdgeMatcher: Relevant CROWN(s) not available on device. Module is not supported...")
5958
end

CSK_Module_MultiImageEdgeMatcher/scripts/ImageProcessing/MultiImageEdgeMatcher/FlowConfig/MultiImageEdgeMatcher_FlowConfig.lua

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,7 @@ local multiImageEdgeMatcher_Instances
1414
--- Function to react if FlowConfig was updated
1515
local function handleOnClearOldFlow()
1616
if _G.availableAPIs.default and _G.availableAPIs.specific then
17-
for i = 1, #multiImageEdgeMatcher_Instances do
18-
if multiImageEdgeMatcher_Instances[i].parameters.flowConfigPriority then
19-
CSK_MultiImageEdgeMatcher.clearFlowConfigRelevantConfiguration()
20-
break
21-
end
22-
end
17+
CSK_MultiImageEdgeMatcher.clearFlowConfigRelevantConfiguration()
2318
end
2419
end
2520
Script.register('CSK_FlowConfig.OnClearOldFlow', handleOnClearOldFlow)
26-
27-
--- Function to get access to the multiImageEdgeMatcher_Instances
28-
---@param handle handle Handle of multiImageEdgeMatcher_Instances object
29-
local function setMultiImageEdgeMatcher_Instances_Handle(handle)
30-
multiImageEdgeMatcher_Instances = handle
31-
end
32-
return setMultiImageEdgeMatcher_Instances_Handle

CSK_Module_MultiImageEdgeMatcher/scripts/ImageProcessing/MultiImageEdgeMatcher/MultiImageEdgeMatcher_Controller.lua

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -496,9 +496,11 @@ Script.serveFunction('CSK_MultiImageEdgeMatcher.getStatusModuleActive', getStatu
496496

497497
local function clearFlowConfigRelevantConfiguration()
498498
for i = 1, #multiImageEdgeMatcher_Instances do
499-
multiImageEdgeMatcher_Instances[i].parameters.registeredEvent = ''
500-
Script.notifyEvent('MultiImageEdgeMatcher_OnNewProcessingParameter', i, 'deregisterFromEvent', '')
501-
Script.notifyEvent('MultiImageEdgeMatcher_OnNewStatusRegisteredEvent', '')
499+
if multiImageEdgeMatcher_Instances[i].parameters.flowConfigPriority then
500+
multiImageEdgeMatcher_Instances[i].parameters.registeredEvent = ''
501+
Script.notifyEvent('MultiImageEdgeMatcher_OnNewProcessingParameter', i, 'deregisterFromEvent', '')
502+
Script.notifyEvent('MultiImageEdgeMatcher_OnNewStatusRegisteredEvent', '')
503+
end
502504
end
503505
end
504506
Script.serveFunction('CSK_MultiImageEdgeMatcher.clearFlowConfigRelevantConfiguration', clearFlowConfigRelevantConfiguration)
@@ -549,6 +551,9 @@ local function loadParameters()
549551
_G.logger:info(nameOfModule .. ": Loaded parameters for multiImageEdgeMatcherObject " .. tostring(selectedInstance) .. " from CSK_PersistentData module.")
550552

551553
multiImageEdgeMatcher_Instances[selectedInstance].parameters = helperFuncs.convertContainer2Table(data)
554+
555+
multiImageEdgeMatcher_Instances[selectedInstance].parameters = helperFuncs.checkParameters(multiImageEdgeMatcher_Instances[selectedInstance].parameters, helperFuncs.defaultParameters.getParameters())
556+
552557
local serMatcher = Object.serialize(multiImageEdgeMatcher_Instances[selectedInstance].parameters.matcher, 'JSON')
553558
local newMatcher = Object.deserialize(serMatcher, 'JSON')
554559
multiImageEdgeMatcher_Instances[selectedInstance].parameters.matcher = newMatcher
@@ -635,7 +640,11 @@ Script.register("CSK_PersistentData.OnInitialDataLoaded", handleOnInitialDataLoa
635640

636641
local function resetModule()
637642
if _G.availableAPIs.default and _G.availableAPIs.specific then
638-
clearFlowConfigRelevantConfiguration()
643+
for i = 1, #multiImageEdgeMatcher_Instances do
644+
multiImageEdgeMatcher_Instances[i].parameters.registeredEvent = ''
645+
Script.notifyEvent('MultiImageEdgeMatcher_OnNewProcessingParameter', i, 'deregisterFromEvent', '')
646+
Script.notifyEvent('MultiImageEdgeMatcher_OnNewStatusRegisteredEvent', '')
647+
end
639648
pageCalled()
640649
end
641650
end

CSK_Module_MultiImageEdgeMatcher/scripts/ImageProcessing/MultiImageEdgeMatcher/MultiImageEdgeMatcher_Model.lua

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -59,33 +59,7 @@ function multiImageEdgeMatcher.create(multiImageEdgeMatcherInstanceNo)
5959

6060
-- Parameters to be saved permanently if wanted
6161
self.parameters = {}
62-
self.parameters.flowConfigPriority = CSK_FlowConfig ~= nil or false -- Status if FlowConfig should have priority for FlowConfig relevant configurations
63-
self.parameters.registeredEvent = '' -- Event to register for new images to process, like 'CSK_ImagePlayer.OnNewImage'
64-
self.parameters.processingFile = 'CSK_MultiImageEdgeMatcher_Processing' -- Which file to use for processing (will be started in own thread)
65-
66-
self.parameters.showImage = true -- Show image in UI viewer
67-
68-
self.parameters.matcher = Image.Matching.EdgeMatcher.create() -- EdgeMatcher handle
69-
self.parameters.edgeThreshold = 30 -- EdgeMatcher edge threshold
70-
self.parameters.minScore = 0.8 -- Minimum score to count as a found object
71-
self.parameters.downsampleFactor = 2 -- EdgeMatcher downsample factor. ReTeach EdgeMatcher if setting this value.
72-
self.parameters.maxMatches = 1 -- Maximum amount of matches to accept
73-
74-
self.parameters.backgroundClutter = 'HIGH' -- Level the live images supplied to the match function are expected to contain non-object edges
75-
self.parameters.fineSearch = true -- Status if fine sarch shuld be performed
76-
self.parameters.minSeparation = 50.0 -- Minimum separation between the centers of object matches in image world units (typically millimeters) taking the image pixel size into account.
77-
self.parameters.rotationRange = 180 -- Angle in degrees, the maximum deviation from the original object orientation to search for.
78-
self.parameters.priorRotationRange = 0.0 -- Optional prior orientation in radians. If specified, the orientation search range is centered around this orientation
79-
self.parameters.minScaleRange = 1.0 -- The smallest scale factor to search for. Lower limit is 0.8
80-
self.parameters.maxScaleRange = 1.0 -- The largest scale factor to search for. Upper limit is 1.2
81-
self.parameters.priorScale = 1.0 -- Optional prior scale factor. Set to the expected scale of the object to find, relative to the size of the teach object. E.g. 1.25 if the object to find is 25% larger than the teach object. Min: 0.1. Max: 10
82-
self.parameters.tileCount = 0 -- Number of tile images to split into. 0 gives automatic selection. 1 disables tiling
83-
self.parameters.timeout = 5 -- Abort the match call if the match time exceeds set number of seconds.
84-
85-
self.parameters.showImage = true -- Show image in UI
86-
87-
self.parameters.resultTransX = 320 -- Pixel to translate the found result position in x
88-
self.parameters.resultTransY = 240 -- Pixel to translate the found result position in y
62+
self.parameters = self.helperFuncs.defaultParameters.getParameters() -- Load default parameters
8963

9064
-- Parameters to give to the processing script
9165
self.multiImageEdgeMatcherProcessingParams = Container.create()

0 commit comments

Comments
 (0)