From 3e49847fc3668295a67c1edcbed28a5e68f2c7a3 Mon Sep 17 00:00:00 2001 From: Stefan Dej Date: Fri, 10 Mar 2023 18:05:00 +0100 Subject: [PATCH] fix: fix browser title, when printer is off (#1300) --- src/App.vue | 19 +++++++++++----- src/locales/de.json | 1 + src/locales/en.json | 1 + src/store/getters.ts | 52 ++++++++++++++++++++++++-------------------- 4 files changed, 44 insertions(+), 29 deletions(-) diff --git a/src/App.vue b/src/App.vue index 17015689..821bd211 100644 --- a/src/App.vue +++ b/src/App.vue @@ -66,6 +66,8 @@ import TheManualProbeDialog from '@/components/dialogs/TheManualProbeDialog.vue' import TheBedScrewsDialog from '@/components/dialogs/TheBedScrewsDialog.vue' import TheScrewsTiltAdjustDialog from '@/components/dialogs/TheScrewsTiltAdjustDialog.vue' +Component.registerHooks(['metaInfo']) + @Component({ components: { TheTimelapseRenderingSnackbar, @@ -81,14 +83,19 @@ import TheScrewsTiltAdjustDialog from '@/components/dialogs/TheScrewsTiltAdjustD TheBedScrewsDialog, TheScrewsTiltAdjustDialog, }, - metaInfo() { - const title = this.$store.getters['getTitle'] - return { - titleTemplate: () => title, - } - }, }) export default class App extends Mixins(BaseMixin) { + public metaInfo(): any { + let title = this.$store.getters['getTitle'] + + if (this.isPrinterPowerOff) title = this.$t('App.Titles.PrinterOff') + + return { + title, + titleTemplate: '%s', + } + } + get title(): string { return this.$store.getters['getTitle'] } diff --git a/src/locales/de.json b/src/locales/de.json index ebd3bca6..5f45777d 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -52,6 +52,7 @@ "Complete": "Fertiggestellt - {filename}", "Error": "FEHLER", "Pause": "Druck pausiert", + "PrinterOff": "Drucker AUS", "Printing": "{percent}% Drucken - {filename}", "PrintingETA": "{percent}% Drucken - ETA: {eta} - {filename}" }, diff --git a/src/locales/en.json b/src/locales/en.json index b612ae96..641a124b 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -52,6 +52,7 @@ "Complete": "Complete - {filename}", "Error": "ERROR", "Pause": "Pause Print", + "PrinterOff": "Printer OFF", "Printing": "{percent}% Printing - {filename}", "PrintingETA": "{percent}% Printing - ETA: {eta} - {filename}" }, diff --git a/src/store/getters.ts b/src/store/getters.ts index 6fbf0902..95ff6c1f 100644 --- a/src/store/getters.ts +++ b/src/store/getters.ts @@ -11,35 +11,41 @@ export const getters: GetterTree = { }, getTitle: (state, getters) => { - if (state.socket?.isConnected && state.printer) { - let printer_state = state.printer?.print_stats?.state ?? '' + if (!state.socket?.isConnected) return 'Mainsail' + if (state.server?.klippy_state !== 'ready') return i18n.t('App.Titles.Error') - if (state.printer['gcode_macro TIMELAPSE_TAKE_FRAME']?.is_paused && printer_state === 'paused') - printer_state = 'printing' + // get printer_state + let printer_state = state.printer?.print_stats?.state ?? '' + // skip pause, if timelapse is active + if (state.printer && state.printer['gcode_macro TIMELAPSE_TAKE_FRAME']?.is_paused && printer_state === 'paused') + printer_state = 'printing' - if (state.server?.klippy_state !== 'ready') return i18n.t('App.Titles.Error') - else if (printer_state === 'paused') return i18n.t('App.Titles.Pause') - else if (printer_state === 'printing') { - const eta = getters['printer/getEstimatedTimeETAFormat'] + // return pause title + if (printer_state === 'paused') return i18n.t('App.Titles.Pause') - if (eta !== '--') - return i18n.t('App.Titles.PrintingETA', { - percent: (getters['printer/getPrintPercent'] * 100).toFixed(0), - filename: state.printer.print_stats?.filename, - eta, - }) - else - return i18n.t('App.Titles.Printing', { - percent: (getters['printer/getPrintPercent'] * 100).toFixed(0), - filename: state.printer.print_stats?.filename, - }) - } else if (state.printer?.print_stats?.state === 'complete') - return i18n.t('App.Titles.Complete', { filename: state.printer.print_stats.filename }) + // return complete title + if (state.printer?.print_stats?.state === 'complete') + return i18n.t('App.Titles.Complete', { filename: state.printer.print_stats.filename }) - return state.gui?.general.printername ?? state.printer?.hostname ?? 'Mainsail' + // return printing title + if (printer_state === 'printing') { + const eta = getters['printer/getEstimatedTimeETAFormat'] + const percent = (getters['printer/getPrintPercent'] * 100).toFixed(0) + + if (eta !== '--') + return i18n.t('App.Titles.PrintingETA', { + percent: percent, + filename: state.printer?.print_stats?.filename, + eta, + }) + + return i18n.t('App.Titles.Printing', { + percent: percent, + filename: state.printer?.print_stats?.filename, + }) } - return 'Mainsail' + return state.gui?.general.printername ?? state.printer?.hostname ?? 'Mainsail' }, getDependencies: (state) => {