Commit 0770fed53b58e356981c4b816bc35b36bcd06f62
1 parent
edad816c
feat: add dashboard chart component
Showing
5 changed files
with
472 additions
and
212 deletions
1.3 KB
| @@ -590,11 +590,7 @@ | @@ -590,11 +590,7 @@ | ||
| 590 | </div> | 590 | </div> |
| 591 | <script> | 591 | <script> |
| 592 | var timeInterval = setInterval(() => { | 592 | var timeInterval = setInterval(() => { |
| 593 | - try { | ||
| 594 | - if (!echarts) return | ||
| 595 | - } catch (error) { | ||
| 596 | - | ||
| 597 | - } | 593 | + if (!echarts) return |
| 598 | clearInterval(timeInterval) | 594 | clearInterval(timeInterval) |
| 599 | timeInterval = null | 595 | timeInterval = null |
| 600 | var chartDom | 596 | var chartDom |
| @@ -225,6 +225,11 @@ | @@ -225,6 +225,11 @@ | ||
| 225 | LINE_CHART: 'lineChart', | 225 | LINE_CHART: 'lineChart', |
| 226 | 226 | ||
| 227 | /** | 227 | /** |
| 228 | + * @description 仪表盘 类型 | ||
| 229 | + */ | ||
| 230 | + DASHBOARD_CHART: 'dashboardChart', | ||
| 231 | + | ||
| 232 | + /** | ||
| 228 | * @description 柱状图类型 | 233 | * @description 柱状图类型 |
| 229 | */ | 234 | */ |
| 230 | BAR_CHART: 'barChart', | 235 | BAR_CHART: 'barChart', |
| @@ -264,7 +269,7 @@ | @@ -264,7 +269,7 @@ | ||
| 264 | SWITCH_STATE_ENABLED: 'enabled', | 269 | SWITCH_STATE_ENABLED: 'enabled', |
| 265 | SWITCH_STATE_CLOSE: 'close', | 270 | SWITCH_STATE_CLOSE: 'close', |
| 266 | SWITCH_STATE_NONE: 'none', | 271 | SWITCH_STATE_NONE: 'none', |
| 267 | - } | 272 | + } |
| 268 | 273 | ||
| 269 | /** | 274 | /** |
| 270 | * @description 组件权限map | 275 | * @description 组件权限map |
| @@ -311,6 +316,11 @@ | @@ -311,6 +316,11 @@ | ||
| 311 | BAR_CHART_EXPAND: 'barChartExpandDataSource', | 316 | BAR_CHART_EXPAND: 'barChartExpandDataSource', |
| 312 | 317 | ||
| 313 | /** | 318 | /** |
| 319 | + * @description 仪表图 | ||
| 320 | + */ | ||
| 321 | + DASHBOARD_CHART_EXPAND: 'dashboradChartExpand', | ||
| 322 | + | ||
| 323 | + /** | ||
| 314 | * @descripton 交互 | 324 | * @descripton 交互 |
| 315 | */ | 325 | */ |
| 316 | INTERACTION: 'interaction', | 326 | INTERACTION: 'interaction', |
| @@ -700,8 +710,8 @@ | @@ -700,8 +710,8 @@ | ||
| 700 | //更多图形,显示出来的的标题跟id,同时包括图片 | 710 | //更多图形,显示出来的的标题跟id,同时包括图片 |
| 701 | 711 | ||
| 702 | // TODO thingsKit 设置数据绑定展示面板 | 712 | // TODO thingsKit 设置数据绑定展示面板 |
| 703 | - const { LINE_CHART_EXPAND, BAR_CHART_EXPAND, DYNAMIC_EFFECT, DATA_SOURCE, VAR_IMAGE, INTERACTION, VIDEO: VIDEO_PANEL, SWITCH_STATE_SETTING, ONLY_SINGLE_EVENT, RUNNING_AND_STOP } = this.enumPermissionPanel | ||
| 704 | - const { LINE, LINE_CHART, REAL_TIME, TITLE, VARIABLE, DEFAULT, BAR_CHART, VIDEO, SWITCH, PARAMS_SETTING_BUTTON } = this.enumComponentType | 713 | + const { LINE_CHART_EXPAND, BAR_CHART_EXPAND, DASHBOARD_CHART_EXPAND, DYNAMIC_EFFECT, DATA_SOURCE, VAR_IMAGE, INTERACTION, VIDEO: VIDEO_PANEL, SWITCH_STATE_SETTING, ONLY_SINGLE_EVENT, RUNNING_AND_STOP } = this.enumPermissionPanel |
| 714 | + const { LINE, LINE_CHART, REAL_TIME, TITLE, VARIABLE, DEFAULT, BAR_CHART, VIDEO, SWITCH, PARAMS_SETTING_BUTTON, DASHBOARD_CHART } = this.enumComponentType | ||
| 705 | this.setComponentPermission(LINE, [RUNNING_AND_STOP, DYNAMIC_EFFECT]) | 715 | this.setComponentPermission(LINE, [RUNNING_AND_STOP, DYNAMIC_EFFECT]) |
| 706 | this.setComponentPermission(DEFAULT, [DYNAMIC_EFFECT]) | 716 | this.setComponentPermission(DEFAULT, [DYNAMIC_EFFECT]) |
| 707 | this.setComponentPermission(REAL_TIME, [DYNAMIC_EFFECT]) | 717 | this.setComponentPermission(REAL_TIME, [DYNAMIC_EFFECT]) |
| @@ -710,6 +720,7 @@ | @@ -710,6 +720,7 @@ | ||
| 710 | this.setComponentPermission(VARIABLE, [DATA_SOURCE, INTERACTION, DYNAMIC_EFFECT]) | 720 | this.setComponentPermission(VARIABLE, [DATA_SOURCE, INTERACTION, DYNAMIC_EFFECT]) |
| 711 | this.setComponentPermission(BAR_CHART, [DATA_SOURCE, BAR_CHART_EXPAND]) | 721 | this.setComponentPermission(BAR_CHART, [DATA_SOURCE, BAR_CHART_EXPAND]) |
| 712 | this.setComponentPermission(LINE_CHART, [DATA_SOURCE, LINE_CHART_EXPAND]) | 722 | this.setComponentPermission(LINE_CHART, [DATA_SOURCE, LINE_CHART_EXPAND]) |
| 723 | + this.setComponentPermission(DASHBOARD_CHART, [DATA_SOURCE, DASHBOARD_CHART_EXPAND]) | ||
| 713 | this.setComponentPermission(VIDEO, [VIDEO_PANEL]) | 724 | this.setComponentPermission(VIDEO, [VIDEO_PANEL]) |
| 714 | this.setComponentPermission(SWITCH, [DATA_SOURCE, SWITCH_STATE_SETTING]) | 725 | this.setComponentPermission(SWITCH, [DATA_SOURCE, SWITCH_STATE_SETTING]) |
| 715 | this.setComponentPermission(PARAMS_SETTING_BUTTON, [DATA_SOURCE, ONLY_SINGLE_EVENT]) | 726 | this.setComponentPermission(PARAMS_SETTING_BUTTON, [DATA_SOURCE, ONLY_SINGLE_EVENT]) |
| @@ -70,6 +70,11 @@ | @@ -70,6 +70,11 @@ | ||
| 70 | const cell = self.generatorCell(id, enumConst.CHART_IMG_PLACEHOLDER_SIZE, enumConst.CHART_IMG_PLACEHOLDER_SIZE, componentType.BAR_CHART, `${Proxy_Prefix}/images/thingskit/bar-chart.png`) | 70 | const cell = self.generatorCell(id, enumConst.CHART_IMG_PLACEHOLDER_SIZE, enumConst.CHART_IMG_PLACEHOLDER_SIZE, componentType.BAR_CHART, `${Proxy_Prefix}/images/thingskit/bar-chart.png`) |
| 71 | return this.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, '柱状图'); | 71 | return this.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, '柱状图'); |
| 72 | })), | 72 | })), |
| 73 | + this.addEntry('dashboard chart', mxUtils.bind(this, function () { | ||
| 74 | + const id = self.generatorChartsId() | ||
| 75 | + const cell = self.generatorCell(id, enumConst.CHART_IMG_PLACEHOLDER_SIZE, enumConst.CHART_IMG_PLACEHOLDER_SIZE, componentType.DASHBOARD_CHART, `${Proxy_Prefix}/images/thingskit/dashboard-chart.png`) | ||
| 76 | + return this.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, '仪表盘'); | ||
| 77 | + })) | ||
| 73 | ]; | 78 | ]; |
| 74 | 79 | ||
| 75 | this.addPaletteFunctions('charts', '图表', false, fns); | 80 | this.addPaletteFunctions('charts', '图表', false, fns); |
| @@ -89,42 +94,13 @@ | @@ -89,42 +94,13 @@ | ||
| 89 | */ | 94 | */ |
| 90 | Sidebar.prototype.chartOptionMapping = { | 95 | Sidebar.prototype.chartOptionMapping = { |
| 91 | [Sidebar.prototype.enumComponentType.LINE_CHART]: function () { | 96 | [Sidebar.prototype.enumComponentType.LINE_CHART]: function () { |
| 92 | - return { | ||
| 93 | - xAxis: { | ||
| 94 | - type: 'category', | ||
| 95 | - data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], | ||
| 96 | - }, | ||
| 97 | - yAxis: { | ||
| 98 | - type: 'value', | ||
| 99 | - }, | ||
| 100 | - series: [ | ||
| 101 | - { | ||
| 102 | - data: [150, 230, 224, 218, 135, 147, 260], | ||
| 103 | - type: 'line', | ||
| 104 | - }, | ||
| 105 | - ], | ||
| 106 | - } | 97 | + return getLineChartDefaultOption() |
| 107 | }, | 98 | }, |
| 108 | [Sidebar.prototype.enumComponentType.BAR_CHART]: function () { | 99 | [Sidebar.prototype.enumComponentType.BAR_CHART]: function () { |
| 109 | - return { | ||
| 110 | - xAxis: { | ||
| 111 | - type: 'category', | ||
| 112 | - data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], | ||
| 113 | - }, | ||
| 114 | - yAxis: { | ||
| 115 | - type: 'value', | ||
| 116 | - }, | ||
| 117 | - series: [ | ||
| 118 | - { | ||
| 119 | - data: [120, 200, 150, 80, 70, 110, 130], | ||
| 120 | - type: 'bar', | ||
| 121 | - showBackground: true, | ||
| 122 | - backgroundStyle: { | ||
| 123 | - color: 'rgba(180, 180, 180, 0.2)', | ||
| 124 | - }, | ||
| 125 | - }, | ||
| 126 | - ], | ||
| 127 | - }; | 100 | + return getBarChartDefaultOption(); |
| 101 | + }, | ||
| 102 | + [Sidebar.prototype.enumComponentType.DASHBOARD_CHART]: function () { | ||
| 103 | + return getDashboardDefaultOption() | ||
| 128 | }, | 104 | }, |
| 129 | } | 105 | } |
| 130 | 106 | ||
| @@ -177,10 +153,11 @@ | @@ -177,10 +153,11 @@ | ||
| 177 | * @returns {boolean} | 153 | * @returns {boolean} |
| 178 | */ | 154 | */ |
| 179 | Sidebar.prototype.isChartCell = function (cell) { | 155 | Sidebar.prototype.isChartCell = function (cell) { |
| 180 | - const basitAttr = this.enumCellBasicAttribute | 156 | + const basicAttr = this.enumCellBasicAttribute |
| 181 | const componentType = this.enumComponentType | 157 | const componentType = this.enumComponentType |
| 182 | - const currentType = cell.getAttribute(basitAttr.COMPONENT_TYPE) | ||
| 183 | - return !!(currentType && (currentType === componentType.LINE_CHART || currentType === componentType.BAR_CHART)) | 158 | + const { LINE_CHART, BAR_CHART, DASHBOARD_CHART } = componentType |
| 159 | + const currentType = cell.getAttribute(basicAttr.COMPONENT_TYPE) | ||
| 160 | + return !!(currentType && ([LINE_CHART, BAR_CHART, DASHBOARD_CHART].includes(currentType))) | ||
| 184 | } | 161 | } |
| 185 | 162 | ||
| 186 | /** | 163 | /** |
| @@ -389,5 +366,157 @@ | @@ -389,5 +366,157 @@ | ||
| 389 | // Sidebar.prototype.initChartInstance(graph) | 366 | // Sidebar.prototype.initChartInstance(graph) |
| 390 | // } | 367 | // } |
| 391 | // } | 368 | // } |
| 369 | + function getLineChartDefaultOption() { | ||
| 370 | + return { | ||
| 371 | + xAxis: { | ||
| 372 | + type: 'category', | ||
| 373 | + data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], | ||
| 374 | + }, | ||
| 375 | + yAxis: { | ||
| 376 | + type: 'value', | ||
| 377 | + }, | ||
| 378 | + series: [ | ||
| 379 | + { | ||
| 380 | + data: [150, 230, 224, 218, 135, 147, 260], | ||
| 381 | + type: 'line', | ||
| 382 | + }, | ||
| 383 | + ], | ||
| 384 | + } | ||
| 385 | + } | ||
| 386 | + | ||
| 387 | + function getBarChartDefaultOption() { | ||
| 388 | + return { | ||
| 389 | + xAxis: { | ||
| 390 | + type: 'category', | ||
| 391 | + data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], | ||
| 392 | + }, | ||
| 393 | + yAxis: { | ||
| 394 | + type: 'value', | ||
| 395 | + }, | ||
| 396 | + series: [ | ||
| 397 | + { | ||
| 398 | + data: [120, 200, 150, 80, 70, 110, 130], | ||
| 399 | + type: 'bar', | ||
| 400 | + showBackground: true, | ||
| 401 | + backgroundStyle: { | ||
| 402 | + color: 'rgba(180, 180, 180, 0.2)', | ||
| 403 | + }, | ||
| 404 | + }, | ||
| 405 | + ], | ||
| 406 | + } | ||
| 407 | + } | ||
| 408 | + | ||
| 409 | + function getDashboardDefaultOption() { | ||
| 410 | + return { | ||
| 411 | + series: [ | ||
| 412 | + { | ||
| 413 | + type: 'gauge', | ||
| 414 | + center: ['50%', '60%'], | ||
| 415 | + startAngle: 200, | ||
| 416 | + endAngle: -20, | ||
| 417 | + min: 0, | ||
| 418 | + max: 60, | ||
| 419 | + splitNumber: 12, | ||
| 420 | + itemStyle: { | ||
| 421 | + color: '#FFAB91' | ||
| 422 | + }, | ||
| 423 | + progress: { | ||
| 424 | + show: true, | ||
| 425 | + width: 30 | ||
| 426 | + }, | ||
| 427 | + pointer: { | ||
| 428 | + show: false | ||
| 429 | + }, | ||
| 430 | + axisLine: { | ||
| 431 | + lineStyle: { | ||
| 432 | + width: 30 | ||
| 433 | + } | ||
| 434 | + }, | ||
| 435 | + axisTick: { | ||
| 436 | + distance: -45, | ||
| 437 | + splitNumber: 5, | ||
| 438 | + lineStyle: { | ||
| 439 | + width: 2, | ||
| 440 | + color: '#999' | ||
| 441 | + } | ||
| 442 | + }, | ||
| 443 | + splitLine: { | ||
| 444 | + distance: -52, | ||
| 445 | + length: 14, | ||
| 446 | + lineStyle: { | ||
| 447 | + width: 3, | ||
| 448 | + color: '#999' | ||
| 449 | + } | ||
| 450 | + }, | ||
| 451 | + axisLabel: { | ||
| 452 | + distance: -20, | ||
| 453 | + color: '#999', | ||
| 454 | + fontSize: 20 | ||
| 455 | + }, | ||
| 456 | + anchor: { | ||
| 457 | + show: false | ||
| 458 | + }, | ||
| 459 | + title: { | ||
| 460 | + show: false | ||
| 461 | + }, | ||
| 462 | + detail: { | ||
| 463 | + valueAnimation: true, | ||
| 464 | + width: '60%', | ||
| 465 | + lineHeight: 40, | ||
| 466 | + borderRadius: 8, | ||
| 467 | + offsetCenter: [0, '-15%'], | ||
| 468 | + fontSize: 25, | ||
| 469 | + fontWeight: 'bolder', | ||
| 470 | + formatter: '{value} °C', | ||
| 471 | + color: 'auto' | ||
| 472 | + }, | ||
| 473 | + data: [ | ||
| 474 | + { | ||
| 475 | + value: 20 | ||
| 476 | + } | ||
| 477 | + ] | ||
| 478 | + }, | ||
| 479 | + { | ||
| 480 | + type: 'gauge', | ||
| 481 | + center: ['50%', '60%'], | ||
| 482 | + startAngle: 200, | ||
| 483 | + endAngle: -20, | ||
| 484 | + min: 0, | ||
| 485 | + max: 60, | ||
| 486 | + itemStyle: { | ||
| 487 | + color: '#FD7347' | ||
| 488 | + }, | ||
| 489 | + progress: { | ||
| 490 | + show: true, | ||
| 491 | + width: 8 | ||
| 492 | + }, | ||
| 493 | + pointer: { | ||
| 494 | + show: false | ||
| 495 | + }, | ||
| 496 | + axisLine: { | ||
| 497 | + show: false | ||
| 498 | + }, | ||
| 499 | + axisTick: { | ||
| 500 | + show: false | ||
| 501 | + }, | ||
| 502 | + splitLine: { | ||
| 503 | + show: false | ||
| 504 | + }, | ||
| 505 | + axisLabel: { | ||
| 506 | + show: false | ||
| 507 | + }, | ||
| 508 | + detail: { | ||
| 509 | + show: false | ||
| 510 | + }, | ||
| 511 | + data: [ | ||
| 512 | + { | ||
| 513 | + value: 20 | ||
| 514 | + } | ||
| 515 | + ] | ||
| 516 | + } | ||
| 517 | + ] | ||
| 518 | + } | ||
| 519 | + } | ||
| 520 | + | ||
| 392 | })(); | 521 | })(); |
| 393 | 522 |
| @@ -5123,12 +5123,13 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5123,12 +5123,13 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5123 | async function initNode() { | 5123 | async function initNode() { |
| 5124 | const basicAttr = sidebarInstance.enumCellBasicAttribute | 5124 | const basicAttr = sidebarInstance.enumCellBasicAttribute |
| 5125 | const permissionKey = sidebarInstance.enumPermissionPanel | 5125 | const permissionKey = sidebarInstance.enumPermissionPanel |
| 5126 | - | 5126 | + const { LINE_CHART, BAR_CHART, DASHBOARD_CHART } = Sidebar.prototype.enumComponentType |
| 5127 | 5127 | ||
| 5128 | const renderMapping = { | 5128 | const renderMapping = { |
| 5129 | [permissionKey.DATA_SOURCE]: createDataSourcePanel, | 5129 | [permissionKey.DATA_SOURCE]: createDataSourcePanel, |
| 5130 | - [permissionKey.LINE_CHART_EXPAND]: createLineChartPanel, | ||
| 5131 | - [permissionKey.BAR_CHART_EXPAND]: createBarChartPanel, | 5130 | + [permissionKey.LINE_CHART_EXPAND]: createChartBindPanel.bind(this, LINE_CHART), |
| 5131 | + [permissionKey.BAR_CHART_EXPAND]: createChartBindPanel.bind(this, BAR_CHART), | ||
| 5132 | + [permissionKey.DASHBOARD_CHART_EXPAND]: createChartBindPanel.bind(this, DASHBOARD_CHART), | ||
| 5132 | [permissionKey.INTERACTION]: createInteractionPanel, | 5133 | [permissionKey.INTERACTION]: createInteractionPanel, |
| 5133 | [permissionKey.DYNAMIC_EFFECT]: createDynamicEffectPanel, | 5134 | [permissionKey.DYNAMIC_EFFECT]: createDynamicEffectPanel, |
| 5134 | [permissionKey.VAR_IMAGE]: createVarImagePanel, | 5135 | [permissionKey.VAR_IMAGE]: createVarImagePanel, |
| @@ -5259,13 +5260,20 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5259,13 +5260,20 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5259 | } | 5260 | } |
| 5260 | 5261 | ||
| 5261 | function createLineChartPanel() { | 5262 | function createLineChartPanel() { |
| 5263 | + const { LINE_CHART } = Sidebar.prototype.enumComponentType | ||
| 5262 | createChartBindPanel(true) | 5264 | createChartBindPanel(true) |
| 5263 | } | 5265 | } |
| 5264 | 5266 | ||
| 5265 | function createBarChartPanel() { | 5267 | function createBarChartPanel() { |
| 5268 | + const { LINE_CHART } = Sidebar.prototype.enumComponentType | ||
| 5269 | + | ||
| 5266 | createChartBindPanel(false) | 5270 | createChartBindPanel(false) |
| 5267 | } | 5271 | } |
| 5268 | 5272 | ||
| 5273 | + function createDashboardPanel() { | ||
| 5274 | + const { LINE_CHART } = Sidebar.prototype.enumComponentType | ||
| 5275 | + | ||
| 5276 | + } | ||
| 5269 | /** | 5277 | /** |
| 5270 | * @description 创建视频绑定面板 | 5278 | * @description 创建视频绑定面板 |
| 5271 | */ | 5279 | */ |
| @@ -5427,7 +5435,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5427,7 +5435,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5427 | * @description 是否是折线图 | 5435 | * @description 是否是折线图 |
| 5428 | * @param {boolean} isLineChart | 5436 | * @param {boolean} isLineChart |
| 5429 | */ | 5437 | */ |
| 5430 | - function createChartBindPanel(isLineChart) { | 5438 | + function createChartBindPanel(chartType) { |
| 5431 | const fragment = document.createDocumentFragment() | 5439 | const fragment = document.createDocumentFragment() |
| 5432 | const chartBindContainer = document.createElement('div') | 5440 | const chartBindContainer = document.createElement('div') |
| 5433 | chartBindContainer.setAttribute('class', 'chart-panel__style') | 5441 | chartBindContainer.setAttribute('class', 'chart-panel__style') |
| @@ -5705,14 +5713,27 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5705,14 +5713,27 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5705 | { id: 'NONE', name: '空' }, | 5713 | { id: 'NONE', name: '空' }, |
| 5706 | ] | 5714 | ] |
| 5707 | 5715 | ||
| 5716 | + function generateDataType() { | ||
| 5717 | + const { LINE_CHART, BAR_CHART, DASHBOARD_CHART } = Sidebar.prototype.enumComponentType | ||
| 5718 | + const realOption = (checked) => `<input type="radio" name="${enumConst.DATA_TYPE}" value="${enumConst.REAL}" title="实时" ${checked ? 'checked' : ''}>` | ||
| 5719 | + const historyOption = (checked) => `<input type="radio" name="${enumConst.DATA_TYPE}" value="${enumConst.HISTORY}" title="历史" ${checked ? 'checked' : ''}>` | ||
| 5720 | + | ||
| 5721 | + if (chartType === LINE_CHART) { | ||
| 5722 | + return realOption() + historyOption(true) | ||
| 5723 | + } else if (chartType === BAR_CHART) { | ||
| 5724 | + return historyOption(true) | ||
| 5725 | + } else if (chartType === DASHBOARD_CHART) { | ||
| 5726 | + return realOption(true) | ||
| 5727 | + } | ||
| 5728 | + return realOption() + historyOption(true) | ||
| 5729 | + } | ||
| 5730 | + | ||
| 5708 | function createSwitchBindTypeRadio() { | 5731 | function createSwitchBindTypeRadio() { |
| 5709 | - const realOption = `<input type="radio" name="${enumConst.DATA_TYPE}" value="${enumConst.REAL}" title="实时">` | ||
| 5710 | return ` | 5732 | return ` |
| 5711 | <div class="layui-form-item"> | 5733 | <div class="layui-form-item"> |
| 5712 | <label class="layui-form-label">数据类型</label> | 5734 | <label class="layui-form-label">数据类型</label> |
| 5713 | <div class="layui-input-block"> | 5735 | <div class="layui-input-block"> |
| 5714 | - ${isLineChart ? realOption : ''} | ||
| 5715 | - <input type="radio" name="${enumConst.DATA_TYPE}" value="${enumConst.HISTORY}" title="历史" checked> | 5736 | + ${generateDataType()} |
| 5716 | </div> | 5737 | </div> |
| 5717 | </div>` | 5738 | </div>` |
| 5718 | } | 5739 | } |
| @@ -5882,6 +5903,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | @@ -5882,6 +5903,7 @@ DataFormatPanel.prototype.addDataFont = function (container) { | ||
| 5882 | [componentType.REAL_TIME]: getSubmitValue, | 5903 | [componentType.REAL_TIME]: getSubmitValue, |
| 5883 | [componentType.LINE_CHART]: getSubmitValue, | 5904 | [componentType.LINE_CHART]: getSubmitValue, |
| 5884 | [componentType.BAR_CHART]: getSubmitValue, | 5905 | [componentType.BAR_CHART]: getSubmitValue, |
| 5906 | + [componentType.DASHBOARD_CHART]: getSubmitValue, | ||
| 5885 | [componentType.DEFAULT]: getSubmitValue, | 5907 | [componentType.DEFAULT]: getSubmitValue, |
| 5886 | [componentType.VIDEO]: getVideoSubmitValue, | 5908 | [componentType.VIDEO]: getVideoSubmitValue, |
| 5887 | [componentType.SWITCH]: getSwitchSubmitValue, | 5909 | [componentType.SWITCH]: getSwitchSubmitValue, |
| @@ -13462,139 +13484,21 @@ class HandleDataSource { | @@ -13462,139 +13484,21 @@ class HandleDataSource { | ||
| 13462 | const instance = chartInstanceMap.get(chartInstanceId) | 13484 | const instance = chartInstanceMap.get(chartInstanceId) |
| 13463 | const { attr = [[]] } = this.getBindData(subscriptionId) | 13485 | const { attr = [[]] } = this.getBindData(subscriptionId) |
| 13464 | const realDataList = data[attr] || [] | 13486 | const realDataList = data[attr] || [] |
| 13465 | - const showNumberOf = 4 | ||
| 13466 | - const action = agg === 'NONE' ? 'unshift' : 'push' | ||
| 13467 | 13487 | ||
| 13468 | - // const chartWidth = node.getAttribute('width') | ||
| 13469 | - // const chartHeight = node.getAttribute('height') | 13488 | + const action = agg === 'NONE' ? 'unshift' : 'push' |
| 13470 | 13489 | ||
| 13471 | // chart insstance 是否已经接受过一次消息推送 | 13490 | // chart insstance 是否已经接受过一次消息推送 |
| 13472 | const isActive = instance.isActive | 13491 | const isActive = instance.isActive |
| 13473 | if (!isActive) { | 13492 | if (!isActive) { |
| 13474 | instance.isActive = true | 13493 | instance.isActive = true |
| 13475 | - const xAxisData = [] | ||
| 13476 | - const seriesValue = [] | ||
| 13477 | - const chartOption = { | ||
| 13478 | - title: { | ||
| 13479 | - subtext: realDataList.length ? '' : '暂无数据', | ||
| 13480 | - x: 'center', | ||
| 13481 | - y: 'center', | ||
| 13482 | - itemGap: -20, | ||
| 13483 | - subtextStyle: { | ||
| 13484 | - fontSize: 16 | ||
| 13485 | - } | ||
| 13486 | - }, | ||
| 13487 | - tooltip: { | ||
| 13488 | - trigger: 'axis', | ||
| 13489 | - axisPointer: { | ||
| 13490 | - type: 'shadow' | ||
| 13491 | - } | ||
| 13492 | - }, | ||
| 13493 | - grid: { | ||
| 13494 | - left: '3%', | ||
| 13495 | - right: '3%', | ||
| 13496 | - bottom: '3%', | ||
| 13497 | - containLabel: true, | ||
| 13498 | - }, | ||
| 13499 | - xAxis: { | ||
| 13500 | - type: 'category', | ||
| 13501 | - data: xAxisData, | ||
| 13502 | - boundaryGap: true, | ||
| 13503 | - axisLabel: { | ||
| 13504 | - rotate: 70 | ||
| 13505 | - }, | ||
| 13506 | - axisPointer: { | ||
| 13507 | - label: { | ||
| 13508 | - formatter() { | ||
| 13509 | - return attr | ||
| 13510 | - } | ||
| 13511 | - } | ||
| 13512 | - } | ||
| 13513 | - }, | ||
| 13514 | - yAxis: { | ||
| 13515 | - type: 'value' | ||
| 13516 | - }, | ||
| 13517 | - series: [ | ||
| 13518 | - { | ||
| 13519 | - data: seriesValue, | ||
| 13520 | - type: chartInstanceType.includes('bar') ? 'bar' : 'line' | ||
| 13521 | - } | ||
| 13522 | - ], | ||
| 13523 | - dataZoom: [ | ||
| 13524 | - { | ||
| 13525 | - show: true, | ||
| 13526 | - type: 'inside', | ||
| 13527 | - // endValue: showNumberOf | ||
| 13528 | - } | ||
| 13529 | - ] | ||
| 13530 | - } | ||
| 13531 | - | ||
| 13532 | - // for (let i = realDataList.length - 1; i >= 0; i--) { | ||
| 13533 | - // const [timespan, value] = realDataList[i] | ||
| 13534 | - // xAxisData.push(new Date(Number(timespan)).toLocaleTimeString()) | ||
| 13535 | - // seriesValue.push(Number(value)) | ||
| 13536 | - // } | ||
| 13537 | - realDataList.forEach(item => { | ||
| 13538 | - const [timespan, value] = item | ||
| 13539 | - xAxisData[action](new Date(Number(timespan)).toLocaleTimeString()) | ||
| 13540 | - seriesValue[action](Number(value)) | ||
| 13541 | - }) | ||
| 13542 | - | 13494 | + const chartOption = this.getChartComponentOption(chartInstanceType, { chartType: chartInstanceType, attr, dataList: realDataList, action }) |
| 13543 | instance.setOption(chartOption) | 13495 | instance.setOption(chartOption) |
| 13544 | 13496 | ||
| 13545 | } else { | 13497 | } else { |
| 13546 | const oldOptions = instance.getOption() | 13498 | const oldOptions = instance.getOption() |
| 13547 | - const xAxisData = oldOptions.xAxis[0].data || [] | ||
| 13548 | - const seriesValue = oldOptions.series[0].data || [] | ||
| 13549 | - const oldEndValue = Number(oldOptions.dataZoom[0].endValue) || 0 | ||
| 13550 | - const oldStartValue = Number(oldOptions.dataZoom[0].startValue) || 0 | ||
| 13551 | - | ||
| 13552 | - for (let i = realDataList.length - 1; i >= 0; i--) { | ||
| 13553 | - const [timespan, value] = realDataList[i] | ||
| 13554 | - xAxisData.push(new Date(Number(timespan)).toLocaleTimeString()) | ||
| 13555 | - seriesValue.push(Number(value)) | ||
| 13556 | - } | ||
| 13557 | - | ||
| 13558 | - if (Number(oldOptions.dataZoom[0].endValue) === seriesValue.length - 1) { | ||
| 13559 | - oldOptions.dataZoom[0].endValue = showNumberOf | ||
| 13560 | - oldOptions.dataZoom[0].startValue = 0 | ||
| 13561 | - } else { | ||
| 13562 | - oldOptions.dataZoom[0].endValue = oldOptions.dataZoom[0].endValue + 1 | ||
| 13563 | - oldOptions.dataZoom[0].startValue = oldOptions.dataZoom[0].startValue + 1 | ||
| 13564 | - } | ||
| 13565 | - | 13499 | + const options = this.getRealTimeUpdateChartOption(chartInstanceType, { oldOptions, dataList: realDataList }) |
| 13566 | if (!instance) clearInterval(interval) | 13500 | if (!instance) clearInterval(interval) |
| 13567 | - instance && instance.setOption({ | ||
| 13568 | - title: { | ||
| 13569 | - subtext: '' | ||
| 13570 | - }, | ||
| 13571 | - xAxis: { | ||
| 13572 | - data: xAxisData | ||
| 13573 | - }, | ||
| 13574 | - series: [ | ||
| 13575 | - { | ||
| 13576 | - data: seriesValue | ||
| 13577 | - } | ||
| 13578 | - ], | ||
| 13579 | - dataZoom: [ | ||
| 13580 | - { | ||
| 13581 | - show: true, | ||
| 13582 | - type: 'inside', | ||
| 13583 | - } | ||
| 13584 | - // { | ||
| 13585 | - // startValue: seriesValue.length - 1 > showNumberOf | ||
| 13586 | - // ? oldStartValue === seriesValue.length - 1 | ||
| 13587 | - // ? 0 | ||
| 13588 | - // : oldStartValue + 1 | ||
| 13589 | - // : 0, | ||
| 13590 | - // endValue: seriesValue.length - 1 > showNumberOf | ||
| 13591 | - // ? oldEndValue === seriesValue.length - 1 | ||
| 13592 | - // ? showNumberOf | ||
| 13593 | - // : oldEndValue + 1 | ||
| 13594 | - // : showNumberOf | ||
| 13595 | - // } | ||
| 13596 | - ] | ||
| 13597 | - }) | 13501 | + instance && instance.setOption(options) |
| 13598 | } | 13502 | } |
| 13599 | } | 13503 | } |
| 13600 | 13504 | ||
| @@ -13614,13 +13518,93 @@ class HandleDataSource { | @@ -13614,13 +13518,93 @@ class HandleDataSource { | ||
| 13614 | const historyDataList = data[attr] || [] | 13518 | const historyDataList = data[attr] || [] |
| 13615 | const showNumberOf = 4 | 13519 | const showNumberOf = 4 |
| 13616 | const action = agg === 'NONE' ? 'unshift' : 'push' | 13520 | const action = agg === 'NONE' ? 'unshift' : 'push' |
| 13521 | + const chartType = chartInstanceType.includes('bar') ? 'bar' : chartInstanceType.includes('line') ? 'line' : chartInstanceType.includes('dashboard') ? '' : '' | ||
| 13617 | 13522 | ||
| 13523 | + const chartOption = this.getChartComponentOption(chartInstanceType, { dataList: historyDataList, attr, chartType: chartInstanceType, action }) | ||
| 13524 | + | ||
| 13525 | + let interval | ||
| 13526 | + // TODO 清除定时器 | ||
| 13527 | + function autoMove() { | ||
| 13528 | + if (seriesValue.length <= 5) return | ||
| 13529 | + interval = setInterval(() => { | ||
| 13530 | + if (Number(chartOption.dataZoom[0].endValue) === seriesValue.length - 1) { | ||
| 13531 | + chartOption.dataZoom[0].endValue = showNumberOf | ||
| 13532 | + chartOption.dataZoom[0].startValue = 0 | ||
| 13533 | + } else { | ||
| 13534 | + chartOption.dataZoom[0].endValue = chartOption.dataZoom[0].endValue + 1 | ||
| 13535 | + chartOption.dataZoom[0].startValue = chartOption.dataZoom[0].startValue + 1 | ||
| 13536 | + } | ||
| 13537 | + if (!chartInstanceMap.has(chartInstanceId)) { | ||
| 13538 | + clearInterval(interval) | ||
| 13539 | + return | ||
| 13540 | + } | ||
| 13541 | + instance && instance.setOption(chartOption) | ||
| 13542 | + | ||
| 13543 | + }, 2000); | ||
| 13544 | + } | ||
| 13545 | + | ||
| 13546 | + function stop() { | ||
| 13547 | + clearInterval(interval) | ||
| 13548 | + } | ||
| 13549 | + | ||
| 13550 | + function goMove() { | ||
| 13551 | + autoMove() | ||
| 13552 | + } | ||
| 13553 | + | ||
| 13554 | + instance.setOption(chartOption) | ||
| 13555 | + // instance.on('mouseover', stop) | ||
| 13556 | + // instance.on('mouseout', goMove) | ||
| 13557 | + // autoMove() | ||
| 13558 | + } | ||
| 13559 | + | ||
| 13560 | + getChartComponentOption(chartInstanceType, params) { | ||
| 13561 | + const { LINE_CHART, BAR_CHART, DASHBOARD_CHART } = Sidebar.prototype.enumComponentType | ||
| 13562 | + switch (chartInstanceType) { | ||
| 13563 | + case LINE_CHART: | ||
| 13564 | + return this.getBasicChartOption(Object.assign(params, { chartType: 'line' })) | ||
| 13565 | + case BAR_CHART: | ||
| 13566 | + return this.getBasicChartOption(Object.assign(params, { chartType: 'bar' })) | ||
| 13567 | + case DASHBOARD_CHART: | ||
| 13568 | + return this.getDashboardChartOption(params) | ||
| 13569 | + default: | ||
| 13570 | + return {} | ||
| 13571 | + } | ||
| 13572 | + } | ||
| 13573 | + | ||
| 13574 | + getRealTimeUpdateChartOption(chartInstanceType, params) { | ||
| 13575 | + const { LINE_CHART, BAR_CHART, DASHBOARD_CHART } = Sidebar.prototype.enumComponentType | ||
| 13576 | + switch (chartInstanceType) { | ||
| 13577 | + case LINE_CHART: | ||
| 13578 | + return this.getRealTimeUpdateBasicChartOption(params) | ||
| 13579 | + case BAR_CHART: | ||
| 13580 | + return this.getRealTimeUpdateBasicChartOption(params) | ||
| 13581 | + case DASHBOARD_CHART: | ||
| 13582 | + return this.getRealTimeUpdateDashboardChartOption(params) | ||
| 13583 | + default: | ||
| 13584 | + return {} | ||
| 13585 | + } | ||
| 13586 | + } | ||
| 13587 | + | ||
| 13588 | + /** | ||
| 13589 | + * | ||
| 13590 | + * @param {@} params | ||
| 13591 | + * @returns | ||
| 13592 | + */ | ||
| 13593 | + getBasicChartOption(params = { dataList: [], attr: '', chartType: 'bar', action }) { | ||
| 13594 | + const { dataList = [], attr = '', chartType = 'bar', action } = params | ||
| 13618 | 13595 | ||
| 13619 | const xAxisData = [] | 13596 | const xAxisData = [] |
| 13620 | const seriesValue = [] | 13597 | const seriesValue = [] |
| 13621 | - const chartOption = { | 13598 | + |
| 13599 | + dataList.forEach(item => { | ||
| 13600 | + const [timespan, value] = item | ||
| 13601 | + xAxisData[action](new Date(Number(timespan)).toLocaleTimeString()) | ||
| 13602 | + seriesValue[action](Number(value)) | ||
| 13603 | + }) | ||
| 13604 | + | ||
| 13605 | + return { | ||
| 13622 | title: { | 13606 | title: { |
| 13623 | - subtext: historyDataList.length ? '' : '暂无数据', | 13607 | + subtext: dataList.length ? '' : '暂无数据', |
| 13624 | x: 'center', | 13608 | x: 'center', |
| 13625 | y: 'center', | 13609 | y: 'center', |
| 13626 | itemGap: -20, | 13610 | itemGap: -20, |
| @@ -13662,59 +13646,199 @@ class HandleDataSource { | @@ -13662,59 +13646,199 @@ class HandleDataSource { | ||
| 13662 | series: [ | 13646 | series: [ |
| 13663 | { | 13647 | { |
| 13664 | data: seriesValue, | 13648 | data: seriesValue, |
| 13665 | - type: chartInstanceType.includes('bar') ? 'bar' : 'line', | 13649 | + type: chartType, |
| 13666 | } | 13650 | } |
| 13667 | ], | 13651 | ], |
| 13668 | dataZoom: [ | 13652 | dataZoom: [ |
| 13669 | { | 13653 | { |
| 13670 | - // xAxisIndex: 0, | ||
| 13671 | show: true, | 13654 | show: true, |
| 13672 | - type: 'inside', | ||
| 13673 | - // startValue: 0, | ||
| 13674 | - // endValue: showNumberOf | 13655 | + type: 'inside' |
| 13675 | } | 13656 | } |
| 13676 | ] | 13657 | ] |
| 13677 | } | 13658 | } |
| 13659 | + } | ||
| 13678 | 13660 | ||
| 13679 | - historyDataList.forEach(item => { | ||
| 13680 | - const [timespan, value] = item | ||
| 13681 | - xAxisData[action](new Date(Number(timespan)).toLocaleTimeString()) | ||
| 13682 | - seriesValue[action](Number(value)) | ||
| 13683 | - }) | 13661 | + getRealTimeUpdateBasicChartOption(params = { oldOptions: {}, dataList: [] }) { |
| 13662 | + const { oldOptions, dataList } = params | ||
| 13663 | + const xAxisData = oldOptions.xAxis[0].data || [] | ||
| 13664 | + const seriesValue = oldOptions.series[0].data || [] | ||
| 13665 | + const oldEndValue = Number(oldOptions.dataZoom[0].endValue) || 0 | ||
| 13666 | + const oldStartValue = Number(oldOptions.dataZoom[0].startValue) || 0 | ||
| 13667 | + const showNumberOf = 4 | ||
| 13684 | 13668 | ||
| 13685 | - let interval | ||
| 13686 | - // TODO 清除定时器 | ||
| 13687 | - function autoMove() { | ||
| 13688 | - if (seriesValue.length <= 5) return | ||
| 13689 | - interval = setInterval(() => { | ||
| 13690 | - if (Number(chartOption.dataZoom[0].endValue) === seriesValue.length - 1) { | ||
| 13691 | - chartOption.dataZoom[0].endValue = showNumberOf | ||
| 13692 | - chartOption.dataZoom[0].startValue = 0 | ||
| 13693 | - } else { | ||
| 13694 | - chartOption.dataZoom[0].endValue = chartOption.dataZoom[0].endValue + 1 | ||
| 13695 | - chartOption.dataZoom[0].startValue = chartOption.dataZoom[0].startValue + 1 | ||
| 13696 | - } | ||
| 13697 | - if (!chartInstanceMap.has(chartInstanceId)) { | ||
| 13698 | - clearInterval(interval) | ||
| 13699 | - return | ||
| 13700 | - } | ||
| 13701 | - instance && instance.setOption(chartOption) | 13669 | + for (let i = dataList.length - 1; i >= 0; i--) { |
| 13670 | + const [timespan, value] = dataList[i] | ||
| 13671 | + xAxisData.push(new Date(Number(timespan)).toLocaleTimeString()) | ||
| 13672 | + seriesValue.push(Number(value)) | ||
| 13673 | + } | ||
| 13702 | 13674 | ||
| 13703 | - }, 2000); | 13675 | + if (Number(oldOptions.dataZoom[0].endValue) === seriesValue.length - 1) { |
| 13676 | + oldOptions.dataZoom[0].endValue = showNumberOf | ||
| 13677 | + oldOptions.dataZoom[0].startValue = 0 | ||
| 13678 | + } else { | ||
| 13679 | + oldOptions.dataZoom[0].endValue = oldOptions.dataZoom[0].endValue + 1 | ||
| 13680 | + oldOptions.dataZoom[0].startValue = oldOptions.dataZoom[0].startValue + 1 | ||
| 13704 | } | 13681 | } |
| 13705 | 13682 | ||
| 13706 | - function stop() { | ||
| 13707 | - clearInterval(interval) | 13683 | + return { |
| 13684 | + title: { | ||
| 13685 | + subtext: '' | ||
| 13686 | + }, | ||
| 13687 | + xAxis: { | ||
| 13688 | + data: xAxisData | ||
| 13689 | + }, | ||
| 13690 | + series: [ | ||
| 13691 | + { | ||
| 13692 | + data: seriesValue | ||
| 13693 | + } | ||
| 13694 | + ], | ||
| 13695 | + dataZoom: [ | ||
| 13696 | + { | ||
| 13697 | + show: true, | ||
| 13698 | + type: 'inside', | ||
| 13699 | + } | ||
| 13700 | + ] | ||
| 13708 | } | 13701 | } |
| 13702 | + } | ||
| 13709 | 13703 | ||
| 13710 | - function goMove() { | ||
| 13711 | - autoMove() | 13704 | + getDashboardChartOption(params = { dataList: [] }) { |
| 13705 | + const { dataList = [] } = params | ||
| 13706 | + const [timespan, value] = dataList[0] || [] | ||
| 13707 | + return { | ||
| 13708 | + series: [ | ||
| 13709 | + { | ||
| 13710 | + type: 'gauge', | ||
| 13711 | + center: ['50%', '60%'], | ||
| 13712 | + startAngle: 200, | ||
| 13713 | + endAngle: -20, | ||
| 13714 | + min: 0, | ||
| 13715 | + max: 60, | ||
| 13716 | + splitNumber: 12, | ||
| 13717 | + itemStyle: { | ||
| 13718 | + color: '#FFAB91' | ||
| 13719 | + }, | ||
| 13720 | + progress: { | ||
| 13721 | + show: true, | ||
| 13722 | + width: 30 | ||
| 13723 | + }, | ||
| 13724 | + pointer: { | ||
| 13725 | + show: false | ||
| 13726 | + }, | ||
| 13727 | + axisLine: { | ||
| 13728 | + lineStyle: { | ||
| 13729 | + width: 30 | ||
| 13730 | + } | ||
| 13731 | + }, | ||
| 13732 | + axisTick: { | ||
| 13733 | + distance: -45, | ||
| 13734 | + splitNumber: 5, | ||
| 13735 | + lineStyle: { | ||
| 13736 | + width: 2, | ||
| 13737 | + color: '#999' | ||
| 13738 | + } | ||
| 13739 | + }, | ||
| 13740 | + splitLine: { | ||
| 13741 | + distance: -52, | ||
| 13742 | + length: 14, | ||
| 13743 | + lineStyle: { | ||
| 13744 | + width: 3, | ||
| 13745 | + color: '#999' | ||
| 13746 | + } | ||
| 13747 | + }, | ||
| 13748 | + axisLabel: { | ||
| 13749 | + distance: -20, | ||
| 13750 | + color: '#999', | ||
| 13751 | + fontSize: 20 | ||
| 13752 | + }, | ||
| 13753 | + anchor: { | ||
| 13754 | + show: false | ||
| 13755 | + }, | ||
| 13756 | + title: { | ||
| 13757 | + show: false | ||
| 13758 | + }, | ||
| 13759 | + detail: { | ||
| 13760 | + valueAnimation: true, | ||
| 13761 | + width: '60%', | ||
| 13762 | + lineHeight: 40, | ||
| 13763 | + borderRadius: 8, | ||
| 13764 | + offsetCenter: [0, '-15%'], | ||
| 13765 | + fontSize: 25, | ||
| 13766 | + fontWeight: 'bolder', | ||
| 13767 | + formatter: '{value} °C', | ||
| 13768 | + color: 'auto' | ||
| 13769 | + }, | ||
| 13770 | + data: [ | ||
| 13771 | + { | ||
| 13772 | + value | ||
| 13773 | + } | ||
| 13774 | + ] | ||
| 13775 | + }, | ||
| 13776 | + { | ||
| 13777 | + type: 'gauge', | ||
| 13778 | + center: ['50%', '60%'], | ||
| 13779 | + startAngle: 200, | ||
| 13780 | + endAngle: -20, | ||
| 13781 | + min: 0, | ||
| 13782 | + max: 60, | ||
| 13783 | + itemStyle: { | ||
| 13784 | + color: '#FD7347' | ||
| 13785 | + }, | ||
| 13786 | + progress: { | ||
| 13787 | + show: true, | ||
| 13788 | + width: 8 | ||
| 13789 | + }, | ||
| 13790 | + pointer: { | ||
| 13791 | + show: false | ||
| 13792 | + }, | ||
| 13793 | + axisLine: { | ||
| 13794 | + show: false | ||
| 13795 | + }, | ||
| 13796 | + axisTick: { | ||
| 13797 | + show: false | ||
| 13798 | + }, | ||
| 13799 | + splitLine: { | ||
| 13800 | + show: false | ||
| 13801 | + }, | ||
| 13802 | + axisLabel: { | ||
| 13803 | + show: false | ||
| 13804 | + }, | ||
| 13805 | + detail: { | ||
| 13806 | + show: false | ||
| 13807 | + }, | ||
| 13808 | + data: [ | ||
| 13809 | + { | ||
| 13810 | + value | ||
| 13811 | + } | ||
| 13812 | + ] | ||
| 13813 | + } | ||
| 13814 | + ] | ||
| 13712 | } | 13815 | } |
| 13816 | + } | ||
| 13713 | 13817 | ||
| 13714 | - instance.setOption(chartOption) | ||
| 13715 | - // instance.on('mouseover', stop) | ||
| 13716 | - // instance.on('mouseout', goMove) | ||
| 13717 | - // autoMove() | 13818 | + /** |
| 13819 | + * @description 获取仪表盘配置 | ||
| 13820 | + */ | ||
| 13821 | + getRealTimeUpdateDashboardChartOption(params = { dataList: [] }) { | ||
| 13822 | + const { dataList = [] } = params | ||
| 13823 | + const [timespan, value] = dataList[0] || [] | ||
| 13824 | + return { | ||
| 13825 | + series: [ | ||
| 13826 | + { | ||
| 13827 | + data: [ | ||
| 13828 | + { | ||
| 13829 | + value | ||
| 13830 | + } | ||
| 13831 | + ] | ||
| 13832 | + }, | ||
| 13833 | + { | ||
| 13834 | + data: [ | ||
| 13835 | + { | ||
| 13836 | + value | ||
| 13837 | + } | ||
| 13838 | + ] | ||
| 13839 | + } | ||
| 13840 | + ] | ||
| 13841 | + } | ||
| 13718 | } | 13842 | } |
| 13719 | 13843 | ||
| 13720 | /** | 13844 | /** |