Fix Blockly timer code (#1236)
Fix #1214. Signed-off-by: Yannick Schaus <github@schaus.net>pull/1237/head
parent
7514f4fabf
commit
d72e9164a7
|
@ -78,10 +78,9 @@ export default function defineOHBlocks_Timers (f7) {
|
||||||
let timerName = Blockly.JavaScript.valueToCode(block, 'timerName', Blockly.JavaScript.ORDER_ATOMIC)
|
let timerName = Blockly.JavaScript.valueToCode(block, 'timerName', Blockly.JavaScript.ORDER_ATOMIC)
|
||||||
let timerCode = Blockly.JavaScript.statementToCode(block, 'timerCode')
|
let timerCode = Blockly.JavaScript.statementToCode(block, 'timerCode')
|
||||||
|
|
||||||
let code = `if (typeof this.timers[${timerName}] === 'undefined') {\n`
|
let code = `if (typeof this.timers[${timerName}] === 'undefined' || this.timers[${timerName}].hasTerminated()) {\n`
|
||||||
code += ` this.timers[${timerName}] = ${scriptExecution}.createTimer(${zdt}.now().${delayunits}(${delay}), function () {\n`
|
code += ` this.timers[${timerName}] = ${scriptExecution}.createTimer(${zdt}.now().${delayunits}(${delay}), function () {\n`
|
||||||
code += timerCode.replace(/^/gm, ' ')
|
code += timerCode.replace(/^/gm, ' ')
|
||||||
code += ` this.timers[${timerName}] = undefined;\n`
|
|
||||||
code += ' })\n'
|
code += ' })\n'
|
||||||
code += '}\n'
|
code += '}\n'
|
||||||
return code
|
return code
|
||||||
|
@ -130,15 +129,14 @@ export default function defineOHBlocks_Timers (f7) {
|
||||||
let retrigger = block.getFieldValue('retrigger')
|
let retrigger = block.getFieldValue('retrigger')
|
||||||
let timerCode = Blockly.JavaScript.statementToCode(block, 'timerCode')
|
let timerCode = Blockly.JavaScript.statementToCode(block, 'timerCode')
|
||||||
|
|
||||||
let code = `if (typeof this.timers[${timerName}] === 'undefined') {\n`
|
let code = `if (typeof this.timers[${timerName}] === 'undefined' || this.timers[${timerName}].hasTerminated()) {\n`
|
||||||
code += ` this.timers[${timerName}] = ${scriptExecution}.createTimer(${zdt}.now().${delayUnits}(${delay}), function () {\n`
|
code += ` this.timers[${timerName}] = ${scriptExecution}.createTimer(${zdt}.now().${delayUnits}(${delay}), function () {\n`
|
||||||
code += timerCode.replace(/^/gm, ' ')
|
code += timerCode.replace(/^/gm, ' ')
|
||||||
code += ` this.timers[${timerName}] = undefined;\n`
|
|
||||||
code += ' })\n'
|
code += ' })\n'
|
||||||
code += '} else {\n'
|
code += '} else {\n'
|
||||||
switch (retrigger) {
|
switch (retrigger) {
|
||||||
case 'reschedule':
|
case 'reschedule':
|
||||||
code += ` this.timers[${timerName}].reschedule(zonedDateTime.now().${delayUnits}(${delay}));\n`
|
code += ` this.timers[${timerName}].reschedule(${zdt}.now().${delayUnits}(${delay}));\n`
|
||||||
break
|
break
|
||||||
|
|
||||||
case 'cancel':
|
case 'cancel':
|
||||||
|
|
Loading…
Reference in New Issue