diff --git a/webapp/src/components/labThingsComponents/actionLogDisplay.vue b/webapp/src/components/labThingsComponents/actionLogDisplay.vue index 38b842aa..364a8bfb 100644 --- a/webapp/src/components/labThingsComponents/actionLogDisplay.vue +++ b/webapp/src/components/labThingsComponents/actionLogDisplay.vue @@ -1,25 +1,55 @@ @@ -36,15 +66,28 @@ export default { type: Array, required: true, }, + collapsedByDefault: { + type: Boolean, + default: true, + }, }, data() { return { userIsHovering: false, + isCollapsed: this.collapsedByDefault, }; }, computed: { + latestMessage() { + if (!this.log.length) { + return ""; + } + + return this.log[this.log.length - 1].message; + }, + errorMessage() { let logLength = this.log.length; var defaultMessage = "Unexpected error, please check the logs"; @@ -62,18 +105,33 @@ export default { watch: { log: { handler() { - this.scrollToBottom(); + if (!this.isCollapsed) { + this.scrollToBottom(); + } }, deep: true, }, - taskStatus: { - handler() { + + taskStatus() { + if (!this.isCollapsed) { this.scrollToBottom(); - }, + } + }, + + collapsedByDefault(newValue) { + this.isCollapsed = newValue; }, }, methods: { + toggleLog() { + this.isCollapsed = !this.isCollapsed; + + if (!this.isCollapsed) { + this.scrollToBottom(); + } + }, + onMouseEnter() { this.userIsHovering = true; }, @@ -95,16 +153,41 @@ export default { diff --git a/webapp/src/components/labThingsComponents/actionStatusModal.vue b/webapp/src/components/labThingsComponents/actionStatusModal.vue index 88ea7f42..899a793b 100644 --- a/webapp/src/components/labThingsComponents/actionStatusModal.vue +++ b/webapp/src/components/labThingsComponents/actionStatusModal.vue @@ -110,6 +110,7 @@ export default { place-content: stretch flex-start; align-items: center; width: 100%; + flex: 0 0 auto; } #progress-and-cancel-row .stretchy { @@ -130,7 +131,23 @@ export default { flex-direction: column; } +#status-modal h2 { + flex: 0 0 auto; // title never shrinks +} + +#status-modal .action-log-display { + flex: 1 1 auto; + min-height: 0; +} + +#status-modal .log-wrapper { + flex: 1 1 200px; // prefer 200px, shrink only under pressure + min-height: 2.6em; // floor: one line +} + #status-modal .log-container { - height: 10em; + height: auto; + flex: 1 1 auto; + min-height: 2.6em; } diff --git a/webapp/src/components/tabContentComponents/actionTab.vue b/webapp/src/components/tabContentComponents/actionTab.vue index 4555c1ee..36570daf 100644 --- a/webapp/src/components/tabContentComponents/actionTab.vue +++ b/webapp/src/components/tabContentComponents/actionTab.vue @@ -219,8 +219,4 @@ export default { .control-component { width: 33%; } - -#log-display { - height: 20em; -}