From 9888d796bd3f0824a8f8c0b942b5d0c6022d83fe Mon Sep 17 00:00:00 2001 From: Stefan Dej Date: Wed, 27 Jan 2021 20:54:58 +0100 Subject: [PATCH] add power to tempHistory Signed-off-by: Stefan Dej --- src/components/charts/TempChart.vue | 9 ++ src/components/panels/ToolsPanel.vue | 11 ++ src/store/gui/actions.js | 6 ++ src/store/gui/index.js | 1 + src/store/printer/mutations.js | 3 + src/store/printer/tempHistory/actions.js | 117 ++++++++++++++++++++- src/store/printer/tempHistory/mutations.js | 108 +++++-------------- 7 files changed, 170 insertions(+), 85 deletions(-) diff --git a/src/components/charts/TempChart.vue b/src/components/charts/TempChart.vue index 713c978f..0df12391 100644 --- a/src/components/charts/TempChart.vue +++ b/src/components/charts/TempChart.vue @@ -41,6 +41,13 @@ export default { maximum: 300, interval: 50, }, + axisY2: { + gridThickness: 0, + gridColor: '#ffffff30', + minimum: 0, + maximum: 1, + interval: 0.25, + }, data: [ ] }, chart : null @@ -53,6 +60,8 @@ export default { return datasets.sort((a,b) => { if ('name' in a && 'name' in b) { + if (a.name.endsWith("_target") > b.name.endsWith("_power")) return -1 + if (a.name.endsWith("_power") < b.name.endsWith("_target")) return 1 if (a.name.endsWith("_target") > b.name.endsWith("_target")) return -1 if (a.name.endsWith("_target") < b.name.endsWith("_target")) return 1 } diff --git a/src/components/panels/ToolsPanel.vue b/src/components/panels/ToolsPanel.vue index 351935c1..3bc8a0b3 100644 --- a/src/components/panels/ToolsPanel.vue +++ b/src/components/panels/ToolsPanel.vue @@ -53,6 +53,9 @@ + + + @@ -185,6 +188,14 @@ return this.$store.dispatch("gui/setSettings", { tempchart: { autoscale: newVal } }) } }, + boolPowerDatasets: { + get() { + return this.$store.state.gui.tempchart.boolPowerDatasets + }, + set: function(newVal) { + return this.$store.dispatch("gui/setSettings", { tempchart: { boolPowerDatasets: newVal } }) + } + }, }, created() { diff --git a/src/store/gui/actions.js b/src/store/gui/actions.js index 55fee860..6f5f834d 100644 --- a/src/store/gui/actions.js +++ b/src/store/gui/actions.js @@ -11,6 +11,12 @@ export default { setSettings({ commit, dispatch }, payload) { commit('setSettings', payload) + + if ('tempchart' in payload && 'boolPowerDatasets' in payload.tempchart) { + if (payload.tempchart.boolPowerDatasets) commit('printer/tempHistory/showPowerDatasets', {}, { root: true }) + else commit('printer/tempHistory/hidePowerDatasets', {}, { root: true }) + } + dispatch('upload') }, diff --git a/src/store/gui/index.js b/src/store/gui/index.js index 7455bdb6..215544a8 100644 --- a/src/store/gui/index.js +++ b/src/store/gui/index.js @@ -24,6 +24,7 @@ export function getDefaultState() { }, tempchart: { autoscale: false, + boolPowerDatasets: false, }, console: { hideWaitTemperatures: true, diff --git a/src/store/printer/mutations.js b/src/store/printer/mutations.js index eaccf781..8e87a55a 100644 --- a/src/store/printer/mutations.js +++ b/src/store/printer/mutations.js @@ -59,6 +59,9 @@ export default { if (value.target) this.commit('printer/tempHistory/addValue', { name: name+'_target', value: value.target, time: now }) else if (key in state && 'target' in state[key]) this.commit('printer/tempHistory/addValue', { name: name+'_target', value: state[key].target, time: now }) + + if (value.power) this.commit('printer/tempHistory/addValue', { name: name+'_power', value: value.power, time: now }) + else if (key in state && 'power' in state[key]) this.commit('printer/tempHistory/addValue', { name: name+'_power', value: state[key].power, time: now }) } } } diff --git a/src/store/printer/tempHistory/actions.js b/src/store/printer/tempHistory/actions.js index f917fcaf..7a7d66cf 100644 --- a/src/store/printer/tempHistory/actions.js +++ b/src/store/printer/tempHistory/actions.js @@ -1,9 +1,122 @@ +import {colorArray, colorChamber, colorHeaterBed} from "@/store/variables"; + export default { reset({ commit }) { commit('reset') }, - getHistory({ commit }, payload) { - commit('setHistory', payload); + getHistory({ commit, state }, payload) { + window.console.log("getHistory") + window.console.log(payload) + + if (payload !== undefined) { + Object.entries(payload).sort().forEach(([name, datasets]) => { + let keySplit = name.split(" ") + if (keySplit.length > 1) name = keySplit[1] + const type = keySplit[0] + + if (datasets.temperatures) { + let now = new Date() + window.console.log(datasets) + + let datasetTemperature = state.datasets.find(element => element.name === name) + if (datasetTemperature === undefined) { + let color = '' + + switch (name) { + case 'heater_bed': + color = colorHeaterBed; + break; + case 'chamber': + color = colorChamber; + break; + default: + color = colorArray[state.datasets.filter(element => + !element.name.endsWith("_target") && element.name !== "heater_bed" && element.name !== "chamber" + ).length]; + break; + } + + datasetTemperature = { + type: "spline", + name: name, + legendText: name, + xValueType: "dateTime", + dataPoints:[], + showInLegend: true, + markerType: 'none', + toolTipContent: "{name}: {y}°C", + color: color, + } + + commit('addDataset', datasetTemperature) + } + + commit('addValue', { + name: name, + value: datasets.temperatures, + type: type, + time: now + }) + + if ('targets' in datasets && (type.startsWith("extruder") || type === "heater_bed" || type === "temperature_fan")) { + let datasetTarget = state.datasets.find(element => element.name === name+"_target") + if (datasetTarget === undefined) { + datasetTarget = { + type: "stepArea", + name: name+"_target", + legendText: name+"_target", + xValueType: "dateTime", + dataPoints:[], + showInLegend: false, + markerType: 'none', + toolTipContent: "{name}: {y}°C", + color: datasetTemperature.color, + fillOpacity: .1, + lineThickness: 0, + } + + commit('addDataset', datasetTarget) + } + + commit('addValue', { + name: name+"_target", + value: datasets.targets, + type: type, + time: now + }) + } + + if ('powers' in datasets && (type.startsWith("extruder") || type === "heater_bed")) { + let datasetPower = state.datasets.find(element => element.name === name+"_power") + if (datasetPower === undefined) { + datasetPower = { + type: "spline", + name: name+"_power", + legendText: name+"_power", + xValueType: "dateTime", + dataPoints:[], + showInLegend: false, + markerType: 'none', + lineDashType: "dot", + lineThickness: 1, + visible: 0, + toolTipContent: "{name}: {y}%", + color: datasetTemperature.color, + } + + commit('addDataset', datasetPower) + } + + commit('addValue', { + name: name+"_power", + value: datasets.powers, + type: type, + time: now + }) + } + } + }) + } }, } \ No newline at end of file diff --git a/src/store/printer/tempHistory/mutations.js b/src/store/printer/tempHistory/mutations.js index 7dc072aa..7048938f 100644 --- a/src/store/printer/tempHistory/mutations.js +++ b/src/store/printer/tempHistory/mutations.js @@ -1,42 +1,15 @@ import { getDefaultState } from './index' -import { colorArray, colorChamber, colorHeaterBed } from "@/store/variables" export default { reset(state) { Object.assign(state, getDefaultState()) }, - - setHistory(state, payload) { - let now = new Date(); - if (payload !== undefined) { - Object.entries(payload).sort().forEach(([key, datasets]) => { - let keySplit = key.split(" "); + addDataset(state, payload) { + window.console.log("addDataset") + window.console.log(payload.name) - if (keySplit.length > 1) key = keySplit[1]; - - if (datasets.temperatures) { - let max = datasets.temperatures.length; - for (let i = 0; i < max; i++) { - let time = new Date(now.getTime() - 1000 * (max - i)); - - this.commit('printer/tempHistory/addValue', { - name: key, - value: datasets.temperatures[i], - type: keySplit[0], - time: time - }); - - this.commit('printer/tempHistory/addValue', { - name: key+'_target', - value: datasets.targets[i], - type: keySplit[0], - time: time - }); - } - } - }); - } + state.datasets.push(payload) }, addValue(state, payload) { @@ -46,61 +19,14 @@ export default { //let deletedIndex let mainDataset = state.datasets.find(element => element.name === payload.name) - if (!mainDataset) { - //TODO load hidden sensors from gui store - //let hidden = this.rootState.gui.dashboard.hiddenTempChart.indexOf(payload.name.toUpperCase()) >= 0; - //let hidden = false - - if (payload.name.includes('_target')) { - let masterDataset = state.datasets.find(element => element.name === payload.name.replace('_target', '')) - - if (masterDataset) { - mainDataset = { - type: "stepArea", - name: payload.name, - legendText: payload.name, - xValueType: "dateTime", - dataPoints:[], - showInLegend: false, - markerType: 'none', - fillOpacity: .1, - lineThickness: 0, - toolTipContent: "{name}: {y}°C", - color: masterDataset.color || '#666' - } - } - } else { - let color = ''; - - switch (payload.name) { - case 'heater_bed': color = colorHeaterBed; break; - case 'chamber': color = colorChamber; break; - default: color = colorArray[state.datasets.filter(element => !element.name.endsWith("_target") && element.name !== "heater_bed" && element.name !== "chamber").length]; break; - } - - mainDataset = { - type: "spline", - name: payload.name, - legendText: payload.name, - xValueType: "dateTime", - dataPoints:[], - showInLegend: true, - markerType: 'none', - toolTipContent: "{name}: {y}°C", - color: color, - } - } - - mainDataset = state.datasets.push(mainDataset); - } // update current temp in temperature chart - if (mainDataset && payload.value !== undefined) { + if (mainDataset !== undefined && payload.value !== undefined) { if (Array.isArray(payload.value)) { - for (let i = 0; i < payload.value.length; i++) { - mainDataset.data.push({ - x: payload.time - 1000 * i, - y: Math.round(payload.value[i]*100)/100 + for (let i = payload.value.length; i > 0; i--) { + mainDataset.dataPoints.push({ + x: payload.time - (i*1000), + y: Math.round(payload.value[payload.value.length - i]*100)/100 }) } } else { @@ -131,4 +57,20 @@ export default { } } }, + + hidePowerDatasets(state) { + state.datasets.forEach(element => { + if (element.name.endsWith("_power")) { + element.visible = false + } + }) + }, + + showPowerDatasets(state) { + state.datasets.forEach(element => { + if (element.name.endsWith("_power")) { + element.visible = true + } + }) + }, } \ No newline at end of file