diff --git a/src/assets/css/components/views/charts2/npmEventsByType.scss b/src/assets/css/components/views/charts2/npmEventsByType.scss
index b7aa9880..de0904e5 100644
--- a/src/assets/css/components/views/charts2/npmEventsByType.scss
+++ b/src/assets/css/components/views/charts2/npmEventsByType.scss
@@ -25,7 +25,7 @@
align-items: center;
.chart-drawing {
height: 100%;
- width: 100%;
+ width: 50%;
}
.npm-event-pie-legends {
display: flex;
diff --git a/src/views/charts2/charts/npm/NpmEventsByType.vue b/src/views/charts2/charts/npm/NpmEventsByType.vue
index a8feb942..007aa33d 100644
--- a/src/views/charts2/charts/npm/NpmEventsByType.vue
+++ b/src/views/charts2/charts/npm/NpmEventsByType.vue
@@ -8,6 +8,23 @@
+
+
+
{{ $t('overall.type') }}
+
+
+
+
+
+
{{ $t('network.total') }}
+
+ {{legend.value}}
+
+
+
@@ -23,6 +40,7 @@ import ChartNoData from '@/views/charts/charts/ChartNoData'
import chartMixin from '@/views/charts2/chart-mixin'
import ChartError from '@/components/common/Error'
import axios from 'axios'
+import { chartColor5 } from '@/utils/constants'
export default {
name: 'NpmEventsByType',
@@ -56,13 +74,35 @@ export default {
},
methods: {
init () {
+ const _this = this
const dom = document.getElementById('chart')
!this.myChart && (this.myChart = echarts.init(dom))
this.chartOption = pieChartOption3
this.chartOption.series[0].data = this.chartData
+ console.log('查看数据', this.chartData)
+ console.log('查看option', this.chartOption)
this.chartOption.series[0].label = {
- show: false
+ show: true,
+ position: 'center',
+ fontFamily: 'NotoSansHans-Medium',
+ fontSize: 20,
+ fontWeight: 500,
+ formatter: function () {
+ let num = 0
+ _this.chartData.forEach(t => {
+ num += t.value
+ })
+ return num
+ }
}
+ this.myChart.on('mouseover', function () {
+ _this.chartOption.series[0].label.show = false
+ _this.myChart.setOption(_this.chartOption)
+ })
+ this.myChart.on('mouseout', function () {
+ _this.chartOption.series[0].label.show = true
+ _this.myChart.setOption(_this.chartOption)
+ })
this.myChart.setOption(this.chartOption)
},
eventsByTypeData () {
@@ -92,6 +132,9 @@ export default {
this.chartData = arrData.sort((a, b) => { return b.value - a.value })
this.$nextTick(() => {
if (this.chartData.length > 0) {
+ this.chartData.forEach((t, i) => {
+ t.color = chartColor5[i]
+ })
if (!this.isUnitTesting) {
this.init()
}
diff --git a/src/views/charts2/charts/options/echartOption.js b/src/views/charts2/charts/options/echartOption.js
index 44d16cef..fb40ff8c 100644
--- a/src/views/charts2/charts/options/echartOption.js
+++ b/src/views/charts2/charts/options/echartOption.js
@@ -130,53 +130,15 @@ export const pieChartOption2 = {
}
export const pieChartOption3 = {
color: chartColor5,
- legend: {
- orient: 'vertical',
- top: '25%',
- left: '50%',
- itemGap: 4,
- itemWidth: 15,
- itemHeight: 7,
- textStyle: {
- fontFamily: 'SimHei',
- rich: {
- a: {
- width: 60,
- align: 'left',
- fontWeight: 'bold'
- },
- b: {
- align: 'left',
- fontSize: 12,
- color: '#575757'
- }
- }
- },
- tooltip: {
- show: true
- },
- formatter: function (name) {
- const data = pieChartOption3.series[0].data
- let value
- data.forEach(t => {
- if (t.name === name) {
- value = t.value
- }
- })
- name = name.length > 9 ? name.substr(0, 9) + '...' : name
- return ['{a|' + ' ' + value + '}' + '{b|' + name + '}']
- }
- },
series: [
{
- right: '50%',
name: 'Access From',
type: 'pie',
radius: ['40%', '50%'],
avoidLabelOverlap: false,
emphasis: {
label: {
- show: false,
+ show: true,
fontSize: 20,
fontWeight: 500,
fontFamily: 'NotoSansHans-Medium',
diff --git a/test/views/charts2/charts/npm/NpmEventsByType.test.js b/test/views/charts2/charts/npm/NpmEventsByType.test.js
index d3c4b6c6..ee2af046 100644
--- a/test/views/charts2/charts/npm/NpmEventsByType.test.js
+++ b/test/views/charts2/charts/npm/NpmEventsByType.test.js
@@ -31,25 +31,25 @@ function axiosPostAndMounted (data) {
}
describe('views/charts2/charts/npm/NpmEventsByType.vue测试', () => {
- // test('类型分类事件统计信息: npm events 类型分类事件图 ', async () => {
- // axiosPostAndMounted()
- //
- // await new Promise(resolve => setTimeout(() => {
- // // type
- // const testNode0 = wrapper.get('[test-id="testNode0"]')
- // const testNode1 = wrapper.get('[test-id="testNode1"]')
- //
- // expect(testNode0.text()).toEqual('dns error')
- // expect(testNode1.text()).toEqual('http error')
- //
- // // total
- // const total0 = wrapper.get('[test-id="total0"]')
- // const total1 = wrapper.get('[test-id="total1"]')
- // expect(total0.text()).toEqual('151')
- // expect(total1.text()).toEqual('32')
- // resolve()
- // }, 200))
- // })
+ test('类型分类事件统计信息: npm events 类型分类事件图 ', async () => {
+ axiosPostAndMounted()
+
+ await new Promise(resolve => setTimeout(() => {
+ // type
+ const testNode0 = wrapper.get('[test-id="testNode0"]')
+ const testNode1 = wrapper.get('[test-id="testNode1"]')
+
+ expect(testNode0.text()).toEqual('dns error')
+ expect(testNode1.text()).toEqual('http error')
+
+ // total
+ const total0 = wrapper.get('[test-id="total0"]')
+ const total1 = wrapper.get('[test-id="total1"]')
+ expect(total0.text()).toEqual('151')
+ expect(total1.text()).toEqual('32')
+ resolve()
+ }, 200))
+ })
test('类型分类事件统计信息: npm events 类型分类事件图无数据 ', async () => {
axiosPostAndMounted(mockData.empty.data)
@@ -59,19 +59,19 @@ describe('views/charts2/charts/npm/NpmEventsByType.vue测试', () => {
resolve()
}, 200))
})
- // test('类型分类事件统计信息: npm events 类型分类事件图无Http Error类型 ', async () => {
- // const data = JSON.parse(JSON.stringify(mockData.common.data))
- // data.data.data.result = data.data.data.result.filter(item => item.eventType !== 'http error')
- // axiosPostAndMounted(data)
- //
- // await new Promise(resolve => setTimeout(() => {
- // const testNode0 = wrapper.get('[test-id="testNode0"]')
- // expect(testNode0.text()).toEqual('dns error')
- //
- // // total
- // const total0 = wrapper.get('[test-id="total0"]')
- // expect(total0.text()).toEqual('151')
- // resolve()
- // }, 200))
- // })
+ test('类型分类事件统计信息: npm events 类型分类事件图无Http Error类型 ', async () => {
+ const data = JSON.parse(JSON.stringify(mockData.common.data))
+ data.data.data.result = data.data.data.result.filter(item => item.eventType !== 'http error')
+ axiosPostAndMounted(data)
+
+ await new Promise(resolve => setTimeout(() => {
+ const testNode0 = wrapper.get('[test-id="testNode0"]')
+ expect(testNode0.text()).toEqual('dns error')
+
+ // total
+ const total0 = wrapper.get('[test-id="total0"]')
+ expect(total0.text()).toEqual('151')
+ resolve()
+ }, 200))
+ })
})