bfg-common 1.4.579 → 1.4.580

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