add power to tempHistory

Signed-off-by: Stefan Dej <meteyou@gmail.com>
This commit is contained in:
Stefan Dej 2021-01-27 20:54:58 +01:00
parent 8a8587786a
commit 9888d796bd
7 changed files with 170 additions and 85 deletions

View File

@ -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
}

View File

@ -53,6 +53,9 @@
<v-list-item class="minHeight36">
<v-checkbox class="mt-0" v-model="autoscaleTempchart" hide-details label="Autoscale Chart"></v-checkbox>
</v-list-item>
<v-list-item class="minHeight36">
<v-checkbox class="mt-0" v-model="boolPowerDatasets" hide-details label="Show PWM-Datasets"></v-checkbox>
</v-list-item>
</v-list>
</v-menu>
</v-toolbar>
@ -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() {

View File

@ -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')
},

View File

@ -24,6 +24,7 @@ export function getDefaultState() {
},
tempchart: {
autoscale: false,
boolPowerDatasets: false,
},
console: {
hideWaitTemperatures: true,

View File

@ -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 })
}
}
}

View File

@ -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
})
}
}
})
}
},
}

View File

@ -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
}
})
},
}