From 88ce536587b43a54facef895a87b8ff293cf6460 Mon Sep 17 00:00:00 2001 From: Jason Thomas Date: Fri, 13 Sep 2024 20:32:57 -0600 Subject: [PATCH 1/2] Add Edit menu option and log line delay changes --- .../src/tools/ScriptRunner/ScriptRunner.vue | 21 +++++++++++++++++++ .../src/components/widgets/VWidget.js | 3 +++ .../app/models/running_script.rb | 2 ++ 3 files changed, 26 insertions(+) diff --git a/openc3-cosmos-init/plugins/packages/openc3-cosmos-tool-scriptrunner/src/tools/ScriptRunner/ScriptRunner.vue b/openc3-cosmos-init/plugins/packages/openc3-cosmos-tool-scriptrunner/src/tools/ScriptRunner/ScriptRunner.vue index 264142edf2..3c4e664ccc 100644 --- a/openc3-cosmos-init/plugins/packages/openc3-cosmos-tool-scriptrunner/src/tools/ScriptRunner/ScriptRunner.vue +++ b/openc3-cosmos-init/plugins/packages/openc3-cosmos-tool-scriptrunner/src/tools/ScriptRunner/ScriptRunner.vue @@ -725,6 +725,27 @@ export default { this.editor.execCommand('replace') }, }, + { + label: 'Set Line Delay', + icon: 'mdi-invoice-text-clock', + disabled: this.scriptId, + command: () => { + this.$dialog.open({ + title: 'Info', + text: + 'You can set the line delay in seconds using the api method set_line_delay().

' + + 'The default line delay is 0.1 seconds between lines. ' + + 'Adding set_line_delay(0) to the top of your script will execute the script at maximum speed. ' + + 'However, this can make it difficult to see and pause the script. ' + + 'Executing set_line_delay(1) will cause a 1 second delay between lines.', + okText: 'OK', + okClass: 'primary', + validateText: null, + cancelText: null, + html: true, + }) + }, + }, ], }, { diff --git a/openc3-cosmos-init/plugins/packages/openc3-tool-common/src/components/widgets/VWidget.js b/openc3-cosmos-init/plugins/packages/openc3-tool-common/src/components/widgets/VWidget.js index 8bf3a473c7..61db2494f5 100644 --- a/openc3-cosmos-init/plugins/packages/openc3-tool-common/src/components/widgets/VWidget.js +++ b/openc3-cosmos-init/plugins/packages/openc3-tool-common/src/components/widgets/VWidget.js @@ -247,6 +247,9 @@ export default { (this.valueId.includes('PACKET_TIMEFORMATTED') || this.valueId.includes('RECEIVED_TIMEFORMATTED')) ) { + // Our dates have / rather than - which results in an invalid date on old browsers + // when they call new Date(value) + value = value.replaceAll('/', '-') return this.formatUtcToLocal(new Date(value), this.timeZone) } // Convert json raw strings into the raw bytes diff --git a/openc3-cosmos-script-runner-api/app/models/running_script.rb b/openc3-cosmos-script-runner-api/app/models/running_script.rb index e49058ba1f..501eb45e28 100644 --- a/openc3-cosmos-script-runner-api/app/models/running_script.rb +++ b/openc3-cosmos-script-runner-api/app/models/running_script.rb @@ -617,6 +617,7 @@ def self.line_delay end def self.line_delay=(value) + @@instance.scriptrunner_puts("set_line_delay(#{value})") @@line_delay = value end @@ -1107,6 +1108,7 @@ def run_text(text, unless close_on_complete output = "Starting script: #{File.basename(@filename)}" output += " in DISCONNECT mode" if $disconnect + output += "\nget_line_delay() #=> #{@@line_delay}" scriptrunner_puts(output) end handle_output_io() From 676b2df878dd0fdd76e758ed344aa3a107692d9d Mon Sep 17 00:00:00 2001 From: Jason Thomas Date: Fri, 13 Sep 2024 21:45:26 -0600 Subject: [PATCH 2/2] Add python --- openc3-cosmos-script-runner-api/app/models/running_script.rb | 3 +-- openc3-cosmos-script-runner-api/scripts/running_script.py | 1 + openc3/lib/openc3/script/api_shared.rb | 5 +++-- openc3/python/openc3/script/api_shared.py | 1 + 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/openc3-cosmos-script-runner-api/app/models/running_script.rb b/openc3-cosmos-script-runner-api/app/models/running_script.rb index 501eb45e28..f0135ce848 100644 --- a/openc3-cosmos-script-runner-api/app/models/running_script.rb +++ b/openc3-cosmos-script-runner-api/app/models/running_script.rb @@ -617,7 +617,6 @@ def self.line_delay end def self.line_delay=(value) - @@instance.scriptrunner_puts("set_line_delay(#{value})") @@line_delay = value end @@ -1108,7 +1107,7 @@ def run_text(text, unless close_on_complete output = "Starting script: #{File.basename(@filename)}" output += " in DISCONNECT mode" if $disconnect - output += "\nget_line_delay() #=> #{@@line_delay}" + output += ", line_delay = #{@@line_delay}" scriptrunner_puts(output) end handle_output_io() diff --git a/openc3-cosmos-script-runner-api/scripts/running_script.py b/openc3-cosmos-script-runner-api/scripts/running_script.py index ac7c1a67f5..9ed7478901 100644 --- a/openc3-cosmos-script-runner-api/scripts/running_script.py +++ b/openc3-cosmos-script-runner-api/scripts/running_script.py @@ -953,6 +953,7 @@ def run_thread_body( output = f"Starting script: {os.path.basename(self.filename)}" if RunningScript.disconnect: output += " in DISCONNECT mode" + output += f", line_delay = {RunningScript.line_delay}" self.scriptrunner_puts(output) self.handle_output_io() diff --git a/openc3/lib/openc3/script/api_shared.rb b/openc3/lib/openc3/script/api_shared.rb index 2a6de56423..35fadbd599 100644 --- a/openc3/lib/openc3/script/api_shared.rb +++ b/openc3/lib/openc3/script/api_shared.rb @@ -461,8 +461,9 @@ def disable_instrumentation end def set_line_delay(delay) - if defined? RunningScript - RunningScript.line_delay = delay if delay >= 0.0 + if defined? RunningScript and delay >= 0.0 + RunningScript.line_delay = delay + puts "set_line_delay(#{delay})" end end diff --git a/openc3/python/openc3/script/api_shared.py b/openc3/python/openc3/script/api_shared.py index 10938ef907..76d0612f47 100644 --- a/openc3/python/openc3/script/api_shared.py +++ b/openc3/python/openc3/script/api_shared.py @@ -550,6 +550,7 @@ def disable_instrumentation(): def set_line_delay(delay): if openc3.script.RUNNING_SCRIPT and delay >= 0.0: openc3.script.RUNNING_SCRIPT.line_delay = delay + print(f"set_line_delay({delay})") def get_line_delay():