From adca29525952bf0aabc0f67ca8c8a2a631f84fce Mon Sep 17 00:00:00 2001 From: wanggang <76527413@qq.com> Date: Tue, 14 Jan 2020 09:52:43 +0800 Subject: [PATCH] update Former-commit-id: 6e5845602c3c6660856c68660af862dd54b020e3 --- projects/IoTCenter/Api/NodeController.cs | 1 + projects/IoTCenter/Api/ProductController.cs | 1 + projects/WebApp/wwwroot/js/message.js | 14 ++++++- projects/WebApp/wwwroot/js/store.js | 43 +++++++++++++++++---- projects/WebApp/wwwroot/js/util.js | 19 ++++++++- 5 files changed, 67 insertions(+), 11 deletions(-) diff --git a/projects/IoTCenter/Api/NodeController.cs b/projects/IoTCenter/Api/NodeController.cs index 15882af1..bad6eb10 100644 --- a/projects/IoTCenter/Api/NodeController.cs +++ b/projects/IoTCenter/Api/NodeController.cs @@ -45,6 +45,7 @@ namespace UserCenter.Controllers var model = this._nodeRepo.ReadOnlyTable() .Select(o => new { + o.Id, o.Name, o.Number, o.Image, diff --git a/projects/IoTCenter/Api/ProductController.cs b/projects/IoTCenter/Api/ProductController.cs index 66d621a0..57e05718 100644 --- a/projects/IoTCenter/Api/ProductController.cs +++ b/projects/IoTCenter/Api/ProductController.cs @@ -36,6 +36,7 @@ namespace UserCenter.Controllers .OrderBy(o => o.DisplayOrder) .Select(o => new { + o.Id, o.Name, o.Number, o.Image, diff --git a/projects/WebApp/wwwroot/js/message.js b/projects/WebApp/wwwroot/js/message.js index 54ec8f97..bfcf964d 100644 --- a/projects/WebApp/wwwroot/js/message.js +++ b/projects/WebApp/wwwroot/js/message.js @@ -19,7 +19,17 @@ connection.on("ServerToClient", function (method, json, to, from) { console.log(json); var model = JSON.parse(json); if (method === 'NodeEntityUpdated') { - store.commit('setNode', model); + store.commit('updateNode', model); + } + //else if (method === 'NodeEntityInserted') {} + //else if (method === 'NodeEntityDeleted') {} + else if (method === 'DeviceEntityInserted') { + store.commit('insertDevice', model); + } + else if (method === 'DeviceEntityUpdated') { + store.commit('updateDevice', model); + } + else if (method === 'DeviceEntityDeleted') { + store.commit('deleteDevice', model); } - }); \ No newline at end of file diff --git a/projects/WebApp/wwwroot/js/store.js b/projects/WebApp/wwwroot/js/store.js index 26054dcd..a96bb2ee 100644 --- a/projects/WebApp/wwwroot/js/store.js +++ b/projects/WebApp/wwwroot/js/store.js @@ -4,8 +4,9 @@ const store = new Vuex.Store({ accessToken: localStorage.getItem("accessToken"), refreshToken: localStorage.getItem("refreshToken"), user: null, - products: null, - nodes: null, + products: [], + nodes: [], + devices:[], }, mutations: { setToken(state, data) { @@ -23,14 +24,40 @@ const store = new Vuex.Store({ setUser(state, user) { state.user = user; }, - setProducts(state, products) { - state.products = products; + setProducts(state, model) { + state.products = model; }, - setNodes(state, nodes) { - state.nodes = nodes; + setNodes(state, model) { + state.nodes = model; }, - setNode(state, node) { - findByNumberCopy(state.nodes, node); + 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; + } + } }, }) \ No newline at end of file diff --git a/projects/WebApp/wwwroot/js/util.js b/projects/WebApp/wwwroot/js/util.js index c2233a53..c9237b4c 100644 --- a/projects/WebApp/wwwroot/js/util.js +++ b/projects/WebApp/wwwroot/js/util.js @@ -5,9 +5,26 @@ } } } -function findByNumberCopy(list, from) { +function updateByNumber(list, from) { + var result = false; var to = Enumerable.from(list).where(function (o) { return o.number === from.number; }).firstOrDefault(); if (to) { copy(from, to); } + else { + list.push(from); + result = true; + } + return result; +} +function deleteByNumber(list, item) { + var result = false; + for (var i = 0; i < list.length; i++) { + if (list[i].number == item.number) { + list.splice(i, 1); + result = true; + break; + } + } + return result; } \ No newline at end of file