Files
CreatBotMainsail/src/store/server/actions.ts
Stefan Dej 3dae42edb0 feature: collapsable and normalize panels (#372)
* feature: add panel component to normalize all panels
* feature: add expand function to panel component
* chore: remove not used computed value
* feature: add slot for override the icon in the panel
* chore: remove unused package (vue2-collapse)
* feature: change StatusPanel.vue to panel component
* feature: add prop to change toolbar color
* feature: change MinSettingsPanel.vue to panel component
* feature: change MoonrakerStatePanel.vue to panel component
* feature: change KlippyStatePanel.vue to panel component
* feature: change KlipperWarningsPanel.vue to panel component
* feature: change ControlPanel.vue to panel component
* feature: change PrintsettingsPanel.vue to panel component
* feature: change MiscellaneousPanel.vue to panel component
* feature: change ToolsPanel.vue to panel component
* feature: change MacrosPanel.vue to panel component
* feature: change MiniconsolePanel.vue to panel component
* feature: change FarmPrinterPanel.vue to panel component
* bugfix: add toolbar zindex to fix panel hover overlay
* bugfix: remove toolbar zindex and modify hover effect
* bugfix: farmprinter loading state (remove debug output)
* feature: add prop to disable margin botton of panel component
* feature: change HistoryListPanel.vue to panel component
* feature: move history statistics in HistoryStatisticsPanel.vue and use panel component
* feature: change ZoffsetPanel.vue to panel component
* feature: add slot after toolbar title in panel component
* feature: change Heightmap.vue to panel component
* feature: change Files.vue to panel component
* feature: change Viewer.vue to panel component
* feature: add buttons before toolbar in panel component
* feature: change ConfigFilesPanel.vue to panel component
* feature: change EndstopPanel.vue to panel component
* chore: fix typo in card class from ConfigFilesPanel.vue
* feature: change LimitsPanel.vue to panel component
* feature: change LogfilesPanel.vue to panel component
* feature: change SystemPanel.vue to panel component
* feature: change UpdatePanel.vue to panel component
2021-10-09 23:39:06 +02:00

137 lines
4.8 KiB
TypeScript

import Vue from 'vue'
import {ActionTree} from 'vuex'
import {ServerState, ServerStateEvent} from '@/store/server/types'
import {camelize, formatConsoleMessage} from '@/plugins/helpers'
import {RootState} from '@/store/types'
import {initableServerComponents} from '@/store/variables'
export const actions: ActionTree<ServerState, RootState> = {
reset({ commit, dispatch }) {
commit('reset')
dispatch('power/reset')
dispatch('updateManager/reset')
},
init() {
window.console.debug('init Server')
Vue.$socket.emit('server.info', {}, { action: 'server/initServerInfo'})
Vue.$socket.emit('server.config', {}, { action: 'server/initServerConfig'})
Vue.$socket.emit('machine.system_info', {}, { action: 'server/initSystemInfo'})
Vue.$socket.emit('machine.proc_stats', {}, { action: 'server/initProcStats' })
Vue.$socket.emit('server.database.list', { root: 'config' }, { action: 'server/checkDatabases'})
},
checkDatabases({ dispatch }, payload) {
if (payload.namespaces?.includes('mainsail'))
Vue.$socket.emit('server.database.get_item', { namespace: 'mainsail' }, { action: 'gui/init'})
else {
Vue.$socket.emit('server.database.post_item', { namespace: 'mainsail', key: 'init', value: true })
dispatch('printer/init', null, { root: true })
}
},
initServerInfo: function ({ dispatch, commit }, payload) {
// delete old plugin entries
if ('plugins' in payload) delete payload.plugins
if ('failed_plugins' in payload) delete payload.failed_plugins
if (payload.components?.length) {
payload.components.forEach((component: string) => {
component = camelize(component)
if (initableServerComponents.includes(component)) {
window.console.debug('init server component: '+component)
dispatch('server/' + component + '/init', {}, {root: true})
}
})
}
if (payload.registered_directories?.length) {
dispatch('files/initRootDirs', payload.registered_directories, {root: true})
}
commit('setData', payload)
},
initServerConfig({ commit }, payload) {
commit('setConfig', payload)
},
initSystemInfo({ commit }, payload) {
commit('setSystemInfo', payload.system_info)
},
initProcStats({ commit }, payload) {
if (payload.throttled_state !== null)
commit('setThrottledState', payload.throttled_state)
},
setKlippyReady({ dispatch }) {
dispatch('printer/reset', null, { root: true })
dispatch('printer/init', null, { root: true })
},
getData({ commit }, payload){
commit('setData', payload)
},
getGcodeStore({ commit, rootGetters }, payload) {
commit('clearGcodeStore')
let events: ServerStateEvent[] = payload.gcode_store
const filters = rootGetters['gui/getConsoleFilterRules']
filters.forEach((filter: string) => {
try {
const regex = new RegExp(filter)
events = events.filter(event => event.type !== 'response' || !regex.test(event.message))
} catch { window.console.error('Custom console filter \''+filter+'\' doesn\'t work')}
})
commit('setGcodeStore', events)
},
addRootDirectory({ commit, state }, data) {
if (!state.registered_directories.includes(data.item.root)) {
commit('addRootDirectory', { name: data.item.root })
}
},
addEvent({ commit, rootGetters }, payload) {
let message = payload
let type = 'response'
if (typeof payload === 'object' && 'type' in payload) type = payload.type
if ('message' in payload) message = payload.message
else if ('result' in payload) message = payload.result
else if ('error' in payload) message = message.error.message
let formatMessage = formatConsoleMessage(message)
const filters = rootGetters['gui/getConsoleFilterRules']
let boolImport = true
if (type === 'response') {
filters.every((filter: string) => {
try {
const regex = new RegExp(filter)
if (regex.test(formatMessage)) boolImport = false
} catch {
window.console.error('Custom console filter \''+filter+'\' doesn\'t work')
}
return boolImport
})
}
if (boolImport) {
if (payload.type === 'command') formatMessage = '<a class="command text--blue">'+formatMessage+'</a>'
commit('addEvent', {
date: new Date(),
message: message,
formatMessage: formatMessage,
type: type
})
}
}
}