You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iot/projects/WebApp/wwwroot/js/store.js

73 lines
2.4 KiB

Vue.use(Vuex);
const store = new Vuex.Store({
state: {
accessToken: localStorage.getItem("accessToken"),
refreshToken: localStorage.getItem("refreshToken"),
user: null,
products: [],
nodes: [],
product: null,
node: null,
device:null
},
mutations: {
setToken(state, data) {
state.accessToken = data.accessToken;
localStorage.setItem("accessToken", state.accessToken);
state.refreshToken = data.refreshToken;
localStorage.setItem("refreshToken", state.refreshToken);
},
logout(state) {
state.accessToken = null;
state.refreshToken = null;
localStorage.removeItem('accessToken');
localStorage.removeItem('refreshToken');
},
setUser(state, user) {
state.user = user;
},
setProducts(state, model) {
state.products = model;
},
setNodes(state, model) {
state.nodes = model;
},
setProduct(state, model) {
state.product = model;
},
setDevice(state, model) {
state.device = model;
},
setNode(state, model) {
state.node = model;
},
updateNode(state, model) {
updateByNumber(state.nodes, model);
},
insertDevice(state, model) {
updateByNumber(state.devices, model);
var node = Enumerable.from(state.nodes).where(function (o) { return o.id === model.nodeId; }).firstOrDefault();
if (node) {
node.count += 1;
}
var product = Enumerable.from(state.products).where(function (o) { return o.id === model.nodeId; }).firstOrDefault();
if (product) {
product.count += 1;
}
},
updateDevice(state, model) {
updateByNumber(state.devices, model);
},
deleteDevice(state, model) {
deleteByNumber(state.devices, model);
var node = Enumerable.from(state.nodes).where(function (o) { return o.id === model.nodeId; }).firstOrDefault();
if (node) {
node.count -= 1;
}
var product = Enumerable.from(state.products).where(function (o) { return o.id === model.productId; }).firstOrDefault();
if (product) {
product.count -= 1;
}
}
},
})