iobroker.javascript 10.0.0 → 10.1.0

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 (157) hide show
  1. package/README.md +41 -6
  2. package/admin/assets/AiChatPanel-C4kuqP2U.js +237 -0
  3. package/admin/assets/AiDiffView-zJTEnv05.js +1 -0
  4. package/admin/assets/BlocklyEditor-BB77aFJI.js +84 -0
  5. package/admin/assets/ContextWrapper-C2yvd2Tn.css +1 -0
  6. package/admin/assets/ContextWrapper-W2H0z6zD.js +136 -0
  7. package/admin/assets/Debugger-DCMWjeGm.js +15 -0
  8. package/admin/assets/Error-CBC2oZzb.js +1 -0
  9. package/admin/assets/Import-B-F9IhZ-.js +1 -0
  10. package/admin/assets/RulesEditor-ByjgEaVo.js +1 -0
  11. package/admin/assets/RulesEditor-k-DMHotH.css +1 -0
  12. package/admin/assets/{ScriptEditor-BGIuoNei.js → ScriptEditor-CMYUt5S4.js} +2 -2
  13. package/admin/assets/{ScriptEditorVanillaMonaco-DyMQtoTQ.js → ScriptEditorVanillaMonaco-v12-gORS.js} +3 -3
  14. package/admin/assets/Send-CChqR5Oy.js +1 -0
  15. package/admin/assets/_virtual_mf-localSharedImportMap___mfe_internal__iobroker_javascript__mf_owner__1-7EPUlgCk.js +1 -0
  16. package/admin/assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DuplUOZN.js +1243 -0
  17. package/admin/assets/{_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__1__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-BBAXJaqI.js → _virtual_mf___mfe_internal__iobroker_javascript__mf_owner__1__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-JkwfVf8d.js} +1 -1
  18. package/admin/assets/{aiCodeLensProvider-hyAmut0e.js → aiCodeLensProvider-BGvIu6hH.js} +1 -1
  19. package/admin/assets/blockly-C4zJerWL.js +1047 -0
  20. package/admin/assets/blocks_action-CvnOHXwt.js +1 -0
  21. package/admin/assets/blocks_convert-BZlKcd02.js +3 -0
  22. package/admin/assets/blocks_logic-B33Pypxr.js +1 -0
  23. package/admin/assets/blocks_number-k2IjE7OH.js +1 -0
  24. package/admin/assets/blocks_object-B64vSfel.js +1 -0
  25. package/admin/assets/blocks_procedures-BpvNI5dO.js +3 -0
  26. package/admin/assets/blocks_sendto-pwZchfe0.js +5 -0
  27. package/admin/assets/blocks_switch-DViYCmQd.js +2 -0
  28. package/admin/assets/blocks_system-BZZcGqTJ.js +1 -0
  29. package/admin/assets/blocks_text-BOvtHN2r.js +1 -0
  30. package/admin/assets/blocks_time-BH2F-ylT.js +1 -0
  31. package/admin/assets/blocks_timeout-C3BoW4XJ.js +1 -0
  32. package/admin/assets/blocks_trigger-gwXvuAHV.js +2 -0
  33. package/admin/assets/blocks_words-D8PL_nSE.js +1 -0
  34. package/admin/assets/{cronHoverProvider-pKJkSevo.js → cronHoverProvider-DjY3jLvQ.js} +1 -1
  35. package/admin/assets/dist-D6o4h8Pd.js +4 -0
  36. package/admin/assets/field_cron-BMQWPb61.js +1 -0
  37. package/admin/assets/field_oid-BGIMv9gw.js +1 -0
  38. package/admin/assets/field_script-CdzYBCe6.js +1 -0
  39. package/admin/assets/helpers-Crmcgphg.js +1 -0
  40. package/admin/assets/hostInit-DBlZi_Kt.js +1 -0
  41. package/admin/assets/index-BvPVHv3P.js +192 -0
  42. package/admin/assets/{inlineChatWidget-ZaisTOLh.js → inlineChatWidget-SDoyVtOR.js} +2 -2
  43. package/admin/assets/{inlineDiffController-hTwHHqcc.js → inlineDiffController-CnHE3Rwd.js} +2 -2
  44. package/admin/assets/javascript-DVIhlTDr.js +218 -0
  45. package/admin/assets/{mf-entry-bootstrap-0-d6052b31.js → mf-entry-bootstrap-0-a03ecebd.js} +6 -2
  46. package/admin/assets/{mjs-DWqivHEk.js → mjs-Bh7xFIpd.js} +2 -2
  47. package/admin/assets/{stateHoverProvider-C7DawIs-.js → stateHoverProvider-D0iXo6YF.js} +3 -3
  48. package/admin/assets/{virtualExposes-Ed0lGq7k.js → virtualExposes-DgGB-18P.js} +1 -1
  49. package/admin/assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__iobroker_javascript__remoteEntry_js-DYEYnOkt.js +1 -0
  50. package/admin/assets/virtual_mf-exposes___mfe_internal__iobroker_javascript__remoteEntry_js-ChiJXsfH.js +1 -0
  51. package/admin/custom/assets/Components-CuFt9lAY.js +1 -0
  52. package/admin/custom/assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1-DljJyQQg.js +1 -0
  53. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-D0M1SjIE.js +1 -0
  54. package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-CGb5Cofy.js → _virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-BD2OkSge.js} +1 -1
  55. package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BVCIAgbo.js → _virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-pM642JFd.js} +91 -91
  56. package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.js-BkB0anQX.js → _virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.js-BLelmJ7Y.js} +74 -74
  57. package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-BotqDuw-.js → _virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-BGiB1l5e.js} +1 -1
  58. package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__prebuild__date_mf_2_fns__prebuild__-Cb5TR7FB.js → _virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__prebuild__date_mf_2_fns__prebuild__-D5hqXJXI.js} +1 -1
  59. package/admin/custom/assets/hostInit-0DGPuZTB.js +1 -0
  60. package/admin/custom/assets/{index-uEKAoVT7.js → index-DcFI5r-g.js} +1 -1
  61. package/admin/custom/assets/{lib-Yj8cfN0A.js → lib-BlUjuGH7.js} +1 -1
  62. package/admin/custom/assets/{mf-entry-bootstrap-0-77793feb.js → mf-entry-bootstrap-0-efd847a6.js} +6 -2
  63. package/admin/custom/assets/{setYear-DJ9FbdkO.js → setYear-BaCcPbbI.js} +1 -1
  64. package/admin/custom/assets/virtualExposes-DGxNcyb6.js +1 -0
  65. package/admin/custom/assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__ConfigCustomJavascriptSet__customComponents_js-DVNwFcUr.js +1 -0
  66. package/admin/custom/assets/virtual_mf-exposes___mfe_internal__ConfigCustomJavascriptSet__customComponents_js-DPck7zEs.js +2 -0
  67. package/admin/custom/customComponents.js +1 -1
  68. package/admin/google-blockly/VERSION +1 -0
  69. package/admin/google-blockly/media/drop.mp3 +0 -0
  70. package/admin/google-blockly/msg/js/de.js +332 -56
  71. package/admin/google-blockly/msg/js/en.js +319 -43
  72. package/admin/google-blockly/msg/js/es.js +319 -42
  73. package/admin/google-blockly/msg/js/fr.js +315 -39
  74. package/admin/google-blockly/msg/js/it.js +327 -51
  75. package/admin/google-blockly/msg/js/nl.js +376 -100
  76. package/admin/google-blockly/msg/js/pl.js +318 -42
  77. package/admin/google-blockly/msg/js/pt.js +318 -42
  78. package/admin/google-blockly/msg/js/ru.js +320 -44
  79. package/admin/google-blockly/msg/js/uk.js +326 -50
  80. package/admin/google-blockly/msg/js/zh-cn.js +322 -46
  81. package/admin/i18n/de.json +48 -26
  82. package/admin/i18n/en.json +47 -25
  83. package/admin/i18n/es.json +48 -18
  84. package/admin/i18n/fr.json +47 -17
  85. package/admin/i18n/it.json +47 -17
  86. package/admin/i18n/nl.json +47 -17
  87. package/admin/i18n/pl.json +48 -18
  88. package/admin/i18n/pt.json +47 -17
  89. package/admin/i18n/ru.json +47 -17
  90. package/admin/i18n/uk.json +47 -17
  91. package/admin/i18n/zh-cn.json +47 -17
  92. package/admin/jsonConfig.json +367 -0
  93. package/admin/mf-manifest.json +1 -1
  94. package/admin/mf-stats.json +1 -1
  95. package/admin/remoteEntry.js +1 -1
  96. package/admin/tab.html +12 -95
  97. package/build/lib/mirror.js +9 -0
  98. package/build/lib/mirror.js.map +1 -1
  99. package/build/lib/sandbox.js +35 -0
  100. package/build/lib/sandbox.js.map +1 -1
  101. package/build/lib/typescriptSettings.js +112 -2
  102. package/build/lib/typescriptSettings.js.map +1 -1
  103. package/build/lib/typescriptTools.js +168 -43
  104. package/build/lib/typescriptTools.js.map +1 -1
  105. package/build/main.js +10 -5
  106. package/build/main.js.map +1 -1
  107. package/build/types.d.ts +41 -0
  108. package/docs/en/javascript.md +16 -0
  109. package/docs/en/upgrade-guide.md +3 -0
  110. package/io-package.json +45 -15
  111. package/package.json +8 -3
  112. package/admin/assets/AiChatPanel-p0KAg6Cs.js +0 -237
  113. package/admin/assets/AiDiffView-BPTLnNx1.js +0 -1
  114. package/admin/assets/BlocklyEditor-CAjVMhYT.js +0 -81
  115. package/admin/assets/ContextWrapper-BVc8wTK_.css +0 -1
  116. package/admin/assets/ContextWrapper-D9CrnNKs.js +0 -127
  117. package/admin/assets/Debugger-SjROokFI.js +0 -15
  118. package/admin/assets/Error-DDfrxAt2.js +0 -1
  119. package/admin/assets/Import-DpTg1Jow.js +0 -1
  120. package/admin/assets/RulesEditor-BSRFWpEm.css +0 -1
  121. package/admin/assets/RulesEditor-D0hgrcBc.js +0 -1
  122. package/admin/assets/_virtual_mf-localSharedImportMap___mfe_internal__iobroker_javascript__mf_owner__1-DWJotR1B.js +0 -1
  123. package/admin/assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-CxICLr5Z.js +0 -1243
  124. package/admin/assets/dist-uw5orDgd.js +0 -4
  125. package/admin/assets/hostInit-BFg5u9hY.js +0 -1
  126. package/admin/assets/index-B1gICjdq.js +0 -192
  127. package/admin/assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__iobroker_javascript__remoteEntry_js-BYs71IQF.js +0 -1
  128. package/admin/assets/virtual_mf-exposes___mfe_internal__iobroker_javascript__remoteEntry_js-DnnXQRkG.js +0 -1
  129. package/admin/custom/assets/Components-BrDyDHXh.js +0 -1
  130. package/admin/custom/assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1-CyYJM2-v.js +0 -1
  131. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-BdzCssLn.js +0 -1
  132. package/admin/custom/assets/hostInit-DJx2uXXy.js +0 -1
  133. package/admin/custom/assets/virtualExposes-CxDjLoYu.js +0 -1
  134. package/admin/custom/assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__ConfigCustomJavascriptSet__customComponents_js-BU-ugy_7.js +0 -1
  135. package/admin/custom/assets/virtual_mf-exposes-ssr___mfe_internal__ConfigCustomJavascriptSet__customComponents_js-BEfZbrf7.js +0 -2
  136. package/admin/custom/assets/virtual_mf-exposes___mfe_internal__ConfigCustomJavascriptSet__customComponents_js-CTeZ0Jpm.js +0 -2
  137. package/admin/google-blockly/blockly_compressed.js +0 -1679
  138. package/admin/google-blockly/blocks_compressed.js +0 -193
  139. package/admin/google-blockly/javascript_compressed.js +0 -264
  140. package/admin/google-blockly/msg/messages.js +0 -1630
  141. package/admin/google-blockly/own/blocks_action.js +0 -765
  142. package/admin/google-blockly/own/blocks_convert.js +0 -480
  143. package/admin/google-blockly/own/blocks_logic.js +0 -459
  144. package/admin/google-blockly/own/blocks_number.js +0 -30
  145. package/admin/google-blockly/own/blocks_object.js +0 -402
  146. package/admin/google-blockly/own/blocks_procedures.js +0 -688
  147. package/admin/google-blockly/own/blocks_sendto.js +0 -702
  148. package/admin/google-blockly/own/blocks_switch.js +0 -257
  149. package/admin/google-blockly/own/blocks_system.js +0 -1409
  150. package/admin/google-blockly/own/blocks_text.js +0 -104
  151. package/admin/google-blockly/own/blocks_time.js +0 -639
  152. package/admin/google-blockly/own/blocks_timeout.js +0 -551
  153. package/admin/google-blockly/own/blocks_trigger.js +0 -1791
  154. package/admin/google-blockly/own/blocks_words.js +0 -708
  155. package/admin/google-blockly/own/field_cron.js +0 -158
  156. package/admin/google-blockly/own/field_oid.js +0 -642
  157. package/admin/google-blockly/own/field_script.js +0 -159
@@ -1,480 +0,0 @@
1
- 'use strict';
2
-
3
- if (typeof goog !== 'undefined') {
4
- goog.provide('Blockly.JavaScript.Convert');
5
- goog.require('Blockly.JavaScript');
6
- }
7
-
8
- Blockly.CustomBlocks = Blockly.CustomBlocks || [];
9
- Blockly.CustomBlocks.push('Convert');
10
-
11
- Blockly.Convert = {
12
- HUE: 280,
13
- blocks: {},
14
- };
15
-
16
- Blockly.Blocks.Convert = {};
17
- Blockly.JavaScript.Convert = {};
18
-
19
- // --- to Number --------------------------------------------------
20
- Blockly.Convert.blocks['convert_tonumber'] =
21
- '<block type="convert_tonumber">' +
22
- '</block>';
23
-
24
- Blockly.Blocks.convert_tonumber = {
25
- init: function () {
26
- this.appendValueInput('VALUE')
27
- .appendField(Blockly.Translate('convert_tonumber'));
28
-
29
- this.setOutput(true, 'Number');
30
-
31
- this.setColour(Blockly.Convert.HUE);
32
-
33
- this.setTooltip(Blockly.Translate('convert_tonumber_tooltip'));
34
- },
35
- };
36
-
37
- Blockly.JavaScript.convert_tonumber = function (a) {
38
- return ['parseFloat(' + Blockly.JavaScript.valueToCode(a, 'VALUE', Blockly.JavaScript.ORDER_ATOMIC) + ')', Blockly.JavaScript.ORDER_ATOMIC];
39
- };
40
-
41
- // --- to Boolean --------------------------------------------------
42
- Blockly.Convert.blocks['convert_toboolean'] =
43
- '<block type="convert_toboolean">' +
44
- '</block>';
45
-
46
- Blockly.Blocks.convert_toboolean = {
47
- init: function () {
48
- this.appendValueInput('VALUE')
49
- .appendField(Blockly.Translate('convert_toboolean'));
50
-
51
- this.setOutput(true, 'Boolean');
52
-
53
- this.setColour(Blockly.Convert.HUE);
54
-
55
- this.setTooltip(Blockly.Translate('convert_toboolean_tooltip'));
56
- },
57
- };
58
-
59
- Blockly.JavaScript.forBlock['convert_toboolean'] = function (block) {
60
- const vValue = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ATOMIC);
61
-
62
- return ['(() => {\n' +
63
- ` const val = ${vValue};\n` +
64
- ` if (val === 'true' || val === 'TRUE') return true;\n` +
65
- ` if (val === 'false' || val === 'FALSE') return false;\n` +
66
- ' return !!val;\n' +
67
- '})()', Blockly.JavaScript.ORDER_ATOMIC];
68
- };
69
-
70
- // --- to String --------------------------------------------------
71
- Blockly.Convert.blocks['convert_tostring'] =
72
- '<block type="convert_tostring">' +
73
- '</block>';
74
-
75
- Blockly.Blocks.convert_tostring = {
76
- init: function () {
77
- this.appendValueInput('VALUE')
78
- .appendField(Blockly.Translate('convert_tostring'));
79
-
80
- this.setOutput(true, 'String');
81
-
82
- this.setColour(Blockly.Convert.HUE);
83
-
84
- this.setTooltip(Blockly.Translate('convert_tostring_tooltip'));
85
- },
86
- };
87
-
88
- Blockly.JavaScript.forBlock['convert_tostring'] = function (block) {
89
- const vValue = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ATOMIC);
90
-
91
- return [`('' + ${vValue})`, Blockly.JavaScript.ORDER_ATOMIC];
92
- };
93
-
94
- // --- get type --------------------------------------------------
95
- Blockly.Convert.blocks['convert_type'] =
96
- '<block type="convert_type">' +
97
- '</block>';
98
-
99
- Blockly.Blocks.convert_type = {
100
- init: function () {
101
- this.appendValueInput('ITEM')
102
- .appendField(Blockly.Translate('convert_type'));
103
-
104
- this.setOutput(true, 'String');
105
-
106
- this.setColour(Blockly.Convert.HUE);
107
-
108
- this.setTooltip(Blockly.Translate('convert_type_tooltip'));
109
- },
110
- };
111
-
112
- Blockly.JavaScript.forBlock['convert_type'] = function (block) {
113
- const vItem = Blockly.JavaScript.valueToCode(block, 'ITEM', Blockly.JavaScript.ORDER_ATOMIC);
114
-
115
- return [`typeof ${vItem}`, Blockly.JavaScript.ORDER_ATOMIC];
116
- };
117
-
118
- // --- to Date --------------------------------------------------
119
- Blockly.Convert.blocks['convert_to_date'] =
120
- '<block type="convert_to_date">' +
121
- '</block>';
122
-
123
- Blockly.Blocks.convert_to_date = {
124
- init: function () {
125
- this.appendValueInput('VALUE')
126
- .appendField(Blockly.Translate('convert_to_date'));
127
-
128
- this.setOutput(true, 'Date');
129
-
130
- this.setColour(Blockly.Convert.HUE);
131
-
132
- this.setTooltip(Blockly.Translate('convert_to_date_tooltip'));
133
- },
134
- };
135
-
136
- Blockly.JavaScript.forBlock['convert_to_date'] = function (block) {
137
- const vValue = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ATOMIC);
138
-
139
- return [`getDateObject(${vValue}).getTime()`, Blockly.JavaScript.ORDER_ATOMIC];
140
- };
141
-
142
- // --- from Date --------------------------------------------------
143
- Blockly.Convert.blocks['convert_from_date'] =
144
- '<block type="convert_from_date">' +
145
- ' <mutation format="false" language="false"></mutation>' +
146
- ' <field name="OPTION">object</field>' +
147
- '</block>';
148
-
149
- Blockly.Blocks.convert_from_date = {
150
- init: function () {
151
- this.appendValueInput('VALUE')
152
- .appendField(Blockly.Translate('convert_from_date'));
153
-
154
- this.appendDummyInput('OPTION')
155
- .appendField(Blockly.Translate('convert_to'))
156
- .appendField(new Blockly.FieldDropdown([
157
- [Blockly.Translate('time_get_object') , 'object'],
158
- [Blockly.Translate('time_get_ms') , 'ms'],
159
- [Blockly.Translate('time_get_s') , 's'],
160
- [Blockly.Translate('time_get_sid') , 'sid'],
161
- [Blockly.Translate('time_get_m') , 'm'],
162
- [Blockly.Translate('time_get_mid') , 'mid'],
163
- [Blockly.Translate('time_get_h') , 'h'],
164
- [Blockly.Translate('time_get_d') , 'd'],
165
- [Blockly.Translate('time_get_M') , 'M'],
166
- [Blockly.Translate('time_get_Mt') , 'Mt'],
167
- [Blockly.Translate('time_get_Mts') , 'Mts'],
168
- [Blockly.Translate('time_get_y') , 'y'],
169
- [Blockly.Translate('time_get_fy') , 'fy'],
170
- [Blockly.Translate('time_get_wdt') , 'wdt'],
171
- [Blockly.Translate('time_get_wdts') , 'wdts'],
172
- [Blockly.Translate('time_get_wd') , 'wd'],
173
- [Blockly.Translate('time_get_cw') , 'cw'],
174
- [Blockly.Translate('time_get_custom') , 'custom'],
175
- [Blockly.Translate('time_get_yyyy.mm.dd') , Blockly.Words['time_get_yyyy.mm.dd'] .format],
176
- [Blockly.Translate('time_get_yyyy/mm/dd') , Blockly.Words['time_get_yyyy/mm/dd'] .format],
177
- [Blockly.Translate('time_get_yy.mm.dd') , Blockly.Words['time_get_yy.mm.dd'] .format],
178
- [Blockly.Translate('time_get_yy/mm/dd') , Blockly.Words['time_get_yy/mm/dd'] .format],
179
- [Blockly.Translate('time_get_dd.mm.yyyy') , Blockly.Words['time_get_dd.mm.yyyy'] .format],
180
- [Blockly.Translate('time_get_dd/mm/yyyy') , Blockly.Words['time_get_dd/mm/yyyy'] .format],
181
- [Blockly.Translate('time_get_dd.mm.yy') , Blockly.Words['time_get_dd.mm.yy'] .format],
182
- [Blockly.Translate('time_get_dd/mm/yy') , Blockly.Words['time_get_dd/mm/yy'] .format],
183
- [Blockly.Translate('time_get_mm/dd/yyyy') , Blockly.Words['time_get_mm/dd/yyyy'] .format],
184
- [Blockly.Translate('time_get_mm/dd/yy') , Blockly.Words['time_get_mm/dd/yy'] .format],
185
- [Blockly.Translate('time_get_dd.mm') , Blockly.Words['time_get_dd.mm'] .format],
186
- [Blockly.Translate('time_get_dd/mm') , Blockly.Words['time_get_dd/mm'] .format],
187
- [Blockly.Translate('time_get_mm.dd') , Blockly.Words['time_get_mm.dd'] .format],
188
- [Blockly.Translate('time_get_mm/dd') , Blockly.Words['time_get_mm/dd'] .format],
189
- [Blockly.Translate('time_get_hh_mm') , Blockly.Words['time_get_hh_mm'] .format],
190
- [Blockly.Translate('time_get_hh_mm_ss') , Blockly.Words['time_get_hh_mm_ss'] .format],
191
- [Blockly.Translate('time_get_hh_mm_ss.sss') , Blockly.Words['time_get_hh_mm_ss.sss'].format],
192
- ], function (option) {
193
- this.sourceBlock_.updateShape_(option === 'custom', option === 'wdts' || option === 'wdt' || option === 'Mt' || option === 'Mts');
194
- }), 'OPTION');
195
-
196
- this.setInputsInline(true);
197
- this.setOutput(true);
198
-
199
- this.setColour(Blockly.Convert.HUE);
200
-
201
- this.setTooltip(Blockly.Translate('convert_from_date_tooltip'));
202
- },
203
- mutationToDom: function () {
204
- const container = document.createElement('mutation');
205
- const option = this.getFieldValue('OPTION');
206
-
207
- container.setAttribute('format', option === 'custom' ? 'true' : 'false');
208
- container.setAttribute('language', option === 'wdt' || option === 'wdts' || option === 'Mt' || option === 'Mts' ? 'true' : 'false');
209
-
210
- return container;
211
- },
212
- domToMutation: function (xmlElement) {
213
- const format = xmlElement.getAttribute('format');
214
- const language = xmlElement.getAttribute('language');
215
-
216
- this.updateShape_(format === true || format === 'true' || format === 'TRUE', language === true || language === 'true' || language === 'TRUE');
217
- },
218
- updateShape_: function (isFormat, isLanguage) {
219
- // Add or remove a delay Input.
220
- let inputExists;
221
- try {
222
- inputExists = this.getInput('FORMAT');
223
- } catch (e) {
224
- inputExists = null;
225
- }
226
-
227
- if (isFormat) {
228
- if (!inputExists) {
229
- this.appendDummyInput('FORMAT')
230
- .appendField(' ')
231
- .appendField(new Blockly.FieldTextInput(Blockly.Translate('time_get_default_format')), 'FORMAT');
232
- }
233
- } else if (inputExists) {
234
- this.removeInput('FORMAT');
235
- }
236
-
237
- try {
238
- inputExists = this.getInput('LANGUAGE');
239
- } catch (e) {
240
- inputExists = null;
241
- }
242
-
243
- if (isLanguage) {
244
- if (!inputExists) {
245
- let languages;
246
- if (systemLang === 'en') {
247
- languages = [['in english', 'en'], ['auf deutsch', 'de'], ['на русском', 'ru']];
248
- } else if (systemLang === 'de') {
249
- languages = [['auf deutsch', 'de'], ['in english', 'en'], ['на русском', 'ru']];
250
- } else if (systemLang === 'ru') {
251
- languages = [['на русском', 'ru'], ['in english', 'en'], ['auf deutsch', 'de']];
252
- } else {
253
- languages = [['in english', 'en'], ['auf deutsch', 'de'], ['на русском', 'ru']];
254
- }
255
- this.appendDummyInput('LANGUAGE')
256
- .appendField(new Blockly.FieldDropdown(languages), 'LANGUAGE');
257
- }
258
- } else if (inputExists) {
259
- this.removeInput('LANGUAGE');
260
- }
261
- },
262
- };
263
-
264
- Blockly.JavaScript.forBlock['convert_from_date'] = function (block) {
265
- const fOption = block.getFieldValue('OPTION');
266
- const fFormat = block.getFieldValue('FORMAT');
267
- const fLang = block.getFieldValue('LANGUAGE');
268
- const vValue = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ATOMIC);
269
-
270
- let code;
271
- if (fOption === 'object') {
272
- code = `getDateObject(${vValue}).getTime()`;
273
- } else if (fOption === 'ms') {
274
- code = `getDateObject(${vValue}).getMilliseconds()`;
275
- } else if (fOption === 's') {
276
- code = `getDateObject(${vValue}).getSeconds()`;
277
- } else if (fOption === 'sid') {
278
- code = `(() => { const v = getDateObject(${vValue}); return v.getHours() * 3600 + v.getMinutes() * 60 + v.getSeconds(); })()`;
279
- } else if (fOption === 'm') {
280
- code = `getDateObject(${vValue}).getMinutes()`;
281
- } else if (fOption === 'mid') {
282
- code = `(() => { const v = getDateObject(${vValue}); return v.getHours() * 60 + v.getMinutes(); })()`;
283
- } else if (fOption === 'h') {
284
- code = `getDateObject(${vValue}).getHours()`;
285
- } else if (fOption === 'd') {
286
- code = `getDateObject(${vValue}).getDate()`;
287
- } else if (fOption === 'M') {
288
- code = `(getDateObject(${vValue}).getMonth() + 1)`;
289
- } else if (fOption === 'Mt') {
290
- code = `formatDate(getDateObject(${vValue}), 'OO', '${fLang}')`;
291
- } else if (fOption === 'Mts') {
292
- code = `formatDate(getDateObject(${vValue}), 'O', '${fLang}')`;
293
- } else if (fOption === 'y') {
294
- code = `getDateObject(${vValue}).getYear()`;
295
- } else if (fOption === 'fy') {
296
- code = `getDateObject(${vValue}).getFullYear()`;
297
- } else if (fOption === 'wdt') {
298
- code = `formatDate(getDateObject(${vValue}), 'WW', '${fLang}')`;
299
- } else if (fOption === 'wdts') {
300
- code = `formatDate(getDateObject(${vValue}), 'W', '${fLang}')`;
301
- } else if (fOption === 'wd') {
302
- code = `(() => { const d = getDateObject(${vValue}).getDay(); return d === 0 ? 7 : d; })()`;
303
- } else if (fOption === 'cw') {
304
- code = `((date) => { const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())); const dayNum = d.getUTCDay() || 7; d.setUTCDate(d.getUTCDate() + 4 - dayNum); const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1)); return Math.ceil(((d.getTime() - yearStart.getTime()) / 86400000 + 1) / 7); })(getDateObject(${vValue}))`;
305
- } else if (fOption === 'custom') {
306
- code = `formatDate(getDateObject(${vValue}), ${Blockly.JavaScript.quote_(fFormat)})`;
307
- } else {
308
- code = `formatDate(getDateObject(${vValue}), ${Blockly.JavaScript.quote_(fOption)})`;
309
- }
310
-
311
- return [code, Blockly.JavaScript.ORDER_ATOMIC];
312
- };
313
-
314
- // --- time difference --------------------------------------------------
315
- Blockly.Convert.blocks['convert_time_difference'] =
316
- '<block type="convert_time_difference">' +
317
- ' <mutation format="false"></mutation> ' +
318
- ' <field name="OPTION">hh:mm:ss</field> ' +
319
- '</block>';
320
-
321
- Blockly.Blocks.convert_time_difference = {
322
- init: function () {
323
- this.appendValueInput('VALUE')
324
- .appendField(Blockly.Translate('convert_time_difference'));
325
-
326
- this.appendDummyInput('OPTION')
327
- .appendField(Blockly.Translate('convert_to'))
328
- .appendField(new Blockly.FieldDropdown([
329
- [Blockly.Translate('time_difference_hh:mm:ss'), 'hh:mm:ss'],
330
- [Blockly.Translate('time_difference_h:m:s'), 'h:m:s'],
331
- [Blockly.Translate('time_difference_hh:mm'), 'hh:mm'],
332
- [Blockly.Translate('time_difference_h:m'), 'h:m'],
333
- [Blockly.Translate('time_difference_mm:ss'), 'mm:ss'],
334
- [Blockly.Translate('time_difference_m:s'), 'm:s'],
335
- [Blockly.Translate('time_difference_custom'), 'custom'],
336
- ], function (option) {
337
- this.sourceBlock_.updateShape_(option === 'custom');
338
- }), 'OPTION');
339
-
340
- this.setInputsInline(true);
341
- this.setOutput(true, 'String');
342
-
343
- this.setColour(Blockly.Convert.HUE);
344
-
345
- this.setTooltip(Blockly.Translate('convert_time_difference_tooltip'));
346
- },
347
- mutationToDom: function () {
348
- const container = document.createElement('mutation');
349
- const option = this.getFieldValue('OPTION');
350
-
351
- container.setAttribute('format', option === 'custom' ? 'true' : 'false');
352
-
353
- return container;
354
- },
355
- domToMutation: function (xmlElement) {
356
- const format = xmlElement.getAttribute('format');
357
-
358
- this.updateShape_(format === true || format === 'true' || format === 'TRUE');
359
- },
360
- updateShape_: function (isFormat, isLanguage) {
361
- let inputExists;
362
- try {
363
- inputExists = this.getInput('FORMAT');
364
- } catch (e) {
365
- inputExists = null;
366
- }
367
-
368
- if (isFormat) {
369
- if (!inputExists) {
370
- this.appendDummyInput('FORMAT')
371
- .appendField(' ')
372
- .appendField(new Blockly.FieldTextInput(Blockly.Translate('time_difference_default_format')), 'FORMAT');
373
- }
374
- } else if (inputExists) {
375
- this.removeInput('FORMAT');
376
- }
377
- },
378
- };
379
-
380
- Blockly.JavaScript.forBlock['convert_time_difference'] = function (block) {
381
- const fOption = block.getFieldValue('OPTION');
382
- const fFormat = block.getFieldValue('FORMAT');
383
- const vValue = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ATOMIC);
384
-
385
- return [`formatTimeDiff(${vValue ? vValue : '0'}, ${Blockly.JavaScript.quote_(fOption === 'custom' ? fFormat : fOption)})`, Blockly.JavaScript.ORDER_ATOMIC];
386
- };
387
-
388
- // --- json2object --------------------------------------------------
389
- Blockly.Convert.blocks['convert_json2object'] =
390
- '<block type="convert_json2object">' +
391
- '</block>';
392
-
393
- Blockly.Blocks.convert_json2object = {
394
- init: function () {
395
- this.appendValueInput('VALUE')
396
- .appendField(Blockly.Translate('convert_json2object'));
397
-
398
- this.setOutput(true);
399
-
400
- this.setColour(Blockly.Convert.HUE);
401
-
402
- this.setTooltip(Blockly.Translate('convert_json2object_tooltip'));
403
- },
404
- };
405
-
406
- Blockly.JavaScript.forBlock['convert_json2object'] = function (block) {
407
- const vValue = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ATOMIC);
408
-
409
- return [`(() => { try { return JSON.parse(${vValue}); } catch (e) { return {}; }})()`, Blockly.JavaScript.ORDER_ATOMIC];
410
- };
411
-
412
- // --- object2json --------------------------------------------------
413
- Blockly.Convert.blocks['convert_object2json'] =
414
- '<block type="convert_object2json">' +
415
- ' <field name="PRETTIFY">FALSE</field>' +
416
- '</block>';
417
-
418
- Blockly.Blocks.convert_object2json = {
419
- init: function () {
420
- this.appendValueInput('VALUE')
421
- .appendField(Blockly.Translate('convert_object2json'));
422
-
423
- this.appendDummyInput('PRETTIFY')
424
- .appendField(Blockly.Translate('convert_object2json_prettify'))
425
- .appendField(new Blockly.FieldCheckbox('FALSE'), 'PRETTIFY');
426
-
427
- this.setOutput(true, 'String');
428
-
429
- this.setColour(Blockly.Convert.HUE);
430
-
431
- this.setTooltip(Blockly.Translate('convert_object2json_tooltip'));
432
- },
433
- };
434
-
435
- Blockly.JavaScript.forBlock['convert_object2json'] = function (block) {
436
- const vValue = Blockly.JavaScript.valueToCode(block, 'VALUE', Blockly.JavaScript.ORDER_ATOMIC);
437
-
438
- let fPrettify = block.getFieldValue('PRETTIFY');
439
- fPrettify = fPrettify === 'TRUE' || fPrettify === 'true' || fPrettify === true;
440
-
441
- return [`JSON.stringify(${vValue}${fPrettify ? ', null, 2' : ''})`, Blockly.JavaScript.ORDER_ATOMIC];
442
- };
443
-
444
- // --- to single value -------------------------------------------
445
- Blockly.Convert.blocks['convert_jsonata'] =
446
- '<block type="convert_jsonata">' +
447
- ' <value name="EXPRESSION">' +
448
- ' <shadow type="text">' +
449
- ' <field name="TEXT">*</field>' +
450
- ' </shadow>' +
451
- ' </value>' +
452
- '</block>';
453
-
454
- Blockly.Blocks.convert_jsonata = {
455
- init: function () {
456
- this.appendValueInput('EXPRESSION')
457
- .appendField(Blockly.Translate('convert_jsonata'));
458
-
459
- this.appendValueInput('TARGET')
460
- .appendField(Blockly.Translate('convert_jsonata_target'));
461
-
462
- this.setInputsInline(true);
463
- this.setOutput(true, 'String');
464
-
465
- this.setColour(Blockly.Convert.HUE);
466
-
467
- this.setTooltip(Blockly.Translate('convert_jsonata_tooltip'));
468
- },
469
- };
470
-
471
- Blockly.JavaScript.forBlock['convert_jsonata'] = function (block) {
472
- const vExpression = Blockly.JavaScript.valueToCode(block, 'EXPRESSION', Blockly.JavaScript.ORDER_ATOMIC);
473
-
474
- let vTarget = Blockly.JavaScript.valueToCode(block, 'TARGET', Blockly.JavaScript.ORDER_ATOMIC);
475
- if (!vTarget) {
476
- vTarget = '{}';
477
- }
478
-
479
- return [`(await jsonataExpression(${vTarget}, ${vExpression}))`, Blockly.JavaScript.ORDER_ATOMIC];
480
- };