iobroker.javascript 7.0.10 → 7.1.1
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 +5 -5
- package/admin/asset-manifest.json +9 -9
- package/admin/google-blockly/blockly-9.3.3.tgz +0 -0
- package/admin/google-blockly/blockly_compressed.js +1704 -1469
- package/admin/google-blockly/blocks_compressed.js +218 -164
- package/admin/google-blockly/javascript_compressed.js +328 -100
- package/admin/google-blockly/msg/js/de.js +70 -64
- package/admin/google-blockly/msg/js/en.js +20 -14
- package/admin/google-blockly/msg/js/es.js +45 -39
- package/admin/google-blockly/msg/js/fr.js +65 -59
- package/admin/google-blockly/msg/js/it.js +25 -19
- package/admin/google-blockly/msg/js/nl.js +61 -55
- package/admin/google-blockly/msg/js/pl.js +52 -46
- package/admin/google-blockly/msg/js/pt.js +36 -30
- package/admin/google-blockly/msg/js/ru.js +47 -41
- package/admin/google-blockly/msg/js/uk.js +17 -13
- package/admin/google-blockly/msg/js/zh-cn.js +92 -86
- package/admin/google-blockly/own/blocks_action.js +4 -4
- package/admin/google-blockly/own/blocks_number.js +4 -3
- package/admin/google-blockly/own/blocks_procedures.js +106 -75
- package/admin/google-blockly/own/blocks_sendto.js +2 -2
- package/admin/google-blockly/own/blocks_switch.js +8 -19
- package/admin/google-blockly/own/blocks_system.js +171 -113
- package/admin/google-blockly/own/blocks_text.js +1 -1
- package/admin/google-blockly/own/blocks_time.js +2 -1
- package/admin/google-blockly/own/blocks_timeout.js +31 -27
- package/admin/google-blockly/own/blocks_trigger.js +62 -44
- package/admin/google-blockly/own/blocks_words.js +3 -3
- package/admin/google-blockly/own/field_cron.js +138 -189
- package/admin/google-blockly/own/field_oid.js +167 -249
- package/admin/google-blockly/own/field_script.js +124 -170
- package/admin/static/js/472.d73f9bde.chunk.js +3 -0
- package/admin/static/js/472.d73f9bde.chunk.js.map +1 -0
- package/admin/static/js/{512.6503862a.chunk.js → 512.e71b2bc3.chunk.js} +3 -3
- package/admin/static/js/512.e71b2bc3.chunk.js.map +1 -0
- package/admin/static/js/98.ecb7402b.chunk.js +2 -0
- package/admin/static/js/98.ecb7402b.chunk.js.map +1 -0
- package/admin/static/js/{main.d5dc2784.js → main.b8836dea.js} +2 -2
- package/admin/static/js/main.b8836dea.js.map +1 -0
- package/admin/tab.html +1 -1
- package/io-package.json +26 -26
- package/main.js +9 -10
- package/package.json +4 -4
- package/admin/blockly-9.0.1.tgz +0 -0
- package/admin/static/js/472.dae7221e.chunk.js +0 -3
- package/admin/static/js/472.dae7221e.chunk.js.map +0 -1
- package/admin/static/js/512.6503862a.chunk.js.map +0 -1
- package/admin/static/js/98.eee0c52f.chunk.js +0 -2
- package/admin/static/js/98.eee0c52f.chunk.js.map +0 -1
- package/admin/static/js/main.d5dc2784.js.map +0 -1
- /package/admin/static/js/{472.dae7221e.chunk.js.LICENSE.txt → 472.d73f9bde.chunk.js.LICENSE.txt} +0 -0
- /package/admin/static/js/{512.6503862a.chunk.js.LICENSE.txt → 512.e71b2bc3.chunk.js.LICENSE.txt} +0 -0
|
@@ -45,7 +45,8 @@ 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
|
-
|
|
48
|
+
|
|
49
|
+
return `console.${dropdown_severity}(${value_text});\n`;
|
|
49
50
|
};
|
|
50
51
|
|
|
51
52
|
// --- comment --------------------------------------------------
|
|
@@ -70,7 +71,8 @@ Blockly.Blocks['comment'] = {
|
|
|
70
71
|
|
|
71
72
|
Blockly.JavaScript['comment'] = function(block) {
|
|
72
73
|
const comment = block.getFieldValue('COMMENT');
|
|
73
|
-
|
|
74
|
+
|
|
75
|
+
return `// ${comment}\n`;
|
|
74
76
|
};
|
|
75
77
|
|
|
76
78
|
// --- control -----------------------------------------------------------
|
|
@@ -109,7 +111,6 @@ Blockly.Blocks['control'] = {
|
|
|
109
111
|
this.sourceBlock_.updateShape_(option === true || option === 'true' || option === 'TRUE');
|
|
110
112
|
}), 'WITH_DELAY');
|
|
111
113
|
|
|
112
|
-
|
|
113
114
|
this.setInputsInline(true);
|
|
114
115
|
this.setPreviousStatement(true, null);
|
|
115
116
|
this.setNextStatement(true, null);
|
|
@@ -120,7 +121,9 @@ Blockly.Blocks['control'] = {
|
|
|
120
121
|
mutationToDom: function() {
|
|
121
122
|
const container = document.createElement('mutation');
|
|
122
123
|
const option = this.getFieldValue('WITH_DELAY');
|
|
124
|
+
|
|
123
125
|
container.setAttribute('delay_input', option === true || option === 'true' || option === 'TRUE');
|
|
126
|
+
|
|
124
127
|
return container;
|
|
125
128
|
},
|
|
126
129
|
domToMutation: function(xmlElement) {
|
|
@@ -141,7 +144,6 @@ Blockly.Blocks['control'] = {
|
|
|
141
144
|
[Blockly.Translate('control_sec'), 'sec'],
|
|
142
145
|
[Blockly.Translate('control_min'), 'min']
|
|
143
146
|
]), 'UNIT');
|
|
144
|
-
//.appendField(Blockly.Translate('control_ms'));
|
|
145
147
|
}
|
|
146
148
|
} else if (inputExists) {
|
|
147
149
|
this.removeInput('DELAY');
|
|
@@ -166,25 +168,26 @@ Blockly.JavaScript['control'] = function(block) {
|
|
|
166
168
|
|
|
167
169
|
Blockly.Msg.VARIABLES_DEFAULT_NAME = 'value';
|
|
168
170
|
|
|
169
|
-
let valueDelay
|
|
170
|
-
const unit
|
|
171
|
+
let valueDelay = parseInt(block.getFieldValue('DELAY_MS'), 10);
|
|
172
|
+
const unit = block.getFieldValue('UNIT');
|
|
171
173
|
if (unit === 'min') {
|
|
172
174
|
valueDelay *= 60000;
|
|
173
175
|
} else if (unit === 'sec') {
|
|
174
176
|
valueDelay *= 1000;
|
|
175
177
|
}
|
|
176
|
-
let clearRunning = block.getFieldValue('CLEAR_RUNNING');
|
|
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;
|
|
180
178
|
|
|
179
|
+
let clearRunning = block.getFieldValue('CLEAR_RUNNING');
|
|
181
180
|
clearRunning = clearRunning === 'TRUE' || clearRunning === 'true' || clearRunning === true;
|
|
181
|
+
|
|
182
|
+
const valueValue = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ATOMIC);
|
|
183
|
+
const objectName = main.objects[valueObjectID] && main.objects[valueObjectID].common && main.objects[valueObjectID].common.name ? main.objects[valueObjectID].common.name : '';
|
|
182
184
|
const withDelay = this.getFieldValue('WITH_DELAY');
|
|
183
185
|
|
|
186
|
+
let code;
|
|
184
187
|
if (withDelay === 'true' || withDelay === true || withDelay === 'TRUE') {
|
|
185
|
-
code =
|
|
188
|
+
code = `setStateDelayed('${valueObjectID}'${objectName ? ` /* ${objectName} */` : ''}, ${valueValue}, ${valueDelay}, ${clearRunning});\n`;
|
|
186
189
|
} else {
|
|
187
|
-
code =
|
|
190
|
+
code = `setState('${valueObjectID}'${objectName ? ` /* ${objectName} */` : ''}, ${valueValue});\n`;
|
|
188
191
|
}
|
|
189
192
|
|
|
190
193
|
return code;
|
|
@@ -230,7 +233,9 @@ Blockly.Blocks['toggle'] = {
|
|
|
230
233
|
mutationToDom: function() {
|
|
231
234
|
const container = document.createElement('mutation');
|
|
232
235
|
const option = this.getFieldValue('WITH_DELAY');
|
|
236
|
+
|
|
233
237
|
container.setAttribute('delay_input', option === true || option === 'true' || option === 'TRUE');
|
|
238
|
+
|
|
234
239
|
return container;
|
|
235
240
|
},
|
|
236
241
|
domToMutation: function(xmlElement) {
|
|
@@ -273,46 +278,49 @@ Blockly.Blocks['toggle'] = {
|
|
|
273
278
|
|
|
274
279
|
Blockly.JavaScript['toggle'] = function(block) {
|
|
275
280
|
const valueObjectID = block.getFieldValue('OID');
|
|
281
|
+
const unit = block.getFieldValue('UNIT');
|
|
276
282
|
|
|
277
283
|
Blockly.Msg.VARIABLES_DEFAULT_NAME = 'value';
|
|
278
284
|
|
|
279
285
|
let valueDelay = parseInt(block.getFieldValue('DELAY_MS'), 10);
|
|
280
|
-
const unit = block.getFieldValue('UNIT');
|
|
281
286
|
if (unit === 'min') {
|
|
282
287
|
valueDelay *= 60000;
|
|
283
288
|
} else if (unit === 'sec') {
|
|
284
289
|
valueDelay *= 1000;
|
|
285
290
|
}
|
|
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
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
|
+
let clearRunning = block.getFieldValue('CLEAR_RUNNING');
|
|
292
296
|
clearRunning = clearRunning === 'TRUE' || clearRunning === 'true' || clearRunning === true;
|
|
293
297
|
|
|
298
|
+
let setCommand;
|
|
294
299
|
if (objectType === 'number') {
|
|
295
300
|
let max = 100;
|
|
296
301
|
let min = 0;
|
|
302
|
+
|
|
297
303
|
if (main.objects[valueObjectID].common.max !== undefined) {
|
|
298
304
|
max = parseFloat(main.objects[valueObjectID].common.max);
|
|
299
305
|
}
|
|
300
306
|
if (main.objects[valueObjectID].common.min !== undefined) {
|
|
301
307
|
min = parseFloat(main.objects[valueObjectID].common.min);
|
|
302
308
|
}
|
|
303
|
-
|
|
309
|
+
|
|
310
|
+
setCommand = `setState('${valueObjectID}'${objectName ? ` /* ${objectName} */` : ''}, state ? (state.val === ${min} ? ${max} : ${min}) : ${max});`;
|
|
304
311
|
} else {
|
|
305
|
-
setCommand =
|
|
312
|
+
setCommand = `setState('${valueObjectID}'${objectName ? ` /* ${objectName} */` : ''}, state ? !state.val : true);`;
|
|
306
313
|
}
|
|
307
314
|
|
|
308
315
|
const withDelay = block.getFieldValue('WITH_DELAY');
|
|
309
316
|
|
|
317
|
+
let code;
|
|
310
318
|
if (withDelay === 'TRUE' || withDelay === 'true' || withDelay === true) {
|
|
311
|
-
code =
|
|
312
|
-
Blockly.JavaScript.prefixLines(
|
|
319
|
+
code = `getState('${valueObjectID}', (err, state) => {\n` +
|
|
320
|
+
Blockly.JavaScript.prefixLines(`setStateDelayed('${valueObjectID}'${objectName ? ` /* ${objectName} */` : ''}, state ? !state.val : true, ${valueDelay}, ${clearRunning});`, Blockly.JavaScript.INDENT) + '\n' +
|
|
313
321
|
'});\n';
|
|
314
322
|
} else {
|
|
315
|
-
code =
|
|
323
|
+
code = `getState('${valueObjectID}', (err, state) => {\n` +
|
|
316
324
|
Blockly.JavaScript.prefixLines(setCommand, Blockly.JavaScript.INDENT) + '\n' +
|
|
317
325
|
'});\n';
|
|
318
326
|
}
|
|
@@ -366,7 +374,9 @@ Blockly.Blocks['update'] = {
|
|
|
366
374
|
mutationToDom: function() {
|
|
367
375
|
const container = document.createElement('mutation');
|
|
368
376
|
const option = this.getFieldValue('WITH_DELAY');
|
|
377
|
+
|
|
369
378
|
container.setAttribute('delay_input', option === true || option === 'true' || option === 'TRUE');
|
|
379
|
+
|
|
370
380
|
return container;
|
|
371
381
|
},
|
|
372
382
|
domToMutation: function(xmlElement) {
|
|
@@ -413,25 +423,26 @@ Blockly.JavaScript['update'] = function(block) {
|
|
|
413
423
|
Blockly.Msg.VARIABLES_DEFAULT_NAME = 'value';
|
|
414
424
|
|
|
415
425
|
const value_value = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ATOMIC);
|
|
416
|
-
let value_delay = parseInt(block.getFieldValue('DELAY_MS'), 10);
|
|
417
|
-
let clearRunning = block.getFieldValue('CLEAR_RUNNING');
|
|
418
426
|
const unit = block.getFieldValue('UNIT');
|
|
427
|
+
|
|
428
|
+
let value_delay = parseInt(block.getFieldValue('DELAY_MS'), 10);
|
|
419
429
|
if (unit === 'min') {
|
|
420
430
|
value_delay *= 60000;
|
|
421
431
|
} else if (unit === 'sec') {
|
|
422
432
|
value_delay *= 1000;
|
|
423
433
|
}
|
|
424
434
|
|
|
435
|
+
let clearRunning = block.getFieldValue('CLEAR_RUNNING');
|
|
425
436
|
clearRunning = clearRunning === 'TRUE' || clearRunning === 'true' || clearRunning === true;
|
|
426
437
|
|
|
427
|
-
const
|
|
428
|
-
let code;
|
|
438
|
+
const objectName = main.objects[value_objectid] && main.objects[value_objectid].common && main.objects[value_objectid].common.name ? main.objects[value_objectid].common.name : '';
|
|
429
439
|
const withDelay = this.getFieldValue('WITH_DELAY');
|
|
430
440
|
|
|
441
|
+
let code;
|
|
431
442
|
if (withDelay === true || withDelay === 'true' || withDelay === 'TRUE') {
|
|
432
|
-
code =
|
|
443
|
+
code = `setStateDelayed('${value_objectid}'${objectName ? ` /* ${objectName} */` : ''}, ${value_value}, true, ${value_delay}, ${clearRunning});\n`;
|
|
433
444
|
} else {
|
|
434
|
-
code =
|
|
445
|
+
code = `setState('${value_objectid}'${objectName ? ` /* ${objectName} */` : ''}, ${value_value}, true);\n`;
|
|
435
446
|
}
|
|
436
447
|
|
|
437
448
|
return code;
|
|
@@ -481,11 +492,13 @@ Blockly.Blocks['direct'] = {
|
|
|
481
492
|
|
|
482
493
|
Blockly.JavaScript['direct'] = function(block) {
|
|
483
494
|
const oidSrc = Blockly.JavaScript.valueToCode(block, 'OID_SRC', Blockly.JavaScript.ORDER_ATOMIC);
|
|
484
|
-
let onlyChanges = block.getFieldValue('ONLY_CHANGES');
|
|
485
495
|
const oidDest = Blockly.JavaScript.valueToCode(block, 'OID_DST', Blockly.JavaScript.ORDER_ATOMIC);
|
|
496
|
+
|
|
497
|
+
let onlyChanges = block.getFieldValue('ONLY_CHANGES');
|
|
486
498
|
onlyChanges = onlyChanges === true || onlyChanges === 'true' || onlyChanges === 'TRUE';
|
|
487
|
-
|
|
488
|
-
|
|
499
|
+
|
|
500
|
+
return `on({ id: ${oidSrc}, change: '${onlyChanges ? 'ne' : 'any'}' }, (obj) => {\n` +
|
|
501
|
+
Blockly.JavaScript.prefixLines(`setState(${oidDest}, obj.state.val);`, Blockly.JavaScript.INDENT) + '\n' +
|
|
489
502
|
'});\n';
|
|
490
503
|
};
|
|
491
504
|
|
|
@@ -551,13 +564,16 @@ Blockly.Blocks['control_ex'] = {
|
|
|
551
564
|
|
|
552
565
|
Blockly.JavaScript['control_ex'] = function(block) {
|
|
553
566
|
const valueObjectID = Blockly.JavaScript.valueToCode(block, 'OID', Blockly.JavaScript.ORDER_ATOMIC);
|
|
554
|
-
const value
|
|
555
|
-
const valueDelay
|
|
556
|
-
|
|
557
|
-
let
|
|
558
|
-
type = type === true || type === 'true' || type === 'TRUE';
|
|
567
|
+
const value = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ATOMIC);
|
|
568
|
+
const valueDelay = Blockly.JavaScript.valueToCode(block, 'DELAY_MS', Blockly.JavaScript.ORDER_ATOMIC);
|
|
569
|
+
|
|
570
|
+
let clearRunning = block.getFieldValue('CLEAR_RUNNING');
|
|
559
571
|
clearRunning = clearRunning === true || clearRunning === 'true' || clearRunning === 'TRUE';
|
|
560
|
-
|
|
572
|
+
|
|
573
|
+
let type = block.getFieldValue('TYPE');
|
|
574
|
+
type = type === true || type === 'true' || type === 'TRUE';
|
|
575
|
+
|
|
576
|
+
return `setStateDelayed(${valueObjectID}, ${value}, ${type}, parseInt(((${valueDelay}) || '').toString(), 10), ${clearRunning});\n`;
|
|
561
577
|
};
|
|
562
578
|
|
|
563
579
|
// --- create state --------------------------------------------------
|
|
@@ -613,23 +629,109 @@ Blockly.JavaScript['create'] = function(block) {
|
|
|
613
629
|
let paraC = '';
|
|
614
630
|
|
|
615
631
|
if (value !== null && value !== '') {
|
|
616
|
-
|
|
617
|
-
paraV = ', ' + value;
|
|
618
|
-
} else {
|
|
619
|
-
paraV = ', ' + value;
|
|
620
|
-
}
|
|
632
|
+
paraV = ', ' + value;
|
|
621
633
|
}
|
|
622
634
|
|
|
623
635
|
if (common !== null && common !== '') {
|
|
624
636
|
if (typeof common === 'object') {
|
|
625
|
-
paraC =
|
|
637
|
+
paraC = `, JSON.parse(${JSON.stringify(common)})`;
|
|
626
638
|
} else {
|
|
627
|
-
paraC =
|
|
639
|
+
paraC = `, JSON.parse(${common})`;
|
|
628
640
|
}
|
|
629
641
|
}
|
|
630
642
|
|
|
631
|
-
return
|
|
632
|
-
|
|
643
|
+
return `createState('${name}'${paraV}${paraC}, async () => {\n` +
|
|
644
|
+
statement +
|
|
645
|
+
'});\n';
|
|
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})`;
|
|
722
|
+
} else {
|
|
723
|
+
paraV = ', ' + value;
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
let readable = block.getFieldValue('READABLE');
|
|
728
|
+
readable = readable === 'TRUE' || readable === 'true' || readable === true;
|
|
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 +
|
|
633
735
|
'});\n';
|
|
634
736
|
};
|
|
635
737
|
|
|
@@ -683,10 +785,11 @@ Blockly.Blocks['get_value'] = {
|
|
|
683
785
|
Blockly.JavaScript['get_value'] = function(block) {
|
|
684
786
|
const oid = block.getFieldValue('OID');
|
|
685
787
|
const attr = block.getFieldValue('ATTR');
|
|
686
|
-
|
|
687
|
-
|
|
788
|
+
|
|
789
|
+
if (attr === 'type' || attr.startsWith('common.')) {
|
|
790
|
+
return [`(await getObjectAsync('${oid}')).${attr}`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
688
791
|
} else {
|
|
689
|
-
return [
|
|
792
|
+
return [`getState('${oid}').${attr}`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
690
793
|
}
|
|
691
794
|
};
|
|
692
795
|
|
|
@@ -703,9 +806,7 @@ Blockly.System.blocks['get_value_var'] =
|
|
|
703
806
|
+ '</block>';
|
|
704
807
|
|
|
705
808
|
Blockly.Blocks['get_value_var'] = {
|
|
706
|
-
// Checkbox.
|
|
707
809
|
init: function() {
|
|
708
|
-
|
|
709
810
|
this.appendDummyInput('ATTR')
|
|
710
811
|
.appendField(new Blockly.FieldDropdown([
|
|
711
812
|
[Blockly.Translate('get_value_val'), 'val'],
|
|
@@ -743,10 +844,11 @@ Blockly.Blocks['get_value_var'] = {
|
|
|
743
844
|
Blockly.JavaScript['get_value_var'] = function(block) {
|
|
744
845
|
const oid = Blockly.JavaScript.valueToCode(block, 'OID', Blockly.JavaScript.ORDER_ATOMIC);
|
|
745
846
|
const attr = block.getFieldValue('ATTR');
|
|
746
|
-
|
|
747
|
-
|
|
847
|
+
|
|
848
|
+
if (attr === 'type' || attr.startsWith('common.')) {
|
|
849
|
+
return [`(await getObjectAsync(${oid})).${attr}`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
748
850
|
} else {
|
|
749
|
-
return [
|
|
851
|
+
return [`getState(${oid}).${attr}`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
750
852
|
}
|
|
751
853
|
};
|
|
752
854
|
|
|
@@ -762,9 +864,7 @@ Blockly.System.blocks['get_value_async'] =
|
|
|
762
864
|
+ '</block>';
|
|
763
865
|
|
|
764
866
|
Blockly.Blocks['get_value_async'] = {
|
|
765
|
-
// Checkbox.
|
|
766
867
|
init: function() {
|
|
767
|
-
|
|
768
868
|
this.appendDummyInput('ATTR')
|
|
769
869
|
.appendField(new Blockly.FieldDropdown([
|
|
770
870
|
[Blockly.Translate('get_value_val'), 'val'],
|
|
@@ -808,8 +908,9 @@ Blockly.JavaScript['get_value_async'] = function(block) {
|
|
|
808
908
|
const oid = block.getFieldValue('OID');
|
|
809
909
|
const attr = block.getFieldValue('ATTR');
|
|
810
910
|
const statement = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
|
|
811
|
-
|
|
812
|
-
|
|
911
|
+
|
|
912
|
+
if (attr === 'type' || attr.startsWith('common.')) {
|
|
913
|
+
return `getObjectAsync('${oid}', async (err, obj) => {\n` +
|
|
813
914
|
Blockly.JavaScript.prefixLines('let value = obj.' + attr + ';', Blockly.JavaScript.INDENT) + '\n' +
|
|
814
915
|
statement + '\n' +
|
|
815
916
|
'});\n';
|
|
@@ -845,7 +946,8 @@ Blockly.Blocks['field_oid'] = {
|
|
|
845
946
|
|
|
846
947
|
Blockly.JavaScript['field_oid'] = function(block) {
|
|
847
948
|
const oid = block.getFieldValue('oid');
|
|
848
|
-
|
|
949
|
+
|
|
950
|
+
return [`'${oid}'`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
849
951
|
};
|
|
850
952
|
|
|
851
953
|
// --- select OID meta--------------------------------------------------
|
|
@@ -872,7 +974,8 @@ Blockly.Blocks['field_oid_meta'] = {
|
|
|
872
974
|
|
|
873
975
|
Blockly.JavaScript['field_oid_meta'] = function(block) {
|
|
874
976
|
const oid = block.getFieldValue('oid');
|
|
875
|
-
|
|
977
|
+
|
|
978
|
+
return [`'${oid}'`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
876
979
|
};
|
|
877
980
|
|
|
878
981
|
// --- select OID script--------------------------------------------------
|
|
@@ -899,7 +1002,8 @@ Blockly.Blocks['field_oid_script'] = {
|
|
|
899
1002
|
|
|
900
1003
|
Blockly.JavaScript['field_oid_script'] = function(block) {
|
|
901
1004
|
const oid = block.getFieldValue('oid');
|
|
902
|
-
|
|
1005
|
+
|
|
1006
|
+
return [`'${oid}'`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
903
1007
|
};
|
|
904
1008
|
|
|
905
1009
|
// --- get attribute --------------------------------------------------
|
|
@@ -920,8 +1024,6 @@ Blockly.Blocks['get_attr'] = {
|
|
|
920
1024
|
.setCheck(null)
|
|
921
1025
|
.appendField(Blockly.Translate('get_attr_path'));
|
|
922
1026
|
|
|
923
|
-
// this.appendDummyInput()
|
|
924
|
-
|
|
925
1027
|
this.appendValueInput('OBJECT')
|
|
926
1028
|
.appendField(Blockly.Translate('get_attr_by'));
|
|
927
1029
|
|
|
@@ -936,6 +1038,7 @@ Blockly.Blocks['get_attr'] = {
|
|
|
936
1038
|
Blockly.JavaScript['get_attr'] = function(block) {
|
|
937
1039
|
const path = Blockly.JavaScript.valueToCode(block, 'PATH', Blockly.JavaScript.ORDER_ATOMIC);
|
|
938
1040
|
const obj = Blockly.JavaScript.valueToCode(block, 'OBJECT', Blockly.JavaScript.ORDER_ATOMIC);
|
|
1041
|
+
|
|
939
1042
|
return ['getAttr(' + obj + ', ' + path + ')', Blockly.JavaScript.ORDER_ATOMIC];
|
|
940
1043
|
};
|
|
941
1044
|
|
|
@@ -947,7 +1050,6 @@ Blockly.System.blocks['regex'] =
|
|
|
947
1050
|
+ '</block>';
|
|
948
1051
|
|
|
949
1052
|
Blockly.Blocks['regex'] = {
|
|
950
|
-
// Checkbox.
|
|
951
1053
|
init: function() {
|
|
952
1054
|
this.appendDummyInput()
|
|
953
1055
|
.appendField('RegExp');
|
|
@@ -964,7 +1066,8 @@ Blockly.Blocks['regex'] = {
|
|
|
964
1066
|
|
|
965
1067
|
Blockly.JavaScript['regex'] = function(block) {
|
|
966
1068
|
const oid = block.getFieldValue('TEXT');
|
|
967
|
-
|
|
1069
|
+
|
|
1070
|
+
return [`new RegExp('${oid}')`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
968
1071
|
};
|
|
969
1072
|
|
|
970
1073
|
// --- selector --------------------------------------------------
|
|
@@ -975,9 +1078,7 @@ Blockly.System.blocks['selector'] =
|
|
|
975
1078
|
+ '</block>';
|
|
976
1079
|
|
|
977
1080
|
Blockly.Blocks['selector'] = {
|
|
978
|
-
// Checkbox.
|
|
979
1081
|
init: function() {
|
|
980
|
-
|
|
981
1082
|
this.appendDummyInput()
|
|
982
1083
|
.appendField(Blockly.Translate('selector') + ' $(');
|
|
983
1084
|
|
|
@@ -996,49 +1097,6 @@ Blockly.Blocks['selector'] = {
|
|
|
996
1097
|
|
|
997
1098
|
Blockly.JavaScript['selector'] = function(block) {
|
|
998
1099
|
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
1100
|
|
|
1023
|
-
|
|
1024
|
-
|
|
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
|
-
};
|
|
1039
|
-
|
|
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];
|
|
1044
|
-
};
|
|
1101
|
+
return [`Array.prototype.slice.apply($('${oid}'))`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
1102
|
+
};
|
|
@@ -18,6 +18,6 @@ Blockly.Blocks['text_newline'] = {
|
|
|
18
18
|
};
|
|
19
19
|
|
|
20
20
|
Blockly.JavaScript['text_newline'] = function(block) {
|
|
21
|
-
|
|
21
|
+
const dropdown_type = block.getFieldValue('Type');
|
|
22
22
|
return ['\'' + dropdown_type + '\'', Blockly.JavaScript.ORDER_ATOMIC];
|
|
23
23
|
};
|
|
@@ -486,5 +486,6 @@ Blockly.Blocks['time_astro'] = {
|
|
|
486
486
|
Blockly.JavaScript['time_astro'] = function(block) {
|
|
487
487
|
const type = block.getFieldValue('TYPE');
|
|
488
488
|
const offset = parseFloat(block.getFieldValue('OFFSET'));
|
|
489
|
-
|
|
489
|
+
|
|
490
|
+
return [`getAstroDate('${type}', undefined, ${offset})`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
490
491
|
};
|