diff --git a/nezha-fronted/src/components/chart/chart/chartTopology.vue b/nezha-fronted/src/components/chart/chart/chartTopology.vue
index bef1a45d8..d4acf5a7a 100644
--- a/nezha-fronted/src/components/chart/chart/chartTopology.vue
+++ b/nezha-fronted/src/components/chart/chart/chartTopology.vue
@@ -1,15 +1,12 @@
@@ -18,9 +15,14 @@ import * as d3 from 'd3'
import chartMixin from '@/components/chart/chartMixin'
import chartFormat from '@/components/chart/chartFormat'
import '@svgdotjs/svg.panzoom.js'
+import alertLabelMixin from '@/components/common/mixin/alertLabelMixin'
+import alertLabel from '@/components/common/alert/alertLabel'
export default {
name: 'chartHexagonD3',
- mixins: [chartMixin, chartFormat],
+ components: {
+ alertLabel
+ },
+ mixins: [chartMixin, chartFormat, alertLabelMixin],
props: {
parentId: {
type: String,
@@ -65,8 +67,8 @@ export default {
dom.append(this.ForceGraph({ nodes: this.data.nodes, links: this.data.links }, {
width: dom.offsetWidth,
height: dom.offsetHeight,
- nodeStrength: -500,
- distanceNum: 200
+ nodeStrength: -50,
+ distanceNum: 150
}))
const svg = document.getElementById('svgHex' + this.chartId)
svg.setAttribute('width', '100%')
@@ -106,7 +108,7 @@ export default {
const icon = {
asset: 'data:image/png;base64,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',
endpoint: 'data:image/png;base64,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',
- dc: 'data:image/png;base64,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',
+ datacenter: 'data:image/png;base64,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',
project: 'data:image/png;base64,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',
module: 'data:image/png;base64,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'
}
@@ -138,6 +140,7 @@ export default {
const simulation = d3.forceSimulation(nodes)
.force('link', forceLink)
.force('charge', forceNode)
+ .alpha(1)
.on('tick', ticked)
const svg = d3.create('svg')
@@ -169,6 +172,8 @@ export default {
.attr('id', function (d) { return 'node' + d.id })
.attr('style', 'cursor:pointer')
.call(drag(simulation))
+ .on('mouseenter', nodeMouseover)// no i18n
+ .on('mouseleave', nodeMouseout)// no i18n
.on('click', showChildren)
render()
if (W) linkCopy.attr('stroke-width', ({ index: i }) => W[i])
@@ -224,14 +229,56 @@ export default {
.on('end', dragended)
}
- function nodeMouseover (d) {
- console.log(d, 'nodeMouseover')
+ function nodeMouseover (event, d) {
+ const paramsId = d.id.split('-')[1]
+ d.highlight = true
+ if (self.alertLabelId === paramsId) {
+ return
+ }
+ console.log(event, d, 'nodeMouseover')
+ self.alertLabelObj = {
+ position: {
+ x: event.x,
+ y: event.y
+ },
+ loading: true,
+ id: ''
+ }
+ if (self.timer) {
+ clearTimeout(self.timer)
+ self.timer = null
+ }
+ self.timer = setTimeout(() => {
+ self.alertLabelId = paramsId
+ self.alertLabelObj.id = paramsId
+ self.alertLabelType = d.type
+ self.alertLabelShow = true
+ }, 200)
}
- function nodeMouseout (d) {
- console.log(d, 'nodeMouseout')
+ function nodeMouseout (event, d) {
+ // console.log(d, 'nodeMouseout')
+ clearTimeout(self.timer)
+ self.timer = null
+ d.highlight = false
+ self.alertLabelShow = false
+ self.alertLabelId = ''
+ self.alertLabelObj = {
+ position: {
+ x: event.x,
+ y: event.y
+ },
+ loading: false,
+ id: ''
+ }
+ self.alertLabelType = d.type
}
- function showChildren (event, d) {
+ function showChildren (event, d, a) {
+ console.log(event, d, a, 'showChildren')
+ console.log(event.path[0].className.baseVal)
+ if (event.path[0].className.baseVal !== 'topology-button') {
+ return
+ }
if (d.hasChildren) {
hideChildren(d)
return
@@ -241,56 +288,20 @@ export default {
type: d.type,
id: d.id
}
+ params.id = params.id.split('-')[1]
self.$get('/stat/rel', params).then(res => {
- res = {
- data: {
- nodes: [
- {
- id: 'asset-4',
- type: 'asset',
- category: 'asset',
- name: 'ddd',
- hasChildren: false,
- alert: [{
- priority: 'P1',
- num: 11
- }]
- },
- {
- id: 'asset-5',
- type: 'asset',
- category: 'asset',
- name: 'ddd',
- hasChildren: false,
- alert: [{
- priority: 'P1',
- num: 11
- }]
- }
- ],
- links: [
- {
- source: 'asset-2',
- target: 'asset-4'
- }, {
- source: 'asset-2',
- target: 'asset-5'
- }
- ]
- }
- }
- const parentId = 'asset-2' || d.id
+ const parentId = d.id
+ res.data.nodes = res.data.nodes.filter(item => item.id !== parentId) // 处理连线 node 重复的问题
+ res.data.nodes = res.data.nodes.filter(item => item.id !== d.parentId)
+ res.data.links = res.data.links.filter(item => item.source !== d.parentId)
+ res.data.links = res.data.links.filter(item => item.target !== d.parentId)
res.data.nodes.forEach(item => {
- if (item.id === parentId) {
- item.hasChildren = true
- } else {
- item.hasChildren = false
- }
+ item.hasChildren = false
if (!item.parentId) {
item.parentId = parentId
}
- item.radius = 20 // 需要计算 分三级
- item.color = '#fa9' // 需要计算 分三级
+ item.radius = self.getRadius(item) // 需要计算 分三级
+ item.color = self.getColor(item) // 需要计算 分三级
})
nodes.push(...res.data.nodes)
simulation.stop()
@@ -323,8 +334,9 @@ export default {
})
}
function hideChildren (d) {
+ console.log(d, 'hideChildren')
+ // 创建一个数组 隐藏所有相关联的 节点 连线
if (d.id) {
- d.hasChildren = false
simulation.stop()
nodes = nodes.filter(child => child.parentId !== d.id)
node = node
@@ -347,6 +359,7 @@ export default {
simulation.nodes(nodes)
simulation.force('link').links(links)
simulation.alphaTarget(1).restart().tick()
+ d.hasChildren = false
}
}
function render () {
@@ -396,17 +409,21 @@ export default {
.attr('stroke-width', 1)
.attr('rx', '4')
.attr('ry', '4')
+ .attr('class', 'topology-button')
const button = node.append('svg')
.attr('width', '14px')
.attr('height', '14px')
.attr('x', function (d) { return nodeRadius * 1 + 2 })
.attr('y', function (d) { return d.radius * 1 + 9 })
.attr('style', 'cursor:pointer')
- .attr('class', function (d) { return d.hasChildren ? 'toggle-nodes' : 'hide' })
+ .attr('class', function (d) { return d.hasChildren ? 'toggle-nodes topology-button' : 'hide topology-button' })
.attr('viewBox', '0 0 512 512')
button.append('polygon')
.attr('points', '508.3,204.302 508.3,94.372 232.104,94.372 232.104,119.163 2.128,119.163 2.128,148.02 103.282,148.02 103.282,395.751 104.073,395.751 104.073,395.879 231.416,395.879 231.416,433.091 507.612,433.091 507.612,323.161 231.416,323.161 231.416,365.65 135.572,365.65 135.572,148.02 232.104,148.02 232.104,204.302 ')
.attr('fill', function (d) { return d.hasChildren ? '#666666' : '#FA901C' })
+ .attr('class', 'topology-button')
+ // .off('click', showChildren.bind(this, '2'))
+ // .on('click', showChildren.bind(this, '2'))
node.attr('class', function (d) {
let cl = 'node'
if (d.hasChildren && (d.expanded == undefined || (d.expanded != undefined && d.expanded == false))) {
@@ -421,25 +438,6 @@ export default {
}, 1000)
return Object.assign(svg.node(), { scales: { color } })
},
- update (nodes, links) {
- const force = d3.forceSimulation()
- force.nodes(nodes)
- force.force('link').links(links)//
- },
- hexagonOver (that, e) { // 移入六边形
- this.tooltip.title = that.alias
- this.tooltip.value = that.showValue
- this.tooltip.show = true
- this.setPosition(e)
- },
- hexagonMove (e) { // 六边形内移动
- if (this.tooltip.show) {
- this.setPosition(e)
- }
- },
- hexagonOut (that) {
- this.tooltip.show = false
- },
setPosition (e) {
const windowWidth = window.innerWidth// 窗口宽度
const windowHeight = window.innerHeight// 窗口高度
@@ -465,6 +463,35 @@ export default {
showChildren () {
this.upDate()
},
+ getRadius (item) {
+ let sum = 0
+ item.alert && item.alert.forEach(alert => {
+ sum += alert.num
+ })
+ if (sum === 0) {
+ return 15
+ } else if (sum <= 10) {
+ return 25
+ } else {
+ return 35
+ }
+ },
+ getColor (item) {
+ const arr = []
+ let color = ''
+ item.alert && item.alert.forEach(alert => {
+ arr.push(alert.priority)
+ })
+ this.severityDataWeight.forEach(severity => {
+ if (arr.indexOf(severity.name) !== -1 && !color && severity.num > 0) {
+ color = severity.color
+ }
+ })
+ if (!arr.length || !color) {
+ color = '#23bf9a'
+ }
+ return color
+ },
upDate () {
}
diff --git a/nezha-fronted/src/components/chart/panelChart.vue b/nezha-fronted/src/components/chart/panelChart.vue
index fb8117dce..aaf867304 100644
--- a/nezha-fronted/src/components/chart/panelChart.vue
+++ b/nezha-fronted/src/components/chart/panelChart.vue
@@ -365,102 +365,102 @@ export default {
}
this.$get('/stat/rel', params).then(res => {
this.loading = false
- console.log(res)
- const parentId = 'asset-1' || this.chartInfo.id
- res = {
- msg: 'success',
- code: 200,
- data: {
- nodes: [{
- id: 'asset-1',
- type: 'asset',
- category: 'asset',
- name: 'dddeee',
- hasChildren: false,
- alert: [{
- priority: 'P2',
- num: 7
- }, {
- priority: 'P3',
- num: 5
- }]
- }, {
- id: 'endpoint-1',
- type: 'endpoint',
- category: 'endpoint',
- name: 'ddd',
- hasChildren: true,
- alert: [{
- priority: 'P3',
- num: 1
- }]
- },
- {
- id: 'asset-2',
- type: 'dc',
- category: 'asset',
- name: 'ddd',
- hasChildren: false,
- alert: [{
- priority: 'P1',
- num: 10
- }]
- }, {
- id: 'endpoint-2',
- type: 'project',
- category: 'endpoint',
- name: 'ddd',
- hasChildren: true,
- alert: [{
- priority: 'P1',
- num: 30
- }]
- },
- {
- id: 'asset-3',
- type: 'module',
- category: 'asset',
- name: 'ddd',
- hasChildren: false,
- alert: [{
- priority: 'P1',
- num: 10
- }]
- }, {
- id: 'endpoint-3',
- type: 'endpoint',
- category: 'endpoint',
- name: 'ddd',
- hasChildren: true,
- alert: [{
- priority: 'P3',
- num: 10
- }]
- }
- ],
- links: [{
- source: 'asset-1',
- target: 'endpoint-1'
- },
- {
- source: 'asset-1',
- target: 'endpoint-2'
- },
- {
- source: 'asset-1',
- target: 'endpoint-3'
- },
- {
- source: 'asset-1',
- target: 'asset-2'
- },
- {
- source: 'asset-1',
- target: 'asset-3'
- }
- ]
- }
- }
+ console.log(this.chartInfo,this.chartInfo.id)
+ const parentId = this.chartInfo.linkType + '-' + this.chartInfo.id
+ // res = {
+ // msg: 'success',
+ // code: 200,
+ // data: {
+ // nodes: [{
+ // id: 'asset-1',
+ // type: 'asset',
+ // category: 'asset',
+ // name: 'dddeee',
+ // hasChildren: false,
+ // alert: [{
+ // priority: 'P2',
+ // num: 7
+ // }, {
+ // priority: 'P3',
+ // num: 5
+ // }]
+ // }, {
+ // id: 'endpoint-1',
+ // type: 'endpoint',
+ // category: 'endpoint',
+ // name: 'ddd',
+ // hasChildren: true,
+ // alert: [{
+ // priority: 'P3',
+ // num: 1
+ // }]
+ // },
+ // {
+ // id: 'asset-2',
+ // type: 'dc',
+ // category: 'asset',
+ // name: 'ddd',
+ // hasChildren: false,
+ // alert: [{
+ // priority: 'P1',
+ // num: 10
+ // }]
+ // }, {
+ // id: 'endpoint-2',
+ // type: 'project',
+ // category: 'endpoint',
+ // name: 'ddd',
+ // hasChildren: true,
+ // alert: [{
+ // priority: 'P1',
+ // num: 30
+ // }]
+ // },
+ // {
+ // id: 'asset-3',
+ // type: 'module',
+ // category: 'asset',
+ // name: 'ddd',
+ // hasChildren: false,
+ // alert: [{
+ // priority: 'P1',
+ // num: 10
+ // }]
+ // }, {
+ // id: 'endpoint-3',
+ // type: 'endpoint',
+ // category: 'endpoint',
+ // name: 'ddd',
+ // hasChildren: true,
+ // alert: [{
+ // priority: 'P3',
+ // num: 10
+ // }]
+ // }
+ // ],
+ // links: [{
+ // source: 'asset-1',
+ // target: 'endpoint-1'
+ // },
+ // {
+ // source: 'asset-1',
+ // target: 'endpoint-2'
+ // },
+ // {
+ // source: 'asset-1',
+ // target: 'endpoint-3'
+ // },
+ // {
+ // source: 'asset-1',
+ // target: 'asset-2'
+ // },
+ // {
+ // source: 'asset-1',
+ // target: 'asset-3'
+ // }
+ // ]
+ // }
+ // }
res.data.nodes.forEach(item => {
item.parentId = parentId
if (item.id === parentId) {
@@ -607,7 +607,7 @@ export default {
arr.push(alert.priority)
})
this.severityDataWeight.forEach(severity => {
- if (arr.indexOf(severity.name) !== -1 && !color) {
+ if (arr.indexOf(severity.name) !== -1 && !color && severity.num > 0) {
color = severity.color
}
})
diff --git a/nezha-fronted/src/components/common/table/settings/dcTable.vue b/nezha-fronted/src/components/common/table/settings/dcTable.vue
index 61f420f09..a534b628e 100644
--- a/nezha-fronted/src/components/common/table/settings/dcTable.vue
+++ b/nezha-fronted/src/components/common/table/settings/dcTable.vue
@@ -107,7 +107,7 @@
{{$t('overall.duplicate')}}
{{$t('overall.delete')}}
- {{$t('overall.topology')}}
+ {{$t('overall.topology')}}