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 @@
+
+
+
+
+
+
+
+
+ {{errorContent}}
+
+
+
+
+
+
+
+
+ {{chartData.title}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1111111111
+
+
+
+
+
+
+
+
+
+
+