chore: fix some eslint warnings

Signed-off-by: Stefan Dej <meteyou@gmail.com>
This commit is contained in:
Stefan Dej 2021-08-22 23:25:56 +02:00
parent 0f13d2efc1
commit eb1e1d4f5c
40 changed files with 275 additions and 47 deletions

View File

@ -146,7 +146,7 @@ export const actions: ActionTree<FarmPrinterState, RootState> = {
] ]
let subscripts = {} let subscripts = {}
payload.objects.forEach((object: any) => { payload.objects.forEach((object: string) => {
const splits = object.split(" ") const splits = object.split(" ")
const objectName = splits[0] const objectName = splits[0]

View File

@ -3,6 +3,7 @@ import {convertName} from "@/plugins/helpers"
import {GetterTree} from "vuex"; import {GetterTree} from "vuex";
import {FarmPrinterState} from "@/store/farm/printer/types"; import {FarmPrinterState} from "@/store/farm/printer/types";
// eslint-disable-next-line
export const getters: GetterTree<FarmPrinterState, any> = { export const getters: GetterTree<FarmPrinterState, any> = {
getSocketUrl: (state) => { getSocketUrl: (state) => {
@ -20,6 +21,7 @@ export const getters: GetterTree<FarmPrinterState, any> = {
) )
}, },
// eslint-disable-next-line
getSetting: (state) => (name: string, fallback: any) => { getSetting: (state) => (name: string, fallback: any) => {
return state.settings[name] ?? fallback return state.settings[name] ?? fallback
}, },

View File

@ -42,6 +42,7 @@ const state = () => {
return getDefaultState() return getDefaultState()
} }
// eslint-disable-next-line
export const printer: Module<FarmPrinterState, any> = { export const printer: Module<FarmPrinterState, any> = {
namespaced: true, namespaced: true,
state, state,

View File

@ -56,6 +56,7 @@ export const mutations: MutationTree<FarmPrinterState> = {
}, },
setConfigDir(state, payload) { setConfigDir(state, payload) {
// eslint-disable-next-line
Object.values(payload).forEach((file: any) => { Object.values(payload).forEach((file: any) => {
if ("filename" in file) { if ("filename" in file) {
if (file.filename.startsWith(".theme/")) { if (file.filename.startsWith(".theme/")) {
@ -70,6 +71,7 @@ export const mutations: MutationTree<FarmPrinterState> = {
}, },
setMainsailData(state, payload) { setMainsailData(state, payload) {
// eslint-disable-next-line
const setDataDeep = (currentState: any, payload: any) => { const setDataDeep = (currentState: any, payload: any) => {
Object.entries(payload).forEach(([key, value]) => { Object.entries(payload).forEach(([key, value]) => {
if (typeof value === 'object' && !Array.isArray(value) && key in currentState) { if (typeof value === 'object' && !Array.isArray(value) && key in currentState) {

View File

@ -14,12 +14,15 @@ export interface FarmPrinterState {
reconnects: number reconnects: number
maxReconnects: number maxReconnects: number
reconnectInterval: number reconnectInterval: number
// eslint-disable-next-line
wsData: any[] wsData: any[]
}, },
data: { data: {
gui: GuiState gui: GuiState
// eslint-disable-next-line
[key: string]: any [key: string]: any
}, },
// eslint-disable-next-line
settings: any, settings: any,
databases: string[], databases: string[],
current_file: FileStateFile, current_file: FileStateFile,

View File

@ -3,6 +3,7 @@ import { themeDir } from "@/store/variables"
import {GetterTree} from "vuex"; import {GetterTree} from "vuex";
import {FileState, FileStateFile} from "@/store/files/types"; import {FileState, FileStateFile} from "@/store/files/types";
// eslint-disable-next-line
export const getters: GetterTree<FileState, any> = { export const getters: GetterTree<FileState, any> = {
getThemeFileUrl: (state, getters, rootState, rootGetters) => (acceptName: string, acceptExtensions: string[]) => { getThemeFileUrl: (state, getters, rootState, rootGetters) => (acceptName: string, acceptExtensions: string[]) => {

View File

@ -13,6 +13,7 @@ export const getDefaultState = (): FileState => {
// initial state // initial state
const state = getDefaultState() const state = getDefaultState()
// eslint-disable-next-line
export const files: Module<FileState, any> = { export const files: Module<FileState, any> = {
namespaced: true, namespaced: true,
state, state,

View File

@ -3,9 +3,6 @@ import { getDefaultState } from './index'
import { findDirectory } from "@/plugins/helpers" import { findDirectory } from "@/plugins/helpers"
import {MutationTree} from "vuex"; import {MutationTree} from "vuex";
import { import {
ApiGetDirectoryReturn,
ApiGetDirectoryReturnDir,
ApiGetDirectoryReturnFile,
FileState, FileState,
FileStateFile FileStateFile
} from "@/store/files/types"; } from "@/store/files/types";
@ -36,8 +33,9 @@ export const mutations: MutationTree<FileState> = {
filename = dirArray[dirArray.length-1] filename = dirArray[dirArray.length-1]
const path = findDirectory(state.filetree, dirArray) const path = findDirectory(state.filetree, dirArray)
const fileIndex = path?.findIndex((element: any) => element.filename === filename) const fileIndex = path?.findIndex((element: FileStateFile) => element.filename === filename)
if (path && fileIndex && fileIndex !== -1) { if (path && fileIndex && fileIndex !== -1) {
// eslint-disable-next-line
const currentFile = path[fileIndex] as any const currentFile = path[fileIndex] as any
allowedMetadata.forEach((key: string) => { allowedMetadata.forEach((key: string) => {
if (key in payload) currentFile[key] = payload[key] if (key in payload) currentFile[key] = payload[key]

View File

@ -44,6 +44,7 @@ export interface ApiGetDirectoryReturn {
dirs: ApiGetDirectoryReturnDir[] dirs: ApiGetDirectoryReturnDir[]
files: ApiGetDirectoryReturnFile[] files: ApiGetDirectoryReturnFile[]
disk_usage: FileStateDiskUsage disk_usage: FileStateDiskUsage
// eslint-disable-next-line
requestParams?: any requestParams?: any
} }

View File

@ -24,7 +24,7 @@ export const actions: ActionTree<GuiState, RootState> = {
dispatch('printer/init', null, { root: true }) dispatch('printer/init', null, { root: true })
}, },
updateDataFromDB({ state, commit }, payload) { updateDataFromDB({ commit }, payload) {
commit('saveSetting', { commit('saveSetting', {
name: payload.key, name: payload.key,
value: payload.value value: payload.value
@ -205,6 +205,7 @@ export const actions: ActionTree<GuiState, RootState> = {
resetLayout({ dispatch }, name) { resetLayout({ dispatch }, name) {
const defaultState = getDefaultState() const defaultState = getDefaultState()
// eslint-disable-next-line
const newVal: any = defaultState.dashboard[name] ?? [] const newVal: any = defaultState.dashboard[name] ?? []
dispatch('saveSetting', { dispatch('saveSetting', {

View File

@ -1,7 +1,8 @@
import {caseInsensitiveSort} from "@/plugins/helpers"; import {caseInsensitiveSort} from "@/plugins/helpers";
import {GetterTree} from "vuex"; import {GetterTree} from "vuex";
import {GuiState} from "@/store/gui/types"; import {GuiState, GuiStateConsoleFilter, GuiStatePreset} from "@/store/gui/types";
// eslint-disable-next-line
export const getters: GetterTree<GuiState, any> = { export const getters: GetterTree<GuiState, any> = {
getPreheatPresets:(state) => { getPreheatPresets:(state) => {
@ -31,7 +32,7 @@ export const getters: GetterTree<GuiState, any> = {
output.push('^(?:ok\\s+)?(B|C|T\\d*):') output.push('^(?:ok\\s+)?(B|C|T\\d*):')
if (Array.isArray(state.console.customFilters) && state.console.customFilters.length) { if (Array.isArray(state.console.customFilters) && state.console.customFilters.length) {
state.console.customFilters.filter((filter: any) => filter.bool === true).forEach((filter: any) => { state.console.customFilters.filter((filter: GuiStateConsoleFilter) => filter.bool === true).forEach((filter: GuiStateConsoleFilter) => {
filter.regex.split("\n").forEach((rule: string) => { filter.regex.split("\n").forEach((rule: string) => {
if (rule !== "") output.push(rule) if (rule !== "") output.push(rule)
}) })
@ -51,7 +52,7 @@ export const getters: GetterTree<GuiState, any> = {
return caseInsensitiveSort(output, 'name') return caseInsensitiveSort(output, 'name')
}, },
getDatasetValue: (state) => (payload: any) => { getDatasetValue: (state) => (payload: { name: string, type: string }) => {
if ( if (
payload.name in state.tempchart.datasetSettings && payload.name in state.tempchart.datasetSettings &&
payload.type in state.tempchart.datasetSettings[payload.name] payload.type in state.tempchart.datasetSettings[payload.name]
@ -62,7 +63,7 @@ export const getters: GetterTree<GuiState, any> = {
return false return false
}, },
getDatasetAdditionalSensorValue: (state) => (payload: any) => { getDatasetAdditionalSensorValue: (state) => (payload: { name: string, sensor: string }) => {
if ( if (
payload.name in state.tempchart.datasetSettings && payload.name in state.tempchart.datasetSettings &&
'additionalSensors' in state.tempchart.datasetSettings[payload.name] && 'additionalSensors' in state.tempchart.datasetSettings[payload.name] &&
@ -72,7 +73,7 @@ export const getters: GetterTree<GuiState, any> = {
return true return true
}, },
getPresetsFromHeater: state => (payload: any) => { getPresetsFromHeater: state => (payload: { name: string }) => {
interface preset { interface preset {
value: number value: number
} }
@ -83,11 +84,11 @@ export const getters: GetterTree<GuiState, any> = {
value: 0 value: 0
}) })
Object.values(state.presets).forEach((preset: any) => { Object.values(state.presets).forEach((preset: GuiStatePreset) => {
if ( if (
payload.name in preset.values && payload.name in preset.values &&
preset.values[payload.name].bool && preset.values[payload.name].bool &&
output.findIndex((entry: any) => entry.value === preset.values[payload.name].value) === -1 output.findIndex((entry: preset) => entry.value === preset.values[payload.name].value) === -1
) { ) {
output.push({ output.push({
value: preset.values[payload.name].value, value: preset.values[payload.name].value,

View File

@ -171,6 +171,7 @@ export const getDefaultState = (): GuiState => {
// initial state // initial state
const state = getDefaultState() const state = getDefaultState()
// eslint-disable-next-line
export const gui: Module<GuiState, any> = { export const gui: Module<GuiState, any> = {
namespaced: true, namespaced: true,
state, state,

View File

@ -26,6 +26,7 @@ export const mutations: MutationTree<GuiState> = {
}, },
saveSetting(state, payload) { saveSetting(state, payload) {
// eslint-disable-next-line
const deepSet = (obj:any, is:string[] | string, value:any):any => { const deepSet = (obj:any, is:string[] | string, value:any):any => {
if (is !== undefined && typeof is === 'string') if (is !== undefined && typeof is === 'string')
return deepSet(obj,is.split('.'), value); return deepSet(obj,is.split('.'), value);

View File

@ -31,4 +31,11 @@ export interface GuiStatePreset {
value: number value: number
} }
} }
}
export interface GuiStateConsoleFilter {
bool: boolean
index?: string
name: string
regex: string
} }

View File

@ -326,6 +326,7 @@ export const getters: GetterTree<PrinterState, RootState> = {
if (sensorName+" "+name in state) { if (sensorName+" "+name in state) {
Object.keys(state[sensorName+" "+name]).forEach(key => { Object.keys(state[sensorName+" "+name]).forEach(key => {
if (key !== "temperature") { if (key !== "temperature") {
// eslint-disable-next-line
const tmp: any = {} const tmp: any = {}
tmp[key] = {} tmp[key] = {}
tmp[key]['value'] = state[sensorName+" "+name][key].toFixed(1) tmp[key]['value'] = state[sensorName+" "+name][key].toFixed(1)
@ -398,7 +399,26 @@ export const getters: GetterTree<PrinterState, RootState> = {
}, },
getMcus: (state, getters) => { getMcus: (state, getters) => {
const mcus: any[] = [] interface Mcu {
name: string
mcu_constants: { [key: string]: string | number }
last_stats: { [key: string]: number }
version: string
chip: string | null
freq: number | null
freqFormat: string
awake: string
load: string
loadPercent: number
loadProgressColor: string
tempSensor: {
temperature: number
measured_min_temp: number | null
measured_max_temp: number | null
}
}
const mcus: Mcu[] = []
Object.keys(state).forEach((key) => { Object.keys(state).forEach((key) => {
if (key === "mcu" || key.startsWith("mcu ")) { if (key === "mcu" || key.startsWith("mcu ")) {
@ -441,6 +461,7 @@ export const getters: GetterTree<PrinterState, RootState> = {
}, },
getPrinterConfigObjects: (state) => (objectNames: string[]) => { getPrinterConfigObjects: (state) => (objectNames: string[]) => {
// eslint-disable-next-line
const output: any = {} const output: any = {}
if (state.configfile?.settings) { if (state.configfile?.settings) {
@ -484,7 +505,8 @@ export const getters: GetterTree<PrinterState, RootState> = {
getMcuTempSensors: (state, getters) => { getMcuTempSensors: (state, getters) => {
const checkObjects = ['temperature_sensor', 'temperature_fan'] const checkObjects = ['temperature_sensor', 'temperature_fan']
const output: any = [] // eslint-disable-next-line
const output: { key: string, settings: any, object: any }[] = []
const objects = getters.getPrinterConfigObjects(checkObjects) const objects = getters.getPrinterConfigObjects(checkObjects)
Object.keys(objects).forEach((key) => { Object.keys(objects).forEach((key) => {
@ -502,10 +524,17 @@ export const getters: GetterTree<PrinterState, RootState> = {
}, },
getMcuTempSensor: (state, getters) => (mcuName: string) => { getMcuTempSensor: (state, getters) => (mcuName: string) => {
let output: any = null interface McuTempSensor {
temperature: number
measured_min_temp: number | null
measured_max_temp: number | null
}
let output: McuTempSensor | null = null
const sensors = getters.getMcuTempSensors const sensors = getters.getMcuTempSensors
sensors.forEach((sensor: any) => { // eslint-disable-next-line
sensors.forEach((sensor: { key: string, settings: any, object: any }) => {
if (sensor.settings?.sensor_mcu === mcuName && sensor.object?.temperature) { if (sensor.settings?.sensor_mcu === mcuName && sensor.object?.temperature) {
output = { output = {
temperature: sensor.object.temperature.toFixed(0), temperature: sensor.object.temperature.toFixed(0),

View File

@ -14,6 +14,7 @@ export const getDefaultState = (): PrinterState => {
// initial state // initial state
const state = getDefaultState() const state = getDefaultState()
// eslint-disable-next-line
export const printer: Module<PrinterState, any> = { export const printer: Module<PrinterState, any> = {
namespaced: true, namespaced: true,
state, state,

View File

@ -19,6 +19,7 @@ export const mutations: MutationTree<PrinterState> = {
}, },
setData(state, payload) { setData(state, payload) {
// eslint-disable-next-line
const setDataDeep = (currentState: any, payload: any) => { const setDataDeep = (currentState: any, payload: any) => {
if (payload !== null && typeof payload === 'object') { if (payload !== null && typeof payload === 'object') {
Object.keys(payload).forEach((key: string) => { Object.keys(payload).forEach((key: string) => {

View File

@ -30,6 +30,7 @@ export const actions: ActionTree<PrinterTempHistoryState, RootState> = {
if (payload !== undefined) { if (payload !== undefined) {
const objectKeys = Object.keys(payload) const objectKeys = Object.keys(payload)
// eslint-disable-next-line
const importData: any = {} const importData: any = {}
objectKeys.forEach((key: string) => { objectKeys.forEach((key: string) => {

View File

@ -1,6 +1,10 @@
import {datasetTypes, datasetTypesInPercents} from '@/store/variables' import {datasetTypes, datasetTypesInPercents} from '@/store/variables'
import {GetterTree} from "vuex"; import {GetterTree} from "vuex";
import {PrinterTempHistoryState, PrinterTempHistoryStateSourceEntry} from "@/store/printer/tempHistory/types"; import {
PrinterTempHistoryState,
PrinterTempHistoryStateSerie,
PrinterTempHistoryStateSourceEntry
} from "@/store/printer/tempHistory/types";
import {RootState} from "@/store/types"; import {RootState} from "@/store/types";
export const getters: GetterTree<PrinterTempHistoryState, RootState> = { export const getters: GetterTree<PrinterTempHistoryState, RootState> = {
@ -18,11 +22,11 @@ export const getters: GetterTree<PrinterTempHistoryState, RootState> = {
getSerieNames: (state) => (name: string) => { getSerieNames: (state) => (name: string) => {
const output: string[] = [] const output: string[] = []
if (state.series.findIndex((serie: any) => serie.name === name) !== -1) { if (state.series.findIndex((serie: PrinterTempHistoryStateSerie) => serie.name === name) !== -1) {
output.push("temperature") output.push("temperature")
} }
state.series.filter((serie: any) => serie.name.startsWith(name+"-")).forEach((serie) => { state.series.filter((serie: PrinterTempHistoryStateSerie) => serie.name.startsWith(name+"-")).forEach((serie) => {
output.push(serie.name.substr(name.length + 1)) output.push(serie.name.substr(name.length + 1))
}) })

View File

@ -14,6 +14,7 @@ export const getDefaultState = (): PrinterTempHistoryState => {
// initial state // initial state
const state = getDefaultState() const state = getDefaultState()
// eslint-disable-next-line
export const tempHistory: Module<PrinterTempHistoryState, any> = { export const tempHistory: Module<PrinterTempHistoryState, any> = {
namespaced: true, namespaced: true,
state, state,

View File

@ -1,5 +1,4 @@
import { getDefaultState } from './index' import { getDefaultState } from './index'
import { datasetTypesInPercents } from '@/store/variables'
import Vue from "vue"; import Vue from "vue";
import {MutationTree} from "vuex"; import {MutationTree} from "vuex";
import {PrinterTempHistoryState, PrinterTempHistoryStateSerie} from "@/store/printer/tempHistory/types"; import {PrinterTempHistoryState, PrinterTempHistoryStateSerie} from "@/store/printer/tempHistory/types";

View File

@ -40,5 +40,6 @@ export interface PrinterTempHistoryStateSerie {
} }
export interface PrinterTempHistoryStateSourceEntry { export interface PrinterTempHistoryStateSourceEntry {
// eslint-disable-next-line
[key: string]: any [key: string]: any
} }

View File

@ -18,6 +18,7 @@ export interface ConsoleCommandHelp {
} }
export interface PrinterState { export interface PrinterState {
// eslint-disable-next-line
[key: string]: any [key: string]: any
helplist?: CommandHelp[] helplist?: CommandHelp[]
tempHistory?: PrinterTempHistoryState tempHistory?: PrinterTempHistoryState
@ -91,7 +92,9 @@ export interface PrinterStateMiscellaneous {
pwm: boolean pwm: boolean
rpm: number rpm: number
scale: number scale: number
// eslint-disable-next-line
object: any, object: any,
// eslint-disable-next-line
config: any config: any
off_below?: number off_below?: number
max_power?: number max_power?: number
@ -105,7 +108,20 @@ export interface PrinterStateFilamentSensors {
export interface PrinterStateBedMesh { export interface PrinterStateBedMesh {
name: string name: string
data: any data: {
algo: string
max_x: number
max_y: number
mesh_x_pps: number
mesh_y_pps: number
min_x: number
min_y: number
points: { [key: number]: number[] }
tension: number
version: number
x_count: number
y_count: number
}
points: number[] points: number[]
min: number min: number
max: number max: number
@ -117,10 +133,12 @@ export interface PrinterStateMacro {
name: string name: string
description: string | null description: string | null
prop: { prop: {
// eslint-disable-next-line
[key: string]: any [key: string]: any
} }
} }
export interface PrinterStateKlipperConfig { export interface PrinterStateKlipperConfig {
// eslint-disable-next-line
[key: string]: any [key: string]: any
} }

View File

@ -79,7 +79,7 @@ export const actions: ActionTree<ServerState, RootState> = {
let events: ServerStateEvent[] = payload.gcode_store let events: ServerStateEvent[] = payload.gcode_store
const filters = rootGetters["gui/getConsoleFilterRules"] const filters = rootGetters["gui/getConsoleFilterRules"]
filters.forEach((filter: any) => { filters.forEach((filter: string) => {
try { try {
const regex = new RegExp(filter) const regex = new RegExp(filter)
events = events.filter(event => event.type !== 'response' || !regex.test(event.message)) events = events.filter(event => event.type !== 'response' || !regex.test(event.message))
@ -110,7 +110,7 @@ export const actions: ActionTree<ServerState, RootState> = {
const filters = rootGetters["gui/getConsoleFilterRules"] const filters = rootGetters["gui/getConsoleFilterRules"]
let boolImport = true let boolImport = true
if (type === "response") { if (type === "response") {
filters.every((filter: any) => { filters.every((filter: string) => {
try { try {
const regex = new RegExp(filter) const regex = new RegExp(filter)
if (regex.test(formatMessage)) boolImport = false if (regex.test(formatMessage)) boolImport = false

View File

@ -2,6 +2,7 @@ import {GetterTree} from "vuex";
import {ServerState} from "@/store/server/types"; import {ServerState} from "@/store/server/types";
import {formatConsoleMessage, formatFilesize, formatTime} from "@/plugins/helpers"; import {formatConsoleMessage, formatFilesize, formatTime} from "@/plugins/helpers";
// eslint-disable-next-line
export const getters: GetterTree<ServerState, any> = { export const getters: GetterTree<ServerState, any> = {
getConsoleEvents: (state) => (reverse = true, limit = 500) => { getConsoleEvents: (state) => (reverse = true, limit = 500) => {
@ -39,7 +40,26 @@ export const getters: GetterTree<ServerState, any> = {
}, },
getHostStats: (state, getters, rootState, rootGetters) => { getHostStats: (state, getters, rootState, rootGetters) => {
let output: any = null interface HostStats {
cpuName: string | null
cpuDesc: string | null
version: string | null
os: string | null
load: number
loadPercent: number
loadProgressColor: string
memoryFormat: string | null
memUsed: string
memAvail: string
memTotal: string
tempSensor: {
temperature: number
measured_min_temp: number | null,
measured_max_temp: number | null
}
}
let output: HostStats | null = null
//state.printer.system_stats //state.printer.system_stats
if ('system_info' in state) { if ('system_info' in state) {
@ -48,7 +68,7 @@ export const getters: GetterTree<ServerState, any> = {
version = rootState.printer?.software_version.split('-').slice(0, 4).join('-') version = rootState.printer?.software_version.split('-').slice(0, 4).join('-')
} }
const cpuCors = state.system_info.cpu_info?.cpu_count ?? 1 const cpuCors = state.system_info?.cpu_info?.cpu_count ?? 1
const load = Math.round((rootState.printer.system_stats?.sysload ?? 0) * 100) / 100 const load = Math.round((rootState.printer.system_stats?.sysload ?? 0) * 100) / 100
const loadPercent = Math.round(load / cpuCors * 100) const loadPercent = Math.round(load / cpuCors * 100)
@ -58,7 +78,7 @@ export const getters: GetterTree<ServerState, any> = {
let memoryFormat: null | string = null let memoryFormat: null | string = null
const memAvail = (rootState.printer.system_stats?.memavail ?? 0) * 1024 const memAvail = (rootState.printer.system_stats?.memavail ?? 0) * 1024
const memTotal = (state.system_info.cpu_info?.total_memory ?? 0) * 1024 const memTotal = (state.system_info?.cpu_info?.total_memory ?? 0) * 1024
if (memAvail > 0 && memTotal > 0) { if (memAvail > 0 && memTotal > 0) {
memoryFormat = formatFilesize(memTotal - memAvail) + " / " + formatFilesize(memTotal) memoryFormat = formatFilesize(memTotal - memAvail) + " / " + formatFilesize(memTotal)
@ -76,10 +96,10 @@ export const getters: GetterTree<ServerState, any> = {
} }
output = { output = {
cpuName: state.system_info.cpu_info?.processor ?? null, cpuName: state.system_info?.cpu_info?.processor ?? null,
cpuDesc: state.system_info.cpu_info?.cpu_desc ?? null, cpuDesc: state.system_info?.cpu_info?.cpu_desc ?? null,
version, version,
os: state.system_info.distribution?.name ?? null, os: state.system_info?.distribution?.name ?? null,
load, load,
loadPercent: loadPercent < 100 ? loadPercent : 100, loadPercent: loadPercent < 100 ? loadPercent : 100,
loadProgressColor, loadProgressColor,

View File

@ -1,6 +1,7 @@
import {GetterTree} from "vuex"; import {GetterTree} from "vuex";
import {ServerHistoryState, ServerHistoryStateJob} from "@/store/server/history/types"; import {ServerHistoryState, ServerHistoryStateJob} from "@/store/server/history/types";
// eslint-disable-next-line
export const getters: GetterTree<ServerHistoryState, any> = { export const getters: GetterTree<ServerHistoryState, any> = {
getTotalPrintTime(state) { getTotalPrintTime(state) {
@ -59,12 +60,23 @@ export const getters: GetterTree<ServerHistoryState, any> = {
}, },
getAllPrintStatusArray(state, getters, rootState) { getAllPrintStatusArray(state, getters, rootState) {
interface allPrintStatusEntryItemStyle {
opacity: number
color: string
borderColor: string
borderWidth: number
borderRadius: number
}
interface allPrintStatusEntryLabel {
color: string
}
interface allPrintStatusEntry { interface allPrintStatusEntry {
name: string name: string
value: number value: number
showInTable: boolean showInTable: boolean
itemStyle: any itemStyle: allPrintStatusEntryItemStyle
label: any label: allPrintStatusEntryLabel
} }
const output: allPrintStatusEntry[] = [] const output: allPrintStatusEntry[] = []
@ -111,6 +123,7 @@ export const getters: GetterTree<ServerHistoryState, any> = {
}, },
getFilamentUsageArray(state) { getFilamentUsageArray(state) {
// eslint-disable-next-line
const output: any = [] const output: any = []
const startDate = new Date() const startDate = new Date()
startDate.setTime(startDate.getTime() - 60*60*24*14*1000) startDate.setTime(startDate.getTime() - 60*60*24*14*1000)
@ -130,11 +143,13 @@ export const getters: GetterTree<ServerHistoryState, any> = {
if (jobsFiltered.length) { if (jobsFiltered.length) {
jobsFiltered.forEach(current => { jobsFiltered.forEach(current => {
const currentStartDate = new Date(current.start_time * 1000).setHours(0,0,0,0) const currentStartDate = new Date(current.start_time * 1000).setHours(0,0,0,0)
// eslint-disable-next-line
const index = output.findIndex((element: any) => element[0] === currentStartDate) const index = output.findIndex((element: any) => element[0] === currentStartDate)
if (index !== -1) output[index][1] += Math.round(current.filament_used) / 1000 if (index !== -1) output[index][1] += Math.round(current.filament_used) / 1000
}) })
} }
// eslint-disable-next-line
return output.sort((a: any, b: any) => { return output.sort((a: any, b: any) => {
return b[0] - a[0] return b[0] - a[0]
}) })

View File

@ -21,6 +21,7 @@ export const getDefaultState = (): ServerHistoryState => {
// initial state // initial state
const state = getDefaultState() const state = getDefaultState()
// eslint-disable-next-line
export const history: Module<ServerHistoryState, any> = { export const history: Module<ServerHistoryState, any> = {
namespaced: true, namespaced: true,
state, state,

View File

@ -16,6 +16,7 @@ export interface ServerHistoryStateJob {
end_time: number end_time: number
filament_used: number filament_used: number
filename:string filename:string
// eslint-disable-next-line
metadata: any metadata: any
print_duration: number print_duration: number
status: string status: string

View File

@ -21,9 +21,9 @@ export const getDefaultState = (): ServerState => {
registered_directories: [], registered_directories: [],
events: [], events: [],
config: { }, config: { },
system_info: { }, system_info: null,
cpu_temp: 0, cpu_temp: 0,
moonraker_stats: { }, moonraker_stats: null,
throttled_state: { throttled_state: {
bits: 0, bits: 0,
flags: [], flags: [],
@ -34,6 +34,7 @@ export const getDefaultState = (): ServerState => {
// initial state // initial state
const state = getDefaultState() const state = getDefaultState()
// eslint-disable-next-line
export const server: Module<ServerState, any> = { export const server: Module<ServerState, any> = {
namespaced: true, namespaced: true,
state, state,

View File

@ -43,14 +43,14 @@ export const mutations: MutationTree<ServerState> = {
Vue.set(state, 'events', []) Vue.set(state, 'events', [])
}, },
setGcodeStore(state, payload: any) { setGcodeStore(state, payload: { time: number, type: string, message: string }[]) {
//const t0 = performance.now() //const t0 = performance.now()
if (payload.length >= maxEventHistory) { if (payload.length >= maxEventHistory) {
payload = payload.slice(payload.length - maxEventHistory); payload = payload.slice(payload.length - maxEventHistory);
} }
payload.forEach((message: any) => { payload.forEach((message) => {
const date = new Date(message.time * 1000) const date = new Date(message.time * 1000)
let formatMessage = formatConsoleMessage(message.message) let formatMessage = formatConsoleMessage(message.message)

View File

@ -1,6 +1,7 @@
import { GetterTree } from "vuex" import { GetterTree } from "vuex"
import { ServerPowerState } from "@/store/server/power/types" import { ServerPowerState } from "@/store/server/power/types"
// eslint-disable-next-line
export const getters: GetterTree<ServerPowerState, any> = { export const getters: GetterTree<ServerPowerState, any> = {
getDevices: state => { getDevices: state => {
return state.devices; return state.devices;

View File

@ -13,6 +13,7 @@ export const getDefaultState = (): ServerPowerState => {
// initial state // initial state
const state = getDefaultState() const state = getDefaultState()
// eslint-disable-next-line
export const power: Module<ServerPowerState, any> = { export const power: Module<ServerPowerState, any> = {
namespaced: true, namespaced: true,
state, state,

View File

@ -11,9 +11,22 @@ export interface ServerState {
warnings: string[], warnings: string[],
registered_directories: string[], registered_directories: string[],
events: ServerStateEvent[], events: ServerStateEvent[],
config: any, config: {
system_info: any, // eslint-disable-next-line
moonraker_stats: any [key: string]: any
},
system_info: {
available_services: { [key: number]: string }[]
cpu_info: ServerStateCpuInfo
distribution: ServerStateDistribution
sd_info: ServerStateSdInfo
} | null
moonraker_stats: {
cpu_usage: number,
mem_units: string
memory: number
time: number
} | null
cpu_temp: number, cpu_temp: number,
throttled_state: { throttled_state: {
bits: number bits: number
@ -31,4 +44,40 @@ export interface ServerStateEvent {
type: string type: string
message: string message: string
formatMessage: string | string[] formatMessage: string | string[]
}
export interface ServerStateCpuInfo {
bits: string
cpu_count: number
cpu_desc: string
hardware_desc: string
memory_units: string
model: string
processor: string
total_memory: number
}
export interface ServerStateDistribution {
codename: string
id: string
like: string
name: string
version: string
version_parts: {
build_number: string
major: string
minor: string
}
}
export interface ServerStateSdInfo {
capacity: string
manufacturer: string
manufacturer_date: string
manufacturer_id: string
oem_id: string
product_name: string
product_revision: string
serial_number: string
total_bytes: number
} }

View File

@ -1,9 +1,13 @@
import {GetterTree} from "vuex" import {GetterTree} from "vuex"
import {ServerUpdateMangerState} from "@/store/server/updateManager/types" import {
ServerUpdateMangerState
} from "@/store/server/updateManager/types"
import semver from "semver" import semver from "semver"
// eslint-disable-next-line
export const getters: GetterTree<ServerUpdateMangerState, any> = { export const getters: GetterTree<ServerUpdateMangerState, any> = {
getUpdateableSoftwares(state) { getUpdateableSoftwares(state) {
// eslint-disable-next-line
const output: any = {} const output: any = {}
const sortKeys = Object.keys(state.version_info).sort((a,b) => { const sortKeys = Object.keys(state.version_info).sort((a,b) => {
if (a === 'klipper') return -1 if (a === 'klipper') return -1
@ -26,13 +30,17 @@ export const getters: GetterTree<ServerUpdateMangerState, any> = {
}, },
isUpdateAvailable(state) { isUpdateAvailable(state) {
for (const key of Object.keys(state.version_info)) { const keys = Object.keys(state.version_info).filter((key: string) => key !== 'system')
for (const key of keys) {
const versionInfo = state.version_info[key]
if ( if (
'version' in state.version_info[key] && 'version' in versionInfo &&
'remote_version' in state.version_info[key] && 'remote_version' in versionInfo &&
semver.valid(state.version_info[key].version) && semver.valid(versionInfo.version) &&
semver.valid(state.version_info[key].remote_version) && semver.valid(versionInfo.remote_version) &&
semver.gt(state.version_info[key].remote_version, state.version_info[key].version) semver.gt(versionInfo.remote_version, versionInfo.version)
) return true ) return true
} }

View File

@ -18,6 +18,7 @@ export const getDefaultState = (): ServerUpdateMangerState => {
// initial state // initial state
const state = getDefaultState() const state = getDefaultState()
// eslint-disable-next-line
export const updateManager: Module<ServerUpdateMangerState, any> = { export const updateManager: Module<ServerUpdateMangerState, any> = {
namespaced: true, namespaced: true,
state, state,

View File

@ -1,5 +1,8 @@
export interface ServerUpdateMangerState { export interface ServerUpdateMangerState {
version_info: any version_info: {
// eslint-disable-next-line
[key: string]: any
}
updateResponse: { updateResponse: {
application: string, application: string,
complete: boolean, complete: boolean,
@ -10,4 +13,49 @@ export interface ServerUpdateMangerState {
export interface ServerUpdateMangerStateMessages { export interface ServerUpdateMangerStateMessages {
date: Date date: Date
message: string message: string
}
export interface ServerUpdateMangerStateVersionInfoGitRepoCommits {
sha: string
author: string
date: string
subject: string
message: string
tag: string | null
}
export interface ServerUpdateMangerStateVersionInfoGitRepo {
branch: string
channel: string
commits_behind: ServerUpdateMangerStateVersionInfoGitRepoCommits[]
configured_type: string
current_hash: string
debug_enabled: boolean
detached: boolean
detected_type: string
full_version_string: string
git_messages: string[]
is_dirty: boolean
is_valid: boolean
need_channel_update: boolean
owner: string
pristine: boolean
remote_alias: string
remote_hash: string
remote_version: string
version: string
}
export interface ServerUpdateMangerStateVersionInfoWeb {
channel: string
configured_type: string
name: string
owner: string
remote_version: string
version: string
}
export interface ServerUpdateMangerStateVersionInfoSystem {
package_count: number
package_list: string[]
} }

View File

@ -1,3 +1,5 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import Vue, { VNode } from "vue"; import Vue, { VNode } from "vue";
declare global { declare global {

View File

@ -1,3 +1,5 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
declare module 'vue-headful' { declare module 'vue-headful' {
export const vueHeadful: any export const vueHeadful: any
} }

View File

@ -1,3 +1,5 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
declare module 'vue-load-image' { declare module 'vue-load-image' {
export const VueLoadImage: any export const VueLoadImage: any
} }

View File

@ -1,3 +1,4 @@
/* eslint-disable @typescript-eslint/no-var-requires */
const path = require('path') const path = require('path')
const webpack = require('webpack') const webpack = require('webpack')
const generate = require('generate-file-webpack-plugin') const generate = require('generate-file-webpack-plugin')