feat: npm dashboard初始化

This commit is contained in:
chenjinsong
2022-07-18 15:04:32 +08:00
parent 4c1ac043f1
commit 930647f416
14 changed files with 147 additions and 20 deletions

View File

@@ -46,8 +46,9 @@
@import './components/rightBox/report/builtinReportBox'; @import './components/rightBox/report/builtinReportBox';
@import './views/charts2/panel'; @import './views/charts2/panel';
@import 'views/charts2/networkOverviewLine'; @import './views/charts2/networkOverviewLine';
@import 'views/charts2/networkOverviewDdosDetection'; @import './views/charts2/networkOverviewDdosDetection';
@import 'views/charts2/networkOverviewPerformanceEvent'; @import './views/charts2/networkOverviewPerformanceEvent';
@import 'views/charts2/networkOverviewTabs'; @import './views/charts2/networkOverviewTabs';
@import './views/charts2/npmTabs';
//@import '../chart'; //@import '../chart';

View File

@@ -0,0 +1,38 @@
.npm-tabs {
.el-tabs--top .el-tabs__item.is-top:nth-child(2) {
padding-left: 20px;
}
.el-tabs--top .el-tabs__item {
padding: 0;
}
.el-tabs__active-bar.is-top {
top: 0;
height: 3px;
border-radius: 5px 2.5px 0 0;
}
.el-tabs__item.is-top {
.npm-tab__label {
padding: 0 20px;
color: #353636;
font-size: 14px;
font-weight: bold;
box-sizing: border-box;
i {
padding-right: 7px;
font-size: 16px;
font-weight: normal;
}
}
&.is-active {
.npm-tab__label {
color: #353636;
box-shadow: 1px 0 0px 0px #E2E5EC, inset 1px 0 0 #E2E5EC;
i {
color: #046EC9;
}
}
}
}
}

View File

@@ -1,8 +1,8 @@
@font-face { @font-face {
font-family: "cn-icon"; /* Project id 2614877 */ font-family: "cn-icon"; /* Project id 2614877 */
src: url('iconfont.woff2?t=1657871017803') format('woff2'), src: url('iconfont.woff2?t=1658116710807') format('woff2'),
url('iconfont.woff?t=1657871017803') format('woff'), url('iconfont.woff?t=1658116710807') format('woff'),
url('iconfont.ttf?t=1657871017803') format('truetype'); url('iconfont.ttf?t=1658116710807') format('truetype');
} }
.cn-icon { .cn-icon {
@@ -13,39 +13,39 @@
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
.cn-icon-a-SocialNetwork:before { .cn-icon-social-network:before {
content: "\e79b"; content: "\e79b";
} }
.cn-icon-Video:before { .cn-icon-video:before {
content: "\e79c"; content: "\e79c";
} }
.cn-icon-VoIP:before { .cn-icon-voip:before {
content: "\e79d"; content: "\e79d";
} }
.cn-icon-Email:before { .cn-icon-email:before {
content: "\e79e"; content: "\e79e";
} }
.cn-icon-Gaming:before { .cn-icon-gaming:before {
content: "\e79f"; content: "\e79f";
} }
.cn-icon-a-FileSharing:before { .cn-icon-file-sharing:before {
content: "\e7a0"; content: "\e7a0";
} }
.cn-icon-Location:before { .cn-icon-location:before {
content: "\e798"; content: "\e798";
} }
.cn-icon-Events:before { .cn-icon-events:before {
content: "\e799"; content: "\e799";
} }
.cn-icon-Overview:before { .cn-icon-overview:before {
content: "\e79a"; content: "\e79a";
} }

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -43,6 +43,8 @@
</el-breadcrumb-item> </el-breadcrumb-item>
</el-breadcrumb> </el-breadcrumb>
</div> </div>
<!-- 菜单 -->
<el-drawer <el-drawer
v-model="showMenu" v-model="showMenu"
direction="ttb" direction="ttb"
@@ -69,6 +71,8 @@
</div> </div>
</div> </div>
</el-drawer> </el-drawer>
<!-- 改密码 -->
<el-dialog v-model="showChangePin" <el-dialog v-model="showChangePin"
width="30%" width="30%"
:before-close="handleClose"> :before-close="handleClose">

View File

@@ -17,6 +17,14 @@
<network-overview-tabs <network-overview-tabs
v-else-if="chart.type === typeMapping.networkOverview.table" v-else-if="chart.type === typeMapping.networkOverview.table"
></network-overview-tabs> ></network-overview-tabs>
<npm-tabs
v-else-if="chart.type === typeMapping.npm.npmTabs"
@tabChange="index => $emit('tabChange', index)"
></npm-tabs>
<npm-network-quantity
v-else-if="chart.type === typeMapping.npm.npmNetworkQuantity"
:chart="chart"
></npm-network-quantity>
</div> </div>
</template> </template>
@@ -28,6 +36,8 @@ import NetworkOverviewLine from '@/views/charts2/charts/NetworkOverviewLine'
import NetworkOverviewDdosDetection from '@/views/charts2/charts/NetworkOverviewDdosDetection' import NetworkOverviewDdosDetection from '@/views/charts2/charts/NetworkOverviewDdosDetection'
import NetworkOverviewPerformanceEvent from '@/views/charts2/charts/NetworkOverviewPerformanceEvent' import NetworkOverviewPerformanceEvent from '@/views/charts2/charts/NetworkOverviewPerformanceEvent'
import NetworkOverviewTabs from '@/views/charts2/charts/NetworkOverviewTabs' import NetworkOverviewTabs from '@/views/charts2/charts/NetworkOverviewTabs'
import NpmTabs from '@/views/charts2/charts/NpmTabs'
import NpmNetworkQuantity from '@/views/charts2/charts/NpmNetworkQuantity'
export default { export default {
name: 'Chart', name: 'Chart',
components: { components: {
@@ -36,7 +46,9 @@ export default {
NetworkOverviewLine, NetworkOverviewLine,
NetworkOverviewDdosDetection, NetworkOverviewDdosDetection,
NetworkOverviewPerformanceEvent, NetworkOverviewPerformanceEvent,
NetworkOverviewTabs NetworkOverviewTabs,
NpmTabs,
NpmNetworkQuantity
}, },
props: { props: {
chart: Object chart: Object

View File

@@ -19,8 +19,19 @@
:h="item.h" :h="item.h"
:i="item.i" :i="item.i"
:key="item.i"> :key="item.i">
<!-- npm-tab特殊处理 -->
<template v-if="panelType === panelTypeAndRouteMapping.networkAppPerformance">
<chart
v-if="item.type === typeMapping.npm.npmTabs || item.params.tabIndex === npmTabIndex"
:id="item.id"
:chart="item"
@tabChange="index => { this.npmTabIndex = index }"
></chart>
</template>
<chart <chart
:chart="item" v-else
:id="item.id"
:chart="item"
></chart> ></chart>
</grid-item> </grid-item>
</grid-layout> </grid-layout>
@@ -31,17 +42,23 @@
import VueGridLayout from 'vue-grid-layout' import VueGridLayout from 'vue-grid-layout'
import _ from 'lodash' import _ from 'lodash'
import Chart from '@/views/charts2/Chart' import Chart from '@/views/charts2/Chart'
import { panelTypeAndRouteMapping } from '@/utils/constants'
import { typeMapping } from '@/views/charts2/chart-tools'
export default { export default {
name: 'ChartList', name: 'ChartList',
props: { props: {
timeFilter: Object, timeFilter: Object,
panelType: Number,
chartList: Array, chartList: Array,
panelLock: Boolean, panelLock: Boolean,
entity: Object entity: Object
}, },
data () { data () {
return { return {
layout: [] panelTypeAndRouteMapping,
typeMapping,
layout: [],
npmTabIndex: 0
} }
}, },
components: { components: {

View File

@@ -22,6 +22,7 @@
ref="chartList" ref="chartList"
:time-filter="timeFilter" :time-filter="timeFilter"
:chart-list="chartList" :chart-list="chartList"
:panel-type="panelType"
:panel-lock="panelLock" :panel-lock="panelLock"
:entity="entity" :entity="entity"
></chart-list> ></chart-list>

View File

@@ -5,5 +5,9 @@ export const typeMapping = {
performanceEvent: 302, performanceEvent: 302,
table: 601, table: 601,
ddosDetection: 701 ddosDetection: 701
},
npm: {
npmTabs: 704,
npmNetworkQuantity: 703
} }
} }

View File

@@ -0,0 +1,9 @@
<template>
<div style="height: 100%; width: 100%; border: 1px solid gray"></div>
</template>
<script>
export default {
name: 'NpmNetworkQuantity'
}
</script>

View File

@@ -0,0 +1,41 @@
<template>
<div class="npm-tabs">
<el-tabs @tab-change="tabChange">
<el-tab-pane>
<template #label>
<div class="npm-tab__label">
<i class="cn-icon cn-icon-overview"></i>
<span>{{$t('overall.overview')}}</span>
</div>
</template>
</el-tab-pane>
<el-tab-pane>
<template #label>
<div class="npm-tab__label">
<i class="cn-icon cn-icon-location"></i>
<span>{{$t('overall.location')}}</span>
</div>
</template>
</el-tab-pane>
<el-tab-pane>
<template #label>
<div class="npm-tab__label">
<i class="cn-icon cn-icon-events"></i>
<span>{{$t('overall.events')}}</span>
</div>
</template>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
export default {
name: 'NpmTabs',
methods: {
tabChange (index) {
this.$emit('tabChange', index)
}
}
}
</script>