Commit d69a95be0c9cb1710a145a2d15651cf48e99ffe2
1 parent
cc2941d6
perf: socket send message optimize
Showing
3 changed files
with
328 additions
and
95 deletions
@@ -33,7 +33,6 @@ const GLOBAL_PLATFORM_INFO = (() => { | @@ -33,7 +33,6 @@ const GLOBAL_PLATFORM_INFO = (() => { | ||
33 | * @type {{JWT_TOKEN: {value: string}}} | 33 | * @type {{JWT_TOKEN: {value: string}}} |
34 | */ | 34 | */ |
35 | const common = ls.get(GLOBAL_PLATFORM_INFO_KEY) | 35 | const common = ls.get(GLOBAL_PLATFORM_INFO_KEY) |
36 | - console.log(common) | ||
37 | return common | 36 | return common |
38 | })() | 37 | })() |
39 | 38 |
@@ -174,10 +174,15 @@ | @@ -174,10 +174,15 @@ | ||
174 | if (!chartDom) return | 174 | if (!chartDom) return |
175 | chartDom.style.width = `${width}px` | 175 | chartDom.style.width = `${width}px` |
176 | chartDom.style.height = `${height}px` | 176 | chartDom.style.height = `${height}px` |
177 | - const myChart = echarts.init(chartDom); | ||
178 | - const option = chartOptionMapping[chartType] ? chartOptionMapping[chartType]() : {} | ||
179 | - option && myChart.setOption(option); | ||
180 | - chartsInstanceMapping.set(id, myChart) | 177 | + try { |
178 | + const myChart = echarts.init(chartDom); | ||
179 | + const option = chartOptionMapping[chartType] ? chartOptionMapping[chartType]() : {} | ||
180 | + option && myChart.setOption(option); | ||
181 | + chartsInstanceMapping.set(id, myChart) | ||
182 | + } catch (error) { | ||
183 | + | ||
184 | + } | ||
185 | + | ||
181 | } | 186 | } |
182 | 187 | ||
183 | /** | 188 | /** |
@@ -13033,18 +13033,56 @@ function previewAction(editorUi, currentPage) { | @@ -13033,18 +13033,56 @@ function previewAction(editorUi, currentPage) { | ||
13033 | class DispatchCenter { | 13033 | class DispatchCenter { |
13034 | 13034 | ||
13035 | /** | 13035 | /** |
13036 | - * @description 节点映射 | ||
13037 | - * @type {Map<string, Map<string, object>>} | ||
13038 | - */ | ||
13039 | - nodeMapping | ||
13040 | - | ||
13041 | - /** | ||
13042 | * @description cmd ID 与 node 映射关系 | 13036 | * @description cmd ID 与 node 映射关系 |
13043 | * @type {Map<number, string>} | 13037 | * @type {Map<number, string>} |
13044 | */ | 13038 | */ |
13045 | cmdIdMapping = new Map() | 13039 | cmdIdMapping = new Map() |
13046 | 13040 | ||
13047 | /** | 13041 | /** |
13042 | + * @type { Map<string, { | ||
13043 | + * deviceId: string, | ||
13044 | + * dataOrigin: 'dataSources' | 'act', | ||
13045 | + * slaveDeviceId: string, | ||
13046 | + * nodeId: string, | ||
13047 | + * attr: string | ||
13048 | + * condition?: { max?: number, min?: number }, | ||
13049 | + * additional?: { | ||
13050 | + * agg?: string, | ||
13051 | + * attrName?: string, | ||
13052 | + * dataType?: 'tsSubCmds' | 'historyCmds', | ||
13053 | + * deviceName?: string, | ||
13054 | + * effectScope?: string, | ||
13055 | + * interval?: string, | ||
13056 | + * orgName?: string, | ||
13057 | + * slaveDeviceName?: string | ||
13058 | + * } | ||
13059 | + * }[]>} | ||
13060 | + */ | ||
13061 | + deviceIdMapping = new Map() | ||
13062 | + | ||
13063 | + /** | ||
13064 | + * @type {Map<number, { | ||
13065 | + * deviceId: string, | ||
13066 | + * slaveDeviceId: string, | ||
13067 | + * nodeId: string, | ||
13068 | + * attr: string | ||
13069 | + * dataOrigin: 'dataSources' | 'act', | ||
13070 | + * condition?: { max?: number, min?: number }, | ||
13071 | + * additional?: { | ||
13072 | + * agg?: string, | ||
13073 | + * attrName?: string, | ||
13074 | + * dataType?: 'tsSubCmds' | 'historyCmds', | ||
13075 | + * deviceName?: string, | ||
13076 | + * effectScope?: string, | ||
13077 | + * interval?: string, | ||
13078 | + * orgName?: string, | ||
13079 | + * slaveDeviceName?: string | ||
13080 | + * } | ||
13081 | + * }[]>} | ||
13082 | + */ | ||
13083 | + subscribeIdMapping = new Map() | ||
13084 | + | ||
13085 | + /** | ||
13048 | * @description | 13086 | * @description |
13049 | */ | 13087 | */ |
13050 | editorUi | 13088 | editorUi |
@@ -13150,7 +13188,6 @@ class DispatchCenter { | @@ -13150,7 +13188,6 @@ class DispatchCenter { | ||
13150 | 13188 | ||
13151 | 13189 | ||
13152 | constructor(editorUi, currentPage) { | 13190 | constructor(editorUi, currentPage) { |
13153 | - this.nodeMapping = new Map() | ||
13154 | this.editorUi = editorUi | 13191 | this.editorUi = editorUi |
13155 | this.init(editorUi, currentPage) | 13192 | this.init(editorUi, currentPage) |
13156 | } | 13193 | } |
@@ -13169,6 +13206,7 @@ class DispatchCenter { | @@ -13169,6 +13206,7 @@ class DispatchCenter { | ||
13169 | this.dataInteractionInstance = new HandleDataInteraction(this) | 13206 | this.dataInteractionInstance = new HandleDataInteraction(this) |
13170 | this.dynamicEffectInstance = new HandleDynamicEffect(this) | 13207 | this.dynamicEffectInstance = new HandleDynamicEffect(this) |
13171 | this.updateQueueInstance = new UpdateQueue(this) | 13208 | this.updateQueueInstance = new UpdateQueue(this) |
13209 | + this.sendSubscribeMessage() | ||
13172 | } | 13210 | } |
13173 | 13211 | ||
13174 | /** | 13212 | /** |
@@ -13176,7 +13214,7 @@ class DispatchCenter { | @@ -13176,7 +13214,7 @@ class DispatchCenter { | ||
13176 | */ | 13214 | */ |
13177 | connectSocket() { | 13215 | connectSocket() { |
13178 | Ws.instance?.destroy?.() | 13216 | Ws.instance?.destroy?.() |
13179 | - this.socket = Ws.getInstance({ url: GLOBAL_WS_URL(), onmessageCallback: this.socketOnmessage }) | 13217 | + this.socket = Ws.getInstance({ url: GLOBAL_WS_URL(), onmessageCallback: this.socketOnMessage.bind(this) }) |
13180 | } | 13218 | } |
13181 | 13219 | ||
13182 | /** | 13220 | /** |
@@ -13185,9 +13223,29 @@ class DispatchCenter { | @@ -13185,9 +13223,29 @@ class DispatchCenter { | ||
13185 | * @param event | 13223 | * @param event |
13186 | * @param ws | 13224 | * @param ws |
13187 | */ | 13225 | */ |
13188 | - socketOnmessage(message, event, ws) { | ||
13189 | - const { subscriptionId, data } = message | ||
13190 | - DispatchCenter.instance.publishEvent(subscriptionId, data, message, event, ws) | 13226 | + socketOnMessage(message, event, ws) { |
13227 | + const { subscriptionId, errorMsg } = message | ||
13228 | + if (errorMsg) return | ||
13229 | + const subList = this.subscribeIdMapping.get(subscriptionId) | ||
13230 | + subList.forEach(item => { | ||
13231 | + const { dataOrigin, additional } = item | ||
13232 | + if (dataOrigin === 'dataSources') { | ||
13233 | + if (additional) | ||
13234 | + this.dataSourceHandlerInstance.updateRealTimeDataSource(message, item) | ||
13235 | + else | ||
13236 | + this.dataSourceHandlerInstance.updateCommonDataSource(message, item) | ||
13237 | + } | ||
13238 | + if (dataOrigin === 'act') { | ||
13239 | + const { type } = item | ||
13240 | + // this.dynamicEffectInstance.videoPlay() | ||
13241 | + const handleFunction = this.dynamicEffectInstance.dispatch.call(this.dynamicEffectInstance, type) | ||
13242 | + handleFunction(message, item) | ||
13243 | + } | ||
13244 | + }) | ||
13245 | + // this.subscribeEvent(cmdId, this.updateCommonDataSource.bind(this)) | ||
13246 | + return | ||
13247 | + // const { subscriptionId, data } = message | ||
13248 | + // DispatchCenter.instance.publishEvent(subscriptionId, data, message, event, ws) | ||
13191 | } | 13249 | } |
13192 | 13250 | ||
13193 | /** | 13251 | /** |
@@ -13220,6 +13278,175 @@ class DispatchCenter { | @@ -13220,6 +13278,175 @@ class DispatchCenter { | ||
13220 | this.contentData = res | 13278 | this.contentData = res |
13221 | } | 13279 | } |
13222 | 13280 | ||
13281 | + sendSubscribeMessage() { | ||
13282 | + const message = this.generateSubscribeMessage() | ||
13283 | + this.socket.send(JSON.stringify(message)) | ||
13284 | + } | ||
13285 | + | ||
13286 | + /** | ||
13287 | + * @description 创建订阅消息 | ||
13288 | + */ | ||
13289 | + generateSubscribeMessage() { | ||
13290 | + | ||
13291 | + /** | ||
13292 | + * @type {{dataSources: [], act: [], event: [], enabled: boolean}} | ||
13293 | + */ | ||
13294 | + const data = JSON.parse(JSON.stringify(this.contentData)) | ||
13295 | + delete data.enabled | ||
13296 | + | ||
13297 | + /** | ||
13298 | + * | ||
13299 | + * @param {'dataSources' | 'act'} key | ||
13300 | + * @param {{ | ||
13301 | + * id: string, | ||
13302 | + * enabled: boolean, | ||
13303 | + * deviceId: string, | ||
13304 | + * slaveDeviceId: string, | ||
13305 | + * nodeId: string, | ||
13306 | + * attr: string | ||
13307 | + * condition?: { max?: number, min?: number }, | ||
13308 | + * additional?: { | ||
13309 | + * agg?: string, | ||
13310 | + * attrName?: string, | ||
13311 | + * dataType?: 'tsSubCmds' | 'historyCmds', | ||
13312 | + * deviceName?: string, | ||
13313 | + * effectScope?: string, | ||
13314 | + * interval?: string, | ||
13315 | + * orgName?: string, | ||
13316 | + * slaveDeviceName?: string | ||
13317 | + * } | ||
13318 | + * }} record | ||
13319 | + */ | ||
13320 | + const setDeviceMapping = (record) => { | ||
13321 | + const { deviceId, slaveDeviceId } = record | ||
13322 | + if (this.deviceIdMapping.has(slaveDeviceId || deviceId)) { | ||
13323 | + const group = this.deviceIdMapping.get(slaveDeviceId || deviceId) | ||
13324 | + group.push(record) | ||
13325 | + } else { | ||
13326 | + this.deviceIdMapping.set(slaveDeviceId || deviceId, [record]) | ||
13327 | + } | ||
13328 | + } | ||
13329 | + | ||
13330 | + Object.keys(data).forEach(key => { | ||
13331 | + /** | ||
13332 | + * @type {{ | ||
13333 | + * id: string, | ||
13334 | + * nodeId: string, | ||
13335 | + * deviceId: string, | ||
13336 | + * slaveDeviceId: string, | ||
13337 | + * attr: string, | ||
13338 | + * enabled: boolean, | ||
13339 | + * additional: object, | ||
13340 | + * condition: object | ||
13341 | + * }[]} | ||
13342 | + */ | ||
13343 | + const list = data[key] | ||
13344 | + if (key === 'dataSources') { | ||
13345 | + for (const item of list) { | ||
13346 | + setDeviceMapping({ dataOrigin: key, ...item }) | ||
13347 | + } | ||
13348 | + } | ||
13349 | + if (key === 'act') { | ||
13350 | + for (const item of list) { | ||
13351 | + const { enabled } = item | ||
13352 | + if (!enabled) continue | ||
13353 | + setDeviceMapping({ dataOrigin: key, ...item }) | ||
13354 | + } | ||
13355 | + } | ||
13356 | + }) | ||
13357 | + | ||
13358 | + /** | ||
13359 | + * @param {{ | ||
13360 | + * entityId: string, | ||
13361 | + * cmdId: number, | ||
13362 | + * keys: string, | ||
13363 | + * agg?: string, | ||
13364 | + * interval?: number, | ||
13365 | + * startTs?: number, | ||
13366 | + * endTs?: number | ||
13367 | + * }} params | ||
13368 | + * @returns {{ entityType: string, entityId: string, scope: string, cmdId: number, keys: string }} | ||
13369 | + */ | ||
13370 | + const generateMessage = (params) => { | ||
13371 | + const getDynamicAttr = (attr) => params[attr] ? { [attr]: params[attr] } : {} | ||
13372 | + return { | ||
13373 | + entityType: 'DEVICE', | ||
13374 | + entityId: params.entityId, | ||
13375 | + cmdId: params.cmdId, | ||
13376 | + keys: params.keys, | ||
13377 | + | ||
13378 | + ... (params.interval ? {} : { scope: 'LATEST_TELEMETRY' }), | ||
13379 | + ...getDynamicAttr('agg'), | ||
13380 | + ...getDynamicAttr('interval'), | ||
13381 | + ...getDynamicAttr('startTs'), | ||
13382 | + ...getDynamicAttr('endTs'), | ||
13383 | + } | ||
13384 | + } | ||
13385 | + | ||
13386 | + const generateGroupMessage = () => { | ||
13387 | + /** | ||
13388 | + * @type {{ | ||
13389 | + * historyCmds: { | ||
13390 | + * entityType: 'DEVICE', | ||
13391 | + * entityId: string, | ||
13392 | + * scope?: 'LATEST_TELEMETRY', | ||
13393 | + * cmdId: number, | ||
13394 | + * keys: string, | ||
13395 | + * startTs?: number | ||
13396 | + * endTs?: number | ||
13397 | + * }[], | ||
13398 | + * tsSubCmds: { | ||
13399 | + * entityType: 'DEVICE', | ||
13400 | + * entityId: string, | ||
13401 | + * scope?: 'LATEST_TELEMETRY', | ||
13402 | + * cmdId: number, | ||
13403 | + * keys: string, | ||
13404 | + * startTs?: number | ||
13405 | + * endTs?: number | ||
13406 | + * }[]}} | ||
13407 | + */ | ||
13408 | + const messageList = { tsSubCmds: [], historyCmds: [] } | ||
13409 | + let cmdId = 0 | ||
13410 | + | ||
13411 | + const getKeys = (list) => Array.from(new Set(list)).join(',') | ||
13412 | + | ||
13413 | + const toNumber = (string, defaultValue = 0) => isNaN(string) ? defaultValue : Number(string) | ||
13414 | + | ||
13415 | + const setSubscribeMapping = (cmdId, record) => this.subscribeIdMapping.set(cmdId, record) | ||
13416 | + | ||
13417 | + this.deviceIdMapping.forEach((value, key) => { | ||
13418 | + const basicRecord = value.filter(item => !item.additional) | ||
13419 | + const moreFilterRecord = value.filter(item => item.additional) | ||
13420 | + | ||
13421 | + const message = generateMessage({ entityId: key, cmdId, keys: getKeys(basicRecord.map(item => item.attr)) }) | ||
13422 | + setSubscribeMapping(cmdId, basicRecord) | ||
13423 | + cmdId++ | ||
13424 | + moreFilterRecord.forEach(item => { | ||
13425 | + const { additional = {} } = item | ||
13426 | + const { dataType = 'tsSubCmds', interval, effectScope, agg } = additional | ||
13427 | + const message = generateMessage({ | ||
13428 | + entityId: key, | ||
13429 | + cmdId, | ||
13430 | + agg, | ||
13431 | + keys: getKeys(moreFilterRecord.map(item => item.attr)), | ||
13432 | + interval: toNumber(interval, 1000), | ||
13433 | + startTs: Date.now() - toNumber(effectScope), | ||
13434 | + ...(dataType === HandleDataSource.enumDataBindType.REAL ? {} : { endTs: Date.now() }) | ||
13435 | + }) | ||
13436 | + setSubscribeMapping(cmdId, moreFilterRecord) | ||
13437 | + messageList[dataType].push(message) | ||
13438 | + cmdId++ | ||
13439 | + }) | ||
13440 | + | ||
13441 | + messageList.tsSubCmds.push(message) | ||
13442 | + }) | ||
13443 | + | ||
13444 | + return messageList | ||
13445 | + } | ||
13446 | + | ||
13447 | + return generateGroupMessage() | ||
13448 | + } | ||
13449 | + | ||
13223 | /** | 13450 | /** |
13224 | * @description 发送消息去获取实时数据 | 13451 | * @description 发送消息去获取实时数据 |
13225 | */ | 13452 | */ |
@@ -13242,7 +13469,7 @@ class DispatchCenter { | @@ -13242,7 +13469,7 @@ class DispatchCenter { | ||
13242 | /** | 13469 | /** |
13243 | * @description 生成节点映射表 | 13470 | * @description 生成节点映射表 |
13244 | * @param dataSources | 13471 | * @param dataSources |
13245 | - * @return {{cmdId: number, entityType: string, keys: *, scope: string, entityId: *}[]} | 13472 | + * @return {{cmdId: number, entityType: string, keys: string, scope: string, entityId: string}[]} |
13246 | */ | 13473 | */ |
13247 | generatorDataSourceMapping(dataSources = []) { | 13474 | generatorDataSourceMapping(dataSources = []) { |
13248 | return dataSources.map((datum) => { | 13475 | return dataSources.map((datum) => { |
@@ -13264,12 +13491,7 @@ class DispatchCenter { | @@ -13264,12 +13491,7 @@ class DispatchCenter { | ||
13264 | * @description 分发事件 | 13491 | * @description 分发事件 |
13265 | */ | 13492 | */ |
13266 | publishEvent(eventName, data, message, event, ws) { | 13493 | publishEvent(eventName, data, message, event, ws) { |
13267 | - // data = data ? data : {} | ||
13268 | this.eventBus.emit(eventName, message, event, ws) | 13494 | this.eventBus.emit(eventName, message, event, ws) |
13269 | - // console.log(arguments) | ||
13270 | - // Object.keys(data).forEach(() => { | ||
13271 | - // this.eventBus.emit(eventName, message, event, ws) | ||
13272 | - // }) | ||
13273 | } | 13495 | } |
13274 | 13496 | ||
13275 | /** | 13497 | /** |
@@ -13414,8 +13636,8 @@ class HandleDataSource { | @@ -13414,8 +13636,8 @@ class HandleDataSource { | ||
13414 | 13636 | ||
13415 | constructor(DispatchInstance) { | 13637 | constructor(DispatchInstance) { |
13416 | this.DispatchInstance = DispatchInstance | 13638 | this.DispatchInstance = DispatchInstance |
13417 | - this.generatorCommonDataSourceMapping() | ||
13418 | - this.generatorChartDataSourceMapping() | 13639 | + // this.generatorCommonDataSourceMapping() |
13640 | + // this.generatorChartDataSourceMapping() | ||
13419 | } | 13641 | } |
13420 | 13642 | ||
13421 | get graph() { | 13643 | get graph() { |
@@ -13536,10 +13758,12 @@ class HandleDataSource { | @@ -13536,10 +13758,12 @@ class HandleDataSource { | ||
13536 | * @description 更新变量值 | 13758 | * @description 更新变量值 |
13537 | * @param {} message | 13759 | * @param {} message |
13538 | */ | 13760 | */ |
13539 | - updateCommonDataSource(message) { | ||
13540 | - const { subscriptionId } = message | ||
13541 | - const node = this.getNodeByCmdId(subscriptionId) | ||
13542 | - const { attr } = this.getBindData(subscriptionId) | 13761 | + updateCommonDataSource(message, record) { |
13762 | + // const { subscriptionId } = message | ||
13763 | + const { nodeId, attr } = record | ||
13764 | + const node = this.getNodeByCmdId(nodeId) | ||
13765 | + | ||
13766 | + // const { attr } = this.getBindData(nodeId) | ||
13543 | node && this.updatePage(() => { | 13767 | node && this.updatePage(() => { |
13544 | const { data } = message | 13768 | const { data } = message |
13545 | const type = this.getComponentType(node) | 13769 | const type = this.getComponentType(node) |
@@ -13554,7 +13778,7 @@ class HandleDataSource { | @@ -13554,7 +13778,7 @@ class HandleDataSource { | ||
13554 | } | 13778 | } |
13555 | 13779 | ||
13556 | if (type === this.componentType.IMAGE) { | 13780 | if (type === this.componentType.IMAGE) { |
13557 | - this.handleImageComponent(message) | 13781 | + this.handleImageComponent(message, record) |
13558 | return | 13782 | return |
13559 | } | 13783 | } |
13560 | 13784 | ||
@@ -13568,11 +13792,11 @@ class HandleDataSource { | @@ -13568,11 +13792,11 @@ class HandleDataSource { | ||
13568 | * @description 处理switch 组件 | 13792 | * @description 处理switch 组件 |
13569 | * @param {} message | 13793 | * @param {} message |
13570 | */ | 13794 | */ |
13571 | - handleSwitchComponent(message) { | ||
13572 | - const { subscriptionId, data = {} } = message | ||
13573 | - const node = this.getNodeByCmdId(subscriptionId) | ||
13574 | - const { nodeId, attr } = this.getBindData(subscriptionId) | ||
13575 | - const [[timespan, receiveValue] = []] = data[attr] || [] | 13795 | + handleSwitchComponent(message, record) { |
13796 | + const { data = {} } = message | ||
13797 | + const { nodeId, attr } = record | ||
13798 | + const node = this.getNodeByCmdId(nodeId) | ||
13799 | + const [[_timespan, receiveValue] = []] = data[attr] || [] | ||
13576 | const switchConfig = this.DispatchInstance.contentData.act.find(item => item.id === nodeId && item.type === 'SWITCH') | 13800 | const switchConfig = this.DispatchInstance.contentData.act.find(item => item.id === nodeId && item.type === 'SWITCH') |
13577 | const { condition = [] } = switchConfig || {} | 13801 | const { condition = [] } = switchConfig || {} |
13578 | let reg = /image=[^;]+/g | 13802 | let reg = /image=[^;]+/g |
@@ -13611,22 +13835,22 @@ class HandleDataSource { | @@ -13611,22 +13835,22 @@ class HandleDataSource { | ||
13611 | 13835 | ||
13612 | } | 13836 | } |
13613 | 13837 | ||
13614 | - handleParamSettingButton(message) { | ||
13615 | - const { subscriptionId, data = {} } = message | 13838 | + handleParamSettingButton(message, record) { |
13839 | + const { data = {} } = message | ||
13616 | if (!data) return | 13840 | if (!data) return |
13617 | - const node = this.getNodeByCmdId(subscriptionId) | ||
13618 | - const { attr } = this.getBindData(subscriptionId) | ||
13619 | - const [[timespan, receiveValue] = []] = data[attr] || [] | 13841 | + const { nodeId, attr } = record |
13842 | + const node = this.getNodeByCmdId(nodeId) | ||
13843 | + const [[_timespan, receiveValue] = []] = data[attr] || [] | ||
13620 | this.updatePage(() => { | 13844 | this.updatePage(() => { |
13621 | node.setAttribute('label', `<button class="param-setting-button">${receiveValue}</button>`) | 13845 | node.setAttribute('label', `<button class="param-setting-button">${receiveValue}</button>`) |
13622 | }, node) | 13846 | }, node) |
13623 | } | 13847 | } |
13624 | 13848 | ||
13625 | - handleImageComponent(message) { | ||
13626 | - const { subscriptionId, data = {} } = message | ||
13627 | - const node = this.getNodeByCmdId(subscriptionId) | ||
13628 | - const { attr } = this.getBindData(subscriptionId) | ||
13629 | - const [[timespan, receiveValue] = []] = data[attr] || [] | 13849 | + handleImageComponent(message, record) { |
13850 | + const { data = {} } = message | ||
13851 | + const { nodeId, attr } = record | ||
13852 | + const node = this.getNodeByCmdId(nodeId) | ||
13853 | + const [[_timespan, receiveValue] = []] = data[attr] || [] | ||
13630 | this.updatePage(() => { | 13854 | this.updatePage(() => { |
13631 | node.setAttribute('label', `<img class="basic-component__image" alt="图片" src="${receiveValue}" />`) | 13855 | node.setAttribute('label', `<img class="basic-component__image" alt="图片" src="${receiveValue}" />`) |
13632 | }, node) | 13856 | }, node) |
@@ -13635,18 +13859,19 @@ class HandleDataSource { | @@ -13635,18 +13859,19 @@ class HandleDataSource { | ||
13635 | /** | 13859 | /** |
13636 | * @description 更新实时数据 | 13860 | * @description 更新实时数据 |
13637 | * @param {} message | 13861 | * @param {} message |
13638 | - * @param {} agg 聚合方式 | 13862 | + * @param {} record 聚合方式 |
13639 | */ | 13863 | */ |
13640 | - updateRealTimeDataSource(message, agg) { | ||
13641 | - const { data = {}, subscriptionId } = message | ||
13642 | - const node = this.getNodeByCmdId(subscriptionId) | 13864 | + updateRealTimeDataSource(message, record) { |
13865 | + const { data = {} } = message | ||
13866 | + const { nodeId, attr, additional = {} } = record | ||
13867 | + const { agg } = additional | ||
13868 | + const node = this.getNodeByCmdId(nodeId) | ||
13643 | if (!node) return | 13869 | if (!node) return |
13644 | const enumConst = Sidebar.prototype.enumCellBasicAttribute | 13870 | const enumConst = Sidebar.prototype.enumCellBasicAttribute |
13645 | const chartInstanceMap = Sidebar.prototype.chartsInstanceMapping | 13871 | const chartInstanceMap = Sidebar.prototype.chartsInstanceMapping |
13646 | const chartInstanceId = node.getAttribute(enumConst.CHART_INSTANCE_ID) | 13872 | const chartInstanceId = node.getAttribute(enumConst.CHART_INSTANCE_ID) |
13647 | const chartInstanceType = node.getAttribute(enumConst.COMPONENT_TYPE) | 13873 | const chartInstanceType = node.getAttribute(enumConst.COMPONENT_TYPE) |
13648 | const instance = chartInstanceMap.get(chartInstanceId) | 13874 | const instance = chartInstanceMap.get(chartInstanceId) |
13649 | - const { attr = [[]], additional } = this.getBindData(subscriptionId) | ||
13650 | const realDataList = data[attr] || [] | 13875 | const realDataList = data[attr] || [] |
13651 | 13876 | ||
13652 | const action = agg === 'NONE' ? 'unshift' : 'push' | 13877 | const action = agg === 'NONE' ? 'unshift' : 'push' |
@@ -13655,12 +13880,12 @@ class HandleDataSource { | @@ -13655,12 +13880,12 @@ class HandleDataSource { | ||
13655 | const isActive = instance.isActive | 13880 | const isActive = instance.isActive |
13656 | if (!isActive) { | 13881 | if (!isActive) { |
13657 | instance.isActive = true | 13882 | instance.isActive = true |
13658 | - const chartOption = this.getChartComponentOption(chartInstanceType, { chartType: chartInstanceType, attr, dataList: realDataList, action, nodeId: node.id , additional}) | 13883 | + const chartOption = this.getChartComponentOption(chartInstanceType, { chartType: chartInstanceType, attr, dataList: realDataList, action, nodeId: node.id, additional }) |
13659 | instance.setOption(chartOption) | 13884 | instance.setOption(chartOption) |
13660 | 13885 | ||
13661 | } else { | 13886 | } else { |
13662 | const oldOptions = instance.getOption() | 13887 | const oldOptions = instance.getOption() |
13663 | - const options = this.getRealTimeUpdateChartOption(chartInstanceType, { oldOptions, dataList: realDataList , additional}) | 13888 | + const options = this.getRealTimeUpdateChartOption(chartInstanceType, { oldOptions, dataList: realDataList, additional }) |
13664 | if (!instance) clearInterval(interval) | 13889 | if (!instance) clearInterval(interval) |
13665 | instance && instance.setOption(options) | 13890 | instance && instance.setOption(options) |
13666 | } | 13891 | } |
@@ -13669,16 +13894,17 @@ class HandleDataSource { | @@ -13669,16 +13894,17 @@ class HandleDataSource { | ||
13669 | /** | 13894 | /** |
13670 | * @description 更新历史数据 | 13895 | * @description 更新历史数据 |
13671 | */ | 13896 | */ |
13672 | - updateHistoryDataSource(message, agg) { | ||
13673 | - const { data = {}, subscriptionId } = message | ||
13674 | - const node = this.getNodeByCmdId(subscriptionId) | 13897 | + updateHistoryDataSource(message, record) { |
13898 | + const { data = {} } = message | ||
13899 | + const { nodeId, attr, additional = {} } = record | ||
13900 | + const { agg } = additional | ||
13901 | + const node = this.getNodeByCmdId(nodeId) | ||
13675 | if (!node) return | 13902 | if (!node) return |
13676 | const enumConst = Sidebar.prototype.enumCellBasicAttribute | 13903 | const enumConst = Sidebar.prototype.enumCellBasicAttribute |
13677 | const chartInstanceMap = Sidebar.prototype.chartsInstanceMapping | 13904 | const chartInstanceMap = Sidebar.prototype.chartsInstanceMapping |
13678 | const chartInstanceId = node.getAttribute(enumConst.CHART_INSTANCE_ID) | 13905 | const chartInstanceId = node.getAttribute(enumConst.CHART_INSTANCE_ID) |
13679 | const chartInstanceType = node.getAttribute(enumConst.COMPONENT_TYPE) | 13906 | const chartInstanceType = node.getAttribute(enumConst.COMPONENT_TYPE) |
13680 | const instance = chartInstanceMap.get(chartInstanceId) | 13907 | const instance = chartInstanceMap.get(chartInstanceId) |
13681 | - const { attr = [[]], additional } = this.getBindData(subscriptionId) | ||
13682 | const historyDataList = data[attr] || [] | 13908 | const historyDataList = data[attr] || [] |
13683 | const showNumberOf = 4 | 13909 | const showNumberOf = 4 |
13684 | const action = agg === 'NONE' ? 'unshift' : 'push' | 13910 | const action = agg === 'NONE' ? 'unshift' : 'push' |
@@ -13965,11 +14191,10 @@ class HandleDataSource { | @@ -13965,11 +14191,10 @@ class HandleDataSource { | ||
13965 | /** | 14191 | /** |
13966 | * @description 获取仪表盘配置 | 14192 | * @description 获取仪表盘配置 |
13967 | */ | 14193 | */ |
13968 | - getRealTimeUpdateDashboardChartOption(params = { dataList: [] , additional: {}}) { | 14194 | + getRealTimeUpdateDashboardChartOption(params = { dataList: [], additional: {} }) { |
13969 | const { dataList = [], oldOptions, additional } = params | 14195 | const { dataList = [], oldOptions, additional } = params |
13970 | const { attrName } = additional | 14196 | const { attrName } = additional |
13971 | const [timespan, value] = dataList[0] || [] | 14197 | const [timespan, value] = dataList[0] || [] |
13972 | - console.log(value) | ||
13973 | return { | 14198 | return { |
13974 | series: [ | 14199 | series: [ |
13975 | { | 14200 | { |
@@ -13990,8 +14215,7 @@ class HandleDataSource { | @@ -13990,8 +14215,7 @@ class HandleDataSource { | ||
13990 | * @param actionType | 14215 | * @param actionType |
13991 | * @return {{attr: string, additional: { agg: string, dataType: string, effectScope: string, interval: string, unit: string, orgName: string, deviceName: string, slaveDeviceName: string, attrName: string }}} | 14216 | * @return {{attr: string, additional: { agg: string, dataType: string, effectScope: string, interval: string, unit: string, orgName: string, deviceName: string, slaveDeviceName: string, attrName: string }}} |
13992 | */ | 14217 | */ |
13993 | - getBindData(subscriptionId) { | ||
13994 | - const nodeId = this.getNodeIdByCmdId(subscriptionId) | 14218 | + getBindData(nodeId) { |
13995 | const temp = this.dataSourceNodeMapping.get(nodeId) || {} | 14219 | const temp = this.dataSourceNodeMapping.get(nodeId) || {} |
13996 | return temp | 14220 | return temp |
13997 | } | 14221 | } |
@@ -14011,7 +14235,8 @@ class HandleDataSource { | @@ -14011,7 +14235,8 @@ class HandleDataSource { | ||
14011 | * @return {string} | 14235 | * @return {string} |
14012 | */ | 14236 | */ |
14013 | getNodeIdByCmdId(subscriptionId) { | 14237 | getNodeIdByCmdId(subscriptionId) { |
14014 | - return this.DispatchInstance.cmdIdMapping.get(subscriptionId) | 14238 | + // return this.DispatchInstance.cmdIdMapping.get(subscriptionId) |
14239 | + return this.DispatchInstance.subscribeIdMapping.get(subscriptionId) | ||
14015 | } | 14240 | } |
14016 | 14241 | ||
14017 | /** | 14242 | /** |
@@ -14019,8 +14244,8 @@ class HandleDataSource { | @@ -14019,8 +14244,8 @@ class HandleDataSource { | ||
14019 | * @param subscriptionId | 14244 | * @param subscriptionId |
14020 | * @return {*} | 14245 | * @return {*} |
14021 | */ | 14246 | */ |
14022 | - getNodeByCmdId(subscriptionId) { | ||
14023 | - const nodeId = this.getNodeIdByCmdId(subscriptionId) | 14247 | + getNodeByCmdId(nodeId) { |
14248 | + // const nodeId = this.getNodeIdByCmdId(subscriptionId) | ||
14024 | return this.contentAllCell.find(item => item.id === nodeId) | 14249 | return this.contentAllCell.find(item => item.id === nodeId) |
14025 | } | 14250 | } |
14026 | 14251 | ||
@@ -14634,7 +14859,7 @@ class HandleDynamicEffect { | @@ -14634,7 +14859,7 @@ class HandleDynamicEffect { | ||
14634 | */ | 14859 | */ |
14635 | generatorMappingRelation() { | 14860 | generatorMappingRelation() { |
14636 | this.videoPlay() | 14861 | this.videoPlay() |
14637 | - const tsSubCmds = [] | 14862 | + // const tsSubCmds = [] |
14638 | this.enableActList.forEach(each => { | 14863 | this.enableActList.forEach(each => { |
14639 | const { id, type, attr, deviceId, slaveDeviceId } = each | 14864 | const { id, type, attr, deviceId, slaveDeviceId } = each |
14640 | 14865 | ||
@@ -14642,13 +14867,13 @@ class HandleDynamicEffect { | @@ -14642,13 +14867,13 @@ class HandleDynamicEffect { | ||
14642 | const temp = this.actNodeMapping.get(id) | 14867 | const temp = this.actNodeMapping.get(id) |
14643 | temp.value.set(type, each) | 14868 | temp.value.set(type, each) |
14644 | 14869 | ||
14645 | - const cmdId = this.DispatchInstance.getCmdId(id) | 14870 | + // const cmdId = this.DispatchInstance.getCmdId(id) |
14646 | 14871 | ||
14647 | - tsSubCmds.push(this.generatorMessage(slaveDeviceId ? slaveDeviceId : deviceId, cmdId, attr)) | 14872 | + // tsSubCmds.push(this.generatorMessage(slaveDeviceId ? slaveDeviceId : deviceId, cmdId, attr)) |
14648 | 14873 | ||
14649 | - this.subscribeEvent(cmdId, this.dispatch(type)) | 14874 | + // this.subscribeEvent(cmdId, this.dispatch(type)) |
14650 | }) | 14875 | }) |
14651 | - if (tsSubCmds.length) this.sendMsg({ tsSubCmds }) | 14876 | + // if (tsSubCmds.length) this.sendMsg({ tsSubCmds }) |
14652 | } | 14877 | } |
14653 | 14878 | ||
14654 | /** | 14879 | /** |
@@ -14718,15 +14943,16 @@ class HandleDynamicEffect { | @@ -14718,15 +14943,16 @@ class HandleDynamicEffect { | ||
14718 | * @param message | 14943 | * @param message |
14719 | * @param attr | 14944 | * @param attr |
14720 | */ | 14945 | */ |
14721 | - rotate(message) { | ||
14722 | - const { subscriptionId, data } = message | ||
14723 | - const node = this.getNodeByCmdId(subscriptionId) | 14946 | + rotate(message, record) { |
14947 | + const { data } = message | ||
14948 | + const { id } = record | ||
14949 | + const node = this.getNodeByCmdId(id) | ||
14724 | const key = node.id + DispatchCenter.enumDynamicEffectType.ROTATE | 14950 | const key = node.id + DispatchCenter.enumDynamicEffectType.ROTATE |
14725 | if (!this.validatePriority(node.id)) { | 14951 | if (!this.validatePriority(node.id)) { |
14726 | this.delUpdateFn(key) | 14952 | this.delUpdateFn(key) |
14727 | return | 14953 | return |
14728 | } | 14954 | } |
14729 | - const { flag } = this.validate(subscriptionId, DispatchCenter.enumDynamicEffectType.ROTATE, data) | 14955 | + const { flag } = this.validate(record, DispatchCenter.enumDynamicEffectType.ROTATE, data) |
14730 | let deg = 0 | 14956 | let deg = 0 |
14731 | const updateFn = () => { | 14957 | const updateFn = () => { |
14732 | if (deg === 360) deg = 0 | 14958 | if (deg === 360) deg = 0 |
@@ -14750,11 +14976,12 @@ class HandleDynamicEffect { | @@ -14750,11 +14976,12 @@ class HandleDynamicEffect { | ||
14750 | * @param message | 14976 | * @param message |
14751 | * @param attr | 14977 | * @param attr |
14752 | */ | 14978 | */ |
14753 | - display(message) { | ||
14754 | - const { subscriptionId, data = {} } = message | ||
14755 | - const { flag, condition } = this.validate(subscriptionId, HandleDynamicEffect.enumActType.DISPLAY, data) | 14979 | + display(message, record) { |
14980 | + const { data = {} } = message | ||
14981 | + const { id } = record | ||
14982 | + const { flag, condition } = this.validate(record, HandleDynamicEffect.enumActType.DISPLAY, data) | ||
14756 | if (!flag) return | 14983 | if (!flag) return |
14757 | - const node = this.getNodeByCmdId(subscriptionId) | 14984 | + const node = this.getNodeByCmdId(id) |
14758 | let isShow = false | 14985 | let isShow = false |
14759 | if (condition.type === HandleDynamicEffect.enumDisplayType.SHOW) { | 14986 | if (condition.type === HandleDynamicEffect.enumDisplayType.SHOW) { |
14760 | isShow = true | 14987 | isShow = true |
@@ -14784,15 +15011,16 @@ class HandleDynamicEffect { | @@ -14784,15 +15011,16 @@ class HandleDynamicEffect { | ||
14784 | * @param message | 15011 | * @param message |
14785 | * @param attr | 15012 | * @param attr |
14786 | */ | 15013 | */ |
14787 | - flash(message) { | ||
14788 | - const { subscriptionId, data } = message | ||
14789 | - const node = this.getNodeByCmdId(subscriptionId) | 15014 | + flash(message, record) { |
15015 | + const { data } = message | ||
15016 | + const { id } = record | ||
15017 | + const node = this.getNodeByCmdId(id) | ||
14790 | const key = node.id + DispatchCenter.enumDynamicEffectType.FLASH | 15018 | const key = node.id + DispatchCenter.enumDynamicEffectType.FLASH |
14791 | - if (!this.validatePriority(node.id)) { | 15019 | + if (!this.validatePriority(id)) { |
14792 | this.delUpdateFn(key) | 15020 | this.delUpdateFn(key) |
14793 | return | 15021 | return |
14794 | } | 15022 | } |
14795 | - const { flag, condition } = this.validate(subscriptionId, HandleDynamicEffect.enumActType.FLASH, data) | 15023 | + const { flag } = this.validate(record, HandleDynamicEffect.enumActType.FLASH, data) |
14796 | let flashFlag = false | 15024 | let flashFlag = false |
14797 | const updateFn = () => { | 15025 | const updateFn = () => { |
14798 | node.setVisible(flashFlag) | 15026 | node.setVisible(flashFlag) |
@@ -14810,10 +15038,11 @@ class HandleDynamicEffect { | @@ -14810,10 +15038,11 @@ class HandleDynamicEffect { | ||
14810 | /** | 15038 | /** |
14811 | * @description 处理变量图片 | 15039 | * @description 处理变量图片 |
14812 | */ | 15040 | */ |
14813 | - varImage(message) { | ||
14814 | - const { subscriptionId, data } = message | ||
14815 | - const node = this.getNodeByCmdId(subscriptionId) | ||
14816 | - const { flag, condition } = this.validate(subscriptionId, HandleDynamicEffect.enumActType.IMAGE, data) | 15041 | + varImage(message, record) { |
15042 | + const { data } = message | ||
15043 | + const { id } = record | ||
15044 | + const node = this.getNodeByCmdId(id) | ||
15045 | + const { flag, condition } = this.validate(record, HandleDynamicEffect.enumActType.IMAGE, data) | ||
14817 | if (flag && node) { | 15046 | if (flag && node) { |
14818 | const { imagePath } = condition | 15047 | const { imagePath } = condition |
14819 | this.insertOnceUpdateFn( | 15048 | this.insertOnceUpdateFn( |
@@ -14822,7 +15051,7 @@ class HandleDynamicEffect { | @@ -14822,7 +15051,7 @@ class HandleDynamicEffect { | ||
14822 | node.setStyle(`image;image=${imagePath};imageAspect=0;`) | 15051 | node.setStyle(`image;image=${imagePath};imageAspect=0;`) |
14823 | }) | 15052 | }) |
14824 | } else if (!flag && node) { | 15053 | } else if (!flag && node) { |
14825 | - const { condition = [], attr } = this.getBindData(subscriptionId, HandleDynamicEffect.enumActType.IMAGE) | 15054 | + const { condition = [], attr } = record |
14826 | const flag = HandleDynamicEffect.enumVarImageConst.DEFAULT_IMAGE_FLAG | 15055 | const flag = HandleDynamicEffect.enumVarImageConst.DEFAULT_IMAGE_FLAG |
14827 | const defaultBindData = condition.find(item => item[flag]) | 15056 | const defaultBindData = condition.find(item => item[flag]) |
14828 | if (defaultBindData) { | 15057 | if (defaultBindData) { |
@@ -14837,11 +15066,12 @@ class HandleDynamicEffect { | @@ -14837,11 +15066,12 @@ class HandleDynamicEffect { | ||
14837 | } | 15066 | } |
14838 | } | 15067 | } |
14839 | 15068 | ||
14840 | - running(message) { | ||
14841 | - const { subscriptionId, data = {} } = message | ||
14842 | - const { flag, condition } = this.validate(subscriptionId, HandleDynamicEffect.enumActType.RUNNING, data) | 15069 | + running(message, record) { |
15070 | + const { id } = record | ||
15071 | + const { data = {} } = message | ||
15072 | + const { flag, condition } = this.validate(record, HandleDynamicEffect.enumActType.RUNNING, data) | ||
14843 | if (!flag) return | 15073 | if (!flag) return |
14844 | - const node = this.getNodeByCmdId(subscriptionId) | 15074 | + const node = this.getNodeByCmdId(id) |
14845 | let isRun = false | 15075 | let isRun = false |
14846 | if (condition.type === HandleDynamicEffect.enumRunningType.RUN) { | 15076 | if (condition.type === HandleDynamicEffect.enumRunningType.RUN) { |
14847 | isRun = true | 15077 | isRun = true |
@@ -14897,7 +15127,7 @@ class HandleDynamicEffect { | @@ -14897,7 +15127,7 @@ class HandleDynamicEffect { | ||
14897 | const { geometry = {} } = cell | 15127 | const { geometry = {} } = cell |
14898 | const { width, height } = geometry | 15128 | const { width, height } = geometry |
14899 | const idEl = getIdEl() | 15129 | const idEl = getIdEl() |
14900 | - graph.getModel().beginUpdate() | 15130 | + graph.getModel().beginUpdate() |
14901 | try { | 15131 | try { |
14902 | let type | 15132 | let type |
14903 | if (videoUrl.replace(reg, '') === 'm3u8') type = 'application/x-mpegURL' | 15133 | if (videoUrl.replace(reg, '') === 'm3u8') type = 'application/x-mpegURL' |
@@ -14939,13 +15169,13 @@ class HandleDynamicEffect { | @@ -14939,13 +15169,13 @@ class HandleDynamicEffect { | ||
14939 | 15169 | ||
14940 | /** | 15170 | /** |
14941 | * @description 验证是否满足条件列表中的任意一条 | 15171 | * @description 验证是否满足条件列表中的任意一条 |
14942 | - * @param subscriptionId | 15172 | + * @param record |
14943 | * @param type | 15173 | * @param type |
14944 | * @param value | 15174 | * @param value |
14945 | * @return {{flag: boolean, condition: {}}} | 15175 | * @return {{flag: boolean, condition: {}}} |
14946 | */ | 15176 | */ |
14947 | - validate(subscriptionId, type, value) { | ||
14948 | - const { condition = [], attr } = this.getBindData(subscriptionId, type) | 15177 | + validate(record, type, value) { |
15178 | + const { condition = [], attr } = record | ||
14949 | const result = { condition: {}, flag: false } | 15179 | const result = { condition: {}, flag: false } |
14950 | for (let i = 0; i < condition.length; i++) { | 15180 | for (let i = 0; i < condition.length; i++) { |
14951 | const { min, max } = condition[i] | 15181 | const { min, max } = condition[i] |
@@ -14996,8 +15226,7 @@ class HandleDynamicEffect { | @@ -14996,8 +15226,7 @@ class HandleDynamicEffect { | ||
14996 | * @param subscriptionId | 15226 | * @param subscriptionId |
14997 | * @return {*} | 15227 | * @return {*} |
14998 | */ | 15228 | */ |
14999 | - getNodeByCmdId(subscriptionId) { | ||
15000 | - const nodeId = this.getNodeIdByCmdId(subscriptionId) | 15229 | + getNodeByCmdId(nodeId) { |
15001 | return this.contentAllCell.find(item => item.id === nodeId) | 15230 | return this.contentAllCell.find(item => item.id === nodeId) |
15002 | } | 15231 | } |
15003 | 15232 |