2021-11-19 09:40:21 +08:00
|
|
|
|
<template>
|
2021-12-09 16:39:19 +08:00
|
|
|
|
<div :style="chartInfo.param.showHeader ? '' : 'padding-top: 15px;'" class="nz-chart" :class="chartInfo.param.showHeader ? '' : 'no-header'" >
|
2021-12-02 21:46:07 +08:00
|
|
|
|
<loading :loading="loading"></loading>
|
2021-12-21 14:25:13 +08:00
|
|
|
|
<chart-no-data v-if="isNoData || isError || chartChildrenData"></chart-no-data>
|
2021-11-26 20:13:54 +08:00
|
|
|
|
<template v-else>
|
|
|
|
|
|
<chart-time-series
|
|
|
|
|
|
v-if="isTimeSeries(chartInfo.type)"
|
2021-12-10 16:18:18 +08:00
|
|
|
|
:ref="'chart' + chartInfo.id"
|
2021-11-26 20:13:54 +08:00
|
|
|
|
:chart-data="chartData"
|
|
|
|
|
|
:chart-info="chartInfo"
|
|
|
|
|
|
:chart-option="chartOption"
|
2021-12-01 20:27:23 +08:00
|
|
|
|
:is-fullscreen="isFullscreen"
|
2021-12-21 14:25:13 +08:00
|
|
|
|
@chartIsNoData="chartIsNoData"
|
2021-11-26 20:13:54 +08:00
|
|
|
|
></chart-time-series>
|
2021-12-07 17:43:21 +08:00
|
|
|
|
<chart-pie
|
2021-12-10 16:18:18 +08:00
|
|
|
|
:ref="'chart' + chartInfo.id"
|
2021-12-07 17:43:21 +08:00
|
|
|
|
v-if="isChartPie(chartInfo.type)"
|
|
|
|
|
|
:chart-data="chartData"
|
|
|
|
|
|
:chart-info="chartInfo"
|
|
|
|
|
|
:chart-option="chartOption"
|
|
|
|
|
|
:is-fullscreen="isFullscreen"
|
2021-12-21 15:41:46 +08:00
|
|
|
|
@chartIsNoData="chartIsNoData"
|
2021-12-07 17:43:21 +08:00
|
|
|
|
></chart-pie>
|
2021-12-08 10:57:58 +08:00
|
|
|
|
<chart-bar
|
2021-12-10 16:18:18 +08:00
|
|
|
|
:ref="'chart' + chartInfo.id"
|
2021-12-08 10:57:58 +08:00
|
|
|
|
v-if="isChartBar(chartInfo.type)"
|
|
|
|
|
|
:chart-data="chartData"
|
|
|
|
|
|
:chart-info="chartInfo"
|
|
|
|
|
|
:chart-option="chartOption"
|
|
|
|
|
|
:is-fullscreen="isFullscreen"
|
2021-12-21 15:41:46 +08:00
|
|
|
|
@chartIsNoData="chartIsNoData"
|
2021-12-08 10:57:58 +08:00
|
|
|
|
></chart-bar>
|
2021-11-30 17:15:29 +08:00
|
|
|
|
<chartHexagon
|
|
|
|
|
|
:ref="'chart'+chartInfo.id"
|
2021-12-17 14:47:21 +08:00
|
|
|
|
v-if="isHexagon(chartInfo.type)"
|
2021-11-30 17:15:29 +08:00
|
|
|
|
:chart-data="chartData"
|
|
|
|
|
|
:chart-info="chartInfo"
|
|
|
|
|
|
:chart-option="chartOption"
|
2021-12-13 13:58:56 +08:00
|
|
|
|
:is-fullscreen="isFullscreen"
|
2021-12-21 15:41:46 +08:00
|
|
|
|
@chartIsNoData="chartIsNoData"
|
2021-11-30 17:15:29 +08:00
|
|
|
|
></chartHexagon>
|
2021-12-06 15:34:16 +08:00
|
|
|
|
<chart-url
|
2021-12-10 16:18:18 +08:00
|
|
|
|
:ref="'chart' + chartInfo.id"
|
2021-12-06 15:34:16 +08:00
|
|
|
|
v-if="isUrl(chartInfo.type)"
|
|
|
|
|
|
:chart-data="chartData"
|
|
|
|
|
|
:chart-info="chartInfo"
|
|
|
|
|
|
:chart-option="chartOption"
|
2021-12-13 13:58:56 +08:00
|
|
|
|
:is-fullscreen="isFullscreen"
|
2021-12-21 15:41:46 +08:00
|
|
|
|
@chartIsNoData="chartIsNoData"
|
2021-12-06 15:34:16 +08:00
|
|
|
|
></chart-url>
|
|
|
|
|
|
<chart-text
|
2021-12-10 16:18:18 +08:00
|
|
|
|
:ref="'chart' + chartInfo.id"
|
2021-12-06 15:34:16 +08:00
|
|
|
|
v-if="isText(chartInfo.type)"
|
|
|
|
|
|
:chart-data="chartData"
|
|
|
|
|
|
:chart-info="chartInfo"
|
|
|
|
|
|
:chart-option="chartOption"
|
2021-12-13 13:58:56 +08:00
|
|
|
|
:is-fullscreen="isFullscreen"
|
2021-12-21 15:41:46 +08:00
|
|
|
|
@chartIsNoData="chartIsNoData"
|
2021-12-06 15:34:16 +08:00
|
|
|
|
></chart-text>
|
2021-12-09 10:34:11 +08:00
|
|
|
|
<chart-treemap
|
2021-12-10 16:18:18 +08:00
|
|
|
|
:ref="'chart' + chartInfo.id"
|
2021-12-09 10:34:11 +08:00
|
|
|
|
v-if="isTreemap(chartInfo.type)"
|
|
|
|
|
|
:chart-data="chartData"
|
|
|
|
|
|
:chart-info="chartInfo"
|
|
|
|
|
|
:chart-option="chartOption"
|
2021-12-13 13:58:56 +08:00
|
|
|
|
:is-fullscreen="isFullscreen"
|
2021-12-21 15:41:46 +08:00
|
|
|
|
@chartIsNoData="chartIsNoData"
|
2021-12-09 10:34:11 +08:00
|
|
|
|
></chart-treemap>
|
2021-12-09 16:39:19 +08:00
|
|
|
|
<chart-log
|
2021-12-10 16:18:18 +08:00
|
|
|
|
:ref="'chart' + chartInfo.id"
|
2021-12-09 16:39:19 +08:00
|
|
|
|
v-if="isLog(chartInfo.type)"
|
|
|
|
|
|
:chart-data="chartData"
|
|
|
|
|
|
:chart-info="chartInfo"
|
|
|
|
|
|
:chart-option="chartOption"
|
2021-12-13 13:58:56 +08:00
|
|
|
|
:is-fullscreen="isFullscreen"
|
2021-12-21 15:41:46 +08:00
|
|
|
|
@chartIsNoData="chartIsNoData"
|
2021-12-09 16:39:19 +08:00
|
|
|
|
></chart-log>
|
2021-12-10 11:33:45 +08:00
|
|
|
|
<chart-stat
|
2021-12-10 16:18:18 +08:00
|
|
|
|
:ref="'chart' + chartInfo.id"
|
2021-12-10 11:33:45 +08:00
|
|
|
|
v-if="isStat(chartInfo.type)"
|
|
|
|
|
|
:chart-data="chartData"
|
|
|
|
|
|
:chart-info="chartInfo"
|
|
|
|
|
|
:chart-option="chartOption"
|
2021-12-13 13:58:56 +08:00
|
|
|
|
:is-fullscreen="isFullscreen"
|
2021-12-21 15:41:46 +08:00
|
|
|
|
@chartIsNoData="chartIsNoData"
|
2021-12-10 11:33:45 +08:00
|
|
|
|
></chart-stat>
|
2021-12-20 17:02:15 +08:00
|
|
|
|
<chart-gauge
|
|
|
|
|
|
:ref="'chart' + chartInfo.id"
|
|
|
|
|
|
v-if="isGauge(chartInfo.type)"
|
|
|
|
|
|
:chart-data="chartData"
|
|
|
|
|
|
:chart-info="chartInfo"
|
|
|
|
|
|
:chart-option="chartOption"
|
|
|
|
|
|
:is-fullscreen="isFullscreen"
|
2021-12-21 15:41:46 +08:00
|
|
|
|
@chartIsNoData="chartIsNoData"
|
2021-12-20 17:02:15 +08:00
|
|
|
|
></chart-gauge>
|
2021-12-13 13:58:56 +08:00
|
|
|
|
<chart-diagram
|
|
|
|
|
|
:ref="'chart' + chartInfo.id"
|
|
|
|
|
|
v-if="isDiagram(chartInfo.type)"
|
|
|
|
|
|
:chart-data="chartData"
|
|
|
|
|
|
:chart-info="chartInfo"
|
|
|
|
|
|
:is-fullscreen="isFullscreen"
|
2021-12-21 15:41:46 +08:00
|
|
|
|
@chartIsNoData="chartIsNoData"
|
2021-12-13 13:58:56 +08:00
|
|
|
|
:chart-option="chartOption"
|
|
|
|
|
|
></chart-diagram>
|
2021-12-17 14:47:21 +08:00
|
|
|
|
<chartAutotopology
|
2021-12-13 17:07:41 +08:00
|
|
|
|
:ref="'chart' + chartInfo.id"
|
2021-12-17 14:47:21 +08:00
|
|
|
|
v-if="isAutotopology(chartInfo.type)"
|
2021-12-13 17:07:41 +08:00
|
|
|
|
:chart-data="chartData"
|
|
|
|
|
|
:chart-info="chartInfo"
|
|
|
|
|
|
:chart-option="chartOption"
|
2021-12-14 18:56:50 +08:00
|
|
|
|
:is-fullscreen="isFullscreen"
|
2021-12-21 15:41:46 +08:00
|
|
|
|
@chartIsNoData="chartIsNoData"
|
2021-12-17 14:47:21 +08:00
|
|
|
|
></chartAutotopology>
|
2021-12-15 12:11:13 +08:00
|
|
|
|
<chartMap
|
2021-12-13 20:54:01 +08:00
|
|
|
|
:ref="'chart' + chartInfo.id"
|
2021-12-15 12:11:13 +08:00
|
|
|
|
v-if="isMap(chartInfo.type)"
|
2021-12-13 20:54:01 +08:00
|
|
|
|
:chart-data="chartData"
|
|
|
|
|
|
:chart-info="chartInfo"
|
|
|
|
|
|
:chart-option="chartOption"
|
|
|
|
|
|
:is-fullscreen="isFullscreen"
|
2021-12-21 15:41:46 +08:00
|
|
|
|
@chartIsNoData="chartIsNoData"
|
2021-12-15 12:11:13 +08:00
|
|
|
|
></chartMap>
|
2021-12-15 12:12:57 +08:00
|
|
|
|
<chart-asset-info
|
|
|
|
|
|
:ref="'chart' + chartInfo.id"
|
|
|
|
|
|
v-if="isAssetInfo(chartInfo.type)"
|
|
|
|
|
|
:chart-data="chartData"
|
|
|
|
|
|
:chart-info="chartInfo"
|
|
|
|
|
|
:chart-option="chartOption"
|
|
|
|
|
|
:is-fullscreen="isFullscreen"
|
2021-12-21 15:41:46 +08:00
|
|
|
|
@chartIsNoData="chartIsNoData"
|
2021-12-15 12:12:57 +08:00
|
|
|
|
></chart-asset-info>
|
|
|
|
|
|
<chart-endpoint-info
|
|
|
|
|
|
:ref="'chart' + chartInfo.id"
|
|
|
|
|
|
v-if="isEndpointInfo(chartInfo.type)"
|
|
|
|
|
|
:chart-data="chartData"
|
|
|
|
|
|
:chart-info="chartInfo"
|
|
|
|
|
|
:chart-option="chartOption"
|
|
|
|
|
|
:is-fullscreen="isFullscreen"
|
2021-12-21 15:41:46 +08:00
|
|
|
|
@chartIsNoData="chartIsNoData"
|
2021-12-15 12:12:57 +08:00
|
|
|
|
></chart-endpoint-info>
|
2021-12-15 17:55:56 +08:00
|
|
|
|
<chart-table
|
|
|
|
|
|
:ref="'chart' + chartInfo.id"
|
|
|
|
|
|
v-if="isTable(chartInfo.type)"
|
|
|
|
|
|
:chart-data="chartData"
|
|
|
|
|
|
:chart-info="chartInfo"
|
|
|
|
|
|
:chart-option="chartOption"
|
|
|
|
|
|
:is-fullscreen="isFullscreen"
|
2021-12-21 15:41:46 +08:00
|
|
|
|
@chartIsNoData="chartIsNoData"
|
2021-12-15 17:55:56 +08:00
|
|
|
|
></chart-table>
|
2021-12-13 17:07:41 +08:00
|
|
|
|
<chart-group
|
|
|
|
|
|
:ref="'chart' + chartInfo.id"
|
2021-12-16 19:15:32 +08:00
|
|
|
|
:from="from"
|
2021-12-21 19:19:35 +08:00
|
|
|
|
:filter="filter"
|
2021-12-13 17:07:41 +08:00
|
|
|
|
v-if="isGroup(chartInfo.type)"
|
|
|
|
|
|
:panelLock="panelLock"
|
|
|
|
|
|
:chart-data="chartData"
|
|
|
|
|
|
:chart-info="chartInfo"
|
|
|
|
|
|
:is-fullscreen="isFullscreen"
|
2021-12-21 15:41:46 +08:00
|
|
|
|
@chartIsNoData="chartIsNoData"
|
2021-12-13 17:07:41 +08:00
|
|
|
|
:chart-option="chartOption"
|
|
|
|
|
|
></chart-group>
|
2021-11-26 20:13:54 +08:00
|
|
|
|
</template>
|
|
|
|
|
|
</div>
|
2021-11-19 09:40:21 +08:00
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
2021-12-02 21:46:07 +08:00
|
|
|
|
import loading from '@/components/common/loading'
|
2021-11-26 20:13:54 +08:00
|
|
|
|
import chartAssetInfo from './chart/chartAssetInfo'
|
2021-12-17 14:47:21 +08:00
|
|
|
|
import chartAutotopology from './chart/chartAutotopology'
|
2021-11-26 20:13:54 +08:00
|
|
|
|
import chartBar from './chart/chartBar'
|
|
|
|
|
|
import chartClock from './chart/chartClock'
|
|
|
|
|
|
import chartDiagram from './chart/chartDiagram'
|
|
|
|
|
|
import chartEndpointInfo from './chart/chartEndpointInfo'
|
|
|
|
|
|
import chartGauge from './chart/chartGauge'
|
|
|
|
|
|
import chartGroup from './chart/chartGroup'
|
|
|
|
|
|
import chartLog from './chart/chartLog'
|
|
|
|
|
|
import chartNoData from './chart/chartNoData'
|
|
|
|
|
|
import chartPie from './chart/chartPie'
|
|
|
|
|
|
import chartStat from './chart/chartStat'
|
|
|
|
|
|
import chartTable from './chart/chartTable'
|
|
|
|
|
|
import chartText from './chart/chartText'
|
|
|
|
|
|
import chartTimeSeries from './chart/chartTimeSeries'
|
|
|
|
|
|
import chartTreemap from './chart/chartTreemap'
|
|
|
|
|
|
import chartUrl from './chart/chartUrl'
|
|
|
|
|
|
import chartValue from './chart/chartValue'
|
2021-11-30 16:39:21 +08:00
|
|
|
|
import chartHexagon from './chart/chartHexagon'
|
2021-12-15 12:11:13 +08:00
|
|
|
|
import chartMap from './chart/chartMap'
|
2021-12-20 17:02:15 +08:00
|
|
|
|
import { getOption, isTimeSeries, isHexagon, isUrl, isText, isChartPie, isChartBar, isTreemap, isLog, isStat, isDiagram, isGroup, isAutotopology, isMap, isAssetInfo, isEndpointInfo, isTable, isGauge } from './chart/tools'
|
2021-11-26 20:13:54 +08:00
|
|
|
|
import lodash from 'lodash'
|
|
|
|
|
|
|
2021-11-19 09:40:21 +08:00
|
|
|
|
export default {
|
2021-11-26 20:13:54 +08:00
|
|
|
|
name: 'chart',
|
|
|
|
|
|
components: {
|
2021-12-02 21:46:07 +08:00
|
|
|
|
loading,
|
2021-11-26 20:13:54 +08:00
|
|
|
|
chartAssetInfo,
|
2021-12-17 14:47:21 +08:00
|
|
|
|
chartAutotopology,
|
2021-11-26 20:13:54 +08:00
|
|
|
|
chartBar,
|
|
|
|
|
|
chartClock,
|
|
|
|
|
|
chartDiagram,
|
|
|
|
|
|
chartEndpointInfo,
|
|
|
|
|
|
chartGauge,
|
|
|
|
|
|
chartGroup,
|
|
|
|
|
|
chartLog,
|
|
|
|
|
|
chartNoData,
|
|
|
|
|
|
chartPie,
|
|
|
|
|
|
chartStat,
|
|
|
|
|
|
chartTable,
|
|
|
|
|
|
chartText,
|
|
|
|
|
|
chartTimeSeries,
|
|
|
|
|
|
chartTreemap,
|
|
|
|
|
|
chartUrl,
|
2021-11-30 16:39:21 +08:00
|
|
|
|
chartValue,
|
2021-12-15 12:11:13 +08:00
|
|
|
|
chartHexagon,
|
|
|
|
|
|
chartMap
|
2021-11-26 20:13:54 +08:00
|
|
|
|
},
|
|
|
|
|
|
props: {
|
|
|
|
|
|
chartInfo: Object,
|
|
|
|
|
|
chartData: [Object, Array, String], // 数据查询后传入chart组件,chart组件内不查询,只根据接传递的数据来渲染
|
2021-12-01 20:27:23 +08:00
|
|
|
|
customChartOption: Object, // 需要自定义echarts的option时传入,非必须;传入该值时仍需传对应格式的chartData
|
2021-12-02 21:46:07 +08:00
|
|
|
|
isFullscreen: Boolean,
|
2021-12-13 17:07:41 +08:00
|
|
|
|
loading: Boolean,
|
2021-12-16 19:15:32 +08:00
|
|
|
|
panelLock: Boolean,
|
2021-12-17 09:47:50 +08:00
|
|
|
|
from: String,
|
2021-12-21 19:19:35 +08:00
|
|
|
|
isError: Boolean,
|
|
|
|
|
|
filter: {}
|
2021-11-26 20:13:54 +08:00
|
|
|
|
},
|
2021-12-21 14:25:13 +08:00
|
|
|
|
data () {
|
|
|
|
|
|
return {
|
|
|
|
|
|
chartChildrenData: false
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
2021-11-26 20:13:54 +08:00
|
|
|
|
computed: {
|
|
|
|
|
|
isNoData () {
|
2021-12-16 18:44:05 +08:00
|
|
|
|
return lodash.isEmpty(this.chartData) && ['text', 'url'].indexOf(this.chartInfo.type) === -1
|
2021-11-26 20:13:54 +08:00
|
|
|
|
},
|
|
|
|
|
|
chartOption () {
|
|
|
|
|
|
if (this.customChartOption) {
|
|
|
|
|
|
return lodash.cloneDeep(this.customChartOption)
|
|
|
|
|
|
} else {
|
|
|
|
|
|
return getOption(this.chartInfo.type)
|
|
|
|
|
|
}
|
2021-12-21 14:25:13 +08:00
|
|
|
|
},
|
2021-11-26 20:13:54 +08:00
|
|
|
|
},
|
|
|
|
|
|
methods: {
|
2021-11-30 16:39:21 +08:00
|
|
|
|
isTimeSeries,
|
2021-12-17 14:47:21 +08:00
|
|
|
|
isHexagon,
|
2021-12-07 17:43:21 +08:00
|
|
|
|
isChartPie,
|
2021-12-08 10:57:58 +08:00
|
|
|
|
isChartBar,
|
2021-12-06 15:34:16 +08:00
|
|
|
|
isUrl,
|
|
|
|
|
|
isText,
|
2021-12-09 10:34:11 +08:00
|
|
|
|
isTreemap,
|
2021-12-09 16:39:19 +08:00
|
|
|
|
isLog,
|
2021-12-10 11:33:45 +08:00
|
|
|
|
isStat,
|
2021-12-13 13:58:56 +08:00
|
|
|
|
isDiagram,
|
2021-12-13 17:07:41 +08:00
|
|
|
|
isGroup,
|
2021-12-17 14:47:21 +08:00
|
|
|
|
isAutotopology,
|
2021-12-15 12:12:57 +08:00
|
|
|
|
isAssetInfo,
|
|
|
|
|
|
isEndpointInfo,
|
2021-12-15 12:11:13 +08:00
|
|
|
|
isMap,
|
2021-12-15 17:55:56 +08:00
|
|
|
|
isTable,
|
2021-12-20 17:02:15 +08:00
|
|
|
|
isGauge,
|
2021-12-21 14:25:13 +08:00
|
|
|
|
chartIsNoData (flag) {
|
|
|
|
|
|
this.chartChildrenData = flag
|
|
|
|
|
|
},
|
2021-11-30 16:39:21 +08:00
|
|
|
|
resize () {
|
2021-12-22 13:39:48 +08:00
|
|
|
|
this.$refs['chart' + this.chartInfo.id] && this.$refs['chart' + this.chartInfo.id].resize()
|
2021-11-30 16:39:21 +08:00
|
|
|
|
}
|
2021-11-26 20:13:54 +08:00
|
|
|
|
},
|
|
|
|
|
|
mounted () {
|
|
|
|
|
|
}
|
2021-11-19 09:40:21 +08:00
|
|
|
|
}
|
|
|
|
|
|
</script>
|