Skip to content

Commit

Permalink
Merge pull request #1337 from klein0r/blockly_9_3_3_1
Browse files Browse the repository at this point in the history
Custom procedures fix
  • Loading branch information
GermanBluefox committed Jun 13, 2023
2 parents 1d56119 + 70b53d6 commit 97dc84f
Show file tree
Hide file tree
Showing 10 changed files with 155 additions and 113 deletions.
8 changes: 4 additions & 4 deletions src/public/google-blockly/own/blocks_action.js
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ Blockly.JavaScript['exec'] = function(block) {
if (withStatement === 'TRUE' || withStatement === 'true' || withStatement === true) {
const statement = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
if (statement) {
return 'exec(' + value_command + ', async (error, result, stderr) => {\n ' + statement + '});\n' +
return 'exec(' + value_command + ', async (error, result, stderr) => {\n' + statement + '});\n' +
logText;
} else {
return 'exec(' + value_command + ');\n' +
Expand Down Expand Up @@ -205,11 +205,11 @@ Blockly.JavaScript['request'] = function(block) {
if (withStatement === 'TRUE' || withStatement === 'true' || withStatement === true) {
const statement = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
if (statement) {
return 'try {\n require("request")(' + URL + ', async (error, response, result) => {\n ' + statement + ' }).on("error", (e) => {console.error(e);});\n} catch (e) { console.error(e); }\n' + logText;
return 'try {\n require("request")(' + URL + ', async (error, response, result) => {\n ' + statement + ' }).on("error", (e) => { console.error(e); });\n} catch (e) { console.error(e); }\n' + logText;
} else {
return 'try {\n require("request")(' + URL + ').on("error", (e) => {console.error(e);});\n} catch (e) { console.error(e); }\n' + logText;
return 'try {\n require("request")(' + URL + ').on("error", (e) => { console.error(e); });\n} catch (e) { console.error(e); }\n' + logText;
}
} else {
return 'try {\n require("request")(' + URL + ').on("error", (e) => {console.error(e);});\n} catch (e) { console.error(e); }\n' + logText;
return 'try {\n require("request")(' + URL + ').on("error", (e) => { console.error(e); });\n} catch (e) { console.error(e); }\n' + logText;
}
};
3 changes: 2 additions & 1 deletion src/public/google-blockly/own/blocks_number.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,6 @@ Blockly.Blocks['math_rndfixed'] = {
Blockly.JavaScript['math_rndfixed'] = function(block) {
const x = Blockly.JavaScript.valueToCode(block, 'x', Blockly.JavaScript.ORDER_ATOMIC);
const exp = Math.pow(10, block.getFieldValue('n'));
return ['Math.round(' + x + ' * ' + exp + ') / ' + exp, Blockly.JavaScript.ORDER_ATOMIC];

return [`Math.round(${x} * ${exp}) / ${exp}`, Blockly.JavaScript.ORDER_ATOMIC];
};
181 changes: 106 additions & 75 deletions src/public/google-blockly/own/blocks_procedures.js

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions src/public/google-blockly/own/blocks_sendto.js
Original file line number Diff line number Diff line change
Expand Up @@ -438,5 +438,5 @@ Blockly.JavaScript['sendto_otherscript'] = function(block) {

text += '}';

return 'sendTo("javascript' + dropdown_instance + '", "toScript", ' + text + ');\n';
};
return `sendTo('javascript${dropdown_instance}', 'toScript', ${text});\n`;
};
3 changes: 2 additions & 1 deletion src/public/google-blockly/own/blocks_time.js
Original file line number Diff line number Diff line change
Expand Up @@ -486,5 +486,6 @@ Blockly.Blocks['time_astro'] = {
Blockly.JavaScript['time_astro'] = function(block) {
const type = block.getFieldValue('TYPE');
const offset = parseFloat(block.getFieldValue('OFFSET'));
return ['getAstroDate("' + type + '", undefined, ' + offset + ')', Blockly.JavaScript.ORDER_ATOMIC];

return [`getAstroDate('${type}', undefined, ${offset})`, Blockly.JavaScript.ORDER_ATOMIC];
};
58 changes: 31 additions & 27 deletions src/public/google-blockly/own/blocks_timeout.js
Original file line number Diff line number Diff line change
Expand Up @@ -113,13 +113,15 @@ Blockly.Blocks['timeouts_wait'] = {
};

Blockly.JavaScript['timeouts_wait'] = function(block) {
const unit = block.getFieldValue('UNIT');

let delay = block.getFieldValue('DELAY');
const unit = block.getFieldValue('UNIT');
if (unit === 'min') {
delay *= 60000;
} else if (unit === 'sec') {
delay *= 1000;
}

return 'await wait(' + delay + ');\n';
};

Expand Down Expand Up @@ -172,23 +174,25 @@ Blockly.Blocks['timeouts_settimeout'] = {
},
getVarModels: function () {
const name = this.getFieldValue('NAME');
return [{getId: function () {return name;}, name: name, type: 'timeout'}];
return [{ getId: () => { return name; }, name: name, type: 'timeout' }];
}
};

Blockly.JavaScript['timeouts_settimeout'] = function(block) {
const name = Blockly.JavaScript.variableDB_.safeName_(block.getFieldValue('NAME'));
const unit = block.getFieldValue('UNIT');

let delay = block.getFieldValue('DELAY');
const name = Blockly.JavaScript.variableDB_.safeName_(block.getFieldValue('NAME'));
const unit = block.getFieldValue('UNIT');
if (unit === 'min') {
delay *= 60000;
} else if (unit === 'sec') {
delay *= 1000;
}
const statements_name = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
return name + ' = setTimeout(async function () {\n' +

const statements = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
return name + ' = setTimeout(async () => {\n' +
Blockly.JavaScript.prefixLines(name + ' = null;', Blockly.JavaScript.INDENT) + '\n' +
statements_name +
statements +
'}, ' + delay + ');\n';
};

Expand Down Expand Up @@ -239,18 +243,18 @@ Blockly.Blocks['timeouts_settimeout_variable'] = {
},
getVarModels: function () {
const name = this.getFieldValue('NAME');
return [{getId: function () {return name;}, name: name, type: 'timeout'}];
return [{ getId: () => { return name; }, name: name, type: 'timeout' }];
}
};

Blockly.JavaScript['timeouts_settimeout_variable'] = function(block) {
const delay = Blockly.JavaScript.valueToCode(block, 'DELAY_MS', Blockly.JavaScript.ORDER_ATOMIC);
const name = Blockly.JavaScript.variableDB_.safeName_(block.getFieldValue('NAME'));
const statements_name = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
const name = Blockly.JavaScript.variableDB_.safeName_(block.getFieldValue('NAME'));
const statements = Blockly.JavaScript.statementToCode(block, 'STATEMENT');

return name + ' = setTimeout(async function () {\n' +
return name + ' = setTimeout(async () => {\n' +
Blockly.JavaScript.prefixLines(name + ' = null;', Blockly.JavaScript.INDENT) + '\n' +
statements_name +
statements +
'}, parseInt(' + delay + '));\n';
};

Expand Down Expand Up @@ -305,7 +309,7 @@ Blockly.Blocks['timeouts_cleartimeout'] = {

Blockly.JavaScript['timeouts_cleartimeout'] = function(block) {
const name = Blockly.JavaScript.variableDB_.safeName_(block.getFieldValue('NAME'));
return '(function () { if (' + name + ') { clearTimeout(' + name + '); ' + name + ' = null; }})();\n';
return '(() => { if (' + name + ') { clearTimeout(' + name + '); ' + name + ' = null; }})();\n';
};

// --- getTimeout -----------------------------------------------------------
Expand Down Expand Up @@ -386,24 +390,24 @@ Blockly.Blocks['timeouts_setinterval'] = {
},
getVarModels: function () {
const name = this.getFieldValue('NAME');
return [{getId: function () {return name;}, name: name, type: 'interval'}];
return [{ getId: () => { return name; }, name: name, type: 'interval' }];
}
};

Blockly.JavaScript['timeouts_setinterval'] = function(block) {
const name = Blockly.JavaScript.variableDB_.safeName_(block.getFieldValue('NAME'));
const unit = block.getFieldValue('UNIT');

let delay = block.getFieldValue('INTERVAL');
const name = Blockly.JavaScript.variableDB_.safeName_(block.getFieldValue('NAME'));
const unit = block.getFieldValue('UNIT');
if (unit === 'min') {
delay *= 60000;
} else if (unit === 'sec') {
delay *= 1000;
}

const statements_name = Blockly.JavaScript.statementToCode(block, 'STATEMENT');

return name + ' = setInterval(async function () {\n' +
statements_name +
const statements = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
return name + ' = setInterval(async () => {\n' +
statements +
'}, ' + delay + ');\n';
};

Expand Down Expand Up @@ -454,17 +458,17 @@ Blockly.Blocks['timeouts_setinterval_variable'] = {
},
getVarModels: function () {
const name = this.getFieldValue('NAME');
return [{getId: function () {return name;}, name: name, type: 'interval'}];
return [{ getId: () => { return name; }, name: name, type: 'interval' }];
}
};

Blockly.JavaScript['timeouts_setinterval_variable'] = function(block) {
const delay = Blockly.JavaScript.valueToCode(block, 'INTERVAL_MS', Blockly.JavaScript.ORDER_ATOMIC);
const name = Blockly.JavaScript.variableDB_.safeName_(block.getFieldValue('NAME'));
const statements_name = Blockly.JavaScript.statementToCode(block, 'STATEMENT');
const name = Blockly.JavaScript.variableDB_.safeName_(block.getFieldValue('NAME'));
const statements = Blockly.JavaScript.statementToCode(block, 'STATEMENT');

return name + ' = setInterval(async function () {\n' +
statements_name +
return name + ' = setInterval(async () => {\n' +
statements +
'}, parseInt(' + delay + '));\n';
};

Expand Down Expand Up @@ -520,7 +524,7 @@ Blockly.Blocks['timeouts_clearinterval'] = {
Blockly.JavaScript['timeouts_clearinterval'] = function(block) {
const name = Blockly.JavaScript.variableDB_.safeName_(block.getFieldValue('NAME'));

return '(function () { if (' + name + ') { clearInterval(' + name + '); ' + name + ' = null; }})();\n';
return '(() => { if (' + name + ') { clearInterval(' + name + '); ' + name + ' = null; }})();\n';
};

// --- getInterval -----------------------------------------------------------
Expand Down Expand Up @@ -549,5 +553,5 @@ Blockly.Blocks['timeouts_getinterval'] = {
Blockly.JavaScript['timeouts_getinterval'] = function(block) {
const name = Blockly.JavaScript.variableDB_.safeName_(block.getFieldValue('NAME'));

return [name, Blockly.JavaScript.ORDER_ATOMIC];;
return [name, Blockly.JavaScript.ORDER_ATOMIC];
};
2 changes: 1 addition & 1 deletion src/public/google-blockly/own/blocks_trigger.js
Original file line number Diff line number Diff line change
Expand Up @@ -678,7 +678,7 @@ Blockly.Blocks['schedule_create'] = {
},
getVarModels: function () {
const name = this.getFieldValue('NAME');
return [{getId: function () {return name;}, name: name, type: 'cron'}];
return [{ getId: () => { return name; }, name: name, type: 'cron' }];
}
};

Expand Down
2 changes: 1 addition & 1 deletion src/public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
<script type="text/javascript" src="google-blockly/javascript_compressed.js"></script>
<script type="text/javascript" src="google-blockly/own/blocks_words.js"></script>
<!-- Extending core categories -->
<script type="text/javascript" src="google-blockly/own/blocks_procedures.js"></script>
<script type="text/javascript" src="google-blockly/own/blocks_logic.js"></script>
<script type="text/javascript" src="google-blockly/own/blocks_text.js"></script>
<script type="text/javascript" src="google-blockly/own/blocks_number.js"></script>
Expand All @@ -76,7 +77,6 @@
<script type="text/javascript" src="google-blockly/own/blocks_time.js"></script>
<script type="text/javascript" src="google-blockly/own/blocks_convert.js"></script>
<script type="text/javascript" src="google-blockly/own/blocks_trigger.js"></script>
<script type="text/javascript" src="google-blockly/own/blocks_procedures.js"></script>
<script type="text/javascript" src="google-blockly/own/blocks_timeout.js"></script>
<script type="text/javascript" src="google-blockly/own/blocks_switch.js"></script>
</head>
Expand Down
3 changes: 3 additions & 0 deletions src/src/Components/BlocklyEditor.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -508,6 +508,9 @@ class BlocklyEditor extends React.Component {
blocklyWorkspace: this.blocklyWorkspace
};

// Workaround: Replace procedure category flyout
this.blocklyWorkspace.registerToolboxCategoryCallback('PROCEDURE', this.Blockly.Procedures.flyoutCategoryNew);

// Listen to events on master workspace.
this.blocklyWorkspace.addChangeListener(masterEvent => {
if (this.someSelected && Date.now() - this.someSelectedTime > 500) {
Expand Down
4 changes: 3 additions & 1 deletion src/src/Components/ScriptEditorVanilaMonaco.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -131,13 +131,15 @@ class ScriptEditor extends React.Component {
this.editor.focus();
this.editor.setValue(this.originalCode);
if (this.props.onToggleBreakpoint) {
// add onMouseDown listener to toggle breakpoints
this.editor.onMouseDown(e => {
if (e.target.detail && e.target.detail.glyphMarginLeft !== undefined) {
this.props.onToggleBreakpoint(e.target.position.lineNumber - 1);
}
});
} else {
this.editor.onMouseDown(null);
// remove onMouseDown listener
this.editor.onMouseDown(() => { /* nop */ });
}
}

Expand Down

0 comments on commit 97dc84f

Please sign in to comment.