diff --git a/src/views/charts/Chart2.vue b/src/views/charts/Chart2.vue
index c8677ca8..feb55f00 100644
--- a/src/views/charts/Chart2.vue
+++ b/src/views/charts/Chart2.vue
@@ -139,13 +139,13 @@
:entity="entity"
>
-
+ >
-
-
+
+
+
+
diff --git a/src/views/charts/charts/ChartEchartAppRelateDomain.vue b/src/views/charts/charts/ChartEchartAppRelateDomain.vue
index 08e87a22..80fc098c 100644
--- a/src/views/charts/charts/ChartEchartAppRelateDomain.vue
+++ b/src/views/charts/charts/ChartEchartAppRelateDomain.vue
@@ -24,31 +24,20 @@ import * as echarts from 'echarts'
import {
ipHostedDomain
} from '@/views/charts/charts/options/pie'
-import { replaceUrlPlaceholder, lineToSpace } from '@/utils/tools'
-import { get } from '@/utils/http'
+import chartEchartMixin from './chart-echart-mixin'
export default {
name: 'ChartEchartAppRelateDomain',
+ mixins: [chartEchartMixin],
data () {
return {
- myChart: null,
- myChart2: null,
- chartOption: null
}
},
props: {
- chartInfo: Object,
- chartData: [Array, Object],
- entity: Object
},
methods: {
- initAppRelatedDomain (id) {
- const chartParams = this.chartInfo.params
- const dom = document.getElementById(`chart${this.chartInfo.id}-0`)
- const dom2 = document.getElementById(`chart${this.chartInfo.id}-1`)
- !this.myChart && (this.myChart = echarts.init(dom))
- !this.myChart2 && (this.myChart2 = echarts.init(dom2))
- this.chartOption = this.$_.cloneDeep(ipHostedDomain)
+ initEcharts (id) {
+ this.initDom(id, 2)
this.$emit('showLoading', true)
this.chartOption.series[0].data = [
{
@@ -68,43 +57,7 @@ export default {
value: 7
}
]
- this.loadEchartPie()
- /*
- get(replaceUrlPlaceholder(chartParams.url, { appName: this.entity.appName })).then(response => {
- if (response.code === 200) {
- if (this.$_.isEmpty(response.data.result)) {
- this.noData = true
- } else {
- this.detailData = response.data.result
- this.noData = false
- }
- }
- }).finally(() => {
- setTimeout(() => {
- this.$emit('showLoading', false)
- }, 250)
- })
- */
- },
-
- loadEchartPie () {
- this.$emit('showLoading', true)
- try {
- this.myChart.setOption(this.chartOption)
- this.myChart2.setOption(this.chartOption)
- } finally {
- setTimeout(() => {
- this.$emit('showLoading', false)
- }, 200)
- }
- }
- },
- watch: {
- chartData: {
- deep: true,
- handler (n) {
- this.initAppRelatedDomain(`chart${this.chartInfo.id}`)
- }
+ this.loadEchart(2)
}
}
}
diff --git a/src/views/charts/charts/ChartEchartIpHostedDomain.vue b/src/views/charts/charts/ChartEchartIpHostedDomain.vue
index 9519e4f2..4006e121 100644
--- a/src/views/charts/charts/ChartEchartIpHostedDomain.vue
+++ b/src/views/charts/charts/ChartEchartIpHostedDomain.vue
@@ -27,29 +27,22 @@ import {
} from '@/views/charts/charts/options/pie'
import { replaceUrlPlaceholder } from '@/utils/tools'
import { get } from '@/utils/http'
+import chartEchartMixin from './chart-echart-mixin'
export default {
name: 'ChartEchartIpHostedDomain',
+ mixins: [chartEchartMixin],
data () {
return {
- myChart: null,
- myChart2: null,
- chartOption: null
}
},
props: {
- chartInfo: Object,
- chartData: [Array, Object],
entity: Object
},
methods: {
- initIpHostedDomain (id) {
+ initEcharts (id) {
+ this.initDom(id, 2)
const chartParams = this.chartInfo.params
- const dom = document.getElementById(id + '-0')
- const dom2 = document.getElementById(id + '-1')
- !this.myChart && (this.myChart = echarts.init(dom))
- !this.myChart2 && (this.myChart2 = echarts.init(dom2))
- this.chartOption = this.$_.cloneDeep(ipHostedDomain)
this.$emit('showLoading', true)
const byType = new Promise(resolve => {
get(replaceUrlPlaceholder(chartParams.byTypeUrl, { ip: this.entity.ip })).then(response => {
@@ -103,14 +96,6 @@ export default {
}, 1000)
})
}
- },
- watch: {
- chartData: {
- deep: true,
- handler (n) {
- this.initIpHostedDomain(`chart${this.chartInfo.id}`)
- }
- }
}
}
diff --git a/src/views/charts/charts/ChartEchartLine.vue b/src/views/charts/charts/ChartEchartLine.vue
deleted file mode 100644
index fd7cbfcc..00000000
--- a/src/views/charts/charts/ChartEchartLine.vue
+++ /dev/null
@@ -1,106 +0,0 @@
-
-
-
-
-
diff --git a/src/views/charts/charts/ChartEchartPie.vue b/src/views/charts/charts/ChartEchartPie.vue
deleted file mode 100644
index e63d322f..00000000
--- a/src/views/charts/charts/ChartEchartPie.vue
+++ /dev/null
@@ -1,107 +0,0 @@
-
-
-
-
-
diff --git a/src/views/charts/charts/ChartEchartWithStatistics.vue b/src/views/charts/charts/ChartEchartWithStatistics.vue
index 0ce7761e..b3bfccdf 100644
--- a/src/views/charts/charts/ChartEchartWithStatistics.vue
+++ b/src/views/charts/charts/ChartEchartWithStatistics.vue
@@ -14,25 +14,18 @@ import {
import {
getChartColor
} from '@/views/charts/charts/chart-options'
+import chartEchartMixin from './chart-echart-mixin'
export default {
name: 'ChartEchartWithStatistics',
- setup () {
- const myChart = null
- return {
- myChart
- }
- },
+ mixins: [chartEchartMixin],
data () {
return {
- chartOption: null,
statisticsData: [],
statisticsHeight: 280
}
},
props: {
- chartInfo: Object,
- chartData: [Array, Object],
resultType: Object
},
components: {
@@ -46,20 +39,10 @@ export default {
}
},
methods: {
- initEchartsWithStatistics (id) {
+ initEcharts (id) {
+ this.initDom(id)
const chartParams = this.chartInfo.params
- const dom = document.getElementById(id)
- !this.myChart && (this.myChart = echarts.init(dom))
- this.chartOption = this.$_.cloneDeep(lineWithStatistics)
- const allZero = this.timeLineIsAllZero(this.chartData)
- if (allZero) {
- this.chartOption.yAxis = {
- ...this.chartOption.yAxis,
- min: 0,
- max: 5,
- interval: 1
- }
- }
+ this.handleYaxis()
this.statisticsData = this.chartData.map(d => {
return {
...d,
@@ -77,34 +60,7 @@ export default {
}
}
})
- this.loadEchartWithStatistics()
- },
-
- loadEchartWithStatistics () {
- this.$emit('showLoading', true)
- try {
- this.myChart.setOption(this.chartOption)
- } finally {
- setTimeout(() => {
- this.$emit('showLoading', false)
- }, 200)
- }
- },
- timeLineIsAllZero (data) {
- if (this.resultType === 'matrix') {
- let allZero = true
- try {
- data.forEach(d => {
- d.values.forEach(r => {
- if (r[1] && r[1] !== '0') {
- allZero = false
- throw new Error('break')
- }
- })
- })
- } catch (e) {}
- return allZero
- }
+ this.loadEchart()
},
toggleStatisticsLegend (index) {
this.statisticsData[index].active = !this.statisticsData[index].active
@@ -124,12 +80,6 @@ export default {
}
},
watch: {
- chartData: {
- deep: true,
- handler (n) {
- this.initEchartsWithStatistics(`chart${this.chartInfo.id}`)
- }
- },
statisticsHeight (val) {
const dom = document.getElementById(`chart${this.chartInfo.id}`)
dom.style.cssText += `height: calc(100% - ${val}px)`
diff --git a/src/views/charts/charts/ChartEchartWithTable.vue b/src/views/charts/charts/ChartEchartWithTable.vue
index 24b509a8..8b33e07f 100644
--- a/src/views/charts/charts/ChartEchartWithTable.vue
+++ b/src/views/charts/charts/ChartEchartWithTable.vue
@@ -18,21 +18,19 @@ import {
import { getUnitType } from '@/utils/unit-convert'
import { replaceUrlPlaceholder } from '@/utils/tools'
import { get } from '@/utils/http'
+import chartEchartMixin from './chart-echart-mixin'
export default {
name: 'ChartEchartWithTable',
+ mixins: [chartEchartMixin],
data () {
return {
- myChart: null,
- chartOption: null,
pieTableData: [],
selectPieChartName: '',
allSelectPieChartName: []
}
},
props: {
- chartInfo: Object,
- chartData: [Array, Object],
resultType: Object,
queryParams: Object,
orderPieTable: Object
@@ -43,33 +41,20 @@ export default {
mounted () {
},
methods: {
- handleQueryParams(queryParams) {
+ handleQueryParams (queryParams) {
return this.timeFilter = {
- startTime:Number(queryParams.startTime)*1000,
- endTime:Number(queryParams.endTime)*1000
+ startTime: Number(queryParams.startTime) * 1000,
+ endTime: Number(queryParams.endTime) * 1000
}
},
- initEchartsWithTable (id) {
+ initEcharts (id) {
+ this.initDom(id)
const chartParams = this.chartInfo.params
- const dom = document.getElementById(id)
- !this.myChart && (this.myChart = echarts.init(dom))
- this.chartOption = this.$_.cloneDeep(pieWithTable)
-
chartParams.valueColumn = this.orderPieTable
const unitType = getUnitType(chartParams.valueColumn)
const tableQueryParams = this.$_.cloneDeep(this.queryParams)
tableQueryParams[chartParams.nameColumn] = [] // 处理两个图表不一样的地方)
-
- const allZero = this.timeLineIsAllZero(this.chartData)
- if (allZero) {
- this.chartOption.yAxis = {
- ...this.chartOption.yAxis,
- min: 0,
- max: 5,
- interval: 1
- }
- }
-
+ this.handleYaxis()
const data = this.chartData.map(d => {
if (d[chartParams.nameColumn]) {
this.allSelectPieChartName.push(d[chartParams.nameColumn])
@@ -87,7 +72,7 @@ export default {
if (this.chartOption.series[0].data && this.chartOption.series[0].data.length > 10) { // pieWithTable 图例超过10个改为滚动显示
this.chartOption.legend.type = 'scroll'
}
- this.loadEchartWithTable()
+ this.loadEchart()
if (!this.$_.isEmpty(data)) {
get(replaceUrlPlaceholder(chartParams.urlTable, tableQueryParams)).then(response => {
@@ -130,11 +115,8 @@ export default {
// 饼图色块点击事件
this.myChart.off('click')
this.myChart.on('click', function (echartParams) {
- console.log(echartParams)
- console.log(self.selectPieChartName)
// 若是已选,则点击后取消选择,并查询全部数据
if (echartParams.name === self.selectPieChartName) {
- console.log(1)
self.selectPieChartName = ''
self.loadPieTableData(this.allSelectPieChartName)
} else { // 否则查询当前name数据
@@ -152,41 +134,6 @@ export default {
this.pieTableData = response.data.result
}
})
- },
-
- loadEchartWithTable () {
- this.$emit('showLoading', true)
- try {
- this.myChart.setOption(this.chartOption)
- } finally {
- setTimeout(() => {
- this.$emit('showLoading', false)
- }, 200)
- }
- },
- timeLineIsAllZero (data) {
- if (this.resultType === 'matrix') {
- let allZero = true
- try {
- data.forEach(d => {
- d.values.forEach(r => {
- if (r[1] && r[1] !== '0') {
- allZero = false
- throw new Error('break')
- }
- })
- })
- } catch (e) {}
- return allZero
- }
- }
- },
- watch: {
- chartData: {
- deep: true,
- handler (n) {
- this.initEchartsWithTable(`chart${this.chartInfo.id}`)
- }
}
}
}
diff --git a/src/views/charts/charts/ChartTabs.vue b/src/views/charts/charts/ChartTabs.vue
index ede006b2..ec6fcec0 100644
--- a/src/views/charts/charts/ChartTabs.vue
+++ b/src/views/charts/charts/ChartTabs.vue
@@ -12,6 +12,7 @@
:ref="`chart-${chartInfo.id}`"
>
{
+ d.values.forEach(r => {
+ if (r[1] && r[1] !== '0') {
+ allZero = false
+ throw new Error('break')
+ }
+ })
+ })
+ } catch (e) {}
+ return allZero
+ }
+ },
+ loadEchart (chartNum) {
+ this.$emit('showLoading', true)
+ try {
+ this.myChart.setOption(this.chartOption)
+ if (chartNum && chartNum == 2) {
+ this.myChart2.setOption(this.chartOption)
+ }
+ } finally {
+ setTimeout(() => {
+ this.$emit('showLoading', false)
+ }, 200)
+ }
+ }
+ },
+ watch: {
+ chartData: {
+ deep: true,
+ handler (n) {
+ if (this.chartData && this.chartData.length > 0) {
+ this.initEcharts(`chart${this.chartInfo.id}`)
+ }
+ }
+ }
+ }
+}
diff --git a/src/views/charts/charts/tools.js b/src/views/charts/charts/tools.js
index 05501e2d..99bac368 100644
--- a/src/views/charts/charts/tools.js
+++ b/src/views/charts/charts/tools.js
@@ -26,7 +26,8 @@ const typeOptionMappings = [
{ value: 22, option: ipOpenPortBar }, // ip详情--开放端口的柱状图
{ value: 23, option: timeBar }, // 矿机所属单位
{ value: 24, option: categoryBar }, // 挖矿事件统计
- { value: 31, option: pieWithTable }, // 常规折线图
+ { value: 31, option: pieWithTable }, // 常规饼图
+ { value: 32, option: pieWithTable }, // 带表格饼图
{ value: 33, option: ipHostedDomain }, // ip详情--托管域名
{ value: 34, option: ipHostedDomain }, // app详情--相关域名
{ value: 42, option: relationShip }, // 关系图