diff --git a/nezha-fronted/package-lock.json b/nezha-fronted/package-lock.json index 0e05d341f..aeb4e0641 100644 --- a/nezha-fronted/package-lock.json +++ b/nezha-fronted/package-lock.json @@ -3894,6 +3894,11 @@ "minimalistic-crypto-utils": "^1.0.0" } }, + "emitter-component": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.1.tgz", + "integrity": "sha1-Bl4tvtaVm/RwZ57avq95gdEAOrY=" + }, "emojis-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", @@ -5442,6 +5447,11 @@ "pify": "^3.0.0" } }, + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" + }, "handle-thing": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", @@ -6364,6 +6374,11 @@ "verror": "1.10.0" } }, + "keycharm": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/keycharm/-/keycharm-0.2.0.tgz", + "integrity": "sha1-+m6i5DuQpoAohD0n8gddNajD5vk=" + }, "keyv": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", @@ -6899,6 +6914,11 @@ "minimist": "0.0.8" } }, + "moment": { + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", + "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -10113,6 +10133,14 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, + "propagating-hammerjs": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/propagating-hammerjs/-/propagating-hammerjs-1.4.7.tgz", + "integrity": "sha512-oW9Wd+W2Tp5uOz6Fh4mEU7p+FoyU85smLH/mPga83Loh0pHa6AH4ZHGywvwMk3TWP31l7iUsvJyW265p4Ipwrg==", + "requires": { + "hammerjs": "^2.0.8" + } + }, "proxy-addr": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", @@ -12396,6 +12424,23 @@ "extsprintf": "^1.2.0" } }, + "vis": { + "version": "4.21.0-EOL", + "resolved": "https://registry.npmjs.org/vis/-/vis-4.21.0-EOL.tgz", + "integrity": "sha512-JVS1mywKg5S88XbkDJPfCb3n+vlg5fMA8Ae2hzs3KHAwD4ryM5qwlbFZ6ReDfY8te7I4NLCpuCoywJQEehvJlQ==", + "requires": { + "emitter-component": "^1.1.1", + "hammerjs": "^2.0.8", + "keycharm": "^0.2.0", + "moment": "^2.18.1", + "propagating-hammerjs": "^1.4.6" + } + }, + "vis-network": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vis-network/-/vis-network-8.1.0.tgz", + "integrity": "sha512-h8uMYKKBLDGD20kGzxqCmT2X94rB0oP2OLbBBqG/4sAZXJ4Vhbe+dQQurRg54Xz4wb8R33H719ldEizhWE/NkQ==" + }, "vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", diff --git a/nezha-fronted/package.json b/nezha-fronted/package.json index 24e1938e3..e8406ef25 100644 --- a/nezha-fronted/package.json +++ b/nezha-fronted/package.json @@ -18,6 +18,8 @@ "node-sass": "^4.13.1", "pl-table": "^2.5.8", "quill": "^1.3.7", + "vis": "^4.21.0-EOL", + "vis-network": "^8.1.0", "vue": "^2.5.2", "vue-countupjs": "^1.0.0", "vue-i18n": "^8.15.1", diff --git a/nezha-fronted/src/components/charts/a.png b/nezha-fronted/src/components/charts/a.png new file mode 100644 index 000000000..696dbf9c9 Binary files /dev/null and b/nezha-fronted/src/components/charts/a.png differ diff --git a/nezha-fronted/src/components/charts/chart-list.vue b/nezha-fronted/src/components/charts/chart-list.vue index e2398f2b0..c2ada986a 100644 --- a/nezha-fronted/src/components/charts/chart-list.vue +++ b/nezha-fronted/src/components/charts/chart-list.vue @@ -110,7 +110,7 @@ > + + + @@ -139,6 +153,7 @@ import draggable from 'vuedraggable' import chartDataFormat from "./chartDataFormat"; import chartAlertList from './chart-alert-list' + import visNetwork from './visNetwork' export default { name: 'chartList', props: { @@ -155,6 +170,7 @@ chartUrl, chartSingleStat, draggable, + visNetwork, }, data() { return { @@ -639,6 +655,23 @@ } this.dataList = [...this.dataTotalList]; + this.dataList.push({ // 拓扑图 + id: -10, + panelId: 0, + title: this.$t("alert.config.chart.alertNumTrend"), + span: 8, + height: 350, + type: "topology", + prev: -11, + next: -1, + unit: 1, + buildIn: 1, + elements: [{ + id: '', + expression: `nz_alert_nums{id="${3333}"}`, + type: '' + }] + }); this.$nextTick(() => { if (this.dataList.length > 0 ) { this.dataList.forEach((item,index) => { diff --git a/nezha-fronted/src/components/charts/visNetwork.vue b/nezha-fronted/src/components/charts/visNetwork.vue new file mode 100644 index 000000000..472b46dc1 --- /dev/null +++ b/nezha-fronted/src/components/charts/visNetwork.vue @@ -0,0 +1,574 @@ + + + + +