Refactored taskSubmitter to enable bits to be re-used

This commit is contained in:
Richard Bowman 2024-01-10 12:53:14 +00:00
parent cf075c6261
commit 53644a691b
5 changed files with 329 additions and 280 deletions

View file

@ -1,83 +0,0 @@
<template>
<div class="uk-padding-small">
<div v-show="!backendOK" class="uk-alert-danger">
No scan back-end found.
</div>
<div v-show="backendOK">
<ul uk-accordion="multiple: true">
<li>
<a class="uk-accordion-title" href="#">Configure</a>
<div class="uk-accordion-content">
<div class="uk-margin">
<propertyControl
thing-name="smart_scan"
property-name="max_range"
label="Maximum Distance (steps)"
/>
<div class="uk-margin">
<propertyControl
thing-name="smart_scan"
property-name="autofocus_dz"
label="Autofocus range (steps)"
/>
</div>
<div class="uk-margin">
<propertyControl
thing-name="smart_scan"
property-name="overlap"
label="Image overlap (0-1)"
/>
</div>
</div>
</div>
</li>
</ul>
<div class="uk-margin">
<taskSubmitter
:submit-url="smartScanUri"
:submit-data="{ sample_check: true }"
submit-label="Start smart scan"
:can-terminate="true"
:modal-progress="true"
/>
</div>
<div class="uk-margin">
<taskSubmitter
:submit-url="smartScanUri"
:submit-data="{ sample_check: false }"
submit-label="Start manual scan"
:can-terminate="true"
:modal-progress="true"
/>
</div>
</div>
</div>
</template>
<script>
import taskSubmitter from "../../genericComponents/taskSubmitter";
import propertyControl from "../../labThingsComponents/propertyControl.vue";
export default {
components: {
taskSubmitter,
propertyControl
},
computed: {
backendOK() {
return this.thingAvailable("smart_scan");
},
smartScanUri() {
return this.thingActionUrl("smart_scan", "sample_scan");
}
},
methods: {
onScanError: function(error) {
this.scanRunning = false;
this.modalError(error);
}
}
};
</script>

View file

@ -1,8 +1,66 @@
<template>
<div v-if="!backendOK" class="uk-alert-danger">
No scan back-end found.
</div>
<!-- Grid managing tab content -->
<div uk-grid class="uk-height-1-1 uk-margin-remove uk-padding-remove">
<div class="control-component">
<paneSlideScan />
<div v-else uk-grid class="uk-height-1-1 uk-margin-remove uk-padding-remove">
<div class="control-component uk-padding-small">
<div v-show="!scanning">
<ul uk-accordion="multiple: true">
<li>
<a class="uk-accordion-title" href="#">Configure</a>
<div class="uk-accordion-content">
<div class="uk-margin">
<propertyControl
thing-name="smart_scan"
property-name="max_range"
label="Maximum Distance (steps)"
/>
<div class="uk-margin">
<propertyControl
thing-name="smart_scan"
property-name="autofocus_dz"
label="Autofocus range (steps)"
/>
</div>
<div class="uk-margin">
<propertyControl
thing-name="smart_scan"
property-name="overlap"
label="Image overlap (0-1)"
/>
</div>
</div>
</div>
</li>
</ul>
<div class="uk-margin">
<taskSubmitter
:submit-url="smartScanUri"
submit-label="Start smart scan"
:can-terminate="true"
:modal-progress="true"
:submit-data="{ sample_check: false }"
@update:taskRunning="scanning = $event"
@update:taskStatus="taskStatus = $event"
@update:progress="progress = $event"
@update:log="log = $event"
/>
</div>
<div class="uk-margin">
<taskSubmitter
:submit-url="smartScanUri"
submit-label="Start manual scan"
:can-terminate="true"
:modal-progress="true"
:submit-data="{ sample_check: false }"
@update:taskRunning="scanning = $event"
@update:taskStatus="taskStatus = $event"
@update:progress="progress = $event"
@update:log="log = $event"
/>
</div>
</div>
</div>
<div class="view-component uk-width-expand">
<streamDisplay />
@ -11,15 +69,43 @@
</template>
<script>
import paneSlideScan from "./slideScanComponents/paneSlideScan";
import streamDisplay from "./streamContent.vue";
import taskSubmitter from "../genericComponents/taskSubmitter";
import propertyControl from "../labThingsComponents/propertyControl.vue";
export default {
name: "SlideScanContent",
components: {
paneSlideScan,
streamDisplay
streamDisplay,
taskSubmitter,
propertyControl
},
data() {
return {
lastScanName: null,
scanning: false,
taskStatus: null,
progress: null,
log: []
};
},
computed: {
backendOK() {
return this.thingAvailable("smart_scan");
},
smartScanUri() {
return this.thingActionUrl("smart_scan", "sample_scan");
}
},
methods: {
onScanError: function(error) {
this.scanRunning = false;
this.modalError(error);
}
}
};
</script>