@node-projects/web-component-designer-visualization-addons 0.1.114 → 0.1.116
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/blockly/components/OpenScreen.d.ts +0 -0
- package/dist/blockly/components/OpenScreen.js +31 -0
- package/dist/blockly/components/fields/FieldObjectId.d.ts +1 -0
- package/dist/blockly/components/fields/FieldObjectId.js +6 -0
- package/dist/components/BindingsEditor.js +1 -1
- package/dist/helpers/BindingsHelper.js +53 -0
- package/package.json +1 -1
|
File without changes
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//@ts-ignore
|
|
3
|
+
Blockly.Blocks['open_screen'] = {
|
|
4
|
+
init: function () {
|
|
5
|
+
this.appendDummyInput()
|
|
6
|
+
.appendField('open screen');
|
|
7
|
+
this.appendValueInput('SCREEN')
|
|
8
|
+
.setCheck('String')
|
|
9
|
+
.appendField('screen');
|
|
10
|
+
this.appendValueInput('RELATIVESIGNALSPATH')
|
|
11
|
+
.setCheck("String")
|
|
12
|
+
.appendField('relativeSignalsPath');
|
|
13
|
+
this.appendValueInput('NOHISTORY')
|
|
14
|
+
.setCheck("Boolean")
|
|
15
|
+
.appendField('noHistory');
|
|
16
|
+
this.setPreviousStatement(true, null);
|
|
17
|
+
this.setNextStatement(true, null);
|
|
18
|
+
this.setColour(230);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
//@ts-ignore
|
|
22
|
+
Blockly.JavaScript.forBlock['open_screen'] = function (block) {
|
|
23
|
+
//@ts-ignore
|
|
24
|
+
const screen = Blockly.JavaScript.valueToCode(block, 'SCREEN', Blockly.JavaScript.ORDER_ATOMIC);
|
|
25
|
+
//@ts-ignore
|
|
26
|
+
const relativeSignalsPath = Blockly.JavaScript.valueToCode(block, 'RELATIVESIGNALSPATH', Blockly.JavaScript.ORDER_ATOMIC);
|
|
27
|
+
//@ts-ignore
|
|
28
|
+
const noHistory = Blockly.JavaScript.valueToCode(block, 'NOHISTORY', Blockly.JavaScript.ORDER_ATOMIC);
|
|
29
|
+
let code = `RUNTIME.openScreen({screen: ${screen}, relativeSignalsPath: ${relativeSignalsPath}, noHistory: ${noHistory}})`;
|
|
30
|
+
return code;
|
|
31
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -8,7 +8,7 @@ export class BindingsEditor extends BaseCustomWebComponentConstructorAppend {
|
|
|
8
8
|
<div style="grid-column: 1/3">
|
|
9
9
|
<div style="display: flex; flex-direction: column;">
|
|
10
10
|
<div class="row">
|
|
11
|
-
<span style="cursor: pointer;" title="to use multiple objects, seprate them with semicolon (;)
|
|
11
|
+
<span style="cursor: pointer;" title="to use multiple objects, seprate them with semicolon (;).
Access signal objects in properties via ?propertyName, access the propertyValue via ??propertyName.
Access signal objects in properties of the target via #propertyName, access the propertyValue via ##propertyName.
Bind to signal configurations via $objectId.
You could also use signals inside of a Signal Name via {name}">objects</span>
|
|
12
12
|
</div>
|
|
13
13
|
<div id="groupObjectName" style="display:flex;align-items: flex-end;">
|
|
14
14
|
<input id="objectName" class="row" value="{{?this.objectNames::change}}" style="flex-grow: 1;">
|
|
@@ -65,9 +65,16 @@ export class IndirectSignal {
|
|
|
65
65
|
this.handleValueChanged(root[nm.substring(2)], i);
|
|
66
66
|
continue;
|
|
67
67
|
}
|
|
68
|
+
else if (nm[0] === '#' && nm[1] === '#') {
|
|
69
|
+
this.handleValueChanged(element[nm.substring(2)], i);
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
68
72
|
else if (nm[0] === '?') {
|
|
69
73
|
nm = root[nm.substring(1)];
|
|
70
74
|
}
|
|
75
|
+
else if (nm[0] === '#') {
|
|
76
|
+
nm = element[nm.substring(1)];
|
|
77
|
+
}
|
|
71
78
|
let cb = (id, value) => this.handleValueChanged(value.val, i);
|
|
72
79
|
this.unsubscribeList.push([cb, this.visualizationHandler.subscribeState(nm, cb)]);
|
|
73
80
|
}
|
|
@@ -578,6 +585,28 @@ export class BindingsHelper {
|
|
|
578
585
|
}
|
|
579
586
|
}
|
|
580
587
|
}
|
|
588
|
+
else if (sng[0] === '#') { //access object path in target element
|
|
589
|
+
let s = sng.substring(1);
|
|
590
|
+
if (s[0] == '#') {
|
|
591
|
+
signals[i] = s;
|
|
592
|
+
}
|
|
593
|
+
else {
|
|
594
|
+
signals[i] = root[s];
|
|
595
|
+
if (s[0] === '$') {
|
|
596
|
+
s = s.substring(1);
|
|
597
|
+
signals[i] = '$' + root[s];
|
|
598
|
+
}
|
|
599
|
+
let evtCallback = () => {
|
|
600
|
+
cleanUp();
|
|
601
|
+
this.applyBinding(element, binding, relativeSignalPath, root, specialValueHandler);
|
|
602
|
+
};
|
|
603
|
+
const evtNm = getChangeEventName(element, PropertiesHelper.camelToDashCase(s));
|
|
604
|
+
root.addEventListener(evtNm, evtCallback);
|
|
605
|
+
if (!cleanupCalls)
|
|
606
|
+
cleanupCalls = [];
|
|
607
|
+
cleanupCalls.push(() => root.removeEventListener(evtNm, evtCallback));
|
|
608
|
+
}
|
|
609
|
+
}
|
|
581
610
|
if (sng[0] === '.') {
|
|
582
611
|
signals[i] = this._visualizationHandler.getNormalizedSignalName(sng, relativeSignalPath, element);
|
|
583
612
|
}
|
|
@@ -611,6 +640,30 @@ export class BindingsHelper {
|
|
|
611
640
|
}
|
|
612
641
|
}
|
|
613
642
|
}
|
|
643
|
+
else if (s[0] === '#') { //Binding to element properties
|
|
644
|
+
const nm = s.substring(1);
|
|
645
|
+
let evtCallback = () => {
|
|
646
|
+
let disableValueChanged = false;
|
|
647
|
+
if (!disableValueChanged) {
|
|
648
|
+
disableValueChanged = true;
|
|
649
|
+
this.handleValueChanged(element, binding, element[nm], valuesObject, i, signalVars, false, relativeSignalPath);
|
|
650
|
+
disableValueChanged = false;
|
|
651
|
+
}
|
|
652
|
+
};
|
|
653
|
+
element.addEventListener(PropertiesHelper.camelToDashCase(nm) + '-changed', evtCallback);
|
|
654
|
+
if (!cleanupCalls)
|
|
655
|
+
cleanupCalls = [];
|
|
656
|
+
cleanupCalls.push(() => element.removeEventListener(PropertiesHelper.camelToDashCase(nm) + '-changed', evtCallback));
|
|
657
|
+
try {
|
|
658
|
+
this.handleValueChanged(element, binding, element[nm], valuesObject, i, signalVars, false, relativeSignalPath);
|
|
659
|
+
}
|
|
660
|
+
catch (err) {
|
|
661
|
+
console.error(err);
|
|
662
|
+
}
|
|
663
|
+
if (binding[1].twoWay && i == 0) {
|
|
664
|
+
this.addTwoWayBinding(binding, element, v => element[nm] = v);
|
|
665
|
+
}
|
|
666
|
+
}
|
|
614
667
|
else if (s[0] === '$') {
|
|
615
668
|
let mS = s.substring(1);
|
|
616
669
|
if (mS[0] === '.') {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"description": "web-component-designer addon for visualizations",
|
|
3
3
|
"name": "@node-projects/web-component-designer-visualization-addons",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.116",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"author": "jochen.kuehner@gmx.de",
|