iobroker.javascript 7.0.7 → 7.0.8
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 +2 -1
- package/admin/asset-manifest.json +5 -5
- 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_other.js +103 -0
- 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 +113 -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 +8 -9
- 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/98.bf3dfa2b.chunk.js +2 -0
- package/admin/static/js/98.bf3dfa2b.chunk.js.map +1 -0
- package/admin/static/js/{main.d86fb9de.js → main.d9e7d255.js} +2 -2
- package/admin/static/js/{main.d86fb9de.js.map → main.d9e7d255.js.map} +1 -1
- package/admin/tab.html +1 -1
- package/io-package.json +14 -14
- package/package.json +1 -1
- package/admin/google-blockly/own/blocks_logic.js +0 -64
- package/admin/google-blockly/own/blocks_number.js +0 -25
- package/admin/google-blockly/own/blocks_text.js +0 -23
- package/admin/static/js/98.f78be4fc.chunk.js +0 -2
- package/admin/static/js/98.f78be4fc.chunk.js.map +0 -1
|
@@ -9,6 +9,10 @@ if (typeof goog !== 'undefined') {
|
|
|
9
9
|
Blockly.CustomBlocks = Blockly.CustomBlocks || [];
|
|
10
10
|
Blockly.CustomBlocks.push('System');
|
|
11
11
|
|
|
12
|
+
function getHelp(word) {
|
|
13
|
+
return 'https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#' + Blockly.Words[word][systemLang];
|
|
14
|
+
}
|
|
15
|
+
|
|
12
16
|
Blockly.System = {
|
|
13
17
|
HUE: 210,
|
|
14
18
|
blocks: {}
|
|
@@ -45,8 +49,7 @@ Blockly.Blocks['debug'] = {
|
|
|
45
49
|
Blockly.JavaScript['debug'] = function(block) {
|
|
46
50
|
const value_text = Blockly.JavaScript.valueToCode(block, 'TEXT', Blockly.JavaScript.ORDER_ATOMIC);
|
|
47
51
|
const dropdown_severity = block.getFieldValue('Severity');
|
|
48
|
-
|
|
49
|
-
return `console.${dropdown_severity}(${value_text});\n`;
|
|
52
|
+
return 'console.' + dropdown_severity + '(' + value_text + ');\n';
|
|
50
53
|
};
|
|
51
54
|
|
|
52
55
|
// --- comment --------------------------------------------------
|
|
@@ -71,8 +74,7 @@ Blockly.Blocks['comment'] = {
|
|
|
71
74
|
|
|
72
75
|
Blockly.JavaScript['comment'] = function(block) {
|
|
73
76
|
const comment = block.getFieldValue('COMMENT');
|
|
74
|
-
|
|
75
|
-
return `// ${comment}\n`;
|
|
77
|
+
return '// ' + comment + '\n';
|
|
76
78
|
};
|
|
77
79
|
|
|
78
80
|
// --- control -----------------------------------------------------------
|
|
@@ -111,6 +113,7 @@ Blockly.Blocks['control'] = {
|
|
|
111
113
|
this.sourceBlock_.updateShape_(option === true || option === 'true' || option === 'TRUE');
|
|
112
114
|
}), 'WITH_DELAY');
|
|
113
115
|
|
|
116
|
+
|
|
114
117
|
this.setInputsInline(true);
|
|
115
118
|
this.setPreviousStatement(true, null);
|
|
116
119
|
this.setNextStatement(true, null);
|
|
@@ -121,9 +124,7 @@ Blockly.Blocks['control'] = {
|
|
|
121
124
|
mutationToDom: function() {
|
|
122
125
|
const container = document.createElement('mutation');
|
|
123
126
|
const option = this.getFieldValue('WITH_DELAY');
|
|
124
|
-
|
|
125
127
|
container.setAttribute('delay_input', option === true || option === 'true' || option === 'TRUE');
|
|
126
|
-
|
|
127
128
|
return container;
|
|
128
129
|
},
|
|
129
130
|
domToMutation: function(xmlElement) {
|
|
@@ -144,6 +145,7 @@ Blockly.Blocks['control'] = {
|
|
|
144
145
|
[Blockly.Translate('control_sec'), 'sec'],
|
|
145
146
|
[Blockly.Translate('control_min'), 'min']
|
|
146
147
|
]), 'UNIT');
|
|
148
|
+
//.appendField(Blockly.Translate('control_ms'));
|
|
147
149
|
}
|
|
148
150
|
} else if (inputExists) {
|
|
149
151
|
this.removeInput('DELAY');
|
|
@@ -168,26 +170,25 @@ Blockly.JavaScript['control'] = function(block) {
|
|
|
168
170
|
|
|
169
171
|
Blockly.Msg.VARIABLES_DEFAULT_NAME = 'value';
|
|
170
172
|
|
|
171
|
-
let valueDelay
|
|
172
|
-
const unit
|
|
173
|
+
let valueDelay = parseInt(block.getFieldValue('DELAY_MS'), 10);
|
|
174
|
+
const unit = block.getFieldValue('UNIT');
|
|
173
175
|
if (unit === 'min') {
|
|
174
176
|
valueDelay *= 60000;
|
|
175
177
|
} else if (unit === 'sec') {
|
|
176
178
|
valueDelay *= 1000;
|
|
177
179
|
}
|
|
178
|
-
|
|
179
180
|
let clearRunning = block.getFieldValue('CLEAR_RUNNING');
|
|
180
|
-
|
|
181
|
+
const valueValue = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ATOMIC);
|
|
182
|
+
const objectName = main.objects[valueObjectID] && main.objects[valueObjectID].common && main.objects[valueObjectID].common.name ? main.objects[valueObjectID].common.name : '';
|
|
183
|
+
let code;
|
|
181
184
|
|
|
182
|
-
|
|
183
|
-
const objectName = main.objects[valueObjectID] && main.objects[valueObjectID].common && main.objects[valueObjectID].common.name ? main.objects[valueObjectID].common.name : '';
|
|
185
|
+
clearRunning = clearRunning === 'TRUE' || clearRunning === 'true' || clearRunning === true;
|
|
184
186
|
const withDelay = this.getFieldValue('WITH_DELAY');
|
|
185
187
|
|
|
186
|
-
let code;
|
|
187
188
|
if (withDelay === 'true' || withDelay === true || withDelay === 'TRUE') {
|
|
188
|
-
code =
|
|
189
|
+
code = 'setStateDelayed("' + valueObjectID + '"' + (objectName ? '/*' + objectName + '*/' : '') + ', ' + valueValue + ', ' + valueDelay + ', ' + clearRunning + ');\n';
|
|
189
190
|
} else {
|
|
190
|
-
code =
|
|
191
|
+
code = 'setState("' + valueObjectID + '"' + (objectName ? '/*' + objectName + '*/' : '') + ', ' + valueValue + ');\n';
|
|
191
192
|
}
|
|
192
193
|
|
|
193
194
|
return code;
|
|
@@ -233,9 +234,7 @@ Blockly.Blocks['toggle'] = {
|
|
|
233
234
|
mutationToDom: function() {
|
|
234
235
|
const container = document.createElement('mutation');
|
|
235
236
|
const option = this.getFieldValue('WITH_DELAY');
|
|
236
|
-
|
|
237
237
|
container.setAttribute('delay_input', option === true || option === 'true' || option === 'TRUE');
|
|
238
|
-
|
|
239
238
|
return container;
|
|
240
239
|
},
|
|
241
240
|
domToMutation: function(xmlElement) {
|
|
@@ -278,49 +277,46 @@ Blockly.Blocks['toggle'] = {
|
|
|
278
277
|
|
|
279
278
|
Blockly.JavaScript['toggle'] = function(block) {
|
|
280
279
|
const valueObjectID = block.getFieldValue('OID');
|
|
281
|
-
const unit = block.getFieldValue('UNIT');
|
|
282
280
|
|
|
283
281
|
Blockly.Msg.VARIABLES_DEFAULT_NAME = 'value';
|
|
284
282
|
|
|
285
283
|
let valueDelay = parseInt(block.getFieldValue('DELAY_MS'), 10);
|
|
284
|
+
const unit = block.getFieldValue('UNIT');
|
|
286
285
|
if (unit === 'min') {
|
|
287
286
|
valueDelay *= 60000;
|
|
288
287
|
} else if (unit === 'sec') {
|
|
289
288
|
valueDelay *= 1000;
|
|
290
289
|
}
|
|
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
290
|
let clearRunning = block.getFieldValue('CLEAR_RUNNING');
|
|
291
|
+
const objectName = main.objects[valueObjectID] && main.objects[valueObjectID].common && main.objects[valueObjectID].common.name ? main.objects[valueObjectID].common.name : '';
|
|
292
|
+
const objectType = main.objects[valueObjectID] && main.objects[valueObjectID].common && main.objects[valueObjectID].common.type ? main.objects[valueObjectID].common.type : 'boolean';
|
|
293
|
+
let code;
|
|
294
|
+
let setCommand;
|
|
295
|
+
|
|
296
296
|
clearRunning = clearRunning === 'TRUE' || clearRunning === 'true' || clearRunning === true;
|
|
297
297
|
|
|
298
|
-
let setCommand;
|
|
299
298
|
if (objectType === 'number') {
|
|
300
299
|
let max = 100;
|
|
301
300
|
let min = 0;
|
|
302
|
-
|
|
303
301
|
if (main.objects[valueObjectID].common.max !== undefined) {
|
|
304
302
|
max = parseFloat(main.objects[valueObjectID].common.max);
|
|
305
303
|
}
|
|
306
304
|
if (main.objects[valueObjectID].common.min !== undefined) {
|
|
307
305
|
min = parseFloat(main.objects[valueObjectID].common.min);
|
|
308
306
|
}
|
|
309
|
-
|
|
310
|
-
setCommand = `setState('${valueObjectID}'${objectName ? ` /* ${objectName} */` : ''}, state ? (state.val === ${min} ? ${max} : ${min}) : ${max});`;
|
|
307
|
+
setCommand = 'setState("' + valueObjectID + '"' + (objectName ? '/*' + objectName + '*/' : '') + ', state ? (state.val == ' + min + ' ? ' + max + ' : ' + min + ') : ' + max + ');';
|
|
311
308
|
} else {
|
|
312
|
-
setCommand =
|
|
309
|
+
setCommand = 'setState("' + valueObjectID + '"' + (objectName ? '/*' + objectName + '*/' : '') + ', state ? !state.val : true);';
|
|
313
310
|
}
|
|
314
311
|
|
|
315
312
|
const withDelay = block.getFieldValue('WITH_DELAY');
|
|
316
313
|
|
|
317
|
-
let code;
|
|
318
314
|
if (withDelay === 'TRUE' || withDelay === 'true' || withDelay === true) {
|
|
319
|
-
code =
|
|
320
|
-
Blockly.JavaScript.prefixLines(
|
|
315
|
+
code = 'getState("' + valueObjectID + '", (err, state) => {\n' +
|
|
316
|
+
Blockly.JavaScript.prefixLines('setStateDelayed("' + valueObjectID + '"' + (objectName ? '/*' + objectName + '*/' : '') + ', state ? !state.val : true, ' + valueDelay + ', ' + clearRunning + ');', Blockly.JavaScript.INDENT) + '\n' +
|
|
321
317
|
'});\n';
|
|
322
318
|
} else {
|
|
323
|
-
code =
|
|
319
|
+
code = 'getState("' + valueObjectID + '", (err, state) => {\n' +
|
|
324
320
|
Blockly.JavaScript.prefixLines(setCommand, Blockly.JavaScript.INDENT) + '\n' +
|
|
325
321
|
'});\n';
|
|
326
322
|
}
|
|
@@ -374,9 +370,7 @@ Blockly.Blocks['update'] = {
|
|
|
374
370
|
mutationToDom: function() {
|
|
375
371
|
const container = document.createElement('mutation');
|
|
376
372
|
const option = this.getFieldValue('WITH_DELAY');
|
|
377
|
-
|
|
378
373
|
container.setAttribute('delay_input', option === true || option === 'true' || option === 'TRUE');
|
|
379
|
-
|
|
380
374
|
return container;
|
|
381
375
|
},
|
|
382
376
|
domToMutation: function(xmlElement) {
|
|
@@ -423,26 +417,25 @@ Blockly.JavaScript['update'] = function(block) {
|
|
|
423
417
|
Blockly.Msg.VARIABLES_DEFAULT_NAME = 'value';
|
|
424
418
|
|
|
425
419
|
const value_value = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ATOMIC);
|
|
426
|
-
const unit = block.getFieldValue('UNIT');
|
|
427
|
-
|
|
428
420
|
let value_delay = parseInt(block.getFieldValue('DELAY_MS'), 10);
|
|
421
|
+
let clearRunning = block.getFieldValue('CLEAR_RUNNING');
|
|
422
|
+
const unit = block.getFieldValue('UNIT');
|
|
429
423
|
if (unit === 'min') {
|
|
430
424
|
value_delay *= 60000;
|
|
431
425
|
} else if (unit === 'sec') {
|
|
432
426
|
value_delay *= 1000;
|
|
433
427
|
}
|
|
434
428
|
|
|
435
|
-
let clearRunning = block.getFieldValue('CLEAR_RUNNING');
|
|
436
429
|
clearRunning = clearRunning === 'TRUE' || clearRunning === 'true' || clearRunning === true;
|
|
437
430
|
|
|
438
|
-
const
|
|
431
|
+
const objectname = main.objects[value_objectid] && main.objects[value_objectid].common && main.objects[value_objectid].common.name ? main.objects[value_objectid].common.name : '';
|
|
432
|
+
let code;
|
|
439
433
|
const withDelay = this.getFieldValue('WITH_DELAY');
|
|
440
434
|
|
|
441
|
-
let code;
|
|
442
435
|
if (withDelay === true || withDelay === 'true' || withDelay === 'TRUE') {
|
|
443
|
-
code =
|
|
436
|
+
code = 'setStateDelayed("' + value_objectid + '"' + (objectname ? '/*' + objectname + '*/' : '') + ', ' + value_value + ', true, ' + value_delay + ', ' + clearRunning + ');\n';
|
|
444
437
|
} else {
|
|
445
|
-
code =
|
|
438
|
+
code = 'setState("' + value_objectid + '"' + (objectname ? '/*' + objectname + '*/' : '') + ', ' + value_value + ', true);\n';
|
|
446
439
|
}
|
|
447
440
|
|
|
448
441
|
return code;
|
|
@@ -492,13 +485,11 @@ Blockly.Blocks['direct'] = {
|
|
|
492
485
|
|
|
493
486
|
Blockly.JavaScript['direct'] = function(block) {
|
|
494
487
|
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
488
|
let onlyChanges = block.getFieldValue('ONLY_CHANGES');
|
|
489
|
+
const oidDest = Blockly.JavaScript.valueToCode(block, 'OID_DST', Blockly.JavaScript.ORDER_ATOMIC);
|
|
498
490
|
onlyChanges = onlyChanges === true || onlyChanges === 'true' || onlyChanges === 'TRUE';
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
Blockly.JavaScript.prefixLines(`setState(${oidDest}, obj.state.val);`, Blockly.JavaScript.INDENT) + '\n' +
|
|
491
|
+
return 'on({ id: ' + oidSrc + ', change: "' + (onlyChanges ? 'ne' : 'any') + '" }, (obj) => {\n' +
|
|
492
|
+
Blockly.JavaScript.prefixLines('setState(' + oidDest + ', obj.state.val);', Blockly.JavaScript.INDENT) + '\n' +
|
|
502
493
|
'});\n';
|
|
503
494
|
};
|
|
504
495
|
|
|
@@ -564,16 +555,13 @@ Blockly.Blocks['control_ex'] = {
|
|
|
564
555
|
|
|
565
556
|
Blockly.JavaScript['control_ex'] = function(block) {
|
|
566
557
|
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');
|
|
558
|
+
const value = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ATOMIC);
|
|
559
|
+
const valueDelay = Blockly.JavaScript.valueToCode(block, 'DELAY_MS', Blockly.JavaScript.ORDER_ATOMIC);
|
|
560
|
+
let clearRunning = block.getFieldValue('CLEAR_RUNNING');
|
|
561
|
+
let type = block.getFieldValue('TYPE');
|
|
574
562
|
type = type === true || type === 'true' || type === 'TRUE';
|
|
575
|
-
|
|
576
|
-
return
|
|
563
|
+
clearRunning = clearRunning === true || clearRunning === 'true' || clearRunning === 'TRUE';
|
|
564
|
+
return 'setStateDelayed(' + valueObjectID + ', ' + value + ', ' + type + ', parseInt(((' + valueDelay + ') || "").toString(), 10), ' + clearRunning + ');\n';
|
|
577
565
|
};
|
|
578
566
|
|
|
579
567
|
// --- create state --------------------------------------------------
|
|
@@ -629,109 +617,23 @@ Blockly.JavaScript['create'] = function(block) {
|
|
|
629
617
|
let paraC = '';
|
|
630
618
|
|
|
631
619
|
if (value !== null && value !== '') {
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
if (common !== null && common !== '') {
|
|
636
|
-
if (typeof common === 'object') {
|
|
637
|
-
paraC = `, JSON.parse(${JSON.stringify(common)})`;
|
|
620
|
+
if (isNaN(value)) {
|
|
621
|
+
paraV = ', ' + value;
|
|
638
622
|
} else {
|
|
639
|
-
|
|
623
|
+
paraV = ', ' + value;
|
|
640
624
|
}
|
|
641
625
|
}
|
|
642
626
|
|
|
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})`;
|
|
627
|
+
if (common !== null && common !== '') {
|
|
628
|
+
if (typeof common === 'object') {
|
|
629
|
+
paraC = ', JSON.parse(' + JSON.stringify(common) + ')';
|
|
722
630
|
} else {
|
|
723
|
-
|
|
631
|
+
paraC = ', JSON.parse(' + common + ')';
|
|
724
632
|
}
|
|
725
633
|
}
|
|
726
634
|
|
|
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 +
|
|
635
|
+
return 'createState("' + name + '"' + paraV + paraC + ', async () => {\n' +
|
|
636
|
+
Blockly.JavaScript.prefixLines(statement, Blockly.JavaScript.INDENT) + '\n' +
|
|
735
637
|
'});\n';
|
|
736
638
|
};
|
|
737
639
|
|
|
@@ -785,11 +687,10 @@ Blockly.Blocks['get_value'] = {
|
|
|
785
687
|
Blockly.JavaScript['get_value'] = function(block) {
|
|
786
688
|
const oid = block.getFieldValue('OID');
|
|
787
689
|
const attr = block.getFieldValue('ATTR');
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
return [`(await getObjectAsync('${oid}')).${attr}`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
690
|
+
if (attr === 'type' || attr.indexOf('.') !== -1) {
|
|
691
|
+
return ['(await getObjectAsync("' + oid + '")).' + attr, Blockly.JavaScript.ORDER_ATOMIC];
|
|
791
692
|
} else {
|
|
792
|
-
return [
|
|
693
|
+
return ['getState("' + oid + '").' + attr, Blockly.JavaScript.ORDER_ATOMIC];
|
|
793
694
|
}
|
|
794
695
|
};
|
|
795
696
|
|
|
@@ -806,6 +707,7 @@ Blockly.System.blocks['get_value_var'] =
|
|
|
806
707
|
+ '</block>';
|
|
807
708
|
|
|
808
709
|
Blockly.Blocks['get_value_var'] = {
|
|
710
|
+
// Checkbox.
|
|
809
711
|
init: function() {
|
|
810
712
|
|
|
811
713
|
this.appendDummyInput('ATTR')
|
|
@@ -845,11 +747,10 @@ Blockly.Blocks['get_value_var'] = {
|
|
|
845
747
|
Blockly.JavaScript['get_value_var'] = function(block) {
|
|
846
748
|
const oid = Blockly.JavaScript.valueToCode(block, 'OID', Blockly.JavaScript.ORDER_ATOMIC);
|
|
847
749
|
const attr = block.getFieldValue('ATTR');
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
return [`(await getObjectAsync(${oid})).${attr}`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
750
|
+
if (attr === 'type' || attr.startsWith('common.') || attr.startsWith('native.')) {
|
|
751
|
+
return ['(await getObjectAsync("' + oid + '")).' + attr, Blockly.JavaScript.ORDER_ATOMIC];
|
|
851
752
|
} else {
|
|
852
|
-
return [
|
|
753
|
+
return ['getState(' + oid + ').' + attr, Blockly.JavaScript.ORDER_ATOMIC];
|
|
853
754
|
}
|
|
854
755
|
};
|
|
855
756
|
|
|
@@ -865,6 +766,7 @@ Blockly.System.blocks['get_value_async'] =
|
|
|
865
766
|
+ '</block>';
|
|
866
767
|
|
|
867
768
|
Blockly.Blocks['get_value_async'] = {
|
|
769
|
+
// Checkbox.
|
|
868
770
|
init: function() {
|
|
869
771
|
|
|
870
772
|
this.appendDummyInput('ATTR')
|
|
@@ -910,9 +812,8 @@ Blockly.JavaScript['get_value_async'] = function(block) {
|
|
|
910
812
|
const oid = block.getFieldValue('OID');
|
|
911
813
|
const attr = block.getFieldValue('ATTR');
|
|
912
814
|
const statement = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
return `getObjectAsync('${oid}', async (err, obj) => {\n` +
|
|
815
|
+
if (attr === 'type' || attr.startsWith('common.') || attr.startsWith('native.')) {
|
|
816
|
+
return 'getObjectAsync("' + oid + '", async (err, obj) => {\n' +
|
|
916
817
|
Blockly.JavaScript.prefixLines('let value = obj.' + attr + ';', Blockly.JavaScript.INDENT) + '\n' +
|
|
917
818
|
statement + '\n' +
|
|
918
819
|
'});\n';
|
|
@@ -948,8 +849,7 @@ Blockly.Blocks['field_oid'] = {
|
|
|
948
849
|
|
|
949
850
|
Blockly.JavaScript['field_oid'] = function(block) {
|
|
950
851
|
const oid = block.getFieldValue('oid');
|
|
951
|
-
|
|
952
|
-
return [`'${oid}'`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
852
|
+
return ['\'' + oid + '\'', Blockly.JavaScript.ORDER_ATOMIC];
|
|
953
853
|
};
|
|
954
854
|
|
|
955
855
|
// --- select OID meta--------------------------------------------------
|
|
@@ -976,8 +876,7 @@ Blockly.Blocks['field_oid_meta'] = {
|
|
|
976
876
|
|
|
977
877
|
Blockly.JavaScript['field_oid_meta'] = function(block) {
|
|
978
878
|
const oid = block.getFieldValue('oid');
|
|
979
|
-
|
|
980
|
-
return [`'${oid}'`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
879
|
+
return ['\'' + oid + '\'', Blockly.JavaScript.ORDER_ATOMIC];
|
|
981
880
|
};
|
|
982
881
|
|
|
983
882
|
// --- select OID script--------------------------------------------------
|
|
@@ -1004,8 +903,7 @@ Blockly.Blocks['field_oid_script'] = {
|
|
|
1004
903
|
|
|
1005
904
|
Blockly.JavaScript['field_oid_script'] = function(block) {
|
|
1006
905
|
const oid = block.getFieldValue('oid');
|
|
1007
|
-
|
|
1008
|
-
return [`'${oid}'`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
906
|
+
return ['\'' + oid + '\'', Blockly.JavaScript.ORDER_ATOMIC];
|
|
1009
907
|
};
|
|
1010
908
|
|
|
1011
909
|
// --- get attribute --------------------------------------------------
|
|
@@ -1026,6 +924,8 @@ Blockly.Blocks['get_attr'] = {
|
|
|
1026
924
|
.setCheck(null)
|
|
1027
925
|
.appendField(Blockly.Translate('get_attr_path'));
|
|
1028
926
|
|
|
927
|
+
// this.appendDummyInput()
|
|
928
|
+
|
|
1029
929
|
this.appendValueInput('OBJECT')
|
|
1030
930
|
.appendField(Blockly.Translate('get_attr_by'));
|
|
1031
931
|
|
|
@@ -1040,7 +940,6 @@ Blockly.Blocks['get_attr'] = {
|
|
|
1040
940
|
Blockly.JavaScript['get_attr'] = function(block) {
|
|
1041
941
|
const path = Blockly.JavaScript.valueToCode(block, 'PATH', Blockly.JavaScript.ORDER_ATOMIC);
|
|
1042
942
|
const obj = Blockly.JavaScript.valueToCode(block, 'OBJECT', Blockly.JavaScript.ORDER_ATOMIC);
|
|
1043
|
-
|
|
1044
943
|
return ['getAttr(' + obj + ', ' + path + ')', Blockly.JavaScript.ORDER_ATOMIC];
|
|
1045
944
|
};
|
|
1046
945
|
|
|
@@ -1052,6 +951,7 @@ Blockly.System.blocks['regex'] =
|
|
|
1052
951
|
+ '</block>';
|
|
1053
952
|
|
|
1054
953
|
Blockly.Blocks['regex'] = {
|
|
954
|
+
// Checkbox.
|
|
1055
955
|
init: function() {
|
|
1056
956
|
this.appendDummyInput()
|
|
1057
957
|
.appendField('RegExp');
|
|
@@ -1068,8 +968,7 @@ Blockly.Blocks['regex'] = {
|
|
|
1068
968
|
|
|
1069
969
|
Blockly.JavaScript['regex'] = function(block) {
|
|
1070
970
|
const oid = block.getFieldValue('TEXT');
|
|
1071
|
-
|
|
1072
|
-
return [`new RegExp('${oid}')`, Blockly.JavaScript.ORDER_ATOMIC];
|
|
971
|
+
return ['new RegExp("' + oid + '")', Blockly.JavaScript.ORDER_ATOMIC];
|
|
1073
972
|
};
|
|
1074
973
|
|
|
1075
974
|
// --- selector --------------------------------------------------
|
|
@@ -1080,6 +979,7 @@ Blockly.System.blocks['selector'] =
|
|
|
1080
979
|
+ '</block>';
|
|
1081
980
|
|
|
1082
981
|
Blockly.Blocks['selector'] = {
|
|
982
|
+
// Checkbox.
|
|
1083
983
|
init: function() {
|
|
1084
984
|
|
|
1085
985
|
this.appendDummyInput()
|
|
@@ -1100,6 +1000,49 @@ Blockly.Blocks['selector'] = {
|
|
|
1100
1000
|
|
|
1101
1001
|
Blockly.JavaScript['selector'] = function(block) {
|
|
1102
1002
|
const oid = block.getFieldValue('TEXT');
|
|
1003
|
+
return ['Array.prototype.slice.apply($("' + oid + '"))', Blockly.JavaScript.ORDER_ATOMIC];
|
|
1004
|
+
};
|
|
1005
|
+
|
|
1006
|
+
// --- Text new line --------------------------------------------------
|
|
1007
|
+
Blockly.Blocks['text_newline'] = {
|
|
1008
|
+
// Checkbox.
|
|
1009
|
+
init: function() {
|
|
1010
|
+
this.appendDummyInput()
|
|
1011
|
+
.appendField(Blockly.Translate('text_newline'));
|
|
1012
|
+
|
|
1013
|
+
this.appendDummyInput()
|
|
1014
|
+
.appendField(new Blockly.FieldDropdown([['\\n', '\\n'], ['\\r\\n', '\\r\\n'], ['\\r', '\\r']]), 'Type');
|
|
1015
|
+
this.setInputsInline(true);
|
|
1016
|
+
this.setColour(Blockly.Msg['TEXTS_HUE']);
|
|
1017
|
+
this.setOutput(true, 'String');
|
|
1018
|
+
this.setTooltip(Blockly.Translate('text_newline_tooltip'));
|
|
1019
|
+
}
|
|
1020
|
+
};
|
|
1021
|
+
|
|
1022
|
+
Blockly.JavaScript['text_newline'] = function(block) {
|
|
1023
|
+
const dropdown_type = block.getFieldValue('Type');
|
|
1024
|
+
return ['\'' + dropdown_type + '\'', Blockly.JavaScript.ORDER_ATOMIC];
|
|
1025
|
+
};
|
|
1026
|
+
|
|
1027
|
+
// --- Round Number to n decimal places -------------------------------
|
|
1028
|
+
Blockly.Blocks['math_rndfixed'] = {
|
|
1029
|
+
init: function() {
|
|
1030
|
+
this.appendValueInput('x')
|
|
1031
|
+
.setCheck('Number')
|
|
1032
|
+
.appendField(Blockly.Translate('math_rndfixed_round'));
|
|
1033
|
+
this.appendDummyInput()
|
|
1034
|
+
.appendField(Blockly.Translate('math_rndfixed_to'))
|
|
1035
|
+
.appendField(new Blockly.FieldNumber(0, 1, 25), 'n')
|
|
1036
|
+
.appendField(Blockly.Translate('math_rndfixed_decplcs'));
|
|
1037
|
+
this.setInputsInline(true);
|
|
1038
|
+
this.setColour(Blockly.Msg['MATH_HUE']);
|
|
1039
|
+
this.setOutput(true, 'Number');
|
|
1040
|
+
this.setTooltip(Blockly.Translate('math_rndfixed_tooltip'));
|
|
1041
|
+
}
|
|
1042
|
+
};
|
|
1103
1043
|
|
|
1104
|
-
|
|
1044
|
+
Blockly.JavaScript['math_rndfixed'] = function(block) {
|
|
1045
|
+
const x = Blockly.JavaScript.valueToCode(block, 'x', Blockly.JavaScript.ORDER_ATOMIC);
|
|
1046
|
+
const exp = Math.pow(10, block.getFieldValue('n'));
|
|
1047
|
+
return ['Math.round(' + x + '*' + exp + ')/' + exp, Blockly.JavaScript.ORDER_ATOMIC];
|
|
1105
1048
|
};
|