evcc-io/assets/js/store.js

36 lines
748 B
JavaScript

import Vue from "vue";
function setProperty(obj, props, value) {
const prop = props.shift();
if (!obj[prop]) {
Vue.set(obj, prop, {});
}
if (!props.length) {
if (value && typeof value === "object" && !Array.isArray(value)) {
obj[prop] = { ...obj[prop], ...value };
} else {
obj[prop] = value;
}
return;
}
setProperty(obj[prop], props, value);
}
const store = {
state: {
loadpoints: [], // ensure array type
},
update: function (msg) {
Object.keys(msg).forEach(function (k) {
if (typeof window.app[k] === "function") {
window.app[k]({ message: msg[k] });
} else {
setProperty(store.state, k.split("."), msg[k]);
}
});
},
};
export default store;