bfg-common 1.4.878 → 1.4.880

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 (187) hide show
  1. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  2. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  3. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  4. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  5. package/assets/scss/common/normalize.scss +361 -361
  6. package/components/atoms/TheIcon3.vue +50 -50
  7. package/components/atoms/autocomplete/Autocomplete.vue +301 -301
  8. package/components/atoms/collapse/CollapseNav.vue +164 -164
  9. package/components/atoms/dropdown/dropdown/Dropdown.vue +168 -168
  10. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  11. package/components/atoms/stack/StackBlock.vue +185 -185
  12. package/components/atoms/table/dataGrid/DataGrid.vue +1704 -1704
  13. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  14. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  15. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  16. package/components/common/browse/BrowseNew.vue +237 -237
  17. package/components/common/browse/BrowseOld.vue +217 -217
  18. package/components/common/browse/blocks/contents/Files.vue +37 -37
  19. package/components/common/browse/blocks/contents/FilesOld.vue +72 -72
  20. package/components/common/browse/blocks/contents/filesNew/FilesNew.vue +96 -96
  21. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  22. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  23. package/components/common/browse/lib/models/interfaces.ts +5 -5
  24. package/components/common/context/Context.vue +111 -111
  25. package/components/common/context/lib/models/interfaces.ts +30 -30
  26. package/components/common/context/recursion/Recursion.vue +87 -87
  27. package/components/common/context/recursion/RecursionOld.vue +227 -227
  28. package/components/common/details/DetailsItem.vue +109 -109
  29. package/components/common/diagramMain/Header.vue +211 -211
  30. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  31. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  32. package/components/common/diagramMain/lib/models/types.ts +21 -21
  33. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  34. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +330 -330
  35. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  36. package/components/common/diagramMain/modals/editSettings/EditSettings.vue +497 -497
  37. package/components/common/diagramMain/modals/editSettings/EditSettingsModal.vue +812 -812
  38. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  39. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  40. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  41. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  42. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  43. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +205 -205
  44. package/components/common/diagramMain/modals/lib/config/diagramConfig.ts +23 -23
  45. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  46. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  47. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  48. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  49. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  50. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  51. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  52. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  53. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  54. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  55. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  56. package/components/common/diagramMain/port/Ports.vue +47 -47
  57. package/components/common/graph/Graph.vue +104 -104
  58. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  59. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +103 -103
  60. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  61. package/components/common/mainNavigationPanel/MainNavigationPanelNew.vue +335 -335
  62. package/components/common/mainNavigationPanel/MainNavigationPanelOld.vue +312 -312
  63. package/components/common/modals/unsavedChanges/UnsavedChanges.vue +56 -56
  64. package/components/common/monitor/overview/OverviewNew.vue +142 -142
  65. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  66. package/components/common/monitor/overview/filters/Filters.vue +166 -166
  67. package/components/common/monitor/overview/filters/FiltersNew.vue +172 -172
  68. package/components/common/monitor/overview/filters/FiltersOld.vue +151 -151
  69. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModal.vue +175 -175
  70. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModalOld.vue +161 -161
  71. package/components/common/pages/home/StatusContent.vue +49 -49
  72. package/components/common/pages/home/headline/Headline.vue +45 -45
  73. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  74. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  75. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  76. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  77. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  78. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  79. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  80. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  81. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  82. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  83. package/components/common/pages/packages/Packages.vue +208 -208
  84. package/components/common/pages/shortcuts/block/BlockNew.vue +96 -96
  85. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  86. package/components/common/recursionTree/RecursionTree.vue +223 -223
  87. package/components/common/select/button/ButtonDropdown.vue +108 -108
  88. package/components/common/spiceConsole/Drawer.vue +370 -370
  89. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  90. package/components/common/split/horizontal/HorizontalNew.vue +376 -376
  91. package/components/common/split/horizontal/HorizontalOld.vue +337 -337
  92. package/components/common/split/vertical/Vertical.vue +160 -160
  93. package/components/common/vm/actions/add/Add.vue +622 -622
  94. package/components/common/vm/actions/clone/Clone.vue +639 -639
  95. package/components/common/vm/actions/clone/lib/config/steps.ts +129 -129
  96. package/components/common/vm/actions/clone/toTemplate/ToTemplate.vue +634 -634
  97. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  98. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +275 -275
  99. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +274 -274
  100. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +177 -177
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +698 -698
  102. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +410 -410
  103. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  104. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  105. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +99 -99
  106. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +117 -117
  107. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  108. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +164 -164
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +70 -70
  112. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  113. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  114. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  115. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +368 -368
  116. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +232 -232
  117. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskOld.vue +250 -250
  118. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +56 -56
  119. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  120. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +286 -282
  121. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  122. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  123. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  124. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  125. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  126. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  127. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  128. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  129. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  130. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  131. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  132. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +84 -84
  133. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  134. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  135. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  136. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  137. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +41 -41
  138. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +81 -81
  139. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  140. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -56
  141. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  142. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  143. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +104 -104
  144. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +112 -112
  145. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  146. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  147. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  148. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  149. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  150. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  151. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  152. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  153. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  154. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  155. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  156. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  157. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  158. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  159. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  160. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  161. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  162. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  163. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +102 -102
  164. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordOld.vue +94 -94
  165. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  166. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +38 -38
  167. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  168. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  169. package/components/common/vm/actions/common/select/storage/StorageOld.vue +129 -129
  170. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  171. package/components/common/wizards/datastore/add/lib/config/steps.ts +138 -138
  172. package/components/common/wizards/vm/migrate/Migrate.vue +302 -302
  173. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  174. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  175. package/components/common/wizards/vm/migrate/select/network/table/network/Network.vue +150 -150
  176. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  177. package/components/common/wizards/vm/migrate/select/priority/Priority.vue +43 -43
  178. package/composables/productNameLocal.ts +30 -30
  179. package/composables/useAppVersion.ts +21 -21
  180. package/package.json +2 -2
  181. package/plugins/date.ts +233 -233
  182. package/plugins/recursion.ts +311 -311
  183. package/public/spice-console/lib/images/bitmap.js +203 -203
  184. package/public/spice-console/network/spicechannel.js +383 -383
  185. package/store/main/mutations.ts +7 -7
  186. package/store/main/state.ts +7 -7
  187. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,497 +1,497 @@
1
- <template>
2
- <div class="wizard-tab__container">
3
- <div class="vertical-tabs__fixed-position">
4
- <atoms-tabs-vertical-tabs
5
- v-model="selectedTab"
6
- :items="props.items"
7
- :has-error-messages="hasErrorMessages"
8
- @set-alert="onShowErrorMessageAlert"
9
- />
10
- </div>
11
- <template v-if="isNetwork || isSwitch">
12
- <common-diagram-main-modals-edit-settings-tabs-network-properties
13
- v-if="isNetwork"
14
- v-show="selectedTab === '1'"
15
- :is-show-error-message-alert="isShowErrorMessageAlert"
16
- :error-messages="errorMessages"
17
- :initial-data="props.initialData"
18
- :has-error-messages="hasErrorMessages"
19
- :network-already-exists="networkAlreadyExists"
20
- @change-edit-properties-data="onChangeNetworkEditPropertiesData"
21
- @change-error-messages="onChangeErrorMessages"
22
- @hide-error-message-alert="onHideErrorMessageAlert"
23
- />
24
- <common-diagram-main-modals-edit-settings-tabs-switch-properties
25
- v-if="isSwitch"
26
- v-show="selectedTab === '1'"
27
- :is-show-error-message-alert="isShowErrorMessageAlert"
28
- :error-messages="errorMessages"
29
- :initial-data="props.initialData"
30
- :has-error-messages="hasErrorMessages"
31
- @change-edit-properties-data="onChangeSwitchEditPropertiesData"
32
- @change-error-messages="onChangeErrorMessages"
33
- @hide-error-message-alert="onHideErrorMessageAlert"
34
- />
35
- <common-diagram-main-modals-edit-settings-tabs-security
36
- v-show="selectedTab === '2'"
37
- :is-switch="isSwitch"
38
- :initial-data="props.initialData"
39
- @change-edit-security-data="onChangeEditSecurityData"
40
- />
41
- <common-diagram-main-modals-edit-settings-tabs-traffic-shaping
42
- v-show="selectedTab === '3'"
43
- :is-show-error-message-alert="isShowErrorMessageAlert"
44
- :error-messages="errorMessages"
45
- :initial-data="props.initialData"
46
- :has-error-messages="hasErrorMessages"
47
- :is-switch="isSwitch"
48
- @change-edit-traffic-shaping-data="onChangeEditTrafficShapingData"
49
- @change-error-messages="onChangeErrorMessages"
50
- @hide-error-message-alert="onHideErrorMessageAlert"
51
- />
52
- <common-diagram-main-modals-edit-settings-tabs-teaming-failover
53
- v-show="selectedTab === '4'"
54
- :is-switch="isSwitch"
55
- :adapters="props.adapters"
56
- :initial-data="props.initialData"
57
- :adapter-status="adapterStatus"
58
- :is-dark-mode="props.isDarkMode"
59
- @change-edit-teaming-failover-data="onChangeEditTeamingFailoverData"
60
- @change-adapter-status="onChangeAdapterStatus"
61
- />
62
- </template>
63
- <template v-if="isPort">
64
- <common-diagram-main-modals-edit-settings-tabs-port-properties
65
- v-show="selectedTab === '1'"
66
- :is-show-error-message-alert="isShowErrorMessageAlert"
67
- :error-messages="errorMessages"
68
- :initial-data="props.initialData"
69
- :has-error-messages="hasErrorMessages"
70
- @change-error-messages="onChangeErrorMessages"
71
- @change-port-edit-properties-data="onChangePortEditPropertiesData"
72
- @hide-error-message-alert="onHideErrorMessageAlert"
73
- />
74
- <common-diagram-main-modals-edit-settings-tabs-port-ipv-four-settings
75
- v-show="selectedTab === '2'"
76
- :is-show-error-message-alert="isShowErrorMessageAlert"
77
- :error-messages="errorMessages"
78
- :initial-data="props.initialData"
79
- :has-error-messages="hasErrorMessages"
80
- @change-error-messages="onChangeErrorMessages"
81
- @change-port-ipv-four-data="onChangePortEditIpvFourData"
82
- @hide-error-message-alert="onHideErrorMessageAlert"
83
- />
84
- </template>
85
- <common-diagram-main-modals-edit-settings-confirm-teaming-settings-modal
86
- :is-show="isShowWithoutActiveAdapterModal"
87
- @hide="onHideWithoutActiveAdapterModal"
88
- @submit="onApproveWithoutActiveAdapterModal"
89
- />
90
- </div>
91
- </template>
92
-
93
- <script setup lang="ts">
94
- import type { UI_I_ItemsWithTotalCounts } from '~/lib/models/interfaces'
95
- import {
96
- UI_I_AdapterStatus,
97
- UI_I_ModalsInitialData,
98
- UI_I_SwitchAdapterItem,
99
- UI_I_SecurityFields,
100
- UI_I_TrafficShapingFields,
101
- UI_I_TeamingFailoverFields,
102
- UI_I_EditFieldsData,
103
- UI_I_PropertiesFields,
104
- UI_I_EditSettingsErrorMessage,
105
- UI_I_SwitchPropertiesFields,
106
- UI_I_PortPropertiesFields,
107
- UI_I_IpvFourSettingsFields,
108
- } from '~/components/common/diagramMain/lib/models/interfaces'
109
-
110
- // Props from up
111
- const props = withDefaults(
112
- defineProps<{
113
- viewName: string
114
- items: {
115
- value: string
116
- text: string
117
- }[]
118
- initialData?: UI_I_ModalsInitialData
119
- adapters: UI_I_ItemsWithTotalCounts<UI_I_SwitchAdapterItem>
120
- flagSendData: boolean
121
- isDarkMode?: boolean
122
- }>(),
123
- {
124
- initialData: () => ({}),
125
- isDarkMode: false,
126
- }
127
- )
128
-
129
- const emits = defineEmits<{
130
- (event: 'change-edit-fields-data', editFieldsData: UI_I_EditFieldsData): void
131
- (
132
- event: 'check-network-label',
133
- label: string,
134
- sendMessage: (message: string) => void
135
- ): void
136
- (event: 'send-edit-data', type: string): void
137
- }>()
138
-
139
- // View for the switch or the network
140
- const isSwitch = computed<boolean>(() => props.viewName === 'switch-edit')
141
- const isNetwork = computed<boolean>(() => props.viewName === 'network-edit')
142
- const isPort = computed<boolean>(() => props.viewName === 'port-edit')
143
-
144
- // Modal selected tab number
145
- const selectedTab = ref<string>('1')
146
-
147
- // Error notification from the nexted components validation
148
- const errorMessages = ref<UI_I_EditSettingsErrorMessage>({
149
- networkLabel: '',
150
- vlanId: '',
151
- average: '',
152
- peak: '',
153
- burstSize: '',
154
- mtu: '',
155
- ipFourAddress: '',
156
- subnetMask: '',
157
- defaultGateway: '',
158
- })
159
-
160
- const onChangeErrorMessages = (
161
- newErrorMessage: string,
162
- fieldName: keyof UI_I_EditSettingsErrorMessage
163
- ): void => {
164
- errorMessages.value[fieldName] = newErrorMessage
165
- }
166
-
167
- const hasErrorMessages = computed(
168
- () => !!Object.values(errorMessages.value).filter((err) => err !== '').length
169
- )
170
-
171
- // flag: to show error message
172
- const isShowErrorMessageAlert = ref<boolean>(false)
173
-
174
- const onShowErrorMessageAlert = (): void => {
175
- isShowErrorMessageAlert.value = true
176
- }
177
-
178
- const onHideErrorMessageAlert = (): void => {
179
- isShowErrorMessageAlert.value = false
180
- }
181
-
182
- const networkEditData = ref<UI_I_EditFieldsData>({})
183
- const initialNetworkLabel = ref<string>('-initial-networkLabel-123')
184
-
185
- const isFailoverOrderOverride = computed<string | number | boolean | undefined>(
186
- () => networkEditData.value?.teamingFailover?.failoverOrder.checked
187
- )
188
-
189
- const adapterStatus = ref<UI_I_AdapterStatus>({
190
- active: [],
191
- standby: [],
192
- unused: [],
193
- })
194
- const adapterStatusInitial = ref<UI_I_AdapterStatus>({
195
- active: [],
196
- standby: [],
197
- unused: [],
198
- })
199
-
200
- const onChangeAdapterStatus = (newAdapterStatus: UI_I_AdapterStatus) => {
201
- adapterStatus.value = newAdapterStatus
202
- }
203
-
204
- const onCheckNetworkLabel = (
205
- label: string,
206
- sendMessage: (message: string) => void
207
- ) => {
208
- emits('check-network-label', label, sendMessage)
209
- }
210
-
211
- const onChangeNetworkEditPropertiesData = (
212
- newNetworkEditPropertiesData: UI_I_PropertiesFields
213
- ) => {
214
- networkEditData.value.properties = newNetworkEditPropertiesData
215
- initialNetworkLabel.value === '-initial-networkLabel-123' &&
216
- (initialNetworkLabel.value = newNetworkEditPropertiesData.networkLabel)
217
- }
218
- const onChangeSwitchEditPropertiesData = (
219
- newSwitchEditPropertiesData: UI_I_SwitchPropertiesFields
220
- ) => {
221
- networkEditData.value.properties = newSwitchEditPropertiesData
222
- }
223
- const onChangePortEditPropertiesData = (
224
- newPortEditPropertiesData: UI_I_PortPropertiesFields
225
- ) => {
226
- networkEditData.value.properties = newPortEditPropertiesData
227
- }
228
- const onChangePortEditIpvFourData = (
229
- newPortEditIpvFourData: UI_I_IpvFourSettingsFields
230
- ) => {
231
- networkEditData.value.ipvFourSettings = newPortEditIpvFourData
232
- }
233
-
234
- const onChangeEditSecurityData = (newEditSecurityData: UI_I_SecurityFields) => {
235
- networkEditData.value.security = newEditSecurityData
236
- }
237
- const onChangeEditTrafficShapingData = (
238
- newEditTrafficShapingData: UI_I_TrafficShapingFields
239
- ) => {
240
- networkEditData.value.trafficShaping = newEditTrafficShapingData
241
- }
242
- const onChangeEditTeamingFailoverData = (
243
- newEditTeamingFailoverData: UI_I_TeamingFailoverFields
244
- ) => {
245
- networkEditData.value.teamingFailover = {
246
- ...newEditTeamingFailoverData,
247
- adapters: adapterStatus.value,
248
- }
249
- }
250
-
251
- const changeEditFieldsData = (newNetworkEditData: UI_I_EditFieldsData) =>
252
- emits('change-edit-fields-data', newNetworkEditData)
253
-
254
- watch(
255
- networkEditData,
256
- (newNetworkEditData: UI_I_EditFieldsData) => {
257
- changeEditFieldsData(newNetworkEditData)
258
- },
259
- { deep: true, immediate: true }
260
- )
261
-
262
- const isShowWithoutActiveAdapterModal = ref(false)
263
- const warningModalOpenedFromSending = ref(false)
264
- const isApprovedAdapterStatus = ref(true)
265
-
266
- const setApproveAdapterStatus = (value: boolean) =>
267
- (isApprovedAdapterStatus.value = value)
268
-
269
- const onShowWithoutActiveAdapterModal = () => {
270
- isShowWithoutActiveAdapterModal.value = true
271
- }
272
-
273
- const onHideWithoutActiveAdapterModal = () => {
274
- isShowWithoutActiveAdapterModal.value = false
275
- warningModalOpenedFromSending.value = false
276
- setApproveAdapterStatus(false)
277
- }
278
-
279
- const onApproveWithoutActiveAdapterModal = () => {
280
- setApproveAdapterStatus(true)
281
- if (warningModalOpenedFromSending.value) {
282
- onSendData()
283
- warningModalOpenedFromSending.value = false
284
- onHideWithoutActiveAdapterModal()
285
- return
286
- }
287
-
288
- isShowWithoutActiveAdapterModal.value = false
289
- selectedTab.value = selectedTabInAlertModal.value
290
- lastSavedAdapterStatus.value = useDeepCopy(adapterStatus.value)
291
- }
292
-
293
- const isCheckedNetworkLabel = ref(false)
294
- const networkAlreadyExists = ref(false)
295
-
296
- const checkNetworkLabelCallback = (
297
- type: 'tab' | 'send',
298
- message: string,
299
- newSelectedTab?: string
300
- ) => {
301
- if (!message) {
302
- isCheckedNetworkLabel.value = true
303
- networkAlreadyExists.value = false
304
- type === 'tab' && (selectedTab.value = newSelectedTab || '4')
305
- type === 'send' && emits('send-edit-data', props.viewName)
306
- return
307
- }
308
-
309
- errorMessages.value.networkLabel = message
310
- networkAlreadyExists.value = true
311
- onShowErrorMessageAlert()
312
- }
313
-
314
- const networkLabel = computed<string>(
315
- () =>
316
- (networkEditData.value.properties as UI_I_PropertiesFields)?.networkLabel
317
- )
318
- const onSendData = () => {
319
- if (isNetwork.value) {
320
- if (!networkLabel.value) {
321
- onShowErrorMessageAlert()
322
- return
323
- }
324
- initialNetworkLabel.value !== networkLabel.value &&
325
- selectedTab.value === '1'
326
- ? onCheckNetworkLabel(networkLabel.value || '', (message) =>
327
- checkNetworkLabelCallback('send', message)
328
- )
329
- : emits('send-edit-data', props.viewName)
330
- }
331
-
332
- ;(isSwitch.value || isPort.value) && emits('send-edit-data', props.viewName)
333
- }
334
-
335
- const isNotChangedAdapterStatusFunc = (): boolean => {
336
- const adapterStatusString = JSON.stringify(adapterStatus.value)
337
- const adapterStatusInitialString = JSON.stringify(adapterStatusInitial.value)
338
- const adapterStatusLastSavedString = JSON.stringify(
339
- lastSavedAdapterStatus.value
340
- )
341
-
342
- return (
343
- adapterStatusString === adapterStatusInitialString ||
344
- adapterStatusString === adapterStatusLastSavedString
345
- )
346
- }
347
-
348
- watch(
349
- () => props.flagSendData,
350
- () => {
351
- if (hasErrorMessages.value) {
352
- onShowErrorMessageAlert()
353
- return
354
- }
355
- const isNotChangedAdapterStatus = isNotChangedAdapterStatusFunc()
356
-
357
- if (
358
- !isFailoverOrderOverride.value ||
359
- (isNotChangedAdapterStatus && isApprovedAdapterStatus.value) ||
360
- adapterStatus.value.active.length !== 0
361
- ) {
362
- onSendData()
363
- return
364
- }
365
-
366
- warningModalOpenedFromSending.value = true
367
- adapterStatus.value.active.length === 0 && onShowWithoutActiveAdapterModal()
368
- }
369
- )
370
-
371
- const selectedTabInAlertModal = ref<string>('')
372
- const lastSavedAdapterStatus = ref<UI_I_AdapterStatus>()
373
-
374
- const stopTabChanging = (newSelectedTab: string) => {
375
- adapterStatus.value.active.length === 0 && (selectedTab.value = '4')
376
- selectedTabInAlertModal.value = newSelectedTab
377
- lastSavedAdapterStatus.value = useDeepCopy(adapterStatus.value)
378
- adapterStatus.value.active.length === 0 && onShowWithoutActiveAdapterModal()
379
- }
380
-
381
- watch(selectedTab, (newSelectedTab: string, oldSelectedTab: string) => {
382
- if (oldSelectedTab === '4') {
383
- if (!selectedTabInAlertModal.value && isFailoverOrderOverride.value) {
384
- const isNotChangedAdapterStatus = isNotChangedAdapterStatusFunc()
385
- if (isNotChangedAdapterStatus) {
386
- lastSavedAdapterStatus.value = useDeepCopy(adapterStatus.value)
387
- return
388
- }
389
-
390
- stopTabChanging(newSelectedTab)
391
- } else if (
392
- selectedTabInAlertModal.value &&
393
- !isApprovedAdapterStatus.value &&
394
- isFailoverOrderOverride.value
395
- ) {
396
- stopTabChanging(newSelectedTab)
397
- } else if (selectedTabInAlertModal.value) {
398
- selectedTabInAlertModal.value = ''
399
- }
400
- }
401
-
402
- if (
403
- isNetwork.value &&
404
- newSelectedTab !== '1' &&
405
- !isCheckedNetworkLabel.value
406
- ) {
407
- selectedTab.value = '1'
408
- if (
409
- networkLabel.value !== initialNetworkLabel.value &&
410
- networkLabel.value !== ''
411
- ) {
412
- onCheckNetworkLabel(networkLabel.value || '', (message) =>
413
- checkNetworkLabelCallback('tab', message, newSelectedTab)
414
- )
415
- } else if (networkLabel.value === '') {
416
- onShowErrorMessageAlert()
417
- } else {
418
- isCheckedNetworkLabel.value = true
419
- selectedTab.value = newSelectedTab
420
- }
421
- }
422
- })
423
-
424
- watch(
425
- adapterStatus,
426
- (newAdapterStatus: UI_I_AdapterStatus) => {
427
- setApproveAdapterStatus(true)
428
- if (networkEditData.value.teamingFailover) {
429
- networkEditData.value.teamingFailover = {
430
- ...networkEditData.value.teamingFailover,
431
- adapters: newAdapterStatus,
432
- }
433
- }
434
- },
435
- { deep: true, immediate: true }
436
- )
437
-
438
- watch(
439
- () => networkLabel.value,
440
- (newNetworkEditData: string, oldNetworkEditData: string) => {
441
- if (newNetworkEditData === oldNetworkEditData) return
442
- isCheckedNetworkLabel.value = false
443
- errorMessages.value = { ...errorMessages.value, networkLabel: '' }
444
- },
445
- { deep: true }
446
- )
447
-
448
- onMounted(() => {
449
- const active = useDeepCopy(props.initialData.activeAdapters) || []
450
- const standby = useDeepCopy(props.initialData.standbyAdapters) || []
451
- const unused = useDeepCopy(props.initialData.unusedAdapters) || []
452
- const adapterStatusInit = {
453
- active,
454
- standby,
455
- unused,
456
- }
457
- adapterStatus.value = adapterStatusInit
458
- adapterStatusInitial.value = adapterStatusInit
459
- })
460
- </script>
461
-
462
- <style scoped lang="scss">
463
- :deep(.alert-modal) {
464
- .modal-dialog .modal-header {
465
- padding-bottom: 24px;
466
- border-bottom: none;
467
- }
468
- .warning-text {
469
- color: #666666;
470
- font-size: 14px;
471
- margin-top: 24px;
472
- }
473
- }
474
- :deep(.wizard-content__container) {
475
- margin-left: 220px;
476
- }
477
- .vertical-tabs__fixed-position {
478
- position: absolute;
479
- }
480
-
481
- .loader {
482
- position: absolute;
483
- z-index: 1000;
484
- left: 0;
485
- right: 0;
486
- bottom: 0;
487
- top: 0;
488
- display: flex;
489
- align-items: center;
490
- justify-content: center;
491
- background-color: rgba(0, 0, 0, 0.3);
492
-
493
- .spinner {
494
- left: unset;
495
- }
496
- }
497
- </style>
1
+ <template>
2
+ <div class="wizard-tab__container">
3
+ <div class="vertical-tabs__fixed-position">
4
+ <atoms-tabs-vertical-tabs
5
+ v-model="selectedTab"
6
+ :items="props.items"
7
+ :has-error-messages="hasErrorMessages"
8
+ @set-alert="onShowErrorMessageAlert"
9
+ />
10
+ </div>
11
+ <template v-if="isNetwork || isSwitch">
12
+ <common-diagram-main-modals-edit-settings-tabs-network-properties
13
+ v-if="isNetwork"
14
+ v-show="selectedTab === '1'"
15
+ :is-show-error-message-alert="isShowErrorMessageAlert"
16
+ :error-messages="errorMessages"
17
+ :initial-data="props.initialData"
18
+ :has-error-messages="hasErrorMessages"
19
+ :network-already-exists="networkAlreadyExists"
20
+ @change-edit-properties-data="onChangeNetworkEditPropertiesData"
21
+ @change-error-messages="onChangeErrorMessages"
22
+ @hide-error-message-alert="onHideErrorMessageAlert"
23
+ />
24
+ <common-diagram-main-modals-edit-settings-tabs-switch-properties
25
+ v-if="isSwitch"
26
+ v-show="selectedTab === '1'"
27
+ :is-show-error-message-alert="isShowErrorMessageAlert"
28
+ :error-messages="errorMessages"
29
+ :initial-data="props.initialData"
30
+ :has-error-messages="hasErrorMessages"
31
+ @change-edit-properties-data="onChangeSwitchEditPropertiesData"
32
+ @change-error-messages="onChangeErrorMessages"
33
+ @hide-error-message-alert="onHideErrorMessageAlert"
34
+ />
35
+ <common-diagram-main-modals-edit-settings-tabs-security
36
+ v-show="selectedTab === '2'"
37
+ :is-switch="isSwitch"
38
+ :initial-data="props.initialData"
39
+ @change-edit-security-data="onChangeEditSecurityData"
40
+ />
41
+ <common-diagram-main-modals-edit-settings-tabs-traffic-shaping
42
+ v-show="selectedTab === '3'"
43
+ :is-show-error-message-alert="isShowErrorMessageAlert"
44
+ :error-messages="errorMessages"
45
+ :initial-data="props.initialData"
46
+ :has-error-messages="hasErrorMessages"
47
+ :is-switch="isSwitch"
48
+ @change-edit-traffic-shaping-data="onChangeEditTrafficShapingData"
49
+ @change-error-messages="onChangeErrorMessages"
50
+ @hide-error-message-alert="onHideErrorMessageAlert"
51
+ />
52
+ <common-diagram-main-modals-edit-settings-tabs-teaming-failover
53
+ v-show="selectedTab === '4'"
54
+ :is-switch="isSwitch"
55
+ :adapters="props.adapters"
56
+ :initial-data="props.initialData"
57
+ :adapter-status="adapterStatus"
58
+ :is-dark-mode="props.isDarkMode"
59
+ @change-edit-teaming-failover-data="onChangeEditTeamingFailoverData"
60
+ @change-adapter-status="onChangeAdapterStatus"
61
+ />
62
+ </template>
63
+ <template v-if="isPort">
64
+ <common-diagram-main-modals-edit-settings-tabs-port-properties
65
+ v-show="selectedTab === '1'"
66
+ :is-show-error-message-alert="isShowErrorMessageAlert"
67
+ :error-messages="errorMessages"
68
+ :initial-data="props.initialData"
69
+ :has-error-messages="hasErrorMessages"
70
+ @change-error-messages="onChangeErrorMessages"
71
+ @change-port-edit-properties-data="onChangePortEditPropertiesData"
72
+ @hide-error-message-alert="onHideErrorMessageAlert"
73
+ />
74
+ <common-diagram-main-modals-edit-settings-tabs-port-ipv-four-settings
75
+ v-show="selectedTab === '2'"
76
+ :is-show-error-message-alert="isShowErrorMessageAlert"
77
+ :error-messages="errorMessages"
78
+ :initial-data="props.initialData"
79
+ :has-error-messages="hasErrorMessages"
80
+ @change-error-messages="onChangeErrorMessages"
81
+ @change-port-ipv-four-data="onChangePortEditIpvFourData"
82
+ @hide-error-message-alert="onHideErrorMessageAlert"
83
+ />
84
+ </template>
85
+ <common-diagram-main-modals-edit-settings-confirm-teaming-settings-modal
86
+ :is-show="isShowWithoutActiveAdapterModal"
87
+ @hide="onHideWithoutActiveAdapterModal"
88
+ @submit="onApproveWithoutActiveAdapterModal"
89
+ />
90
+ </div>
91
+ </template>
92
+
93
+ <script setup lang="ts">
94
+ import type { UI_I_ItemsWithTotalCounts } from '~/lib/models/interfaces'
95
+ import {
96
+ UI_I_AdapterStatus,
97
+ UI_I_ModalsInitialData,
98
+ UI_I_SwitchAdapterItem,
99
+ UI_I_SecurityFields,
100
+ UI_I_TrafficShapingFields,
101
+ UI_I_TeamingFailoverFields,
102
+ UI_I_EditFieldsData,
103
+ UI_I_PropertiesFields,
104
+ UI_I_EditSettingsErrorMessage,
105
+ UI_I_SwitchPropertiesFields,
106
+ UI_I_PortPropertiesFields,
107
+ UI_I_IpvFourSettingsFields,
108
+ } from '~/components/common/diagramMain/lib/models/interfaces'
109
+
110
+ // Props from up
111
+ const props = withDefaults(
112
+ defineProps<{
113
+ viewName: string
114
+ items: {
115
+ value: string
116
+ text: string
117
+ }[]
118
+ initialData?: UI_I_ModalsInitialData
119
+ adapters: UI_I_ItemsWithTotalCounts<UI_I_SwitchAdapterItem>
120
+ flagSendData: boolean
121
+ isDarkMode?: boolean
122
+ }>(),
123
+ {
124
+ initialData: () => ({}),
125
+ isDarkMode: false,
126
+ }
127
+ )
128
+
129
+ const emits = defineEmits<{
130
+ (event: 'change-edit-fields-data', editFieldsData: UI_I_EditFieldsData): void
131
+ (
132
+ event: 'check-network-label',
133
+ label: string,
134
+ sendMessage: (message: string) => void
135
+ ): void
136
+ (event: 'send-edit-data', type: string): void
137
+ }>()
138
+
139
+ // View for the switch or the network
140
+ const isSwitch = computed<boolean>(() => props.viewName === 'switch-edit')
141
+ const isNetwork = computed<boolean>(() => props.viewName === 'network-edit')
142
+ const isPort = computed<boolean>(() => props.viewName === 'port-edit')
143
+
144
+ // Modal selected tab number
145
+ const selectedTab = ref<string>('1')
146
+
147
+ // Error notification from the nexted components validation
148
+ const errorMessages = ref<UI_I_EditSettingsErrorMessage>({
149
+ networkLabel: '',
150
+ vlanId: '',
151
+ average: '',
152
+ peak: '',
153
+ burstSize: '',
154
+ mtu: '',
155
+ ipFourAddress: '',
156
+ subnetMask: '',
157
+ defaultGateway: '',
158
+ })
159
+
160
+ const onChangeErrorMessages = (
161
+ newErrorMessage: string,
162
+ fieldName: keyof UI_I_EditSettingsErrorMessage
163
+ ): void => {
164
+ errorMessages.value[fieldName] = newErrorMessage
165
+ }
166
+
167
+ const hasErrorMessages = computed(
168
+ () => !!Object.values(errorMessages.value).filter((err) => err !== '').length
169
+ )
170
+
171
+ // flag: to show error message
172
+ const isShowErrorMessageAlert = ref<boolean>(false)
173
+
174
+ const onShowErrorMessageAlert = (): void => {
175
+ isShowErrorMessageAlert.value = true
176
+ }
177
+
178
+ const onHideErrorMessageAlert = (): void => {
179
+ isShowErrorMessageAlert.value = false
180
+ }
181
+
182
+ const networkEditData = ref<UI_I_EditFieldsData>({})
183
+ const initialNetworkLabel = ref<string>('-initial-networkLabel-123')
184
+
185
+ const isFailoverOrderOverride = computed<string | number | boolean | undefined>(
186
+ () => networkEditData.value?.teamingFailover?.failoverOrder.checked
187
+ )
188
+
189
+ const adapterStatus = ref<UI_I_AdapterStatus>({
190
+ active: [],
191
+ standby: [],
192
+ unused: [],
193
+ })
194
+ const adapterStatusInitial = ref<UI_I_AdapterStatus>({
195
+ active: [],
196
+ standby: [],
197
+ unused: [],
198
+ })
199
+
200
+ const onChangeAdapterStatus = (newAdapterStatus: UI_I_AdapterStatus) => {
201
+ adapterStatus.value = newAdapterStatus
202
+ }
203
+
204
+ const onCheckNetworkLabel = (
205
+ label: string,
206
+ sendMessage: (message: string) => void
207
+ ) => {
208
+ emits('check-network-label', label, sendMessage)
209
+ }
210
+
211
+ const onChangeNetworkEditPropertiesData = (
212
+ newNetworkEditPropertiesData: UI_I_PropertiesFields
213
+ ) => {
214
+ networkEditData.value.properties = newNetworkEditPropertiesData
215
+ initialNetworkLabel.value === '-initial-networkLabel-123' &&
216
+ (initialNetworkLabel.value = newNetworkEditPropertiesData.networkLabel)
217
+ }
218
+ const onChangeSwitchEditPropertiesData = (
219
+ newSwitchEditPropertiesData: UI_I_SwitchPropertiesFields
220
+ ) => {
221
+ networkEditData.value.properties = newSwitchEditPropertiesData
222
+ }
223
+ const onChangePortEditPropertiesData = (
224
+ newPortEditPropertiesData: UI_I_PortPropertiesFields
225
+ ) => {
226
+ networkEditData.value.properties = newPortEditPropertiesData
227
+ }
228
+ const onChangePortEditIpvFourData = (
229
+ newPortEditIpvFourData: UI_I_IpvFourSettingsFields
230
+ ) => {
231
+ networkEditData.value.ipvFourSettings = newPortEditIpvFourData
232
+ }
233
+
234
+ const onChangeEditSecurityData = (newEditSecurityData: UI_I_SecurityFields) => {
235
+ networkEditData.value.security = newEditSecurityData
236
+ }
237
+ const onChangeEditTrafficShapingData = (
238
+ newEditTrafficShapingData: UI_I_TrafficShapingFields
239
+ ) => {
240
+ networkEditData.value.trafficShaping = newEditTrafficShapingData
241
+ }
242
+ const onChangeEditTeamingFailoverData = (
243
+ newEditTeamingFailoverData: UI_I_TeamingFailoverFields
244
+ ) => {
245
+ networkEditData.value.teamingFailover = {
246
+ ...newEditTeamingFailoverData,
247
+ adapters: adapterStatus.value,
248
+ }
249
+ }
250
+
251
+ const changeEditFieldsData = (newNetworkEditData: UI_I_EditFieldsData) =>
252
+ emits('change-edit-fields-data', newNetworkEditData)
253
+
254
+ watch(
255
+ networkEditData,
256
+ (newNetworkEditData: UI_I_EditFieldsData) => {
257
+ changeEditFieldsData(newNetworkEditData)
258
+ },
259
+ { deep: true, immediate: true }
260
+ )
261
+
262
+ const isShowWithoutActiveAdapterModal = ref(false)
263
+ const warningModalOpenedFromSending = ref(false)
264
+ const isApprovedAdapterStatus = ref(true)
265
+
266
+ const setApproveAdapterStatus = (value: boolean) =>
267
+ (isApprovedAdapterStatus.value = value)
268
+
269
+ const onShowWithoutActiveAdapterModal = () => {
270
+ isShowWithoutActiveAdapterModal.value = true
271
+ }
272
+
273
+ const onHideWithoutActiveAdapterModal = () => {
274
+ isShowWithoutActiveAdapterModal.value = false
275
+ warningModalOpenedFromSending.value = false
276
+ setApproveAdapterStatus(false)
277
+ }
278
+
279
+ const onApproveWithoutActiveAdapterModal = () => {
280
+ setApproveAdapterStatus(true)
281
+ if (warningModalOpenedFromSending.value) {
282
+ onSendData()
283
+ warningModalOpenedFromSending.value = false
284
+ onHideWithoutActiveAdapterModal()
285
+ return
286
+ }
287
+
288
+ isShowWithoutActiveAdapterModal.value = false
289
+ selectedTab.value = selectedTabInAlertModal.value
290
+ lastSavedAdapterStatus.value = useDeepCopy(adapterStatus.value)
291
+ }
292
+
293
+ const isCheckedNetworkLabel = ref(false)
294
+ const networkAlreadyExists = ref(false)
295
+
296
+ const checkNetworkLabelCallback = (
297
+ type: 'tab' | 'send',
298
+ message: string,
299
+ newSelectedTab?: string
300
+ ) => {
301
+ if (!message) {
302
+ isCheckedNetworkLabel.value = true
303
+ networkAlreadyExists.value = false
304
+ type === 'tab' && (selectedTab.value = newSelectedTab || '4')
305
+ type === 'send' && emits('send-edit-data', props.viewName)
306
+ return
307
+ }
308
+
309
+ errorMessages.value.networkLabel = message
310
+ networkAlreadyExists.value = true
311
+ onShowErrorMessageAlert()
312
+ }
313
+
314
+ const networkLabel = computed<string>(
315
+ () =>
316
+ (networkEditData.value.properties as UI_I_PropertiesFields)?.networkLabel
317
+ )
318
+ const onSendData = () => {
319
+ if (isNetwork.value) {
320
+ if (!networkLabel.value) {
321
+ onShowErrorMessageAlert()
322
+ return
323
+ }
324
+ initialNetworkLabel.value !== networkLabel.value &&
325
+ selectedTab.value === '1'
326
+ ? onCheckNetworkLabel(networkLabel.value || '', (message) =>
327
+ checkNetworkLabelCallback('send', message)
328
+ )
329
+ : emits('send-edit-data', props.viewName)
330
+ }
331
+
332
+ ;(isSwitch.value || isPort.value) && emits('send-edit-data', props.viewName)
333
+ }
334
+
335
+ const isNotChangedAdapterStatusFunc = (): boolean => {
336
+ const adapterStatusString = JSON.stringify(adapterStatus.value)
337
+ const adapterStatusInitialString = JSON.stringify(adapterStatusInitial.value)
338
+ const adapterStatusLastSavedString = JSON.stringify(
339
+ lastSavedAdapterStatus.value
340
+ )
341
+
342
+ return (
343
+ adapterStatusString === adapterStatusInitialString ||
344
+ adapterStatusString === adapterStatusLastSavedString
345
+ )
346
+ }
347
+
348
+ watch(
349
+ () => props.flagSendData,
350
+ () => {
351
+ if (hasErrorMessages.value) {
352
+ onShowErrorMessageAlert()
353
+ return
354
+ }
355
+ const isNotChangedAdapterStatus = isNotChangedAdapterStatusFunc()
356
+
357
+ if (
358
+ !isFailoverOrderOverride.value ||
359
+ (isNotChangedAdapterStatus && isApprovedAdapterStatus.value) ||
360
+ adapterStatus.value.active.length !== 0
361
+ ) {
362
+ onSendData()
363
+ return
364
+ }
365
+
366
+ warningModalOpenedFromSending.value = true
367
+ adapterStatus.value.active.length === 0 && onShowWithoutActiveAdapterModal()
368
+ }
369
+ )
370
+
371
+ const selectedTabInAlertModal = ref<string>('')
372
+ const lastSavedAdapterStatus = ref<UI_I_AdapterStatus>()
373
+
374
+ const stopTabChanging = (newSelectedTab: string) => {
375
+ adapterStatus.value.active.length === 0 && (selectedTab.value = '4')
376
+ selectedTabInAlertModal.value = newSelectedTab
377
+ lastSavedAdapterStatus.value = useDeepCopy(adapterStatus.value)
378
+ adapterStatus.value.active.length === 0 && onShowWithoutActiveAdapterModal()
379
+ }
380
+
381
+ watch(selectedTab, (newSelectedTab: string, oldSelectedTab: string) => {
382
+ if (oldSelectedTab === '4') {
383
+ if (!selectedTabInAlertModal.value && isFailoverOrderOverride.value) {
384
+ const isNotChangedAdapterStatus = isNotChangedAdapterStatusFunc()
385
+ if (isNotChangedAdapterStatus) {
386
+ lastSavedAdapterStatus.value = useDeepCopy(adapterStatus.value)
387
+ return
388
+ }
389
+
390
+ stopTabChanging(newSelectedTab)
391
+ } else if (
392
+ selectedTabInAlertModal.value &&
393
+ !isApprovedAdapterStatus.value &&
394
+ isFailoverOrderOverride.value
395
+ ) {
396
+ stopTabChanging(newSelectedTab)
397
+ } else if (selectedTabInAlertModal.value) {
398
+ selectedTabInAlertModal.value = ''
399
+ }
400
+ }
401
+
402
+ if (
403
+ isNetwork.value &&
404
+ newSelectedTab !== '1' &&
405
+ !isCheckedNetworkLabel.value
406
+ ) {
407
+ selectedTab.value = '1'
408
+ if (
409
+ networkLabel.value !== initialNetworkLabel.value &&
410
+ networkLabel.value !== ''
411
+ ) {
412
+ onCheckNetworkLabel(networkLabel.value || '', (message) =>
413
+ checkNetworkLabelCallback('tab', message, newSelectedTab)
414
+ )
415
+ } else if (networkLabel.value === '') {
416
+ onShowErrorMessageAlert()
417
+ } else {
418
+ isCheckedNetworkLabel.value = true
419
+ selectedTab.value = newSelectedTab
420
+ }
421
+ }
422
+ })
423
+
424
+ watch(
425
+ adapterStatus,
426
+ (newAdapterStatus: UI_I_AdapterStatus) => {
427
+ setApproveAdapterStatus(true)
428
+ if (networkEditData.value.teamingFailover) {
429
+ networkEditData.value.teamingFailover = {
430
+ ...networkEditData.value.teamingFailover,
431
+ adapters: newAdapterStatus,
432
+ }
433
+ }
434
+ },
435
+ { deep: true, immediate: true }
436
+ )
437
+
438
+ watch(
439
+ () => networkLabel.value,
440
+ (newNetworkEditData: string, oldNetworkEditData: string) => {
441
+ if (newNetworkEditData === oldNetworkEditData) return
442
+ isCheckedNetworkLabel.value = false
443
+ errorMessages.value = { ...errorMessages.value, networkLabel: '' }
444
+ },
445
+ { deep: true }
446
+ )
447
+
448
+ onMounted(() => {
449
+ const active = useDeepCopy(props.initialData.activeAdapters) || []
450
+ const standby = useDeepCopy(props.initialData.standbyAdapters) || []
451
+ const unused = useDeepCopy(props.initialData.unusedAdapters) || []
452
+ const adapterStatusInit = {
453
+ active,
454
+ standby,
455
+ unused,
456
+ }
457
+ adapterStatus.value = adapterStatusInit
458
+ adapterStatusInitial.value = adapterStatusInit
459
+ })
460
+ </script>
461
+
462
+ <style scoped lang="scss">
463
+ :deep(.alert-modal) {
464
+ .modal-dialog .modal-header {
465
+ padding-bottom: 24px;
466
+ border-bottom: none;
467
+ }
468
+ .warning-text {
469
+ color: #666666;
470
+ font-size: 14px;
471
+ margin-top: 24px;
472
+ }
473
+ }
474
+ :deep(.wizard-content__container) {
475
+ margin-left: 220px;
476
+ }
477
+ .vertical-tabs__fixed-position {
478
+ position: absolute;
479
+ }
480
+
481
+ .loader {
482
+ position: absolute;
483
+ z-index: 1000;
484
+ left: 0;
485
+ right: 0;
486
+ bottom: 0;
487
+ top: 0;
488
+ display: flex;
489
+ align-items: center;
490
+ justify-content: center;
491
+ background-color: rgba(0, 0, 0, 0.3);
492
+
493
+ .spinner {
494
+ left: unset;
495
+ }
496
+ }
497
+ </style>