diff --git a/src/assets/css/components/index.scss b/src/assets/css/components/index.scss index 847a2740..c46774e8 100644 --- a/src/assets/css/components/index.scss +++ b/src/assets/css/components/index.scss @@ -38,6 +38,7 @@ @import './views/charts/chartEchartAppRelateDomain'; @import './views/charts/ChartOneSituationStatistics'; @import './views/charts/ChartTwoSituationStatistics'; +@import './views/charts/chartMap'; //@import '../chart'; diff --git a/src/assets/css/components/views/charts/chartMap.scss b/src/assets/css/components/views/charts/chartMap.scss new file mode 100644 index 00000000..98e71c3b --- /dev/null +++ b/src/assets/css/components/views/charts/chartMap.scss @@ -0,0 +1,60 @@ +.cn-chart__map { + display: flex; + flex-direction: column; + height: 100%; + + .map-drawing { + flex: 1; + } + .map-chart__legends { + flex-basis: 116px; + display: flex; + justify-content: center; + align-items: flex-start; + padding: 0 30px; + + .map-chart__legend { + padding-bottom: 5px; + flex-grow: 0; + flex-shrink: 1; + display: flex; + flex-direction: column; + align-items: center; + border: 1px solid #E0E6EF; + border-left-color: transparent; + border-right-color: transparent;; + cursor: pointer; + + &:first-of-type { + border-left-color: #E0E6EF; + } + &:last-of-type { + border-right-color: #E0E6EF; + } + &.map-chart__legend--active { + border-color: #59ABFF; + + .legend__value { + color: #1890FF; + } + } + .legend__circle-marker { + flex: 0 0 12px; + margin: 12px 0 8px 0; + width: 12px; + border-radius: 50%; + } + .legend__value { + font-size: 18px; + font-weight: bold; + color: #333333; + } + .legend__name { + padding: 0 10px; + color: #666666; + font-size: 12px; + text-align: center; + } + } + } +} diff --git a/src/utils/constants.js b/src/utils/constants.js index 693e3ff9..294518fb 100644 --- a/src/utils/constants.js +++ b/src/utils/constants.js @@ -130,7 +130,19 @@ export const unitTypes = { export const chartTableDefaultPageSize = 10 // table类型图表默认每页数据量 export const chartTableTopOptions = [10, 100] // table类型图表的TOP-N选项 export const chartActiveIpTableOrderOptions = ['machine'] // active ip table类型图表的order 选项 -// table类型图表的TOP-N选项 +// table类型图表column映射 +export const chartTableColumnMapping = { + sessions: 'overall.sessions', + packets: 'overall.packets', + bytes: 'overall.bytes', + clientIp: 'overall.clientIp', + serverIp: 'overall.serverIp', + domain: 'overall.domain', + appName: 'overall.appName', + queryRate: 'dns.queryRate', + dnsLatency: 'dns.averageResolveLatency', + responseFailRate: 'dns.responseFailureRate' +} export const chartPieTableTopOptions = [ { name: 'Sessions', value: 'sessions' }, { name: 'Packets', value: 'packets' }, diff --git a/src/utils/date-util.js b/src/utils/date-util.js index 62dac86b..85c6c3f5 100644 --- a/src/utils/date-util.js +++ b/src/utils/date-util.js @@ -29,7 +29,7 @@ export function getMillisecond (time) { ms = Math.floor(time * (10 ** (0 - difference))) } } - return ms + return ms ? Number(ms) : null } // 初始化日期 export function getNowTime (interval) { diff --git a/src/utils/tools.js b/src/utils/tools.js index adb545ed..8427d3f9 100644 --- a/src/utils/tools.js +++ b/src/utils/tools.js @@ -444,12 +444,18 @@ export function lineToHump (name) { } // 下划线转换空格首位大写 export function lineToSpace (name) { + if (_.isEmpty(name)) { + return '' + } return _.upperFirst(name.replace(/\_(\w)/g, function (all, letter) { return ` ${letter.toUpperCase()}` })) } // 驼峰转换下划线 export function humpToLine (name) { + if (_.isEmpty(name)) { + return '' + } return name.replace(/([A-Z])/g, '_$1').toLowerCase() } // 搜索功能:对象转字符串 diff --git a/src/views/charts/Chart.vue b/src/views/charts/Chart.vue index 9a585195..f299f370 100644 --- a/src/views/charts/Chart.vue +++ b/src/views/charts/Chart.vue @@ -16,6 +16,7 @@ :chart-data="chartData" :query-params="queryParams" :entity="entity" + @query="query" @showLoading="showLoading" > @@ -79,7 +80,7 @@ > {{chartInfo.i18n ? $t(chartInfo.i18n) : chartInfo.name}} -
{{chartInfo.i18n ? $t(chartInfo.i18n) : chartInfo.name}}
-