|
|
@ -2,6 +2,8 @@ |
|
|
|
<div id="app-dashboard" :style="backgroundStyle"> |
|
|
|
<h2>{{ greeting.text }}</h2> |
|
|
|
<ul class="statuses"> |
|
|
|
<button @click="enableStatus('weather')">en</button> |
|
|
|
<button @click="disableStatus('weather')">dis</button> |
|
|
|
<div v-for="status in sortedRegisteredStatus" |
|
|
|
:id="'status-' + status" |
|
|
|
:key="status"> |
|
|
@ -108,6 +110,8 @@ export default { |
|
|
|
registeredStatus: [], |
|
|
|
callbacks: {}, |
|
|
|
callbacksStatus: {}, |
|
|
|
allCallbacksStatus: {}, |
|
|
|
enabledStatuses: loadState('dashboard', 'statuses'), |
|
|
|
panels, |
|
|
|
firstRun, |
|
|
|
displayName: getCurrentUser()?.displayName, |
|
|
@ -224,10 +228,15 @@ export default { |
|
|
|
Vue.set(this.callbacks, app, callback) |
|
|
|
}, |
|
|
|
registerStatus(app, callback) { |
|
|
|
this.registeredStatus.push(app) |
|
|
|
this.$nextTick(() => { |
|
|
|
Vue.set(this.callbacksStatus, app, callback) |
|
|
|
}) |
|
|
|
// always save callbacks in case user enables the status later |
|
|
|
Vue.set(this.allCallbacksStatus, app, callback) |
|
|
|
// register only if status is enabled or missing from config |
|
|
|
if (!(app in this.enabledStatuses) || this.enabledStatuses[app]) { |
|
|
|
this.registeredStatus.push(app) |
|
|
|
this.$nextTick(() => { |
|
|
|
Vue.set(this.callbacksStatus, app, callback) |
|
|
|
}) |
|
|
|
} |
|
|
|
}, |
|
|
|
rerenderPanels() { |
|
|
|
for (const app in this.callbacks) { |
|
|
@ -253,6 +262,11 @@ export default { |
|
|
|
layout: this.layout.join(','), |
|
|
|
}) |
|
|
|
}, |
|
|
|
saveStatuses() { |
|
|
|
axios.post(generateUrl('/apps/dashboard/statuses'), { |
|
|
|
statuses: JSON.stringify(this.enabledStatuses), |
|
|
|
}) |
|
|
|
}, |
|
|
|
showModal() { |
|
|
|
this.modal = true |
|
|
|
this.firstRun = false |
|
|
@ -296,6 +310,23 @@ export default { |
|
|
|
document.body.classList.remove('dashboard--dark') |
|
|
|
} |
|
|
|
}, |
|
|
|
enableStatus(app) { |
|
|
|
this.enabledStatuses[app] = true |
|
|
|
this.registerStatus(app, this.allCallbacksStatus[app]) |
|
|
|
this.saveStatuses() |
|
|
|
}, |
|
|
|
disableStatus(app) { |
|
|
|
this.enabledStatuses[app] = false |
|
|
|
const i = this.registeredStatus.findIndex((s) => s === app) |
|
|
|
if (i !== -1) { |
|
|
|
this.registeredStatus.splice(i, 1) |
|
|
|
Vue.set(this.statuses, app, { mounted: false }) |
|
|
|
this.$nextTick(() => { |
|
|
|
Vue.delete(this.callbacksStatus, app) |
|
|
|
}) |
|
|
|
} |
|
|
|
this.saveStatuses() |
|
|
|
}, |
|
|
|
}, |
|
|
|
} |
|
|
|
</script> |
|
|
|