Skip to content

Commit 55cd5f7

Browse files
committed
chore: release v7.8.0
* (klein0r) Added block for multiple or conditions * (klein0r) Raised supported ecmaVersion from es2018 to es2021 * (klein0r) Fixed getIdByName (returned the same id as array)
1 parent ae19ef5 commit 55cd5f7

File tree

74 files changed

+300
-111
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+300
-111
lines changed

CHANGELOG_OLD.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
The newest change log is in README.md
2+
## 7.5.1 (2023-12-18)
3+
4+
* (klein0r) Added option for calendar week to Blockly
5+
* (klein0r) Fixed inpaired round brackets of getMinutes (Blockly)
6+
27
## 7.5.0 (2023-12-15)
38

49
* (klein0r) Blockly: Day of week as number always returns 1 (monday) to 7 (sunday)

README.md

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ Since v5.5.0 of the JavaScript adapter the following locations (relative to the
4646
<!--
4747
### **WORK IN PROGRESS**
4848
-->
49-
### **WORK IN PROGRESS**
49+
### 7.8.0 (2024-01-29)
5050

5151
* (klein0r) Added block for multiple or conditions
5252
* (klein0r) Raised supported ecmaVersion from es2018 to es2021
@@ -71,11 +71,6 @@ Since v5.5.0 of the JavaScript adapter the following locations (relative to the
7171

7272
* (klein0r) Added schedules by state value (scheduleById)
7373

74-
### 7.5.1 (2023-12-18)
75-
76-
* (klein0r) Added option for calendar week to Blockly
77-
* (klein0r) Fixed inpaired round brackets of getMinutes (Blockly)
78-
7974
## License
8075
The MIT License (MIT)
8176

admin/asset-manifest.json

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,39 @@
11
{
22
"files": {
3-
"main.js": "/static/js/main.8c1c081e.js",
3+
"main.js": "/static/js/main.f67be889.js",
44
"static/css/864.42bfc5f3.chunk.css": "/static/css/864.42bfc5f3.chunk.css",
5-
"static/js/864.8c5abf54.chunk.js": "/static/js/864.8c5abf54.chunk.js",
5+
"static/js/864.511501bb.chunk.js": "/static/js/864.511501bb.chunk.js",
66
"static/js/805.7c367e53.chunk.js": "/static/js/805.7c367e53.chunk.js",
7-
"static/js/723.a75610c2.chunk.js": "/static/js/723.a75610c2.chunk.js",
8-
"static/js/66.ebb5d6fe.chunk.js": "/static/js/66.ebb5d6fe.chunk.js",
7+
"static/js/723.c39332d7.chunk.js": "/static/js/723.c39332d7.chunk.js",
8+
"static/js/66.65480213.chunk.js": "/static/js/66.65480213.chunk.js",
99
"static/js/281.fe2096fc.chunk.js": "/static/js/281.fe2096fc.chunk.js",
1010
"static/js/7.1d9b7afb.chunk.js": "/static/js/7.1d9b7afb.chunk.js",
1111
"static/js/666.f676e7ac.chunk.js": "/static/js/666.f676e7ac.chunk.js",
1212
"static/js/791.258dd609.chunk.js": "/static/js/791.258dd609.chunk.js",
1313
"static/js/164.2c2b1075.chunk.js": "/static/js/164.2c2b1075.chunk.js",
1414
"static/js/365.ca66a412.chunk.js": "/static/js/365.ca66a412.chunk.js",
1515
"static/js/147.ab44d2ab.chunk.js": "/static/js/147.ab44d2ab.chunk.js",
16-
"static/js/110.89ad9606.chunk.js": "/static/js/110.89ad9606.chunk.js",
16+
"static/js/110.622aba0f.chunk.js": "/static/js/110.622aba0f.chunk.js",
1717
"static/js/610.1561417c.chunk.js": "/static/js/610.1561417c.chunk.js",
1818
"static/js/715.7c0e8344.chunk.js": "/static/js/715.7c0e8344.chunk.js",
1919
"static/js/880.62623dec.chunk.js": "/static/js/880.62623dec.chunk.js",
20-
"static/js/662.fec2a802.chunk.js": "/static/js/662.fec2a802.chunk.js",
20+
"static/js/86.c5b90f52.chunk.js": "/static/js/86.c5b90f52.chunk.js",
2121
"static/js/399.f713c6bc.chunk.js": "/static/js/399.f713c6bc.chunk.js",
22-
"static/js/238.b904fead.chunk.js": "/static/js/238.b904fead.chunk.js",
23-
"static/js/77.9fe70d7d.chunk.js": "/static/js/77.9fe70d7d.chunk.js",
24-
"static/js/85.3afe2022.chunk.js": "/static/js/85.3afe2022.chunk.js",
22+
"static/js/238.33fc8eb6.chunk.js": "/static/js/238.33fc8eb6.chunk.js",
23+
"static/js/77.629f62ea.chunk.js": "/static/js/77.629f62ea.chunk.js",
24+
"static/js/85.bd234575.chunk.js": "/static/js/85.bd234575.chunk.js",
2525
"static/js/983.3f5b808f.chunk.js": "/static/js/983.3f5b808f.chunk.js",
26-
"static/js/888.f2162868.chunk.js": "/static/js/888.f2162868.chunk.js",
27-
"static/js/223.2ce55a07.chunk.js": "/static/js/223.2ce55a07.chunk.js",
28-
"static/js/895.9237a1ad.chunk.js": "/static/js/895.9237a1ad.chunk.js",
26+
"static/js/888.42b62921.chunk.js": "/static/js/888.42b62921.chunk.js",
27+
"static/js/223.c9ffe7a1.chunk.js": "/static/js/223.c9ffe7a1.chunk.js",
28+
"static/js/895.a56a5733.chunk.js": "/static/js/895.a56a5733.chunk.js",
2929
"static/js/419.daaba277.chunk.js": "/static/js/419.daaba277.chunk.js",
30-
"static/js/562.8a3aa23b.chunk.js": "/static/js/562.8a3aa23b.chunk.js",
31-
"static/js/774.a3bcb017.chunk.js": "/static/js/774.a3bcb017.chunk.js",
30+
"static/js/181.8780595a.chunk.js": "/static/js/181.8780595a.chunk.js",
31+
"static/js/774.ca498df3.chunk.js": "/static/js/774.ca498df3.chunk.js",
3232
"static/js/956.8456a0f8.chunk.js": "/static/js/956.8456a0f8.chunk.js",
3333
"static/js/377.2f585ccd.chunk.js": "/static/js/377.2f585ccd.chunk.js",
34-
"static/js/838.b6d6870a.chunk.js": "/static/js/838.b6d6870a.chunk.js",
34+
"static/js/838.b2f46849.chunk.js": "/static/js/838.b2f46849.chunk.js",
3535
"static/js/17.ec756001.chunk.js": "/static/js/17.ec756001.chunk.js",
36-
"static/js/917.05d2dfa0.chunk.js": "/static/js/917.05d2dfa0.chunk.js",
36+
"static/js/344.d013b164.chunk.js": "/static/js/344.d013b164.chunk.js",
3737
"static/media/tileRules.png": "/static/media/tileRules.7ed5885a66686cc288b1.png",
3838
"static/media/docs.md": "/static/media/docs.1f96bec81cf08933d921.md",
3939
"static/media/back.jpg": "/static/media/back.bda2bbe51be338a0f657.jpg",
@@ -161,42 +161,42 @@
161161
"static/media/Garage Doors.svg": "/static/media/Garage Doors.0c2a1cfca7ad1ea59625.svg",
162162
"static/media/Outdoor Blinds.svg": "/static/media/Outdoor Blinds.37b85a9c060a4af48da9.svg",
163163
"static/media/Upstairs.svg": "/static/media/Upstairs.441813e54e0daca0882d.svg",
164-
"main.8c1c081e.js.map": "/static/js/main.8c1c081e.js.map",
164+
"main.f67be889.js.map": "/static/js/main.f67be889.js.map",
165165
"864.42bfc5f3.chunk.css.map": "/static/css/864.42bfc5f3.chunk.css.map",
166-
"864.8c5abf54.chunk.js.map": "/static/js/864.8c5abf54.chunk.js.map",
166+
"864.511501bb.chunk.js.map": "/static/js/864.511501bb.chunk.js.map",
167167
"805.7c367e53.chunk.js.map": "/static/js/805.7c367e53.chunk.js.map",
168-
"723.a75610c2.chunk.js.map": "/static/js/723.a75610c2.chunk.js.map",
169-
"66.ebb5d6fe.chunk.js.map": "/static/js/66.ebb5d6fe.chunk.js.map",
168+
"723.c39332d7.chunk.js.map": "/static/js/723.c39332d7.chunk.js.map",
169+
"66.65480213.chunk.js.map": "/static/js/66.65480213.chunk.js.map",
170170
"281.fe2096fc.chunk.js.map": "/static/js/281.fe2096fc.chunk.js.map",
171171
"7.1d9b7afb.chunk.js.map": "/static/js/7.1d9b7afb.chunk.js.map",
172172
"666.f676e7ac.chunk.js.map": "/static/js/666.f676e7ac.chunk.js.map",
173173
"791.258dd609.chunk.js.map": "/static/js/791.258dd609.chunk.js.map",
174174
"164.2c2b1075.chunk.js.map": "/static/js/164.2c2b1075.chunk.js.map",
175175
"365.ca66a412.chunk.js.map": "/static/js/365.ca66a412.chunk.js.map",
176176
"147.ab44d2ab.chunk.js.map": "/static/js/147.ab44d2ab.chunk.js.map",
177-
"110.89ad9606.chunk.js.map": "/static/js/110.89ad9606.chunk.js.map",
177+
"110.622aba0f.chunk.js.map": "/static/js/110.622aba0f.chunk.js.map",
178178
"610.1561417c.chunk.js.map": "/static/js/610.1561417c.chunk.js.map",
179179
"715.7c0e8344.chunk.js.map": "/static/js/715.7c0e8344.chunk.js.map",
180180
"880.62623dec.chunk.js.map": "/static/js/880.62623dec.chunk.js.map",
181-
"662.fec2a802.chunk.js.map": "/static/js/662.fec2a802.chunk.js.map",
181+
"86.c5b90f52.chunk.js.map": "/static/js/86.c5b90f52.chunk.js.map",
182182
"399.f713c6bc.chunk.js.map": "/static/js/399.f713c6bc.chunk.js.map",
183-
"238.b904fead.chunk.js.map": "/static/js/238.b904fead.chunk.js.map",
184-
"77.9fe70d7d.chunk.js.map": "/static/js/77.9fe70d7d.chunk.js.map",
185-
"85.3afe2022.chunk.js.map": "/static/js/85.3afe2022.chunk.js.map",
183+
"238.33fc8eb6.chunk.js.map": "/static/js/238.33fc8eb6.chunk.js.map",
184+
"77.629f62ea.chunk.js.map": "/static/js/77.629f62ea.chunk.js.map",
185+
"85.bd234575.chunk.js.map": "/static/js/85.bd234575.chunk.js.map",
186186
"983.3f5b808f.chunk.js.map": "/static/js/983.3f5b808f.chunk.js.map",
187-
"888.f2162868.chunk.js.map": "/static/js/888.f2162868.chunk.js.map",
188-
"223.2ce55a07.chunk.js.map": "/static/js/223.2ce55a07.chunk.js.map",
189-
"895.9237a1ad.chunk.js.map": "/static/js/895.9237a1ad.chunk.js.map",
187+
"888.42b62921.chunk.js.map": "/static/js/888.42b62921.chunk.js.map",
188+
"223.c9ffe7a1.chunk.js.map": "/static/js/223.c9ffe7a1.chunk.js.map",
189+
"895.a56a5733.chunk.js.map": "/static/js/895.a56a5733.chunk.js.map",
190190
"419.daaba277.chunk.js.map": "/static/js/419.daaba277.chunk.js.map",
191-
"562.8a3aa23b.chunk.js.map": "/static/js/562.8a3aa23b.chunk.js.map",
192-
"774.a3bcb017.chunk.js.map": "/static/js/774.a3bcb017.chunk.js.map",
191+
"181.8780595a.chunk.js.map": "/static/js/181.8780595a.chunk.js.map",
192+
"774.ca498df3.chunk.js.map": "/static/js/774.ca498df3.chunk.js.map",
193193
"956.8456a0f8.chunk.js.map": "/static/js/956.8456a0f8.chunk.js.map",
194194
"377.2f585ccd.chunk.js.map": "/static/js/377.2f585ccd.chunk.js.map",
195-
"838.b6d6870a.chunk.js.map": "/static/js/838.b6d6870a.chunk.js.map",
195+
"838.b2f46849.chunk.js.map": "/static/js/838.b2f46849.chunk.js.map",
196196
"17.ec756001.chunk.js.map": "/static/js/17.ec756001.chunk.js.map",
197-
"917.05d2dfa0.chunk.js.map": "/static/js/917.05d2dfa0.chunk.js.map"
197+
"344.d013b164.chunk.js.map": "/static/js/344.d013b164.chunk.js.map"
198198
},
199199
"entrypoints": [
200-
"static/js/main.8c1c081e.js"
200+
"static/js/main.f67be889.js"
201201
]
202202
}

admin/google-blockly/own/blocks_logic.js

Lines changed: 185 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,191 @@ Blockly.JavaScript['logic_multi_and'] = function(block) {
185185
}
186186
}
187187

188-
return [`(${ands.length > 0 ? ands.join(' && ') : 'false'})`, Blockly.JavaScript.ORDER_ATOMIC];
188+
return [`(${ands.length > 0 ? ands.join(' && ') : 'false'})`, Blockly.JavaScript.ORDER_LOGICAL_AND];
189+
};
190+
191+
// --- logic multi or --------------------------------------------------
192+
193+
Blockly.Blocks['logic_multi_or_container'] = {
194+
/**
195+
* Mutator block for container.
196+
* @this Blockly.Block
197+
*/
198+
init: function() {
199+
this.setColour("%{BKY_LOGIC_HUE}");
200+
201+
this.appendDummyInput()
202+
.appendField(Blockly.Translate('logic_multi_or'));
203+
204+
this.appendStatementInput('STACK');
205+
this.setTooltip(Blockly.Translate('logic_multi_or_tooltip'));
206+
207+
this.contextMenu = false;
208+
}
209+
};
210+
211+
Blockly.Blocks['logic_multi_or_mutator'] = {
212+
/**
213+
* Mutator block for add items.
214+
* @this Blockly.Block
215+
*/
216+
init: function() {
217+
this.setColour("%{BKY_LOGIC_HUE}");
218+
219+
this.appendDummyInput('OR')
220+
.appendField(Blockly.Translate('logic_multi_or_or'));
221+
222+
this.setPreviousStatement(true);
223+
this.setNextStatement(true);
224+
225+
this.setTooltip(Blockly.Translate('logic_multi_or_tooltip'));
226+
227+
this.contextMenu = false;
228+
}
229+
};
230+
231+
Blockly.Blocks['logic_multi_or'] = {
232+
init: function() {
233+
this.itemCount_ = 2;
234+
this.setMutator(new Blockly.Mutator(['logic_multi_or_mutator']));
235+
236+
this.setInputsInline(false);
237+
this.setOutput(true, 'Boolean');
238+
239+
this.setColour("%{BKY_LOGIC_HUE}");
240+
this.setTooltip(Blockly.Translate('logic_multi_or_tooltip'));
241+
// this.setHelpUrl(getHelp('logic_multi_or_help'));
242+
},
243+
/**
244+
* Create XML to represent number of text inputs.
245+
* @return {!Element} XML storage element.
246+
* @this Blockly.Block
247+
*/
248+
mutationToDom: function () {
249+
const container = document.createElement('mutation');
250+
container.setAttribute('items', this.itemCount_);
251+
252+
return container;
253+
},
254+
/**
255+
* Parse XML to restore the text inputs.
256+
* @param {!Element} xmlElement XML storage element.
257+
* @this Blockly.Block
258+
*/
259+
domToMutation: function (xmlElement) {
260+
this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);
261+
this.updateShape_();
262+
},
263+
/**
264+
* Populate the mutator's dialog with this block's components.
265+
* @param {!Blockly.Workspace} workspace Mutator's workspace.
266+
* @return {!Blockly.Block} Root block in mutator.
267+
* @this Blockly.Block
268+
*/
269+
decompose: function (workspace) {
270+
const containerBlock = workspace.newBlock('logic_multi_or_container');
271+
containerBlock.initSvg();
272+
273+
let connection = containerBlock.getInput('STACK').connection;
274+
for (let i = 0; i < this.itemCount_; i++) {
275+
const itemBlock = workspace.newBlock('logic_multi_or_mutator');
276+
itemBlock.initSvg();
277+
connection.connect(itemBlock.previousConnection);
278+
connection = itemBlock.nextConnection;
279+
}
280+
281+
return containerBlock;
282+
},
283+
/**
284+
* Reconfigure this block based on the mutator dialog's components.
285+
* @param {!Blockly.Block} containerBlock Root block in mutator.
286+
* @this Blockly.Block
287+
*/
288+
compose: function (containerBlock) {
289+
let itemBlock = containerBlock.getInputTargetBlock('STACK');
290+
// Count number of inputs.
291+
const connections = [];
292+
while (itemBlock) {
293+
connections.push(itemBlock.valueConnection_);
294+
itemBlock = itemBlock.nextConnection &&
295+
itemBlock.nextConnection.targetBlock();
296+
}
297+
298+
// Disconnect any children that don't belong.
299+
for (let k = 0; k < this.itemCount_; k++) {
300+
const connection = this.getInput('OR' + k).connection.targetConnection;
301+
if (connection && connections.indexOf(connection) === -1) {
302+
connection.disconnect();
303+
}
304+
}
305+
306+
this.itemCount_ = connections.length;
307+
if (this.itemCount_ < 2) {
308+
this.itemCount_ = 2;
309+
}
310+
this.updateShape_();
311+
312+
// Reconnect any child blocks.
313+
for (let i = 0; i < this.itemCount_; i++) {
314+
Blockly.Mutator.reconnect(connections[i], this, 'OR' + i);
315+
}
316+
},
317+
/**
318+
* Store pointers to any connected child blocks.
319+
* @param {!Blockly.Block} containerBlock Root block in mutator.
320+
* @this Blockly.Block
321+
*/
322+
saveConnections: function(containerBlock) {
323+
let itemBlock = containerBlock.getInputTargetBlock('STACK');
324+
let i = 0;
325+
326+
while (itemBlock) {
327+
const input = this.getInput('OR' + i);
328+
itemBlock.valueConnection_ = input && input.connection.targetConnection;
329+
i++;
330+
itemBlock = itemBlock.nextConnection &&
331+
itemBlock.nextConnection.targetBlock();
332+
}
333+
},
334+
/**
335+
* Modify this block to have the correct number of inputs.
336+
* @private
337+
* @this Blockly.Block
338+
*/
339+
updateShape_: function() {
340+
if (this.itemCount_ && this.getInput('EMPTY')) {
341+
this.removeInput('EMPTY');
342+
} else if (!this.itemCount_ && !this.getInput('EMPTY')) {
343+
this.appendDummyInput('EMPTY')
344+
.appendField(this.newQuote_(true))
345+
.appendField(this.newQuote_(false));
346+
}
347+
// Add new inputs.
348+
for (let i = 0; i < this.itemCount_; i++) {
349+
if (!this.getInput('OR' + i)) {
350+
const input = this.appendValueInput('OR' + i).setAlign(Blockly.ALIGN_RIGHT);
351+
if (i > 0) {
352+
input.appendField(Blockly.Translate('logic_multi_or_or'));
353+
}
354+
}
355+
}
356+
// Remove deleted inputs.
357+
for (let i = this.itemCount_; this.getInput('OR' + i); i++) {
358+
this.removeInput('OR' + i);
359+
}
360+
}
361+
};
362+
363+
Blockly.JavaScript['logic_multi_or'] = function(block) {
364+
const ors = [];
365+
for (let n = 0; n < block.itemCount_; n++) {
366+
const condition = Blockly.JavaScript.valueToCode(block, 'OR' + n, Blockly.JavaScript.ORDER_COMMA);
367+
if (condition) {
368+
ors.push(condition);
369+
}
370+
}
371+
372+
return [`(${ors.length > 0 ? ors.join(' || ') : 'false'})`, Blockly.JavaScript.ORDER_LOGICAL_OR];
189373
};
190374

191375
// --- logic between --------------------------------------------------

0 commit comments

Comments
 (0)