Fix Blockly timer code (#1236)

Fix #1214.

Signed-off-by: Yannick Schaus <github@schaus.net>
pull/1237/head
Yannick Schaus 2021-12-17 01:29:25 +01:00 committed by GitHub
parent 7514f4fabf
commit d72e9164a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 3 additions and 5 deletions

View File

@ -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':