iobroker.javascript 7.0.5 → 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.
Files changed (46) hide show
  1. package/README.md +7 -8
  2. package/admin/asset-manifest.json +5 -5
  3. package/admin/google-blockly/blockly_compressed.js +1469 -1704
  4. package/admin/google-blockly/blocks_compressed.js +164 -218
  5. package/admin/google-blockly/javascript_compressed.js +100 -328
  6. package/admin/google-blockly/msg/js/de.js +64 -70
  7. package/admin/google-blockly/msg/js/en.js +14 -20
  8. package/admin/google-blockly/msg/js/es.js +39 -45
  9. package/admin/google-blockly/msg/js/fr.js +59 -65
  10. package/admin/google-blockly/msg/js/it.js +19 -25
  11. package/admin/google-blockly/msg/js/nl.js +55 -61
  12. package/admin/google-blockly/msg/js/pl.js +46 -52
  13. package/admin/google-blockly/msg/js/pt.js +30 -36
  14. package/admin/google-blockly/msg/js/ru.js +41 -47
  15. package/admin/google-blockly/msg/js/uk.js +13 -17
  16. package/admin/google-blockly/msg/js/zh-cn.js +86 -92
  17. package/admin/google-blockly/own/blocks_action.js +4 -4
  18. package/admin/google-blockly/own/blocks_other.js +103 -0
  19. package/admin/google-blockly/own/blocks_procedures.js +63 -62
  20. package/admin/google-blockly/own/blocks_sendto.js +62 -60
  21. package/admin/google-blockly/own/blocks_switch.js +40 -29
  22. package/admin/google-blockly/own/blocks_system.js +113 -170
  23. package/admin/google-blockly/own/blocks_time.js +35 -35
  24. package/admin/google-blockly/own/blocks_timeout.js +42 -42
  25. package/admin/google-blockly/own/blocks_trigger.js +47 -62
  26. package/admin/google-blockly/own/blocks_words.js +8 -9
  27. package/admin/google-blockly/own/field_cron.js +189 -139
  28. package/admin/google-blockly/own/field_oid.js +250 -170
  29. package/admin/google-blockly/own/field_script.js +16 -16
  30. package/admin/static/js/759.7f25ba6c.chunk.js.map +1 -1
  31. package/admin/static/js/98.bf3dfa2b.chunk.js +2 -0
  32. package/admin/static/js/98.bf3dfa2b.chunk.js.map +1 -0
  33. package/admin/static/js/{main.eee05982.js → main.d9e7d255.js} +2 -2
  34. package/admin/static/js/{main.eee05982.js.map → main.d9e7d255.js.map} +1 -1
  35. package/admin/tab.html +1 -1
  36. package/admin/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  37. package/admin-config/vsFont/codicon.json +1 -1
  38. package/io-package.json +40 -40
  39. package/lib/typescriptTools.js +29 -30
  40. package/main.js +4 -4
  41. package/package.json +3 -3
  42. package/admin/google-blockly/own/blocks_logic.js +0 -64
  43. package/admin/google-blockly/own/blocks_number.js +0 -25
  44. package/admin/google-blockly/own/blocks_text.js +0 -23
  45. package/admin/static/js/98.3bc0a67c.chunk.js +0 -2
  46. package/admin/static/js/98.3bc0a67c.chunk.js.map +0 -1
@@ -85,7 +85,6 @@ Blockly.Blocks['on_ext'] = {
85
85
  mutationToDom: function () {
86
86
  const container = document.createElement('mutation');
87
87
  container.setAttribute('items', this.itemCount_);
88
-
89
88
  return container;
90
89
  },
91
90
  /**
@@ -106,7 +105,6 @@ Blockly.Blocks['on_ext'] = {
106
105
  decompose: function (workspace) {
107
106
  const containerBlock = workspace.newBlock('on_ext_oid_container');
108
107
  containerBlock.initSvg();
109
-
110
108
  let connection = containerBlock.getInput('STACK').connection;
111
109
  for (let i = 0; i < this.itemCount_; i++) {
112
110
  const itemBlock = workspace.newBlock('on_ext_oid');
@@ -114,7 +112,6 @@ Blockly.Blocks['on_ext'] = {
114
112
  connection.connect(itemBlock.previousConnection);
115
113
  connection = itemBlock.nextConnection;
116
114
  }
117
-
118
115
  return containerBlock;
119
116
  },
120
117
  /**
@@ -131,19 +128,18 @@ Blockly.Blocks['on_ext'] = {
131
128
  itemBlock = itemBlock.nextConnection &&
132
129
  itemBlock.nextConnection.targetBlock();
133
130
  }
134
-
135
131
  // Disconnect any children that don't belong.
136
132
  for (let k = 0; k < this.itemCount_; k++) {
137
- var connection = this.getInput('OID' + k).connection.targetConnection;
133
+ const connection = this.getInput('OID' + k).connection.targetConnection;
138
134
  if (connection && connections.indexOf(connection) === -1) {
139
135
  connection.disconnect();
140
136
  }
141
137
  }
142
-
143
138
  this.itemCount_ = connections.length;
144
- if (this.itemCount_ < 1) this.itemCount_ = 1;
139
+ if (this.itemCount_ < 1) {
140
+ this.itemCount_ = 1;
141
+ }
145
142
  this.updateShape_();
146
-
147
143
  // Reconnect any child blocks.
148
144
  for (let i = 0; i < this.itemCount_; i++) {
149
145
  Blockly.Mutator.reconnect(connections[i], this, 'OID' + i);
@@ -157,9 +153,8 @@ Blockly.Blocks['on_ext'] = {
157
153
  saveConnections: function(containerBlock) {
158
154
  let itemBlock = containerBlock.getInputTargetBlock('STACK');
159
155
  let i = 0;
160
-
161
156
  while (itemBlock) {
162
- var input = this.getInput('OID' + i);
157
+ const input = this.getInput('OID' + i);
163
158
  itemBlock.valueConnection_ = input && input.connection.targetConnection;
164
159
  i++;
165
160
  itemBlock = itemBlock.nextConnection &&
@@ -191,7 +186,8 @@ Blockly.Blocks['on_ext'] = {
191
186
  // Add new inputs.
192
187
  const wp = this.workspace;
193
188
 
194
- for (var i = 0; i < this.itemCount_; i++) {
189
+ let i;
190
+ for (i = 0; i < this.itemCount_; i++) {
195
191
  let _input = this.getInput('OID' + i);
196
192
  if (!_input) {
197
193
  _input = this.appendValueInput('OID' + i);
@@ -220,7 +216,6 @@ Blockly.Blocks['on_ext'] = {
220
216
  }, 100, _input);
221
217
  }
222
218
  }
223
-
224
219
  // Remove deleted inputs.
225
220
  while (this.getInput('OID' + i)) {
226
221
  this.removeInput('OID' + i);
@@ -257,14 +252,13 @@ Blockly.Blocks['on_ext'] = {
257
252
  };
258
253
  Blockly.JavaScript['on_ext'] = function(block) {
259
254
  const dropdown_condition = block.getFieldValue('CONDITION');
255
+ const statements_name = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
260
256
  const ack_condition = block.getFieldValue('ACK_CONDITION');
261
- const statement = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
262
-
263
257
  let val;
264
258
  if (dropdown_condition === 'true' || dropdown_condition === 'false') {
265
259
  val = 'val: ' + dropdown_condition;
266
260
  } else {
267
- val = `change: '${dropdown_condition}'`;
261
+ val = 'change: "' + dropdown_condition + '"';
268
262
  }
269
263
 
270
264
  const oids = [];
@@ -280,12 +274,12 @@ Blockly.JavaScript['on_ext'] = function(block) {
280
274
  }
281
275
  }
282
276
  }
283
-
284
277
  const oid = '[].concat(' + oids.join(').concat(') + ')';
285
278
 
286
- return `on({ id: ${oid}, ${val} ${ack_condition ? ', ack: ' + ack_condition : ''} }, async (obj) => {\n` +
279
+ const code = 'on({ id: ' + oid + ', ' + val + (ack_condition ? ', ack: ' + ack_condition : '') + ' }, async (obj) => {\n' +
287
280
  (oids.length === 1 ? Blockly.JavaScript.prefixLines('let value = obj.state.val;\nlet oldValue = obj.oldState.val;', Blockly.JavaScript.INDENT) + '\n' : '') +
288
- statement + '});\n';
281
+ statements_name + '});\n';
282
+ return code;
289
283
  };
290
284
 
291
285
  // --- ON -----------------------------------------------------------
@@ -344,8 +338,8 @@ Blockly.JavaScript['on'] = function(block) {
344
338
  const value_objectid = block.getFieldValue('OID');
345
339
  const dropdown_condition = block.getFieldValue('CONDITION');
346
340
  const ack_condition = block.getFieldValue('ACK_CONDITION');
347
- const statement = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
348
- const objectName = main.objects[value_objectid] && main.objects[value_objectid].common && main.objects[value_objectid].common.name ? main.objects[value_objectid].common.name : '';
341
+ const statements_name = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
342
+ const objectname = main.objects[value_objectid] && main.objects[value_objectid].common && main.objects[value_objectid].common.name ? main.objects[value_objectid].common.name : '';
349
343
 
350
344
  Blockly.Msg.VARIABLES_DEFAULT_NAME = 'value';
351
345
 
@@ -353,13 +347,13 @@ Blockly.JavaScript['on'] = function(block) {
353
347
  if (dropdown_condition === 'true' || dropdown_condition === 'false') {
354
348
  val = 'val: ' + dropdown_condition;
355
349
  } else {
356
- val = `change: '${dropdown_condition}'`;
350
+ val = 'change: "' + dropdown_condition + '"';
357
351
  }
358
352
 
359
- return `on({ id: '${value_objectid}'${objectName ? ` /* ${objectName} */` : ''}, ${val} ${ack_condition ? ', ack: ' + ack_condition : ''} }, async (obj) => {\n` +
360
- Blockly.JavaScript.prefixLines('let value = obj.state.val;', Blockly.JavaScript.INDENT) + '\n' +
353
+ return 'on({ id: "' + value_objectid + '"' + (objectname ? '/*' + objectname + '*/' : '') + ', ' + val + (ack_condition ? ', ack: ' + ack_condition : '') + ' }, async (obj) => {\n' +
354
+ Blockly.JavaScript.prefixLines('let value = obj.state.val;\n', Blockly.JavaScript.INDENT) + '\n' +
361
355
  Blockly.JavaScript.prefixLines('let oldValue = obj.oldState.val;', Blockly.JavaScript.INDENT) + '\n' +
362
- statement +
356
+ + statements_name +
363
357
  '});\n';
364
358
  };
365
359
 
@@ -376,7 +370,6 @@ Blockly.Blocks['on_source'] = {
376
370
  * @this Blockly.Block
377
371
  */
378
372
  init: function() {
379
-
380
373
  this.appendDummyInput()
381
374
  .appendField('↪');
382
375
 
@@ -404,7 +397,7 @@ Blockly.Blocks['on_source'] = {
404
397
  [Blockly.Translate('on_source_oldstate_ack'), 'oldState.ack'],
405
398
  [Blockly.Translate('on_source_oldstate_lc'), 'oldState.lc'],
406
399
  [Blockly.Translate('on_source_oldstate_c'), 'oldState.c'],
407
- [Blockly.Translate('on_source_oldstate_user'), 'oldState.user']
400
+ [Blockly.Translate('on_source_oldstate_user'), 'oldState.user']
408
401
  ]), 'ATTR');
409
402
 
410
403
  this.setInputsInline(true);
@@ -424,7 +417,7 @@ Blockly.Blocks['on_source'] = {
424
417
  // Is the block nested in a trigger?
425
418
  let block = this;
426
419
  do {
427
- if (this.FUNCTION_TYPES.indexOf(block.type) !== -1) {
420
+ if (this.FUNCTION_TYPES.includes(block.type)) {
428
421
  legal = true;
429
422
  break;
430
423
  }
@@ -447,13 +440,11 @@ Blockly.Blocks['on_source'] = {
447
440
  Blockly.JavaScript['on_source'] = function(block) {
448
441
  let attr = block.getFieldValue('ATTR');
449
442
  const parts = attr.split('.');
450
-
451
443
  if (parts.length > 1) {
452
444
  attr = '(obj.' + parts[0] + ' ? obj.' + attr + ' : "")';
453
445
  } else {
454
446
  attr = 'obj.' + attr;
455
447
  }
456
-
457
448
  return [attr, Blockly.JavaScript.ORDER_ATOMIC];
458
449
  };
459
450
 
@@ -461,6 +452,9 @@ Blockly.JavaScript['on_source'] = function(block) {
461
452
  Blockly.Trigger.blocks['schedule'] =
462
453
  '<block type="schedule">'
463
454
  + ' <value name="SCHEDULE">'
455
+ //+ ' <shadow type="text">'
456
+ //+ ' <field name="TEXT">test</field>'
457
+ //+ ' </shadow>'
464
458
  + ' </value>'
465
459
  + ' <value name="STATEMENT">'
466
460
  + ' </value>'
@@ -487,16 +481,15 @@ Blockly.Blocks['schedule'] = {
487
481
  };
488
482
  Blockly.JavaScript['schedule'] = function(block) {
489
483
  let schedule = block.getFieldValue('SCHEDULE');
490
- const statement = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
484
+ const statements_name = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
491
485
 
492
486
  if (schedule[0] === '{') {
493
487
  schedule = "'" + schedule + "'";
494
488
  } else {
495
489
  schedule = '"' + schedule + '"';
496
490
  }
497
-
498
- return `schedule(${schedule}, async () => {\n` +
499
- statement +
491
+ return 'schedule(' + schedule + ', async () => {\n' +
492
+ statements_name +
500
493
  '});\n';
501
494
  };
502
495
 
@@ -559,11 +552,11 @@ Blockly.Blocks['astro'] = {
559
552
  };
560
553
  Blockly.JavaScript['astro'] = function(block) {
561
554
  const astrotype = block.getFieldValue('TYPE');
562
- const offset = parseInt(block.getFieldValue('OFFSET'), 10);
563
- const statement = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
555
+ const offset = parseInt(block.getFieldValue('OFFSET'), 10);
556
+ const statements_name = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
564
557
 
565
- return `schedule({ astro: '${astrotype}', shift: ${offset} }, async () => {\n` +
566
- statement +
558
+ return 'schedule({ astro: "' + astrotype + '", shift: ' + offset + ' }, async () => {\n' +
559
+ statements_name +
567
560
  '});\n';
568
561
  };
569
562
 
@@ -683,10 +676,10 @@ Blockly.Blocks['schedule_create'] = {
683
676
  Blockly.JavaScript['schedule_create'] = function (block) {
684
677
  const name = Blockly.JavaScript.variableDB_.safeName_(block.getFieldValue('NAME'));
685
678
  const schedule = Blockly.JavaScript.valueToCode(block, 'SCHEDULE', Blockly.JavaScript.ORDER_ATOMIC);
686
- const statement = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
679
+ const statements_name = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
687
680
 
688
681
  return name + ' = schedule(' + schedule + ', async () => {\n' +
689
- statement +
682
+ statements_name +
690
683
  '});\n';
691
684
  };
692
685
 
@@ -741,7 +734,7 @@ Blockly.Blocks['schedule_clear'] = {
741
734
 
742
735
  Blockly.JavaScript['schedule_clear'] = function(block) {
743
736
  const name = Blockly.JavaScript.variableDB_.safeName_(block.getFieldValue('NAME'));
744
- return `(function () { if (${name}) { clearSchedule(${name}); ${name} = null; }})();\n`;
737
+ return '(function () { if (' + name + ') { clearSchedule(' + name + '); ' + name + ' = null; }})();\n';
745
738
  };
746
739
 
747
740
  // --- CRON dialog --------------------------------------------------
@@ -769,7 +762,7 @@ Blockly.Blocks['field_cron'] = {
769
762
 
770
763
  Blockly.JavaScript['field_cron'] = function(block) {
771
764
  const cron = block.getFieldValue('CRON');
772
- return [`'${cron}'`, Blockly.JavaScript.ORDER_ATOMIC]
765
+ return ['\'' + cron + '\'', Blockly.JavaScript.ORDER_ATOMIC]
773
766
  };
774
767
 
775
768
  // --- CRON builder --------------------------------------------------
@@ -795,7 +788,6 @@ Blockly.Trigger.blocks['cron_builder'] =
795
788
  Blockly.Blocks['cron_builder'] = {
796
789
  // Checkbox.
797
790
  init: function() {
798
-
799
791
  this.appendDummyInput()
800
792
  .appendField(Blockly.Translate('cron_builder_CRON'));
801
793
 
@@ -805,10 +797,10 @@ Blockly.Blocks['cron_builder'] = {
805
797
  this.sourceBlock_.setInputsInline(option === true || option === 'true' || option === 'TRUE');
806
798
  }), 'LINE');
807
799
 
808
- const _input = this.appendValueInput('DOW')
800
+ let _input = this.appendValueInput('DOW')
809
801
  .appendField(Blockly.Translate('cron_builder_dow'));
810
802
 
811
- const wp = this.workspace;
803
+ const wp = this.workspace;
812
804
  setTimeout(function (_input) {
813
805
  if (!_input.connection.isConnected()) {
814
806
  const _shadow = wp.newBlock('text');
@@ -841,7 +833,6 @@ Blockly.Blocks['cron_builder'] = {
841
833
  }
842
834
  }, 100, _input);
843
835
 
844
-
845
836
  _input = this.appendValueInput('HOURS')
846
837
  .appendField(Blockly.Translate('cron_builder_hour'));
847
838
  setTimeout(function (_input) {
@@ -853,7 +844,6 @@ Blockly.Blocks['cron_builder'] = {
853
844
  }
854
845
  }, 100, _input);
855
846
 
856
-
857
847
  _input = this.appendValueInput('MINUTES')
858
848
  .appendField(Blockly.Translate('cron_builder_minutes'));
859
849
  setTimeout(function (_input) {
@@ -888,7 +878,6 @@ Blockly.Blocks['cron_builder'] = {
888
878
  const container = document.createElement('mutation');
889
879
  container.setAttribute('seconds', this.seconds_);
890
880
  container.setAttribute('as_line', this.as_line_);
891
-
892
881
  return container;
893
882
  },
894
883
  /**
@@ -946,7 +935,6 @@ Blockly.JavaScript['cron_builder'] = function(block) {
946
935
  days + '.toString().trim() + \' \' + ' +
947
936
  months + '.toString().trim() + \' \' + ' +
948
937
  dow + '.toString().trim()';
949
-
950
938
  return [code, Blockly.JavaScript.ORDER_ATOMIC]
951
939
  };
952
940
 
@@ -984,10 +972,10 @@ Blockly.Blocks['onMessage'] = {
984
972
 
985
973
  Blockly.JavaScript['onMessage'] = function (block) {
986
974
  const message = block.getFieldValue('MESSAGE');
987
- const statement = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
975
+ const statements_name = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
988
976
 
989
- return `onMessage('${message}', async (data) => {\n` +
990
- statement +
977
+ return 'onMessage("' + message + '", async (data) => {\n' +
978
+ statements_name +
991
979
  '});\n';
992
980
  };
993
981
 
@@ -1035,18 +1023,16 @@ Blockly.Blocks['onFile'] = {
1035
1023
  this.setHelpUrl(getHelp('onFile_help'));
1036
1024
  }
1037
1025
  };
1038
-
1039
1026
  Blockly.JavaScript['onFile'] = function (block) {
1040
1027
  const value_objectid = Blockly.JavaScript.valueToCode(block, 'OID', Blockly.JavaScript.ORDER_ATOMIC);
1041
1028
  const file = Blockly.JavaScript.valueToCode(block, 'FILE', Blockly.JavaScript.ORDER_ATOMIC);
1042
1029
  const withFile = block.getFieldValue('WITH_FILE');
1043
- const statement = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
1044
- const objectName = main.objects[value_objectid] && main.objects[value_objectid].common && main.objects[value_objectid].common.name ? main.objects[value_objectid].common.name : '';
1030
+ const statements_name = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
1031
+ const objectname = main.objects[value_objectid] && main.objects[value_objectid].common && main.objects[value_objectid].common.name ? main.objects[value_objectid].common.name : '';
1045
1032
 
1046
- return `onFile(${value_objectid}${objectName ? ` /* ${objectName} */` : ''}, ${file}, ${withFile === 'TRUE' ? 'true' : 'false'}, ` +
1047
- 'async (id, fileName, size, data, mimeType) => {\n' +
1048
- statement +
1049
- '});\n';
1033
+ return 'onFile(' + value_objectid + (objectname ? '/*' + objectname + '*/' : '') + ', ' +
1034
+ file + ', ' + (withFile === 'TRUE' ? 'true' : 'false') +
1035
+ ', async (id, fileName, size, data, mimeType) => {\n' + statements_name + '});\n';
1050
1036
  };
1051
1037
 
1052
1038
  // --- onFile -----------------------------------------------------------
@@ -1081,11 +1067,10 @@ Blockly.Blocks['offFile'] = {
1081
1067
  this.setHelpUrl(getHelp('offFile_help'));
1082
1068
  }
1083
1069
  };
1084
-
1085
1070
  Blockly.JavaScript['offFile'] = function (block) {
1086
1071
  const value_objectid = Blockly.JavaScript.valueToCode(block, 'OID', Blockly.JavaScript.ORDER_ATOMIC);
1087
1072
  const file = Blockly.JavaScript.valueToCode(block, 'FILE', Blockly.JavaScript.ORDER_ATOMIC);
1088
- const objectName = main.objects[value_objectid] && main.objects[value_objectid].common && main.objects[value_objectid].common.name ? main.objects[value_objectid].common.name : '';
1073
+ const objectname = main.objects[value_objectid] && main.objects[value_objectid].common && main.objects[value_objectid].common.name ? main.objects[value_objectid].common.name : '';
1089
1074
 
1090
- return `offFile(${value_objectid}${objectName ? ` /* ${objectName} */` : ''}, ${file});\n`;
1091
- };
1075
+ return 'offFile(' + value_objectid + (objectname ? '/*' + objectname + '*/' : '') + ', ' + file + ');\n';
1076
+ };
@@ -444,17 +444,16 @@ Blockly.Words['onMessage_message'] = {'en': 'message',
444
444
  Blockly.Words['onMessage_tooltip'] = {'en': 'message', 'de': 'Meldung', 'ru': 'сообщение', 'pt': 'mensagem', 'nl': 'bericht', 'fr': 'message', 'it': 'messaggio', 'es': 'mensaje', 'pl': 'komunikat', 'zh-cn': '消息', 'uk': 'повідомлення'};
445
445
  Blockly.Words['onMessage_help'] = {'en': 'onMessage', 'de': 'onMessage', 'ru': 'onMessage', 'pt': 'onMessage', 'nl': 'onMessage', 'fr': 'onMessage', 'it': 'onMessage', 'es': 'onMessage', 'pl': 'onMessage', 'zh-cn': 'onMessage', 'uk': 'onMessage'};
446
446
 
447
- // --- logic between --------------------------------------------------
448
- Blockly.Words['logic_between_min'] = { "en": "Min", "de": "Min", "ru": "Мин", "pt": "Min", "nl": "Min", "fr": "Min", "it": "Min", "es": "Min", "pl": "Min", "uk": "Мінуси", "zh-cn": "明 明" };
449
- Blockly.Words['logic_between_max'] = { "en": "Max", "de": "Max", "ru": "Макс", "pt": "Max", "nl": "Max", "fr": "Max", "it": "Max", "es": "Max", "pl": "Max", "uk": "Макс", "zh-cn": "Max" };
447
+ // --- OTHER --------------------------------------------------
448
+ Blockly.Words['Other'] = {'en': 'Other', 'de': 'Sonstige', 'ru': 'Другое', 'pt': 'Outros', 'nl': 'Andere', 'fr': 'Autres', 'it': 'Altri', 'es': 'Otros', 'pl': 'Inny', 'zh-cn': '其他', 'uk': 'Інше'};
450
449
 
451
- // --- logic ifempty --------------------------------------------------
452
- Blockly.Words['logic_ifempty'] = { "en": "if empty", "de": "wenn leer", "ru": "если пусто", "pt": "se vazio", "nl": "_", "fr": "si vide", "it": "se vuoto", "es": "si está vacío", "pl": "jeśli chodzi o puste", "uk": "якщо порожній", "zh-cn": "" };
453
- Blockly.Words['logic_ifempty_then'] = { "en": "then", "de": "dann", "ru": "затем", "pt": "então", "nl": "dan", "fr": "puis", "it": "allora", "es": "entonces", "pl": "potem", "uk": "потім", "zh-cn": "然后" };
450
+ // --- other between --------------------------------------------------
451
+ Blockly.Words['other_between_min'] = { "en": "Min", "de": "Min", "ru": "Мин", "pt": "Min", "nl": "Min", "fr": "Min", "it": "Min", "es": "Min", "pl": "Min", "uk": "Мінуси", "zh-cn": "明 明" };
452
+ Blockly.Words['other_between_max'] = { "en": "Max", "de": "Max", "ru": "Макс", "pt": "Max", "nl": "Max", "fr": "Max", "it": "Max", "es": "Max", "pl": "Max", "uk": "Макс", "zh-cn": "Max" };
454
453
 
455
- function getHelp(word) {
456
- return 'https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#' + Blockly.Words[word][systemLang];
457
- }
454
+ // --- other_ifempty --------------------------------------------------
455
+ Blockly.Words['other_ifempty'] = { "en": "if empty", "de": "wenn leer", "ru": "если пусто", "pt": "se vazio", "nl": "_", "fr": "si vide", "it": "se vuoto", "es": "si está vacío", "pl": "jeśli chodzi o puste", "uk": "якщо порожній", "zh-cn": "空" };
456
+ Blockly.Words['other_ifempty_then'] = { "en": "then", "de": "dann", "ru": "затем", "pt": "então", "nl": "dan", "fr": "puis", "it": "allora", "es": "entonces", "pl": "potem", "uk": "потім", "zh-cn": "然后" };
458
457
 
459
458
  Blockly.Translate = function (word, lang) {
460
459
  lang = lang || systemLang;