diff --git a/webapp/src/components/tabContentComponents/settingsComponents/CSMSettingsComponents/CSMCalibrationSettings.vue b/webapp/src/components/tabContentComponents/settingsComponents/CSMSettingsComponents/CSMCalibrationSettings.vue index 5c9d02c4..10b73ab1 100644 --- a/webapp/src/components/tabContentComponents/settingsComponents/CSMSettingsComponents/CSMCalibrationSettings.vue +++ b/webapp/src/components/tabContentComponents/settingsComponents/CSMSettingsComponents/CSMCalibrationSettings.vue @@ -1,5 +1,5 @@ @@ -47,6 +50,16 @@ export default { default: true } }, + + data() { + return { + csmMatrix: "undefined", + csmResolution: "undefined", + csmRatio: "undefined" + }; + }, + + computed: { actions() { @@ -60,6 +73,11 @@ export default { }, methods: { + visibilityChanged(isVisible) { + if (isVisible) { + this.updateDisplayedCSM(); + } + }, getCalibrationData: async function() { try { let data = await this.readThingProperty( @@ -80,9 +98,33 @@ export default { this.modalError(error); // Let mixin handle error } }, - + updateDisplayedCSM: async function() { + let csmMatrix = await this.readThingProperty( + "camera_stage_mapping", + "image_to_stage_displacement_matrix" + ); + this.csmResolution = await this.readThingProperty( + "camera_stage_mapping", + "image_resolution" + ); + let streamResolution = await this.readThingProperty( + "camera", + "stream_resolution" + ); + csmMatrix[0][0] = Number(csmMatrix[0][0].toFixed(3)); + csmMatrix[0][1] = Number(csmMatrix[0][1].toFixed(3)); + csmMatrix[1][0] = Number(csmMatrix[1][0].toFixed(3)); + csmMatrix[1][1] = Number(csmMatrix[1][1].toFixed(3)); + this.csmMatrix = csmMatrix; + this.csmRatio = Number((Math.abs(csmMatrix[1][0]) + Math.abs(csmMatrix[0][1])) / 2).toFixed(3); + this.csmFOV = [ + Number((streamResolution[0]**2 * this.csmRatio / this.csmResolution[1]).toFixed(0)), + Number((streamResolution[1]**2 * this.csmRatio / this.csmResolution[0]).toFixed(0)), + ] + }, onRecalibrateResponse: function() { this.modalNotify("Finished stage-to-camera calibration."); + this.updateDisplayedCSM(); } } };