diff --git a/webapp/src/App.vue b/webapp/src/App.vue index fc704ff9..5db6ecca 100644 --- a/webapp/src/App.vue +++ b/webapp/src/App.vue @@ -249,6 +249,9 @@ export default { handleExit() {}, + /** + * Handle global mouse wheel events to be associated with navigation + */ wheelMonitor(event) { if ( event.target.parentNode.classList.contains("scrollTarget") || @@ -261,6 +264,13 @@ export default { } }, + /** + * Jog for key-presses. + * + * This is a similar to the function in stageControlButtons.vue however it uses + * uses the key repeat to fire in case a key up is missed. It debounces any + * request to jog that is too recent after the last jog. + */ jog(x, y, z) { const now = Date.now(); if (now - this.lastJogTime < this.jogTime) { @@ -275,6 +285,13 @@ export default { eventBus.emit("globalUpdatePositionEvent"); }, + /** + * Stop jogging on key-up + * + * This is also similar to the function in stageControlButtons.vue. It handles + * stopping jogging and resetting the `lastJogTime` so there is no delay when + * starting a new jog after an old jog finished. + */ jogStop() { this.invokeAction("stage", "jog", { stop: true }); this.lastJogTime = 0; @@ -283,6 +300,9 @@ export default { }, 100); }, + /** + * Track which keys are still down on keypress (or key repeat). + */ updateJogFromKeys() { let x = 0, y = 0, diff --git a/webapp/src/components/labThingsComponents/propertyControl.vue b/webapp/src/components/labThingsComponents/propertyControl.vue index 4daa6d5c..a6731b59 100644 --- a/webapp/src/components/labThingsComponents/propertyControl.vue +++ b/webapp/src/components/labThingsComponents/propertyControl.vue @@ -68,7 +68,9 @@ export default { computed: { propertyDescription: function () { const td = this.wotStore.thingDescriptions[this.thingName]; + // Return `undefined` if the thing doesn't exist or has no properties if (!td || !td.properties) return undefined; + // JS returns `undefined` if this property name doesn't exist return td.properties[this.propertyName]; }, }, diff --git a/webapp/src/components/tabContentComponents/controlComponents/stageControlButtons.vue b/webapp/src/components/tabContentComponents/controlComponents/stageControlButtons.vue index 66bdf070..b01dfa1a 100644 --- a/webapp/src/components/tabContentComponents/controlComponents/stageControlButtons.vue +++ b/webapp/src/components/tabContentComponents/controlComponents/stageControlButtons.vue @@ -104,8 +104,6 @@ export default { ...mapWritableState(useSettingsStore, ["navigationInvert"]), }, - // TODO: jogInterval may need to be cleared on "beforeUnmount()" - methods: { /** * Jog d-pad and focus buttons. diff --git a/webapp/src/components/tabContentComponents/powerContent.vue b/webapp/src/components/tabContentComponents/powerContent.vue index d7221125..bb94fa17 100644 --- a/webapp/src/components/tabContentComponents/powerContent.vue +++ b/webapp/src/components/tabContentComponents/powerContent.vue @@ -66,10 +66,10 @@ export default { } this.modalConfirm(message).then( () => { - this.resetState(); - this.deleteAllThingDescriptions(); // Post and silence errors axios.post(this.thingActionUrl("system", action)).catch(() => {}); + this.resetState(); + this.deleteAllThingDescriptions(); }, () => {}, ); diff --git a/webapp/src/components/tabContentComponents/slideScanComponents/slideScanControls.vue b/webapp/src/components/tabContentComponents/slideScanComponents/slideScanControls.vue index 8118bdfb..a45417fd 100644 --- a/webapp/src/components/tabContentComponents/slideScanComponents/slideScanControls.vue +++ b/webapp/src/components/tabContentComponents/slideScanComponents/slideScanControls.vue @@ -42,8 +42,6 @@ import propertyControl from "@/components/labThingsComponents/propertyControl.vue"; import ServerSpecifiedInterface from "@/components/labThingsComponents/serverSpecifiedInterface.vue"; import { useIntersectionObserver } from "@vueuse/core"; -//import { mapWritableState } from "pinia"; -//import { useSettingsStore } from "@/stores/settings.js"; export default { name: "SlideScanControls", diff --git a/webapp/src/stores/settings.js b/webapp/src/stores/settings.js index 72fc8e23..4870f258 100644 --- a/webapp/src/stores/settings.js +++ b/webapp/src/stores/settings.js @@ -64,7 +64,6 @@ export const useSettingsStore = defineStore( function removeStream(id) { activeStreams.value[id] = false; } - // TODO: Replace for direct access to state. // Getters const baseUri = computed(() => origin.value); const ready = computed(() => available.value);