@riil-frontend/component-topology 0.2.9 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/1.js +2 -2
- package/build/2.js +1 -1
- package/build/index.css +1 -1
- package/build/index.html +1 -1
- package/build/index.js +36 -36
- package/demo/1/345/237/272/346/234/254/src/ShowAttributeDemo.jsx +14 -0
- package/demo/1/345/237/272/346/234/254/usage1.md +2 -20
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/TopoFull.jsx +75 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/{TopoCenterViewer.jsx → TopoViewer.jsx} +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{appserver/v1/api/authFunc → authorization/v1/api/authority/check}/checkFuncAuthentication +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{appserver/v1/api/authFunc → authorization/v1/api/authority/check}/checkFuncAuthentication.json +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{api/v1/model → model/v1/api}/getAllDict +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{appserver/topo/v1 → topo/v1/api}/alarm +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{appserver/topo/v1 → topo/v1/api}/alarm.json +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{appserver/topo/v1 → topo/v1/api}/attributes/once +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{appserver/topo/v1 → topo/v1/api}/attributes/once.json +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{appserver/topo/v1 → topo/v1/api}/attributes/polling +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{appserver/topo/v1 → topo/v1/api}/attributes/polling.json +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{appserver/topo/v1 → topo/v1/api}/auth/permission/2 +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{appserver/topo/v1 → topo/v1/api}/auth/permission/2.json +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{appserver/topo/v1 → topo/v1/api}/menu +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{appserver/topo/v1 → topo/v1/api}/menu.json +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{appserver/topo/v1 → topo/v1/api}/shape +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{appserver/topo/v1 → topo/v1/api}/shape.json +0 -0
- package/demo/{5/345/244/232/345/256/236/344/276/213/js/mock/appserver/topo/v1 → 2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/topo/v1/api}/structure/both/2 +2 -2
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{appserver/topo/v1 → topo/v1/api}/structure/both/2.json +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{appserver/topo/v1 → topo/v1/api}/structure/relationList +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{appserver/topo/v1 → topo/v1/api}/structure/relationList.json +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{appserver/topo/v1 → topo/v1/api}/webUrl/list +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/{appserver/topo/v1 → topo/v1/api}/webUrl/list.json +0 -0
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/request.js +2 -2
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203//345/256/214/346/225/264/346/250/241/345/274/217.md +1 -1
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203//346/230/276/347/244/272/346/250/241/345/274/217.md +1 -1
- package/demo/3/344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/AppInstallTopo.jsx +189 -0
- package/demo/3/344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/CreateTopo.jsx +72 -0
- package/demo/3/344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/DataStreamTopo.jsx +146 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/data/data3.json → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/data/appInstall/data1.json} +11 -71
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/data/data1.json → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/data/appInstall/data2.json} +3 -7
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/data → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/data/appInstall}/icon.js +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/data → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/data/appInstall}/index.js +1 -11
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/data/simple.json → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/data/dataStream/data1.json} +42 -63
- package/demo/3/344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/data/dataStream/data2.json +106 -0
- package/demo/3/344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/data/dataStream/icon.js +6 -0
- package/demo/3/344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/data/dataStream/index.js +19 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262 → 344/270/232/345/212/241/347/233/221/346/216/247}/346/213/223/346/211/221/src/mock/appserver/v1/api/authFunc/checkFuncAuthentication +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262 → 344/270/232/345/212/241/347/233/221/346/216/247}/346/213/223/346/211/221/src/mock/appserver/v1/api/authFunc/checkFuncAuthentication.json +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/api/v1/model → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/mock/model/v1/api}/getAllDict +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/appserver/topo/v1 → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/mock/topo/v1/api}/alarm +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/appserver/topo/v1 → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/mock/topo/v1/api}/alarm.json +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/appserver/topo/v1 → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/mock/topo/v1/api}/attributes/once +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/appserver/topo/v1 → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/mock/topo/v1/api}/attributes/once.json +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/appserver/topo/v1 → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/mock/topo/v1/api}/attributes/polling +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/appserver/topo/v1 → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/mock/topo/v1/api}/attributes/polling.json +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/appserver/topo/v1 → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/mock/topo/v1/api}/auth/permission/2 +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/appserver/topo/v1 → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/mock/topo/v1/api}/auth/permission/2.json +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/appserver/topo/v1 → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/mock/topo/v1/api}/menu +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/appserver/topo/v1 → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/mock/topo/v1/api}/menu.json +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/appserver/topo/v1 → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/mock/topo/v1/api}/shape +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/appserver/topo/v1 → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/mock/topo/v1/api}/shape.json +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/appserver/topo/v1 → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/mock/topo/v1/api}/structure/both/1 +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/appserver/topo/v1 → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/mock/topo/v1/api}/structure/both/2 +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/appserver/topo/v1 → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/mock/topo/v1/api}/structure/both/3 +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/appserver/topo/v1 → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/mock/topo/v1/api}/webUrl/list +0 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/appserver/topo/v1 → 344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/mock/topo/v1/api}/webUrl/list.json +0 -0
- package/demo/3/344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221/src/request.js +7 -0
- package/demo/3/{345/272/224/347/224/250/351/203/250/347/275/262 → 344/270/232/345/212/241/347/233/221/346/216/247}/346/213/223/346/211/221//345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221.md +3 -2
- package/demo/3/344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221//346/225/260/346/215/256/346/265/201/346/213/223/346/211/221.md +11 -0
- package/demo/3/344/270/232/345/212/241/347/233/221/346/216/247/346/213/223/346/211/221//346/226/260/345/273/272.md +11 -0
- package/demo/5/345/244/232/345/256/236/344/276/213/js/TopoCenterViewer.jsx +1 -1
- package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{api/v1/model → model/v1/api}/getAllDict +0 -0
- package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/alarm +0 -0
- package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/alarm.json +0 -0
- package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/attributes/once +0 -0
- package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/attributes/once.json +0 -0
- package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/attributes/polling +0 -0
- package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/attributes/polling.json +0 -0
- package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/auth/permission/2 +0 -0
- package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/auth/permission/2.json +0 -0
- package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/menu +0 -0
- package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/menu.json +0 -0
- package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/shape +0 -0
- package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/shape.json +0 -0
- package/demo/{2/346/213/223/346/211/221/344/270/255/345/277/203/js/mock/appserver/topo/v1 → 5/345/244/232/345/256/236/344/276/213/js/mock/topo/v1/api}/structure/both/2 +0 -0
- package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/structure/both/2.json +0 -0
- package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/structure/relationList +0 -0
- package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/structure/relationList.json +0 -0
- package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/webUrl/list +0 -0
- package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/webUrl/list.json +0 -0
- package/demo/5/345/244/232/345/256/236/344/276/213/js/request.js +3 -3
- package/demo/API/API.md +68 -5
- package/demo/{2/346/213/223/346/211/221/344/270/255/345/277/203/js/createMockRequest.js → createMockRequest.js} +6 -4
- package/es/components/TopoView/Topo.js +10 -52
- package/es/components/TopoView/TopoContent.js +63 -0
- package/es/components/TopoView/settings/GroupNodeList/GroupNodeList.js +18 -0
- package/es/components/TopoView/settings/{ResourceList.js → GroupNodeList/ResourceList.js} +2 -52
- package/es/components/TopoView/settings/{ResourceList.module.scss → GroupNodeList/ResourceList.module.scss} +0 -0
- package/es/components/TopoView/settings/{SelectResource → GroupNodeList/SelectResource}/index.js +0 -0
- package/es/components/TopoView/settings/{SelectResource → GroupNodeList/SelectResource}/index.module.scss +0 -0
- package/es/components/TopoView/settings/LayerSettingsForm.js +8 -3
- package/es/components/TopoView/settings/Settings.js +1 -0
- package/es/components/TopoView/toolbar/index.js +2 -1
- package/es/components/TopoView/toolbar/widgets/EditButton.js +1 -1
- package/es/components/TopoView/topoView.js +4 -5
- package/es/components/index.module.scss +7 -9
- package/es/core/models/TopoApp.js +164 -74
- package/es/core/models/common/Alarm.js +20 -4
- package/es/core/models/common/TopoClient.js +9 -1
- package/es/core/models/contextMenu/buildNodeContextMenu.js +10 -2
- package/es/hooks/usePolling.js +14 -7
- package/es/hooks/useTopoEdit.js +64 -32
- package/es/icons/icons.js +1 -0
- package/es/models/topoCreateMod.js +50 -45
- package/es/models/topoMod.js +13 -17
- package/es/topoCenter/components/Topology.js +6 -0
- package/es/topoCenter/createTopo.js +7 -0
- package/es/topoCenter/getTopoData.js +3 -5
- package/es/topoCenter/index.js +4 -0
- package/es/topoCenter/models/TopoCenter.js +21 -2
- package/es/topoCenter/viewer/createTopoViewer.js +0 -2
- package/es/utils/htElementUtils.js +53 -0
- package/es/utils/topoData.js +14 -2
- package/lib/components/TopoView/Topo.js +12 -53
- package/lib/components/TopoView/TopoContent.js +84 -0
- package/lib/components/TopoView/settings/GroupNodeList/GroupNodeList.js +33 -0
- package/lib/components/TopoView/settings/{ResourceList.js → GroupNodeList/ResourceList.js} +2 -52
- package/lib/components/TopoView/settings/{ResourceList.module.scss → GroupNodeList/ResourceList.module.scss} +0 -0
- package/lib/components/TopoView/settings/{SelectResource → GroupNodeList/SelectResource}/index.js +0 -0
- package/lib/components/TopoView/settings/{SelectResource → GroupNodeList/SelectResource}/index.module.scss +0 -0
- package/lib/components/TopoView/settings/LayerSettingsForm.js +9 -3
- package/lib/components/TopoView/settings/Settings.js +1 -0
- package/lib/components/TopoView/toolbar/index.js +5 -1
- package/lib/components/TopoView/toolbar/widgets/EditButton.js +1 -1
- package/lib/components/TopoView/topoView.js +4 -5
- package/lib/components/index.module.scss +7 -9
- package/lib/core/models/TopoApp.js +165 -74
- package/lib/core/models/common/Alarm.js +20 -4
- package/lib/core/models/common/TopoClient.js +9 -1
- package/lib/core/models/contextMenu/buildNodeContextMenu.js +10 -2
- package/lib/hooks/usePolling.js +14 -7
- package/lib/hooks/useTopoEdit.js +64 -32
- package/lib/icons/icons.js +3 -0
- package/lib/models/topoCreateMod.js +50 -45
- package/lib/models/topoMod.js +13 -17
- package/lib/topoCenter/components/Topology.js +20 -0
- package/lib/topoCenter/createTopo.js +19 -0
- package/lib/topoCenter/getTopoData.js +3 -5
- package/lib/topoCenter/index.js +17 -0
- package/lib/topoCenter/models/TopoCenter.js +21 -2
- package/lib/topoCenter/viewer/createTopoViewer.js +0 -4
- package/lib/utils/htElementUtils.js +66 -0
- package/lib/utils/topoData.js +13 -2
- package/package.json +7 -6
- package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203//345/256/214/346/225/264/346/250/241/345/274/2172.md +0 -10
- package/demo/3/345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/AppInstallTopo.jsx +0 -169
- package/demo/3/345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/mock/data/data2.json +0 -190
- package/demo/3/345/272/224/347/224/250/351/203/250/347/275/262/346/213/223/346/211/221/src/request.js +0 -7
- package/es/backup/1.js +0 -155
- package/es/createTopoView.js +0 -42
- package/es/utils/topoDataRe.js +0 -777
- package/lib/backup/1.js +0 -161
- package/lib/createTopoView.js +0 -58
- package/lib/utils/topoDataRe.js +0 -813
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import React, {useCallback, useEffect, useMemo} from 'react';
|
|
2
|
+
import {Button} from '@alifd/next';
|
|
3
|
+
|
|
4
|
+
// import {createTopo, Topology, TitleBar, SearchWidget} from '@riil-frontend/component-topology';
|
|
5
|
+
import {createTopo, Topology} from '../../../src';
|
|
6
|
+
|
|
7
|
+
import request from './request';
|
|
8
|
+
import topoData from './data/appInstall/data2';
|
|
9
|
+
|
|
10
|
+
function TopoDemo(props) {
|
|
11
|
+
|
|
12
|
+
const topo = useMemo(() => {
|
|
13
|
+
return createTopo({
|
|
14
|
+
request,
|
|
15
|
+
enableDefaultAlarmLoader: false,
|
|
16
|
+
enableDefaultMetricLoader: false,
|
|
17
|
+
});
|
|
18
|
+
}, []);
|
|
19
|
+
|
|
20
|
+
const Provider = topo.Provider;
|
|
21
|
+
|
|
22
|
+
// API:
|
|
23
|
+
|
|
24
|
+
// 创建拓扑图进入编辑模式
|
|
25
|
+
const createAndEnterEdit = async () => {
|
|
26
|
+
// TODO 转换格式
|
|
27
|
+
const data = {...topoData};
|
|
28
|
+
await topo.load(data, {
|
|
29
|
+
mode: 'edit'
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
// 初始化
|
|
34
|
+
useEffect(async () => {
|
|
35
|
+
await createAndEnterEdit();
|
|
36
|
+
return () => {
|
|
37
|
+
topo.exit();
|
|
38
|
+
}
|
|
39
|
+
}, []);
|
|
40
|
+
|
|
41
|
+
// 保存
|
|
42
|
+
const onSave = useCallback(async (ctx) => {
|
|
43
|
+
const {data, saveConfig} = ctx;
|
|
44
|
+
const {id, config, global, serialize} = data;
|
|
45
|
+
// 保存
|
|
46
|
+
await saveConfig();
|
|
47
|
+
}, []);
|
|
48
|
+
|
|
49
|
+
return (
|
|
50
|
+
<div style={{width: '100%'}}>
|
|
51
|
+
<div style={{display: 'flex', alignItems: 'center', paddingBottom: 16}}>
|
|
52
|
+
<div style={{flex: 1}}>
|
|
53
|
+
<Button type="primary" onClick={createAndEnterEdit} title="新建并进入编辑模式">新建</Button>
|
|
54
|
+
</div>
|
|
55
|
+
<Button type="primary" onClick={() => { topo.triggerSaveEvent() }}>保存</Button>
|
|
56
|
+
</div>
|
|
57
|
+
|
|
58
|
+
<div style={{width: '100%', height: '500px', background: 'white'}}>
|
|
59
|
+
<Provider>
|
|
60
|
+
<Topology
|
|
61
|
+
topo={topo}
|
|
62
|
+
titleBar={false}
|
|
63
|
+
onSave={onSave}
|
|
64
|
+
/>
|
|
65
|
+
</Provider>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
export default TopoDemo;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import React, {useState, useEffect, useRef, useCallback, useMemo} from 'react';
|
|
2
|
+
import {Radio, Loading, Button} from '@alifd/next';
|
|
3
|
+
|
|
4
|
+
// import {createTopo, Topology, TitleBar, SearchWidget} from '@riil-frontend/component-topology';
|
|
5
|
+
import {createTopo, Topology, TitleBar, SearchWidget, ViewerTools} from '../../../src';
|
|
6
|
+
|
|
7
|
+
import request from './request';
|
|
8
|
+
import {topoList, getData} from "./data/dataStream";
|
|
9
|
+
import data1 from './data/appInstall/data1';
|
|
10
|
+
import createTopoData from './data/appInstall/data2';
|
|
11
|
+
|
|
12
|
+
function TopoDemo(props) {
|
|
13
|
+
|
|
14
|
+
const [topoId, setTopoId] = useState('2');
|
|
15
|
+
const [loading, setLoading] = useState(false);
|
|
16
|
+
|
|
17
|
+
const topo = useMemo(() => {
|
|
18
|
+
return createTopo({
|
|
19
|
+
request,
|
|
20
|
+
enableDefaultAlarmLoader: false,
|
|
21
|
+
enableDefaultMetricLoader: false,
|
|
22
|
+
});
|
|
23
|
+
}, []);
|
|
24
|
+
|
|
25
|
+
const Provider = topo.Provider;
|
|
26
|
+
|
|
27
|
+
// API:
|
|
28
|
+
|
|
29
|
+
// 加载拓扑图数据
|
|
30
|
+
const loadTopo = async (id) => {
|
|
31
|
+
setLoading(true);
|
|
32
|
+
// TODO 查询拓扑图,转换格式
|
|
33
|
+
const data = await getData(id);
|
|
34
|
+
await topo.load(data);
|
|
35
|
+
setLoading(false)
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
// 初始化
|
|
39
|
+
useEffect(async () => {
|
|
40
|
+
await loadTopo(topoId);
|
|
41
|
+
return () => {
|
|
42
|
+
topo.exit();
|
|
43
|
+
}
|
|
44
|
+
}, []);
|
|
45
|
+
|
|
46
|
+
// 创建拓扑图进入编辑模式
|
|
47
|
+
const createAndEnterEdit = async () => {
|
|
48
|
+
setLoading(true);
|
|
49
|
+
// TODO 转换格式
|
|
50
|
+
const data = createTopoData;
|
|
51
|
+
await topo.load(data, {
|
|
52
|
+
mode: 'edit'
|
|
53
|
+
});
|
|
54
|
+
setLoading(false)
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
// 进入编辑模式
|
|
58
|
+
const enterEditMode = useCallback(async () => {
|
|
59
|
+
setLoading(true);
|
|
60
|
+
await topo.enterEditMode();
|
|
61
|
+
setLoading(false)
|
|
62
|
+
}, []);
|
|
63
|
+
|
|
64
|
+
// 退出编辑模式
|
|
65
|
+
const onExitEditMode = useCallback(async () => {
|
|
66
|
+
setLoading(true);
|
|
67
|
+
|
|
68
|
+
await topo.exitEditMode();
|
|
69
|
+
// 重新加载拓扑
|
|
70
|
+
await loadTopo(topoId);
|
|
71
|
+
|
|
72
|
+
setLoading(false)
|
|
73
|
+
}, [topoId]);
|
|
74
|
+
|
|
75
|
+
// 触发保存事件
|
|
76
|
+
const onTriggerSaveEvent = useCallback(async () => {
|
|
77
|
+
await topo.triggerSaveEvent()
|
|
78
|
+
}, []);
|
|
79
|
+
|
|
80
|
+
// 保存
|
|
81
|
+
const onSave = useCallback(async (ctx) => {
|
|
82
|
+
setLoading(true);
|
|
83
|
+
|
|
84
|
+
const {data, saveConfig} = ctx;
|
|
85
|
+
const {id, config, global, serialize} = data;
|
|
86
|
+
// 保存
|
|
87
|
+
await saveConfig();
|
|
88
|
+
|
|
89
|
+
setLoading(false)
|
|
90
|
+
}, [topoId]);
|
|
91
|
+
|
|
92
|
+
// 更新数据
|
|
93
|
+
const updateData1 = useCallback(async () => {
|
|
94
|
+
await topo.updateData()
|
|
95
|
+
}, []);
|
|
96
|
+
|
|
97
|
+
const editModeParams = {};
|
|
98
|
+
|
|
99
|
+
const renderViewerTitleBar = () => {
|
|
100
|
+
return (
|
|
101
|
+
<div style={{display: 'flex', alignItems: 'center'}}>
|
|
102
|
+
<div style={{flex: 1}}>
|
|
103
|
+
此处是标题
|
|
104
|
+
<Button type="primary" onClick={createAndEnterEdit} title="新建并进入编辑模式">新建</Button>
|
|
105
|
+
</div>
|
|
106
|
+
<ViewerTools topo={topo}/>
|
|
107
|
+
</div>
|
|
108
|
+
)
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
const renderEditorTitleBar = () => {
|
|
112
|
+
return (
|
|
113
|
+
<div style={{display: 'flex', alignItems: 'center'}}>
|
|
114
|
+
<div style={{flex: 1}}>标题</div>
|
|
115
|
+
<Button onClick={updateData1}>更新数据</Button>
|
|
116
|
+
<Button type="primary" onClick={onTriggerSaveEvent}>保存</Button>
|
|
117
|
+
<Button onClick={onExitEditMode}>退出</Button>
|
|
118
|
+
</div>
|
|
119
|
+
)
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
return (
|
|
123
|
+
<Loading visible={loading} style={{width: '100%'}}>
|
|
124
|
+
<Provider>
|
|
125
|
+
<TitleBar
|
|
126
|
+
topo={topo}
|
|
127
|
+
render={({isEditMode}) => isEditMode ? renderEditorTitleBar() : renderViewerTitleBar()}
|
|
128
|
+
/>
|
|
129
|
+
<br/>
|
|
130
|
+
|
|
131
|
+
<div style={{width: '100%', height: '500px', background: 'white'}}>
|
|
132
|
+
<Topology
|
|
133
|
+
topo={topo}
|
|
134
|
+
titleBar={false}
|
|
135
|
+
editModeParams={editModeParams}
|
|
136
|
+
onRefresh={() => {loadTopo(topoId)}}
|
|
137
|
+
onSave={onSave}
|
|
138
|
+
/>
|
|
139
|
+
</div>
|
|
140
|
+
</Provider>
|
|
141
|
+
</Loading>
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
export default TopoDemo;
|
|
@@ -1,38 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"config": {
|
|
3
|
-
"id":
|
|
4
|
-
"name": "拓扑
|
|
5
|
-
"
|
|
6
|
-
"
|
|
3
|
+
"id": 1,
|
|
4
|
+
"name": "拓扑1",
|
|
5
|
+
"showType": "layers",
|
|
6
|
+
"layout": "towardsouth"
|
|
7
7
|
},
|
|
8
|
-
"global": null,
|
|
9
8
|
"groups": [
|
|
10
9
|
{
|
|
11
10
|
"id": 20,
|
|
12
|
-
"name": "
|
|
13
|
-
"type": null,
|
|
14
|
-
"layout": "circular",
|
|
15
|
-
"parentId": -1,
|
|
16
|
-
"order": 2,
|
|
17
|
-
"tag": null
|
|
11
|
+
"name": "业务层"
|
|
18
12
|
},
|
|
19
13
|
{
|
|
20
14
|
"id": 19,
|
|
21
|
-
"name": "
|
|
22
|
-
"type": null,
|
|
23
|
-
"layout": "circular",
|
|
24
|
-
"parentId": -1,
|
|
25
|
-
"order": 1,
|
|
26
|
-
"tag": null
|
|
15
|
+
"name": "工具层"
|
|
27
16
|
},
|
|
28
17
|
{
|
|
29
18
|
"id": 18,
|
|
30
|
-
"name": "
|
|
31
|
-
"type": null,
|
|
32
|
-
"layout": "circular",
|
|
33
|
-
"parentId": -1,
|
|
34
|
-
"order": 0,
|
|
35
|
-
"tag": null
|
|
19
|
+
"name": "数据层"
|
|
36
20
|
}
|
|
37
21
|
],
|
|
38
22
|
"nodes": [
|
|
@@ -40,33 +24,13 @@
|
|
|
40
24
|
"id": "000000004e2f8f55",
|
|
41
25
|
"name": "HuiJu166.2_20002",
|
|
42
26
|
"ciType": "ruijieSwitch",
|
|
43
|
-
"ciName": "ruijieSwitch",
|
|
44
|
-
"operation": "delete",
|
|
45
|
-
"attributes": [
|
|
46
|
-
{
|
|
47
|
-
"code": "ipAddress",
|
|
48
|
-
"name": "IP地址",
|
|
49
|
-
"tips": true,
|
|
50
|
-
"tags": true,
|
|
51
|
-
"value": "172.17.160.114"
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"code": "macAddress",
|
|
55
|
-
"name": "Mac地址",
|
|
56
|
-
"tips": true,
|
|
57
|
-
"tags": false,
|
|
58
|
-
"value": "00-74-9C-8F-F3-7D"
|
|
59
|
-
}
|
|
60
|
-
],
|
|
61
27
|
"groupId": 20,
|
|
62
|
-
"
|
|
28
|
+
"operation": "delete"
|
|
63
29
|
},
|
|
64
30
|
{
|
|
65
31
|
"id": "000000004e2f8f51",
|
|
66
32
|
"name": "HuiJu166.2_20001",
|
|
67
33
|
"ciType": "ruijieSwitch",
|
|
68
|
-
"ciName": "ruijieSwitch",
|
|
69
|
-
"operation": "delete",
|
|
70
34
|
"attributes": [
|
|
71
35
|
{
|
|
72
36
|
"code": "ipAddress",
|
|
@@ -84,7 +48,7 @@
|
|
|
84
48
|
}
|
|
85
49
|
],
|
|
86
50
|
"groupId": 19,
|
|
87
|
-
"
|
|
51
|
+
"operation": "delete"
|
|
88
52
|
},
|
|
89
53
|
{
|
|
90
54
|
"id": "000000004e2f8f59",
|
|
@@ -108,7 +72,7 @@
|
|
|
108
72
|
"value": "00-74-9C-8F-F3-7D"
|
|
109
73
|
}
|
|
110
74
|
],
|
|
111
|
-
"groupId":
|
|
75
|
+
"groupId": 18,
|
|
112
76
|
"groupTag": null
|
|
113
77
|
},
|
|
114
78
|
{
|
|
@@ -143,31 +107,7 @@
|
|
|
143
107
|
"ciType": "networkLink",
|
|
144
108
|
"name": "172.17.160.114(Gi 0/1) - 172.17.160.114(Gi 0/1)",
|
|
145
109
|
"source": "000000004e2f8f51",
|
|
146
|
-
"target": "
|
|
147
|
-
"operation": "delete"
|
|
148
|
-
},
|
|
149
|
-
{
|
|
150
|
-
"id": "r647792732873424896",
|
|
151
|
-
"ciType": "networkAggLink",
|
|
152
|
-
"name": "172.17.160.114(AggregatePort 3) - 172.17.160.114(AggregatePort 3)",
|
|
153
|
-
"source": "000000004e2f8f51",
|
|
154
|
-
"target": "000000004e2f8f55",
|
|
155
|
-
"operation": "delete"
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
"id": "r647792733318021120",
|
|
159
|
-
"ciType": "networkAggLink",
|
|
160
|
-
"name": "链路111",
|
|
161
|
-
"source": "000000004e2f8f51",
|
|
162
|
-
"target": "000000004e2f8f55",
|
|
163
|
-
"operation": "delete"
|
|
164
|
-
},
|
|
165
|
-
{
|
|
166
|
-
"id": "r647792733741645824",
|
|
167
|
-
"ciType": "networkAggLink",
|
|
168
|
-
"name": "链路111",
|
|
169
|
-
"source": "000000004e2f8f51",
|
|
170
|
-
"target": "000000004e2f8f55",
|
|
110
|
+
"target": "000000004e2f28e7",
|
|
171
111
|
"operation": "delete"
|
|
172
112
|
},
|
|
173
113
|
{
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"config": {
|
|
3
|
-
"id":
|
|
4
|
-
"name": "
|
|
3
|
+
"id": 2,
|
|
4
|
+
"name": "新建拓扑图demo",
|
|
5
5
|
"showType": "layers",
|
|
6
6
|
"layout": "towardsouth"
|
|
7
7
|
},
|
|
8
|
-
"global": null,
|
|
9
8
|
"groups": [
|
|
10
9
|
{
|
|
11
10
|
"id": 20,
|
|
@@ -26,15 +25,12 @@
|
|
|
26
25
|
"name": "HuiJu166.2_20002",
|
|
27
26
|
"ciType": "ruijieSwitch",
|
|
28
27
|
"groupId": 20,
|
|
29
|
-
"groupTag": null,
|
|
30
28
|
"operation": "delete"
|
|
31
29
|
},
|
|
32
30
|
{
|
|
33
31
|
"id": "000000004e2f8f51",
|
|
34
32
|
"name": "HuiJu166.2_20001",
|
|
35
33
|
"ciType": "ruijieSwitch",
|
|
36
|
-
"ciName": "ruijieSwitch",
|
|
37
|
-
"operation": "delete",
|
|
38
34
|
"attributes": [
|
|
39
35
|
{
|
|
40
36
|
"code": "ipAddress",
|
|
@@ -52,7 +48,7 @@
|
|
|
52
48
|
}
|
|
53
49
|
],
|
|
54
50
|
"groupId": 19,
|
|
55
|
-
"
|
|
51
|
+
"operation": "delete"
|
|
56
52
|
},
|
|
57
53
|
{
|
|
58
54
|
"id": "000000004e2f8f59",
|
|
File without changes
|
|
@@ -1,29 +1,19 @@
|
|
|
1
1
|
import data1 from './data1';
|
|
2
2
|
import data2 from './data2';
|
|
3
|
-
import data3 from './data3';
|
|
4
3
|
|
|
5
|
-
const
|
|
4
|
+
export const topoList = Object.freeze([{
|
|
6
5
|
label: '拓扑1',
|
|
7
6
|
value: '1',
|
|
8
7
|
}, {
|
|
9
8
|
label: '拓扑2',
|
|
10
9
|
value: '2',
|
|
11
|
-
selectable: false,
|
|
12
|
-
}, {
|
|
13
|
-
label: '拓扑3',
|
|
14
|
-
value: '3',
|
|
15
10
|
}]);
|
|
16
11
|
|
|
17
12
|
const map = {
|
|
18
13
|
1: data1,
|
|
19
14
|
2: data2,
|
|
20
|
-
3: data3,
|
|
21
15
|
};
|
|
22
16
|
|
|
23
|
-
export function getTopoList() {
|
|
24
|
-
return list;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
17
|
export async function getData(id) {
|
|
28
18
|
return map[id];
|
|
29
19
|
}
|
|
@@ -1,72 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"config": {
|
|
3
3
|
"id": 1,
|
|
4
|
-
"name": "
|
|
5
|
-
"
|
|
6
|
-
"
|
|
4
|
+
"name": "数据流拓扑1",
|
|
5
|
+
"showType": "auto",
|
|
6
|
+
"layout": "circular",
|
|
7
|
+
"enableLineFlow": true
|
|
7
8
|
},
|
|
8
|
-
"global": null,
|
|
9
|
-
"groups": [
|
|
10
|
-
{
|
|
11
|
-
"id": 20,
|
|
12
|
-
"name": "3",
|
|
13
|
-
"type": null,
|
|
14
|
-
"layout": "circular",
|
|
15
|
-
"parentId": -1,
|
|
16
|
-
"order": 2,
|
|
17
|
-
"tag": null
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"id": 19,
|
|
21
|
-
"name": "2",
|
|
22
|
-
"type": null,
|
|
23
|
-
"layout": "circular",
|
|
24
|
-
"parentId": -1,
|
|
25
|
-
"order": 1,
|
|
26
|
-
"tag": null
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
"id": 18,
|
|
30
|
-
"name": "1",
|
|
31
|
-
"type": null,
|
|
32
|
-
"layout": "circular",
|
|
33
|
-
"parentId": -1,
|
|
34
|
-
"order": 0,
|
|
35
|
-
"tag": null
|
|
36
|
-
}
|
|
37
|
-
],
|
|
38
9
|
"nodes": [
|
|
39
10
|
{
|
|
40
11
|
"id": "000000004e2f8f55",
|
|
41
12
|
"name": "HuiJu166.2_20002",
|
|
42
13
|
"ciType": "ruijieSwitch",
|
|
43
|
-
"ciName": "ruijieSwitch",
|
|
44
|
-
"operation": "delete",
|
|
45
|
-
"attributes": [
|
|
46
|
-
{
|
|
47
|
-
"code": "ipAddress",
|
|
48
|
-
"name": "IP地址",
|
|
49
|
-
"tips": true,
|
|
50
|
-
"tags": true,
|
|
51
|
-
"value": "172.17.160.114"
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"code": "macAddress",
|
|
55
|
-
"name": "Mac地址",
|
|
56
|
-
"tips": true,
|
|
57
|
-
"tags": false,
|
|
58
|
-
"value": "00-74-9C-8F-F3-7D"
|
|
59
|
-
}
|
|
60
|
-
],
|
|
61
14
|
"groupId": 20,
|
|
62
|
-
"
|
|
15
|
+
"operation": "delete"
|
|
63
16
|
},
|
|
64
17
|
{
|
|
65
18
|
"id": "000000004e2f8f51",
|
|
66
19
|
"name": "HuiJu166.2_20001",
|
|
67
20
|
"ciType": "ruijieSwitch",
|
|
68
|
-
"ciName": "ruijieSwitch",
|
|
69
|
-
"operation": "delete",
|
|
70
21
|
"attributes": [
|
|
71
22
|
{
|
|
72
23
|
"code": "ipAddress",
|
|
@@ -84,7 +35,7 @@
|
|
|
84
35
|
}
|
|
85
36
|
],
|
|
86
37
|
"groupId": 19,
|
|
87
|
-
"
|
|
38
|
+
"operation": "delete"
|
|
88
39
|
},
|
|
89
40
|
{
|
|
90
41
|
"id": "000000004e2f8f59",
|
|
@@ -143,8 +94,12 @@
|
|
|
143
94
|
"ciType": "networkLink",
|
|
144
95
|
"name": "172.17.160.114(Gi 0/1) - 172.17.160.114(Gi 0/1)",
|
|
145
96
|
"source": "000000004e2f8f51",
|
|
146
|
-
"target": "
|
|
147
|
-
"operation": "delete"
|
|
97
|
+
"target": "000000004e2f28e7",
|
|
98
|
+
"operation": "delete",
|
|
99
|
+
"styles": {
|
|
100
|
+
"direction": "right",
|
|
101
|
+
"color": "#ff00ff"
|
|
102
|
+
}
|
|
148
103
|
},
|
|
149
104
|
{
|
|
150
105
|
"id": "r647792732873424896",
|
|
@@ -152,7 +107,15 @@
|
|
|
152
107
|
"name": "172.17.160.114(AggregatePort 3) - 172.17.160.114(AggregatePort 3)",
|
|
153
108
|
"source": "000000004e2f8f51",
|
|
154
109
|
"target": "000000004e2f8f55",
|
|
155
|
-
"operation": "delete"
|
|
110
|
+
"operation": "delete",
|
|
111
|
+
"styles": {
|
|
112
|
+
"direction": "right",
|
|
113
|
+
"color": "#ff00ff"
|
|
114
|
+
},
|
|
115
|
+
"recordStyle": {
|
|
116
|
+
"direction": "right",
|
|
117
|
+
"color": "#ff00ff"
|
|
118
|
+
}
|
|
156
119
|
},
|
|
157
120
|
{
|
|
158
121
|
"id": "r647792733318021120",
|
|
@@ -160,7 +123,11 @@
|
|
|
160
123
|
"name": "链路111",
|
|
161
124
|
"source": "000000004e2f8f51",
|
|
162
125
|
"target": "000000004e2f8f55",
|
|
163
|
-
"operation": "delete"
|
|
126
|
+
"operation": "delete",
|
|
127
|
+
"styles": {
|
|
128
|
+
"direction": "right",
|
|
129
|
+
"color": "#ff00ff"
|
|
130
|
+
}
|
|
164
131
|
},
|
|
165
132
|
{
|
|
166
133
|
"id": "r647792733741645824",
|
|
@@ -168,7 +135,11 @@
|
|
|
168
135
|
"name": "链路111",
|
|
169
136
|
"source": "000000004e2f8f51",
|
|
170
137
|
"target": "000000004e2f8f55",
|
|
171
|
-
"operation": "delete"
|
|
138
|
+
"operation": "delete",
|
|
139
|
+
"styles": {
|
|
140
|
+
"direction": "right",
|
|
141
|
+
"color": "#ff00ff"
|
|
142
|
+
}
|
|
172
143
|
},
|
|
173
144
|
{
|
|
174
145
|
"id": "r647792734152687616",
|
|
@@ -176,7 +147,11 @@
|
|
|
176
147
|
"name": "链路111",
|
|
177
148
|
"source": "000000004e2f8f51",
|
|
178
149
|
"target": "000000004e2f8f55",
|
|
179
|
-
"operation": "delete"
|
|
150
|
+
"operation": "delete",
|
|
151
|
+
"styles": {
|
|
152
|
+
"direction": "right",
|
|
153
|
+
"color": "#ff00ff"
|
|
154
|
+
}
|
|
180
155
|
},
|
|
181
156
|
{
|
|
182
157
|
"id": "r647792734572118016",
|
|
@@ -184,7 +159,11 @@
|
|
|
184
159
|
"name": "链路111",
|
|
185
160
|
"source": "000000004e2f8f51",
|
|
186
161
|
"target": "000000004e2f8f59",
|
|
187
|
-
"operation": "delete"
|
|
162
|
+
"operation": "delete",
|
|
163
|
+
"styles": {
|
|
164
|
+
"direction": "right",
|
|
165
|
+
"color": "#ff00ff"
|
|
166
|
+
}
|
|
188
167
|
}
|
|
189
168
|
]
|
|
190
|
-
}
|
|
169
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{
|
|
2
|
+
"config": {
|
|
3
|
+
"id": 2,
|
|
4
|
+
"name": "数据流拓扑",
|
|
5
|
+
"showType": "auto",
|
|
6
|
+
"layout": "circular",
|
|
7
|
+
"enableLineFlow": true
|
|
8
|
+
},
|
|
9
|
+
"nodes": [
|
|
10
|
+
{
|
|
11
|
+
"id": "000000004e2f8f51",
|
|
12
|
+
"name": "HuiJu166.2_20001",
|
|
13
|
+
"ciType": "ruijieSwitch",
|
|
14
|
+
"attributes": [
|
|
15
|
+
{
|
|
16
|
+
"code": "ipAddress",
|
|
17
|
+
"name": "IP地址",
|
|
18
|
+
"tips": true,
|
|
19
|
+
"tags": true,
|
|
20
|
+
"value": "172.17.160.114"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"code": "macAddress",
|
|
24
|
+
"name": "Mac地址",
|
|
25
|
+
"tips": true,
|
|
26
|
+
"tags": false,
|
|
27
|
+
"value": "00-74-9C-8F-F3-7D"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"groupId": 19,
|
|
31
|
+
"operation": "delete"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "000000004e2f8f59",
|
|
35
|
+
"name": "HuiJu166.2_20003",
|
|
36
|
+
"ciType": "ruijieSwitch",
|
|
37
|
+
"ciName": "ruijieSwitch",
|
|
38
|
+
"operation": "delete",
|
|
39
|
+
"attributes": [
|
|
40
|
+
{
|
|
41
|
+
"code": "ipAddress",
|
|
42
|
+
"name": "IP地址",
|
|
43
|
+
"tips": true,
|
|
44
|
+
"tags": true,
|
|
45
|
+
"value": "172.17.160.114"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"code": "macAddress",
|
|
49
|
+
"name": "Mac地址",
|
|
50
|
+
"tips": true,
|
|
51
|
+
"tags": false,
|
|
52
|
+
"value": "00-74-9C-8F-F3-7D"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"groupId": 20,
|
|
56
|
+
"groupTag": null
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "000000004e2f28e7",
|
|
60
|
+
"name": "HuiJu166.2",
|
|
61
|
+
"ciType": "ruijieSwitch",
|
|
62
|
+
"ciName": "ruijieSwitch",
|
|
63
|
+
"operation": "delete",
|
|
64
|
+
"attributes": [
|
|
65
|
+
{
|
|
66
|
+
"code": "ipAddress",
|
|
67
|
+
"name": "IP地址",
|
|
68
|
+
"tips": true,
|
|
69
|
+
"tags": true,
|
|
70
|
+
"value": "172.17.166.2"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"code": "macAddress",
|
|
74
|
+
"name": "Mac地址",
|
|
75
|
+
"tips": true,
|
|
76
|
+
"tags": false,
|
|
77
|
+
"value": "00-74-9C-8F-F3-7D"
|
|
78
|
+
}
|
|
79
|
+
],
|
|
80
|
+
"groupId": 18,
|
|
81
|
+
"groupTag": null
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
"links": [
|
|
85
|
+
{
|
|
86
|
+
"id": "r647792732420440064",
|
|
87
|
+
"ciType": "networkLink",
|
|
88
|
+
"name": "172.17.160.114(Gi 0/1) - 172.17.160.114(Gi 0/1)",
|
|
89
|
+
"source": "000000004e2f8f51",
|
|
90
|
+
"target": "000000004e2f28e7",
|
|
91
|
+
"operation": "delete"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"id": "r647792734572118016",
|
|
95
|
+
"ciType": "networkLink",
|
|
96
|
+
"name": "链路111",
|
|
97
|
+
"source": "000000004e2f8f51",
|
|
98
|
+
"target": "000000004e2f8f59",
|
|
99
|
+
"operation": "delete",
|
|
100
|
+
"styles": {
|
|
101
|
+
"direction": "right",
|
|
102
|
+
"color": "#ff00ff"
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
}
|