diff --git a/src/components/panels/Temperature/TemperaturePanelList.vue b/src/components/panels/Temperature/TemperaturePanelList.vue index 837feb0f9..c4eec5fd4 100644 --- a/src/components/panels/Temperature/TemperaturePanelList.vue +++ b/src/components/panels/Temperature/TemperaturePanelList.vue @@ -65,12 +65,19 @@ export default class TemperaturePanelList extends Mixins(BaseMixin) { .sort(this.sortObjectName) } + get hideMcuHostSensors(): boolean { + return this.$store.state.gui.view.tempchart.hideMcuHostSensors ?? false + } + get temperature_sensors() { return this.available_sensors .filter((fullName: string) => { if (this.available_heaters.includes(fullName)) return false if (this.temperature_fans.includes(fullName)) return false + // hide MCU & Host sensors, if the function is enabled + if (this.hideMcuHostSensors && this.checkMcuHostSensor(fullName)) return false + const splits = fullName.split(' ') let name = splits[0] if (splits.length > 1) name = splits[1] @@ -84,6 +91,17 @@ export default class TemperaturePanelList extends Mixins(BaseMixin) { return [...this.filteredHeaters, ...this.temperature_fans, ...this.temperature_sensors] } + get settings() { + return this.$store.state.printer?.configfile?.settings ?? {} + } + + checkMcuHostSensor(fullName: string) { + const settingsObject = this.settings[fullName.toLowerCase()] ?? {} + const sensor_type = settingsObject.sensor_type ?? '' + + return ['temperature_mcu', 'temperature_host'].includes(sensor_type) + } + sortObjectName(a: string, b: string) { const splitsA = a.split(' ') let nameA = splitsA[0] diff --git a/src/components/panels/Temperature/TemperaturePanelSettings.vue b/src/components/panels/Temperature/TemperaturePanelSettings.vue index ad9cfc8a8..c00f80b90 100644 --- a/src/components/panels/Temperature/TemperaturePanelSettings.vue +++ b/src/components/panels/Temperature/TemperaturePanelSettings.vue @@ -13,6 +13,13 @@ hide-details :label="$t('Panels.TemperaturePanel.ShowChart')" /> + + + diff --git a/src/locales/de.json b/src/locales/de.json index eb3a1aec2..0b3e89eb4 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -680,6 +680,7 @@ "Temperature": "Aktuelle Temperatur" }, "Headline": "Temperaturen", + "HideMcuHostSensors": "Host/MCU Sensoren ausblenden", "Max": "max", "Min": "min", "Name": "Name", diff --git a/src/locales/en.json b/src/locales/en.json index bdaef0320..b397aac51 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -681,6 +681,7 @@ "Temperature": "current temperature" }, "Headline": "Temperatures", + "HideMcuHostSensors": "Hide Host/MCU Sensors", "Max": "max", "Min": "min", "Name": "Name", diff --git a/src/store/gui/index.ts b/src/store/gui/index.ts index 9b5022215..57d07150c 100644 --- a/src/store/gui/index.ts +++ b/src/store/gui/index.ts @@ -236,6 +236,7 @@ export const getDefaultState = (): GuiState => { tempchart: { boolTempchart: true, hiddenDataset: [], + hideMcuHostSensors: false, autoscale: false, datasetSettings: {}, }, diff --git a/src/store/gui/types.ts b/src/store/gui/types.ts index dff97411c..b8bbf4dc8 100644 --- a/src/store/gui/types.ts +++ b/src/store/gui/types.ts @@ -162,6 +162,7 @@ export interface GuiState { tempchart: { boolTempchart: boolean hiddenDataset: string[] + hideMcuHostSensors: boolean autoscale: boolean datasetSettings: any } diff --git a/src/store/printer/tempHistory/getters.ts b/src/store/printer/tempHistory/getters.ts index 67e150854..53ed0d318 100644 --- a/src/store/printer/tempHistory/getters.ts +++ b/src/store/printer/tempHistory/getters.ts @@ -70,7 +70,29 @@ export const getters: GetterTree = { return getters['getAvg'](name, 'speed') }, - getSelectedLegends: (state, _, rootState) => { + getHostMcuSensors: (state, getters, rootState) => { + const settings = rootState.printer?.configfile?.settings ?? {} + const available_heaters = rootState.printer?.heaters?.available_heaters ?? [] + const available_sensors = rootState.printer?.heaters?.available_sensors ?? [] + + return available_sensors.filter((fullName: string) => { + // stop when the current sensor is a heater + if (available_heaters.includes(fullName)) return false + // stop when the current sensor is a temperature_fan + if (fullName.startsWith('temperature_fan')) return false + + // get printer settings object from the current sensor + const settingsObject = settings[fullName.toLowerCase()] + if (!settingsObject) return false + + // get the sensor type of the current sensor + const sensor_type = settingsObject.sensor_type ?? '' + + return ['temperature_mcu', 'temperature_host'].includes(sensor_type) + }) + }, + + getSelectedLegends: (state, getters, rootState) => { interface legends { [key: string]: boolean } @@ -108,6 +130,21 @@ export const getters: GetterTree = { selected[serie.name] = !datasetTypesInPercents.includes(datasetType) }) + // hide MCU & Host sensors, if the option is set to true + const hideMcuHostSensors = rootState.gui?.view?.tempchart?.hideMcuHostSensors ?? false + if (hideMcuHostSensors) { + const mcuHostSensors = getters.getHostMcuSensors ?? [] + + Object.keys(selected) + .filter((seriesName) => { + const datasetName = seriesName.slice(0, seriesName.lastIndexOf('-')) + return mcuHostSensors.includes(datasetName) + }) + .forEach((seriesName) => { + selected[seriesName] = false + }) + } + return selected },