From b5a980ed3f01b867fa6c20a3ed62b365703aae90 Mon Sep 17 00:00:00 2001 From: "@changcode" Date: Fri, 12 Aug 2022 15:25:54 +0800 Subject: [PATCH] =?UTF-8?q?CN-667=20feat:=20Dashboard=20-=20npm=20-=20?= =?UTF-8?q?=E4=B8=8B=E9=92=BB=20-=20=E6=B5=81=E9=87=8F=E6=8A=98=E7=BA=BF?= =?UTF-8?q?=E5=9B=BE=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/css/components/index.scss | 2 + .../views/charts2/npmRecentEvents.scss | 14 + .../views/charts2/npmRelatedSessions.scss | 86 ++++++ .../views/charts2/npmTrafficLine.scss | 32 ++ src/utils/api.js | 8 +- src/views/charts/charts/tools.js | 24 ++ .../networkOverview/NetworkOverviewLine.vue | 6 +- .../charts2/charts/npm/NpmEventsByType.vue | 87 +++--- .../charts2/charts/npm/NpmEventsHeader.vue | 23 +- .../charts2/charts/npm/NpmRecentEvents.vue | 14 +- .../charts2/charts/npm/NpmTrafficLine.vue | 278 +++++++++++++++++- .../charts2/charts/npm/RelatedSessions.vue | 82 +++++- .../charts2/charts/options/echartOption.js | 71 +++++ 13 files changed, 668 insertions(+), 59 deletions(-) create mode 100644 src/assets/css/components/views/charts2/npmRelatedSessions.scss create mode 100644 src/assets/css/components/views/charts2/npmTrafficLine.scss diff --git a/src/assets/css/components/index.scss b/src/assets/css/components/index.scss index 103d3aa6..87fcef18 100644 --- a/src/assets/css/components/index.scss +++ b/src/assets/css/components/index.scss @@ -60,4 +60,6 @@ @import './views/charts2/npmEventsByType'; @import './views/charts2/npmRecentEvents'; @import './views/charts2/npmAppEventTable'; +@import './views/charts2/npmRelatedSessions'; +@import './views/charts2/npmTrafficLine'; //@import '../chart'; diff --git a/src/assets/css/components/views/charts2/npmRecentEvents.scss b/src/assets/css/components/views/charts2/npmRecentEvents.scss index fae8d737..04a287b6 100644 --- a/src/assets/css/components/views/charts2/npmRecentEvents.scss +++ b/src/assets/css/components/views/charts2/npmRecentEvents.scss @@ -26,6 +26,20 @@ tr td { padding: 7.5px 0; } + .el-table__empty-block .el-table__empty-text { + line-height: 25px; + .table-no-data { + .icon { + width: 30px; + height: 30px; + } + .table-no-data__title { + font-size: 14px; + color: #575757; + font-weight: 400; + } + } + } } } .data-recent-table { diff --git a/src/assets/css/components/views/charts2/npmRelatedSessions.scss b/src/assets/css/components/views/charts2/npmRelatedSessions.scss new file mode 100644 index 00000000..970bb896 --- /dev/null +++ b/src/assets/css/components/views/charts2/npmRelatedSessions.scss @@ -0,0 +1,86 @@ +.npm-sessions { + height: 100%; + width: 100%; + .npm-sessions-title { + font-size: 14px; + color: #353636; + font-weight: 500; + } + .npm-sessions-div { + display: flex; + margin: 10px 0 10px 0; + width: 100%; + height: 12px; + .npm-sessions-div-red { + height: 100%; + background: #E26154; + border: 1px solid #E26154; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + border-left: none; + } + .npm-sessions-div-green { + height: 100%; + background: #7E9F54; + border: 1px solid #7E9F54; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + border-right: none; + } + } + + .npm-sessions-body { + display: flex; + justify-content: space-between; + .npm-sessions-body-left { + display: flex; + .npm-sessions-as-clients.right { + margin-right: 45px; + } + .npm-sessions-as-clients { + display: flex; + flex-direction: column; + align-items: center; + .npm-sessions-as-client { + display: flex; + align-items: center; + .npm-sessions-as-client-i18n { + ont-size: 12px; + color: #717171; + font-weight: 400; + } + .npm-sessions-as-client-percent { + font-size: 18px; + color: #353636; + font-weight: 700; + } + .npm-sessions-as-client-green,.npm-sessions-as-client-red { + width: 8px; + height: 8px; + border-radius: 50%; + } + .npm-sessions-as-client-green { + background: green; + } + .npm-sessions-as-client-red { + background: red; + } + } + } + } + .npm-sessions-body-right { + text-align: right; + .npm-sessions-Progress-number { + font-size: 14px; + color: #353636; + font-weight: 700; + } + .npm-sessions-Progress-unit { + font-size: 12px; + color: #717171; + font-weight: 400; + } + } + + } +} diff --git a/src/assets/css/components/views/charts2/npmTrafficLine.scss b/src/assets/css/components/views/charts2/npmTrafficLine.scss new file mode 100644 index 00000000..2d07ee86 --- /dev/null +++ b/src/assets/css/components/views/charts2/npmTrafficLine.scss @@ -0,0 +1,32 @@ +.npm-traffic-line { + height: 100%; + width: 100%; + .npm-traffic-line-title { + font-size: 14px; + color: #353636; + font-weight: 600; + height: 32px; + } + .npm-traffic-line-body { + border: 1px solid #E2E5EC; + border-radius: 4px; + height: calc(100% - 32px); + width: 100%; + .chart-drawing { + height: 100%; + width: 100%; + .echarts-tooltip.echarts-tooltip-dark { + .cn-chart-tooltip { + display: flex; + justify-content: space-between; + .cn-chart-tooltip-value.cn-chart-tooltip__color { + font-size: 12px; + color: #353636; + line-height: 21px; + font-weight: 600; + } + } + } + } + } +} diff --git a/src/utils/api.js b/src/utils/api.js index b49de665..cec8de27 100644 --- a/src/utils/api.js +++ b/src/utils/api.js @@ -158,7 +158,11 @@ export const api = { appHttpResponseDelay: '/interface/application/performance/overview/appHttpResponseDelay', appSslConDelay: '/interface/application/performance/overview/appSslConDelay', appTcpLostlenPercent: '/interface/application/performance/overview/appTcpLostlenPercent', - appPacketRetransPercent: '/interface/application/performance/overview/appPacketRetransPercent' + appPacketRetransPercent: '/interface/application/performance/overview/appPacketRetransPercent', + // 各维度下钻会话统计 + relatedSessions: '/interface/application/performance/relatedSessions', + // 各维度下钻流量曲线图 + trafficGraph: '/interface/application/performance/overview/drilldown/drilldown/dimension/trafficGraph' }, location: { // 折线图 @@ -167,7 +171,7 @@ export const api = { httpResponseLatency: '/interface/application/performance/location/httpResponseLatency', sslHandshakeLatency: '/interface/application/performance/location/sslHandshakeLatency', packetsLoss: '/interface/application/performance/location/packetsLoss', - packetsRetrains: '/interface/application/performance/location/packetsRetrains', + packetsRetrains: '/interface/application/performance/location/packetsRetrains' }, events: { list: '/interface/overview/event/list', diff --git a/src/views/charts/charts/tools.js b/src/views/charts/charts/tools.js index b8a15ea0..3626edcf 100644 --- a/src/views/charts/charts/tools.js +++ b/src/views/charts/charts/tools.js @@ -484,3 +484,27 @@ export function stackedLineTooltipFormatter (params) { str += '' return str } +export function trafficLineTooltipFormatter (params) { + let str = '
' + params.forEach((item, i) => { + const tData = item.data[0] + if (i === 0) { + str += '
' + str += dateFormatByAppearance(tData) + str += '
' + } + str += '
' + str += '' + str += item.marker + str += ` + ${item.seriesName} + ` + str += '' + str += ` + ${unitConvert(item.data[1], item.value[2]).join(' ')} + ` + str += '
' + }) + str += '
' + return str +} diff --git a/src/views/charts2/charts/networkOverview/NetworkOverviewLine.vue b/src/views/charts2/charts/networkOverview/NetworkOverviewLine.vue index 885e3ec5..773bab4b 100644 --- a/src/views/charts2/charts/networkOverview/NetworkOverviewLine.vue +++ b/src/views/charts2/charts/networkOverview/NetworkOverviewLine.vue @@ -138,7 +138,6 @@ export default { sizes: [3, 4, 6, 8, 9, 10], echartsLabelValue: '', echartsType: 'Bits/s', - echartsData: {}, dynamicVariable: '', showMarkLine: true, isNoData: false @@ -286,7 +285,7 @@ export default { } ]) }, - data: t.data.map(v => [Number(v[0]) * 1000, Number(v[1])]), + data: t.data.map(v => [Number(v[0]) * 1000, Number(v[1]), 'number']), markLine: { silent: true, lineStyle: { @@ -464,9 +463,6 @@ export default { } }, mounted () { - if (this.chart) { - this.echartsData = _.cloneDeep(this.chart) - } this.timer = setTimeout(() => { this.init() }, 200) diff --git a/src/views/charts2/charts/npm/NpmEventsByType.vue b/src/views/charts2/charts/npm/NpmEventsByType.vue index 17f3a2ba..b30ead1c 100644 --- a/src/views/charts2/charts/npm/NpmEventsByType.vue +++ b/src/views/charts2/charts/npm/NpmEventsByType.vue @@ -8,15 +8,15 @@
{{ $t('overall.type') }}
{{ $t('network.total') }}
@@ -26,11 +26,19 @@ + diff --git a/src/views/charts2/charts/npm/RelatedSessions.vue b/src/views/charts2/charts/npm/RelatedSessions.vue index 71e05f76..fb655f85 100644 --- a/src/views/charts2/charts/npm/RelatedSessions.vue +++ b/src/views/charts2/charts/npm/RelatedSessions.vue @@ -1,9 +1,87 @@ diff --git a/src/views/charts2/charts/options/echartOption.js b/src/views/charts2/charts/options/echartOption.js index b5ab8838..ffe2415e 100644 --- a/src/views/charts2/charts/options/echartOption.js +++ b/src/views/charts2/charts/options/echartOption.js @@ -320,3 +320,74 @@ export const npmLineChartOption = { } ] } + +export const trafficLineChartOption = { + color: chartColor3, + tooltip: { + trigger: 'axis', + className: 'echarts-tooltip echarts-tooltip-dark' + }, + legend: { + show: true, + left: '0.8%', + top: '4%', + padding: 2, + orient: 'horizontal', + icon: 'circle', + itemGap: 20, + itemWidth: 8, + textStyle: { + padding: [0, 0, 0, 2], + fontSize: 12, + color: '#717171', + fontWeight: 400, + fontFamily: 'NotoSansSChineseRegular' + } + }, + grid: { + top: '21%', + left: '2%', + right: '1%', + bottom: 20, + containLabel: true + }, + xAxis: [ + { + type: 'time', + splitNumber: 12, + axisLabel: { + formatter: function (value) { + const data = new Date(value) + const h = data.getHours() > 9 ? data.getHours() : '0' + data.getHours() + const m = data.getMinutes() > 9 ? data.getMinutes() : '0' + data.getMinutes() + return h + ':' + m + } + } + } + ], + yAxis: [ + { + type: 'value', + splitLine: { + show: false + }, + axisLabel: { + formatter: function (value) { + return unitConvert(value, unitTypes.number).join('') + } + } + } + ], + series: [ + { + type: 'line', + symbol: 'circle', + smooth: true, + showSymbol: false, + emphasis: { + focus: 'series' + }, + data: [] + } + ] +}