36 lines
748 B
JavaScript
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;
|