From b7b6bb13fad8133c5e66f88adcc335834376db27 Mon Sep 17 00:00:00 2001 From: Ryan Pratt Date: Thu, 2 Jan 2025 13:24:36 -0700 Subject: [PATCH 1/4] Fix linter errors --- .../openc3-vue-common/src/components/EditScreenDialog.vue | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/openc3-cosmos-init/plugins/packages/openc3-vue-common/src/components/EditScreenDialog.vue b/openc3-cosmos-init/plugins/packages/openc3-vue-common/src/components/EditScreenDialog.vue index 0a157b97d2..5d461f2e87 100644 --- a/openc3-cosmos-init/plugins/packages/openc3-vue-common/src/components/EditScreenDialog.vue +++ b/openc3-cosmos-init/plugins/packages/openc3-vue-common/src/components/EditScreenDialog.vue @@ -171,8 +171,10 @@ export default { if (this.errors.length !== 0) { let messages = new Set() let result = [] - this.errors.sort((a, b) => a.lineNumber - b.lineNumber) - for (const error of this.errors) { + const sortedErrors = this.errors.toSorted( + (a, b) => a.lineNumber - b.lineNumber, + ) + for (const error of sortedErrors) { let msg = `At ${error.lineNumber}: (${error.line}) ${error.message}.` if (error.usage) { msg += ` Usage: ${error.usage}` From 4b7d72c06b50edc3b2d33a99689295980e82d6d1 Mon Sep 17 00:00:00 2001 From: Ryan Pratt Date: Thu, 2 Jan 2025 13:25:18 -0700 Subject: [PATCH 2/4] Fix initial items in TargetPacketItemChooser This fixes the bug where PacketViewer appeared to not remember the last selected packet in the default config --- .../src/components/TargetPacketItemChooser.vue | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/openc3-cosmos-init/plugins/packages/openc3-vue-common/src/components/TargetPacketItemChooser.vue b/openc3-cosmos-init/plugins/packages/openc3-vue-common/src/components/TargetPacketItemChooser.vue index 48b71fd6a3..6c6acc47a9 100644 --- a/openc3-cosmos-init/plugins/packages/openc3-vue-common/src/components/TargetPacketItemChooser.vue +++ b/openc3-cosmos-init/plugins/packages/openc3-vue-common/src/components/TargetPacketItemChooser.vue @@ -323,6 +323,24 @@ export default { }, }, watch: { + initialTargetName: function (val) { + // These three "initial" watchers are here in case the parent component doesn't figure out its inital values + // until after this component has already been created. All this logic incl. the "on-set" events could be + // simplified with a refactor to use named v-models, but that's probably a significant breaking change. + if (val) { + this.selectedTargetName = val.toUpperCase() + } + }, + initialPacketName: function (val) { + if (val) { + this.selectedPacketName = val.toUpperCase() + } + }, + initialItemName: function (val) { + if (val) { + this.selectedItemName = val.toUpperCase() + } + }, mode: function (newVal, oldVal) { this.selectedPacketName = null this.selectedItemName = null From 20aaa1f0fbc05563c0488b3e175fc321573a9b27 Mon Sep 17 00:00:00 2001 From: Ryan Pratt Date: Thu, 2 Jan 2025 14:45:43 -0700 Subject: [PATCH 3/4] Fix errors in packetviewer when there's no target/packet set --- .../src/tools/PacketViewer/PacketViewer.vue | 63 ++++++++++++------- 1 file changed, 42 insertions(+), 21 deletions(-) diff --git a/openc3-cosmos-init/plugins/packages/openc3-cosmos-tool-packetviewer/src/tools/PacketViewer/PacketViewer.vue b/openc3-cosmos-init/plugins/packages/openc3-cosmos-tool-packetviewer/src/tools/PacketViewer/PacketViewer.vue index 6e11c915b8..1b7f62e4ae 100644 --- a/openc3-cosmos-init/plugins/packages/openc3-cosmos-tool-packetviewer/src/tools/PacketViewer/PacketViewer.vue +++ b/openc3-cosmos-init/plugins/packages/openc3-cosmos-tool-packetviewer/src/tools/PacketViewer/PacketViewer.vue @@ -491,31 +491,49 @@ export default { } }, packetChanged(event) { - this.api.get_target(event.targetName).then((target) => { - this.ignoredItems = target.ignored_items - }) this.api - .get_packet_derived_items(event.targetName, event.packetName) - .then((derived) => { - this.derivedItems = derived + .get_target(event.targetName) + .then((target) => { + if (target) { + this.ignoredItems = target.ignored_items + + return this.api.get_packet_derived_items( + event.targetName, + event.packetName, + ) + } else { + // Probably got here from an old config or URL params that point to something that no longer exists + // (e.g. the plugin that defined this target was deleted). Unset these to avoid API errors. + this.targetName = null + this.packetName = null + this.$router.push({ + name: 'PackerViewer', + params: {}, + }) + } }) + .then((derived) => { + if (derived) { + this.derivedItems = derived - this.targetName = event.targetName - this.packetName = event.packetName - if ( - this.$route.params.target !== event.targetName || - this.$route.params.packet !== event.packetName - ) { - this.saveDefaultConfig(this.currentConfig) - this.$router.push({ - name: 'PackerViewer', - params: { - target: this.targetName, - packet: this.packetName, - }, + this.targetName = event.targetName + this.packetName = event.packetName + if ( + this.$route.params.target !== event.targetName || + this.$route.params.packet !== event.packetName + ) { + this.saveDefaultConfig(this.currentConfig) + this.$router.push({ + name: 'PackerViewer', + params: { + target: this.targetName, + packet: this.packetName, + }, + }) + } + this.changeUpdater(true) + } }) - } - this.changeUpdater(true) }, changeUpdater(clearExisting) { if (this.updater != null) { @@ -526,6 +544,9 @@ export default { this.rows = [] } this.updater = setInterval(() => { + if (!this.targetName || !this.packetName) { + return // noop if target/packet aren't set + } this.api .get_tlm_packet( this.targetName, From cefeac07302939ceab4a693b5e4feeb1ec5ee123 Mon Sep 17 00:00:00 2001 From: Ryan Pratt Date: Thu, 2 Jan 2025 14:51:00 -0700 Subject: [PATCH 4/4] typo --- .../src/components/TargetPacketItemChooser.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openc3-cosmos-init/plugins/packages/openc3-vue-common/src/components/TargetPacketItemChooser.vue b/openc3-cosmos-init/plugins/packages/openc3-vue-common/src/components/TargetPacketItemChooser.vue index 6c6acc47a9..9f676e3f39 100644 --- a/openc3-cosmos-init/plugins/packages/openc3-vue-common/src/components/TargetPacketItemChooser.vue +++ b/openc3-cosmos-init/plugins/packages/openc3-vue-common/src/components/TargetPacketItemChooser.vue @@ -324,7 +324,7 @@ export default { }, watch: { initialTargetName: function (val) { - // These three "initial" watchers are here in case the parent component doesn't figure out its inital values + // These three "initial" watchers are here in case the parent component doesn't figure out its initial values // until after this component has already been created. All this logic incl. the "on-set" events could be // simplified with a refactor to use named v-models, but that's probably a significant breaking change. if (val) {