iobroker.javascript 6.2.0 → 7.0.0
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/README.md +9 -8
- package/admin/asset-manifest.json +11 -11
- package/admin/google-blockly/own/blocks_convert.js +4 -4
- package/admin/google-blockly/own/blocks_system.js +55 -13
- package/admin/google-blockly/own/blocks_time.js +1 -1
- package/admin/google-blockly/own/blocks_trigger.js +2 -2
- package/admin/google-blockly/own/blocks_words.js +9 -0
- package/admin/static/js/376.215ba3ed.chunk.js +9 -0
- package/admin/static/js/376.215ba3ed.chunk.js.map +1 -0
- package/admin/static/js/402.cf6fe7b7.chunk.js +198 -0
- package/admin/static/js/402.cf6fe7b7.chunk.js.map +1 -0
- package/admin/static/js/62.e8512a43.chunk.js +187 -0
- package/admin/static/js/62.e8512a43.chunk.js.map +1 -0
- package/admin/static/js/{848.77a7611f.chunk.js → 848.3c1a4d2e.chunk.js} +46 -46
- package/admin/static/js/848.3c1a4d2e.chunk.js.map +1 -0
- package/admin/static/js/main.2bd6b291.js +6 -0
- package/admin/static/js/main.2bd6b291.js.map +1 -0
- package/admin/tab.html +1 -1
- package/docs/de/usage.md +1 -1
- package/docs/en/blockly.md +3 -3
- package/docs/en/javascript.md +28 -3
- package/io-package.json +64 -13
- package/lib/sandbox.js +225 -83
- package/main.js +75 -15
- package/package.json +1 -1
- package/admin/static/js/402.2b754320.chunk.js +0 -198
- package/admin/static/js/402.2b754320.chunk.js.map +0 -1
- package/admin/static/js/55.2fbb4209.chunk.js +0 -9
- package/admin/static/js/55.2fbb4209.chunk.js.map +0 -1
- package/admin/static/js/62.97617f7b.chunk.js +0 -185
- package/admin/static/js/62.97617f7b.chunk.js.map +0 -1
- package/admin/static/js/848.77a7611f.chunk.js.map +0 -1
- package/admin/static/js/main.444faaef.js +0 -6
- package/admin/static/js/main.444faaef.js.map +0 -1
package/README.md
CHANGED
|
@@ -52,6 +52,15 @@ And then call `npm run build`.
|
|
|
52
52
|
<!--
|
|
53
53
|
### **WORK IN PROGRESS**
|
|
54
54
|
-->
|
|
55
|
+
### 7.0.0 (2023-02-21)
|
|
56
|
+
* (bluefox) Breaking change: all usages of `jsonata` must be rewritten to use promises.
|
|
57
|
+
* (bluefox) Breaking change: all blockly scripts with `jsonata` blocks must de changed (just move some blocks) and saved anew.
|
|
58
|
+
* (bluefox) Extended `createState` command with possibility to create aliases.
|
|
59
|
+
* (bluefox) Corrected CRON card in rules
|
|
60
|
+
* (bluefox) Added additional options to show the attributes of object in blockly
|
|
61
|
+
* (bluefox) Corrected `existsStateAsync` function
|
|
62
|
+
* (bluefox) Added `isDaylightSaving` state to indicate day saving time
|
|
63
|
+
|
|
55
64
|
### 6.2.0 (2023-02-17)
|
|
56
65
|
* (Apollon77) Prevented duplicate schedule triggering with inaccurate RTC clocks
|
|
57
66
|
* (Apollon77) Fixed sendToAsync and sendToHostAsync
|
|
@@ -70,14 +79,6 @@ And then call `npm run build`.
|
|
|
70
79
|
### 6.1.2 (2022-11-03)
|
|
71
80
|
* (bluefox) Added ukrainian translation
|
|
72
81
|
|
|
73
|
-
### 6.1.0 (2022-11-03)
|
|
74
|
-
* (Apollon77) Add a configurable check for number of setStates per Minute to prevent scripts from taking down ioBroker. Default are 1000 setState per minute. Only stops if the number is reached 2 minutes in a row!
|
|
75
|
-
* (Apollon77) Add createAlias method to create aliases for states
|
|
76
|
-
* (Apollon77) Add setStateDelayed to selector
|
|
77
|
-
* (Apollon77) Add options to exec command
|
|
78
|
-
* (Apollon77) Fix issues with cancelling schedules when stopping scripts
|
|
79
|
-
* (bluefox) Corrected debug mode
|
|
80
|
-
|
|
81
82
|
## License
|
|
82
83
|
The MIT License (MIT)
|
|
83
84
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
|
-
"main.js": "/static/js/main.
|
|
3
|
+
"main.js": "/static/js/main.2bd6b291.js",
|
|
4
4
|
"static/css/62.fa077e62.chunk.css": "/static/css/62.fa077e62.chunk.css",
|
|
5
|
-
"static/js/62.
|
|
5
|
+
"static/js/62.e8512a43.chunk.js": "/static/js/62.e8512a43.chunk.js",
|
|
6
6
|
"static/js/90.f5ce0179.chunk.js": "/static/js/90.f5ce0179.chunk.js",
|
|
7
7
|
"static/js/821.6a33d257.chunk.js": "/static/js/821.6a33d257.chunk.js",
|
|
8
8
|
"static/js/13.6f214f89.chunk.js": "/static/js/13.6f214f89.chunk.js",
|
|
@@ -11,16 +11,16 @@
|
|
|
11
11
|
"static/js/961.ae64b67d.chunk.js": "/static/js/961.ae64b67d.chunk.js",
|
|
12
12
|
"static/js/449.d17326e4.chunk.js": "/static/js/449.d17326e4.chunk.js",
|
|
13
13
|
"static/js/815.8ed8429e.chunk.js": "/static/js/815.8ed8429e.chunk.js",
|
|
14
|
-
"static/js/
|
|
14
|
+
"static/js/376.215ba3ed.chunk.js": "/static/js/376.215ba3ed.chunk.js",
|
|
15
15
|
"static/js/610.312d98a8.chunk.js": "/static/js/610.312d98a8.chunk.js",
|
|
16
16
|
"static/js/233.f7a9b68b.chunk.js": "/static/js/233.f7a9b68b.chunk.js",
|
|
17
17
|
"static/js/843.90dd3ee5.chunk.js": "/static/js/843.90dd3ee5.chunk.js",
|
|
18
|
-
"static/js/402.
|
|
18
|
+
"static/js/402.cf6fe7b7.chunk.js": "/static/js/402.cf6fe7b7.chunk.js",
|
|
19
19
|
"static/js/230.1b38a08f.chunk.js": "/static/js/230.1b38a08f.chunk.js",
|
|
20
20
|
"static/js/574.c6787b36.chunk.js": "/static/js/574.c6787b36.chunk.js",
|
|
21
21
|
"static/js/88.9066e72a.chunk.js": "/static/js/88.9066e72a.chunk.js",
|
|
22
22
|
"static/js/455.1538d7e3.chunk.js": "/static/js/455.1538d7e3.chunk.js",
|
|
23
|
-
"static/js/848.
|
|
23
|
+
"static/js/848.3c1a4d2e.chunk.js": "/static/js/848.3c1a4d2e.chunk.js",
|
|
24
24
|
"static/media/back.jpg": "/static/media/back.bda2bbe51be338a0f657.jpg",
|
|
25
25
|
"static/media/hysteresis.png": "/static/media/hysteresis.04ebd02c6062432f891d.png",
|
|
26
26
|
"static/media/Ground Floor.svg": "/static/media/Ground Floor.2b7c5c91db7f070935a2.svg",
|
|
@@ -143,9 +143,9 @@
|
|
|
143
143
|
"static/media/Garage Doors.svg": "/static/media/Garage Doors.0c2a1cfca7ad1ea59625.svg",
|
|
144
144
|
"static/media/Outdoor Blinds.svg": "/static/media/Outdoor Blinds.37b85a9c060a4af48da9.svg",
|
|
145
145
|
"static/media/Upstairs.svg": "/static/media/Upstairs.441813e54e0daca0882d.svg",
|
|
146
|
-
"main.
|
|
146
|
+
"main.2bd6b291.js.map": "/static/js/main.2bd6b291.js.map",
|
|
147
147
|
"62.fa077e62.chunk.css.map": "/static/css/62.fa077e62.chunk.css.map",
|
|
148
|
-
"62.
|
|
148
|
+
"62.e8512a43.chunk.js.map": "/static/js/62.e8512a43.chunk.js.map",
|
|
149
149
|
"90.f5ce0179.chunk.js.map": "/static/js/90.f5ce0179.chunk.js.map",
|
|
150
150
|
"821.6a33d257.chunk.js.map": "/static/js/821.6a33d257.chunk.js.map",
|
|
151
151
|
"13.6f214f89.chunk.js.map": "/static/js/13.6f214f89.chunk.js.map",
|
|
@@ -154,18 +154,18 @@
|
|
|
154
154
|
"961.ae64b67d.chunk.js.map": "/static/js/961.ae64b67d.chunk.js.map",
|
|
155
155
|
"449.d17326e4.chunk.js.map": "/static/js/449.d17326e4.chunk.js.map",
|
|
156
156
|
"815.8ed8429e.chunk.js.map": "/static/js/815.8ed8429e.chunk.js.map",
|
|
157
|
-
"
|
|
157
|
+
"376.215ba3ed.chunk.js.map": "/static/js/376.215ba3ed.chunk.js.map",
|
|
158
158
|
"610.312d98a8.chunk.js.map": "/static/js/610.312d98a8.chunk.js.map",
|
|
159
159
|
"233.f7a9b68b.chunk.js.map": "/static/js/233.f7a9b68b.chunk.js.map",
|
|
160
160
|
"843.90dd3ee5.chunk.js.map": "/static/js/843.90dd3ee5.chunk.js.map",
|
|
161
|
-
"402.
|
|
161
|
+
"402.cf6fe7b7.chunk.js.map": "/static/js/402.cf6fe7b7.chunk.js.map",
|
|
162
162
|
"230.1b38a08f.chunk.js.map": "/static/js/230.1b38a08f.chunk.js.map",
|
|
163
163
|
"574.c6787b36.chunk.js.map": "/static/js/574.c6787b36.chunk.js.map",
|
|
164
164
|
"88.9066e72a.chunk.js.map": "/static/js/88.9066e72a.chunk.js.map",
|
|
165
165
|
"455.1538d7e3.chunk.js.map": "/static/js/455.1538d7e3.chunk.js.map",
|
|
166
|
-
"848.
|
|
166
|
+
"848.3c1a4d2e.chunk.js.map": "/static/js/848.3c1a4d2e.chunk.js.map"
|
|
167
167
|
},
|
|
168
168
|
"entrypoints": [
|
|
169
|
-
"static/js/main.
|
|
169
|
+
"static/js/main.2bd6b291.js"
|
|
170
170
|
]
|
|
171
171
|
}
|
|
@@ -56,7 +56,7 @@ Blockly.Blocks.convert_toboolean = {
|
|
|
56
56
|
};
|
|
57
57
|
|
|
58
58
|
Blockly.JavaScript.convert_toboolean = function (a) {
|
|
59
|
-
return ["(function (){
|
|
59
|
+
return ["(function (){const val = " + Blockly.JavaScript.valueToCode(a, "VALUE", Blockly.JavaScript.ORDER_ATOMIC) + "; if (val === 'true') return true; if (val === 'false') return false; return !!val;})()", Blockly.JavaScript.ORDER_ATOMIC];
|
|
60
60
|
};
|
|
61
61
|
|
|
62
62
|
// --- to String --------------------------------------------------
|
|
@@ -253,11 +253,11 @@ Blockly.JavaScript.convert_from_date = function (block) {
|
|
|
253
253
|
} else if (option === 's') {
|
|
254
254
|
code = 'getDateObject(' + value + ').getSeconds()';
|
|
255
255
|
} else if (option === 'sid') {
|
|
256
|
-
code = '(function () {
|
|
256
|
+
code = '(function () {const v = getDateObject(' + value + '); return v.getHours() * 3600 + v.getMinutes() * 60 + v.getSeconds();})()';
|
|
257
257
|
} else if (option === 'm') {
|
|
258
258
|
code = '(getDateObject(' + value + ').getMinutes())';
|
|
259
259
|
} else if (option === 'mid') {
|
|
260
|
-
code = '(function () {
|
|
260
|
+
code = '(function () {const v = getDateObject(' + value + '); return v.getHours() * 60 + v.getMinutes();})()';
|
|
261
261
|
} else if (option === 'h') {
|
|
262
262
|
code = 'getDateObject(' + value + ').getHours()';
|
|
263
263
|
} else if (option === 'd') {
|
|
@@ -367,5 +367,5 @@ Blockly.Blocks.convert_jsonata = {
|
|
|
367
367
|
}
|
|
368
368
|
};
|
|
369
369
|
Blockly.JavaScript.convert_jsonata = function (block) {
|
|
370
|
-
return ['jsonataExpression(' + Blockly.JavaScript.valueToCode(block, 'TARGET', Blockly.JavaScript.ORDER_ATOMIC) + ',' + Blockly.JavaScript.valueToCode(block, 'EXPRESSION', Blockly.JavaScript.ORDER_ATOMIC) + ')', Blockly.JavaScript.ORDER_ATOMIC];
|
|
370
|
+
return ['(await jsonataExpression(' + Blockly.JavaScript.valueToCode(block, 'TARGET', Blockly.JavaScript.ORDER_ATOMIC) + ',' + Blockly.JavaScript.valueToCode(block, 'EXPRESSION', Blockly.JavaScript.ORDER_ATOMIC) + '))', Blockly.JavaScript.ORDER_ATOMIC];
|
|
371
371
|
};
|
|
@@ -650,12 +650,22 @@ Blockly.Blocks['get_value'] = {
|
|
|
650
650
|
|
|
651
651
|
this.appendDummyInput('ATTR')
|
|
652
652
|
.appendField(new Blockly.FieldDropdown([
|
|
653
|
-
[Blockly.Translate('get_value_val'),
|
|
654
|
-
[Blockly.Translate('get_value_ack'),
|
|
655
|
-
[Blockly.Translate('get_value_ts'),
|
|
656
|
-
[Blockly.Translate('get_value_lc'),
|
|
657
|
-
[Blockly.Translate('get_value_q') ,
|
|
658
|
-
[Blockly.Translate('
|
|
653
|
+
[Blockly.Translate('get_value_val'), 'val'],
|
|
654
|
+
[Blockly.Translate('get_value_ack'), 'ack'],
|
|
655
|
+
[Blockly.Translate('get_value_ts'), 'ts'],
|
|
656
|
+
[Blockly.Translate('get_value_lc'), 'lc'],
|
|
657
|
+
[Blockly.Translate('get_value_q') , 'q'],
|
|
658
|
+
[Blockly.Translate('get_value_comment') , 'c'],
|
|
659
|
+
[Blockly.Translate('get_value_from'), 'from'],
|
|
660
|
+
|
|
661
|
+
[Blockly.Translate('get_common_name'), 'common.name'],
|
|
662
|
+
[Blockly.Translate('get_common_desc'), 'common.desc'],
|
|
663
|
+
[Blockly.Translate('get_common_unit'), 'common.unit'],
|
|
664
|
+
[Blockly.Translate('get_common_role'), 'common.role'],
|
|
665
|
+
[Blockly.Translate('get_common_state_type'), 'type'],
|
|
666
|
+
[Blockly.Translate('get_common_object_type'), 'common.type'],
|
|
667
|
+
[Blockly.Translate('get_common_read'), 'common.read'],
|
|
668
|
+
[Blockly.Translate('get_common_write'), 'common.write'],
|
|
659
669
|
]), 'ATTR');
|
|
660
670
|
|
|
661
671
|
this.appendDummyInput()
|
|
@@ -675,7 +685,11 @@ Blockly.Blocks['get_value'] = {
|
|
|
675
685
|
Blockly.JavaScript['get_value'] = function(block) {
|
|
676
686
|
var oid = block.getFieldValue('OID');
|
|
677
687
|
var attr = block.getFieldValue('ATTR');
|
|
678
|
-
|
|
688
|
+
if (attr === 'type' || attr.indexOf('.') !== -1) {
|
|
689
|
+
return ['(await getObjectAsync("' + oid + '")).' + attr, Blockly.JavaScript.ORDER_ATOMIC];
|
|
690
|
+
} else {
|
|
691
|
+
return ['getState("' + oid + '").' + attr, Blockly.JavaScript.ORDER_ATOMIC];
|
|
692
|
+
}
|
|
679
693
|
};
|
|
680
694
|
|
|
681
695
|
// --- get value var --------------------------------------------------
|
|
@@ -700,8 +714,18 @@ Blockly.Blocks['get_value_var'] = {
|
|
|
700
714
|
[Blockly.Translate('get_value_ack'), 'ack'],
|
|
701
715
|
[Blockly.Translate('get_value_ts'), 'ts'],
|
|
702
716
|
[Blockly.Translate('get_value_lc'), 'lc'],
|
|
703
|
-
[Blockly.Translate('get_value_q') ,
|
|
704
|
-
[Blockly.Translate('
|
|
717
|
+
[Blockly.Translate('get_value_q') , 'q'],
|
|
718
|
+
[Blockly.Translate('get_value_comment') , 'c'],
|
|
719
|
+
[Blockly.Translate('get_value_from'), 'from'],
|
|
720
|
+
|
|
721
|
+
[Blockly.Translate('get_common_name'), 'common.name'],
|
|
722
|
+
[Blockly.Translate('get_common_desc'), 'common.desc'],
|
|
723
|
+
[Blockly.Translate('get_common_unit'), 'common.unit'],
|
|
724
|
+
[Blockly.Translate('get_common_role'), 'common.role'],
|
|
725
|
+
[Blockly.Translate('get_common_state_type'), 'type'],
|
|
726
|
+
[Blockly.Translate('get_common_object_type'), 'common.type'],
|
|
727
|
+
[Blockly.Translate('get_common_read'), 'common.read'],
|
|
728
|
+
[Blockly.Translate('get_common_write'), 'common.write'],
|
|
705
729
|
]), 'ATTR');
|
|
706
730
|
|
|
707
731
|
this.appendDummyInput()
|
|
@@ -721,7 +745,11 @@ Blockly.Blocks['get_value_var'] = {
|
|
|
721
745
|
Blockly.JavaScript['get_value_var'] = function(block) {
|
|
722
746
|
var oid = Blockly.JavaScript.valueToCode(block, 'OID', Blockly.JavaScript.ORDER_ATOMIC);
|
|
723
747
|
var attr = block.getFieldValue('ATTR');
|
|
724
|
-
|
|
748
|
+
if (attr === 'type' || attr.indexOf('.') !== -1) {
|
|
749
|
+
return ['(await getObjectAsync("' + oid + '")).' + attr, Blockly.JavaScript.ORDER_ATOMIC];
|
|
750
|
+
} else {
|
|
751
|
+
return ['getState(' + oid + ').' + attr, Blockly.JavaScript.ORDER_ATOMIC];
|
|
752
|
+
}
|
|
725
753
|
};
|
|
726
754
|
|
|
727
755
|
// --- get value async--------------------------------------------------
|
|
@@ -745,8 +773,18 @@ Blockly.Blocks['get_value_async'] = {
|
|
|
745
773
|
[Blockly.Translate('get_value_ack'), 'ack'],
|
|
746
774
|
[Blockly.Translate('get_value_ts'), 'ts'],
|
|
747
775
|
[Blockly.Translate('get_value_lc'), 'lc'],
|
|
748
|
-
[Blockly.Translate('get_value_q') ,
|
|
749
|
-
[Blockly.Translate('
|
|
776
|
+
[Blockly.Translate('get_value_q') , 'q'],
|
|
777
|
+
[Blockly.Translate('get_value_comment') , 'c'],
|
|
778
|
+
[Blockly.Translate('get_value_from'), 'from'],
|
|
779
|
+
|
|
780
|
+
[Blockly.Translate('get_common_name'), 'common.name'],
|
|
781
|
+
[Blockly.Translate('get_common_desc'), 'common.desc'],
|
|
782
|
+
[Blockly.Translate('get_common_unit'), 'common.unit'],
|
|
783
|
+
[Blockly.Translate('get_common_role'), 'common.role'],
|
|
784
|
+
[Blockly.Translate('get_common_state_type'), 'type'],
|
|
785
|
+
[Blockly.Translate('get_common_object_type'), 'common.type'],
|
|
786
|
+
[Blockly.Translate('get_common_read'), 'common.read'],
|
|
787
|
+
[Blockly.Translate('get_common_write'), 'common.write'],
|
|
750
788
|
]), 'ATTR');
|
|
751
789
|
|
|
752
790
|
this.appendDummyInput()
|
|
@@ -772,7 +810,11 @@ Blockly.JavaScript['get_value_async'] = function(block) {
|
|
|
772
810
|
var oid = block.getFieldValue('OID');
|
|
773
811
|
var attr = block.getFieldValue('ATTR');
|
|
774
812
|
var statement = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
|
|
775
|
-
|
|
813
|
+
if (attr === 'type' || attr.indexOf('.') !== -1) {
|
|
814
|
+
return 'getObjectAsync("' + oid + '", async function (err, obj) {\n let value = obj.' + attr + ';\n' + statement + '});\n';
|
|
815
|
+
} else {
|
|
816
|
+
return 'getState("' + oid + '", async function (err, state) {\n let value = state.' + attr + ';\n' + statement + '});\n';
|
|
817
|
+
}
|
|
776
818
|
};
|
|
777
819
|
|
|
778
820
|
// --- select OID --------------------------------------------------
|
|
@@ -407,7 +407,7 @@ Blockly.JavaScript['time_get'] = function(block) {
|
|
|
407
407
|
} else if (option === 'm') {
|
|
408
408
|
code = '(new Date().getMinutes())';
|
|
409
409
|
} else if (option === 'mid') {
|
|
410
|
-
code = '(function () {
|
|
410
|
+
code = '(function () {const v = new Date(); return v.getHours() * 60 + v.getMinutes();})()';
|
|
411
411
|
} else if (option === 'h') {
|
|
412
412
|
code = '(new Date().getHours())';
|
|
413
413
|
} else if (option === 'd') {
|
|
@@ -274,7 +274,7 @@ Blockly.JavaScript['on_ext'] = function(block) {
|
|
|
274
274
|
var oid = '[].concat(' + oids.join(').concat(') + ')';
|
|
275
275
|
|
|
276
276
|
var code = 'on({id: ' + oid + ', ' + val + (ack_condition ? ', ack: ' + ack_condition : '') + '}, async function (obj) {\n ' +
|
|
277
|
-
(oids.length === 1 ? '
|
|
277
|
+
(oids.length === 1 ? 'let value = obj.state.val;\n let oldValue = obj.oldState.val;\n' : '') +
|
|
278
278
|
statements_name + '});\n';
|
|
279
279
|
return code;
|
|
280
280
|
};
|
|
@@ -347,7 +347,7 @@ Blockly.JavaScript['on'] = function(block) {
|
|
|
347
347
|
val = 'change: "' + dropdown_condition + '"';
|
|
348
348
|
}
|
|
349
349
|
|
|
350
|
-
var code = 'on({id: "' + value_objectid + '"' + (objectname ? '/*' + objectname + '*/' : '') + ', ' + val + (ack_condition ? ', ack: ' + ack_condition : '') + '}, async function (obj) {\n
|
|
350
|
+
var code = 'on({id: "' + value_objectid + '"' + (objectname ? '/*' + objectname + '*/' : '') + ', ' + val + (ack_condition ? ', ack: ' + ack_condition : '') + '}, async function (obj) {\n let value = obj.state.val;\n let oldValue = obj.oldState.val;\n' + statements_name + '});\n';
|
|
351
351
|
return code;
|
|
352
352
|
};
|
|
353
353
|
|
|
@@ -159,7 +159,16 @@ Blockly.Words['get_value_ack'] = {'en': 'Acknowledge',
|
|
|
159
159
|
Blockly.Words['get_value_ts'] = {'en': 'Timestamp', 'de': 'Zeitstempel', 'ru': 'Время', 'pt': 'Timestamp', 'nl': 'tijdstempel', 'fr': 'Horodatage', 'it': 'timestamp', 'es': 'Marca de tiempo', 'pl': 'Timestamp', 'zh-cn': '当前时间戳', 'uk': 'Мітка часу'};
|
|
160
160
|
Blockly.Words['get_value_lc'] = {'en': 'Last change ', 'de': 'Letze Änderung', 'ru': 'Последнее изменеие', 'pt': 'Última mudança', 'nl': 'Laatste wijziging', 'fr': 'Dernier changement', 'it': 'Ultima modifica', 'es': 'Ultimo cambio', 'pl': 'Last change ', 'zh-cn': '上次变更时间', 'uk': 'Остання зміна'};
|
|
161
161
|
Blockly.Words['get_value_q'] = {'en': 'Quality', 'de': 'Qualität', 'ru': 'Качество', 'pt': 'Qualidade', 'nl': 'Kwaliteit', 'fr': 'Qualité', 'it': 'Qualità', 'es': 'Calidad', 'pl': 'Quality', 'zh-cn': '状态质量', 'uk': 'якість'};
|
|
162
|
+
Blockly.Words['get_value_comment'] = {'en': 'Value comment', 'de': 'Wertkommentar', 'ru': 'Значение комментария', 'pt': 'Comentário de valor', 'nl': 'Waarde opmerking', 'fr': 'Commentaire sur la valeur', 'it': 'Commento di valore', 'es': 'Comentario de valor', 'pl': 'Wartość komentarza', 'zh-cn': '值评论', 'uk': 'Коментар вартості'};
|
|
162
163
|
Blockly.Words['get_value_from'] = {'en': 'Source', 'de': 'Quelle', 'ru': 'Происхождение', 'pt': 'Fonte', 'nl': 'Bron', 'fr': 'La source', 'it': 'fonte', 'es': 'Fuente', 'pl': 'Source', 'zh-cn': '上次变更发起者', 'uk': 'Джерело'};
|
|
164
|
+
Blockly.Words['get_common_name'] = {'en': 'Object name', 'de': 'Objektname', 'ru': 'Имя объекта', 'pt': 'Nome do objeto', 'nl': 'Object naam', 'fr': 'Nom de l\'objet', 'it': 'Nome oggetto', 'es': 'Nombre del objeto', 'pl': 'Nazwa obiektu', 'zh-cn': '对象名称', 'uk': 'Назва об\'єкта'};
|
|
165
|
+
Blockly.Words['get_common_desc'] = {'en': 'Object description', 'de': 'Objektbeschreibung', 'ru': 'Описание объекта', 'pt': 'Descrição do objeto', 'nl': 'Objectbeschrijving', 'fr': 'Descriptif de l\'objet', 'it': 'Descrizione dell\'oggetto', 'es': 'Descripción del objeto', 'pl': 'Opis obiektu', 'zh-cn': '对象描述', 'uk': 'Опис об\'єкта'};
|
|
166
|
+
Blockly.Words['get_common_unit'] = {'en': 'State unit', 'de': 'Zustands-Einheit', 'ru': 'Единица измерения', 'pt': 'unidade estadual', 'nl': 'Staatseenheid', 'fr': 'Unité d\'état', 'it': 'Unità statale', 'es': 'unidad estatal', 'pl': 'Jednostka państwowa', 'zh-cn': '国家单位', 'uk': 'Державна одиниця'};
|
|
167
|
+
Blockly.Words['get_common_role'] = {'en': 'Object role', 'de': 'Objektrolle', 'ru': 'Роль объекта', 'pt': 'função do objeto', 'nl': 'Object rol', 'fr': 'Rôle d\'objet', 'it': 'Ruolo dell\'oggetto', 'es': 'Rol de objeto', 'pl': 'Rola obiektu', 'zh-cn': '对象角色', 'uk': 'Об\'єктна роль'};
|
|
168
|
+
Blockly.Words['get_common_state_type'] = {'en': 'State type', 'de': 'Zustandstyp', 'ru': 'Тип состояния', 'pt': 'tipo de estado', 'nl': 'Type staat', 'fr': 'Type d\'état', 'it': 'Tipo di stato', 'es': 'tipo de estado', 'pl': 'Typ stanu', 'zh-cn': '状态类型', 'uk': 'Державний тип'};
|
|
169
|
+
Blockly.Words['get_common_object_type'] = {'en': 'Object type', 'de': 'Objekttyp', 'ru': 'Тип объекта', 'pt': 'Tipo de objeto', 'nl': 'Object type', 'fr': 'Type d\'objet', 'it': 'Tipo di oggetto', 'es': 'Tipo de objeto', 'pl': 'Rodzaj obiektu', 'zh-cn': '对象类型', 'uk': 'Тип об\'єкта'};
|
|
170
|
+
Blockly.Words['get_common_read'] = {'en': 'Is state readable', 'de': 'Zustand lesbar ist', 'ru': 'Является читаемым', 'pt': 'O estado é legível', 'nl': 'Staat leesbaar', 'fr': 'L\'état est-il lisible', 'it': 'È leggibile dallo stato', 'es': 'Es estado legible', 'pl': 'Czy stan jest czytelny', 'zh-cn': '状态是否可读', 'uk': 'Чи читається стан'};
|
|
171
|
+
Blockly.Words['get_common_write'] = {'en': 'Is state writable', 'de': 'Zustand beschreibbar ist', 'ru': 'Доступно для записи', 'pt': 'É estado gravável', 'nl': 'Staat beschrijfbaar', 'fr': 'L\'état est-il accessible en écriture', 'it': 'È stato scrivibile', 'es': 'Es el estado escribible', 'pl': 'Czy stan jest zapisywalny', 'zh-cn': '状态是否可写', 'uk': 'Доступний для запису в стані'};
|
|
163
172
|
Blockly.Words['get_value_async'] = {'en': 'Get state value', 'de': 'Zustandswert nehmen', 'ru': 'Взять значение состояния', 'pt': 'Tome o valor do estado', 'nl': 'Krijg statuswaarde', 'fr': 'Obtenir la valeur de l\'état', 'it': 'Ottieni valore statale', 'es': 'Obtener valor de estado', 'pl': 'Get state value', 'zh-cn': '获取状态的值', 'uk': 'Отримати державне значення'};
|
|
164
173
|
|
|
165
174
|
// --- system field --------------------------------------------------
|