update updateManager for multiclient support (https://github.com/Arksine/moonraker/pull/63)
Signed-off-by: Stefan Dej <meteyou@gmail.com>
This commit is contained in:
@@ -128,8 +128,11 @@ export default {
|
||||
return items;
|
||||
},
|
||||
close() {
|
||||
if (this.application === "client" && this.complete) window.location.reload(true)
|
||||
else this.$store.commit('server/updateManager/resetUpdateResponse')
|
||||
if (this.application !== null && this.complete && ["client", "mainsail"].includes(this.application.toLowerCase())) window.location.reload(true)
|
||||
else {
|
||||
this.$store.commit('server/updateManager/resetUpdateResponse')
|
||||
this.$socket.sendObj('machine.update.status', { refresh: false }, 'server/updateManager/getStatus')
|
||||
}
|
||||
}
|
||||
},
|
||||
updated(){
|
||||
|
@@ -40,14 +40,5 @@
|
||||
port: state => state.socket.port,
|
||||
}),
|
||||
},
|
||||
created() {
|
||||
this.refreshConfig();
|
||||
},
|
||||
methods: {
|
||||
|
||||
},
|
||||
watch: {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
@@ -14,99 +14,50 @@
|
||||
</v-toolbar>
|
||||
<v-card-text class="px-0 py-0">
|
||||
<v-container py-0 px-0>
|
||||
<v-row v-if="'version' in klipper" class="py-2">
|
||||
<v-col class="pl-6 text-no-wrap">
|
||||
<v-tooltip top>
|
||||
<template v-slot:activator="{ on, attrs }">
|
||||
<strong v-bind="attrs" v-on="on">Klipper</strong>
|
||||
</template>
|
||||
<span>{{ klipperBranch }}</span>
|
||||
</v-tooltip><br />
|
||||
<span v-if="'remote_version' in klipper && klipper.version !== klipper.remote_version">{{ klipper.version+' > '+klipper.remote_version }}</span>
|
||||
<span v-if="!('remote_version' in klipper && klipper.version !== klipper.remote_version)">{{ klipper.version }}</span>
|
||||
</v-col>
|
||||
<v-col class="pr-6 text-right">
|
||||
<v-chip
|
||||
small
|
||||
label
|
||||
outlined
|
||||
:color="getColor(klipper)"
|
||||
@click="updateKlipper"
|
||||
:disabled="is_disabled(klipper)"
|
||||
class="minwidth-0 mt-3 px-2 text-uppercase"
|
||||
><v-icon small class="mr-1">mdi-{{ getIcon(klipper) }}</v-icon>{{ getText(klipper) }}</v-chip>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<div v-if="'version' in moonraker">
|
||||
|
||||
<div v-for="(value, key) of updateableSoftwares" v-bind:key="key">
|
||||
<v-divider class="my-0" ></v-divider>
|
||||
<v-row class="py-2">
|
||||
<v-col class="pl-6 text-no-wrap">
|
||||
<v-tooltip top>
|
||||
<template v-slot:activator="{ on, attrs }">
|
||||
<strong v-bind="attrs" v-on="on">Moonraker</strong>
|
||||
</template>
|
||||
<span>{{ moonrakerBranch }}</span>
|
||||
</v-tooltip><br />
|
||||
<span v-if="'remote_version' in moonraker && moonraker.version !== moonraker.remote_version">{{ moonraker.version+' > '+moonraker.remote_version }}</span>
|
||||
<span v-if="!('remote_version' in moonraker && moonraker.version !== moonraker.remote_version)">{{ moonraker.version }}</span>
|
||||
{{ 'name' in value ? value.name : key }}<br />
|
||||
{{ getVersionOutput(value) }}
|
||||
</v-col>
|
||||
<v-col class="pr-6 text-right">
|
||||
<v-chip
|
||||
small
|
||||
label
|
||||
outlined
|
||||
:color="getColor(moonraker)"
|
||||
@click="updateMoonraker"
|
||||
:disabled="is_disabled(moonraker)"
|
||||
:color="getBtnColor(value)"
|
||||
@click="updateModule(key)"
|
||||
:disabled="getBtnDisabled(value)"
|
||||
class="minwidth-0 mt-3 px-2 text-uppercase"
|
||||
><v-icon small class="mr-1">mdi-{{ getIcon(moonraker) }}</v-icon>{{ getText(moonraker) }}</v-chip>
|
||||
><v-icon small class="mr-1">mdi-{{ getBtnIcon(value) }}</v-icon>{{ getBtnText(value) }}</v-chip>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
<div v-if="mainsail !== false && 'version' in mainsail && !remoteMode">
|
||||
<v-divider class="mt-0 mb-0" ></v-divider>
|
||||
<v-row class="py-2">
|
||||
<v-col class="pl-6 text-no-wrap">
|
||||
<strong>Mainsail</strong><br />
|
||||
{{ 'v'+package_version }}
|
||||
<span v-if="!is_disabled(mainsail)"> > {{ mainsail.remote_version.replace('Version ', 'v') }}</span>
|
||||
</v-col>
|
||||
<v-col class="pr-6 text-right">
|
||||
<v-chip
|
||||
small
|
||||
label
|
||||
outlined
|
||||
:color="getColor(mainsail)"
|
||||
@click="updateMainsail"
|
||||
:disabled="is_disabled(mainsail)"
|
||||
class="minwidth-0 mt-3 px-2 text-uppercase"
|
||||
><v-icon small class="mr-1">mdi-{{ getIcon(mainsail) }}</v-icon>{{ getText(mainsail) }}</v-chip>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
<div v-if="system !== false && 'package_count' in system">
|
||||
<div v-if="'system' in version_info">
|
||||
<v-divider class="my-0 border-top-2" ></v-divider>
|
||||
<v-row class="pt-2">
|
||||
<v-col class="pl-6 text-no-wrap">
|
||||
<strong>System</strong><br />
|
||||
<v-tooltip top v-if="system.package_count > 0" :max-width="300">
|
||||
<v-tooltip top v-if="version_info.system.package_count > 0" :max-width="300">
|
||||
<template v-slot:activator="{ on, attrs }">
|
||||
<span v-bind="attrs" v-on="on">{{ system.package_count }} packages can be upgraded</span>
|
||||
<span v-bind="attrs" v-on="on">{{ version_info.system.package_count }} packages can be upgraded</span>
|
||||
</template>
|
||||
<span>{{ system.package_list.join(', ') }}</span>
|
||||
<span>{{ version_info.system.package_list.join(', ') }}</span>
|
||||
</v-tooltip>
|
||||
<span v-if="system.package_count === 0">OS-Packages</span>
|
||||
<span v-if="version_info.system.package_count === 0">OS-Packages</span>
|
||||
</v-col>
|
||||
<v-col class="pr-6 text-right">
|
||||
<v-chip
|
||||
small
|
||||
label
|
||||
outlined
|
||||
:color="system.package_count ? 'primary' : 'green'"
|
||||
:disabled="!(system.package_count) || printer_state === 'printing'"
|
||||
:color="version_info.system.package_count ? 'primary' : 'green'"
|
||||
:disabled="!(version_info.system.package_count) || printer_state === 'printing'"
|
||||
@click="updateSystem"
|
||||
class="minwidth-0 mt-3 px-2 text-uppercase"
|
||||
><v-icon small class="mr-1">mdi-{{ system.package_count ? 'progress-upload' : 'check' }}</v-icon>{{ system.package_count ? 'upgrade' : 'up-to-date' }}</v-chip>
|
||||
><v-icon small class="mr-1">mdi-{{ version_info.system.package_count ? 'progress-upload' : 'check' }}</v-icon>{{ version_info.system.package_count ? 'upgrade' : 'up-to-date' }}</v-chip>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
@@ -130,29 +81,14 @@
|
||||
computed: {
|
||||
...mapState({
|
||||
package_version: state => state.packageVersion,
|
||||
klipper: state => state.server.updateManager.klipper,
|
||||
moonraker: state => state.server.updateManager.moonraker,
|
||||
system: state => state.server.updateManager.system,
|
||||
loadings: state => state.socket.loadings,
|
||||
remoteMode: state => state.socket.remoteMode,
|
||||
printer_state: state => state.printer.print_stats.state,
|
||||
version_info: state => state.server.updateManager.version_info
|
||||
}),
|
||||
mainsail:{
|
||||
updateableSoftwares: {
|
||||
get() {
|
||||
if ('name' in this.$store.state.server.updateManager.client)
|
||||
return this.$store.state.server.updateManager.client
|
||||
|
||||
return false
|
||||
}
|
||||
},
|
||||
klipperBranch: {
|
||||
get() {
|
||||
return this.$store.getters["server/updateManager/getKlipperBranch"]
|
||||
}
|
||||
},
|
||||
moonrakerBranch: {
|
||||
get() {
|
||||
return this.$store.getters["server/updateManager/getMoonrakerBranch"]
|
||||
return this.$store.getters["server/updateManager/getUpdateableSoftwares"]
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -161,80 +97,65 @@
|
||||
this.$store.commit('socket/addLoading', { name: 'loadingBtnSyncUpdateManager' });
|
||||
this.$socket.sendObj('machine.update.status', { refresh: true }, 'server/updateManager/getStatus')
|
||||
},
|
||||
getColor(object) {
|
||||
getBtnColor(object) {
|
||||
if (typeof object === 'object' && object !== false) {
|
||||
if ('detached' in object && object.detached) return 'orange'
|
||||
if ('is_dirty' in object && object.is_dirty) return 'orange'
|
||||
if ('is_valid' in object && !object.is_valid) return 'red'
|
||||
|
||||
if ('current_hash' in object && 'remote_hash' in object && object.current_hash !== object.remote_hash) return 'primary'
|
||||
|
||||
if ('name' in object && object.name === "mainsail") {
|
||||
if ('v'+this.package_version !== object.remote_version.replace('Version ', 'v')) return 'primary'
|
||||
}
|
||||
if ('version' in object && 'remote_version' in object && object.version !== object.remote_version) return 'primary'
|
||||
|
||||
return 'green'
|
||||
}
|
||||
|
||||
return 'red'
|
||||
},
|
||||
getText(object) {
|
||||
getBtnText(object) {
|
||||
if (typeof object === 'object' && object !== false) {
|
||||
if ('detached' in object && object.detached) return 'detached'
|
||||
if ('is_valid' in object && !object.is_valid) return 'invalid'
|
||||
if ('is_dirty' in object && object.is_dirty) return 'dirty'
|
||||
|
||||
if ('current_hash' in object && 'remote_hash' in object && object.current_hash !== object.remote_hash) return 'update'
|
||||
|
||||
if ('name' in object && object.name === "mainsail") {
|
||||
if ('v'+this.package_version !== object.remote_version.replace('Version ', 'v')) return 'update'
|
||||
}
|
||||
if ('version' in object && 'remote_version' in object && object.version !== object.remote_version) return 'update'
|
||||
|
||||
return 'up-to-date'
|
||||
}
|
||||
|
||||
return 'ERROR'
|
||||
},
|
||||
getIcon(object) {
|
||||
getBtnIcon(object) {
|
||||
if (typeof object === 'object' && object !== false) {
|
||||
if ('detached' in object && object.detached) return 'alert-circle'
|
||||
if ('is_valid' in object && !object.is_valid) return 'alert-circle'
|
||||
if ('is_dirty' in object && object.is_dirty) return 'alert-circle'
|
||||
|
||||
if ('current_hash' in object && 'remote_hash' in object && object.current_hash !== object.remote_hash) return 'progress-upload'
|
||||
|
||||
if ('name' in object && object.name === "mainsail") {
|
||||
if ('v'+this.package_version !== object.remote_version.replace('Version ', 'v')) return 'progress-upload'
|
||||
}
|
||||
if ('version' in object && 'remote_version' in object && object.version !== object.remote_version) return 'progress-upload'
|
||||
|
||||
return 'check'
|
||||
}
|
||||
|
||||
return 'ERROR'
|
||||
},
|
||||
is_disabled(object) {
|
||||
getBtnDisabled(object) {
|
||||
if (['printing', 'paused'].includes(this.printer_state)) return true
|
||||
if ('detached' in object && object.detached) return true
|
||||
|
||||
if (typeof object === 'object' && object !== false) {
|
||||
if ('is_valid' in object && !object.is_valid) return true
|
||||
if ('current_hash' in object && 'remote_hash' in object && object.current_hash !== object.remote_hash) return false
|
||||
|
||||
if ('name' in object && object.name === "mainsail") {
|
||||
if ('v'+this.package_version !== object.remote_version.replace('Version ', 'v')) return false
|
||||
}
|
||||
if ('version' in object && 'remote_version' in object && object.version !== object.remote_version) return false
|
||||
}
|
||||
|
||||
return true
|
||||
},
|
||||
updateKlipper() {
|
||||
this.$socket.sendObj('machine.update.klipper', { })
|
||||
getVersionOutput(object) {
|
||||
const local_version = 'version' in object ? object.version : '?'
|
||||
const remote_version = 'remote_version' in object ? object.remote_version : '?'
|
||||
|
||||
return local_version !== remote_version ? local_version+" > "+remote_version : local_version
|
||||
},
|
||||
updateMoonraker() {
|
||||
this.$socket.sendObj('machine.update.moonraker', { })
|
||||
},
|
||||
updateMainsail() {
|
||||
this.$socket.sendObj('machine.update.client', { })
|
||||
updateModule(key) {
|
||||
if (["klipper", "moonraker"].includes(key)) this.$socket.sendObj('machine.update.'+key, { })
|
||||
else this.$socket.sendObj('machine.update.client', { name: key })
|
||||
},
|
||||
updateSystem() {
|
||||
this.$socket.sendObj('machine.update.system', { })
|
||||
|
Reference in New Issue
Block a user