diff --git a/src/openflexure_microscope_server/ui.py b/src/openflexure_microscope_server/ui.py index d6c68290..0f3720dd 100644 --- a/src/openflexure_microscope_server/ui.py +++ b/src/openflexure_microscope_server/ui.py @@ -40,6 +40,13 @@ class ActionButton(BaseModel): modal_progress: bool = False """Specify whether to show a progress modal.""" + stream_with_modal: bool = False + """Specify whether to show a mini stream preview in the progress modal. + + This option only has an effect if `modal_progress` is True. + If `modal_progress` is False, no modal (and therefore no stream preview) is shown. + """ + notify_on_success: bool = False """Specify whether to a notification on successful completion.""" diff --git a/webapp/src/components/labThingsComponents/actionButton.vue b/webapp/src/components/labThingsComponents/actionButton.vue index 1f2e0efe..8256d47a 100644 --- a/webapp/src/components/labThingsComponents/actionButton.vue +++ b/webapp/src/components/labThingsComponents/actionButton.vue @@ -21,6 +21,7 @@ :task-running="taskRunning" :task-started="taskStarted" :task-status="taskStatus" + :display-stream="modalProgress && streamWithModal" @terminate-task="terminateTask" /> @@ -99,6 +100,11 @@ export default { required: false, default: false, }, + streamWithModal: { + type: Boolean, + required: false, + default: false, + } }, emits: [ diff --git a/webapp/src/components/labThingsComponents/actionStatusModal.vue b/webapp/src/components/labThingsComponents/actionStatusModal.vue index 2131ad9d..b298cc85 100644 --- a/webapp/src/components/labThingsComponents/actionStatusModal.vue +++ b/webapp/src/components/labThingsComponents/actionStatusModal.vue @@ -2,6 +2,10 @@

{{ title }}

+
@@ -29,12 +33,14 @@ import UIkit from "uikit"; import ActionProgressBar from "./actionProgressBar.vue"; import ActionLogDisplay from "./actionLogDisplay.vue"; import { eventBus } from "../../eventBus.js"; +import miniStreamDisplay from "../genericComponents/miniStreamDisplay.vue"; export default { name: "ActionStatusModal", components: { ActionProgressBar, ActionLogDisplay, + miniStreamDisplay, }, props: { @@ -67,6 +73,11 @@ export default { type: String, required: true, }, + displayStream: { + type: Boolean, + required: false, + default: false, + }, }, emits: ["terminateTask"], @@ -104,7 +115,11 @@ export default { margin-left: 5px; margin-right: 5px; } - +#status-modal { + max-height: 90vh; // never exceed 90% of viewport height + display: flex; + flex-direction: column; +} #status-modal .log-container { height: 10em; } diff --git a/webapp/src/components/labThingsComponents/serverSpecifiedActionButton.vue b/webapp/src/components/labThingsComponents/serverSpecifiedActionButton.vue index b98023da..78f81dd0 100644 --- a/webapp/src/components/labThingsComponents/serverSpecifiedActionButton.vue +++ b/webapp/src/components/labThingsComponents/serverSpecifiedActionButton.vue @@ -9,6 +9,7 @@ :confirmation-message="actionData.confirmation_message" :button-primary="actionData.button_primary" :modal-progress="actionData.modal_progress" + :stream-with-modal="actionData.stream_with_modal" @response="actionResponse" @error="modalError" @finished="actionFinished" diff --git a/webapp/src/components/tabContentComponents/settingsComponents/CSMSettingsComponents/CSMCalibrationSettings.vue b/webapp/src/components/tabContentComponents/settingsComponents/CSMSettingsComponents/CSMCalibrationSettings.vue index dd448886..10d4e516 100644 --- a/webapp/src/components/tabContentComponents/settingsComponents/CSMSettingsComponents/CSMCalibrationSettings.vue +++ b/webapp/src/components/tabContentComponents/settingsComponents/CSMSettingsComponents/CSMCalibrationSettings.vue @@ -13,6 +13,7 @@ :modal-progress="true" @response="onRecalibrateResponse" @error="modalError" + :streamWithModal="true" />