ui_migration fix(deps): --Preliminary-- Define reactivity, with markRaw function wrapper for components.

This commit is contained in:
Antonio Anaya 2026-01-22 23:40:56 -06:00
parent fc96ae94f8
commit 6e14bf1dd0
40 changed files with 191 additions and 96 deletions

View file

@ -26,6 +26,8 @@
import appContent from "./components/appContent.vue"; import appContent from "./components/appContent.vue";
import loadingContent from "./components/loadingContent.vue"; import loadingContent from "./components/loadingContent.vue";
import MouseTrap from "mousetrap"; import MouseTrap from "mousetrap";
// vue3 migration
import { markRaw } from "vue";
MouseTrap.prototype.stopCallback = function (e, element) { MouseTrap.prototype.stopCallback = function (e, element) {
// if the element has the class "mousetrap" then no need to stop // if the element has the class "mousetrap" then no need to stop
@ -52,8 +54,8 @@ export default {
name: "App", name: "App",
components: { components: {
appContent, appContent: markRaw(appContent),
loadingContent, loadingContent: markRaw(loadingContent),
}, },
data: function () { data: function () {
@ -192,7 +194,7 @@ export default {
}); });
}, },
beforeDestroy: function () { beforeUnmount: function () {
// Disconnect the theme observer // Disconnect the theme observer
if (this.themeObserver) { if (this.themeObserver) {
this.themeObserver.disconnect(); this.themeObserver.disconnect();

View file

@ -77,8 +77,8 @@
<script> <script>
// Import generic components // Import generic components
import tabIcon from "./genericComponents/tabIcon"; import tabIcon from "./genericComponents/tabIcon.vue";
import tabContent from "./genericComponents/tabContent"; import tabContent from "./genericComponents/tabContent.vue";
// Import new content components // Import new content components
import aboutContent from "./tabContentComponents/aboutContent.vue"; import aboutContent from "./tabContentComponents/aboutContent.vue";
@ -90,6 +90,8 @@ import scanListContent from "./tabContentComponents/scanListContent.vue";
import settingsContent from "./tabContentComponents/settingsContent.vue"; import settingsContent from "./tabContentComponents/settingsContent.vue";
import slideScanContent from "./tabContentComponents/slideScanContent.vue"; import slideScanContent from "./tabContentComponents/slideScanContent.vue";
import viewContent from "./tabContentComponents/viewContent.vue"; import viewContent from "./tabContentComponents/viewContent.vue";
// vue3 migration
import { shallowRef, markRaw, ref } from 'vue'
// Import modal components for device initialisation // Import modal components for device initialisation
import calibrationWizard from "./modalComponents/calibrationWizard.vue"; import calibrationWizard from "./modalComponents/calibrationWizard.vue";
@ -99,9 +101,9 @@ export default {
name: "AppContent", name: "AppContent",
components: { components: {
tabIcon, tabIcon: markRaw(tabIcon),
tabContent, tabContent: markRaw(tabContent),
calibrationWizard, calibrationWizard: markRaw(calibrationWizard),
}, },
data: function () { data: function () {
return { return {
@ -111,26 +113,26 @@ export default {
id: "settings", id: "settings",
title: "Settings", title: "Settings",
icon: "settings", icon: "settings",
component: settingsContent, component: markRaw(settingsContent),
class: "uk-margin-auto-top", class: "uk-margin-auto-top",
}, },
{ {
id: "logging", id: "logging",
title: "Logging", title: "Logging",
icon: "assignment_late", icon: "assignment_late",
component: loggingContent, component: markRaw(loggingContent),
}, },
{ {
id: "about", id: "about",
title: "About", title: "About",
icon: "info", icon: "info",
component: aboutContent, component: markRaw(aboutContent),
}, },
{ {
id: "power", id: "power",
title: "Power", title: "Power",
icon: "power_settings_new", icon: "power_settings_new",
component: powerContent, component: markRaw(powerContent),
}, },
], ],
coreTopTabs: [ coreTopTabs: [
@ -138,21 +140,21 @@ export default {
id: "view", id: "view",
title: "View", title: "View",
icon: "visibility", icon: "visibility",
component: viewContent, component: markRaw(viewContent),
requiredThings: [], requiredThings: [],
}, },
{ {
id: "control", id: "control",
title: "Control", title: "Control",
icon: "gamepad", icon: "gamepad",
component: controlContent, component: markRaw(controlContent),
requiredThings: [], requiredThings: [],
}, },
{ {
id: "background-detect", id: "background-detect",
title: "Background Detect", title: "Background Detect",
icon: "background_replace", icon: "background_replace",
component: backgroundDetectContent, component: markRaw(backgroundDetectContent),
// While stage isn't needed; automatic background detect has little function // While stage isn't needed; automatic background detect has little function
// for a manual microscope. // for a manual microscope.
requiredThings: ["stage"], requiredThings: ["stage"],
@ -161,14 +163,14 @@ export default {
id: "slide-scan", id: "slide-scan",
title: "Slide Scan", title: "Slide Scan",
icon: "settings_overscan", icon: "settings_overscan",
component: slideScanContent, component: markRaw(slideScanContent),
requiredThings: ["smart_scan"], requiredThings: ["smart_scan"],
}, },
{ {
id: "scan-list", id: "scan-list",
title: "Scan List", title: "Scan List",
icon: "photo_library", icon: "photo_library",
component: scanListContent, component: markRaw(scanListContent),
requiredThings: ["smart_scan"], requiredThings: ["smart_scan"],
}, },
], ],

View file

@ -28,10 +28,14 @@
<script> <script>
import ActionProgressBar from "./actionProgressBar.vue"; import ActionProgressBar from "./actionProgressBar.vue";
import ActionStatusModal from "./actionStatusModal.vue"; import ActionStatusModal from "./actionStatusModal.vue";
import { markRaw } from "vue";
export default { export default {
name: "ActionButton", name: "ActionButton",
components: { ActionProgressBar, ActionStatusModal }, components: {
ActionProgressBar: markRaw(ActionProgressBar),
ActionStatusModal: markRaw(ActionStatusModal)
},
props: { props: {
action: { action: {
@ -161,7 +165,7 @@ export default {
} }
}, },
beforeDestroy() { beforeUnmount() {
if (this.submitOnEvent) { if (this.submitOnEvent) {
this.$root.$off(this.submitOnEvent); this.$root.$off(this.submitOnEvent);
} }

View file

@ -28,11 +28,15 @@
import UIkit from "uikit"; import UIkit from "uikit";
import ActionProgressBar from "./actionProgressBar.vue"; import ActionProgressBar from "./actionProgressBar.vue";
import ActionLogDisplay from "./actionLogDisplay.vue"; import ActionLogDisplay from "./actionLogDisplay.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "ActionStatusModal", name: "ActionStatusModal",
components: { ActionProgressBar, ActionLogDisplay }, components: {
ActionProgressBar: markRaw(ActionProgressBar),
ActionLogDisplay: markRaw(ActionLogDisplay)
},
props: { props: {
title: { title: {
type: String, type: String,

View file

@ -100,12 +100,14 @@
<script> <script>
import syncPropertyButton from "./syncPropertyButton.vue"; import syncPropertyButton from "./syncPropertyButton.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "InputFromSchema", name: "InputFromSchema",
components: { components: {
syncPropertyButton, syncPropertyButton: markRaw(syncPropertyButton),
}, },
props: { props: {

View file

@ -13,12 +13,14 @@
<script> <script>
import { formatValue } from "@/js_utils/formatter.mjs"; import { formatValue } from "@/js_utils/formatter.mjs";
import InputFromSchema from "./inputFromSchema.vue"; import InputFromSchema from "./inputFromSchema.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "PropertyControl", name: "PropertyControl",
components: { components: {
InputFromSchema, InputFromSchema: markRaw(InputFromSchema),
}, },
props: { props: {

View file

@ -17,13 +17,15 @@
<script> <script>
import ActionButton from "./actionButton.vue"; import ActionButton from "./actionButton.vue";
// vue3 migration
import { markRaw } from "vue";
// Export main app // Export main app
export default { export default {
name: "ServerSpecifiedActionButton", name: "ServerSpecifiedActionButton",
components: { components: {
ActionButton, ActionButton: markRaw(ActionButton),
}, },
props: { props: {

View file

@ -11,13 +11,15 @@
<script> <script>
import PropertyControl from "./propertyControl.vue"; import PropertyControl from "./propertyControl.vue";
// vue3 migration
import { markRaw } from "vue";
// Export main app // Export main app
export default { export default {
name: "ServerSpecifiedPropertyControl", name: "ServerSpecifiedPropertyControl",
components: { components: {
PropertyControl, PropertyControl: markRaw(PropertyControl),
}, },
props: { props: {

View file

@ -14,12 +14,16 @@
<script> <script>
import devTools from "./tabContentComponents/aboutComponents/devTools.vue"; import devTools from "./tabContentComponents/aboutComponents/devTools.vue";
// vue3 migration
import { markRaw } from "vue";
// Export main app // Export main app
export default { export default {
name: "LoadingContent", name: "LoadingContent",
components: { devTools }, components: {
devTools: markRaw(devTools)
},
data: function () { data: function () {
return {}; return {};

View file

@ -19,13 +19,15 @@
<script> <script>
import stepTemplateWithStream from "../stepTemplateWithStream.vue"; import stepTemplateWithStream from "../stepTemplateWithStream.vue";
import cameraCalibrationSettings from "../../../tabContentComponents/settingsComponents/cameraSettingsComponents/cameraCalibrationSettings.vue"; import cameraCalibrationSettings from "../../../tabContentComponents/settingsComponents/cameraSettingsComponents/cameraCalibrationSettings.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "CameraMainCalibrationStep", name: "CameraMainCalibrationStep",
components: { components: {
stepTemplateWithStream, stepTemplateWithStream: markRaw(stepTemplateWithStream),
cameraCalibrationSettings, cameraCalibrationSettings: markRaw(cameraCalibrationSettings),
}, },
computed: { computed: {

View file

@ -14,10 +14,13 @@
import calibrationWizardTask from "./calibrationWizardTask.vue"; import calibrationWizardTask from "./calibrationWizardTask.vue";
import camCalibrationExplanation from "./cameraCalibrationSteps/camCalibrationExplanation.vue"; import camCalibrationExplanation from "./cameraCalibrationSteps/camCalibrationExplanation.vue";
import cameraMainCalibrationStep from "./cameraCalibrationSteps/cameraMainCalibrationStep.vue"; import cameraMainCalibrationStep from "./cameraCalibrationSteps/cameraMainCalibrationStep.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "CameraCalibrationTask", name: "CameraCalibrationTask",
components: { calibrationWizardTask }, components: {
calibrationWizardTask: markRaw(calibrationWizardTask) },
props: { props: {
// Standard calibrationWizardTask props below: // Standard calibrationWizardTask props below:
first: Boolean, first: Boolean,
@ -30,7 +33,7 @@ export default {
data: function () { data: function () {
return { return {
steps: [{ component: camCalibrationExplanation }, { component: cameraMainCalibrationStep }], steps: [{ component: markRaw(camCalibrationExplanation) }, { component: markRaw(cameraMainCalibrationStep)}],
}; };
}, },
}; };

View file

@ -15,10 +15,14 @@ import calibrationWizardTask from "./calibrationWizardTask.vue";
import csmExplanation from "./csmSteps/csmExplanation.vue"; import csmExplanation from "./csmSteps/csmExplanation.vue";
import focusStep from "./csmSteps/focusStep.vue"; import focusStep from "./csmSteps/focusStep.vue";
import runCsmStep from "./csmSteps/runCsmStep.vue"; import runCsmStep from "./csmSteps/runCsmStep.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "CameraCalibrationTask", name: "CameraCalibrationTask",
components: { calibrationWizardTask }, components: {
calibrationWizardTask: markRaw(calibrationWizardTask)
},
props: { props: {
// Standard calibrationWizardTask props below: // Standard calibrationWizardTask props below:
first: Boolean, first: Boolean,
@ -31,7 +35,7 @@ export default {
data: function () { data: function () {
return { return {
steps: [{ component: csmExplanation }, { component: focusStep }, { component: runCsmStep }], steps: [{ component: markRaw(csmExplanation) }, { component: markRaw(focusStep) }, { component: markRaw(runCsmStep) }],
}; };
}, },
}; };

View file

@ -30,12 +30,15 @@
<script> <script>
import stepTemplateWithStream from "../stepTemplateWithStream.vue"; import stepTemplateWithStream from "../stepTemplateWithStream.vue";
import ActionButton from "../../../labThingsComponents/actionButton.vue"; import ActionButton from "../../../labThingsComponents/actionButton.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "CameraMainCalibrationStep", name: "CameraMainCalibrationStep",
components: { components: {
stepTemplateWithStream, stepTemplateWithStream: markRaw(stepTemplateWithStream),
ActionButton, ActionButton: markRaw(ActionButton),
}, },
}; };
</script> </script>

View file

@ -18,13 +18,15 @@
<script> <script>
import stepTemplateWithStream from "../stepTemplateWithStream.vue"; import stepTemplateWithStream from "../stepTemplateWithStream.vue";
import CSMCalibrationSettings from "../../../tabContentComponents/settingsComponents/CSMSettingsComponents/CSMCalibrationSettings.vue"; import CSMCalibrationSettings from "../../../tabContentComponents/settingsComponents/CSMSettingsComponents/CSMCalibrationSettings.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "CameraMainCalibrationStep", name: "CameraMainCalibrationStep",
components: { components: {
stepTemplateWithStream, stepTemplateWithStream: markRaw(stepTemplateWithStream),
CSMCalibrationSettings, CSMCalibrationSettings: markRaw(CSMCalibrationSettings),
}, },
mounted() { mounted() {

View file

@ -24,10 +24,14 @@ supplied by the wizard.
<script> <script>
import calibrationWizardTask from "./calibrationWizardTask.vue"; import calibrationWizardTask from "./calibrationWizardTask.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "SingleStepTask", name: "SingleStepTask",
components: { calibrationWizardTask }, components: {
calibrationWizardTask: markRaw(calibrationWizardTask)
},
props: { props: {
// This must be sent // This must be sent
stepComponent: { stepComponent: {
@ -54,7 +58,7 @@ export default {
data: function () { data: function () {
return { return {
steps: [{ component: this.stepComponent, props: this.stepProps }], steps: [{ component: markRaw(this.stepComponent), props: this.stepProps }],
}; };
}, },
}; };

View file

@ -8,12 +8,14 @@
<script> <script>
import miniStreamDisplay from "../../genericComponents/miniStreamDisplay.vue"; import miniStreamDisplay from "../../genericComponents/miniStreamDisplay.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "StepTemplateWithStream", name: "StepTemplateWithStream",
components: { components: {
miniStreamDisplay, miniStreamDisplay: markRaw(miniStreamDisplay),
}, },
}; };
</script> </script>

View file

@ -57,10 +57,14 @@
<script> <script>
import ActionButton from "../../labThingsComponents/actionButton.vue"; import ActionButton from "../../labThingsComponents/actionButton.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "StatusPane", name: "StatusPane",
components: { ActionButton }, components: {
ActionButton: markRaw(ActionButton)
},
data: function () { data: function () {
return { return {

View file

@ -24,13 +24,15 @@
<script> <script>
import devTools from "./aboutComponents/devTools.vue"; import devTools from "./aboutComponents/devTools.vue";
import statusPane from "./aboutComponents/statusPane.vue"; import statusPane from "./aboutComponents/statusPane.vue";
//vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "AboutContent", name: "AboutContent",
components: { components: {
devTools, devTools: markRaw(devTools),
statusPane, statusPane: markRaw(statusPane),
}, },
}; };
</script> </script>

View file

@ -47,11 +47,13 @@
<script> <script>
import ActionButton from "../../labThingsComponents/actionButton.vue"; import ActionButton from "../../labThingsComponents/actionButton.vue";
import ServerSpecifiedPropertyControl from "../../labThingsComponents/serverSpecifiedPropertyControl.vue"; import ServerSpecifiedPropertyControl from "../../labThingsComponents/serverSpecifiedPropertyControl.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
components: { components: {
ActionButton, ActionButton: markRaw(ActionButton),
ServerSpecifiedPropertyControl, ServerSpecifiedPropertyControl: markRaw(ServerSpecifiedPropertyControl),
}, },
data() { data() {

View file

@ -13,13 +13,15 @@
<script> <script>
import paneBackgroundDetect from "./backgroundDetectComponents/paneBackgroundDetect"; import paneBackgroundDetect from "./backgroundDetectComponents/paneBackgroundDetect";
import streamDisplay from "./streamContent.vue"; import streamDisplay from "./streamContent.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "BackgroundDetectContent", name: "BackgroundDetectContent",
components: { components: {
paneBackgroundDetect, paneBackgroundDetect: markRaw(paneBackgroundDetect),
streamDisplay, streamDisplay: markRaw(streamDisplay),
}, },
}; };
</script> </script>

View file

@ -18,12 +18,14 @@
</template> </template>
<script> <script>
import ActionButton from "../../labThingsComponents/actionButton.vue"; import ActionButton from "../../labThingsComponents/actionButton.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "AutofocusControl", name: "AutofocusControl",
components: { components: {
ActionButton, ActionButton: markRaw(ActionButton),
}, },
data: function () { data: function () {

View file

@ -34,14 +34,16 @@ import axios from "axios";
import ActionButton from "../../labThingsComponents/actionButton.vue"; import ActionButton from "../../labThingsComponents/actionButton.vue";
import positionControl from "./positionControl.vue"; import positionControl from "./positionControl.vue";
import autofocusControl from "./autofocusControl.vue"; import autofocusControl from "./autofocusControl.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "PaneControl", name: "PaneControl",
components: { components: {
ActionButton, ActionButton: markRaw(ActionButton),
positionControl, positionControl: markRaw(positionControl),
autofocusControl, autofocusControl: markRaw(autofocusControl),
}, },
computed: { computed: {

View file

@ -61,13 +61,16 @@ and zero position buttons. It also includes the d-pad.
import ActionButton from "../../labThingsComponents/actionButton.vue"; import ActionButton from "../../labThingsComponents/actionButton.vue";
import syncPropertyButton from "../../labThingsComponents/syncPropertyButton.vue"; import syncPropertyButton from "../../labThingsComponents/syncPropertyButton.vue";
import stageControlButtons from "./stageControlButtons.vue"; import stageControlButtons from "./stageControlButtons.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "PaneControl", name: "PaneControl",
components: { components: {
ActionButton, ActionButton: markRaw(ActionButton),
syncPropertyButton, syncPropertyButton: markRaw(syncPropertyButton),
stageControlButtons, stageControlButtons: markRaw(stageControlButtons),
}, },
data: function () { data: function () {
@ -105,7 +108,7 @@ export default {
await this.updatePosition(); await this.updatePosition();
}, },
beforeDestroy() { beforeUnmount() {
// Remove global signal listener to perform a move action // Remove global signal listener to perform a move action
this.$root.$off("globalMoveEvent"); this.$root.$off("globalMoveEvent");
this.$root.$off("globalMoveInImageCoordinatesEvent"); this.$root.$off("globalMoveInImageCoordinatesEvent");

View file

@ -11,15 +11,17 @@
</template> </template>
<script> <script>
import paneControl from "./controlComponents/paneControl"; import paneControl from "./controlComponents/paneControl.vue";
import streamDisplay from "./streamContent.vue"; import streamDisplay from "./streamContent.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "ControlContent", name: "ControlContent",
components: { components: {
paneControl, paneControl: markRaw(paneControl),
streamDisplay, streamDisplay: markRaw(streamDisplay) ,
}, },
}; };
</script> </script>

View file

@ -83,13 +83,15 @@
import axios from "axios"; import axios from "axios";
import Paginate from "vuejs-paginate"; import Paginate from "vuejs-paginate";
import EndpointButton from "../labThingsComponents/endpointButton.vue"; import EndpointButton from "../labThingsComponents/endpointButton.vue";
//vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "LoggingContent", name: "LoggingContent",
components: { components: {
Paginate, Paginate: markRaw(Paginate),
EndpointButton, EndpointButton: markRaw(EndpointButton),
}, },
data: function () { data: function () {

View file

@ -59,7 +59,7 @@ export default {
} }
}, },
beforeDestroy() { beforeUnmount() {
// Remove global signal listener to perform a gallery refresh // Remove global signal listener to perform a gallery refresh
this.osdViewer.destroy(); this.osdViewer.destroy();
}, },

View file

@ -82,11 +82,16 @@
import axios from "axios"; import axios from "axios";
import actionButton from "../../labThingsComponents/actionButton.vue"; import actionButton from "../../labThingsComponents/actionButton.vue";
import EndpointButton from "../../labThingsComponents/endpointButton.vue"; import EndpointButton from "../../labThingsComponents/endpointButton.vue";
// vue3 migration
import { markRaw } from "vue";
// Export main app // Export main app
export default { export default {
name: "ScanCard", name: "ScanCard",
components: { actionButton, EndpointButton }, components: {
actionButton: markRaw(actionButton),
EndpointButton: markRaw(EndpointButton)
},
props: { props: {
scanData: { scanData: {

View file

@ -55,10 +55,14 @@
<script> <script>
import UIkit from "uikit"; import UIkit from "uikit";
import OpenSeadragonViewer from "./openSeadragonViewer.vue"; import OpenSeadragonViewer from "./openSeadragonViewer.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "ScanViewerModal", name: "ScanViewerModal",
components: { OpenSeadragonViewer }, components: {
OpenSeadragonViewer: markRaw(OpenSeadragonViewer)
},
props: { props: {
selectedScan: { selectedScan: {
type: Object, type: Object,

View file

@ -100,11 +100,17 @@ import axios from "axios";
import actionButton from "../labThingsComponents/actionButton.vue"; import actionButton from "../labThingsComponents/actionButton.vue";
import scanCard from "./scanListComponents/scanCard.vue"; import scanCard from "./scanListComponents/scanCard.vue";
import ScanViewerModal from "./scanListComponents/scanViewer.vue"; import ScanViewerModal from "./scanListComponents/scanViewer.vue";
// vue3 migration
import { markRaw } from "vue";
// Export main app // Export main app
export default { export default {
name: "ScanListContent", name: "ScanListContent",
components: { actionButton, scanCard, ScanViewerModal }, components: {
actionButton: markRaw(actionButton),
scanCard: markRaw(scanCard),
ScanViewerModal: markRaw(ScanViewerModal)
},
data: function () { data: function () {
return { return {
@ -171,7 +177,7 @@ export default {
); );
}, },
beforeDestroy() { beforeUnmount() {
// Remove global signal listener to perform a gallery refresh // Remove global signal listener to perform a gallery refresh
this.$root.$off("globalUpdateScans"); this.$root.$off("globalUpdateScans");
// Then we call that function here to unwatch // Then we call that function here to unwatch

View file

@ -17,14 +17,16 @@
<script> <script>
import CSMCalibrationSettings from "./CSMSettingsComponents/CSMCalibrationSettings.vue"; import CSMCalibrationSettings from "./CSMSettingsComponents/CSMCalibrationSettings.vue";
import miniStreamDisplay from "../../genericComponents/miniStreamDisplay.vue"; import miniStreamDisplay from "../../genericComponents/miniStreamDisplay.vue";
// vue3 migration
import { markRaw } from "vue";
// Export main app // Export main app
export default { export default {
name: "CSMSettings", name: "CSMSettings",
components: { components: {
CSMCalibrationSettings, CSMCalibrationSettings: markRaw(CSMCalibrationSettings),
miniStreamDisplay, miniStreamDisplay: markRaw(miniStreamDisplay),
}, },
}; };
</script> </script>

View file

@ -57,14 +57,16 @@
<script> <script>
import ActionButton from "@/components/labThingsComponents/actionButton.vue"; import ActionButton from "@/components/labThingsComponents/actionButton.vue";
import matrixDisplay from "@/components/ui/matrixDisplay.vue"; import matrixDisplay from "@/components/ui/matrixDisplay.vue";
// vue3 migration
import { markRaw } from "vue";
// Export main app // Export main app
export default { export default {
name: "CSMCalibrationSettings", name: "CSMCalibrationSettings",
components: { components: {
ActionButton, ActionButton: markRaw(ActionButton),
matrixDisplay, matrixDisplay: markRaw(matrixDisplay),
}, },
props: { props: {

View file

@ -25,15 +25,17 @@
import cameraCalibrationSettings from "./cameraSettingsComponents/cameraCalibrationSettings.vue"; import cameraCalibrationSettings from "./cameraSettingsComponents/cameraCalibrationSettings.vue";
import miniStreamDisplay from "../../genericComponents/miniStreamDisplay.vue"; import miniStreamDisplay from "../../genericComponents/miniStreamDisplay.vue";
import ServerSpecifiedPropertyControl from "../../labThingsComponents/serverSpecifiedPropertyControl.vue"; import ServerSpecifiedPropertyControl from "../../labThingsComponents/serverSpecifiedPropertyControl.vue";
// vue3 migration
import { markRaw } from "vue";
// Export main app // Export main app
export default { export default {
name: "CameraSettings", name: "CameraSettings",
components: { components: {
cameraCalibrationSettings, cameraCalibrationSettings: markRaw(cameraCalibrationSettings),
miniStreamDisplay, miniStreamDisplay: markRaw(miniStreamDisplay),
ServerSpecifiedPropertyControl, ServerSpecifiedPropertyControl: markRaw(ServerSpecifiedPropertyControl),
}, },
data() { data() {

View file

@ -22,13 +22,15 @@
<script> <script>
import ServerSpecifiedActionButton from "../../../labThingsComponents/serverSpecifiedActionButton.vue"; import ServerSpecifiedActionButton from "../../../labThingsComponents/serverSpecifiedActionButton.vue";
// vue3 migration
import { markRaw } from "vue";
// Export main app // Export main app
export default { export default {
name: "CameraCalibrationSettings", name: "CameraCalibrationSettings",
components: { components: {
ServerSpecifiedActionButton, ServerSpecifiedActionButton: markRaw(ServerSpecifiedActionButton),
}, },
props: { props: {

View file

@ -8,14 +8,15 @@
<script> <script>
import appSettings from "./displaySetttingsComponents/appSettings.vue"; import appSettings from "./displaySetttingsComponents/appSettings.vue";
import streamSettings from "./displaySetttingsComponents/streamSettings.vue"; import streamSettings from "./displaySetttingsComponents/streamSettings.vue";
import { markRaw } from "vue";
// Export main app // Export main app
export default { export default {
name: "DisplaySettings", name: "DisplaySettings",
components: { components: {
streamSettings, streamSettings: markRaw(streamSettings),
appSettings, appSettings: markRaw(appSettings),
}, },
}; };
</script> </script>

View file

@ -29,12 +29,14 @@
<script> <script>
import ActionButton from "../../labThingsComponents/actionButton.vue"; import ActionButton from "../../labThingsComponents/actionButton.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "StageSettings", name: "StageSettings",
components: { components: {
ActionButton, ActionButton: markRaw(ActionButton),
}, },
data: function () { data: function () {

View file

@ -65,17 +65,20 @@ import cameraSettings from "./settingsComponents/cameraSettings.vue";
import CSMSettings from "./settingsComponents/CSMSettings.vue"; import CSMSettings from "./settingsComponents/CSMSettings.vue";
import stageSettings from "./settingsComponents/stageSettings.vue"; import stageSettings from "./settingsComponents/stageSettings.vue";
// Import generic components // Import generic components
import tabIcon from "../genericComponents/tabIcon"; import tabIcon from "../genericComponents/tabIcon.vue";
import tabContent from "../genericComponents/tabContent"; import tabContent from "../genericComponents/tabContent.vue";
// vue3 migration
import { markRaw } from "vue";
// Export main app // Export main app
export default { export default {
name: "SettingsContent", name: "SettingsContent",
components: { components: {
tabIcon, tabIcon: markRaw(tabIcon),
tabContent, tabContent: markRaw(tabContent),
calibrationWizard, calibrationWizard: markRaw(calibrationWizard),
}, },
data: function () { data: function () {
@ -87,14 +90,14 @@ export default {
id: "display", id: "display",
title: "Display", title: "Display",
requireConnection: false, requireConnection: false,
component: displaySettings, component: markRaw(displaySettings),
requiredThings: [], requiredThings: [],
}, },
{ {
id: "stage-control", id: "stage-control",
title: "Stage Control Preferences", title: "Stage Control Preferences",
requireConnection: false, requireConnection: false,
component: stageControlSettings, component: markRaw(stageControlSettings),
requiredThings: ["stage"], requiredThings: ["stage"],
}, },
], ],
@ -103,21 +106,21 @@ export default {
id: "camera", id: "camera",
title: "Camera", title: "Camera",
requireConnection: true, requireConnection: true,
component: cameraSettings, component: markRaw(cameraSettings),
requiredThings: [], requiredThings: [],
}, },
{ {
id: "stage", id: "stage",
title: "Stage", title: "Stage",
requireConnection: true, requireConnection: true,
component: stageSettings, component: markRaw(stageSettings),
requiredThings: ["stage"], requiredThings: ["stage"],
}, },
{ {
id: "mapping", id: "mapping",
title: "Camera to Stage Mapping", title: "Camera to Stage Mapping",
requireConnection: true, requireConnection: true,
component: CSMSettings, component: markRaw(CSMSettings),
requiredThings: ["camera_stage_mapping"], requiredThings: ["camera_stage_mapping"],
}, },
], ],

View file

@ -153,17 +153,19 @@ import actionLogDisplay from "../labThingsComponents/actionLogDisplay.vue";
import actionProgressBar from "../labThingsComponents/actionProgressBar.vue"; import actionProgressBar from "../labThingsComponents/actionProgressBar.vue";
import MiniStreamDisplay from "../genericComponents/miniStreamDisplay.vue"; import MiniStreamDisplay from "../genericComponents/miniStreamDisplay.vue";
import ActionButton from "../labThingsComponents/actionButton.vue"; import ActionButton from "../labThingsComponents/actionButton.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "SlideScanContent", name: "SlideScanContent",
components: { components: {
streamDisplay, streamDisplay: markRaw(streamDisplay),
propertyControl, propertyControl: markRaw(propertyControl),
actionLogDisplay, actionLogDisplay: markRaw(actionLogDisplay),
actionProgressBar, actionProgressBar: markRaw(actionProgressBar),
MiniStreamDisplay, MiniStreamDisplay: markRaw(MiniStreamDisplay),
ActionButton, ActionButton: markRaw(ActionButton),
}, },
data() { data() {

View file

@ -81,7 +81,7 @@ export default {
// Do nothing: preview stream now runs all the time // Do nothing: preview stream now runs all the time
}, },
beforeDestroy: function () { beforeUnmount: function () {
// Remove global signal listener to change the GPU preview state // Remove global signal listener to change the GPU preview state
this.$root.$off("globalTogglePreview"); this.$root.$off("globalTogglePreview");
// Remove global signal listener to flash the stream element // Remove global signal listener to flash the stream element

View file

@ -9,12 +9,14 @@
<script> <script>
import streamDisplay from "./streamContent.vue"; import streamDisplay from "./streamContent.vue";
// vue3 migration
import { markRaw } from "vue";
export default { export default {
name: "ViewContent", name: "ViewContent",
components: { components: {
streamDisplay, streamDisplay: markRaw(streamDisplay),
}, },
}; };
</script> </script>

View file

@ -27,9 +27,6 @@ const app = createApp(App);
// Use visibility observer // Use visibility observer
app.use(VueObserveVisibility); app.use(VueObserveVisibility);
// Disable production tip for Vue
app.config.productionTip = false;
// Use global mixins // Use global mixins
app.mixin(queryMixin); app.mixin(queryMixin);
app.mixin(modalMixin); app.mixin(modalMixin);