diff --git a/webapp/src/components/tabContentComponents/slideScanContent.vue b/webapp/src/components/tabContentComponents/slideScanContent.vue index de827dbd..acb3f5e9 100644 --- a/webapp/src/components/tabContentComponents/slideScanContent.vue +++ b/webapp/src/components/tabContentComponents/slideScanContent.vue @@ -41,18 +41,7 @@ submit-label="Start smart scan" :can-terminate="true" :submit-data="{ sample_check: true }" - @taskStarted="scanning = true" - @update:taskStatus="taskStatus = $event" - @update:progress="progress = $event" - @update:log="log = $event" - /> - -
- Close
+ +
+ +
- + +
@@ -96,6 +97,7 @@ import taskSubmitter from "../genericComponents/taskSubmitter"; import propertyControl from "../labThingsComponents/propertyControl.vue"; import actionLogDisplay from "../genericComponents/actionLogDisplay.vue"; import actionProgressBar from "../genericComponents/actionProgressBar.vue"; +import MiniStreamDisplay from '../genericComponents/miniStreamDisplay.vue'; export default { name: "SlideScanContent", @@ -105,7 +107,8 @@ export default { taskSubmitter, propertyControl, actionLogDisplay, - actionProgressBar + actionProgressBar, + MiniStreamDisplay }, data() { @@ -113,8 +116,11 @@ export default { lastScanName: null, scanning: false, taskStatus: "pending", + correlateStatus: "", + stitchFromStageStatus: "", progress: null, - log: [] + log: [], + lastStitchedImage: null }; }, @@ -125,8 +131,37 @@ export default { smartScanUri() { return this.thingActionUrl("smart_scan", "sample_scan"); }, + stitchFromStageUri () { + return this.thingActionUrl("stitching", "stitch_scan_from_stage"); + }, + stitchUri () { + return this.thingActionUrl("stitching", "stitch_scan"); + }, + correlateUri () { + return this.thingActionUrl("stitching", "correlate_scan"); + }, cancellable() { return (this.taskStatus == "running") | (this.taskStatus == "pending"); + }, + correlatePayload() { + return { + scan_name: this.lastScanName + } + }, + stitchPayload() { + return { + downsample: 2, + ...this.correlatePayload + } + }, + stitchFromStagePayload() { + return { + downsample: 2, + ...this.correlatePayload + } + }, + displayImageOnRight() { + return this.scanning & this.lastStitchedImage !== null; } }, @@ -134,6 +169,22 @@ export default { onScanError: function(error) { this.scanRunning = false; this.modalError(error); + }, + correlateCurrentScan() { + + }, + startScanning() { + this.lastStitchedImage = null; + this.scanning = true; + setTimeout(this.pollScan, 5000); + }, + pollScan() { + if (this.cancellable) { // while the scan is running + if (!["pending", "running"].includes(this.stitchFromStageStatus)) { + this.$refs.stitchFromStageSubmitter.startTask() + } + setTimeout(this.pollScan, 5000); // keep rescheduling until it's stopped + } } } };