diff --git a/src/components/charts/TempChart.vue b/src/components/charts/TempChart.vue index 92631c26..3b089a9b 100644 --- a/src/components/charts/TempChart.vue +++ b/src/components/charts/TempChart.vue @@ -89,7 +89,7 @@ export default class TempChart extends Mixins(BaseMixin) { }, yAxis: [ { - name: this.$t('Panels.ToolsPanel.TemperaturesInChart'), + name: this.$t('Panels.TemperaturePanel.TemperaturesInChart'), type: 'value', min: 0, max: (value: any) => { diff --git a/src/components/inputs/TemperatureInput.vue b/src/components/inputs/TemperatureInput.vue new file mode 100644 index 00000000..f79d487f --- /dev/null +++ b/src/components/inputs/TemperatureInput.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/src/components/inputs/ToolInput.vue b/src/components/inputs/ToolInput.vue deleted file mode 100644 index fb098d2d..00000000 --- a/src/components/inputs/ToolInput.vue +++ /dev/null @@ -1,96 +0,0 @@ - - - - - diff --git a/src/components/panels/TemperaturePanel.vue b/src/components/panels/TemperaturePanel.vue new file mode 100644 index 00000000..a2d42964 --- /dev/null +++ b/src/components/panels/TemperaturePanel.vue @@ -0,0 +1,425 @@ + + + + + diff --git a/src/components/panels/ToolsPanel.vue b/src/components/panels/ToolsPanel.vue deleted file mode 100644 index 8860df73..00000000 --- a/src/components/panels/ToolsPanel.vue +++ /dev/null @@ -1,501 +0,0 @@ - - - - - diff --git a/src/locales/da.json b/src/locales/da.json index 05257296..39818a6e 100644 --- a/src/locales/da.json +++ b/src/locales/da.json @@ -544,7 +544,7 @@ "Y": "Y", "Z": "Z" }, - "ToolsPanel": { + "TemperaturePanel": { "AutoscaleChart": "Autoskalér diagram", "Avg": "Gns", "Color": "Farve", diff --git a/src/locales/de.json b/src/locales/de.json index f8327b01..ff8388c5 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -561,7 +561,7 @@ "Y": "Y", "Z": "Z" }, - "ToolsPanel": { + "TemperaturePanel": { "AutoscaleChart": "Autoskalierung", "Avg": "Ø", "Color": "Farbe", diff --git a/src/locales/en.json b/src/locales/en.json index 59c7e44d..3d9cc8a6 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -562,7 +562,7 @@ "Y": "Y", "Z": "Z" }, - "ToolsPanel": { + "TemperaturePanel": { "AutoscaleChart": "Autoscale Chart", "Avg": "Avg", "Color": "Color", diff --git a/src/locales/es.json b/src/locales/es.json index 178e4f7d..12a39e68 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -534,7 +534,7 @@ "Y": "Y", "Z": "Z" }, - "ToolsPanel": { + "TemperaturePanel": { "AutoscaleChart": "Autoescalar gráfico", "Avg": "Promedio", "Color": "Color", diff --git a/src/locales/fr.json b/src/locales/fr.json index c21826ac..bbad4b09 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -518,7 +518,7 @@ "Y": "Y", "Z": "Z" }, - "ToolsPanel": { + "TemperaturePanel": { "AutoscaleChart": "Echelle automatique", "Avg": "Moyenne", "Color": "Couleur", diff --git a/src/locales/hu.json b/src/locales/hu.json index acf01c85..fffb96a6 100644 --- a/src/locales/hu.json +++ b/src/locales/hu.json @@ -517,7 +517,7 @@ "Y": "Y", "Z": "Z" }, - "ToolsPanel": { + "TemperaturePanel": { "AutoscaleChart": "Grafikon automatikus méretezése", "Avg": "Átl.", "Color": "Szín", diff --git a/src/locales/it.json b/src/locales/it.json index d2a39c6a..63fe9455 100644 --- a/src/locales/it.json +++ b/src/locales/it.json @@ -519,7 +519,7 @@ "Y": "Y", "Z": "Z" }, - "ToolsPanel": { + "TemperaturePanel": { "AutoscaleChart": "Scala automaticamente il Grafico", "Avg": "Medio", "Color": "Colore", diff --git a/src/locales/nl.json b/src/locales/nl.json index ec666b7a..2afc2f33 100644 --- a/src/locales/nl.json +++ b/src/locales/nl.json @@ -536,7 +536,7 @@ "Y": "Y", "Z": "Z" }, - "ToolsPanel": { + "TemperaturePanel": { "AutoscaleChart": "Schaal automatisch", "Avg": "Gemiddeld", "Color": "Kleur", diff --git a/src/locales/pl.json b/src/locales/pl.json index d47a7499..1f00c252 100644 --- a/src/locales/pl.json +++ b/src/locales/pl.json @@ -517,7 +517,7 @@ "Y": "Y", "Z": "Z" }, - "ToolsPanel": { + "TemperaturePanel": { "AutoscaleChart": "Autoskaluj wykres", "Avg": "Śred.", "Color": "Kolor", diff --git a/src/locales/ru.json b/src/locales/ru.json index 94423fda..55e75e91 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -536,7 +536,7 @@ "Y": "Y", "Z": "Z" }, - "ToolsPanel": { + "TemperaturePanel": { "AutoscaleChart": "Автомасштабируемая диаграмма", "Avg": "средний", "Color": "Цвет", diff --git a/src/locales/zh-tw.json b/src/locales/zh-tw.json index 54e3e52c..8ff7e4c4 100644 --- a/src/locales/zh-tw.json +++ b/src/locales/zh-tw.json @@ -464,7 +464,7 @@ "Y": "Y", "Z": "Z" }, - "ToolsPanel": { + "TemperaturePanel": { "AutoscaleChart": "自動縮放圖表", "Avg": "平均", "Color": "顏色", diff --git a/src/locales/zh.json b/src/locales/zh.json index 730fad86..ae5602b8 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -517,7 +517,7 @@ "Y": "Y", "Z": "Z" }, - "ToolsPanel": { + "TemperaturePanel": { "AutoscaleChart": "自动缩放图表", "Avg": "平均", "Color": "颜色", diff --git a/src/pages/Dashboard.vue b/src/pages/Dashboard.vue index 94343d13..ede70a2b 100644 --- a/src/pages/Dashboard.vue +++ b/src/pages/Dashboard.vue @@ -93,7 +93,7 @@ import MinSettingsPanel from '@/components/panels/MinSettingsPanel.vue' import MiscellaneousPanel from '@/components/panels/MiscellaneousPanel.vue' import PrintsettingsPanel from '@/components/panels/PrintsettingsPanel.vue' import StatusPanel from '@/components/panels/StatusPanel.vue' -import ToolsPanel from '@/components/panels/ToolsPanel.vue' +import TemperaturePanel from '@/components/panels/TemperaturePanel.vue' import WebcamPanel from '@/components/panels/WebcamPanel.vue' import ZoffsetPanel from '@/components/panels/ZoffsetPanel.vue' import kebabCase from 'lodash.kebabcase' @@ -110,7 +110,7 @@ import kebabCase from 'lodash.kebabcase' MiscellaneousPanel, PrintsettingsPanel, StatusPanel, - ToolsPanel, + TemperaturePanel, WebcamPanel, ZoffsetPanel, }, diff --git a/src/plugins/helpers.ts b/src/plugins/helpers.ts index cb3d3a87..2dc3dd53 100644 --- a/src/plugins/helpers.ts +++ b/src/plugins/helpers.ts @@ -61,7 +61,7 @@ export const convertPanelnameToIcon = (name: string): string => { return mdiPrinter3d case 'miscellaneous': return mdiDipSwitch - case 'tools': + case 'temperature': return mdiThermometerLines case 'miniconsole': return mdiConsoleLine diff --git a/src/store/gui/index.ts b/src/store/gui/index.ts index ae2a6dae..3ea98098 100644 --- a/src/store/gui/index.ts +++ b/src/store/gui/index.ts @@ -57,7 +57,7 @@ export const getDefaultState = (): GuiState => { { name: 'printsettings', visible: true }, { name: 'machine-settings', visible: true }, { name: 'miscellaneous', visible: true }, - { name: 'tools', visible: true }, + { name: 'temperature', visible: true }, { name: 'miniconsole', visible: false }, ], tabletLayout1: [ @@ -70,7 +70,7 @@ export const getDefaultState = (): GuiState => { { name: 'miscellaneous', visible: true }, ], tabletLayout2: [ - { name: 'tools', visible: true }, + { name: 'temperature', visible: true }, { name: 'miniconsole', visible: true }, ], desktopLayout1: [ @@ -83,7 +83,7 @@ export const getDefaultState = (): GuiState => { { name: 'miscellaneous', visible: true }, ], desktopLayout2: [ - { name: 'tools', visible: true }, + { name: 'temperature', visible: true }, { name: 'miniconsole', visible: true }, ], widescreenLayout1: [ @@ -93,7 +93,7 @@ export const getDefaultState = (): GuiState => { { name: 'miscellaneous', visible: true }, ], widescreenLayout2: [ - { name: 'tools', visible: true }, + { name: 'temperature', visible: true }, { name: 'printsettings', visible: true }, { name: 'machine-settings', visible: true }, ], diff --git a/src/store/printer/getters.ts b/src/store/printer/getters.ts index a6976230..66151ea9 100644 --- a/src/store/printer/getters.ts +++ b/src/store/printer/getters.ts @@ -9,8 +9,9 @@ import { PrinterStateTemperatureFan, PrinterStateMiscellaneous, PrinterStateMcu, - PrinterStateSensor, PrinterStateMacro, + PrinterStateTemperatureObject, + PrinterStateTemperatureSensor, } from '@/store/printer/types' import { caseInsensitiveSort, formatFrequency, getMacroParams } from '@/plugins/helpers' import { RootState } from '@/store/types' @@ -121,7 +122,7 @@ export const getters: GetterTree = { if (!name.startsWith('_')) { heaters.push({ name: name, - type: nameSplit[0], + type: nameSplit[0] as PrinterStateHeater['type'], icon: icon, iconColor: color, target: Math.round(value.target * 10) / 10, @@ -172,7 +173,7 @@ export const getters: GetterTree = { }, getTemperatureSensors: (state, getters) => { - const sensors: PrinterStateSensor[] = [] + const sensors: PrinterStateTemperatureSensor[] = [] for (const [key, value] of Object.entries(state)) { const nameSplit = key.split(' ') @@ -204,6 +205,99 @@ export const getters: GetterTree = { return caseInsensitiveSort(sensors, 'name') }, + getTemperatureObjects: (state, getters) => { + const objects: PrinterStateTemperatureObject[] = [] + + const heaters = getters['getHeaters'] + if (heaters.length) { + heaters.forEach((heater: PrinterStateHeater) => { + objects.push({ + name: heater.name, + type: heater.type, + icon: heater.icon, + iconColor: heater.target > 0 ? `${heater.chartColor}aa` : `${heater.chartColor}22`, + iconClass: '', + state: heater.target > 0 ? heater.power + '%' : 'off', + avgState: heater.avgPower + '%', + temperature: heater.temperature, + additionSensors: heater.additionSensors, + target: heater.target, + presets: heater.presets, + min_temp: heater.min_temp, + max_temp: heater.max_temp, + measured_min_temp: null, + measured_max_temp: null, + rpm: null, + rpmClass: '', + command: 'SET_HEATER_TEMPERATURE', + commandAttributeName: 'HEATER', + chartColor: heater.chartColor, + chartSeries: heater.chartSeries, + }) + }) + } + + const temperature_fans = getters['getTemperatureFans'] + if (temperature_fans.length) { + temperature_fans.forEach((fan: PrinterStateTemperatureFan) => { + objects.push({ + name: fan.name, + type: 'temperature_fan', + icon: fan.icon, + iconColor: fan.target > 0 ? `${fan.chartColor}aa` : `${fan.chartColor}22`, + iconClass: fan.speed ? ' icon-rotate' : '', + state: fan.target > 0 && fan.speed > 0 ? fan.speed + '%' : fan.target > 0 ? 'standby' : 'off', + avgState: fan.avgSpeed + '%', + temperature: fan.temperature, + additionSensors: fan.additionSensors, + target: fan.target, + presets: fan.presets, + min_temp: fan.min_temp, + max_temp: fan.max_temp, + measured_min_temp: null, + measured_max_temp: null, + rpm: `${fan.rpm} RPM`, + rpmClass: fan.rpm === 0 && fan.speed > 0 ? 'red--text' : '', + command: 'SET_TEMPERATURE_FAN_TARGET', + commandAttributeName: 'TEMPERATURE_FAN', + chartColor: fan.chartColor, + chartSeries: fan.chartSeries, + }) + }) + } + + const temperature_sensors = getters['getTemperatureSensors'] + if (temperature_sensors.length) { + temperature_sensors.forEach((sensor: PrinterStateTemperatureSensor) => { + objects.push({ + name: sensor.name, + type: 'temperature_sensor', + icon: sensor.icon, + iconColor: `${sensor.chartColor}aa`, + iconClass: '', + state: null, + avgState: '', + temperature: sensor.temperature, + additionSensors: sensor.additionSensors, + target: null, + presets: [], + min_temp: sensor.min_temp, + max_temp: sensor.max_temp, + measured_min_temp: sensor.measured_min_temp, + measured_max_temp: sensor.measured_max_temp, + rpm: null, + rpmClass: '', + command: null, + commandAttributeName: null, + chartColor: sensor.chartColor, + chartSeries: sensor.chartSeries, + }) + }) + } + + return objects + }, + getPartFanSpeed: (state) => { return 'fan' in state ? state.fan.speed : 0 }, diff --git a/src/store/printer/types.ts b/src/store/printer/types.ts index 52521c67..a64c30d7 100644 --- a/src/store/printer/types.ts +++ b/src/store/printer/types.ts @@ -26,7 +26,7 @@ export interface PrinterState { export interface PrinterStateHeater { name: string - type: string + type: 'extruder' | 'heater_bed' | 'heater_generic' icon: string iconColor: string target: number @@ -57,7 +57,7 @@ export interface PrinterStateTemperatureFan { max_temp: number } -export interface PrinterStateSensor { +export interface PrinterStateTemperatureSensor { name: string temperature: number additionSensors: PrinterStateAdditionSensor[] @@ -70,6 +70,30 @@ export interface PrinterStateSensor { chartSeries: string[] } +export interface PrinterStateTemperatureObject { + name: string + type: 'extruder' | 'heater_bed' | 'heater_generic' | 'temperature_fan' | 'temperature_sensor' + icon: string + iconColor: string + iconClass: string + state: string | null + avgState: string + temperature: number + additionSensors: PrinterStateAdditionSensor[] + target: number | null + presets: number[] + min_temp: number + max_temp: number + measured_min_temp: number | null + measured_max_temp: number | null + rpm: string | null + rpmClass: string + command: 'SET_HEATER_TEMPERATURE' | 'SET_TEMPERATURE_FAN_TARGET' | null + commandAttributeName: 'HEATER' | 'TEMPERATURE_FAN' | null + chartColor: string + chartSeries: string[] +} + export interface PrinterStateAdditionSensor { bool: boolean name: string diff --git a/src/store/variables.ts b/src/store/variables.ts index 17045d98..37be973f 100644 --- a/src/store/variables.ts +++ b/src/store/variables.ts @@ -75,7 +75,7 @@ export const allDashboardPanels = [ 'miniconsole', 'miscellaneous', 'printsettings', - 'tools', + 'temperature', 'webcam', 'zoffset', ]