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
|
@@ -45,8 +45,7 @@ Blockly.Blocks['debug'] = {
|
|
|
45
45
|
Blockly.JavaScript['debug'] = function(block) {
|
|
46
46
|
const value_text = Blockly.JavaScript.valueToCode(block, 'TEXT', Blockly.JavaScript.ORDER_ATOMIC);
|
|
47
47
|
const dropdown_severity = block.getFieldValue('Severity');
|
|
48
|
-
|
|
49
|
-
return `console.${dropdown_severity}(${value_text});\n`;
|
|
48
|
+
return 'console.' + dropdown_severity + '(' + value_text + ');\n';
|
|
50
49
|
};
|
|
51
50
|
|
|
52
51
|
// --- comment --------------------------------------------------
|
|
@@ -71,8 +70,7 @@ Blockly.Blocks['comment'] = {
|
|
|
71
70
|
|
|
72
71
|
Blockly.JavaScript['comment'] = function(block) {
|
|
73
72
|
const comment = block.getFieldValue('COMMENT');
|
|
74
|
-
|
|
75
|
-
return `// ${comment}\n`;
|
|
73
|
+
return '// ' + comment + '\n';
|
|
76
74
|
};
|
|
77
75
|
|
|
78
76
|
// --- control -----------------------------------------------------------
|
|
@@ -111,6 +109,7 @@ Blockly.Blocks['control'] = {
|
|
|
111
109
|
this.sourceBlock_.updateShape_(option === true || option === 'true' || option === 'TRUE');
|
|
112
110
|
}), 'WITH_DELAY');
|
|
113
111
|
|
|
112
|
+
|
|
114
113
|
this.setInputsInline(true);
|
|
115
114
|
this.setPreviousStatement(true, null);
|
|
116
115
|
this.setNextStatement(true, null);
|
|
@@ -121,9 +120,7 @@ Blockly.Blocks['control'] = {
|
|
|
121
120
|
mutationToDom: function() {
|
|
122
121
|
const container = document.createElement('mutation');
|
|
123
122
|
const option = this.getFieldValue('WITH_DELAY');
|
|
124
|
-
|
|
125
123
|
container.setAttribute('delay_input', option === true || option === 'true' || option === 'TRUE');
|
|
126
|
-
|
|
127
124
|
return container;
|
|
128
125
|
},
|
|
129
126
|
domToMutation: function(xmlElement) {
|
|
@@ -144,6 +141,7 @@ Blockly.Blocks['control'] = {
|
|
|
144
141
|
[Blockly.Translate('control_sec'), 'sec'],
|
|
145
142
|
[Blockly.Translate('control_min'), 'min']
|
|
146
143
|
]), 'UNIT');
|
|
144
|
+
//.appendField(Blockly.Translate('control_ms'));
|
|
147
145
|
}
|
|
148
146
|
} else if (inputExists) {
|
|
149
147
|
this.removeInput('DELAY');
|
|
@@ -168,26 +166,25 @@ Blockly.JavaScript['control'] = function(block) {
|
|
|
168
166
|
|
|
169
167
|
Blockly.Msg.VARIABLES_DEFAULT_NAME = 'value';
|
|
170
168
|
|
|
171
|
-
let valueDelay
|
|
172
|
-
const unit
|
|
169
|
+
let valueDelay = parseInt(block.getFieldValue('DELAY_MS'), 10);
|
|
170
|
+
const unit = block.getFieldValue('UNIT');
|
|
173
171
|
if (unit === 'min') {
|
|
174
172
|
valueDelay *= 60000;
|
|
175
173
|
} else if (unit === 'sec') {
|
|
176
174
|
valueDelay *= 1000;
|
|
177
175
|
}
|
|
178
|
-
|
|
179
176
|
let clearRunning = block.getFieldValue('CLEAR_RUNNING');
|
|
180
|
-
|
|
177
|
+
const valueValue = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ATOMIC);
|
|
178
|
+
const objectName = main.objects[valueObjectID] && main.objects[valueObjectID].common && main.objects[valueObjectID].common.name ? main.objects[valueObjectID].common.name : '';
|
|
179
|
+
let code;
|
|
181
180
|
|
|
182
|
-
|
|
183
|
-
const objectName = main.objects[valueObjectID] && main.objects[valueObjectID].common && main.objects[valueObjectID].common.name ? main.objects[valueObjectID].common.name : '';
|
|
181
|
+
clearRunning = clearRunning === 'TRUE' || clearRunning === 'true' || clearRunning === true;
|
|
184
182
|
const withDelay = this.getFieldValue('WITH_DELAY');
|
|
185
183
|
|
|
186
|
-
let code;
|
|
187
184
|
if (withDelay === 'true' || withDelay === true || withDelay === 'TRUE') {
|
|
188
|
-
code =
|
|
185
|
+
code = 'setStateDelayed("' + valueObjectID + '"' + (objectName ? '/*' + objectName + '*/' : '') + ', ' + valueValue + ', ' + valueDelay + ', ' + clearRunning + ');\n';
|
|
189
186
|
} else {
|
|
190
|
-
code =
|
|
187
|
+
code = 'setState("' + valueObjectID + '"' + (objectName ? '/*' + objectName + '*/' : '') + ', ' + valueValue + ');\n';
|
|
191
188
|
}
|
|
192
189
|
|
|
193
190
|
return code;
|
|
@@ -233,9 +230,7 @@ Blockly.Blocks['toggle'] = {
|
|
|
233
230
|
mutationToDom: function() {
|
|
234
231
|
const container = document.createElement('mutation');
|
|
235
232
|
const option = this.getFieldValue('WITH_DELAY');
|
|
236
|
-
|
|
237
233
|
container.setAttribute('delay_input', option === true || option === 'true' || option === 'TRUE');
|
|
238
|
-
|
|
239
234
|
return container;
|
|
240
235
|
},
|
|
241
236
|
domToMutation: function(xmlElement) {
|
|
@@ -278,49 +273,46 @@ Blockly.Blocks['toggle'] = {
|
|
|
278
273
|
|
|
279
274
|
Blockly.JavaScript['toggle'] = function(block) {
|
|
280
275
|
const valueObjectID = block.getFieldValue('OID');
|
|
281
|
-
const unit = block.getFieldValue('UNIT');
|
|
282
276
|
|
|
283
277
|
Blockly.Msg.VARIABLES_DEFAULT_NAME = 'value';
|
|
284
278
|
|
|
285
279
|
let valueDelay = parseInt(block.getFieldValue('DELAY_MS'), 10);
|
|
280
|
+
const unit = block.getFieldValue('UNIT');
|
|
286
281
|
if (unit === 'min') {
|
|
287
282
|
valueDelay *= 60000;
|
|
288
283
|
} else if (unit === 'sec') {
|
|
289
284
|
valueDelay *= 1000;
|
|
290
285
|
}
|
|
291
|
-
|
|
292
|
-
const objectName = main.objects[valueObjectID] && main.objects[valueObjectID].common && main.objects[valueObjectID].common.name ? main.objects[valueObjectID].common.name : '';
|
|
293
|
-
const objectType = main.objects[valueObjectID] && main.objects[valueObjectID].common && main.objects[valueObjectID].common.type ? main.objects[valueObjectID].common.type : 'boolean';
|
|
294
|
-
|
|
295
286
|
let clearRunning = block.getFieldValue('CLEAR_RUNNING');
|
|
287
|
+
const objectName = main.objects[valueObjectID] && main.objects[valueObjectID].common && main.objects[valueObjectID].common.name ? main.objects[valueObjectID].common.name : '';
|
|
288
|
+
const objectType = main.objects[valueObjectID] && main.objects[valueObjectID].common && main.objects[valueObjectID].common.type ? main.objects[valueObjectID].common.type : 'boolean';
|
|
289
|
+
let code;
|
|
290
|
+
let setCommand;
|
|
291
|
+
|
|
296
292
|
clearRunning = clearRunning === 'TRUE' || clearRunning === 'true' || clearRunning === true;
|
|
297
293
|
|
|
298
|
-
let setCommand;
|
|
299
294
|
if (objectType === 'number') {
|
|
300
295
|
let max = 100;
|
|
301
296
|
let min = 0;
|
|
302
|
-
|
|
303
297
|
if (main.objects[valueObjectID].common.max !== undefined) {
|
|
304
298
|
max = parseFloat(main.objects[valueObjectID].common.max);
|
|
305
299
|
}
|
|
306
300
|
if (main.objects[valueObjectID].common.min !== undefined) {
|
|
307
301
|
min = parseFloat(main.objects[valueObjectID].common.min);
|
|
308
302
|
}
|
|
309
|
-
|
|
310
|
-
setCommand = `setState('${valueObjectID}'${objectName ? ` /* ${objectName} */` : ''}, state ? (state.val === ${min} ? ${max} : ${min}) : ${max});`;
|
|
303
|
+
setCommand = 'setState("' + valueObjectID + '"' + (objectName ? '/*' + objectName + '*/' : '') + ', state ? (state.val == ' + min + ' ? ' + max + ' : ' + min + ') : ' + max + ');';
|
|
311
304
|
} else {
|
|
312
|
-
setCommand =
|
|
305
|
+
setCommand = 'setState("' + valueObjectID + '"' + (objectName ? '/*' + objectName + '*/' : '') + ', state ? !state.val : true);';
|
|
313
306
|
}
|
|
314
307
|
|
|
315
308
|
const withDelay = block.getFieldValue('WITH_DELAY');
|
|
316
309
|
|
|
317
|
-
let code;
|
|
318
310
|
if (withDelay === 'TRUE' || withDelay === 'true' || withDelay === true) {
|
|
319
|
-
code =
|
|
320
|
-
Blockly.JavaScript.prefixLines(
|
|
311
|
+
code = 'getState("' + valueObjectID + '", (err, state) => {\n' +
|
|
312
|
+
Blockly.JavaScript.prefixLines('setStateDelayed("' + valueObjectID + '"' + (objectName ? '/*' + objectName + '*/' : '') + ', state ? !state.val : true, ' + valueDelay + ', ' + clearRunning + ');', Blockly.JavaScript.INDENT) + '\n' +
|
|
321
313
|
'});\n';
|
|
322
314
|
} else {
|
|
323
|
-
code =
|
|
315
|
+
code = 'getState("' + valueObjectID + '", (err, state) => {\n' +
|
|
324
316
|
Blockly.JavaScript.prefixLines(setCommand, Blockly.JavaScript.INDENT) + '\n' +
|
|
325
317
|
'});\n';
|
|
326
318
|
}
|
|
@@ -374,9 +366,7 @@ Blockly.Blocks['update'] = {
|
|
|
374
366
|
mutationToDom: function() {
|
|
375
367
|
const container = document.createElement('mutation');
|
|
376
368
|
const option = this.getFieldValue('WITH_DELAY');
|
|
377
|
-
|
|
378
369
|
container.setAttribute('delay_input', option === true || option === 'true' || option === 'TRUE');
|
|
379
|
-
|
|
380
370
|
return container;
|
|
381
371
|
},
|
|
382
372
|
domToMutation: function(xmlElement) {
|
|
@@ -423,26 +413,25 @@ Blockly.JavaScript['update'] = function(block) {
|
|
|
423
413
|
Blockly.Msg.VARIABLES_DEFAULT_NAME = 'value';
|
|
424
414
|
|
|
425
415
|
const value_value = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ATOMIC);
|
|
426
|
-
const unit = block.getFieldValue('UNIT');
|
|
427
|
-
|
|
428
416
|
let value_delay = parseInt(block.getFieldValue('DELAY_MS'), 10);
|
|
417
|
+
let clearRunning = block.getFieldValue('CLEAR_RUNNING');
|
|
418
|
+
const unit = block.getFieldValue('UNIT');
|
|
429
419
|
if (unit === 'min') {
|
|
430
420
|
value_delay *= 60000;
|
|
431
421
|
} else if (unit === 'sec') {
|
|
432
422
|
value_delay *= 1000;
|
|
433
423
|
}
|
|
434
424
|
|
|
435
|
-
let clearRunning = block.getFieldValue('CLEAR_RUNNING');
|
|
436
425
|
clearRunning = clearRunning === 'TRUE' || clearRunning === 'true' || clearRunning === true;
|
|
437
426
|
|
|
438
|
-
const
|
|
427
|
+
const objectname = main.objects[value_objectid] && main.objects[value_objectid].common && main.objects[value_objectid].common.name ? main.objects[value_objectid].common.name : '';
|
|
428
|
+
let code;
|
|
439
429
|
const withDelay = this.getFieldValue('WITH_DELAY');
|
|
440
430
|
|
|
441
|
-
let code;
|
|
442
431
|
if (withDelay === true || withDelay === 'true' || withDelay === 'TRUE') {
|
|
443
|
-
code =
|
|
432
|
+
code = 'setStateDelayed("' + value_objectid + '"' + (objectname ? '/*' + objectname + '*/' : '') + ', ' + value_value + ', true, ' + value_delay + ', ' + clearRunning + ');\n';
|
|
444
433
|
} else {
|
|
445
|
-
code =
|
|
434
|
+
code = 'setState("' + value_objectid + '"' + (objectname ? '/*' + objectname + '*/' : '') + ', ' + value_value + ', true);\n';
|
|
446
435
|
}
|
|
447
436
|
|
|
448
437
|
return code;
|
|
@@ -492,13 +481,11 @@ Blockly.Blocks['direct'] = {
|
|
|
492
481
|
|
|
493
482
|
Blockly.JavaScript['direct'] = function(block) {
|
|
494
483
|
const oidSrc = Blockly.JavaScript.valueToCode(block, 'OID_SRC', Blockly.JavaScript.ORDER_ATOMIC);
|
|
495
|
-
const oidDest = Blockly.JavaScript.valueToCode(block, 'OID_DST', Blockly.JavaScript.ORDER_ATOMIC);
|
|
496
|
-
|
|
497
484
|
let onlyChanges = block.getFieldValue('ONLY_CHANGES');
|
|
485
|
+
const oidDest = Blockly.JavaScript.valueToCode(block, 'OID_DST', Blockly.JavaScript.ORDER_ATOMIC);
|
|
498
486
|
onlyChanges = onlyChanges === true || onlyChanges === 'true' || onlyChanges === 'TRUE';
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
Blockly.JavaScript.prefixLines(`setState(${oidDest}, obj.state.val);`, Blockly.JavaScript.INDENT) + '\n' +
|
|
487
|
+
return 'on({ id: ' + oidSrc + ', change: "' + (onlyChanges ? 'ne' : 'any') + '" }, (obj) => {\n' +
|
|
488
|
+
Blockly.JavaScript.prefixLines('setState(' + oidDest + ', obj.state.val);', Blockly.JavaScript.INDENT) + '\n' +
|
|
502
489
|
'});\n';
|
|
503
490
|
};
|
|
504
491
|
|
|
@@ -564,16 +551,13 @@ Blockly.Blocks['control_ex'] = {
|
|
|
564
551
|
|
|
565
552
|
Blockly.JavaScript['control_ex'] = function(block) {
|
|
566
553
|
const valueObjectID = Blockly.JavaScript.valueToCode(block, 'OID', Blockly.JavaScript.ORDER_ATOMIC);
|
|
567
|
-
const value
|
|
568
|
-
const valueDelay
|
|
569
|
-
|
|
570
|
-
let
|
|
571
|
-
clearRunning = clearRunning === true || clearRunning === 'true' || clearRunning === 'TRUE';
|
|
572
|
-
|
|
573
|
-
let type = block.getFieldValue('TYPE');
|
|
554
|
+
const value = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ATOMIC);
|
|
555
|
+
const valueDelay = Blockly.JavaScript.valueToCode(block, 'DELAY_MS', Blockly.JavaScript.ORDER_ATOMIC);
|
|
556
|
+
let clearRunning = block.getFieldValue('CLEAR_RUNNING');
|
|
557
|
+
let type = block.getFieldValue('TYPE');
|
|
574
558
|
type = type === true || type === 'true' || type === 'TRUE';
|
|
575
|
-
|
|
576
|
-
return
|
|
559
|
+
clearRunning = clearRunning === true || clearRunning === 'true' || clearRunning === 'TRUE';
|
|
560
|
+
return 'setStateDelayed(' + valueObjectID + ', ' + value + ', ' + type + ', parseInt(((' + valueDelay + ') || "").toString(), 10), ' + clearRunning + ');\n';
|
|
577
561
|
};
|
|
578
562
|
|
|
579
563
|
// --- create state --------------------------------------------------
|
|
@@ -629,109 +613,23 @@ Blockly.JavaScript['create'] = function(block) {
|
|
|
629
613
|
let paraC = '';
|
|
630
614
|
|
|
631
615
|
if (value !== null && value !== '') {
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
if (common !== null && common !== '') {
|
|
636
|
-
if (typeof common === 'object') {
|
|
637
|
-
paraC = `, JSON.parse(${JSON.stringify(common)})`;
|
|
616
|
+
if (isNaN(value)) {
|
|
617
|
+
paraV = ', ' + value;
|
|
638
618
|
} else {
|
|
639
|
-
|
|
619
|
+
paraV = ', ' + value;
|
|
640
620
|
}
|
|
641
621
|
}
|
|
642
622
|
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
};
|
|
647
|
-
|
|
648
|
-
// --- create state ex --------------------------------------------------
|
|
649
|
-
Blockly.System.blocks['create_ex'] =
|
|
650
|
-
'<block type="create_ex">'
|
|
651
|
-
+ ' <value name="NAME">'
|
|
652
|
-
+ ' </value>'
|
|
653
|
-
+ ' <value name="TYPE">'
|
|
654
|
-
+ ' </value>'
|
|
655
|
-
+ ' <value name="VALUE">'
|
|
656
|
-
+ ' </value>'
|
|
657
|
-
+ ' <value name="READABLE">'
|
|
658
|
-
+ ' </value>'
|
|
659
|
-
+ ' <value name="WRITEABLE">'
|
|
660
|
-
+ ' </value>'
|
|
661
|
-
+ ' <value name="STATEMENT">'
|
|
662
|
-
+ ' </value>'
|
|
663
|
-
+ '</block>';
|
|
664
|
-
|
|
665
|
-
Blockly.Blocks['create_ex'] = {
|
|
666
|
-
init: function() {
|
|
667
|
-
this.appendDummyInput()
|
|
668
|
-
.appendField(Blockly.Translate('create'));
|
|
669
|
-
|
|
670
|
-
this.appendDummyInput('NAME')
|
|
671
|
-
.appendField(Blockly.Translate('create_oid'))
|
|
672
|
-
.appendField(new Blockly.FieldTextInput(Blockly.Translate('create_jsState')), 'NAME');
|
|
673
|
-
|
|
674
|
-
this.appendDummyInput('TYPE')
|
|
675
|
-
.appendField(Blockly.Translate('create_type'))
|
|
676
|
-
.appendField(new Blockly.FieldDropdown([
|
|
677
|
-
[Blockly.Translate('create_type_string'), 'string'],
|
|
678
|
-
[Blockly.Translate('create_type_number'), 'number'],
|
|
679
|
-
[Blockly.Translate('create_type_boolean'), 'boolean'],
|
|
680
|
-
[Blockly.Translate('create_type_json'), 'json'],
|
|
681
|
-
//[Blockly.Translate('create_type_object'), 'object'],
|
|
682
|
-
//[Blockly.Translate('create_type_array'), 'array'],
|
|
683
|
-
//[Blockly.Translate('create_type_file'), 'file'],
|
|
684
|
-
]), 'TYPE');
|
|
685
|
-
|
|
686
|
-
this.appendValueInput('VALUE')
|
|
687
|
-
.setCheck(null)
|
|
688
|
-
.appendField(Blockly.Translate('create_init'));
|
|
689
|
-
|
|
690
|
-
this.appendDummyInput('READABLE_INPUT')
|
|
691
|
-
.appendField(Blockly.Translate('create_readable'))
|
|
692
|
-
.appendField(new Blockly.FieldCheckbox('FALSE'), 'READABLE');
|
|
693
|
-
|
|
694
|
-
this.appendDummyInput('WRITEABLE_INPUT')
|
|
695
|
-
.appendField(Blockly.Translate('create_writeable'))
|
|
696
|
-
.appendField(new Blockly.FieldCheckbox('FALSE'), 'WRITEABLE');
|
|
697
|
-
|
|
698
|
-
this.appendStatementInput('STATEMENT')
|
|
699
|
-
.setCheck(null);
|
|
700
|
-
|
|
701
|
-
this.setPreviousStatement(true, null);
|
|
702
|
-
this.setNextStatement(true, null);
|
|
703
|
-
|
|
704
|
-
this.setInputsInline(false);
|
|
705
|
-
this.setColour(Blockly.System.HUE);
|
|
706
|
-
this.setTooltip(Blockly.Translate('create_tooltip'));
|
|
707
|
-
this.setHelpUrl(getHelp('create_help'));
|
|
708
|
-
}
|
|
709
|
-
};
|
|
710
|
-
|
|
711
|
-
Blockly.JavaScript['create_ex'] = function(block) {
|
|
712
|
-
const name = block.getFieldValue('NAME');
|
|
713
|
-
const type = block.getFieldValue('TYPE');
|
|
714
|
-
const value = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ATOMIC);
|
|
715
|
-
const statement = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
|
|
716
|
-
|
|
717
|
-
let paraV = '';
|
|
718
|
-
|
|
719
|
-
if (value !== null && value !== '') {
|
|
720
|
-
if (type === 'number') {
|
|
721
|
-
paraV = `, parseFloat(${value})`;
|
|
623
|
+
if (common !== null && common !== '') {
|
|
624
|
+
if (typeof common === 'object') {
|
|
625
|
+
paraC = ', JSON.parse(' + JSON.stringify(common) + ')';
|
|
722
626
|
} else {
|
|
723
|
-
|
|
627
|
+
paraC = ', JSON.parse(' + common + ')';
|
|
724
628
|
}
|
|
725
629
|
}
|
|
726
630
|
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
let writeable = block.getFieldValue('WRITEABLE');
|
|
731
|
-
writeable = writeable === 'TRUE' || writeable === 'true' || writeable === true;
|
|
732
|
-
|
|
733
|
-
return `createState('${name}'${paraV}, { type: "${type}", read: ${readable}, write: ${writeable} }, async () => {\n` +
|
|
734
|
-
statement +
|
|
631
|
+
return 'createState("' + name + '"' + paraV + paraC + ', async () => {\n' +
|
|
632
|
+
Blockly.JavaScript.prefixLines(statement, Blockly.JavaScript.INDENT) + '\n' +
|
|
735
633
|
'});\n';
|
|
736
634
|
};
|
|
737
635
|
|
|
@@ -785,11 +683,10 @@ Blockly.Blocks['get_value'] = {
|
|
|
785
683
|
Blockly.JavaScript['get_value'] = function(block) {
|
|
786
684
|
const oid = block.getFieldValue('OID');
|
|
787
685
|
const attr = block.getFieldValue('ATTR');
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
return [`(await getObjectAsync('${oid}')).${attr}`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
686
|
+
if (attr === 'type' || attr.indexOf('.') !== -1) {
|
|
687
|
+
return ['(await getObjectAsync("' + oid + '")).' + attr, Blockly.JavaScript.ORDER_ATOMIC];
|
|
791
688
|
} else {
|
|
792
|
-
return [
|
|
689
|
+
return ['getState("' + oid + '").' + attr, Blockly.JavaScript.ORDER_ATOMIC];
|
|
793
690
|
}
|
|
794
691
|
};
|
|
795
692
|
|
|
@@ -806,6 +703,7 @@ Blockly.System.blocks['get_value_var'] =
|
|
|
806
703
|
+ '</block>';
|
|
807
704
|
|
|
808
705
|
Blockly.Blocks['get_value_var'] = {
|
|
706
|
+
// Checkbox.
|
|
809
707
|
init: function() {
|
|
810
708
|
|
|
811
709
|
this.appendDummyInput('ATTR')
|
|
@@ -845,11 +743,10 @@ Blockly.Blocks['get_value_var'] = {
|
|
|
845
743
|
Blockly.JavaScript['get_value_var'] = function(block) {
|
|
846
744
|
const oid = Blockly.JavaScript.valueToCode(block, 'OID', Blockly.JavaScript.ORDER_ATOMIC);
|
|
847
745
|
const attr = block.getFieldValue('ATTR');
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
return [`(await getObjectAsync(${oid})).${attr}`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
746
|
+
if (attr === 'type' || attr.startsWith('common.') || attr.startsWith('native.')) {
|
|
747
|
+
return ['(await getObjectAsync("' + oid + '")).' + attr, Blockly.JavaScript.ORDER_ATOMIC];
|
|
851
748
|
} else {
|
|
852
|
-
return [
|
|
749
|
+
return ['getState(' + oid + ').' + attr, Blockly.JavaScript.ORDER_ATOMIC];
|
|
853
750
|
}
|
|
854
751
|
};
|
|
855
752
|
|
|
@@ -865,6 +762,7 @@ Blockly.System.blocks['get_value_async'] =
|
|
|
865
762
|
+ '</block>';
|
|
866
763
|
|
|
867
764
|
Blockly.Blocks['get_value_async'] = {
|
|
765
|
+
// Checkbox.
|
|
868
766
|
init: function() {
|
|
869
767
|
|
|
870
768
|
this.appendDummyInput('ATTR')
|
|
@@ -910,9 +808,8 @@ Blockly.JavaScript['get_value_async'] = function(block) {
|
|
|
910
808
|
const oid = block.getFieldValue('OID');
|
|
911
809
|
const attr = block.getFieldValue('ATTR');
|
|
912
810
|
const statement = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
return `getObjectAsync('${oid}', async (err, obj) => {\n` +
|
|
811
|
+
if (attr === 'type' || attr.startsWith('common.') || attr.startsWith('native.')) {
|
|
812
|
+
return 'getObjectAsync("' + oid + '", async (err, obj) => {\n' +
|
|
916
813
|
Blockly.JavaScript.prefixLines('let value = obj.' + attr + ';', Blockly.JavaScript.INDENT) + '\n' +
|
|
917
814
|
statement + '\n' +
|
|
918
815
|
'});\n';
|
|
@@ -948,8 +845,7 @@ Blockly.Blocks['field_oid'] = {
|
|
|
948
845
|
|
|
949
846
|
Blockly.JavaScript['field_oid'] = function(block) {
|
|
950
847
|
const oid = block.getFieldValue('oid');
|
|
951
|
-
|
|
952
|
-
return [`'${oid}'`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
848
|
+
return ['\'' + oid + '\'', Blockly.JavaScript.ORDER_ATOMIC];
|
|
953
849
|
};
|
|
954
850
|
|
|
955
851
|
// --- select OID meta--------------------------------------------------
|
|
@@ -976,8 +872,7 @@ Blockly.Blocks['field_oid_meta'] = {
|
|
|
976
872
|
|
|
977
873
|
Blockly.JavaScript['field_oid_meta'] = function(block) {
|
|
978
874
|
const oid = block.getFieldValue('oid');
|
|
979
|
-
|
|
980
|
-
return [`'${oid}'`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
875
|
+
return ['\'' + oid + '\'', Blockly.JavaScript.ORDER_ATOMIC];
|
|
981
876
|
};
|
|
982
877
|
|
|
983
878
|
// --- select OID script--------------------------------------------------
|
|
@@ -1004,8 +899,7 @@ Blockly.Blocks['field_oid_script'] = {
|
|
|
1004
899
|
|
|
1005
900
|
Blockly.JavaScript['field_oid_script'] = function(block) {
|
|
1006
901
|
const oid = block.getFieldValue('oid');
|
|
1007
|
-
|
|
1008
|
-
return [`'${oid}'`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
902
|
+
return ['\'' + oid + '\'', Blockly.JavaScript.ORDER_ATOMIC];
|
|
1009
903
|
};
|
|
1010
904
|
|
|
1011
905
|
// --- get attribute --------------------------------------------------
|
|
@@ -1026,6 +920,8 @@ Blockly.Blocks['get_attr'] = {
|
|
|
1026
920
|
.setCheck(null)
|
|
1027
921
|
.appendField(Blockly.Translate('get_attr_path'));
|
|
1028
922
|
|
|
923
|
+
// this.appendDummyInput()
|
|
924
|
+
|
|
1029
925
|
this.appendValueInput('OBJECT')
|
|
1030
926
|
.appendField(Blockly.Translate('get_attr_by'));
|
|
1031
927
|
|
|
@@ -1040,7 +936,6 @@ Blockly.Blocks['get_attr'] = {
|
|
|
1040
936
|
Blockly.JavaScript['get_attr'] = function(block) {
|
|
1041
937
|
const path = Blockly.JavaScript.valueToCode(block, 'PATH', Blockly.JavaScript.ORDER_ATOMIC);
|
|
1042
938
|
const obj = Blockly.JavaScript.valueToCode(block, 'OBJECT', Blockly.JavaScript.ORDER_ATOMIC);
|
|
1043
|
-
|
|
1044
939
|
return ['getAttr(' + obj + ', ' + path + ')', Blockly.JavaScript.ORDER_ATOMIC];
|
|
1045
940
|
};
|
|
1046
941
|
|
|
@@ -1052,6 +947,7 @@ Blockly.System.blocks['regex'] =
|
|
|
1052
947
|
+ '</block>';
|
|
1053
948
|
|
|
1054
949
|
Blockly.Blocks['regex'] = {
|
|
950
|
+
// Checkbox.
|
|
1055
951
|
init: function() {
|
|
1056
952
|
this.appendDummyInput()
|
|
1057
953
|
.appendField('RegExp');
|
|
@@ -1068,8 +964,7 @@ Blockly.Blocks['regex'] = {
|
|
|
1068
964
|
|
|
1069
965
|
Blockly.JavaScript['regex'] = function(block) {
|
|
1070
966
|
const oid = block.getFieldValue('TEXT');
|
|
1071
|
-
|
|
1072
|
-
return [`new RegExp('${oid}')`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
967
|
+
return ['new RegExp("' + oid + '")', Blockly.JavaScript.ORDER_ATOMIC];
|
|
1073
968
|
};
|
|
1074
969
|
|
|
1075
970
|
// --- selector --------------------------------------------------
|
|
@@ -1080,6 +975,7 @@ Blockly.System.blocks['selector'] =
|
|
|
1080
975
|
+ '</block>';
|
|
1081
976
|
|
|
1082
977
|
Blockly.Blocks['selector'] = {
|
|
978
|
+
// Checkbox.
|
|
1083
979
|
init: function() {
|
|
1084
980
|
|
|
1085
981
|
this.appendDummyInput()
|
|
@@ -1100,6 +996,49 @@ Blockly.Blocks['selector'] = {
|
|
|
1100
996
|
|
|
1101
997
|
Blockly.JavaScript['selector'] = function(block) {
|
|
1102
998
|
const oid = block.getFieldValue('TEXT');
|
|
999
|
+
return ['Array.prototype.slice.apply($("' + oid + '"))', Blockly.JavaScript.ORDER_ATOMIC];
|
|
1000
|
+
};
|
|
1001
|
+
|
|
1002
|
+
// --- Text new line --------------------------------------------------
|
|
1003
|
+
Blockly.Blocks['text_newline'] = {
|
|
1004
|
+
// Checkbox.
|
|
1005
|
+
init: function() {
|
|
1006
|
+
this.appendDummyInput()
|
|
1007
|
+
.appendField(Blockly.Translate('text_newline'));
|
|
1008
|
+
|
|
1009
|
+
this.appendDummyInput()
|
|
1010
|
+
.appendField(new Blockly.FieldDropdown([['\\n', '\\n'], ['\\r\\n', '\\r\\n'], ['\\r', '\\r']]), 'Type');
|
|
1011
|
+
this.setInputsInline(true);
|
|
1012
|
+
this.setColour(Blockly.Msg['TEXTS_HUE']);
|
|
1013
|
+
this.setOutput(true, 'String');
|
|
1014
|
+
this.setTooltip(Blockly.Translate('text_newline_tooltip'));
|
|
1015
|
+
}
|
|
1016
|
+
};
|
|
1017
|
+
|
|
1018
|
+
Blockly.JavaScript['text_newline'] = function(block) {
|
|
1019
|
+
const dropdown_type = block.getFieldValue('Type');
|
|
1020
|
+
return ['\'' + dropdown_type + '\'', Blockly.JavaScript.ORDER_ATOMIC];
|
|
1021
|
+
};
|
|
1022
|
+
|
|
1023
|
+
// --- Round Number to n decimal places -------------------------------
|
|
1024
|
+
Blockly.Blocks['math_rndfixed'] = {
|
|
1025
|
+
init: function() {
|
|
1026
|
+
this.appendValueInput('x')
|
|
1027
|
+
.setCheck('Number')
|
|
1028
|
+
.appendField(Blockly.Translate('math_rndfixed_round'));
|
|
1029
|
+
this.appendDummyInput()
|
|
1030
|
+
.appendField(Blockly.Translate('math_rndfixed_to'))
|
|
1031
|
+
.appendField(new Blockly.FieldNumber(0, 1, 25), 'n')
|
|
1032
|
+
.appendField(Blockly.Translate('math_rndfixed_decplcs'));
|
|
1033
|
+
this.setInputsInline(true);
|
|
1034
|
+
this.setColour(Blockly.Msg['MATH_HUE']);
|
|
1035
|
+
this.setOutput(true, 'Number');
|
|
1036
|
+
this.setTooltip(Blockly.Translate('math_rndfixed_tooltip'));
|
|
1037
|
+
}
|
|
1038
|
+
};
|
|
1103
1039
|
|
|
1104
|
-
|
|
1040
|
+
Blockly.JavaScript['math_rndfixed'] = function(block) {
|
|
1041
|
+
const x = Blockly.JavaScript.valueToCode(block, 'x', Blockly.JavaScript.ORDER_ATOMIC);
|
|
1042
|
+
const exp = Math.pow(10, block.getFieldValue('n'));
|
|
1043
|
+
return ['Math.round(' + x + '*' + exp + ')/' + exp, Blockly.JavaScript.ORDER_ATOMIC];
|
|
1105
1044
|
};
|