iobroker.javascript 7.0.7 → 7.0.10
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 +6 -12
- package/admin/asset-manifest.json +7 -7
- package/admin/google-blockly/blockly_compressed.js +1469 -1704
- package/admin/google-blockly/blocks_compressed.js +164 -218
- package/admin/google-blockly/javascript_compressed.js +100 -328
- package/admin/google-blockly/msg/js/de.js +64 -70
- package/admin/google-blockly/msg/js/en.js +14 -20
- package/admin/google-blockly/msg/js/es.js +39 -45
- package/admin/google-blockly/msg/js/fr.js +59 -65
- package/admin/google-blockly/msg/js/it.js +19 -25
- package/admin/google-blockly/msg/js/nl.js +55 -61
- package/admin/google-blockly/msg/js/pl.js +46 -52
- package/admin/google-blockly/msg/js/pt.js +30 -36
- package/admin/google-blockly/msg/js/ru.js +41 -47
- package/admin/google-blockly/msg/js/uk.js +13 -17
- package/admin/google-blockly/msg/js/zh-cn.js +86 -92
- package/admin/google-blockly/own/blocks_action.js +4 -4
- package/admin/google-blockly/own/blocks_logic.js +2 -2
- package/admin/google-blockly/own/blocks_procedures.js +63 -62
- package/admin/google-blockly/own/blocks_sendto.js +62 -60
- package/admin/google-blockly/own/blocks_switch.js +40 -29
- package/admin/google-blockly/own/blocks_system.js +109 -170
- package/admin/google-blockly/own/blocks_time.js +35 -35
- package/admin/google-blockly/own/blocks_timeout.js +42 -42
- package/admin/google-blockly/own/blocks_trigger.js +51 -68
- package/admin/google-blockly/own/blocks_words.js +12 -8
- package/admin/google-blockly/own/field_cron.js +189 -139
- package/admin/google-blockly/own/field_oid.js +250 -170
- package/admin/google-blockly/own/field_script.js +168 -122
- package/admin/static/js/{565.643198c0.chunk.js → 569.e2b427a7.chunk.js} +2 -2
- package/admin/static/js/569.e2b427a7.chunk.js.map +1 -0
- package/admin/static/js/759.7f25ba6c.chunk.js.map +1 -1
- package/admin/static/js/98.eee0c52f.chunk.js +2 -0
- package/admin/static/js/98.eee0c52f.chunk.js.map +1 -0
- package/admin/static/js/{main.d86fb9de.js → main.d5dc2784.js} +2 -2
- package/admin/static/js/{main.d86fb9de.js.map → main.d5dc2784.js.map} +1 -1
- package/admin/tab.html +1 -1
- package/io-package.json +27 -27
- package/package.json +1 -1
- package/admin/static/js/565.643198c0.chunk.js.map +0 -1
- package/admin/static/js/98.f78be4fc.chunk.js +0 -2
- package/admin/static/js/98.f78be4fc.chunk.js.map +0 -1
|
@@ -85,7 +85,6 @@ Blockly.Blocks['on_ext'] = {
|
|
|
85
85
|
mutationToDom: function () {
|
|
86
86
|
const container = document.createElement('mutation');
|
|
87
87
|
container.setAttribute('items', this.itemCount_);
|
|
88
|
-
|
|
89
88
|
return container;
|
|
90
89
|
},
|
|
91
90
|
/**
|
|
@@ -106,7 +105,6 @@ Blockly.Blocks['on_ext'] = {
|
|
|
106
105
|
decompose: function (workspace) {
|
|
107
106
|
const containerBlock = workspace.newBlock('on_ext_oid_container');
|
|
108
107
|
containerBlock.initSvg();
|
|
109
|
-
|
|
110
108
|
let connection = containerBlock.getInput('STACK').connection;
|
|
111
109
|
for (let i = 0; i < this.itemCount_; i++) {
|
|
112
110
|
const itemBlock = workspace.newBlock('on_ext_oid');
|
|
@@ -114,7 +112,6 @@ Blockly.Blocks['on_ext'] = {
|
|
|
114
112
|
connection.connect(itemBlock.previousConnection);
|
|
115
113
|
connection = itemBlock.nextConnection;
|
|
116
114
|
}
|
|
117
|
-
|
|
118
115
|
return containerBlock;
|
|
119
116
|
},
|
|
120
117
|
/**
|
|
@@ -131,19 +128,18 @@ Blockly.Blocks['on_ext'] = {
|
|
|
131
128
|
itemBlock = itemBlock.nextConnection &&
|
|
132
129
|
itemBlock.nextConnection.targetBlock();
|
|
133
130
|
}
|
|
134
|
-
|
|
135
131
|
// Disconnect any children that don't belong.
|
|
136
132
|
for (let k = 0; k < this.itemCount_; k++) {
|
|
137
|
-
|
|
133
|
+
const connection = this.getInput('OID' + k).connection.targetConnection;
|
|
138
134
|
if (connection && connections.indexOf(connection) === -1) {
|
|
139
135
|
connection.disconnect();
|
|
140
136
|
}
|
|
141
137
|
}
|
|
142
|
-
|
|
143
138
|
this.itemCount_ = connections.length;
|
|
144
|
-
if (this.itemCount_ < 1)
|
|
139
|
+
if (this.itemCount_ < 1) {
|
|
140
|
+
this.itemCount_ = 1;
|
|
141
|
+
}
|
|
145
142
|
this.updateShape_();
|
|
146
|
-
|
|
147
143
|
// Reconnect any child blocks.
|
|
148
144
|
for (let i = 0; i < this.itemCount_; i++) {
|
|
149
145
|
Blockly.Mutator.reconnect(connections[i], this, 'OID' + i);
|
|
@@ -157,9 +153,8 @@ Blockly.Blocks['on_ext'] = {
|
|
|
157
153
|
saveConnections: function(containerBlock) {
|
|
158
154
|
let itemBlock = containerBlock.getInputTargetBlock('STACK');
|
|
159
155
|
let i = 0;
|
|
160
|
-
|
|
161
156
|
while (itemBlock) {
|
|
162
|
-
|
|
157
|
+
const input = this.getInput('OID' + i);
|
|
163
158
|
itemBlock.valueConnection_ = input && input.connection.targetConnection;
|
|
164
159
|
i++;
|
|
165
160
|
itemBlock = itemBlock.nextConnection &&
|
|
@@ -191,7 +186,8 @@ Blockly.Blocks['on_ext'] = {
|
|
|
191
186
|
// Add new inputs.
|
|
192
187
|
const wp = this.workspace;
|
|
193
188
|
|
|
194
|
-
|
|
189
|
+
let i;
|
|
190
|
+
for (i = 0; i < this.itemCount_; i++) {
|
|
195
191
|
let _input = this.getInput('OID' + i);
|
|
196
192
|
if (!_input) {
|
|
197
193
|
_input = this.appendValueInput('OID' + i);
|
|
@@ -220,7 +216,6 @@ Blockly.Blocks['on_ext'] = {
|
|
|
220
216
|
}, 100, _input);
|
|
221
217
|
}
|
|
222
218
|
}
|
|
223
|
-
|
|
224
219
|
// Remove deleted inputs.
|
|
225
220
|
while (this.getInput('OID' + i)) {
|
|
226
221
|
this.removeInput('OID' + i);
|
|
@@ -257,14 +252,13 @@ Blockly.Blocks['on_ext'] = {
|
|
|
257
252
|
};
|
|
258
253
|
Blockly.JavaScript['on_ext'] = function(block) {
|
|
259
254
|
const dropdown_condition = block.getFieldValue('CONDITION');
|
|
255
|
+
const statements_name = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
|
|
260
256
|
const ack_condition = block.getFieldValue('ACK_CONDITION');
|
|
261
|
-
const statement = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
|
|
262
|
-
|
|
263
257
|
let val;
|
|
264
258
|
if (dropdown_condition === 'true' || dropdown_condition === 'false') {
|
|
265
259
|
val = 'val: ' + dropdown_condition;
|
|
266
260
|
} else {
|
|
267
|
-
val =
|
|
261
|
+
val = 'change: "' + dropdown_condition + '"';
|
|
268
262
|
}
|
|
269
263
|
|
|
270
264
|
const oids = [];
|
|
@@ -280,12 +274,12 @@ Blockly.JavaScript['on_ext'] = function(block) {
|
|
|
280
274
|
}
|
|
281
275
|
}
|
|
282
276
|
}
|
|
283
|
-
|
|
284
277
|
const oid = '[].concat(' + oids.join(').concat(') + ')';
|
|
285
278
|
|
|
286
|
-
|
|
279
|
+
const code = 'on({ id: ' + oid + ', ' + val + (ack_condition ? ', ack: ' + ack_condition : '') + ' }, async (obj) => {\n' +
|
|
287
280
|
(oids.length === 1 ? Blockly.JavaScript.prefixLines('let value = obj.state.val;\nlet oldValue = obj.oldState.val;', Blockly.JavaScript.INDENT) + '\n' : '') +
|
|
288
|
-
|
|
281
|
+
statements_name + '});\n';
|
|
282
|
+
return code;
|
|
289
283
|
};
|
|
290
284
|
|
|
291
285
|
// --- ON -----------------------------------------------------------
|
|
@@ -344,8 +338,8 @@ Blockly.JavaScript['on'] = function(block) {
|
|
|
344
338
|
const value_objectid = block.getFieldValue('OID');
|
|
345
339
|
const dropdown_condition = block.getFieldValue('CONDITION');
|
|
346
340
|
const ack_condition = block.getFieldValue('ACK_CONDITION');
|
|
347
|
-
const
|
|
348
|
-
const
|
|
341
|
+
const statements_name = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
|
|
342
|
+
const objectname = main.objects[value_objectid] && main.objects[value_objectid].common && main.objects[value_objectid].common.name ? main.objects[value_objectid].common.name : '';
|
|
349
343
|
|
|
350
344
|
Blockly.Msg.VARIABLES_DEFAULT_NAME = 'value';
|
|
351
345
|
|
|
@@ -353,13 +347,13 @@ Blockly.JavaScript['on'] = function(block) {
|
|
|
353
347
|
if (dropdown_condition === 'true' || dropdown_condition === 'false') {
|
|
354
348
|
val = 'val: ' + dropdown_condition;
|
|
355
349
|
} else {
|
|
356
|
-
val =
|
|
350
|
+
val = 'change: "' + dropdown_condition + '"';
|
|
357
351
|
}
|
|
358
352
|
|
|
359
|
-
return
|
|
360
|
-
Blockly.JavaScript.prefixLines('let value = obj.state.val
|
|
353
|
+
return 'on({ id: "' + value_objectid + '"' + (objectname ? '/*' + objectname + '*/' : '') + ', ' + val + (ack_condition ? ', ack: ' + ack_condition : '') + ' }, async (obj) => {\n' +
|
|
354
|
+
Blockly.JavaScript.prefixLines('let value = obj.state.val;\n', Blockly.JavaScript.INDENT) + '\n' +
|
|
361
355
|
Blockly.JavaScript.prefixLines('let oldValue = obj.oldState.val;', Blockly.JavaScript.INDENT) + '\n' +
|
|
362
|
-
|
|
356
|
+
+ statements_name +
|
|
363
357
|
'});\n';
|
|
364
358
|
};
|
|
365
359
|
|
|
@@ -376,7 +370,6 @@ Blockly.Blocks['on_source'] = {
|
|
|
376
370
|
* @this Blockly.Block
|
|
377
371
|
*/
|
|
378
372
|
init: function() {
|
|
379
|
-
|
|
380
373
|
this.appendDummyInput()
|
|
381
374
|
.appendField('↪');
|
|
382
375
|
|
|
@@ -404,7 +397,7 @@ Blockly.Blocks['on_source'] = {
|
|
|
404
397
|
[Blockly.Translate('on_source_oldstate_ack'), 'oldState.ack'],
|
|
405
398
|
[Blockly.Translate('on_source_oldstate_lc'), 'oldState.lc'],
|
|
406
399
|
[Blockly.Translate('on_source_oldstate_c'), 'oldState.c'],
|
|
407
|
-
[Blockly.Translate('on_source_oldstate_user'),
|
|
400
|
+
[Blockly.Translate('on_source_oldstate_user'), 'oldState.user']
|
|
408
401
|
]), 'ATTR');
|
|
409
402
|
|
|
410
403
|
this.setInputsInline(true);
|
|
@@ -424,7 +417,7 @@ Blockly.Blocks['on_source'] = {
|
|
|
424
417
|
// Is the block nested in a trigger?
|
|
425
418
|
let block = this;
|
|
426
419
|
do {
|
|
427
|
-
if (this.FUNCTION_TYPES.
|
|
420
|
+
if (this.FUNCTION_TYPES.includes(block.type)) {
|
|
428
421
|
legal = true;
|
|
429
422
|
break;
|
|
430
423
|
}
|
|
@@ -447,13 +440,11 @@ Blockly.Blocks['on_source'] = {
|
|
|
447
440
|
Blockly.JavaScript['on_source'] = function(block) {
|
|
448
441
|
let attr = block.getFieldValue('ATTR');
|
|
449
442
|
const parts = attr.split('.');
|
|
450
|
-
|
|
451
443
|
if (parts.length > 1) {
|
|
452
444
|
attr = '(obj.' + parts[0] + ' ? obj.' + attr + ' : "")';
|
|
453
445
|
} else {
|
|
454
446
|
attr = 'obj.' + attr;
|
|
455
447
|
}
|
|
456
|
-
|
|
457
448
|
return [attr, Blockly.JavaScript.ORDER_ATOMIC];
|
|
458
449
|
};
|
|
459
450
|
|
|
@@ -461,6 +452,9 @@ Blockly.JavaScript['on_source'] = function(block) {
|
|
|
461
452
|
Blockly.Trigger.blocks['schedule'] =
|
|
462
453
|
'<block type="schedule">'
|
|
463
454
|
+ ' <value name="SCHEDULE">'
|
|
455
|
+
//+ ' <shadow type="text">'
|
|
456
|
+
//+ ' <field name="TEXT">test</field>'
|
|
457
|
+
//+ ' </shadow>'
|
|
464
458
|
+ ' </value>'
|
|
465
459
|
+ ' <value name="STATEMENT">'
|
|
466
460
|
+ ' </value>'
|
|
@@ -487,16 +481,15 @@ Blockly.Blocks['schedule'] = {
|
|
|
487
481
|
};
|
|
488
482
|
Blockly.JavaScript['schedule'] = function(block) {
|
|
489
483
|
let schedule = block.getFieldValue('SCHEDULE');
|
|
490
|
-
const
|
|
484
|
+
const statements_name = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
|
|
491
485
|
|
|
492
486
|
if (schedule[0] === '{') {
|
|
493
487
|
schedule = "'" + schedule + "'";
|
|
494
488
|
} else {
|
|
495
489
|
schedule = '"' + schedule + '"';
|
|
496
490
|
}
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
statement +
|
|
491
|
+
return 'schedule(' + schedule + ', async () => {\n' +
|
|
492
|
+
statements_name +
|
|
500
493
|
'});\n';
|
|
501
494
|
};
|
|
502
495
|
|
|
@@ -559,11 +552,11 @@ Blockly.Blocks['astro'] = {
|
|
|
559
552
|
};
|
|
560
553
|
Blockly.JavaScript['astro'] = function(block) {
|
|
561
554
|
const astrotype = block.getFieldValue('TYPE');
|
|
562
|
-
const offset
|
|
563
|
-
const
|
|
555
|
+
const offset = parseInt(block.getFieldValue('OFFSET'), 10);
|
|
556
|
+
const statements_name = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
|
|
564
557
|
|
|
565
|
-
return
|
|
566
|
-
|
|
558
|
+
return 'schedule({ astro: "' + astrotype + '", shift: ' + offset + ' }, async () => {\n' +
|
|
559
|
+
statements_name +
|
|
567
560
|
'});\n';
|
|
568
561
|
};
|
|
569
562
|
|
|
@@ -683,10 +676,10 @@ Blockly.Blocks['schedule_create'] = {
|
|
|
683
676
|
Blockly.JavaScript['schedule_create'] = function (block) {
|
|
684
677
|
const name = Blockly.JavaScript.variableDB_.safeName_(block.getFieldValue('NAME'));
|
|
685
678
|
const schedule = Blockly.JavaScript.valueToCode(block, 'SCHEDULE', Blockly.JavaScript.ORDER_ATOMIC);
|
|
686
|
-
const
|
|
679
|
+
const statements_name = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
|
|
687
680
|
|
|
688
681
|
return name + ' = schedule(' + schedule + ', async () => {\n' +
|
|
689
|
-
|
|
682
|
+
statements_name +
|
|
690
683
|
'});\n';
|
|
691
684
|
};
|
|
692
685
|
|
|
@@ -741,7 +734,7 @@ Blockly.Blocks['schedule_clear'] = {
|
|
|
741
734
|
|
|
742
735
|
Blockly.JavaScript['schedule_clear'] = function(block) {
|
|
743
736
|
const name = Blockly.JavaScript.variableDB_.safeName_(block.getFieldValue('NAME'));
|
|
744
|
-
return
|
|
737
|
+
return '(function () { if (' + name + ') { clearSchedule(' + name + '); ' + name + ' = null; }})();\n';
|
|
745
738
|
};
|
|
746
739
|
|
|
747
740
|
// --- CRON dialog --------------------------------------------------
|
|
@@ -769,7 +762,7 @@ Blockly.Blocks['field_cron'] = {
|
|
|
769
762
|
|
|
770
763
|
Blockly.JavaScript['field_cron'] = function(block) {
|
|
771
764
|
const cron = block.getFieldValue('CRON');
|
|
772
|
-
return [
|
|
765
|
+
return ['\'' + cron + '\'', Blockly.JavaScript.ORDER_ATOMIC]
|
|
773
766
|
};
|
|
774
767
|
|
|
775
768
|
// --- CRON builder --------------------------------------------------
|
|
@@ -795,7 +788,6 @@ Blockly.Trigger.blocks['cron_builder'] =
|
|
|
795
788
|
Blockly.Blocks['cron_builder'] = {
|
|
796
789
|
// Checkbox.
|
|
797
790
|
init: function() {
|
|
798
|
-
|
|
799
791
|
this.appendDummyInput()
|
|
800
792
|
.appendField(Blockly.Translate('cron_builder_CRON'));
|
|
801
793
|
|
|
@@ -809,7 +801,6 @@ Blockly.Blocks['cron_builder'] = {
|
|
|
809
801
|
.appendField(Blockly.Translate('cron_builder_dow'));
|
|
810
802
|
|
|
811
803
|
const wp = this.workspace;
|
|
812
|
-
|
|
813
804
|
setTimeout(function (_input) {
|
|
814
805
|
if (!_input.connection.isConnected()) {
|
|
815
806
|
const _shadow = wp.newBlock('text');
|
|
@@ -819,9 +810,9 @@ Blockly.Blocks['cron_builder'] = {
|
|
|
819
810
|
}
|
|
820
811
|
}, 100, _input);
|
|
821
812
|
|
|
813
|
+
|
|
822
814
|
_input = this.appendValueInput('MONTHS')
|
|
823
815
|
.appendField(Blockly.Translate('cron_builder_month'));
|
|
824
|
-
|
|
825
816
|
setTimeout(function (_input) {
|
|
826
817
|
if (!_input.connection.isConnected()) {
|
|
827
818
|
const _shadow = wp.newBlock('text');
|
|
@@ -833,7 +824,6 @@ Blockly.Blocks['cron_builder'] = {
|
|
|
833
824
|
|
|
834
825
|
_input = this.appendValueInput('DAYS')
|
|
835
826
|
.appendField(Blockly.Translate('cron_builder_day'));
|
|
836
|
-
|
|
837
827
|
setTimeout(function (_input) {
|
|
838
828
|
if (!_input.connection.isConnected()) {
|
|
839
829
|
const _shadow = wp.newBlock('text');
|
|
@@ -845,7 +835,6 @@ Blockly.Blocks['cron_builder'] = {
|
|
|
845
835
|
|
|
846
836
|
_input = this.appendValueInput('HOURS')
|
|
847
837
|
.appendField(Blockly.Translate('cron_builder_hour'));
|
|
848
|
-
|
|
849
838
|
setTimeout(function (_input) {
|
|
850
839
|
if (!_input.connection.isConnected()) {
|
|
851
840
|
const _shadow = wp.newBlock('text');
|
|
@@ -857,7 +846,6 @@ Blockly.Blocks['cron_builder'] = {
|
|
|
857
846
|
|
|
858
847
|
_input = this.appendValueInput('MINUTES')
|
|
859
848
|
.appendField(Blockly.Translate('cron_builder_minutes'));
|
|
860
|
-
|
|
861
849
|
setTimeout(function (_input) {
|
|
862
850
|
if (!_input.connection.isConnected()) {
|
|
863
851
|
const _shadow = wp.newBlock('text');
|
|
@@ -890,7 +878,6 @@ Blockly.Blocks['cron_builder'] = {
|
|
|
890
878
|
const container = document.createElement('mutation');
|
|
891
879
|
container.setAttribute('seconds', this.seconds_);
|
|
892
880
|
container.setAttribute('as_line', this.as_line_);
|
|
893
|
-
|
|
894
881
|
return container;
|
|
895
882
|
},
|
|
896
883
|
/**
|
|
@@ -943,12 +930,11 @@ Blockly.JavaScript['cron_builder'] = function(block) {
|
|
|
943
930
|
const code =
|
|
944
931
|
(withSeconds === 'TRUE' || withSeconds === 'true' || withSeconds === true ?
|
|
945
932
|
seconds + '.toString().trim() + \' \' + ' : '') +
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
933
|
+
minutes + '.toString().trim() + \' \' + ' +
|
|
934
|
+
hours + '.toString().trim() + \' \' + ' +
|
|
935
|
+
days + '.toString().trim() + \' \' + ' +
|
|
936
|
+
months + '.toString().trim() + \' \' + ' +
|
|
937
|
+
dow + '.toString().trim()';
|
|
952
938
|
return [code, Blockly.JavaScript.ORDER_ATOMIC]
|
|
953
939
|
};
|
|
954
940
|
|
|
@@ -986,10 +972,10 @@ Blockly.Blocks['onMessage'] = {
|
|
|
986
972
|
|
|
987
973
|
Blockly.JavaScript['onMessage'] = function (block) {
|
|
988
974
|
const message = block.getFieldValue('MESSAGE');
|
|
989
|
-
const
|
|
975
|
+
const statements_name = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
|
|
990
976
|
|
|
991
|
-
return
|
|
992
|
-
|
|
977
|
+
return 'onMessage("' + message + '", async (data) => {\n' +
|
|
978
|
+
statements_name +
|
|
993
979
|
'});\n';
|
|
994
980
|
};
|
|
995
981
|
|
|
@@ -1037,18 +1023,16 @@ Blockly.Blocks['onFile'] = {
|
|
|
1037
1023
|
this.setHelpUrl(getHelp('onFile_help'));
|
|
1038
1024
|
}
|
|
1039
1025
|
};
|
|
1040
|
-
|
|
1041
1026
|
Blockly.JavaScript['onFile'] = function (block) {
|
|
1042
1027
|
const value_objectid = Blockly.JavaScript.valueToCode(block, 'OID', Blockly.JavaScript.ORDER_ATOMIC);
|
|
1043
1028
|
const file = Blockly.JavaScript.valueToCode(block, 'FILE', Blockly.JavaScript.ORDER_ATOMIC);
|
|
1044
1029
|
const withFile = block.getFieldValue('WITH_FILE');
|
|
1045
|
-
const
|
|
1046
|
-
const
|
|
1030
|
+
const statements_name = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
|
|
1031
|
+
const objectname = main.objects[value_objectid] && main.objects[value_objectid].common && main.objects[value_objectid].common.name ? main.objects[value_objectid].common.name : '';
|
|
1047
1032
|
|
|
1048
|
-
return
|
|
1049
|
-
'
|
|
1050
|
-
|
|
1051
|
-
'});\n';
|
|
1033
|
+
return 'onFile(' + value_objectid + (objectname ? '/*' + objectname + '*/' : '') + ', ' +
|
|
1034
|
+
file + ', ' + (withFile === 'TRUE' ? 'true' : 'false') +
|
|
1035
|
+
', async (id, fileName, size, data, mimeType) => {\n' + statements_name + '});\n';
|
|
1052
1036
|
};
|
|
1053
1037
|
|
|
1054
1038
|
// --- onFile -----------------------------------------------------------
|
|
@@ -1083,11 +1067,10 @@ Blockly.Blocks['offFile'] = {
|
|
|
1083
1067
|
this.setHelpUrl(getHelp('offFile_help'));
|
|
1084
1068
|
}
|
|
1085
1069
|
};
|
|
1086
|
-
|
|
1087
1070
|
Blockly.JavaScript['offFile'] = function (block) {
|
|
1088
1071
|
const value_objectid = Blockly.JavaScript.valueToCode(block, 'OID', Blockly.JavaScript.ORDER_ATOMIC);
|
|
1089
1072
|
const file = Blockly.JavaScript.valueToCode(block, 'FILE', Blockly.JavaScript.ORDER_ATOMIC);
|
|
1090
|
-
const
|
|
1073
|
+
const objectname = main.objects[value_objectid] && main.objects[value_objectid].common && main.objects[value_objectid].common.name ? main.objects[value_objectid].common.name : '';
|
|
1091
1074
|
|
|
1092
|
-
return
|
|
1093
|
-
};
|
|
1075
|
+
return 'offFile(' + value_objectid + (objectname ? '/*' + objectname + '*/' : '') + ', ' + file + ');\n';
|
|
1076
|
+
};
|
|
@@ -163,12 +163,12 @@ Blockly.Words['get_value_comment'] = {'en': 'Value comment',
|
|
|
163
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
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
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',
|
|
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
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
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
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': 'Является читаемым',
|
|
171
|
-
Blockly.Words['get_common_write'] = {'en': 'Is state writable', 'de': 'Zustand beschreibbar ist', 'ru': 'Доступно для записи',
|
|
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': 'Доступний для запису в стані'};
|
|
172
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': 'Отримати державне значення'};
|
|
173
173
|
|
|
174
174
|
// --- system field --------------------------------------------------
|
|
@@ -444,13 +444,17 @@ Blockly.Words['onMessage_message'] = {'en': 'message',
|
|
|
444
444
|
Blockly.Words['onMessage_tooltip'] = {'en': 'message', 'de': 'Meldung', 'ru': 'сообщение', 'pt': 'mensagem', 'nl': 'bericht', 'fr': 'message', 'it': 'messaggio', 'es': 'mensaje', 'pl': 'komunikat', 'zh-cn': '消息', 'uk': 'повідомлення'};
|
|
445
445
|
Blockly.Words['onMessage_help'] = {'en': 'onMessage', 'de': 'onMessage', 'ru': 'onMessage', 'pt': 'onMessage', 'nl': 'onMessage', 'fr': 'onMessage', 'it': 'onMessage', 'es': 'onMessage', 'pl': 'onMessage', 'zh-cn': 'onMessage', 'uk': 'onMessage'};
|
|
446
446
|
|
|
447
|
+
// --- LOGIC --------------------------------------------------
|
|
448
|
+
|
|
447
449
|
// --- logic between --------------------------------------------------
|
|
448
|
-
Blockly.Words['logic_between_min']
|
|
449
|
-
Blockly.Words['logic_between_max']
|
|
450
|
+
Blockly.Words['logic_between_min'] = {'en': 'Min', 'de': 'Min', 'ru': 'Мин', 'pt': 'Min', 'nl': 'Min', 'fr': 'Min', 'it': 'Min', 'es': 'Min', 'pl': 'Min', 'zh-cn': '明 明', 'uk': 'Мінуси'};
|
|
451
|
+
Blockly.Words['logic_between_max'] = {'en': 'Max', 'de': 'Max', 'ru': 'Макс', 'pt': 'Max', 'nl': 'Max', 'fr': 'Max', 'it': 'Max', 'es': 'Max', 'pl': 'Max', 'zh-cn': 'Max', 'uk': 'Макс'};
|
|
452
|
+
Blockly.Words['logic_between_tooltip'] = {'en': 'if a number between min and max', 'de': 'wenn eine Zahl zwischen min und max', 'ru': 'если число между min и max', 'pt': 'se um número entre min e max', 'nl': 'als een getal tussen min en max', 'fr': 'si un nombre entre min et max', 'it': 'se un numero compreso tra min e max', 'es': 'si un número entre min y max', 'pl': 'jeśli liczba między min a max', 'zh-cn': '如果最小值和最大值之间的数字', 'uk': 'якщо число між min і max'};
|
|
450
453
|
|
|
451
454
|
// --- logic ifempty --------------------------------------------------
|
|
452
|
-
Blockly.Words['logic_ifempty']
|
|
453
|
-
Blockly.Words['logic_ifempty_then']
|
|
455
|
+
Blockly.Words['logic_ifempty'] = {'en': 'if empty', 'de': 'wenn leer', 'ru': 'если пусто', 'pt': 'se vazio', 'nl': '_', 'fr': 'si vide', 'it': 'se vuoto', 'es': 'si está vacío', 'pl': 'jeśli chodzi o puste', 'zh-cn': '空', 'uk': 'якщо порожній'};
|
|
456
|
+
Blockly.Words['logic_ifempty_then'] = {'en': 'then', 'de': 'dann', 'ru': 'затем', 'pt': 'então', 'nl': 'dan', 'fr': 'puis', 'it': 'allora', 'es': 'entonces', 'pl': 'potem', 'zh-cn': '然后', 'uk': 'потім'};
|
|
457
|
+
Blockly.Words['logic_ifempty_tooltip'] = {'en': 'check if empty', 'de': 'Überprüfen, ob es leer ist', 'ru': 'проверить, если пусто', 'pt': 'verifique se está vazio', 'nl': 'controleer of leeg', 'fr': 'vérifier si vide', 'it': 'controlla se vuoto', 'es': 'comprobar si está vacío', 'pl': 'sprawdź, czy jest pusty', 'zh-cn': '检查是否为空', 'uk': 'перевірити, чи порожній'};
|
|
454
458
|
|
|
455
459
|
function getHelp(word) {
|
|
456
460
|
return 'https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#' + Blockly.Words[word][systemLang];
|
|
@@ -467,4 +471,4 @@ Blockly.Translate = function (word, lang) {
|
|
|
467
471
|
|
|
468
472
|
if (typeof module !== 'undefined' && typeof module.parent !== 'undefined') {
|
|
469
473
|
module.exports = Blockly;
|
|
470
|
-
}
|
|
474
|
+
}
|