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.
Files changed (52) hide show
  1. package/README.md +5 -5
  2. package/admin/asset-manifest.json +9 -9
  3. package/admin/google-blockly/blockly-9.3.3.tgz +0 -0
  4. package/admin/google-blockly/blockly_compressed.js +1704 -1469
  5. package/admin/google-blockly/blocks_compressed.js +218 -164
  6. package/admin/google-blockly/javascript_compressed.js +328 -100
  7. package/admin/google-blockly/msg/js/de.js +70 -64
  8. package/admin/google-blockly/msg/js/en.js +20 -14
  9. package/admin/google-blockly/msg/js/es.js +45 -39
  10. package/admin/google-blockly/msg/js/fr.js +65 -59
  11. package/admin/google-blockly/msg/js/it.js +25 -19
  12. package/admin/google-blockly/msg/js/nl.js +61 -55
  13. package/admin/google-blockly/msg/js/pl.js +52 -46
  14. package/admin/google-blockly/msg/js/pt.js +36 -30
  15. package/admin/google-blockly/msg/js/ru.js +47 -41
  16. package/admin/google-blockly/msg/js/uk.js +17 -13
  17. package/admin/google-blockly/msg/js/zh-cn.js +92 -86
  18. package/admin/google-blockly/own/blocks_action.js +4 -4
  19. package/admin/google-blockly/own/blocks_number.js +4 -3
  20. package/admin/google-blockly/own/blocks_procedures.js +106 -75
  21. package/admin/google-blockly/own/blocks_sendto.js +2 -2
  22. package/admin/google-blockly/own/blocks_switch.js +8 -19
  23. package/admin/google-blockly/own/blocks_system.js +171 -113
  24. package/admin/google-blockly/own/blocks_text.js +1 -1
  25. package/admin/google-blockly/own/blocks_time.js +2 -1
  26. package/admin/google-blockly/own/blocks_timeout.js +31 -27
  27. package/admin/google-blockly/own/blocks_trigger.js +62 -44
  28. package/admin/google-blockly/own/blocks_words.js +3 -3
  29. package/admin/google-blockly/own/field_cron.js +138 -189
  30. package/admin/google-blockly/own/field_oid.js +167 -249
  31. package/admin/google-blockly/own/field_script.js +124 -170
  32. package/admin/static/js/472.d73f9bde.chunk.js +3 -0
  33. package/admin/static/js/472.d73f9bde.chunk.js.map +1 -0
  34. package/admin/static/js/{512.6503862a.chunk.js → 512.e71b2bc3.chunk.js} +3 -3
  35. package/admin/static/js/512.e71b2bc3.chunk.js.map +1 -0
  36. package/admin/static/js/98.ecb7402b.chunk.js +2 -0
  37. package/admin/static/js/98.ecb7402b.chunk.js.map +1 -0
  38. package/admin/static/js/{main.d5dc2784.js → main.b8836dea.js} +2 -2
  39. package/admin/static/js/main.b8836dea.js.map +1 -0
  40. package/admin/tab.html +1 -1
  41. package/io-package.json +26 -26
  42. package/main.js +9 -10
  43. package/package.json +4 -4
  44. package/admin/blockly-9.0.1.tgz +0 -0
  45. package/admin/static/js/472.dae7221e.chunk.js +0 -3
  46. package/admin/static/js/472.dae7221e.chunk.js.map +0 -1
  47. package/admin/static/js/512.6503862a.chunk.js.map +0 -1
  48. package/admin/static/js/98.eee0c52f.chunk.js +0 -2
  49. package/admin/static/js/98.eee0c52f.chunk.js.map +0 -1
  50. package/admin/static/js/main.d5dc2784.js.map +0 -1
  51. /package/admin/static/js/{472.dae7221e.chunk.js.LICENSE.txt → 472.d73f9bde.chunk.js.LICENSE.txt} +0 -0
  52. /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
- return 'console.' + dropdown_severity + '(' + value_text + ');\n';
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
- return '// ' + comment + '\n';
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 = parseInt(block.getFieldValue('DELAY_MS'), 10);
170
- const unit = block.getFieldValue('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 = 'setStateDelayed("' + valueObjectID + '"' + (objectName ? '/*' + objectName + '*/' : '') + ', ' + valueValue + ', ' + valueDelay + ', ' + clearRunning + ');\n';
188
+ code = `setStateDelayed('${valueObjectID}'${objectName ? ` /* ${objectName} */` : ''}, ${valueValue}, ${valueDelay}, ${clearRunning});\n`;
186
189
  } else {
187
- code = 'setState("' + valueObjectID + '"' + (objectName ? '/*' + objectName + '*/' : '') + ', ' + valueValue + ');\n';
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
- setCommand = 'setState("' + valueObjectID + '"' + (objectName ? '/*' + objectName + '*/' : '') + ', state ? (state.val == ' + min + ' ? ' + max + ' : ' + min + ') : ' + max + ');';
309
+
310
+ setCommand = `setState('${valueObjectID}'${objectName ? ` /* ${objectName} */` : ''}, state ? (state.val === ${min} ? ${max} : ${min}) : ${max});`;
304
311
  } else {
305
- setCommand = 'setState("' + valueObjectID + '"' + (objectName ? '/*' + objectName + '*/' : '') + ', state ? !state.val : true);';
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 = 'getState("' + valueObjectID + '", (err, state) => {\n' +
312
- Blockly.JavaScript.prefixLines('setStateDelayed("' + valueObjectID + '"' + (objectName ? '/*' + objectName + '*/' : '') + ', state ? !state.val : true, ' + valueDelay + ', ' + clearRunning + ');', Blockly.JavaScript.INDENT) + '\n' +
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 = 'getState("' + valueObjectID + '", (err, state) => {\n' +
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 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;
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 = 'setStateDelayed("' + value_objectid + '"' + (objectname ? '/*' + objectname + '*/' : '') + ', ' + value_value + ', true, ' + value_delay + ', ' + clearRunning + ');\n';
443
+ code = `setStateDelayed('${value_objectid}'${objectName ? ` /* ${objectName} */` : ''}, ${value_value}, true, ${value_delay}, ${clearRunning});\n`;
433
444
  } else {
434
- code = 'setState("' + value_objectid + '"' + (objectname ? '/*' + objectname + '*/' : '') + ', ' + value_value + ', true);\n';
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
- return 'on({ id: ' + oidSrc + ', change: "' + (onlyChanges ? 'ne' : 'any') + '" }, (obj) => {\n' +
488
- Blockly.JavaScript.prefixLines('setState(' + oidDest + ', obj.state.val);', Blockly.JavaScript.INDENT) + '\n' +
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 = 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');
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
- return 'setStateDelayed(' + valueObjectID + ', ' + value + ', ' + type + ', parseInt(((' + valueDelay + ') || "").toString(), 10), ' + clearRunning + ');\n';
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
- if (isNaN(value)) {
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 = ', JSON.parse(' + JSON.stringify(common) + ')';
637
+ paraC = `, JSON.parse(${JSON.stringify(common)})`;
626
638
  } else {
627
- paraC = ', JSON.parse(' + common + ')';
639
+ paraC = `, JSON.parse(${common})`;
628
640
  }
629
641
  }
630
642
 
631
- return 'createState("' + name + '"' + paraV + paraC + ', async () => {\n' +
632
- Blockly.JavaScript.prefixLines(statement, Blockly.JavaScript.INDENT) + '\n' +
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
- if (attr === 'type' || attr.indexOf('.') !== -1) {
687
- return ['(await getObjectAsync("' + oid + '")).' + attr, Blockly.JavaScript.ORDER_ATOMIC];
788
+
789
+ if (attr === 'type' || attr.startsWith('common.')) {
790
+ return [`(await getObjectAsync('${oid}')).${attr}`, Blockly.JavaScript.ORDER_ATOMIC];
688
791
  } else {
689
- return ['getState("' + oid + '").' + attr, Blockly.JavaScript.ORDER_ATOMIC];
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
- if (attr === 'type' || attr.startsWith('common.') || attr.startsWith('native.')) {
747
- return ['(await getObjectAsync("' + oid + '")).' + attr, Blockly.JavaScript.ORDER_ATOMIC];
847
+
848
+ if (attr === 'type' || attr.startsWith('common.')) {
849
+ return [`(await getObjectAsync(${oid})).${attr}`, Blockly.JavaScript.ORDER_ATOMIC];
748
850
  } else {
749
- return ['getState(' + oid + ').' + attr, Blockly.JavaScript.ORDER_ATOMIC];
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
- if (attr === 'type' || attr.startsWith('common.') || attr.startsWith('native.')) {
812
- return 'getObjectAsync("' + oid + '", async (err, obj) => {\n' +
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
- return ['\'' + oid + '\'', Blockly.JavaScript.ORDER_ATOMIC];
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
- return ['\'' + oid + '\'', Blockly.JavaScript.ORDER_ATOMIC];
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
- return ['\'' + oid + '\'', Blockly.JavaScript.ORDER_ATOMIC];
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
- return ['new RegExp("' + oid + '")', Blockly.JavaScript.ORDER_ATOMIC];
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
- // --- 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
- };
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
- var dropdown_type = block.getFieldValue('Type');
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
- return ['getAstroDate("' + type + '", undefined, ' + offset + ')', Blockly.JavaScript.ORDER_ATOMIC];
489
+
490
+ return [`getAstroDate('${type}', undefined, ${offset})`, Blockly.JavaScript.ORDER_ATOMIC];
490
491
  };