diff --git a/nezha-fronted/src/assets/css/components/common/project/L5/CanvasContextMenu.scss b/nezha-fronted/src/assets/css/components/common/project/L5/CanvasContextMenu.scss index f44e0e33e..1bcc61132 100644 --- a/nezha-fronted/src/assets/css/components/common/project/L5/CanvasContextMenu.scss +++ b/nezha-fronted/src/assets/css/components/common/project/L5/CanvasContextMenu.scss @@ -8,23 +8,22 @@ & > div { line-height: 2.2; - a { - color: $--color-text-primary; + color: $--color-text-primary; + &:hover { + color: $--color-primary; + } + span { display: block; padding: 0 0.2rem; text-decoration: none; cursor: pointer; - &:hover { - color: #1890ff; - } - &.flex { display: flex; } &.disabled { - color: #ccc; + color: $--color-text-disabled; cursor: default; } } diff --git a/nezha-fronted/src/assets/css/components/common/project/L5/topologyTopTool.scss b/nezha-fronted/src/assets/css/components/common/project/L5/topologyTopTool.scss index ef8540c3b..cb72830d4 100644 --- a/nezha-fronted/src/assets/css/components/common/project/L5/topologyTopTool.scss +++ b/nezha-fronted/src/assets/css/components/common/project/L5/topologyTopTool.scss @@ -36,6 +36,9 @@ line-height: 14px; margin-right: 10px; } + .is-active-meta2d.top-tool-item { + background: $--background-color-disabled; + } .top-tool-item-scale { margin-left: 40px; padding: 0; diff --git a/nezha-fronted/src/components/common/project/meta2d/CanvasContextMenu.vue b/nezha-fronted/src/components/common/project/meta2d/CanvasContextMenu.vue new file mode 100644 index 000000000..da5dac74e --- /dev/null +++ b/nezha-fronted/src/components/common/project/meta2d/CanvasContextMenu.vue @@ -0,0 +1,153 @@ + + + + + diff --git a/nezha-fronted/src/components/common/project/meta2d/js/meta2dMain.js b/nezha-fronted/src/components/common/project/meta2d/js/meta2dMain.js index cb5abadff..3957402ed 100644 --- a/nezha-fronted/src/components/common/project/meta2d/js/meta2dMain.js +++ b/nezha-fronted/src/components/common/project/meta2d/js/meta2dMain.js @@ -35,12 +35,18 @@ export default { legends: [], title: '', titleShow: true - } + }, + contextmenu: { + left: null, + top: null, + bottom: null + }, + setContextmenu: true } }, mixins: [topoUtil], methods: { - init () { + init: function () { const meta2dOptions = { minScale: 0.25, maxScale: 2 @@ -55,6 +61,7 @@ export default { // meta2d.registerCanvasDraw(chartsPens()) /* 画布绑定事件 */ meta2d.beforeAddPens = (pens) => { // 添加画笔前 + bus.$emit('changeDrawState') if (pens.length === 1) { if (!pens[0].type) { this.nodeInit(pens[0]) @@ -69,7 +76,7 @@ export default { // 返回 true 允许 remove return true } - // getTopology(this.topoData)).on('translate', this.topTranslate) // 平移· + meta2d.on('translate', this.topTranslate) // 平移· meta2d.on('active', this.pensActive) // 选中· // meta2d.on('translatePens', () => {}) // 移动画笔结束· // meta2d.on('translatingPens', () => {}) // 移动画笔进行中· @@ -77,15 +84,13 @@ export default { meta2d.on('leave', this.penLeave) // 移出画笔· // meta2d.on('add', this.appPen) // 添加新画笔· meta2d.on('click', this.topoClick) // click画笔· - setTopology(this.meta2dId, meta2d) }, reload () { + this.position.show = false const endTime = new Date().getTime() const startTime = endTime - 60 * this.params.timeType * 1000 - console.log(startTime) this.getQueryValues(this.querysArray, startTime, endTime).then((arr) => { - console.log(arr) this.clacTopoData(this.topoData, arr).then((data) => { getTopology(this.meta2dId).resize() getTopology(this.meta2dId).open(data) @@ -110,6 +115,11 @@ export default { statistic: 'last', parent: '', value: '', + source: 'text', + textParent: '', + textLegend: '', + text: pen.text || '', + textValue: '', enable: { valueMapping: true, tooltip: true @@ -198,9 +208,10 @@ export default { this.selectPens = [] } }, + topTranslate () { + this.setContextmenu = false + }, penEnter (pen, e) { // 移入节点 - console.log(pen, e, 'penEnter') - console.log(getTopology(this.meta2dId).getPenRect(pen)) if (this.timer3) { clearTimeout(this.timer3) this.timer3 = null @@ -217,7 +228,6 @@ export default { } this.timer3 = setTimeout(() => { let ePosition = window.ePosition - console.log(this.meta2dId, ePosition) let boxWidth = this.$refs.meta2dBox.offsetWidth let boxHeight = this.$refs.meta2dBox.offsetHeight this.position.left = ePosition.layerX @@ -258,12 +268,10 @@ export default { } }, tooltipOver () { - console.log('tooltipOver') clearTimeout(this.timer3) this.timer3 = null }, tooltipOut () { - console.log('tooltipOut') this.timer3 = setTimeout(() => { this.position.show = false this.timer3 = null @@ -287,9 +295,45 @@ export default { }, exitEdit (isRefresh) { this.editFlag = false + this.position.show = false if (isRefresh) { this.$emit('reload') } + }, + beforeEdit () { + this.editFlag = true + this.contextmenu = { + left: null, + top: null, + bottom: null + } + this.position.show = false + }, + onContextMenu (event) { + if (!this.setContextmenu) { + return + } + event.preventDefault() + event.stopPropagation() + + if (event.clientY + 360 < document.body.clientHeight) { + this.contextmenu = { + left: event.clientX + 'px', + top: event.clientY + 'px' + } + } else { + this.contextmenu = { + left: event.clientX + 'px', + bottom: document.body.clientHeight - event.clientY + 'px' + } + } + }, + contextmenuNone () { + this.contextmenu = { + left: null, + top: null, + bottom: null + } } }, beforeDestroy () { diff --git a/nezha-fronted/src/components/common/project/meta2d/js/topoUtil.js b/nezha-fronted/src/components/common/project/meta2d/js/topoUtil.js index 4d04aa39c..ce88465af 100644 --- a/nezha-fronted/src/components/common/project/meta2d/js/topoUtil.js +++ b/nezha-fronted/src/components/common/project/meta2d/js/topoUtil.js @@ -2,7 +2,7 @@ import { getTopology, setTopology, dealImg, topologyImg } from '@/components/com import bus from '@/libs/bus' import axios from 'axios' import { getMetricTypeValue } from '@/components/common/js/tools' -import chartDataFormat from "@/components/chart/chartDataFormat"; +import chartDataFormat from '@/components/chart/chartDataFormat' export default { methods: { topoResize (id) { @@ -141,13 +141,20 @@ export default { if (pen.isNz) { if (pen.data.legend && pen.data.enable.valueMapping) { const findItem = queryValues.find(query => query.name === pen.data.legend && query.parent === pen.data.parent) - console.log(findItem) if (findItem) { pen.data.value = getMetricTypeValue(findItem.values, findItem.elements.statistic || 'last') pen.data.showValue = chartDataFormat.getUnit(findItem.elements.unit).compute(pen.data.value, null, 2) this.selectMapping(pen) } } + if (pen.data.source === 'legend' && pen.data.textParent && pen.data.textLegend) { + const findItem = queryValues.find(query => query.name === pen.data.textLegend && query.parent === pen.data.textParent) + if (findItem) { + const value = getMetricTypeValue(findItem.values, findItem.elements.statistic || 'last') + pen.data.textValue = chartDataFormat.getUnit(findItem.elements.unit).compute(value, null, 2) + pen.text = pen.data.textValue + } + } } else { // 处理 le5le的数据 } diff --git a/nezha-fronted/src/components/common/project/meta2d/meta2dElement.vue b/nezha-fronted/src/components/common/project/meta2d/meta2dElement.vue index d79d6dd0a..eb97c71a2 100644 --- a/nezha-fronted/src/components/common/project/meta2d/meta2dElement.vue +++ b/nezha-fronted/src/components/common/project/meta2d/meta2dElement.vue @@ -342,7 +342,25 @@ -