@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.
Files changed (162) hide show
  1. package/build/1.js +2 -2
  2. package/build/2.js +1 -1
  3. package/build/index.css +1 -1
  4. package/build/index.html +1 -1
  5. package/build/index.js +36 -36
  6. package/demo/1/345/237/272/346/234/254/src/ShowAttributeDemo.jsx +14 -0
  7. package/demo/1/345/237/272/346/234/254/usage1.md +2 -20
  8. package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/TopoFull.jsx +75 -0
  9. package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/{TopoCenterViewer.jsx → TopoViewer.jsx} +0 -0
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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
  31. package/demo/2/346/213/223/346/211/221/344/270/255/345/277/203/js/request.js +2 -2
  32. 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
  33. 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
  34. 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
  35. 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
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. 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
  43. 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
  44. 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
  45. 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
  46. 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
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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
  52. 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
  53. 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
  54. 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
  55. 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
  56. 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
  57. 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
  58. 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
  59. 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
  60. 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
  61. 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
  62. 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
  63. 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
  64. 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
  65. 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
  66. 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
  67. 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
  68. 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
  69. package/demo/5/345/244/232/345/256/236/344/276/213/js/TopoCenterViewer.jsx +1 -1
  70. package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{api/v1/model → model/v1/api}/getAllDict +0 -0
  71. package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/alarm +0 -0
  72. package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/alarm.json +0 -0
  73. package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/attributes/once +0 -0
  74. 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
  75. package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/attributes/polling +0 -0
  76. 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
  77. 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
  78. 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
  79. package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/menu +0 -0
  80. package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/menu.json +0 -0
  81. package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/shape +0 -0
  82. package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/shape.json +0 -0
  83. 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
  84. 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
  85. package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/structure/relationList +0 -0
  86. 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
  87. package/demo/5/345/244/232/345/256/236/344/276/213/js/mock/{appserver/topo/v1 → topo/v1/api}/webUrl/list +0 -0
  88. 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
  89. package/demo/5/345/244/232/345/256/236/344/276/213/js/request.js +3 -3
  90. package/demo/API/API.md +68 -5
  91. package/demo/{2/346/213/223/346/211/221/344/270/255/345/277/203/js/createMockRequest.js → createMockRequest.js} +6 -4
  92. package/es/components/TopoView/Topo.js +10 -52
  93. package/es/components/TopoView/TopoContent.js +63 -0
  94. package/es/components/TopoView/settings/GroupNodeList/GroupNodeList.js +18 -0
  95. package/es/components/TopoView/settings/{ResourceList.js → GroupNodeList/ResourceList.js} +2 -52
  96. package/es/components/TopoView/settings/{ResourceList.module.scss → GroupNodeList/ResourceList.module.scss} +0 -0
  97. package/es/components/TopoView/settings/{SelectResource → GroupNodeList/SelectResource}/index.js +0 -0
  98. package/es/components/TopoView/settings/{SelectResource → GroupNodeList/SelectResource}/index.module.scss +0 -0
  99. package/es/components/TopoView/settings/LayerSettingsForm.js +8 -3
  100. package/es/components/TopoView/settings/Settings.js +1 -0
  101. package/es/components/TopoView/toolbar/index.js +2 -1
  102. package/es/components/TopoView/toolbar/widgets/EditButton.js +1 -1
  103. package/es/components/TopoView/topoView.js +4 -5
  104. package/es/components/index.module.scss +7 -9
  105. package/es/core/models/TopoApp.js +164 -74
  106. package/es/core/models/common/Alarm.js +20 -4
  107. package/es/core/models/common/TopoClient.js +9 -1
  108. package/es/core/models/contextMenu/buildNodeContextMenu.js +10 -2
  109. package/es/hooks/usePolling.js +14 -7
  110. package/es/hooks/useTopoEdit.js +64 -32
  111. package/es/icons/icons.js +1 -0
  112. package/es/models/topoCreateMod.js +50 -45
  113. package/es/models/topoMod.js +13 -17
  114. package/es/topoCenter/components/Topology.js +6 -0
  115. package/es/topoCenter/createTopo.js +7 -0
  116. package/es/topoCenter/getTopoData.js +3 -5
  117. package/es/topoCenter/index.js +4 -0
  118. package/es/topoCenter/models/TopoCenter.js +21 -2
  119. package/es/topoCenter/viewer/createTopoViewer.js +0 -2
  120. package/es/utils/htElementUtils.js +53 -0
  121. package/es/utils/topoData.js +14 -2
  122. package/lib/components/TopoView/Topo.js +12 -53
  123. package/lib/components/TopoView/TopoContent.js +84 -0
  124. package/lib/components/TopoView/settings/GroupNodeList/GroupNodeList.js +33 -0
  125. package/lib/components/TopoView/settings/{ResourceList.js → GroupNodeList/ResourceList.js} +2 -52
  126. package/lib/components/TopoView/settings/{ResourceList.module.scss → GroupNodeList/ResourceList.module.scss} +0 -0
  127. package/lib/components/TopoView/settings/{SelectResource → GroupNodeList/SelectResource}/index.js +0 -0
  128. package/lib/components/TopoView/settings/{SelectResource → GroupNodeList/SelectResource}/index.module.scss +0 -0
  129. package/lib/components/TopoView/settings/LayerSettingsForm.js +9 -3
  130. package/lib/components/TopoView/settings/Settings.js +1 -0
  131. package/lib/components/TopoView/toolbar/index.js +5 -1
  132. package/lib/components/TopoView/toolbar/widgets/EditButton.js +1 -1
  133. package/lib/components/TopoView/topoView.js +4 -5
  134. package/lib/components/index.module.scss +7 -9
  135. package/lib/core/models/TopoApp.js +165 -74
  136. package/lib/core/models/common/Alarm.js +20 -4
  137. package/lib/core/models/common/TopoClient.js +9 -1
  138. package/lib/core/models/contextMenu/buildNodeContextMenu.js +10 -2
  139. package/lib/hooks/usePolling.js +14 -7
  140. package/lib/hooks/useTopoEdit.js +64 -32
  141. package/lib/icons/icons.js +3 -0
  142. package/lib/models/topoCreateMod.js +50 -45
  143. package/lib/models/topoMod.js +13 -17
  144. package/lib/topoCenter/components/Topology.js +20 -0
  145. package/lib/topoCenter/createTopo.js +19 -0
  146. package/lib/topoCenter/getTopoData.js +3 -5
  147. package/lib/topoCenter/index.js +17 -0
  148. package/lib/topoCenter/models/TopoCenter.js +21 -2
  149. package/lib/topoCenter/viewer/createTopoViewer.js +0 -4
  150. package/lib/utils/htElementUtils.js +66 -0
  151. package/lib/utils/topoData.js +13 -2
  152. package/package.json +7 -6
  153. 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
  154. 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
  155. 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
  156. 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
  157. package/es/backup/1.js +0 -155
  158. package/es/createTopoView.js +0 -42
  159. package/es/utils/topoDataRe.js +0 -777
  160. package/lib/backup/1.js +0 -161
  161. package/lib/createTopoView.js +0 -58
  162. 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> &nbsp; &nbsp;
54
+ </div>
55
+ <Button type="primary" onClick={() => { topo.triggerSaveEvent() }}>保存</Button> &nbsp; &nbsp;
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
+ 此处是标题 &nbsp; &nbsp;
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> &nbsp; &nbsp;
116
+ <Button type="primary" onClick={onTriggerSaveEvent}>保存</Button> &nbsp; &nbsp;
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": 3,
4
- "name": "拓扑3",
5
- "layout": "towardsouth",
6
- "showType": "layers"
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": "3",
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": "2",
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": "1",
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
- "groupTag": null
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
- "groupTag": null
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": 20,
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": "000000004e2f8f55",
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": 1,
4
- "name": "拓扑1",
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
- "groupTag": null
51
+ "operation": "delete"
56
52
  },
57
53
  {
58
54
  "id": "000000004e2f8f59",
@@ -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 list = Object.freeze([{
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": "拓扑1",
5
- "layout": "towardsouth",
6
- "showType": "layers"
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
- "groupTag": null
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
- "groupTag": null
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": "000000004e2f8f55",
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
+ }