This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
nezha-nezha-fronted/nezha-fronted/src/components/common/project/meta2d/meta2dMain.vue

120 lines
3.3 KiB
Vue
Raw Normal View History

2023-02-16 16:33:20 +08:00
<template>
2023-02-22 18:21:39 +08:00
<div class="meta2d-box list-page" v-my-loading="meta2dLoading" ref="meta2dBox">
<meta2dHeader
ref="header"
:meta2dId="meta2dId"
:isChart="isChart"
:project="project"
:editFlag="editFlag"
@edit="beforeEdit"
@exitEdit="exitEdit"
@reload="reload"
/>
<div class="meta2d-main" :class="isChart ? 'meta2d-chart': 'meta2d-project'" @contextmenu="onContextMenu($event)">
2023-02-16 16:33:20 +08:00
<div :id="meta2dId" style="height: 100%;width: 100%"></div>
</div>
2023-02-20 14:25:09 +08:00
<meta2dProps
v-if="editFlag"
ref="meta2dProps"
:selectPens.sync="selectPens"
:querysArray="querysArray"
2023-02-21 19:05:49 +08:00
:params="params"
2023-02-20 14:25:09 +08:00
:meta2dId="meta2dId"
@updatePens="updatePens"
/>
<div class="context-menu" v-if="contextmenu.left && editFlag && !isPreview" :style="this.contextmenu">
<CanvasContextMenu :meta2dId="meta2dId" :selectPens.sync="selectPens"></CanvasContextMenu>
</div>
2023-02-22 18:21:39 +08:00
<div
2023-02-23 18:00:33 +08:00
v-show="position.show && (!editFlag || isPreview )"
2023-02-22 18:21:39 +08:00
@mouseleave="tooltipOut"
@mouseenter="tooltipOver"
2023-02-22 15:29:17 +08:00
style="position: absolute"
:style="{
top: position.top + 'px',
2023-02-22 18:21:39 +08:00
left: position.left + 'px',
2023-02-22 15:29:17 +08:00
}"
2023-02-22 18:21:39 +08:00
>
<meta2dTooltip
ref="meta2dTooltip"
2023-02-22 18:21:39 +08:00
:params="chartParams"
/>
</div>
2023-02-16 16:33:20 +08:00
</div>
</template>
<script>
import meta2dHeader from '@/components/common/project/meta2d/meta2dHeader'
import meta2dProps from '@/components/common/project/meta2d/meta2dProps'
import meta2dMain from '@/components/common/project/meta2d/js/meta2dMain'
2023-02-22 15:29:17 +08:00
import meta2dTooltip from '@/components/common/project/meta2d/meta2dTooltip'
import CanvasContextMenu from '@/components/common/project/meta2d/CanvasContextMenu'
2023-02-16 18:13:14 +08:00
import { getTopology, setTopology } from '@/components/common/js/common'
2023-02-20 14:25:09 +08:00
import topoUtil from '@/components/common/project/meta2d/js/topoUtil'
2023-02-20 19:11:10 +08:00
import bus from '@/libs/bus'
2023-02-16 16:33:20 +08:00
export default {
name: 'meta2dMain',
2023-02-20 14:25:09 +08:00
mixins: [meta2dMain, topoUtil],
2023-02-16 16:33:20 +08:00
props: {
meta2dId: {}, // 唯一id 不可重复
topoData: {}, // topo图数据
isChart: {
type: Boolean,
default: false
},
querysArray: {},
2023-02-21 19:05:49 +08:00
params: {},
2023-02-20 14:25:09 +08:00
project: {}
2023-02-16 16:33:20 +08:00
},
computed: {
isPreview () {
return this.$refs.header && this.$refs.header.isPreview
}
},
2023-02-16 16:33:20 +08:00
components: {
meta2dHeader,
2023-02-22 15:29:17 +08:00
meta2dProps,
meta2dTooltip,
CanvasContextMenu
2023-02-16 16:33:20 +08:00
},
watch: {
topoData: {
immediate: true,
handler () {
2023-02-20 14:25:09 +08:00
this.reload()
2023-02-16 16:33:20 +08:00
}
}
},
mounted () {
this.init()
2023-02-20 19:11:10 +08:00
bus.$on('changeSelectPens', this.pensActive)
2023-02-22 18:21:39 +08:00
this.$refs.meta2dBox.addEventListener('mousemove', this.mousemove)
// this.$refs.meta2dBox.addEventListener('mousedown', this.mousedown)
this.$refs.meta2dBox.addEventListener('mouseup', this.mouseup)
window.addEventListener('click', this.contextmenuNone)
2023-02-16 16:33:20 +08:00
},
methods: {
2023-02-22 18:21:39 +08:00
mousemove (e) {
window.ePosition = e
},
mouseup () {
setTimeout(() => {
this.setContextmenu = true
}, 100)
2023-02-22 18:21:39 +08:00
}
2023-02-16 18:13:14 +08:00
},
beforeDestroy () {
getTopology(this.meta2dId).destroy()
setTopology(this.meta2dId, null)
2023-02-20 19:11:10 +08:00
bus.$off('changeSelectPens', this.pensActive)
2023-02-22 18:21:39 +08:00
this.$refs.meta2dBox.removeEventListener('mousemove', this.mousemove)
this.$refs.meta2dBox.removeEventListener('mouseup', this.mouseup)
2023-02-16 16:33:20 +08:00
}
}
</script>
<style scoped lang="scss">
</style>