bfg-common 1.6.64 → 1.6.66

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 (144) hide show
  1. package/assets/localization/local_ru.json +5 -5
  2. package/components/atoms/dropdown/dropdown/Dropdown.vue +10 -8
  3. package/components/atoms/dropdown/dropdown/lib/models/interfaces.ts +1 -0
  4. package/components/common/adapterManager/AdapterManager.vue +473 -473
  5. package/components/common/adapterManager/AdapterManagerOld.vue +498 -498
  6. package/components/common/adapterManager/addAdapterModal/AddAdapterModal.vue +70 -70
  7. package/components/common/adapterManager/addAdapterModal/AddAdapterModalNew.vue +110 -110
  8. package/components/common/adapterManager/addAdapterModal/AddAdapterModalOld.vue +531 -531
  9. package/components/common/adapterManager/addAdapterWarningModal/AddAdapterWarningModal.vue +32 -32
  10. package/components/common/adapterManager/addAdapterWarningModal/AddAdapterWarningModalNew.vue +37 -37
  11. package/components/common/adapterManager/addAdapterWarningModal/AddAdapterWarningModalOld.vue +73 -73
  12. package/components/common/adapterManager/lib/config/index.ts +19 -19
  13. package/components/common/adapterManager/noActiveAdaptersModal/NoActiveAdaptersModal.vue +31 -31
  14. package/components/common/adapterManager/noActiveAdaptersModal/NoActiveAdaptersModalNew.vue +34 -34
  15. package/components/common/adapterManager/noActiveAdaptersModal/NoActiveAdaptersModalOld.vue +57 -57
  16. package/components/common/adapterManager/noConnectedActiveAdaptersModal/NoConnectedActiveAdaptersModal.vue +31 -31
  17. package/components/common/adapterManager/noConnectedActiveAdaptersModal/NoConnectedActiveAdaptersModalNew.vue +34 -34
  18. package/components/common/adapterManager/noConnectedActiveAdaptersModal/NoConnectedActiveAdaptersModalOld.vue +57 -57
  19. package/components/common/adapterManager/ui/actions/AddAdapterButton.vue +34 -34
  20. package/components/common/adapterManager/ui/actions/RemoveAdapterButton.vue +41 -41
  21. package/components/common/adapterManager/ui/actions/VerticalSeparator.vue +10 -10
  22. package/components/common/adapterManager/ui/actions/bar/BarOld.vue +95 -95
  23. package/components/common/adapterManager/ui/actions/moveDownAdapterButton/MoveDownAdapterButton.vue +28 -28
  24. package/components/common/adapterManager/ui/actions/moveDownAdapterButton/MoveDownAdapterButtonNew.vue +76 -76
  25. package/components/common/adapterManager/ui/actions/moveDownAdapterButton/MoveDownAdapterButtonOld.vue +33 -33
  26. package/components/common/adapterManager/ui/actions/moveUpAdapterButton/MoveUpAdapterButton.vue +28 -28
  27. package/components/common/adapterManager/ui/actions/moveUpAdapterButton/MoveUpAdapterButtonNew.vue +77 -77
  28. package/components/common/adapterManager/ui/actions/moveUpAdapterButton/MoveUpAdapterButtonOld.vue +33 -33
  29. package/components/common/adapterManager/ui/noSelectedAdapter/NoSelectedAdapter.vue +24 -24
  30. package/components/common/adapterManager/ui/noSelectedAdapter/NoSelectedAdapterNew.vue +18 -18
  31. package/components/common/adapterManager/ui/noSelectedAdapter/NoSelectedAdapterOld.vue +38 -38
  32. package/components/common/adapterManager/ui/secondTitle/SecondTitle.vue +31 -31
  33. package/components/common/adapterManager/ui/secondTitle/SecondTitleNew.vue +51 -51
  34. package/components/common/adapterManager/ui/secondTitle/SecondTitleOld.vue +35 -35
  35. package/components/common/adapterManager/ui/table/Table.vue +88 -88
  36. package/components/common/adapterManager/ui/table/TableNew.vue +137 -137
  37. package/components/common/adapterManager/ui/table/TableOld.vue +141 -141
  38. package/components/common/adapterManager/ui/table/adapters/Adapters.vue +44 -44
  39. package/components/common/adapterManager/ui/table/adapters/AdaptersNew.vue +187 -187
  40. package/components/common/adapterManager/ui/table/adapters/AdaptersOld.vue +87 -87
  41. package/components/common/adapterManager/ui/table/header/Header.vue +57 -57
  42. package/components/common/adapterManager/ui/table/header/HeaderNew.vue +81 -81
  43. package/components/common/adapterManager/ui/table/header/HeaderOld.vue +79 -79
  44. package/components/common/adapterManager/ui/table/lib/models/types.ts +1 -1
  45. package/components/common/diagramMain/Diagram.vue +459 -459
  46. package/components/common/diagramMain/DiagramMain.vue +929 -929
  47. package/components/common/diagramMain/adapter/Adapter.vue +123 -123
  48. package/components/common/diagramMain/adapter/AdapterItem.vue +438 -438
  49. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  50. package/components/common/diagramMain/adapter/Contents.vue +212 -212
  51. package/components/common/diagramMain/adapter/Lines.vue +81 -81
  52. package/components/common/diagramMain/adapter/block/Block.vue +27 -27
  53. package/components/common/diagramMain/adapter/block/BlockNew.vue +58 -58
  54. package/components/common/diagramMain/adapter/block/BlockOld.vue +50 -50
  55. package/components/common/diagramMain/adapter/secondBlock/SecondBlock.vue +27 -27
  56. package/components/common/diagramMain/adapter/secondBlock/SecondBlockNew.vue +60 -60
  57. package/components/common/diagramMain/adapter/secondBlock/SecondBlockOld.vue +51 -51
  58. package/components/common/diagramMain/header/Header.vue +49 -49
  59. package/components/common/diagramMain/header/HeaderNew.vue +155 -155
  60. package/components/common/diagramMain/header/HeaderOld.vue +234 -234
  61. package/components/common/diagramMain/highlights/Highlights.vue +151 -151
  62. package/components/common/diagramMain/highlights/HighlightsNew.vue +124 -124
  63. package/components/common/diagramMain/highlights/HighlightsOld.vue +107 -107
  64. package/components/common/diagramMain/lib/config/index.ts +81 -81
  65. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  66. package/components/common/diagramMain/lib/config/positions.ts +194 -194
  67. package/components/common/diagramMain/lib/models/enums.ts +44 -44
  68. package/components/common/diagramMain/lib/models/interfaces.ts +760 -760
  69. package/components/common/diagramMain/lib/models/types.ts +21 -21
  70. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  71. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +331 -331
  72. package/components/common/diagramMain/modals/Modals.vue +483 -483
  73. package/components/common/diagramMain/modals/lib/config/adapterModal.ts +147 -147
  74. package/components/common/diagramMain/modals/lib/config/diagramConfig.ts +66 -66
  75. package/components/common/diagramMain/modals/lib/config/index.ts +56 -56
  76. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  77. package/components/common/diagramMain/modals/lib/config/networkModal.ts +405 -405
  78. package/components/common/diagramMain/modals/lib/config/portModal.ts +253 -253
  79. package/components/common/diagramMain/modals/lib/config/switchModal.ts +245 -245
  80. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  81. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  82. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +88 -88
  83. package/components/common/diagramMain/modals/migrateVmkernelAdapter/MigrateVmkernelAdapter.vue +541 -541
  84. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  85. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +170 -170
  86. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  87. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/VmkernelAdapterReadyComplete.vue +49 -49
  88. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +19 -19
  89. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  90. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  91. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  92. package/components/common/diagramMain/modals/remove/RemoveModal.vue +82 -82
  93. package/components/common/diagramMain/modals/remove/RemoveModalNew.vue +106 -106
  94. package/components/common/diagramMain/modals/remove/RemoveModalOld.vue +241 -241
  95. package/components/common/diagramMain/modals/viewSettings/info/Info.vue +57 -57
  96. package/components/common/diagramMain/modals/viewSettings/info/InfoNew.vue +174 -174
  97. package/components/common/diagramMain/modals/viewSettings/info/InfoOld.vue +141 -141
  98. package/components/common/diagramMain/modals/viewSettings/viewSettings/ViewSettings.vue +45 -45
  99. package/components/common/diagramMain/modals/viewSettings/viewSettings/ViewSettingsNew.vue +323 -323
  100. package/components/common/diagramMain/modals/viewSettings/viewSettings/ViewSettingsOld.vue +203 -203
  101. package/components/common/diagramMain/modals/viewSettings/viewSettingsModal/ViewSettingsModal.vue +60 -60
  102. package/components/common/diagramMain/modals/viewSettings/viewSettingsModal/ViewSettingsModalNew.vue +50 -50
  103. package/components/common/diagramMain/modals/viewSettings/viewSettingsModal/ViewSettingsModalOld.vue +70 -70
  104. package/components/common/diagramMain/modals/viewSettings/viewSettingsModal/lib/models/interfaces.ts +48 -48
  105. package/components/common/diagramMain/network/Contents.vue +497 -497
  106. package/components/common/diagramMain/network/Lines.vue +107 -107
  107. package/components/common/diagramMain/network/Network.vue +141 -141
  108. package/components/common/diagramMain/network/block/Block.vue +37 -37
  109. package/components/common/diagramMain/network/block/BlockNew.vue +68 -68
  110. package/components/common/diagramMain/network/block/BlockOld.vue +64 -64
  111. package/components/common/diagramMain/network/noNetwork/NoNetwork.vue +12 -12
  112. package/components/common/diagramMain/network/noNetwork/NoNetworkNew.vue +89 -89
  113. package/components/common/diagramMain/network/noNetwork/NoNetworkOld.vue +61 -61
  114. package/components/common/diagramMain/network/secondBlock/SecondBlock.vue +41 -41
  115. package/components/common/diagramMain/network/secondBlock/SecondBlockNew.vue +64 -64
  116. package/components/common/diagramMain/network/secondBlock/SecondBlockOld.vue +60 -60
  117. package/components/common/diagramMain/port/Port.vue +580 -580
  118. package/components/common/diagramMain/port/Ports.vue +47 -47
  119. package/components/common/diagramMain/skeleton/Header.vue +31 -31
  120. package/components/common/diagramMain/skeleton/Switch.vue +75 -75
  121. package/components/common/diagramMain/switch/Switch.vue +180 -180
  122. package/components/common/diagramMain/switch/SwitchSelected.vue +111 -111
  123. package/components/common/modals/Rename.vue +3 -1
  124. package/components/common/monitor/advanced/table/tableOld/TableOld.vue +93 -93
  125. package/components/common/monitor/utilization/Old.vue +65 -24
  126. package/components/common/monitor/utilization/Utilization.vue +22 -14
  127. package/components/common/monitor/utilization/infoBlock/InfoBlock.vue +125 -2
  128. package/components/common/monitor/utilization/infoBlock/New.vue +183 -3
  129. package/components/common/monitor/utilization/infoBlock/Old.vue +71 -66
  130. package/components/common/monitor/utilization/infoBlock/progressBar/New.vue +64 -0
  131. package/components/common/monitor/utilization/infoBlock/progressBar/Old.vue +65 -0
  132. package/components/common/monitor/utilization/infoBlock/progressBar/ProgressBar.vue +84 -0
  133. package/components/common/monitor/utilization/infoBlock/progressBar/lib/models/interfaces.ts +10 -0
  134. package/components/common/monitor/utilization/lib/models/enums.ts +4 -4
  135. package/components/common/monitor/utilization/lib/models/interfaces.ts +14 -12
  136. package/components/common/monitor/utilization/lib/models/types.ts +1 -0
  137. package/components/common/monitor/utilization/lib/utils/index.ts +64 -6
  138. package/components/common/monitor/utilization/new/New.vue +195 -0
  139. package/components/common/monitor/utilization/new/Portlet.vue +42 -0
  140. package/components/common/monitor/utilization/new/Skeleton.vue +120 -0
  141. package/components/common/monitor/utilization/new/lib/utils/newPortlet.ts +7 -0
  142. package/components/common/vm/actions/rename/Old.vue +1 -0
  143. package/package.json +1 -1
  144. package/components/common/monitor/utilization/New.vue +0 -5
@@ -1,459 +1,459 @@
1
- <template>
2
- <div
3
- :class="{
4
- 'diagram-container-new': isNewView,
5
- 'diagram-container': !isNewView,
6
- 'diagram-in-portlet': props.inPortlet,
7
- }"
8
- >
9
- <common-diagram-main-header
10
- v-if="!props.inPortlet"
11
- :project="props.project"
12
- :is-show-diagram="props.isShowDiagram"
13
- :diagram-name="props.diagramData.diagramName"
14
- :test-id="props.diagramData.testId"
15
- @toggle-diagram="emits('toggle-diagram')"
16
- @show-modal="onShowModal"
17
- />
18
-
19
- <div
20
- :class="[
21
- 'diagrams',
22
- {
23
- 'is-show-diagram': props.isShowDiagram,
24
- },
25
- ]"
26
- >
27
- <div class="diagram-second-container">
28
- <svg
29
- v-if="props.diagramData && props.isShowDiagram"
30
- xmlns="http://www.w3.org/2000/svg"
31
- :height="diagramHeight"
32
- :width="diagramWidth"
33
- :viewBox="viewBox"
34
- :preserveAspectRatio="preserveAspectRatio"
35
- :class="svgClasses"
36
- @click.capture="onClickDiagram"
37
- >
38
- <common-diagram-main-switch
39
- :networks-count="props.networksCount"
40
- :main-rect-height="props.mainRectHeight"
41
- :main-switch-line="props.mainSwitchLine"
42
- :selected-main-line="props.selectedMainLine"
43
- :is-visible-line="hasActiveAdapter"
44
- :is-selected-linked-with-adapter="isSelectedLinkedWithAdapter"
45
- :adapter-line-y="props.adaptersWithPositions.adaptersConnectLineY"
46
- :first-and-last-network-lines-y="firstAndLastNetworkLinesY"
47
- :networks-with-positions="props.networksWithPositions"
48
- />
49
- <common-diagram-main-adapter
50
- :networks-count="props.networksCount"
51
- :adapters-with-positions="props.adaptersWithPositions"
52
- :selected-main-line="props.selectedMainLine"
53
- :selected-port="props.selectedPort"
54
- :selected-adapter="props.selectedAdapter"
55
- :selected-network="props.selectedNetwork"
56
- :is-visible-line="hasActiveAdapter"
57
- :is-dark-mode="props.isDarkMode"
58
- :test-id="props.diagramData.testId"
59
- :is-selected-linked-with-adapter="isSelectedLinkedWithAdapter"
60
- :networks-with-positions="props.networksWithPositions"
61
- :first-and-last-network-lines-y="firstAndLastNetworkLinesY"
62
- :in-network-lines-y="inNetworkLinesY"
63
- @toggle-adapters="onToggleAdapters"
64
- @select-adapter="onSelectAdapter"
65
- @show-modal="onShowModal"
66
- />
67
- <template v-if="!!props.networksWithPositions.length">
68
- <template
69
- v-for="network in props.networksWithPositions"
70
- :key="network.id"
71
- >
72
- <common-diagram-main-network
73
- :network="network"
74
- :selected-port="props.selectedPort"
75
- :selected-adapter="props.selectedAdapter"
76
- :selected-network="props.selectedNetwork"
77
- :selected-main-line="props.selectedMainLine"
78
- :diagram-id="props.diagramData.id"
79
- :in-portlet="props.inPortlet"
80
- :is-visible-line="hasActiveAdapter"
81
- :is-dark-mode="props.isDarkMode"
82
- :first-and-last-network-lines-y="firstAndLastNetworkLinesY"
83
- :adapter-line-y="
84
- props.adaptersWithPositions.adaptersConnectLineY
85
- "
86
- :adapters-positions-y="adaptersPositionsY"
87
- @toggle-ports="onTogglePorts"
88
- @select-port="onSelectPort"
89
- @select-network="onSelectNetwork"
90
- @show-modal="onShowModal"
91
- />
92
- </template>
93
- </template>
94
- <template v-else>
95
- <common-diagram-main-network-no-network />
96
- </template>
97
- <common-diagram-main-switch-selected
98
- :selected-switch-line-y="props.selectedSwitchLineY"
99
- :is-visible-line="hasActiveAdapter && isSelectedLinkedWithAdapter"
100
- :adapters-positions-y="adaptersPositionsY"
101
- :adapter-line-y="props.adaptersWithPositions.adaptersConnectLineY"
102
- :is-highlighted-adapter-line="isHighlightedAdapterLine"
103
- :in-network-lines-y="inNetworkLinesY"
104
- />
105
- </svg>
106
- </div>
107
- </div>
108
- </div>
109
- <div v-if="isNewView && props.isShowDiagram" class="virtual-switch-remove">
110
- <ui-button
111
- :test-id="`${props.diagramData.testId}-remove`"
112
- variant="text"
113
- type="error"
114
- is-without-sizes
115
- is-without-height
116
- v-permission="'Networks.RemoveSwitch'"
117
- @click="emits('show-modal', 'switch-remove')"
118
- >
119
- <span class="virtual-switch-remove-btn">
120
- <ui-icon name="delete" width="20" height="20" />
121
- {{ localization.common.remove }}
122
- </span>
123
- </ui-button>
124
- </div>
125
- </template>
126
-
127
- <script setup lang="ts">
128
- import type { UI_I_Localization } from '~/lib/models/interfaces'
129
- import type {
130
- UI_I_AdaptersWithPositions,
131
- UI_I_DiagramData,
132
- UI_I_ModalsInitialData,
133
- UI_I_NetworksWithPositions,
134
- UI_I_SelectedAdapter,
135
- UI_I_SelectedPort,
136
- UI_I_SwitchLine,
137
- UI_I_Network,
138
- } from '~/components/common/diagramMain/lib/models/interfaces'
139
- import type { UI_T_Project } from '~/lib/models/types'
140
- import { UI_E_PositionsY } from '~/components/common/diagramMain/lib/models/enums'
141
-
142
- const props = defineProps<{
143
- diagramData: UI_I_DiagramData
144
- isShowDiagram: boolean
145
- inPortlet: boolean
146
- networksWithPositions: UI_I_NetworksWithPositions[]
147
- mainRectHeight: number
148
- mainSwitchLine: UI_I_SwitchLine
149
- selectedMainLine: boolean
150
- adaptersWithPositions: UI_I_AdaptersWithPositions
151
- selectedPort: UI_I_SelectedPort
152
- selectedAdapter: UI_I_SelectedAdapter
153
- selectedNetwork: string
154
- selectedSwitchLineY: UI_I_SwitchLine
155
- isDarkMode: boolean
156
- networksCount: number
157
- project: UI_T_Project
158
- }>()
159
-
160
- const emits = defineEmits<{
161
- (event: 'click-diagram', ev: MouseEvent): void
162
- (event: 'toggle-adapters'): void
163
- (event: 'select-adapter', adapterId: string): void
164
- (
165
- event: 'show-modal',
166
- value: string,
167
- properties?: UI_I_ModalsInitialData
168
- ): void
169
- (
170
- event: 'toggle-ports',
171
- id: string,
172
- newState: boolean,
173
- diagramId: string
174
- ): void
175
- (event: 'select-port', networkId: string, portId: string): void
176
- (event: 'select-network', networkId: string): void
177
- (event: 'toggle-diagram'): void
178
- }>()
179
-
180
- const { $store }: any = useNuxtApp()
181
-
182
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
183
-
184
- const localization = computed<UI_I_Localization>(() => useLocal())
185
-
186
- const inNetworkLinesY = computed(() => {
187
- const linesY = []
188
- props.networksWithPositions.forEach((net, index) => {
189
- ;(!!props.selectedAdapter.connectedPorts.find(
190
- (net2) => net2.networkId === net.id && net2.ports.length === 0
191
- ) ||
192
- props.selectedNetwork === net.id) &&
193
- linesY.push(net.connectLineY)
194
-
195
- net.toggle
196
- ? net.ports.forEach((port) => {
197
- ;((props.selectedPort.portId === port.id &&
198
- props.selectedPort.networkId === net.id &&
199
- net.activeAdapters.length > 0) ||
200
- !!props.selectedAdapter.connectedPorts.find(
201
- (net2) =>
202
- net2.networkId === net.id && net2.ports.includes(port.id)
203
- )) &&
204
- linesY.push(port.portPosition + 7.5)
205
- })
206
- : !!props.selectedAdapter.connectedPorts.find(
207
- (net2) => net2.networkId === net.id && net2.ports.length !== 0
208
- ) && linesY.push(net.portsPosition + 7.5)
209
- })
210
-
211
- return linesY.sort((a, b) => a - b)
212
- })
213
-
214
- const isOpenedAdapterBlockAndNoSelectedNetwork = computed<boolean>(
215
- () =>
216
- !props.adaptersWithPositions.toggle && props.selectedPort.networkId !== '-1'
217
- )
218
-
219
- const hasNoAdaptersAndNoSelectedNetwork = computed<boolean>(() => {
220
- return (
221
- props.adaptersWithPositions.adapters?.length === 0 &&
222
- props.selectedNetwork !== '-1'
223
- )
224
- })
225
-
226
- const isHighlightedOptimizePart = computed(
227
- () =>
228
- !props.selectedMainLine && !isOpenedAdapterBlockAndNoSelectedNetwork.value
229
- )
230
-
231
- const isHighlightedAdapterLine = computed<boolean>(
232
- () =>
233
- isSelectedLinkedWithAdapter.value &&
234
- !(
235
- isHighlightedOptimizePart.value &&
236
- !hasNoAdaptersAndNoSelectedNetwork.value
237
- )
238
- )
239
-
240
- const firstAndLastNetworkLinesY = computed(() => {
241
- const networkLinesY = props.networksWithPositions
242
- .filter((n) => n.activeAdapters.length > 0 && n.state.state !== 3)
243
- .map((n) => n.connectLineY)
244
- .sort((a, b) => a - b)
245
-
246
- return {
247
- firstNetworkY: networkLinesY[0],
248
- lastNetworkY: networkLinesY[networkLinesY.length - 1],
249
- }
250
- })
251
-
252
- const adaptersPositionsY = computed(() =>
253
- props.adaptersWithPositions.adapters.reduce((result, ad) => {
254
- let isAdapterActiveOnAnyNetwork = false
255
- props.networksWithPositions.forEach(
256
- (network: UI_I_NetworksWithPositions) =>
257
- network.activeAdapters.includes(props.selectedAdapter.adapterId) &&
258
- (isAdapterActiveOnAnyNetwork = true)
259
- )
260
-
261
- const isVisible =
262
- (props.selectedPort.activeAdapters.includes(ad.id) ||
263
- (props.selectedAdapter.adapterId === ad.id &&
264
- isAdapterActiveOnAnyNetwork)) &&
265
- !!props.networksCount
266
-
267
- if (isVisible) {
268
- return [...result, ad.adapterPosition]
269
- }
270
- return result
271
- }, [])
272
- )
273
-
274
- const svgClasses = computed(() => [
275
- 'diagram-svg',
276
- {
277
- 'diagram-portlet': !props.inPortlet,
278
- },
279
- ])
280
-
281
- const preserveAspectRatio = computed<string | undefined>(() =>
282
- props.inPortlet ? 'xMinYMin' : undefined
283
- )
284
-
285
- const svgHeight = computed<number>(
286
- () =>
287
- UI_E_PositionsY.DIAGRAM_TOP +
288
- props.mainRectHeight +
289
- UI_E_PositionsY.DIAGRAM_BOTTOM
290
- )
291
-
292
- const viewBox = computed<string>(() =>
293
- props.inPortlet ? '0 0 725 1' : `0 0 725 ${svgHeight.value}`
294
- )
295
-
296
- const diagramHeight = computed<number>(() =>
297
- props.inPortlet ? svgHeight.value / 1.28 : svgHeight.value
298
- )
299
-
300
- const diagramWidth = computed<number>(() => (props.inPortlet ? 560 : 725))
301
-
302
- const hasActiveAdapter = computed<boolean>(() => {
303
- let flag = false
304
- props.diagramData?.networks.forEach(
305
- (network: UI_I_Network) =>
306
- network.activeAdapters.length > 0 && (flag = true)
307
- )
308
- return flag
309
- })
310
-
311
- const isSelectedLinkedWithAdapter = computed<boolean>(() => {
312
- if (props.selectedNetwork && props.selectedNetwork !== '-1') {
313
- const selectedNetworkData = props.networksWithPositions.find(
314
- (network: UI_I_NetworksWithPositions) =>
315
- network.id === props.selectedNetwork
316
- )
317
-
318
- if (!selectedNetworkData) return false
319
-
320
- return (
321
- selectedNetworkData.activeAdapters.length > 0 &&
322
- selectedNetworkData.state.state !== 3
323
- )
324
- }
325
-
326
- if (props.selectedPort.portId && props.selectedPort.portId !== '-1') {
327
- const selectedNetworkData = props.networksWithPositions.find(
328
- (network: UI_I_NetworksWithPositions) =>
329
- network.id === props.selectedPort.networkId
330
- )
331
-
332
- if (!selectedNetworkData) return false
333
-
334
- return (
335
- selectedNetworkData.activeAdapters.length > 0 &&
336
- selectedNetworkData.state.state !== 3
337
- )
338
- }
339
-
340
- if (props.selectedAdapter.adapterId !== '-1' || props.selectedMainLine)
341
- return true
342
-
343
- return false
344
- })
345
-
346
- const onClickDiagram = (ev: MouseEvent) => emits('click-diagram', ev)
347
- const onToggleAdapters = () => emits('toggle-adapters')
348
- const onSelectAdapter = (adapterId: string) =>
349
- emits('select-adapter', adapterId)
350
- const onShowModal = (value: string, properties?: UI_I_ModalsInitialData) =>
351
- emits('show-modal', value, properties)
352
- const onTogglePorts = (
353
- id: string,
354
- isToggle: boolean,
355
- diagramId: string
356
- ): void => {
357
- emits('toggle-ports', id, isToggle, diagramId)
358
- }
359
- const onSelectPort = (networkId: string, portId: string): void => {
360
- emits('select-port', networkId, portId)
361
- }
362
- const onSelectNetwork = (networkId: string): void => {
363
- emits('select-network', networkId)
364
- }
365
- </script>
366
-
367
- <style scoped lang="scss">
368
- .diagram {
369
- &-container {
370
- //display: flex;
371
- //justify-content: center;
372
- .diagram-second-container {
373
- display: flex;
374
- justify-content: center;
375
- min-width: 725px;
376
- }
377
-
378
- &.diagram-in-portlet {
379
- .diagram-second-container {
380
- min-width: 560px;
381
- }
382
- }
383
-
384
- .diagram-portlet {
385
- margin-top: 10px;
386
- }
387
- }
388
- }
389
-
390
- .diagram {
391
- &-container-new:not(.diagram-in-portlet) {
392
- .diagrams.is-show-diagram {
393
- margin-top: 24px;
394
- }
395
-
396
- .diagram-second-container {
397
- overflow-x: auto;
398
- display: flex;
399
- justify-content: center;
400
- min-width: 760px;
401
-
402
- &.diagram-in-portlet {
403
- .diagram-second-container {
404
- min-width: 560px;
405
- }
406
- }
407
-
408
- .diagram-svg {
409
- margin: 22.5px 17.5px;
410
- }
411
- }
412
- }
413
- &-container-new.diagram-in-portlet {
414
- .diagram-portlet {
415
- margin-top: 10px;
416
- }
417
- }
418
- }
419
-
420
- .diagrams {
421
- overflow-y: auto;
422
- }
423
-
424
- .virtual-switch-remove {
425
- padding: 16px 0 0;
426
- display: flex;
427
- justify-content: flex-end;
428
-
429
- &-btn {
430
- height: 20px;
431
- font-weight: 500;
432
- font-size: 14px;
433
- line-height: 17px;
434
- letter-spacing: 0;
435
- display: flex;
436
- align-items: center;
437
- column-gap: 8px;
438
- color: var(--text-red)
439
-
440
- }
441
- }
442
- </style>
443
- <style lang="scss">
444
- .diagram-actions__popup.navbar-dropdown-menu {
445
- transform: translate(-30px, -20px);
446
-
447
- .btn {
448
- border-radius: 0;
449
- border-bottom: 1px solid transparent;
450
-
451
- span {
452
- font-size: 14px;
453
- }
454
- &:active {
455
- box-shadow: none;
456
- }
457
- }
458
- }
459
- </style>
1
+ <template>
2
+ <div
3
+ :class="{
4
+ 'diagram-container-new': isNewView,
5
+ 'diagram-container': !isNewView,
6
+ 'diagram-in-portlet': props.inPortlet,
7
+ }"
8
+ >
9
+ <common-diagram-main-header
10
+ v-if="!props.inPortlet"
11
+ :project="props.project"
12
+ :is-show-diagram="props.isShowDiagram"
13
+ :diagram-name="props.diagramData.diagramName"
14
+ :test-id="props.diagramData.testId"
15
+ @toggle-diagram="emits('toggle-diagram')"
16
+ @show-modal="onShowModal"
17
+ />
18
+
19
+ <div
20
+ :class="[
21
+ 'diagrams',
22
+ {
23
+ 'is-show-diagram': props.isShowDiagram,
24
+ },
25
+ ]"
26
+ >
27
+ <div class="diagram-second-container">
28
+ <svg
29
+ v-if="props.diagramData && props.isShowDiagram"
30
+ xmlns="http://www.w3.org/2000/svg"
31
+ :height="diagramHeight"
32
+ :width="diagramWidth"
33
+ :viewBox="viewBox"
34
+ :preserveAspectRatio="preserveAspectRatio"
35
+ :class="svgClasses"
36
+ @click.capture="onClickDiagram"
37
+ >
38
+ <common-diagram-main-switch
39
+ :networks-count="props.networksCount"
40
+ :main-rect-height="props.mainRectHeight"
41
+ :main-switch-line="props.mainSwitchLine"
42
+ :selected-main-line="props.selectedMainLine"
43
+ :is-visible-line="hasActiveAdapter"
44
+ :is-selected-linked-with-adapter="isSelectedLinkedWithAdapter"
45
+ :adapter-line-y="props.adaptersWithPositions.adaptersConnectLineY"
46
+ :first-and-last-network-lines-y="firstAndLastNetworkLinesY"
47
+ :networks-with-positions="props.networksWithPositions"
48
+ />
49
+ <common-diagram-main-adapter
50
+ :networks-count="props.networksCount"
51
+ :adapters-with-positions="props.adaptersWithPositions"
52
+ :selected-main-line="props.selectedMainLine"
53
+ :selected-port="props.selectedPort"
54
+ :selected-adapter="props.selectedAdapter"
55
+ :selected-network="props.selectedNetwork"
56
+ :is-visible-line="hasActiveAdapter"
57
+ :is-dark-mode="props.isDarkMode"
58
+ :test-id="props.diagramData.testId"
59
+ :is-selected-linked-with-adapter="isSelectedLinkedWithAdapter"
60
+ :networks-with-positions="props.networksWithPositions"
61
+ :first-and-last-network-lines-y="firstAndLastNetworkLinesY"
62
+ :in-network-lines-y="inNetworkLinesY"
63
+ @toggle-adapters="onToggleAdapters"
64
+ @select-adapter="onSelectAdapter"
65
+ @show-modal="onShowModal"
66
+ />
67
+ <template v-if="!!props.networksWithPositions.length">
68
+ <template
69
+ v-for="network in props.networksWithPositions"
70
+ :key="network.id"
71
+ >
72
+ <common-diagram-main-network
73
+ :network="network"
74
+ :selected-port="props.selectedPort"
75
+ :selected-adapter="props.selectedAdapter"
76
+ :selected-network="props.selectedNetwork"
77
+ :selected-main-line="props.selectedMainLine"
78
+ :diagram-id="props.diagramData.id"
79
+ :in-portlet="props.inPortlet"
80
+ :is-visible-line="hasActiveAdapter"
81
+ :is-dark-mode="props.isDarkMode"
82
+ :first-and-last-network-lines-y="firstAndLastNetworkLinesY"
83
+ :adapter-line-y="
84
+ props.adaptersWithPositions.adaptersConnectLineY
85
+ "
86
+ :adapters-positions-y="adaptersPositionsY"
87
+ @toggle-ports="onTogglePorts"
88
+ @select-port="onSelectPort"
89
+ @select-network="onSelectNetwork"
90
+ @show-modal="onShowModal"
91
+ />
92
+ </template>
93
+ </template>
94
+ <template v-else>
95
+ <common-diagram-main-network-no-network />
96
+ </template>
97
+ <common-diagram-main-switch-selected
98
+ :selected-switch-line-y="props.selectedSwitchLineY"
99
+ :is-visible-line="hasActiveAdapter && isSelectedLinkedWithAdapter"
100
+ :adapters-positions-y="adaptersPositionsY"
101
+ :adapter-line-y="props.adaptersWithPositions.adaptersConnectLineY"
102
+ :is-highlighted-adapter-line="isHighlightedAdapterLine"
103
+ :in-network-lines-y="inNetworkLinesY"
104
+ />
105
+ </svg>
106
+ </div>
107
+ </div>
108
+ </div>
109
+ <div v-if="isNewView && props.isShowDiagram" class="virtual-switch-remove">
110
+ <ui-button
111
+ :test-id="`${props.diagramData.testId}-remove`"
112
+ variant="text"
113
+ type="error"
114
+ is-without-sizes
115
+ is-without-height
116
+ v-permission="'Networks.RemoveSwitch'"
117
+ @click="emits('show-modal', 'switch-remove')"
118
+ >
119
+ <span class="virtual-switch-remove-btn">
120
+ <ui-icon name="delete" width="20" height="20" />
121
+ {{ localization.common.remove }}
122
+ </span>
123
+ </ui-button>
124
+ </div>
125
+ </template>
126
+
127
+ <script setup lang="ts">
128
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
129
+ import type {
130
+ UI_I_AdaptersWithPositions,
131
+ UI_I_DiagramData,
132
+ UI_I_ModalsInitialData,
133
+ UI_I_NetworksWithPositions,
134
+ UI_I_SelectedAdapter,
135
+ UI_I_SelectedPort,
136
+ UI_I_SwitchLine,
137
+ UI_I_Network,
138
+ } from '~/components/common/diagramMain/lib/models/interfaces'
139
+ import type { UI_T_Project } from '~/lib/models/types'
140
+ import { UI_E_PositionsY } from '~/components/common/diagramMain/lib/models/enums'
141
+
142
+ const props = defineProps<{
143
+ diagramData: UI_I_DiagramData
144
+ isShowDiagram: boolean
145
+ inPortlet: boolean
146
+ networksWithPositions: UI_I_NetworksWithPositions[]
147
+ mainRectHeight: number
148
+ mainSwitchLine: UI_I_SwitchLine
149
+ selectedMainLine: boolean
150
+ adaptersWithPositions: UI_I_AdaptersWithPositions
151
+ selectedPort: UI_I_SelectedPort
152
+ selectedAdapter: UI_I_SelectedAdapter
153
+ selectedNetwork: string
154
+ selectedSwitchLineY: UI_I_SwitchLine
155
+ isDarkMode: boolean
156
+ networksCount: number
157
+ project: UI_T_Project
158
+ }>()
159
+
160
+ const emits = defineEmits<{
161
+ (event: 'click-diagram', ev: MouseEvent): void
162
+ (event: 'toggle-adapters'): void
163
+ (event: 'select-adapter', adapterId: string): void
164
+ (
165
+ event: 'show-modal',
166
+ value: string,
167
+ properties?: UI_I_ModalsInitialData
168
+ ): void
169
+ (
170
+ event: 'toggle-ports',
171
+ id: string,
172
+ newState: boolean,
173
+ diagramId: string
174
+ ): void
175
+ (event: 'select-port', networkId: string, portId: string): void
176
+ (event: 'select-network', networkId: string): void
177
+ (event: 'toggle-diagram'): void
178
+ }>()
179
+
180
+ const { $store }: any = useNuxtApp()
181
+
182
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
183
+
184
+ const localization = computed<UI_I_Localization>(() => useLocal())
185
+
186
+ const inNetworkLinesY = computed(() => {
187
+ const linesY = []
188
+ props.networksWithPositions.forEach((net, index) => {
189
+ ;(!!props.selectedAdapter.connectedPorts.find(
190
+ (net2) => net2.networkId === net.id && net2.ports.length === 0
191
+ ) ||
192
+ props.selectedNetwork === net.id) &&
193
+ linesY.push(net.connectLineY)
194
+
195
+ net.toggle
196
+ ? net.ports.forEach((port) => {
197
+ ;((props.selectedPort.portId === port.id &&
198
+ props.selectedPort.networkId === net.id &&
199
+ net.activeAdapters.length > 0) ||
200
+ !!props.selectedAdapter.connectedPorts.find(
201
+ (net2) =>
202
+ net2.networkId === net.id && net2.ports.includes(port.id)
203
+ )) &&
204
+ linesY.push(port.portPosition + 7.5)
205
+ })
206
+ : !!props.selectedAdapter.connectedPorts.find(
207
+ (net2) => net2.networkId === net.id && net2.ports.length !== 0
208
+ ) && linesY.push(net.portsPosition + 7.5)
209
+ })
210
+
211
+ return linesY.sort((a, b) => a - b)
212
+ })
213
+
214
+ const isOpenedAdapterBlockAndNoSelectedNetwork = computed<boolean>(
215
+ () =>
216
+ !props.adaptersWithPositions.toggle && props.selectedPort.networkId !== '-1'
217
+ )
218
+
219
+ const hasNoAdaptersAndNoSelectedNetwork = computed<boolean>(() => {
220
+ return (
221
+ props.adaptersWithPositions.adapters?.length === 0 &&
222
+ props.selectedNetwork !== '-1'
223
+ )
224
+ })
225
+
226
+ const isHighlightedOptimizePart = computed(
227
+ () =>
228
+ !props.selectedMainLine && !isOpenedAdapterBlockAndNoSelectedNetwork.value
229
+ )
230
+
231
+ const isHighlightedAdapterLine = computed<boolean>(
232
+ () =>
233
+ isSelectedLinkedWithAdapter.value &&
234
+ !(
235
+ isHighlightedOptimizePart.value &&
236
+ !hasNoAdaptersAndNoSelectedNetwork.value
237
+ )
238
+ )
239
+
240
+ const firstAndLastNetworkLinesY = computed(() => {
241
+ const networkLinesY = props.networksWithPositions
242
+ .filter((n) => n.activeAdapters.length > 0 && n.state.state !== 3)
243
+ .map((n) => n.connectLineY)
244
+ .sort((a, b) => a - b)
245
+
246
+ return {
247
+ firstNetworkY: networkLinesY[0],
248
+ lastNetworkY: networkLinesY[networkLinesY.length - 1],
249
+ }
250
+ })
251
+
252
+ const adaptersPositionsY = computed(() =>
253
+ props.adaptersWithPositions.adapters.reduce((result, ad) => {
254
+ let isAdapterActiveOnAnyNetwork = false
255
+ props.networksWithPositions.forEach(
256
+ (network: UI_I_NetworksWithPositions) =>
257
+ network.activeAdapters.includes(props.selectedAdapter.adapterId) &&
258
+ (isAdapterActiveOnAnyNetwork = true)
259
+ )
260
+
261
+ const isVisible =
262
+ (props.selectedPort.activeAdapters.includes(ad.id) ||
263
+ (props.selectedAdapter.adapterId === ad.id &&
264
+ isAdapterActiveOnAnyNetwork)) &&
265
+ !!props.networksCount
266
+
267
+ if (isVisible) {
268
+ return [...result, ad.adapterPosition]
269
+ }
270
+ return result
271
+ }, [])
272
+ )
273
+
274
+ const svgClasses = computed(() => [
275
+ 'diagram-svg',
276
+ {
277
+ 'diagram-portlet': !props.inPortlet,
278
+ },
279
+ ])
280
+
281
+ const preserveAspectRatio = computed<string | undefined>(() =>
282
+ props.inPortlet ? 'xMinYMin' : undefined
283
+ )
284
+
285
+ const svgHeight = computed<number>(
286
+ () =>
287
+ UI_E_PositionsY.DIAGRAM_TOP +
288
+ props.mainRectHeight +
289
+ UI_E_PositionsY.DIAGRAM_BOTTOM
290
+ )
291
+
292
+ const viewBox = computed<string>(() =>
293
+ props.inPortlet ? '0 0 725 1' : `0 0 725 ${svgHeight.value}`
294
+ )
295
+
296
+ const diagramHeight = computed<number>(() =>
297
+ props.inPortlet ? svgHeight.value / 1.28 : svgHeight.value
298
+ )
299
+
300
+ const diagramWidth = computed<number>(() => (props.inPortlet ? 560 : 725))
301
+
302
+ const hasActiveAdapter = computed<boolean>(() => {
303
+ let flag = false
304
+ props.diagramData?.networks.forEach(
305
+ (network: UI_I_Network) =>
306
+ network.activeAdapters.length > 0 && (flag = true)
307
+ )
308
+ return flag
309
+ })
310
+
311
+ const isSelectedLinkedWithAdapter = computed<boolean>(() => {
312
+ if (props.selectedNetwork && props.selectedNetwork !== '-1') {
313
+ const selectedNetworkData = props.networksWithPositions.find(
314
+ (network: UI_I_NetworksWithPositions) =>
315
+ network.id === props.selectedNetwork
316
+ )
317
+
318
+ if (!selectedNetworkData) return false
319
+
320
+ return (
321
+ selectedNetworkData.activeAdapters.length > 0 &&
322
+ selectedNetworkData.state.state !== 3
323
+ )
324
+ }
325
+
326
+ if (props.selectedPort.portId && props.selectedPort.portId !== '-1') {
327
+ const selectedNetworkData = props.networksWithPositions.find(
328
+ (network: UI_I_NetworksWithPositions) =>
329
+ network.id === props.selectedPort.networkId
330
+ )
331
+
332
+ if (!selectedNetworkData) return false
333
+
334
+ return (
335
+ selectedNetworkData.activeAdapters.length > 0 &&
336
+ selectedNetworkData.state.state !== 3
337
+ )
338
+ }
339
+
340
+ if (props.selectedAdapter.adapterId !== '-1' || props.selectedMainLine)
341
+ return true
342
+
343
+ return false
344
+ })
345
+
346
+ const onClickDiagram = (ev: MouseEvent) => emits('click-diagram', ev)
347
+ const onToggleAdapters = () => emits('toggle-adapters')
348
+ const onSelectAdapter = (adapterId: string) =>
349
+ emits('select-adapter', adapterId)
350
+ const onShowModal = (value: string, properties?: UI_I_ModalsInitialData) =>
351
+ emits('show-modal', value, properties)
352
+ const onTogglePorts = (
353
+ id: string,
354
+ isToggle: boolean,
355
+ diagramId: string
356
+ ): void => {
357
+ emits('toggle-ports', id, isToggle, diagramId)
358
+ }
359
+ const onSelectPort = (networkId: string, portId: string): void => {
360
+ emits('select-port', networkId, portId)
361
+ }
362
+ const onSelectNetwork = (networkId: string): void => {
363
+ emits('select-network', networkId)
364
+ }
365
+ </script>
366
+
367
+ <style scoped lang="scss">
368
+ .diagram {
369
+ &-container {
370
+ //display: flex;
371
+ //justify-content: center;
372
+ .diagram-second-container {
373
+ display: flex;
374
+ justify-content: center;
375
+ min-width: 725px;
376
+ }
377
+
378
+ &.diagram-in-portlet {
379
+ .diagram-second-container {
380
+ min-width: 560px;
381
+ }
382
+ }
383
+
384
+ .diagram-portlet {
385
+ margin-top: 10px;
386
+ }
387
+ }
388
+ }
389
+
390
+ .diagram {
391
+ &-container-new:not(.diagram-in-portlet) {
392
+ .diagrams.is-show-diagram {
393
+ margin-top: 24px;
394
+ }
395
+
396
+ .diagram-second-container {
397
+ overflow-x: auto;
398
+ display: flex;
399
+ justify-content: center;
400
+ min-width: 760px;
401
+
402
+ &.diagram-in-portlet {
403
+ .diagram-second-container {
404
+ min-width: 560px;
405
+ }
406
+ }
407
+
408
+ .diagram-svg {
409
+ margin: 22.5px 17.5px;
410
+ }
411
+ }
412
+ }
413
+ &-container-new.diagram-in-portlet {
414
+ .diagram-portlet {
415
+ margin-top: 10px;
416
+ }
417
+ }
418
+ }
419
+
420
+ .diagrams {
421
+ overflow-y: auto;
422
+ }
423
+
424
+ .virtual-switch-remove {
425
+ padding: 16px 0 0;
426
+ display: flex;
427
+ justify-content: flex-end;
428
+
429
+ &-btn {
430
+ height: 20px;
431
+ font-weight: 500;
432
+ font-size: 14px;
433
+ line-height: 17px;
434
+ letter-spacing: 0;
435
+ display: flex;
436
+ align-items: center;
437
+ column-gap: 8px;
438
+ color: var(--text-red)
439
+
440
+ }
441
+ }
442
+ </style>
443
+ <style lang="scss">
444
+ .diagram-actions__popup.navbar-dropdown-menu {
445
+ transform: translate(-30px, -20px);
446
+
447
+ .btn {
448
+ border-radius: 0;
449
+ border-bottom: 1px solid transparent;
450
+
451
+ span {
452
+ font-size: 14px;
453
+ }
454
+ &:active {
455
+ box-shadow: none;
456
+ }
457
+ }
458
+ }
459
+ </style>