bfg-common 1.6.63 → 1.6.65

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 (188) hide show
  1. package/assets/localization/local_be.json +5 -1
  2. package/assets/localization/local_en.json +15 -11
  3. package/assets/localization/local_hy.json +5 -1
  4. package/assets/localization/local_kk.json +5 -1
  5. package/assets/localization/local_ru.json +10 -6
  6. package/assets/localization/local_zh.json +5 -1
  7. package/components/atoms/dropdown/dropdown/Dropdown.vue +8 -10
  8. package/components/atoms/dropdown/dropdown/lib/models/interfaces.ts +0 -1
  9. package/components/common/adapterManager/AdapterManager.vue +473 -473
  10. package/components/common/adapterManager/AdapterManagerNew.vue +86 -0
  11. package/components/common/adapterManager/AdapterManagerOld.vue +498 -498
  12. package/components/common/adapterManager/addAdapterModal/AddAdapterModal.vue +70 -70
  13. package/components/common/adapterManager/addAdapterModal/AddAdapterModalNew.vue +110 -110
  14. package/components/common/adapterManager/addAdapterModal/AddAdapterModalOld.vue +531 -531
  15. package/components/common/adapterManager/addAdapterWarningModal/AddAdapterWarningModal.vue +32 -32
  16. package/components/common/adapterManager/addAdapterWarningModal/AddAdapterWarningModalNew.vue +37 -37
  17. package/components/common/adapterManager/addAdapterWarningModal/AddAdapterWarningModalOld.vue +73 -73
  18. package/components/common/adapterManager/lib/config/index.ts +19 -19
  19. package/components/common/adapterManager/noActiveAdaptersModal/NoActiveAdaptersModal.vue +31 -31
  20. package/components/common/adapterManager/noActiveAdaptersModal/NoActiveAdaptersModalNew.vue +34 -34
  21. package/components/common/adapterManager/noActiveAdaptersModal/NoActiveAdaptersModalOld.vue +57 -57
  22. package/components/common/adapterManager/noConnectedActiveAdaptersModal/NoConnectedActiveAdaptersModal.vue +31 -31
  23. package/components/common/adapterManager/noConnectedActiveAdaptersModal/NoConnectedActiveAdaptersModalNew.vue +34 -34
  24. package/components/common/adapterManager/noConnectedActiveAdaptersModal/NoConnectedActiveAdaptersModalOld.vue +57 -57
  25. package/components/common/adapterManager/ui/actions/AddAdapterButton.vue +34 -34
  26. package/components/common/adapterManager/ui/actions/RemoveAdapterButton.vue +41 -41
  27. package/components/common/adapterManager/ui/actions/VerticalSeparator.vue +10 -10
  28. package/components/common/adapterManager/ui/actions/bar/Bar.vue +2 -0
  29. package/components/common/adapterManager/ui/actions/bar/BarNew.vue +3 -2
  30. package/components/common/adapterManager/ui/actions/bar/BarOld.vue +95 -95
  31. package/components/common/adapterManager/ui/actions/moveDownAdapterButton/MoveDownAdapterButton.vue +28 -28
  32. package/components/common/adapterManager/ui/actions/moveDownAdapterButton/MoveDownAdapterButtonNew.vue +76 -76
  33. package/components/common/adapterManager/ui/actions/moveDownAdapterButton/MoveDownAdapterButtonOld.vue +33 -33
  34. package/components/common/adapterManager/ui/actions/moveUpAdapterButton/MoveUpAdapterButton.vue +28 -28
  35. package/components/common/adapterManager/ui/actions/moveUpAdapterButton/MoveUpAdapterButtonNew.vue +77 -77
  36. package/components/common/adapterManager/ui/actions/moveUpAdapterButton/MoveUpAdapterButtonOld.vue +33 -33
  37. package/components/common/adapterManager/ui/noSelectedAdapter/NoSelectedAdapter.vue +24 -24
  38. package/components/common/adapterManager/ui/noSelectedAdapter/NoSelectedAdapterNew.vue +18 -18
  39. package/components/common/adapterManager/ui/noSelectedAdapter/NoSelectedAdapterOld.vue +38 -38
  40. package/components/common/adapterManager/ui/secondTitle/SecondTitle.vue +31 -31
  41. package/components/common/adapterManager/ui/secondTitle/SecondTitleNew.vue +51 -51
  42. package/components/common/adapterManager/ui/secondTitle/SecondTitleOld.vue +35 -35
  43. package/components/common/adapterManager/ui/table/Table.vue +88 -88
  44. package/components/common/adapterManager/ui/table/TableNew.vue +137 -137
  45. package/components/common/adapterManager/ui/table/TableOld.vue +141 -141
  46. package/components/common/adapterManager/ui/table/adapters/Adapters.vue +44 -44
  47. package/components/common/adapterManager/ui/table/adapters/AdaptersNew.vue +187 -187
  48. package/components/common/adapterManager/ui/table/adapters/AdaptersOld.vue +87 -87
  49. package/components/common/adapterManager/ui/table/header/Header.vue +57 -57
  50. package/components/common/adapterManager/ui/table/header/HeaderNew.vue +81 -81
  51. package/components/common/adapterManager/ui/table/header/HeaderOld.vue +79 -79
  52. package/components/common/adapterManager/ui/table/lib/models/types.ts +1 -1
  53. package/components/common/diagramMain/Diagram.vue +459 -459
  54. package/components/common/diagramMain/DiagramMain.vue +929 -929
  55. package/components/common/diagramMain/adapter/Adapter.vue +123 -123
  56. package/components/common/diagramMain/adapter/AdapterItem.vue +438 -438
  57. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  58. package/components/common/diagramMain/adapter/Contents.vue +212 -212
  59. package/components/common/diagramMain/adapter/Lines.vue +81 -81
  60. package/components/common/diagramMain/adapter/block/Block.vue +27 -27
  61. package/components/common/diagramMain/adapter/block/BlockNew.vue +58 -58
  62. package/components/common/diagramMain/adapter/block/BlockOld.vue +50 -50
  63. package/components/common/diagramMain/adapter/secondBlock/SecondBlock.vue +27 -27
  64. package/components/common/diagramMain/adapter/secondBlock/SecondBlockNew.vue +60 -60
  65. package/components/common/diagramMain/adapter/secondBlock/SecondBlockOld.vue +51 -51
  66. package/components/common/diagramMain/header/Header.vue +49 -49
  67. package/components/common/diagramMain/header/HeaderNew.vue +155 -155
  68. package/components/common/diagramMain/header/HeaderOld.vue +234 -234
  69. package/components/common/diagramMain/highlights/Highlights.vue +151 -151
  70. package/components/common/diagramMain/highlights/HighlightsNew.vue +124 -124
  71. package/components/common/diagramMain/highlights/HighlightsOld.vue +107 -107
  72. package/components/common/diagramMain/lib/config/index.ts +81 -81
  73. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  74. package/components/common/diagramMain/lib/config/positions.ts +194 -194
  75. package/components/common/diagramMain/lib/models/enums.ts +44 -44
  76. package/components/common/diagramMain/lib/models/interfaces.ts +760 -760
  77. package/components/common/diagramMain/lib/models/types.ts +21 -21
  78. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  79. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +331 -331
  80. package/components/common/diagramMain/modals/Modals.vue +483 -483
  81. package/components/common/diagramMain/modals/UnsavedChangesModal.vue +32 -0
  82. package/components/common/diagramMain/modals/editSettings/EditSettings.vue +104 -102
  83. package/components/common/diagramMain/modals/editSettings/EditSettingsNew.vue +285 -0
  84. package/components/common/diagramMain/modals/editSettings/EditSettingsOld.vue +254 -0
  85. package/components/common/diagramMain/modals/editSettings/confirmTeamingSettingsModal/ConfirmTeamingSettingsModal.vue +31 -0
  86. package/components/common/diagramMain/modals/editSettings/confirmTeamingSettingsModal/ConfirmTeamingSettingsModalNew.vue +82 -0
  87. package/components/common/diagramMain/modals/editSettings/{ConfirmTeamingSettingsModal.vue → confirmTeamingSettingsModal/ConfirmTeamingSettingsModalOld.vue} +2 -5
  88. package/components/common/diagramMain/modals/editSettings/lib/config/config.ts +15 -0
  89. package/components/common/diagramMain/modals/editSettings/lib/models/interfaces.ts +6 -0
  90. package/components/common/diagramMain/modals/editSettings/lib/utils/utils.ts +177 -0
  91. package/components/common/diagramMain/modals/editSettings/modal/EditSettingsModal.vue +137 -0
  92. package/components/common/diagramMain/modals/editSettings/modal/EditSettingsModalNew.vue +91 -0
  93. package/components/common/diagramMain/modals/editSettings/{EditSettingsModal.vue → modal/EditSettingsModalOld.vue} +12 -51
  94. package/components/common/diagramMain/modals/editSettings/tabs/networkProperties/NetworkProperties.vue +158 -0
  95. package/components/common/diagramMain/modals/editSettings/tabs/networkProperties/NetworkPropertiesNew.vue +262 -0
  96. package/components/common/diagramMain/modals/editSettings/tabs/{NetworkProperties.vue → networkProperties/NetworkPropertiesOld.vue} +12 -113
  97. package/components/common/diagramMain/modals/editSettings/tabs/port/ipvFourSettings/IpvFourSettings.vue +192 -0
  98. package/components/common/diagramMain/modals/editSettings/tabs/port/ipvFourSettings/IpvFourSettingsNew.vue +388 -0
  99. package/components/common/diagramMain/modals/editSettings/tabs/port/{IpvFourSettings.vue → ipvFourSettings/IpvFourSettingsOld.vue} +11 -152
  100. package/components/common/diagramMain/modals/editSettings/tabs/port/portProperties/PortProperties.vue +139 -0
  101. package/components/common/diagramMain/modals/editSettings/tabs/port/portProperties/PortPropertiesNew.vue +286 -0
  102. package/components/common/diagramMain/modals/editSettings/tabs/port/{PortProperties.vue → portProperties/PortPropertiesOld.vue} +12 -103
  103. package/components/common/diagramMain/modals/editSettings/tabs/security/Security.vue +209 -0
  104. package/components/common/diagramMain/modals/editSettings/tabs/security/SecurityNew.vue +233 -0
  105. package/components/common/diagramMain/modals/editSettings/tabs/{Security.vue → security/SecurityOld.vue} +25 -48
  106. package/components/common/diagramMain/modals/editSettings/tabs/switchProperties/SwitchProperties.vue +128 -0
  107. package/components/common/diagramMain/modals/editSettings/tabs/switchProperties/SwitchPropertiesNew.vue +235 -0
  108. package/components/common/diagramMain/modals/editSettings/tabs/switchProperties/SwitchPropertiesOld.vue +87 -0
  109. package/components/common/diagramMain/modals/editSettings/tabs/teamingFailover/TeamingFailover.vue +99 -0
  110. package/components/common/diagramMain/modals/editSettings/tabs/teamingFailover/TeamingFailoverNew.vue +319 -0
  111. package/components/common/diagramMain/modals/editSettings/tabs/{TeamingFailover.vue → teamingFailover/TeamingFailoverOld.vue} +11 -48
  112. package/components/common/diagramMain/modals/editSettings/tabs/trafficShaping/TrafficShaping.vue +173 -0
  113. package/components/common/diagramMain/modals/editSettings/tabs/trafficShaping/TrafficShapingNew.vue +348 -0
  114. package/components/common/diagramMain/modals/editSettings/tabs/{TrafficShaping.vue → trafficShaping/TrafficShapingOld.vue} +12 -134
  115. package/components/common/diagramMain/modals/lib/config/adapterModal.ts +147 -147
  116. package/components/common/diagramMain/modals/lib/config/diagramConfig.ts +66 -66
  117. package/components/common/diagramMain/modals/lib/config/index.ts +56 -56
  118. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  119. package/components/common/diagramMain/modals/lib/config/networkModal.ts +405 -405
  120. package/components/common/diagramMain/modals/lib/config/portModal.ts +253 -253
  121. package/components/common/diagramMain/modals/lib/config/switchModal.ts +245 -245
  122. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  123. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  124. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +88 -88
  125. package/components/common/diagramMain/modals/lib/utils/index.ts +34 -4
  126. package/components/common/diagramMain/modals/migrateVmkernelAdapter/MigrateVmkernelAdapter.vue +541 -541
  127. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  128. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +170 -170
  129. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  130. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/VmkernelAdapterReadyComplete.vue +49 -49
  131. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +19 -19
  132. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  133. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  134. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  135. package/components/common/diagramMain/modals/remove/RemoveModal.vue +82 -82
  136. package/components/common/diagramMain/modals/remove/RemoveModalNew.vue +106 -106
  137. package/components/common/diagramMain/modals/remove/RemoveModalOld.vue +241 -241
  138. package/components/common/diagramMain/modals/viewSettings/info/Info.vue +57 -57
  139. package/components/common/diagramMain/modals/viewSettings/info/InfoNew.vue +174 -174
  140. package/components/common/diagramMain/modals/viewSettings/info/InfoOld.vue +141 -141
  141. package/components/common/diagramMain/modals/viewSettings/viewSettings/ViewSettings.vue +45 -45
  142. package/components/common/diagramMain/modals/viewSettings/viewSettings/ViewSettingsNew.vue +323 -323
  143. package/components/common/diagramMain/modals/viewSettings/viewSettings/ViewSettingsOld.vue +203 -203
  144. package/components/common/diagramMain/modals/viewSettings/viewSettingsModal/ViewSettingsModal.vue +60 -60
  145. package/components/common/diagramMain/modals/viewSettings/viewSettingsModal/ViewSettingsModalNew.vue +50 -50
  146. package/components/common/diagramMain/modals/viewSettings/viewSettingsModal/ViewSettingsModalOld.vue +70 -70
  147. package/components/common/diagramMain/modals/viewSettings/viewSettingsModal/lib/models/interfaces.ts +48 -48
  148. package/components/common/diagramMain/network/Contents.vue +497 -497
  149. package/components/common/diagramMain/network/Lines.vue +107 -107
  150. package/components/common/diagramMain/network/Network.vue +141 -141
  151. package/components/common/diagramMain/network/block/Block.vue +37 -37
  152. package/components/common/diagramMain/network/block/BlockNew.vue +68 -68
  153. package/components/common/diagramMain/network/block/BlockOld.vue +64 -64
  154. package/components/common/diagramMain/network/noNetwork/NoNetwork.vue +12 -12
  155. package/components/common/diagramMain/network/noNetwork/NoNetworkNew.vue +89 -89
  156. package/components/common/diagramMain/network/noNetwork/NoNetworkOld.vue +61 -61
  157. package/components/common/diagramMain/network/secondBlock/SecondBlock.vue +41 -41
  158. package/components/common/diagramMain/network/secondBlock/SecondBlockNew.vue +64 -64
  159. package/components/common/diagramMain/network/secondBlock/SecondBlockOld.vue +60 -60
  160. package/components/common/diagramMain/port/Port.vue +580 -580
  161. package/components/common/diagramMain/port/Ports.vue +47 -47
  162. package/components/common/diagramMain/skeleton/Header.vue +31 -31
  163. package/components/common/diagramMain/skeleton/Switch.vue +75 -75
  164. package/components/common/diagramMain/switch/Switch.vue +180 -180
  165. package/components/common/diagramMain/switch/SwitchSelected.vue +111 -111
  166. package/components/common/modals/Rename.vue +3 -1
  167. package/components/common/monitor/advanced/table/tableOld/TableOld.vue +93 -93
  168. package/components/common/monitor/utilization/New.vue +5 -0
  169. package/components/common/monitor/utilization/Old.vue +24 -65
  170. package/components/common/monitor/utilization/Utilization.vue +14 -22
  171. package/components/common/monitor/utilization/infoBlock/InfoBlock.vue +2 -125
  172. package/components/common/monitor/utilization/infoBlock/New.vue +3 -183
  173. package/components/common/monitor/utilization/infoBlock/Old.vue +66 -71
  174. package/components/common/monitor/utilization/lib/models/enums.ts +4 -4
  175. package/components/common/monitor/utilization/lib/models/interfaces.ts +12 -14
  176. package/components/common/monitor/utilization/lib/utils/index.ts +6 -64
  177. package/components/common/vm/actions/rename/Old.vue +1 -0
  178. package/package.json +2 -2
  179. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +0 -164
  180. package/components/common/monitor/utilization/infoBlock/progressBar/New.vue +0 -64
  181. package/components/common/monitor/utilization/infoBlock/progressBar/Old.vue +0 -65
  182. package/components/common/monitor/utilization/infoBlock/progressBar/ProgressBar.vue +0 -84
  183. package/components/common/monitor/utilization/infoBlock/progressBar/lib/models/interfaces.ts +0 -10
  184. package/components/common/monitor/utilization/lib/models/types.ts +0 -1
  185. package/components/common/monitor/utilization/new/New.vue +0 -167
  186. package/components/common/monitor/utilization/new/Portlet.vue +0 -42
  187. package/components/common/monitor/utilization/new/Skeleton.vue +0 -120
  188. package/components/common/monitor/utilization/new/lib/utils/newPortlet.ts +0 -7
@@ -1,929 +1,929 @@
1
- <template>
2
- <div
3
- v-if="props.diagramData"
4
- :class="{ 'diagram-min-width': !props.inPortlet }"
5
- >
6
- <div
7
- :class="[
8
- 'diagram-main-container',
9
- {
10
- 'is-new-view': isNewView,
11
- },
12
- ]"
13
- >
14
- <common-diagram-main-diagram
15
- :project="props.project"
16
- :diagram-data="props.diagramData"
17
- :is-show-diagram="isShowDiagram"
18
- :in-portlet="props.inPortlet"
19
- :networks-with-positions="networksWithPositions"
20
- :main-rect-height="mainRectHeight"
21
- :main-switch-line="mainSwitchLine"
22
- :selected-main-line="selectedMainLine"
23
- :adapters-with-positions="adaptersWithPositions"
24
- :selected-port="selectedPort"
25
- :selected-adapter="selectedAdapter"
26
- :selected-network="selectedNetwork"
27
- :selected-switch-line-y="selectedSwitchLineY"
28
- :is-dark-mode="props.isDarkMode"
29
- :networks-count="networksCount"
30
- @toggle-diagram="onToggleDiagram"
31
- @click-diagram="onClickDiagram"
32
- @toggle-adapters="onToggleAdapters"
33
- @select-adapter="onSelectAdapter"
34
- @toggle-ports="onTogglePorts"
35
- @select-port="onSelectPort"
36
- @select-network="onSelectNetwork"
37
- @show-modal="onShowModal"
38
- />
39
- </div>
40
- <common-diagram-main-modals
41
- :is-show-port-view-settings-modal="isShowPortViewSettingsModal"
42
- :is-show-network-view-settings-modal="isShowNetworkViewSettingsModal"
43
- :is-show-adapter-view-settings-modal="isShowAdapterViewSettingsModal"
44
- :is-show-vcenter-view-settings-modal="isShowVCenterViewSettingsModal"
45
- :is-show-network-remove-modal="isShowNetworkRemoveModal"
46
- :is-show-switch-remove-modal="isShowSwitchRemoveModal"
47
- :is-show-port-remove-modal="isShowPortRemoveModal"
48
- :is-show-network-edit-settings-modal="isShowNetworkEditSettingsModal"
49
- :is-show-port-edit-settings-modal="isShowPortEditSettingsModal"
50
- :is-show-switch-edit-settings-modal="isShowSwitchEditSettingsModal"
51
- :is-show-switch-view-settings-modal="isShowSwitchViewSettingsModal"
52
- :is-show-switch-manage-physical-adapters-modal="
53
- isShowSwitchManagePhysicalAdaptersModal
54
- "
55
- :is-show-add-networking-modal="isShowAddNetworkingModal"
56
- :is-show-migrate-vmkernel-adapter-modal="
57
- isShowMigrateVmkernelAdapterModal
58
- "
59
- :initial-data="initialData"
60
- :host-name="props.hostName"
61
- :is-remove-modal-loading="props.isRemoveModalLoading"
62
- :diagram-data="props.diagramData"
63
- :adapters="props.adapters"
64
- :is-dark-mode="props.isDarkMode"
65
- :is-edit-modal-loading="props.isEditModalLoading"
66
- :free-adapters="props.freeAdapters"
67
- :manage-physical-adapter-status="managePhysicalAdapterStatus"
68
- :initial-manage-physical-adapter-status="
69
- initialManagePhysicalAdapterStatus
70
- "
71
- :is-manage-adapters-modal-loading="props.isManageAdaptersModalLoading"
72
- :standard-switches-initial="props.standardSwitchesInitial"
73
- :selected-standard-switch-id="selectedStandardSwitchId"
74
- :selected-switch-id="selectedSwitchId"
75
- :tcp-stacks="props.tcpStacks"
76
- :is-networking-loading="props.isNetworkingLoading"
77
- :is-get-existing-switches-loading="props.isGetExistingSwitchesLoading"
78
- :is-get-tcp-stack-loading="props.isGetTcpStackLoading"
79
- :networks-list="props.networksList"
80
- :is-migrate-adapter-loading="props.isMigrateAdapterLoading"
81
- :diagrams-data="props.diagramsData"
82
- :project="props.project"
83
- @hide-port-view-settings-modal="onHidePortViewSettingsModal"
84
- @hide-network-view-settings-modal="onHideNetworkViewSettingsModal"
85
- @hide-adapter-view-settings-modal="onHideAdapterViewSettingsModal"
86
- @hide-vcenter-view-settings-modal="onHideVCenterViewSettingsModal"
87
- @hide-switch-view-settings-modal="onHideSwitchViewSettingsModal"
88
- @hide-network-remove-modal="onHideNetworkRemoveModal"
89
- @hide-switch-remove-modal="onHideSwitchRemoveModal"
90
- @hide-port-remove-modal="onHidePortRemoveModal"
91
- @hide-network-edit-settings-modal="onHideNetworkEditSettingsModal"
92
- @hide-port-edit-settings-modal="onHidePortEditSettingsModal"
93
- @hide-switch-edit-settings-modal="onHideSwitchEditSettingsModal"
94
- @hide-switch-manage-physical-adapters-modal="
95
- onHideSwitchManagePhysicalAdaptersModal
96
- "
97
- @hide-add-networking-modal="onHideAddNetworkingModal"
98
- @hide-migrate-vmkernel-adapter-modal="onHideMigrateVmkernelAdapterModal"
99
- @remove="onRemove"
100
- @send-edit-data="onSendEditData"
101
- @change-edit-fields-data="onChangeEditFieldsData"
102
- @check-network-label="onCheckNetworkLabel"
103
- @send-manage-physical-adapters-data="onSendManagePhysicalAdaptersData"
104
- @change-adapter-status="onChangeManagePhysicalAdapterStatus"
105
- @get-free-adapters="onGetFreeAdapters"
106
- @get-existing-standard-switches="onGetExistingStandardSwitches"
107
- @get-tcp-stacks="onGetTcpStacks"
108
- @send-add-networking-data="onSendNetworkData"
109
- @add-networking-data-validate="onValidateBeforeSending"
110
- />
111
- </div>
112
- </template>
113
-
114
- <script setup lang="ts">
115
- import type {
116
- UI_I_Adapter,
117
- UI_I_AdapterStatus,
118
- UI_I_AdaptersWithPositions,
119
- UI_I_MainRectHeights,
120
- UI_I_ModalsInitialData,
121
- UI_I_Network,
122
- UI_I_EditFieldsData,
123
- UI_I_NetworksWithPositions,
124
- UI_I_SelectedAdapter,
125
- UI_I_SelectedPort,
126
- UI_I_SwitchLine,
127
- UI_I_ToggleDiagramAdaptersPayload,
128
- UI_I_ToggleDiagramPortsPayload,
129
- UI_I_PortToggleFlag,
130
- UI_I_DiagramData,
131
- UI_I_SwitchAdapterItem,
132
- } from '~/components/common/diagramMain/lib/models/interfaces'
133
- import type {
134
- UI_I_ArbitraryObject,
135
- UI_I_ItemsWithTotalCounts,
136
- } from '~/lib/models/interfaces'
137
- import type {
138
- UI_I_Switch,
139
- UI_I_TCPStack,
140
- } from '~/components/common/wizards/network/add/lib/models/interfaces'
141
- import type { UI_T_EditData } from '~/components/common/wizards/network/add/lib/models/types'
142
- import type { UI_T_Adapters } from '~/components/common/diagramMain/lib/models/types'
143
- import type { UI_T_Project } from '~/lib/models/types'
144
- import { UI_E_NetworkType, UI_E_PositionsY } from './lib/models/enums'
145
- import {
146
- managePhysicalAdapterStatusInitial,
147
- mainRectHeightsInitial,
148
- switchLineInitial,
149
- selectedPortInitial,
150
- selectedSwitchLineYInitial,
151
- selectedAdapterInitial,
152
- } from '~/components/common/diagramMain/lib/config'
153
- import {
154
- hasPortAndNetwork,
155
- networksPositions,
156
- getSelectNetworkDataFunc,
157
- getSelectPortDataFunc,
158
- countAdaptersHeight,
159
- getAdaptersPositions,
160
- } from '~/components/common/diagramMain/lib/utils/utils'
161
-
162
- const props = withDefaults(
163
- defineProps<{
164
- diagramData: UI_I_DiagramData
165
- project?: UI_T_Project
166
- inPortlet?: boolean
167
- standardSwitchesInitial?: UI_I_Switch[]
168
- hostName?: string
169
- adapters?: UI_I_ItemsWithTotalCounts<UI_I_SwitchAdapterItem>
170
- freeAdapters?: UI_I_Adapter[]
171
- networksList?: UI_I_Network[]
172
- isDarkMode: boolean
173
- tcpStacks?: UI_I_TCPStack[]
174
- diagramsData?: UI_I_DiagramData[]
175
- isManageAdaptersModalLoading?: boolean
176
- isNetworkingLoading?: boolean
177
- isGetExistingSwitchesLoading?: boolean
178
- isGetTcpStackLoading?: boolean
179
- isRemoveModalLoading?: boolean
180
- isEditModalLoading?: boolean
181
- isMigrateAdapterLoading?: boolean
182
- }>(),
183
- {
184
- project: 'procurator',
185
- diagramData: null,
186
- inPortlet: false,
187
- standardSwitchesInitial: () => [],
188
- hostName: '',
189
- adapters: () => ({
190
- total_items: 0,
191
- total_pages: 0,
192
- items: [],
193
- }),
194
- freeAdapters: () => [],
195
- networksList: () => [],
196
- tcpStacks: () => [],
197
- diagramsData: [],
198
- isManageAdaptersModalLoading: false,
199
- isNetworkingLoading: false,
200
- isGetExistingSwitchesLoading: false,
201
- isGetTcpStackLoading: false,
202
- isRemoveModalLoading: false,
203
- isEditModalLoading: false,
204
- isMigrateAdapterLoading: false,
205
- }
206
- )
207
-
208
- const { $store }: any = useNuxtApp()
209
-
210
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
211
-
212
- const initialData = ref<UI_I_ModalsInitialData>({})
213
- const switchInitialData = ref<UI_I_ModalsInitialData>({})
214
-
215
- watch(
216
- () => props.diagramData?.networking,
217
- (initial: UI_I_ModalsInitialData | undefined) => {
218
- if (initial) {
219
- initialData.value = initial
220
- switchInitialData.value = initial
221
- }
222
- },
223
- { deep: true, immediate: true }
224
- )
225
-
226
- const onValidateBeforeSending = (
227
- data: UI_T_EditData,
228
- type: string,
229
- setValidation: (messages: UI_I_ArbitraryObject<string>) => void
230
- ) => {
231
- emits('add-networking-data-validate', data, type, setValidation)
232
- }
233
-
234
- let initialManagePhysicalAdapterStatus = ref<UI_I_AdapterStatus>(
235
- managePhysicalAdapterStatusInitial
236
- )
237
-
238
- const managePhysicalAdapterStatus = ref<UI_I_AdapterStatus>(
239
- useDeepCopy(initialManagePhysicalAdapterStatus.value)
240
- )
241
-
242
- watch(
243
- () => props.diagramData,
244
- (newValue: UI_I_DiagramData) => {
245
- if (newValue?.networking) {
246
- initialManagePhysicalAdapterStatus.value = {
247
- active: useDeepCopy(props.diagramData?.networking?.activeAdapters),
248
- standby: useDeepCopy(props.diagramData?.networking?.standbyAdapters),
249
- unused: useDeepCopy(props.diagramData?.networking?.unusedAdapters),
250
- }
251
-
252
- managePhysicalAdapterStatus.value = useDeepCopy(
253
- initialManagePhysicalAdapterStatus.value
254
- )
255
- }
256
- },
257
- { deep: true, immediate: true }
258
- )
259
-
260
- const onChangeManagePhysicalAdapterStatus = (
261
- adapterStatusNew: UI_I_AdapterStatus
262
- ) => {
263
- managePhysicalAdapterStatus.value = adapterStatusNew
264
- }
265
-
266
- const isShowSwitchManagePhysicalAdaptersModal = ref<boolean>(false)
267
- const onHideSwitchManagePhysicalAdaptersModal = (): void => {
268
- isShowSwitchManagePhysicalAdaptersModal.value = false
269
- }
270
-
271
- const onSendManagePhysicalAdaptersData = (
272
- adapterStatus: UI_I_AdapterStatus,
273
- switchName: string,
274
- hideModal: () => void
275
- ) => {
276
- emits(
277
- 'send-manage-physical-adapters-data',
278
- adapterStatus,
279
- switchName,
280
- initialData.value,
281
- hideModal
282
- )
283
- }
284
-
285
- const isShowSwitchViewSettingsModal = ref<boolean>(false)
286
- const isShowSwitchEditSettingsModal = ref<boolean>(false)
287
- const isShowSwitchRemoveModal = ref<boolean>(false)
288
- const onHideSwitchViewSettingsModal = (): void => {
289
- isShowSwitchViewSettingsModal.value = false
290
- }
291
- const onHideSwitchEditSettingsModal = (): void => {
292
- isShowSwitchEditSettingsModal.value = false
293
- }
294
- const onHideSwitchRemoveModal = (): void => {
295
- isShowSwitchRemoveModal.value = false
296
- }
297
-
298
- const isShowAdapterViewSettingsModal = ref<boolean>(false)
299
- const onHideAdapterViewSettingsModal = (): void => {
300
- isShowAdapterViewSettingsModal.value = false
301
- }
302
-
303
- const isShowNetworkViewSettingsModal = ref<boolean>(false)
304
- const isShowNetworkEditSettingsModal = ref<boolean>(false)
305
- const isShowNetworkRemoveModal = ref<boolean>(false)
306
- const onHideNetworkViewSettingsModal = (): void => {
307
- isShowNetworkViewSettingsModal.value = false
308
- }
309
- const onHideNetworkEditSettingsModal = (): void => {
310
- isShowNetworkEditSettingsModal.value = false
311
- }
312
- const onHideNetworkRemoveModal = (): void => {
313
- isShowNetworkRemoveModal.value = false
314
- }
315
-
316
- const isShowPortViewSettingsModal = ref<boolean>(false)
317
- const isShowPortEditSettingsModal = ref<boolean>(false)
318
- const isShowPortRemoveModal = ref<boolean>(false)
319
- const onHidePortViewSettingsModal = (): void => {
320
- isShowPortViewSettingsModal.value = false
321
- }
322
- const onHidePortEditSettingsModal = (): void => {
323
- isShowPortEditSettingsModal.value = false
324
- }
325
- const onHidePortRemoveModal = (): void => {
326
- isShowPortRemoveModal.value = false
327
- }
328
-
329
- const isShowVCenterViewSettingsModal = ref<boolean>(false)
330
- const onHideVCenterViewSettingsModal = (): void => {
331
- isShowVCenterViewSettingsModal.value = false
332
- }
333
- const isShowAddNetworkingModal = ref<boolean>(false)
334
- const onHideAddNetworkingModal = (): void => {
335
- isShowAddNetworkingModal.value = false
336
- }
337
- const isShowMigrateVmkernelAdapterModal = ref<boolean>(false)
338
- const onHideMigrateVmkernelAdapterModal = (): void => {
339
- isShowMigrateVmkernelAdapterModal.value = false
340
- }
341
-
342
- const selectedStandardSwitchId = ref<string>('')
343
- const selectedSwitchId = ref<string>('')
344
-
345
- const onShowModal = (
346
- value: string,
347
- properties: UI_I_ModalsInitialData
348
- ): void => {
349
- switch (value) {
350
- case 'port-view-settings':
351
- initialData.value = properties
352
- isShowPortViewSettingsModal.value = true
353
- break
354
- case 'network-view-settings':
355
- isShowNetworkViewSettingsModal.value = true
356
- initialData.value = properties
357
- break
358
- case 'adapter-view-settings':
359
- isShowAdapterViewSettingsModal.value = true
360
- initialData.value = properties
361
- break
362
- case 'v-center-view-settings':
363
- isShowVCenterViewSettingsModal.value = true
364
- initialData.value = properties
365
- break
366
- case 'network-edit-settings':
367
- isShowNetworkEditSettingsModal.value = true
368
- initialData.value = properties
369
- break
370
- case 'port-edit-settings':
371
- initialData.value = properties
372
- isShowPortEditSettingsModal.value = true
373
- break
374
- case 'network-port-remove':
375
- initialData.value = properties
376
- isShowNetworkRemoveModal.value = true
377
- break
378
- case 'port-remove':
379
- initialData.value = properties
380
- isShowPortRemoveModal.value = true
381
- break
382
- case 'switch-edit':
383
- isShowSwitchEditSettingsModal.value = true
384
- initialData.value = useDeepCopy(switchInitialData.value)
385
- break
386
- case 'switch-manage-physical-adapters':
387
- isShowSwitchManagePhysicalAdaptersModal.value = true
388
- initialData.value = useDeepCopy(switchInitialData.value)
389
- break
390
- case 'add-networking':
391
- isShowAddNetworkingModal.value = true
392
- selectedStandardSwitchId.value = properties.switch_name
393
- selectedSwitchId.value = properties.switch_name
394
- break
395
- case 'switch-view-settings':
396
- isShowSwitchViewSettingsModal.value = true
397
- initialData.value = useDeepCopy(switchInitialData.value)
398
- break
399
- case 'migrate-vmkernel-adapter':
400
- isShowMigrateVmkernelAdapterModal.value = true
401
- break
402
- case 'switch-remove':
403
- isShowSwitchRemoveModal.value = true
404
- break
405
- }
406
- }
407
-
408
- const onRemove = (id: string, type: string) => {
409
- if (
410
- (type === 'network' || type === 'network1' || type === 'network2') &&
411
- selectedNetwork.value === id
412
- ) {
413
- selectedNetwork.value = '-1'
414
- resetSelection()
415
- } else if (type === 'port' && selectedPort.value.portId === id) {
416
- selectedPort.value.networkId = '-1'
417
- selectedPort.value.portId = '-1'
418
- resetSelection()
419
- }
420
-
421
- const hideModal =
422
- type === 'network' || type === 'network1' || type === 'network2'
423
- ? onHideNetworkRemoveModal
424
- : type === 'switch'
425
- ? onHideSwitchRemoveModal
426
- : onHidePortRemoveModal
427
-
428
- emits('remove', id, type, hideModal)
429
- }
430
- const onChangeEditFieldsData = (newEditFieldsData: UI_I_EditFieldsData) => {
431
- emits('change-edit-fields-data', newEditFieldsData)
432
- }
433
- const onCheckNetworkLabel = (
434
- label: string,
435
- sendMessage: (message: string) => void
436
- ) => {
437
- emits('check-network-label', label, sendMessage)
438
- }
439
- const onGetExistingStandardSwitches = () => {
440
- emits('get-existing-standard-switches')
441
- }
442
- const onGetTcpStacks = () => {
443
- emits('get-tcp-stacks')
444
- }
445
- const onGetFreeAdapters = (showModal: () => void) => {
446
- emits('get-free-adapters', showModal)
447
- }
448
- const onSendNetworkData = (
449
- data: UI_T_EditData,
450
- type: string,
451
- hideModal: () => void
452
- ) => {
453
- emits('send-add-networking-data', data, type, hideModal)
454
- }
455
- const onSendEditData = (type: string, hideModal: () => void, id?: string) => {
456
- emits('send-edit-data', type, initialData.value, hideModal, id)
457
- }
458
- const isShowDiagram = ref<boolean>(true)
459
- const onToggleDiagram = () => {
460
- isShowDiagram.value = !isShowDiagram.value
461
- }
462
- const mainRectHeights = ref<UI_I_MainRectHeights>(
463
- useDeepCopy(mainRectHeightsInitial)
464
- )
465
-
466
- const switchLine = ref<UI_I_SwitchLine>(useDeepCopy(switchLineInitial))
467
- const mainSwitchLine = computed<UI_I_SwitchLine>(
468
- () =>
469
- (switchLine.value.ay && {
470
- y1: Math.min(switchLine.value.y1, switchLine.value.ay),
471
- y2: Math.max(switchLine.value.y2, switchLine.value.ay),
472
- }) || { y1: 0, y2: 0 }
473
- )
474
-
475
- const selectedMainLine = ref(false)
476
- const selectedPort = ref<UI_I_SelectedPort>(useDeepCopy(selectedPortInitial))
477
- const selectedAdapter = ref<UI_I_SelectedAdapter>(
478
- useDeepCopy(selectedAdapterInitial)
479
- )
480
- const selectedNetwork = ref<string>('-1')
481
-
482
- const selectedSwitchLineY = ref<UI_I_SwitchLine>(
483
- useDeepCopy(selectedSwitchLineYInitial)
484
- )
485
- const mainRectHeight = computed<number>(() =>
486
- Math.max(
487
- mainRectHeights.value.networksHeight,
488
- mainRectHeights.value.adaptersHeight
489
- )
490
- )
491
-
492
- const countNetworksPositions = (
493
- newNetworks?: UI_I_Network[] | null
494
- ): UI_I_NetworksWithPositions[] => {
495
- let lastNetworkHeight = 0
496
- let lastPosition = UI_E_PositionsY.DIAGRAM_TOP + UI_E_PositionsY.BETWEEN_RECTS
497
- mainRectHeights.value.networksHeight =
498
- UI_E_PositionsY.DIAGRAM_TOP + UI_E_PositionsY.BETWEEN_RECTS
499
-
500
- const lastIndex = props.diagramData?.networks.findLastIndex(
501
- (network: UI_I_Network) =>
502
- network.activeAdapters.length > 0 && network.state.state !== 3
503
- )
504
-
505
- return (
506
- (newNetworks ? newNetworks : props.diagramData?.networks)?.map(
507
- (network: UI_I_Network, index: number) => {
508
- let portsCount = 0
509
- if (
510
- network.networkType ===
511
- (UI_E_NetworkType.VMPortsGroup || UI_E_NetworkType.VCenter)
512
- ) {
513
- portsCount = network.ports.length
514
- } else {
515
- portsCount = network.sysx ? 1 : 0
516
- }
517
- const portsHeight = network.toggle
518
- ? network.networkType === UI_E_NetworkType.VCenter
519
- ? portsCount * UI_E_PositionsY.SINGLE_V_CENTER_HEIGHT
520
- : portsCount * UI_E_PositionsY.SINGLE_PORT_HEIGHT
521
- : 0
522
- const networkHeight =
523
- UI_E_PositionsY.PORTS_FROM_RECT_TOP +
524
- portsHeight +
525
- (network.networkType === UI_E_NetworkType.VCenter
526
- ? UI_E_PositionsY.SINGLE_V_CENTER_HEIGHT - 10
527
- : UI_E_PositionsY.SINGLE_PORT_HEIGHT) +
528
- UI_E_PositionsY.SPACE_FROM_RECT_BOTTOM
529
-
530
- lastPosition +=
531
- lastNetworkHeight + (index && UI_E_PositionsY.BETWEEN_RECTS)
532
- lastNetworkHeight = networkHeight
533
-
534
- const connectLineY = lastPosition + networkHeight / 2
535
- const titlePosition = lastPosition + UI_E_PositionsY.TITLE_FROM_RECT_TOP
536
- const vlanPosition = lastPosition + UI_E_PositionsY.VLAN_FROM_RECT_TOP
537
- const portsPosition = lastPosition + UI_E_PositionsY.PORTS_FROM_RECT_TOP
538
-
539
- const networkPortsName =
540
- (network.networkType === UI_E_NetworkType.VMkernel &&
541
- 'VMkernel Ports') ||
542
- (network.networkType === UI_E_NetworkType.VMPortsGroup &&
543
- 'Virtual Machines') ||
544
- (network.networkType === UI_E_NetworkType.VCenter &&
545
- 'Virtual Machines') ||
546
- ''
547
-
548
- lastIndex !== -1 && index === 0 && (switchLine.value.y1 = connectLineY)
549
- lastIndex !== -1 &&
550
- index === lastIndex &&
551
- (switchLine.value.y2 = connectLineY)
552
-
553
- mainRectHeights.value.networksHeight +=
554
- networkHeight + UI_E_PositionsY.BETWEEN_RECTS
555
-
556
- const networkWithPortsPositions =
557
- network.networkType ===
558
- (UI_E_NetworkType.VMPortsGroup || UI_E_NetworkType.VCenter)
559
- ? network.ports.map((port, index) => {
560
- const portPosition =
561
- portsPosition +
562
- (network.networkType === UI_E_NetworkType.VCenter
563
- ? (index + 1) * UI_E_PositionsY.SINGLE_V_CENTER_HEIGHT - 10
564
- : (index + 1) * UI_E_PositionsY.SINGLE_PORT_HEIGHT)
565
-
566
- return {
567
- ...port,
568
- portPosition,
569
- }
570
- })
571
- : (network.sysx && [
572
- {
573
- id: network.sysx?.id,
574
- name: `${network.sysx?.id} ${
575
- network.sysx.ipv4_settings.ipv4
576
- ? `: ${network.sysx.ipv4_settings.ipv4}`
577
- : ''
578
- }`,
579
- state: network.sysx.state,
580
- testId: `port-${network.sysx?.id}`,
581
- portPosition:
582
- portsPosition + UI_E_PositionsY.SINGLE_PORT_HEIGHT,
583
- },
584
- ]) ||
585
- []
586
-
587
- return {
588
- ...network,
589
- ports: networkWithPortsPositions,
590
- portsCount,
591
- portsHeight,
592
- networkHeight,
593
- rectPosition: lastPosition,
594
- connectLineY,
595
- titlePosition,
596
- vlanPosition,
597
- vlanId: network.vlanId || '--',
598
- portsPosition,
599
- networkPortsName,
600
- }
601
- }
602
- ) || []
603
- )
604
- }
605
- const networksWithPositions = ref<UI_I_NetworksWithPositions[]>(
606
- countNetworksPositions()
607
- )
608
-
609
- const isPortToggled = ref<UI_I_PortToggleFlag>({
610
- value: false,
611
- id: '',
612
- })
613
-
614
- const countAdaptersPositions = (): UI_I_AdaptersWithPositions => {
615
- const { height, toggle, adaptersCount } = countAdaptersHeight(
616
- props.diagramData
617
- )
618
-
619
- mainRectHeights.value.adaptersHeight =
620
- UI_E_PositionsY.DIAGRAM_TOP + UI_E_PositionsY.BETWEEN_RECTS * 2 + height
621
-
622
- const { titlePosition, rectPosition, adaptersConnectLineY, adapters } =
623
- getAdaptersPositions(props.diagramData, height)
624
-
625
- switchLine.value.ay = adaptersConnectLineY
626
-
627
- return {
628
- toggle,
629
- height,
630
- adapters,
631
- rectPosition,
632
- adaptersConnectLineY,
633
- titlePosition,
634
- adaptersCount,
635
- }
636
- }
637
-
638
- const adaptersWithPositions = computed<UI_I_AdaptersWithPositions>(() => {
639
- return countAdaptersPositions()
640
- })
641
-
642
- const networksCount = computed<number>(
643
- () =>
644
- networksWithPositions.value.filter(
645
- (networkWithPositions: UI_I_NetworksWithPositions) =>
646
- networkWithPositions.activeAdapters.length > 0 &&
647
- networkWithPositions.state.state !== 3
648
- ).length
649
- )
650
-
651
- watch(
652
- () => props.diagramData?.networks,
653
- (newValue: UI_I_Network[] | null) => {
654
- networksWithPositions.value = countNetworksPositions(newValue)
655
-
656
- isPortToggled.value.value && handlePortToggle()
657
-
658
- if (selectedAdapter.value.adapterId !== '-1') {
659
- onSelectAdapter(selectedAdapter.value.adapterId)
660
- return
661
- }
662
-
663
- if (selectedPort.value.portId !== '-1') {
664
- onSelectPort(selectedPort.value.networkId, selectedPort.value.portId)
665
- return
666
- }
667
-
668
- if (selectedNetwork.value !== '-1') {
669
- cashedNetworkId.value = '-1'
670
- onSelectNetwork(selectedNetwork.value)
671
- return
672
- }
673
-
674
- if (selectedMainLine.value && networksCount.value === 0) {
675
- selectedMainLine.value = false
676
- return
677
- }
678
-
679
- if (selectedMainLine.value) return
680
-
681
- resetSelection()
682
- },
683
- { deep: true }
684
- )
685
-
686
- const onSelectPort = (networkId: string, portId: string): void => {
687
- const selectPortData = getSelectPortDataFunc(
688
- networkId,
689
- portId,
690
- networksWithPositions.value,
691
- adaptersWithPositions.value
692
- )
693
-
694
- if (!selectPortData) return
695
-
696
- selectedSwitchLineY.value = selectPortData.selectedSwitchLineY
697
- selectedPort.value = selectPortData.selectedPort
698
- }
699
-
700
- const cashedNetworkId = ref<string>('-1')
701
-
702
- const onSelectNetwork = (networkId: string): void => {
703
- if (cashedNetworkId.value === networkId) {
704
- resetSelection()
705
- cashedNetworkId.value = '-1'
706
- return
707
- }
708
-
709
- selectedNetwork.value = networkId
710
-
711
- const selectNetworkData = getSelectNetworkDataFunc(
712
- networkId,
713
- networksWithPositions.value,
714
- adaptersWithPositions.value
715
- )
716
-
717
- cashedNetworkId.value = networkId
718
-
719
- if (!selectNetworkData) return
720
-
721
- selectedSwitchLineY.value = selectNetworkData.selectedSwitchLineY
722
- selectedPort.value = selectNetworkData.selectedPort
723
- }
724
-
725
- const onSelectAdapter = (adapterId: string): void => {
726
- const selectedNetworks: UI_I_NetworksWithPositions[] =
727
- networksWithPositions.value?.filter(
728
- (network: UI_I_NetworksWithPositions) =>
729
- network.activeAdapters.includes(adapterId) && network.state.state !== 3
730
- )
731
-
732
- let pos: number[] = selectedNetworks?.reduce(networksPositions, [])
733
- let selectedAdapterPosition: number | null =
734
- adaptersWithPositions.value.adapters?.find(
735
- (adapter: UI_T_Adapters) => adapter.id === adapterId
736
- )?.adapterPosition || null
737
-
738
- selectedAdapterPosition !== null &&
739
- (selectedAdapterPosition += 7.5) &&
740
- pos?.push(selectedAdapterPosition)
741
-
742
- pos = pos?.sort((y1, y2) => y1 - y2)
743
-
744
- if (pos) {
745
- selectedSwitchLineY.value = {
746
- y1: pos[0],
747
- y2: pos[pos.length - 1],
748
- }
749
- }
750
-
751
- selectedAdapter.value = {
752
- adapterId,
753
- connectedPorts:
754
- selectedNetworks?.map((network: UI_I_Network) => ({
755
- networkId: network.id,
756
- ports: network.ports.map((port) => port.id),
757
- })) || [],
758
- }
759
- }
760
-
761
- const resetSelection = (): void => {
762
- selectedPort.value = useDeepCopy(selectedPortInitial)
763
- selectedSwitchLineY.value = useDeepCopy(selectedSwitchLineYInitial)
764
- selectedAdapter.value = useDeepCopy(selectedAdapterInitial)
765
- selectedNetwork.value = '-1'
766
- selectedMainLine.value = false
767
- }
768
-
769
- const emits = defineEmits<{
770
- (
771
- event: 'toggle-ports',
772
- payload: Omit<UI_I_ToggleDiagramPortsPayload, 'paths'>
773
- ): void
774
- (
775
- event: 'toggle-adapters',
776
- payload: Omit<UI_I_ToggleDiagramAdaptersPayload, 'paths'>
777
- ): void
778
- (event: 'get-existing-standard-switches'): void
779
- (
780
- event: 'send-add-networking-data',
781
- data: UI_T_EditData,
782
- type: string,
783
- hideModal: () => void
784
- ): void
785
- (
786
- event: 'add-networking-data-validate',
787
- data: UI_T_EditData,
788
- type: string,
789
- setValidation: (message: UI_I_ArbitraryObject<string>) => void
790
- ): void
791
- (
792
- event: 'check-network-label',
793
- label: string,
794
- sendMessage: (message: string) => void
795
- ): void
796
- (event: 'get-free-adapters', showModal: () => void): void
797
- (
798
- event: 'send-edit-data',
799
- type: string,
800
- initialData: UI_I_ModalsInitialData,
801
- hideModal: () => void,
802
- id?: string
803
- ): void
804
- (event: 'change-edit-fields-data', editFieldsData: UI_I_EditFieldsData): void
805
- (event: 'remove', id: string, type: string, hideModal: () => void): void
806
- (
807
- event: 'send-manage-physical-adapters-data',
808
- adapterStatus: UI_I_AdapterStatus,
809
- switchName: string,
810
- initialData: UI_I_ModalsInitialData,
811
- hideModal: () => void
812
- ): void
813
- (event: 'get-tcp-stacks'): void
814
- }>()
815
-
816
- const onTogglePorts = (
817
- id: string,
818
- isToggle: boolean,
819
- diagramId: string
820
- ): void => {
821
- emits('toggle-ports', {
822
- id,
823
- isToggle,
824
- diagramId,
825
- })
826
-
827
- isPortToggled.value = {
828
- value: true,
829
- id: id,
830
- }
831
- }
832
-
833
- const handlePortToggle = () => {
834
- cashedNetworkId.value = '-1'
835
-
836
- selectedPort.value.portId !== '-1' &&
837
- onSelectPort(selectedPort.value.networkId, selectedPort.value.portId)
838
- selectedAdapter.value.adapterId !== '-1' &&
839
- onSelectAdapter(selectedAdapter.value.adapterId)
840
- selectedNetwork.value !== '-1' && onSelectNetwork(selectedNetwork.value)
841
- hasPortAndNetwork(selectedPort.value, isPortToggled.value.id) &&
842
- resetSelection()
843
-
844
- isPortToggled.value = {
845
- value: false,
846
- id: '',
847
- }
848
- }
849
-
850
- const onToggleAdapters = (): void => {
851
- cashedNetworkId.value = '-1'
852
-
853
- const newState = !adaptersWithPositions.value.toggle
854
- const payload: Omit<UI_I_ToggleDiagramAdaptersPayload, 'paths'> = {
855
- isToggle: newState,
856
- diagramId: props.diagramData?.id || '',
857
- }
858
-
859
- emits('toggle-adapters', payload)
860
-
861
- selectedPort.value.portId !== '-1' &&
862
- onSelectPort(selectedPort.value.networkId, selectedPort.value.portId)
863
- selectedAdapter.value.adapterId !== '-1' && resetSelection()
864
- selectedNetwork.value !== '-1' && onSelectNetwork(selectedNetwork.value)
865
- }
866
-
867
- const onClickDiagram = (ev: MouseEvent): void => {
868
- const target = ev.target as HTMLElement
869
- const targetClassList = target.classList
870
-
871
- if (!targetClassList.contains('network-title')) {
872
- cashedNetworkId.value = '-1'
873
- }
874
-
875
- if (targetClassList.contains('main-line__handler')) {
876
- resetSelection()
877
- selectedMainLine.value = true
878
- } else {
879
- !(
880
- target.closest('.diagram-block__toggle') ||
881
- target.closest('.diagram-actions') ||
882
- target.closest('.dropdown-actions-container')
883
- ) && resetSelection()
884
- }
885
- }
886
- </script>
887
-
888
- <style scoped lang="scss">
889
- .diagram {
890
- &-min-width {
891
- //min-width: 745px;
892
- //min-width: 764px;
893
- &:not(:first-of-type) {
894
- margin-top: 16px;
895
- }
896
- }
897
- &-main-container {
898
- padding-top: 5px;
899
- }
900
- }
901
-
902
- .diagram-main-container.is-new-view {
903
- //display: flex;
904
- //justify-content: center;
905
- //margin: 16px 16px 30px;
906
-
907
- padding: 16px;
908
- border-radius: 8px;
909
- background: var(--diagram-container-bg);
910
- box-shadow: 0 1px 4px 0 #00000014;
911
- }
912
- </style>
913
- <style lang="scss">
914
- .diagram-main-actions__popup.navbar-dropdown-menu {
915
- .btn {
916
- border-radius: 3px;
917
- border-bottom: none;
918
- &:hover {
919
- border-bottom: none;
920
- }
921
- span {
922
- font-size: 14px;
923
- }
924
- &:active {
925
- box-shadow: none;
926
- }
927
- }
928
- }
929
- </style>
1
+ <template>
2
+ <div
3
+ v-if="props.diagramData"
4
+ :class="{ 'diagram-min-width': !props.inPortlet }"
5
+ >
6
+ <div
7
+ :class="[
8
+ 'diagram-main-container',
9
+ {
10
+ 'is-new-view': isNewView,
11
+ },
12
+ ]"
13
+ >
14
+ <common-diagram-main-diagram
15
+ :project="props.project"
16
+ :diagram-data="props.diagramData"
17
+ :is-show-diagram="isShowDiagram"
18
+ :in-portlet="props.inPortlet"
19
+ :networks-with-positions="networksWithPositions"
20
+ :main-rect-height="mainRectHeight"
21
+ :main-switch-line="mainSwitchLine"
22
+ :selected-main-line="selectedMainLine"
23
+ :adapters-with-positions="adaptersWithPositions"
24
+ :selected-port="selectedPort"
25
+ :selected-adapter="selectedAdapter"
26
+ :selected-network="selectedNetwork"
27
+ :selected-switch-line-y="selectedSwitchLineY"
28
+ :is-dark-mode="props.isDarkMode"
29
+ :networks-count="networksCount"
30
+ @toggle-diagram="onToggleDiagram"
31
+ @click-diagram="onClickDiagram"
32
+ @toggle-adapters="onToggleAdapters"
33
+ @select-adapter="onSelectAdapter"
34
+ @toggle-ports="onTogglePorts"
35
+ @select-port="onSelectPort"
36
+ @select-network="onSelectNetwork"
37
+ @show-modal="onShowModal"
38
+ />
39
+ </div>
40
+ <common-diagram-main-modals
41
+ :is-show-port-view-settings-modal="isShowPortViewSettingsModal"
42
+ :is-show-network-view-settings-modal="isShowNetworkViewSettingsModal"
43
+ :is-show-adapter-view-settings-modal="isShowAdapterViewSettingsModal"
44
+ :is-show-vcenter-view-settings-modal="isShowVCenterViewSettingsModal"
45
+ :is-show-network-remove-modal="isShowNetworkRemoveModal"
46
+ :is-show-switch-remove-modal="isShowSwitchRemoveModal"
47
+ :is-show-port-remove-modal="isShowPortRemoveModal"
48
+ :is-show-network-edit-settings-modal="isShowNetworkEditSettingsModal"
49
+ :is-show-port-edit-settings-modal="isShowPortEditSettingsModal"
50
+ :is-show-switch-edit-settings-modal="isShowSwitchEditSettingsModal"
51
+ :is-show-switch-view-settings-modal="isShowSwitchViewSettingsModal"
52
+ :is-show-switch-manage-physical-adapters-modal="
53
+ isShowSwitchManagePhysicalAdaptersModal
54
+ "
55
+ :is-show-add-networking-modal="isShowAddNetworkingModal"
56
+ :is-show-migrate-vmkernel-adapter-modal="
57
+ isShowMigrateVmkernelAdapterModal
58
+ "
59
+ :initial-data="initialData"
60
+ :host-name="props.hostName"
61
+ :is-remove-modal-loading="props.isRemoveModalLoading"
62
+ :diagram-data="props.diagramData"
63
+ :adapters="props.adapters"
64
+ :is-dark-mode="props.isDarkMode"
65
+ :is-edit-modal-loading="props.isEditModalLoading"
66
+ :free-adapters="props.freeAdapters"
67
+ :manage-physical-adapter-status="managePhysicalAdapterStatus"
68
+ :initial-manage-physical-adapter-status="
69
+ initialManagePhysicalAdapterStatus
70
+ "
71
+ :is-manage-adapters-modal-loading="props.isManageAdaptersModalLoading"
72
+ :standard-switches-initial="props.standardSwitchesInitial"
73
+ :selected-standard-switch-id="selectedStandardSwitchId"
74
+ :selected-switch-id="selectedSwitchId"
75
+ :tcp-stacks="props.tcpStacks"
76
+ :is-networking-loading="props.isNetworkingLoading"
77
+ :is-get-existing-switches-loading="props.isGetExistingSwitchesLoading"
78
+ :is-get-tcp-stack-loading="props.isGetTcpStackLoading"
79
+ :networks-list="props.networksList"
80
+ :is-migrate-adapter-loading="props.isMigrateAdapterLoading"
81
+ :diagrams-data="props.diagramsData"
82
+ :project="props.project"
83
+ @hide-port-view-settings-modal="onHidePortViewSettingsModal"
84
+ @hide-network-view-settings-modal="onHideNetworkViewSettingsModal"
85
+ @hide-adapter-view-settings-modal="onHideAdapterViewSettingsModal"
86
+ @hide-vcenter-view-settings-modal="onHideVCenterViewSettingsModal"
87
+ @hide-switch-view-settings-modal="onHideSwitchViewSettingsModal"
88
+ @hide-network-remove-modal="onHideNetworkRemoveModal"
89
+ @hide-switch-remove-modal="onHideSwitchRemoveModal"
90
+ @hide-port-remove-modal="onHidePortRemoveModal"
91
+ @hide-network-edit-settings-modal="onHideNetworkEditSettingsModal"
92
+ @hide-port-edit-settings-modal="onHidePortEditSettingsModal"
93
+ @hide-switch-edit-settings-modal="onHideSwitchEditSettingsModal"
94
+ @hide-switch-manage-physical-adapters-modal="
95
+ onHideSwitchManagePhysicalAdaptersModal
96
+ "
97
+ @hide-add-networking-modal="onHideAddNetworkingModal"
98
+ @hide-migrate-vmkernel-adapter-modal="onHideMigrateVmkernelAdapterModal"
99
+ @remove="onRemove"
100
+ @send-edit-data="onSendEditData"
101
+ @change-edit-fields-data="onChangeEditFieldsData"
102
+ @check-network-label="onCheckNetworkLabel"
103
+ @send-manage-physical-adapters-data="onSendManagePhysicalAdaptersData"
104
+ @change-adapter-status="onChangeManagePhysicalAdapterStatus"
105
+ @get-free-adapters="onGetFreeAdapters"
106
+ @get-existing-standard-switches="onGetExistingStandardSwitches"
107
+ @get-tcp-stacks="onGetTcpStacks"
108
+ @send-add-networking-data="onSendNetworkData"
109
+ @add-networking-data-validate="onValidateBeforeSending"
110
+ />
111
+ </div>
112
+ </template>
113
+
114
+ <script setup lang="ts">
115
+ import type {
116
+ UI_I_Adapter,
117
+ UI_I_AdapterStatus,
118
+ UI_I_AdaptersWithPositions,
119
+ UI_I_MainRectHeights,
120
+ UI_I_ModalsInitialData,
121
+ UI_I_Network,
122
+ UI_I_EditFieldsData,
123
+ UI_I_NetworksWithPositions,
124
+ UI_I_SelectedAdapter,
125
+ UI_I_SelectedPort,
126
+ UI_I_SwitchLine,
127
+ UI_I_ToggleDiagramAdaptersPayload,
128
+ UI_I_ToggleDiagramPortsPayload,
129
+ UI_I_PortToggleFlag,
130
+ UI_I_DiagramData,
131
+ UI_I_SwitchAdapterItem,
132
+ } from '~/components/common/diagramMain/lib/models/interfaces'
133
+ import type {
134
+ UI_I_ArbitraryObject,
135
+ UI_I_ItemsWithTotalCounts,
136
+ } from '~/lib/models/interfaces'
137
+ import type {
138
+ UI_I_Switch,
139
+ UI_I_TCPStack,
140
+ } from '~/components/common/wizards/network/add/lib/models/interfaces'
141
+ import type { UI_T_EditData } from '~/components/common/wizards/network/add/lib/models/types'
142
+ import type { UI_T_Adapters } from '~/components/common/diagramMain/lib/models/types'
143
+ import type { UI_T_Project } from '~/lib/models/types'
144
+ import { UI_E_NetworkType, UI_E_PositionsY } from './lib/models/enums'
145
+ import {
146
+ managePhysicalAdapterStatusInitial,
147
+ mainRectHeightsInitial,
148
+ switchLineInitial,
149
+ selectedPortInitial,
150
+ selectedSwitchLineYInitial,
151
+ selectedAdapterInitial,
152
+ } from '~/components/common/diagramMain/lib/config'
153
+ import {
154
+ hasPortAndNetwork,
155
+ networksPositions,
156
+ getSelectNetworkDataFunc,
157
+ getSelectPortDataFunc,
158
+ countAdaptersHeight,
159
+ getAdaptersPositions,
160
+ } from '~/components/common/diagramMain/lib/utils/utils'
161
+
162
+ const props = withDefaults(
163
+ defineProps<{
164
+ diagramData: UI_I_DiagramData
165
+ project?: UI_T_Project
166
+ inPortlet?: boolean
167
+ standardSwitchesInitial?: UI_I_Switch[]
168
+ hostName?: string
169
+ adapters?: UI_I_ItemsWithTotalCounts<UI_I_SwitchAdapterItem>
170
+ freeAdapters?: UI_I_Adapter[]
171
+ networksList?: UI_I_Network[]
172
+ isDarkMode: boolean
173
+ tcpStacks?: UI_I_TCPStack[]
174
+ diagramsData?: UI_I_DiagramData[]
175
+ isManageAdaptersModalLoading?: boolean
176
+ isNetworkingLoading?: boolean
177
+ isGetExistingSwitchesLoading?: boolean
178
+ isGetTcpStackLoading?: boolean
179
+ isRemoveModalLoading?: boolean
180
+ isEditModalLoading?: boolean
181
+ isMigrateAdapterLoading?: boolean
182
+ }>(),
183
+ {
184
+ project: 'procurator',
185
+ diagramData: null,
186
+ inPortlet: false,
187
+ standardSwitchesInitial: () => [],
188
+ hostName: '',
189
+ adapters: () => ({
190
+ total_items: 0,
191
+ total_pages: 0,
192
+ items: [],
193
+ }),
194
+ freeAdapters: () => [],
195
+ networksList: () => [],
196
+ tcpStacks: () => [],
197
+ diagramsData: [],
198
+ isManageAdaptersModalLoading: false,
199
+ isNetworkingLoading: false,
200
+ isGetExistingSwitchesLoading: false,
201
+ isGetTcpStackLoading: false,
202
+ isRemoveModalLoading: false,
203
+ isEditModalLoading: false,
204
+ isMigrateAdapterLoading: false,
205
+ }
206
+ )
207
+
208
+ const { $store }: any = useNuxtApp()
209
+
210
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
211
+
212
+ const initialData = ref<UI_I_ModalsInitialData>({})
213
+ const switchInitialData = ref<UI_I_ModalsInitialData>({})
214
+
215
+ watch(
216
+ () => props.diagramData?.networking,
217
+ (initial: UI_I_ModalsInitialData | undefined) => {
218
+ if (initial) {
219
+ initialData.value = initial
220
+ switchInitialData.value = initial
221
+ }
222
+ },
223
+ { deep: true, immediate: true }
224
+ )
225
+
226
+ const onValidateBeforeSending = (
227
+ data: UI_T_EditData,
228
+ type: string,
229
+ setValidation: (messages: UI_I_ArbitraryObject<string>) => void
230
+ ) => {
231
+ emits('add-networking-data-validate', data, type, setValidation)
232
+ }
233
+
234
+ let initialManagePhysicalAdapterStatus = ref<UI_I_AdapterStatus>(
235
+ managePhysicalAdapterStatusInitial
236
+ )
237
+
238
+ const managePhysicalAdapterStatus = ref<UI_I_AdapterStatus>(
239
+ useDeepCopy(initialManagePhysicalAdapterStatus.value)
240
+ )
241
+
242
+ watch(
243
+ () => props.diagramData,
244
+ (newValue: UI_I_DiagramData) => {
245
+ if (newValue?.networking) {
246
+ initialManagePhysicalAdapterStatus.value = {
247
+ active: useDeepCopy(props.diagramData?.networking?.activeAdapters),
248
+ standby: useDeepCopy(props.diagramData?.networking?.standbyAdapters),
249
+ unused: useDeepCopy(props.diagramData?.networking?.unusedAdapters),
250
+ }
251
+
252
+ managePhysicalAdapterStatus.value = useDeepCopy(
253
+ initialManagePhysicalAdapterStatus.value
254
+ )
255
+ }
256
+ },
257
+ { deep: true, immediate: true }
258
+ )
259
+
260
+ const onChangeManagePhysicalAdapterStatus = (
261
+ adapterStatusNew: UI_I_AdapterStatus
262
+ ) => {
263
+ managePhysicalAdapterStatus.value = adapterStatusNew
264
+ }
265
+
266
+ const isShowSwitchManagePhysicalAdaptersModal = ref<boolean>(false)
267
+ const onHideSwitchManagePhysicalAdaptersModal = (): void => {
268
+ isShowSwitchManagePhysicalAdaptersModal.value = false
269
+ }
270
+
271
+ const onSendManagePhysicalAdaptersData = (
272
+ adapterStatus: UI_I_AdapterStatus,
273
+ switchName: string,
274
+ hideModal: () => void
275
+ ) => {
276
+ emits(
277
+ 'send-manage-physical-adapters-data',
278
+ adapterStatus,
279
+ switchName,
280
+ initialData.value,
281
+ hideModal
282
+ )
283
+ }
284
+
285
+ const isShowSwitchViewSettingsModal = ref<boolean>(false)
286
+ const isShowSwitchEditSettingsModal = ref<boolean>(false)
287
+ const isShowSwitchRemoveModal = ref<boolean>(false)
288
+ const onHideSwitchViewSettingsModal = (): void => {
289
+ isShowSwitchViewSettingsModal.value = false
290
+ }
291
+ const onHideSwitchEditSettingsModal = (): void => {
292
+ isShowSwitchEditSettingsModal.value = false
293
+ }
294
+ const onHideSwitchRemoveModal = (): void => {
295
+ isShowSwitchRemoveModal.value = false
296
+ }
297
+
298
+ const isShowAdapterViewSettingsModal = ref<boolean>(false)
299
+ const onHideAdapterViewSettingsModal = (): void => {
300
+ isShowAdapterViewSettingsModal.value = false
301
+ }
302
+
303
+ const isShowNetworkViewSettingsModal = ref<boolean>(false)
304
+ const isShowNetworkEditSettingsModal = ref<boolean>(false)
305
+ const isShowNetworkRemoveModal = ref<boolean>(false)
306
+ const onHideNetworkViewSettingsModal = (): void => {
307
+ isShowNetworkViewSettingsModal.value = false
308
+ }
309
+ const onHideNetworkEditSettingsModal = (): void => {
310
+ isShowNetworkEditSettingsModal.value = false
311
+ }
312
+ const onHideNetworkRemoveModal = (): void => {
313
+ isShowNetworkRemoveModal.value = false
314
+ }
315
+
316
+ const isShowPortViewSettingsModal = ref<boolean>(false)
317
+ const isShowPortEditSettingsModal = ref<boolean>(false)
318
+ const isShowPortRemoveModal = ref<boolean>(false)
319
+ const onHidePortViewSettingsModal = (): void => {
320
+ isShowPortViewSettingsModal.value = false
321
+ }
322
+ const onHidePortEditSettingsModal = (): void => {
323
+ isShowPortEditSettingsModal.value = false
324
+ }
325
+ const onHidePortRemoveModal = (): void => {
326
+ isShowPortRemoveModal.value = false
327
+ }
328
+
329
+ const isShowVCenterViewSettingsModal = ref<boolean>(false)
330
+ const onHideVCenterViewSettingsModal = (): void => {
331
+ isShowVCenterViewSettingsModal.value = false
332
+ }
333
+ const isShowAddNetworkingModal = ref<boolean>(false)
334
+ const onHideAddNetworkingModal = (): void => {
335
+ isShowAddNetworkingModal.value = false
336
+ }
337
+ const isShowMigrateVmkernelAdapterModal = ref<boolean>(false)
338
+ const onHideMigrateVmkernelAdapterModal = (): void => {
339
+ isShowMigrateVmkernelAdapterModal.value = false
340
+ }
341
+
342
+ const selectedStandardSwitchId = ref<string>('')
343
+ const selectedSwitchId = ref<string>('')
344
+
345
+ const onShowModal = (
346
+ value: string,
347
+ properties: UI_I_ModalsInitialData
348
+ ): void => {
349
+ switch (value) {
350
+ case 'port-view-settings':
351
+ initialData.value = properties
352
+ isShowPortViewSettingsModal.value = true
353
+ break
354
+ case 'network-view-settings':
355
+ isShowNetworkViewSettingsModal.value = true
356
+ initialData.value = properties
357
+ break
358
+ case 'adapter-view-settings':
359
+ isShowAdapterViewSettingsModal.value = true
360
+ initialData.value = properties
361
+ break
362
+ case 'v-center-view-settings':
363
+ isShowVCenterViewSettingsModal.value = true
364
+ initialData.value = properties
365
+ break
366
+ case 'network-edit-settings':
367
+ isShowNetworkEditSettingsModal.value = true
368
+ initialData.value = properties
369
+ break
370
+ case 'port-edit-settings':
371
+ initialData.value = properties
372
+ isShowPortEditSettingsModal.value = true
373
+ break
374
+ case 'network-port-remove':
375
+ initialData.value = properties
376
+ isShowNetworkRemoveModal.value = true
377
+ break
378
+ case 'port-remove':
379
+ initialData.value = properties
380
+ isShowPortRemoveModal.value = true
381
+ break
382
+ case 'switch-edit':
383
+ isShowSwitchEditSettingsModal.value = true
384
+ initialData.value = useDeepCopy(switchInitialData.value)
385
+ break
386
+ case 'switch-manage-physical-adapters':
387
+ isShowSwitchManagePhysicalAdaptersModal.value = true
388
+ initialData.value = useDeepCopy(switchInitialData.value)
389
+ break
390
+ case 'add-networking':
391
+ isShowAddNetworkingModal.value = true
392
+ selectedStandardSwitchId.value = properties.switch_name
393
+ selectedSwitchId.value = properties.switch_name
394
+ break
395
+ case 'switch-view-settings':
396
+ isShowSwitchViewSettingsModal.value = true
397
+ initialData.value = useDeepCopy(switchInitialData.value)
398
+ break
399
+ case 'migrate-vmkernel-adapter':
400
+ isShowMigrateVmkernelAdapterModal.value = true
401
+ break
402
+ case 'switch-remove':
403
+ isShowSwitchRemoveModal.value = true
404
+ break
405
+ }
406
+ }
407
+
408
+ const onRemove = (id: string, type: string) => {
409
+ if (
410
+ (type === 'network' || type === 'network1' || type === 'network2') &&
411
+ selectedNetwork.value === id
412
+ ) {
413
+ selectedNetwork.value = '-1'
414
+ resetSelection()
415
+ } else if (type === 'port' && selectedPort.value.portId === id) {
416
+ selectedPort.value.networkId = '-1'
417
+ selectedPort.value.portId = '-1'
418
+ resetSelection()
419
+ }
420
+
421
+ const hideModal =
422
+ type === 'network' || type === 'network1' || type === 'network2'
423
+ ? onHideNetworkRemoveModal
424
+ : type === 'switch'
425
+ ? onHideSwitchRemoveModal
426
+ : onHidePortRemoveModal
427
+
428
+ emits('remove', id, type, hideModal)
429
+ }
430
+ const onChangeEditFieldsData = (newEditFieldsData: UI_I_EditFieldsData) => {
431
+ emits('change-edit-fields-data', newEditFieldsData)
432
+ }
433
+ const onCheckNetworkLabel = (
434
+ label: string,
435
+ sendMessage: (message: string) => void
436
+ ) => {
437
+ emits('check-network-label', label, sendMessage)
438
+ }
439
+ const onGetExistingStandardSwitches = () => {
440
+ emits('get-existing-standard-switches')
441
+ }
442
+ const onGetTcpStacks = () => {
443
+ emits('get-tcp-stacks')
444
+ }
445
+ const onGetFreeAdapters = (showModal: () => void) => {
446
+ emits('get-free-adapters', showModal)
447
+ }
448
+ const onSendNetworkData = (
449
+ data: UI_T_EditData,
450
+ type: string,
451
+ hideModal: () => void
452
+ ) => {
453
+ emits('send-add-networking-data', data, type, hideModal)
454
+ }
455
+ const onSendEditData = (type: string, hideModal: () => void, id?: string) => {
456
+ emits('send-edit-data', type, initialData.value, hideModal, id)
457
+ }
458
+ const isShowDiagram = ref<boolean>(true)
459
+ const onToggleDiagram = () => {
460
+ isShowDiagram.value = !isShowDiagram.value
461
+ }
462
+ const mainRectHeights = ref<UI_I_MainRectHeights>(
463
+ useDeepCopy(mainRectHeightsInitial)
464
+ )
465
+
466
+ const switchLine = ref<UI_I_SwitchLine>(useDeepCopy(switchLineInitial))
467
+ const mainSwitchLine = computed<UI_I_SwitchLine>(
468
+ () =>
469
+ (switchLine.value.ay && {
470
+ y1: Math.min(switchLine.value.y1, switchLine.value.ay),
471
+ y2: Math.max(switchLine.value.y2, switchLine.value.ay),
472
+ }) || { y1: 0, y2: 0 }
473
+ )
474
+
475
+ const selectedMainLine = ref(false)
476
+ const selectedPort = ref<UI_I_SelectedPort>(useDeepCopy(selectedPortInitial))
477
+ const selectedAdapter = ref<UI_I_SelectedAdapter>(
478
+ useDeepCopy(selectedAdapterInitial)
479
+ )
480
+ const selectedNetwork = ref<string>('-1')
481
+
482
+ const selectedSwitchLineY = ref<UI_I_SwitchLine>(
483
+ useDeepCopy(selectedSwitchLineYInitial)
484
+ )
485
+ const mainRectHeight = computed<number>(() =>
486
+ Math.max(
487
+ mainRectHeights.value.networksHeight,
488
+ mainRectHeights.value.adaptersHeight
489
+ )
490
+ )
491
+
492
+ const countNetworksPositions = (
493
+ newNetworks?: UI_I_Network[] | null
494
+ ): UI_I_NetworksWithPositions[] => {
495
+ let lastNetworkHeight = 0
496
+ let lastPosition = UI_E_PositionsY.DIAGRAM_TOP + UI_E_PositionsY.BETWEEN_RECTS
497
+ mainRectHeights.value.networksHeight =
498
+ UI_E_PositionsY.DIAGRAM_TOP + UI_E_PositionsY.BETWEEN_RECTS
499
+
500
+ const lastIndex = props.diagramData?.networks.findLastIndex(
501
+ (network: UI_I_Network) =>
502
+ network.activeAdapters.length > 0 && network.state.state !== 3
503
+ )
504
+
505
+ return (
506
+ (newNetworks ? newNetworks : props.diagramData?.networks)?.map(
507
+ (network: UI_I_Network, index: number) => {
508
+ let portsCount = 0
509
+ if (
510
+ network.networkType ===
511
+ (UI_E_NetworkType.VMPortsGroup || UI_E_NetworkType.VCenter)
512
+ ) {
513
+ portsCount = network.ports.length
514
+ } else {
515
+ portsCount = network.sysx ? 1 : 0
516
+ }
517
+ const portsHeight = network.toggle
518
+ ? network.networkType === UI_E_NetworkType.VCenter
519
+ ? portsCount * UI_E_PositionsY.SINGLE_V_CENTER_HEIGHT
520
+ : portsCount * UI_E_PositionsY.SINGLE_PORT_HEIGHT
521
+ : 0
522
+ const networkHeight =
523
+ UI_E_PositionsY.PORTS_FROM_RECT_TOP +
524
+ portsHeight +
525
+ (network.networkType === UI_E_NetworkType.VCenter
526
+ ? UI_E_PositionsY.SINGLE_V_CENTER_HEIGHT - 10
527
+ : UI_E_PositionsY.SINGLE_PORT_HEIGHT) +
528
+ UI_E_PositionsY.SPACE_FROM_RECT_BOTTOM
529
+
530
+ lastPosition +=
531
+ lastNetworkHeight + (index && UI_E_PositionsY.BETWEEN_RECTS)
532
+ lastNetworkHeight = networkHeight
533
+
534
+ const connectLineY = lastPosition + networkHeight / 2
535
+ const titlePosition = lastPosition + UI_E_PositionsY.TITLE_FROM_RECT_TOP
536
+ const vlanPosition = lastPosition + UI_E_PositionsY.VLAN_FROM_RECT_TOP
537
+ const portsPosition = lastPosition + UI_E_PositionsY.PORTS_FROM_RECT_TOP
538
+
539
+ const networkPortsName =
540
+ (network.networkType === UI_E_NetworkType.VMkernel &&
541
+ 'VMkernel Ports') ||
542
+ (network.networkType === UI_E_NetworkType.VMPortsGroup &&
543
+ 'Virtual Machines') ||
544
+ (network.networkType === UI_E_NetworkType.VCenter &&
545
+ 'Virtual Machines') ||
546
+ ''
547
+
548
+ lastIndex !== -1 && index === 0 && (switchLine.value.y1 = connectLineY)
549
+ lastIndex !== -1 &&
550
+ index === lastIndex &&
551
+ (switchLine.value.y2 = connectLineY)
552
+
553
+ mainRectHeights.value.networksHeight +=
554
+ networkHeight + UI_E_PositionsY.BETWEEN_RECTS
555
+
556
+ const networkWithPortsPositions =
557
+ network.networkType ===
558
+ (UI_E_NetworkType.VMPortsGroup || UI_E_NetworkType.VCenter)
559
+ ? network.ports.map((port, index) => {
560
+ const portPosition =
561
+ portsPosition +
562
+ (network.networkType === UI_E_NetworkType.VCenter
563
+ ? (index + 1) * UI_E_PositionsY.SINGLE_V_CENTER_HEIGHT - 10
564
+ : (index + 1) * UI_E_PositionsY.SINGLE_PORT_HEIGHT)
565
+
566
+ return {
567
+ ...port,
568
+ portPosition,
569
+ }
570
+ })
571
+ : (network.sysx && [
572
+ {
573
+ id: network.sysx?.id,
574
+ name: `${network.sysx?.id} ${
575
+ network.sysx.ipv4_settings.ipv4
576
+ ? `: ${network.sysx.ipv4_settings.ipv4}`
577
+ : ''
578
+ }`,
579
+ state: network.sysx.state,
580
+ testId: `port-${network.sysx?.id}`,
581
+ portPosition:
582
+ portsPosition + UI_E_PositionsY.SINGLE_PORT_HEIGHT,
583
+ },
584
+ ]) ||
585
+ []
586
+
587
+ return {
588
+ ...network,
589
+ ports: networkWithPortsPositions,
590
+ portsCount,
591
+ portsHeight,
592
+ networkHeight,
593
+ rectPosition: lastPosition,
594
+ connectLineY,
595
+ titlePosition,
596
+ vlanPosition,
597
+ vlanId: network.vlanId || '--',
598
+ portsPosition,
599
+ networkPortsName,
600
+ }
601
+ }
602
+ ) || []
603
+ )
604
+ }
605
+ const networksWithPositions = ref<UI_I_NetworksWithPositions[]>(
606
+ countNetworksPositions()
607
+ )
608
+
609
+ const isPortToggled = ref<UI_I_PortToggleFlag>({
610
+ value: false,
611
+ id: '',
612
+ })
613
+
614
+ const countAdaptersPositions = (): UI_I_AdaptersWithPositions => {
615
+ const { height, toggle, adaptersCount } = countAdaptersHeight(
616
+ props.diagramData
617
+ )
618
+
619
+ mainRectHeights.value.adaptersHeight =
620
+ UI_E_PositionsY.DIAGRAM_TOP + UI_E_PositionsY.BETWEEN_RECTS * 2 + height
621
+
622
+ const { titlePosition, rectPosition, adaptersConnectLineY, adapters } =
623
+ getAdaptersPositions(props.diagramData, height)
624
+
625
+ switchLine.value.ay = adaptersConnectLineY
626
+
627
+ return {
628
+ toggle,
629
+ height,
630
+ adapters,
631
+ rectPosition,
632
+ adaptersConnectLineY,
633
+ titlePosition,
634
+ adaptersCount,
635
+ }
636
+ }
637
+
638
+ const adaptersWithPositions = computed<UI_I_AdaptersWithPositions>(() => {
639
+ return countAdaptersPositions()
640
+ })
641
+
642
+ const networksCount = computed<number>(
643
+ () =>
644
+ networksWithPositions.value.filter(
645
+ (networkWithPositions: UI_I_NetworksWithPositions) =>
646
+ networkWithPositions.activeAdapters.length > 0 &&
647
+ networkWithPositions.state.state !== 3
648
+ ).length
649
+ )
650
+
651
+ watch(
652
+ () => props.diagramData?.networks,
653
+ (newValue: UI_I_Network[] | null) => {
654
+ networksWithPositions.value = countNetworksPositions(newValue)
655
+
656
+ isPortToggled.value.value && handlePortToggle()
657
+
658
+ if (selectedAdapter.value.adapterId !== '-1') {
659
+ onSelectAdapter(selectedAdapter.value.adapterId)
660
+ return
661
+ }
662
+
663
+ if (selectedPort.value.portId !== '-1') {
664
+ onSelectPort(selectedPort.value.networkId, selectedPort.value.portId)
665
+ return
666
+ }
667
+
668
+ if (selectedNetwork.value !== '-1') {
669
+ cashedNetworkId.value = '-1'
670
+ onSelectNetwork(selectedNetwork.value)
671
+ return
672
+ }
673
+
674
+ if (selectedMainLine.value && networksCount.value === 0) {
675
+ selectedMainLine.value = false
676
+ return
677
+ }
678
+
679
+ if (selectedMainLine.value) return
680
+
681
+ resetSelection()
682
+ },
683
+ { deep: true }
684
+ )
685
+
686
+ const onSelectPort = (networkId: string, portId: string): void => {
687
+ const selectPortData = getSelectPortDataFunc(
688
+ networkId,
689
+ portId,
690
+ networksWithPositions.value,
691
+ adaptersWithPositions.value
692
+ )
693
+
694
+ if (!selectPortData) return
695
+
696
+ selectedSwitchLineY.value = selectPortData.selectedSwitchLineY
697
+ selectedPort.value = selectPortData.selectedPort
698
+ }
699
+
700
+ const cashedNetworkId = ref<string>('-1')
701
+
702
+ const onSelectNetwork = (networkId: string): void => {
703
+ if (cashedNetworkId.value === networkId) {
704
+ resetSelection()
705
+ cashedNetworkId.value = '-1'
706
+ return
707
+ }
708
+
709
+ selectedNetwork.value = networkId
710
+
711
+ const selectNetworkData = getSelectNetworkDataFunc(
712
+ networkId,
713
+ networksWithPositions.value,
714
+ adaptersWithPositions.value
715
+ )
716
+
717
+ cashedNetworkId.value = networkId
718
+
719
+ if (!selectNetworkData) return
720
+
721
+ selectedSwitchLineY.value = selectNetworkData.selectedSwitchLineY
722
+ selectedPort.value = selectNetworkData.selectedPort
723
+ }
724
+
725
+ const onSelectAdapter = (adapterId: string): void => {
726
+ const selectedNetworks: UI_I_NetworksWithPositions[] =
727
+ networksWithPositions.value?.filter(
728
+ (network: UI_I_NetworksWithPositions) =>
729
+ network.activeAdapters.includes(adapterId) && network.state.state !== 3
730
+ )
731
+
732
+ let pos: number[] = selectedNetworks?.reduce(networksPositions, [])
733
+ let selectedAdapterPosition: number | null =
734
+ adaptersWithPositions.value.adapters?.find(
735
+ (adapter: UI_T_Adapters) => adapter.id === adapterId
736
+ )?.adapterPosition || null
737
+
738
+ selectedAdapterPosition !== null &&
739
+ (selectedAdapterPosition += 7.5) &&
740
+ pos?.push(selectedAdapterPosition)
741
+
742
+ pos = pos?.sort((y1, y2) => y1 - y2)
743
+
744
+ if (pos) {
745
+ selectedSwitchLineY.value = {
746
+ y1: pos[0],
747
+ y2: pos[pos.length - 1],
748
+ }
749
+ }
750
+
751
+ selectedAdapter.value = {
752
+ adapterId,
753
+ connectedPorts:
754
+ selectedNetworks?.map((network: UI_I_Network) => ({
755
+ networkId: network.id,
756
+ ports: network.ports.map((port) => port.id),
757
+ })) || [],
758
+ }
759
+ }
760
+
761
+ const resetSelection = (): void => {
762
+ selectedPort.value = useDeepCopy(selectedPortInitial)
763
+ selectedSwitchLineY.value = useDeepCopy(selectedSwitchLineYInitial)
764
+ selectedAdapter.value = useDeepCopy(selectedAdapterInitial)
765
+ selectedNetwork.value = '-1'
766
+ selectedMainLine.value = false
767
+ }
768
+
769
+ const emits = defineEmits<{
770
+ (
771
+ event: 'toggle-ports',
772
+ payload: Omit<UI_I_ToggleDiagramPortsPayload, 'paths'>
773
+ ): void
774
+ (
775
+ event: 'toggle-adapters',
776
+ payload: Omit<UI_I_ToggleDiagramAdaptersPayload, 'paths'>
777
+ ): void
778
+ (event: 'get-existing-standard-switches'): void
779
+ (
780
+ event: 'send-add-networking-data',
781
+ data: UI_T_EditData,
782
+ type: string,
783
+ hideModal: () => void
784
+ ): void
785
+ (
786
+ event: 'add-networking-data-validate',
787
+ data: UI_T_EditData,
788
+ type: string,
789
+ setValidation: (message: UI_I_ArbitraryObject<string>) => void
790
+ ): void
791
+ (
792
+ event: 'check-network-label',
793
+ label: string,
794
+ sendMessage: (message: string) => void
795
+ ): void
796
+ (event: 'get-free-adapters', showModal: () => void): void
797
+ (
798
+ event: 'send-edit-data',
799
+ type: string,
800
+ initialData: UI_I_ModalsInitialData,
801
+ hideModal: () => void,
802
+ id?: string
803
+ ): void
804
+ (event: 'change-edit-fields-data', editFieldsData: UI_I_EditFieldsData): void
805
+ (event: 'remove', id: string, type: string, hideModal: () => void): void
806
+ (
807
+ event: 'send-manage-physical-adapters-data',
808
+ adapterStatus: UI_I_AdapterStatus,
809
+ switchName: string,
810
+ initialData: UI_I_ModalsInitialData,
811
+ hideModal: () => void
812
+ ): void
813
+ (event: 'get-tcp-stacks'): void
814
+ }>()
815
+
816
+ const onTogglePorts = (
817
+ id: string,
818
+ isToggle: boolean,
819
+ diagramId: string
820
+ ): void => {
821
+ emits('toggle-ports', {
822
+ id,
823
+ isToggle,
824
+ diagramId,
825
+ })
826
+
827
+ isPortToggled.value = {
828
+ value: true,
829
+ id: id,
830
+ }
831
+ }
832
+
833
+ const handlePortToggle = () => {
834
+ cashedNetworkId.value = '-1'
835
+
836
+ selectedPort.value.portId !== '-1' &&
837
+ onSelectPort(selectedPort.value.networkId, selectedPort.value.portId)
838
+ selectedAdapter.value.adapterId !== '-1' &&
839
+ onSelectAdapter(selectedAdapter.value.adapterId)
840
+ selectedNetwork.value !== '-1' && onSelectNetwork(selectedNetwork.value)
841
+ hasPortAndNetwork(selectedPort.value, isPortToggled.value.id) &&
842
+ resetSelection()
843
+
844
+ isPortToggled.value = {
845
+ value: false,
846
+ id: '',
847
+ }
848
+ }
849
+
850
+ const onToggleAdapters = (): void => {
851
+ cashedNetworkId.value = '-1'
852
+
853
+ const newState = !adaptersWithPositions.value.toggle
854
+ const payload: Omit<UI_I_ToggleDiagramAdaptersPayload, 'paths'> = {
855
+ isToggle: newState,
856
+ diagramId: props.diagramData?.id || '',
857
+ }
858
+
859
+ emits('toggle-adapters', payload)
860
+
861
+ selectedPort.value.portId !== '-1' &&
862
+ onSelectPort(selectedPort.value.networkId, selectedPort.value.portId)
863
+ selectedAdapter.value.adapterId !== '-1' && resetSelection()
864
+ selectedNetwork.value !== '-1' && onSelectNetwork(selectedNetwork.value)
865
+ }
866
+
867
+ const onClickDiagram = (ev: MouseEvent): void => {
868
+ const target = ev.target as HTMLElement
869
+ const targetClassList = target.classList
870
+
871
+ if (!targetClassList.contains('network-title')) {
872
+ cashedNetworkId.value = '-1'
873
+ }
874
+
875
+ if (targetClassList.contains('main-line__handler')) {
876
+ resetSelection()
877
+ selectedMainLine.value = true
878
+ } else {
879
+ !(
880
+ target.closest('.diagram-block__toggle') ||
881
+ target.closest('.diagram-actions') ||
882
+ target.closest('.dropdown-actions-container')
883
+ ) && resetSelection()
884
+ }
885
+ }
886
+ </script>
887
+
888
+ <style scoped lang="scss">
889
+ .diagram {
890
+ &-min-width {
891
+ //min-width: 745px;
892
+ //min-width: 764px;
893
+ &:not(:first-of-type) {
894
+ margin-top: 16px;
895
+ }
896
+ }
897
+ &-main-container {
898
+ padding-top: 5px;
899
+ }
900
+ }
901
+
902
+ .diagram-main-container.is-new-view {
903
+ //display: flex;
904
+ //justify-content: center;
905
+ //margin: 16px 16px 30px;
906
+
907
+ padding: 16px;
908
+ border-radius: 8px;
909
+ background: var(--diagram-container-bg);
910
+ box-shadow: 0 1px 4px 0 #00000014;
911
+ }
912
+ </style>
913
+ <style lang="scss">
914
+ .diagram-main-actions__popup.navbar-dropdown-menu {
915
+ .btn {
916
+ border-radius: 3px;
917
+ border-bottom: none;
918
+ &:hover {
919
+ border-bottom: none;
920
+ }
921
+ span {
922
+ font-size: 14px;
923
+ }
924
+ &:active {
925
+ box-shadow: none;
926
+ }
927
+ }
928
+ }
929
+ </style>