bfg-common 1.5.323 → 1.5.326

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 (147) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  4. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  5. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  6. package/assets/localization/local_be.json +2 -0
  7. package/assets/localization/local_en.json +2 -0
  8. package/assets/localization/local_hy.json +2 -0
  9. package/assets/localization/local_kk.json +2 -0
  10. package/assets/localization/local_ru.json +2 -0
  11. package/assets/localization/local_zh.json +2 -0
  12. package/components/atoms/TheIcon3.vue +50 -50
  13. package/components/atoms/collapse/CollapseNav.vue +170 -170
  14. package/components/atoms/collapse/CollapseNavItem.vue +226 -226
  15. package/components/atoms/nav/NavBar.vue +147 -147
  16. package/components/atoms/perPage/PerPage.vue +58 -58
  17. package/components/atoms/table/dataGrid/DataGrid.vue +1717 -1717
  18. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  19. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  20. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  21. package/components/common/backup/storage/actions/add/lib/config/steps.ts +168 -168
  22. package/components/common/backup/storage/actions/add/steps/hostAccessibility/HostAccessibility.vue +52 -52
  23. package/components/common/backup/storage/actions/add/steps/readyComplete/ReadyComplete.vue +45 -45
  24. package/components/common/backup/storage/actions/delete/Delete.vue +65 -65
  25. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  26. package/components/common/context/lib/models/interfaces.ts +33 -33
  27. package/components/common/diagramMain/DiagramMain.vue +897 -897
  28. package/components/common/diagramMain/modals/lib/config/networkModal.ts +398 -398
  29. package/components/common/diagramMain/network/Network.vue +141 -141
  30. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  31. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  32. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  33. package/components/common/monitor/overview/filters/lib/config/filterOptions.ts +100 -100
  34. package/components/common/pages/home/headline/Headline.vue +45 -45
  35. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  36. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  37. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  38. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  39. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  40. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  41. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  42. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  43. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  44. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  45. package/components/common/pages/packages/Packages.vue +208 -208
  46. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  47. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  48. package/components/common/recursionTree/RecursionTree.vue +223 -223
  49. package/components/common/select/button/ButtonDropdown.vue +112 -112
  50. package/components/common/spiceConsole/Drawer.vue +377 -377
  51. package/components/common/spiceConsole/SpiceConsole.vue +127 -127
  52. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  53. package/components/common/tools/Actions.vue +207 -207
  54. package/components/common/vm/actions/add/New.vue +647 -642
  55. package/components/common/vm/actions/add/Old.vue +388 -385
  56. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  57. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  58. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  59. package/components/common/vm/actions/add/lib/config/steps.ts +22 -10
  60. package/components/common/vm/actions/clone/Clone.vue +823 -823
  61. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  62. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  63. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +3 -0
  64. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +2 -0
  65. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +2 -0
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +321 -321
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +227 -227
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/TooltipNew.vue +154 -154
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +307 -307
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +385 -385
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +85 -85
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCard.vue +154 -154
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +155 -152
  98. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +130 -128
  99. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsOld.vue +113 -111
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  101. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  102. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  103. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +95 -83
  104. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +2 -1
  105. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsOld.vue +155 -154
  106. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  107. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapOld.vue +44 -44
  108. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  109. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  110. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  111. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  112. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  113. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  114. package/components/common/vm/actions/common/select/createType/lib/config/items.ts +48 -48
  115. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  116. package/components/common/vm/actions/common/select/name/Name.vue +174 -174
  117. package/components/common/vm/actions/common/select/options/Options.vue +6 -1
  118. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  119. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  120. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  121. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  122. package/components/common/vm/actions/editSettings/EditSettings.vue +242 -239
  123. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +2 -0
  124. package/components/common/vm/actions/editSettings/new/New.vue +2 -0
  125. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  126. package/components/common/vmt/actions/add/Add.vue +641 -641
  127. package/components/common/vmt/actions/add/lib/config/steps.ts +107 -107
  128. package/components/common/vmt/actions/add/lib/models/interfaces.ts +23 -23
  129. package/components/common/wizards/network/add/steps/SelectConnectionType.vue +104 -104
  130. package/components/common/wizards/network/add/steps/SelectedTargetDevice.vue +467 -467
  131. package/components/common/wizards/vm/migrate/Migrate.vue +349 -349
  132. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  133. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  134. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  135. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  136. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  137. package/composables/productNameLocal.ts +30 -30
  138. package/composables/useAppVersion.ts +21 -21
  139. package/package.json +1 -1
  140. package/plugins/date.ts +233 -233
  141. package/plugins/panelStates.ts +70 -70
  142. package/plugins/text.ts +59 -59
  143. package/public/spice-console/lib/images/bitmap.js +203 -203
  144. package/public/spice-console/network/spicechannel.js +387 -387
  145. package/store/main/mutations.ts +7 -7
  146. package/store/main/state.ts +7 -7
  147. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,467 +1,467 @@
1
- <template>
2
- <div class="wizard-content-container add-networking-step">
3
- <div class="wizard-content">
4
- <atoms-alert
5
- v-if="props.alertMessages.length"
6
- :items="props.alertMessages"
7
- status="alert-danger"
8
- test-id="add-networking-selected-target-device"
9
- @remove="onHideAlert"
10
- />
11
- <form>
12
- <div v-show="props.connectionType === '0'">
13
- <div class="radio">
14
- <input
15
- id="existing-network"
16
- v-model="fields.selected"
17
- data-id="existing-network-radio"
18
- type="radio"
19
- value="0"
20
- name="target-device"
21
- />
22
- <label for="existing-network">
23
- {{ localization.common.selectExistingNetwork }}
24
- </label>
25
- </div>
26
- <fieldset
27
- :class="{
28
- disabled: fields.selected !== '0',
29
- }"
30
- >
31
- <div>
32
- <atoms-tooltip-error
33
- :has-error="
34
- fields.selected === '0' &&
35
- !!props.messagesFields.network.field
36
- "
37
- >
38
- <template #elem>
39
- <fieldset class="fieldset-block">
40
- <div>
41
- <input
42
- v-model="fields.network"
43
- :class="[
44
- 'tooltip-field show-arrow',
45
- {
46
- 'danger-not-valid':
47
- fields.selected === '0' &&
48
- props.messagesFields.network.field,
49
- },
50
- ]"
51
- data-id="network-input"
52
- type="text"
53
- disabled
54
- />
55
- <button
56
- type="button"
57
- class="btn btn-link"
58
- data-id="show-select-network-modal-button"
59
- @click="onShowModal('select-network')"
60
- >
61
- {{ localization.common.browseDoted }}
62
- </button>
63
- </div>
64
- </fieldset>
65
- </template>
66
- <template #content>
67
- {{ props.messagesFields.network.field }}
68
- </template>
69
- </atoms-tooltip-error>
70
- </div>
71
- </fieldset>
72
- </div>
73
-
74
- <div v-show="isConnectionTypeFirstTwo">
75
- <div class="radio">
76
- <input
77
- id="existing-standard-switch"
78
- v-model="fields.selected"
79
- data-id="existing-standard-switch-radio"
80
- type="radio"
81
- value="1"
82
- name="target-device"
83
- />
84
-
85
- <!-- :checked="isConnectionTypeFirstTwo"-->
86
- <label for="existing-standard-switch">
87
- {{ localization.common.selectExistingStandardSwitch }}
88
- </label>
89
- </div>
90
- <fieldset
91
- :class="{
92
- disabled: fields.selected !== '1',
93
- }"
94
- >
95
- <div>
96
- <atoms-tooltip-error
97
- :has-error="
98
- fields.selected === '1' && !!props.messagesFields.switch.field
99
- "
100
- >
101
- <template #elem>
102
- <fieldset class="fieldset-block">
103
- <div>
104
- <input
105
- v-model="fields.standardSwitch"
106
- :class="[
107
- 'tooltip-field show-arrow',
108
- {
109
- 'danger-not-valid':
110
- fields.selected === '1' &&
111
- props.messagesFields.switch.field,
112
- },
113
- ]"
114
- data-id="standard-switch-input"
115
- type="text"
116
- disabled
117
- />
118
- <button
119
- type="button"
120
- class="btn btn-link"
121
- data-id="show-select-standard-switch-button"
122
- @click="onShowModal('select-standard-switch')"
123
- >
124
- {{ localization.common.browseDoted }}
125
- </button>
126
- </div>
127
- </fieldset>
128
- </template>
129
- <template #content>
130
- {{ props.messagesFields.switch.field }}
131
- </template>
132
- </atoms-tooltip-error>
133
- </div>
134
- </fieldset>
135
- </div>
136
-
137
- <div v-show="props.connectionType === '2'">
138
- <div class="radio">
139
- <input
140
- id="existing-switch"
141
- v-model="fields.selected"
142
- data-id="existing-switch-radio"
143
- type="radio"
144
- value="2"
145
- name="target-device"
146
- />
147
- <!-- :checked="props.connectionType === '2'"-->
148
- <label for="existing-switch">
149
- {{ localization.common.selectExistingSwitch }}
150
- </label>
151
- </div>
152
- <fieldset
153
- :class="{
154
- disabled: fields.selected !== '2',
155
- }"
156
- >
157
- <div>
158
- <atoms-tooltip-error
159
- :has-error="
160
- fields.selected === '2' &&
161
- !!props.messagesFields.switch2.field
162
- "
163
- >
164
- <template #elem>
165
- <fieldset class="fieldset-block">
166
- <div>
167
- <input
168
- v-model="fields.switch"
169
- :class="[
170
- 'tooltip-field show-arrow',
171
- {
172
- 'danger-not-valid':
173
- fields.selected === '2' &&
174
- props.messagesFields.switch2.field,
175
- },
176
- ]"
177
- data-id="switch-input"
178
- type="text"
179
- disabled
180
- />
181
- <button
182
- type="button"
183
- data-id="show-select-switch-modal-button"
184
- class="btn btn-link"
185
- @click="onShowModal('select-switch')"
186
- >
187
- {{ localization.common.browseDoted }}
188
- </button>
189
- </div>
190
- </fieldset>
191
- </template>
192
- <template #content>
193
- {{ props.messagesFields.switch2.field }}
194
- </template>
195
- </atoms-tooltip-error>
196
- </div>
197
- </fieldset>
198
- </div>
199
-
200
- <div v-permission="'Networks.CreateSwitch'">
201
- <div class="radio">
202
- <input
203
- id="standard-switch"
204
- v-model="fields.selected"
205
- data-id="standard-switch-radio"
206
- type="radio"
207
- value="3"
208
- name="target-device"
209
- />
210
-
211
- <label for="standard-switch">
212
- {{ localization.common.newStandardSwitch }}
213
- </label>
214
- </div>
215
- <fieldset
216
- :class="{
217
- disabled: fields.selected !== '3',
218
- }"
219
- >
220
- <div class="horizontal-flex-container">
221
- <label class="property-label-group">
222
- {{ localization.common.mtuBytes }}
223
- </label>
224
- <div class="margin-left-property-value-group">
225
- <div class="property-value-group tooltip-field-container">
226
- <fieldset>
227
- <atoms-tooltip-error
228
- :has-error="
229
- !!props.messagesFields['new_switch.mtu'].field
230
- "
231
- >
232
- <template #elem>
233
- <input
234
- id="mtu"
235
- v-model="fields.mtu"
236
- :class="[
237
- 'tooltip-field show-arrow',
238
- {
239
- 'danger-not-valid':
240
- props.messagesFields['new_switch.mtu'].field,
241
- },
242
- ]"
243
- data-id="mtu-input"
244
- type="number"
245
- name="mtu"
246
- @click.stop
247
- />
248
- </template>
249
- <template #content>
250
- {{ props.messagesFields['new_switch.mtu'].field }}
251
- </template>
252
- </atoms-tooltip-error>
253
- </fieldset>
254
- </div>
255
- </div>
256
- </div>
257
- </fieldset>
258
- </div>
259
- </form>
260
- </div>
261
- </div>
262
- <teleport to="body">
263
- <common-wizards-network-add-modals-select-standard-switch
264
- modal-name="select-standard-switch-modal"
265
- view-name="select-standard-switch"
266
- width="576px"
267
- height="468px"
268
- :title="localization.common.selectSwitch"
269
- :standard-switches-initial="props.standardSwitchesInitial"
270
- :show="isShowStandardSwitchModal"
271
- @select-standard-switch="onSelectStandardSwitch"
272
- @hide="onHideStandardSwitchModal"
273
- />
274
- <common-wizards-network-add-modals-select-switch
275
- modal-name="select-switch-modal"
276
- view-name="select-switch"
277
- width="576px"
278
- height="468px"
279
- :title="localization.common.selectSwitch"
280
- :data="props.standardSwitchesInitial"
281
- :show="isShowSwitchModal"
282
- @select-switch="onSelectSwitch"
283
- @hide="onHideSwitchModal"
284
- />
285
- <common-wizards-network-add-modals-select-network
286
- modal-name="select-network-modal"
287
- view-name="select-network"
288
- width="576px"
289
- height="468px"
290
- :title="localization.common.selectNetwork"
291
- :data="[]"
292
- :show="isShowNetworkModal"
293
- @select-network="onSelectNetwork"
294
- @hide="onHideNetworkModal"
295
- />
296
- </teleport>
297
- </template>
298
-
299
- <script setup lang="ts">
300
- import type {
301
- UI_I_ArbitraryObject,
302
- UI_I_Localization,
303
- } from '~/lib/models/interfaces'
304
- import type {
305
- UI_I_TargetDevice,
306
- UI_I_Switch,
307
- } from '~/components/common/wizards/network/add/lib/models/interfaces'
308
- import type { UI_I_ErrorFields } from '~/components/atoms/wizard/lib/models/interfaces'
309
- import type Wizard from '~/components/atoms/wizard/lib/utils/utils'
310
- import { validateMtuTargetDeviceLocal } from '~/components/common/wizards/network/add/validations/validations'
311
-
312
- const props = withDefaults(
313
- defineProps<{
314
- targetDevice: UI_I_TargetDevice
315
- connectionType: string
316
- standardSwitchesInitial: UI_I_Switch[]
317
- alertMessages: string[]
318
- messagesFields: UI_I_ArbitraryObject<UI_I_ErrorFields>
319
- wizard: Wizard
320
- selectedStandardSwitchId?: string
321
- selectedSwitchId?: string
322
- }>(),
323
- {
324
- selectedStandardSwitchId: '',
325
- selectedSwitchId: '',
326
- }
327
- )
328
-
329
- const localization = computed<UI_I_Localization>(() => useLocal())
330
-
331
- const emits = defineEmits<{
332
- (event: 'change-target-device', targetDevice: UI_I_TargetDevice): void
333
- (event: 'hide-alert', stepId: 1): void
334
- }>()
335
-
336
- const isConnectionTypeFirstTwo = computed<boolean>(() =>
337
- ['0', '1'].includes(props.connectionType)
338
- )
339
-
340
- const fields = ref<UI_I_TargetDevice>(useDeepCopy(props.targetDevice))
341
-
342
- let prevMtu = fields.value.mtu
343
-
344
- watch(
345
- fields,
346
- (newFields: UI_I_TargetDevice) => {
347
- newFields.mtu !== prevMtu &&
348
- validateMtuTargetDeviceLocal(localization.value, newFields, props.wizard)
349
-
350
- prevMtu = newFields.mtu
351
-
352
- emits('change-target-device', newFields)
353
- },
354
- { deep: true }
355
- )
356
-
357
- // The switches selection modal hide and show functionality
358
- const isShowStandardSwitchModal = ref<boolean>(false)
359
- const onHideStandardSwitchModal = (): void => {
360
- isShowStandardSwitchModal.value = false
361
- }
362
- const isShowSwitchModal = ref<boolean>(false)
363
- const onHideSwitchModal = (): void => {
364
- isShowSwitchModal.value = false
365
- }
366
- const isShowNetworkModal = ref<boolean>(false)
367
- const onHideNetworkModal = (): void => {
368
- isShowNetworkModal.value = false
369
- }
370
-
371
- const onShowModal = (value: string): void => {
372
- switch (value) {
373
- case 'select-standard-switch':
374
- isShowStandardSwitchModal.value = true
375
- break
376
- case 'select-switch':
377
- isShowSwitchModal.value = true
378
- break
379
- case 'select-network':
380
- isShowNetworkModal.value = true
381
- break
382
- }
383
- }
384
-
385
- // Switches selection functionality
386
- const onSelectSwitch = (selectedSwitchId: string): void => {
387
- fields.value.switch = selectedSwitchId
388
- }
389
- const onSelectStandardSwitch = (selectedStandardSwitchId: string): void => {
390
- fields.value.standardSwitch = selectedStandardSwitchId
391
- }
392
- const onSelectNetwork = (_selectedNetworkId: string): void => {
393
- fields.value.network = ''
394
- }
395
-
396
- onMounted(() => {
397
- !fields.value.standardSwitch &&
398
- (fields.value.standardSwitch = props.selectedStandardSwitchId)
399
-
400
- !fields.value.switch && (fields.value.switch = props.selectedSwitchId)
401
- })
402
-
403
- const onHideAlert = (): void => {
404
- emits('hide-alert', 1)
405
- }
406
- </script>
407
-
408
- <style scoped lang="scss">
409
- .wizard-content-container {
410
- display: flex;
411
- flex-direction: column;
412
- align-items: stretch;
413
- flex: 1 1 100%;
414
- box-sizing: border-box;
415
- padding: 16px 15px 10px 10px;
416
- overflow-y: auto;
417
- color: #333;
418
- order: 2;
419
- width: 100%;
420
-
421
- .wizard-content {
422
- height: auto;
423
- width: inherit;
424
- margin: 0;
425
-
426
- fieldset {
427
- display: flex;
428
- flex-flow: column;
429
- padding-left: 23px;
430
-
431
- .fieldset-block {
432
- padding-left: 0;
433
- margin-right: 5px;
434
- }
435
-
436
- input[type='text'] {
437
- width: 390px;
438
-
439
- &:disabled {
440
- opacity: 0.5;
441
- cursor: not-allowed;
442
- }
443
- }
444
-
445
- button {
446
- text-transform: uppercase;
447
- }
448
- }
449
-
450
- .radio {
451
- min-height: 20px;
452
- margin: 10px 0;
453
-
454
- label {
455
- font-weight: 700;
456
- margin: 6px 12px 6px 0;
457
- }
458
- }
459
- }
460
- }
461
-
462
- :deep(.select-table-modal) {
463
- .table-top-margin-container {
464
- margin-top: 10px;
465
- }
466
- }
467
- </style>
1
+ <template>
2
+ <div class="wizard-content-container add-networking-step">
3
+ <div class="wizard-content">
4
+ <atoms-alert
5
+ v-if="props.alertMessages.length"
6
+ :items="props.alertMessages"
7
+ status="alert-danger"
8
+ test-id="add-networking-selected-target-device"
9
+ @remove="onHideAlert"
10
+ />
11
+ <form>
12
+ <div v-show="props.connectionType === '0'">
13
+ <div class="radio">
14
+ <input
15
+ id="existing-network"
16
+ v-model="fields.selected"
17
+ data-id="existing-network-radio"
18
+ type="radio"
19
+ value="0"
20
+ name="target-device"
21
+ />
22
+ <label for="existing-network">
23
+ {{ localization.common.selectExistingNetwork }}
24
+ </label>
25
+ </div>
26
+ <fieldset
27
+ :class="{
28
+ disabled: fields.selected !== '0',
29
+ }"
30
+ >
31
+ <div>
32
+ <atoms-tooltip-error
33
+ :has-error="
34
+ fields.selected === '0' &&
35
+ !!props.messagesFields.network.field
36
+ "
37
+ >
38
+ <template #elem>
39
+ <fieldset class="fieldset-block">
40
+ <div>
41
+ <input
42
+ v-model="fields.network"
43
+ :class="[
44
+ 'tooltip-field show-arrow',
45
+ {
46
+ 'danger-not-valid':
47
+ fields.selected === '0' &&
48
+ props.messagesFields.network.field,
49
+ },
50
+ ]"
51
+ data-id="network-input"
52
+ type="text"
53
+ disabled
54
+ />
55
+ <button
56
+ type="button"
57
+ class="btn btn-link"
58
+ data-id="show-select-network-modal-button"
59
+ @click="onShowModal('select-network')"
60
+ >
61
+ {{ localization.common.browseDoted }}
62
+ </button>
63
+ </div>
64
+ </fieldset>
65
+ </template>
66
+ <template #content>
67
+ {{ props.messagesFields.network.field }}
68
+ </template>
69
+ </atoms-tooltip-error>
70
+ </div>
71
+ </fieldset>
72
+ </div>
73
+
74
+ <div v-show="isConnectionTypeFirstTwo">
75
+ <div class="radio">
76
+ <input
77
+ id="existing-standard-switch"
78
+ v-model="fields.selected"
79
+ data-id="existing-standard-switch-radio"
80
+ type="radio"
81
+ value="1"
82
+ name="target-device"
83
+ />
84
+
85
+ <!-- :checked="isConnectionTypeFirstTwo"-->
86
+ <label for="existing-standard-switch">
87
+ {{ localization.common.selectExistingStandardSwitch }}
88
+ </label>
89
+ </div>
90
+ <fieldset
91
+ :class="{
92
+ disabled: fields.selected !== '1',
93
+ }"
94
+ >
95
+ <div>
96
+ <atoms-tooltip-error
97
+ :has-error="
98
+ fields.selected === '1' && !!props.messagesFields.switch.field
99
+ "
100
+ >
101
+ <template #elem>
102
+ <fieldset class="fieldset-block">
103
+ <div>
104
+ <input
105
+ v-model="fields.standardSwitch"
106
+ :class="[
107
+ 'tooltip-field show-arrow',
108
+ {
109
+ 'danger-not-valid':
110
+ fields.selected === '1' &&
111
+ props.messagesFields.switch.field,
112
+ },
113
+ ]"
114
+ data-id="standard-switch-input"
115
+ type="text"
116
+ disabled
117
+ />
118
+ <button
119
+ type="button"
120
+ class="btn btn-link"
121
+ data-id="show-select-standard-switch-button"
122
+ @click="onShowModal('select-standard-switch')"
123
+ >
124
+ {{ localization.common.browseDoted }}
125
+ </button>
126
+ </div>
127
+ </fieldset>
128
+ </template>
129
+ <template #content>
130
+ {{ props.messagesFields.switch.field }}
131
+ </template>
132
+ </atoms-tooltip-error>
133
+ </div>
134
+ </fieldset>
135
+ </div>
136
+
137
+ <div v-show="props.connectionType === '2'">
138
+ <div class="radio">
139
+ <input
140
+ id="existing-switch"
141
+ v-model="fields.selected"
142
+ data-id="existing-switch-radio"
143
+ type="radio"
144
+ value="2"
145
+ name="target-device"
146
+ />
147
+ <!-- :checked="props.connectionType === '2'"-->
148
+ <label for="existing-switch">
149
+ {{ localization.common.selectExistingSwitch }}
150
+ </label>
151
+ </div>
152
+ <fieldset
153
+ :class="{
154
+ disabled: fields.selected !== '2',
155
+ }"
156
+ >
157
+ <div>
158
+ <atoms-tooltip-error
159
+ :has-error="
160
+ fields.selected === '2' &&
161
+ !!props.messagesFields.switch2.field
162
+ "
163
+ >
164
+ <template #elem>
165
+ <fieldset class="fieldset-block">
166
+ <div>
167
+ <input
168
+ v-model="fields.switch"
169
+ :class="[
170
+ 'tooltip-field show-arrow',
171
+ {
172
+ 'danger-not-valid':
173
+ fields.selected === '2' &&
174
+ props.messagesFields.switch2.field,
175
+ },
176
+ ]"
177
+ data-id="switch-input"
178
+ type="text"
179
+ disabled
180
+ />
181
+ <button
182
+ type="button"
183
+ data-id="show-select-switch-modal-button"
184
+ class="btn btn-link"
185
+ @click="onShowModal('select-switch')"
186
+ >
187
+ {{ localization.common.browseDoted }}
188
+ </button>
189
+ </div>
190
+ </fieldset>
191
+ </template>
192
+ <template #content>
193
+ {{ props.messagesFields.switch2.field }}
194
+ </template>
195
+ </atoms-tooltip-error>
196
+ </div>
197
+ </fieldset>
198
+ </div>
199
+
200
+ <div v-permission="'Networks.CreateSwitch'">
201
+ <div class="radio">
202
+ <input
203
+ id="standard-switch"
204
+ v-model="fields.selected"
205
+ data-id="standard-switch-radio"
206
+ type="radio"
207
+ value="3"
208
+ name="target-device"
209
+ />
210
+
211
+ <label for="standard-switch">
212
+ {{ localization.common.newStandardSwitch }}
213
+ </label>
214
+ </div>
215
+ <fieldset
216
+ :class="{
217
+ disabled: fields.selected !== '3',
218
+ }"
219
+ >
220
+ <div class="horizontal-flex-container">
221
+ <label class="property-label-group">
222
+ {{ localization.common.mtuBytes }}
223
+ </label>
224
+ <div class="margin-left-property-value-group">
225
+ <div class="property-value-group tooltip-field-container">
226
+ <fieldset>
227
+ <atoms-tooltip-error
228
+ :has-error="
229
+ !!props.messagesFields['new_switch.mtu'].field
230
+ "
231
+ >
232
+ <template #elem>
233
+ <input
234
+ id="mtu"
235
+ v-model="fields.mtu"
236
+ :class="[
237
+ 'tooltip-field show-arrow',
238
+ {
239
+ 'danger-not-valid':
240
+ props.messagesFields['new_switch.mtu'].field,
241
+ },
242
+ ]"
243
+ data-id="mtu-input"
244
+ type="number"
245
+ name="mtu"
246
+ @click.stop
247
+ />
248
+ </template>
249
+ <template #content>
250
+ {{ props.messagesFields['new_switch.mtu'].field }}
251
+ </template>
252
+ </atoms-tooltip-error>
253
+ </fieldset>
254
+ </div>
255
+ </div>
256
+ </div>
257
+ </fieldset>
258
+ </div>
259
+ </form>
260
+ </div>
261
+ </div>
262
+ <teleport to="body">
263
+ <common-wizards-network-add-modals-select-standard-switch
264
+ modal-name="select-standard-switch-modal"
265
+ view-name="select-standard-switch"
266
+ width="576px"
267
+ height="468px"
268
+ :title="localization.common.selectSwitch"
269
+ :standard-switches-initial="props.standardSwitchesInitial"
270
+ :show="isShowStandardSwitchModal"
271
+ @select-standard-switch="onSelectStandardSwitch"
272
+ @hide="onHideStandardSwitchModal"
273
+ />
274
+ <common-wizards-network-add-modals-select-switch
275
+ modal-name="select-switch-modal"
276
+ view-name="select-switch"
277
+ width="576px"
278
+ height="468px"
279
+ :title="localization.common.selectSwitch"
280
+ :data="props.standardSwitchesInitial"
281
+ :show="isShowSwitchModal"
282
+ @select-switch="onSelectSwitch"
283
+ @hide="onHideSwitchModal"
284
+ />
285
+ <common-wizards-network-add-modals-select-network
286
+ modal-name="select-network-modal"
287
+ view-name="select-network"
288
+ width="576px"
289
+ height="468px"
290
+ :title="localization.common.selectNetwork"
291
+ :data="[]"
292
+ :show="isShowNetworkModal"
293
+ @select-network="onSelectNetwork"
294
+ @hide="onHideNetworkModal"
295
+ />
296
+ </teleport>
297
+ </template>
298
+
299
+ <script setup lang="ts">
300
+ import type {
301
+ UI_I_ArbitraryObject,
302
+ UI_I_Localization,
303
+ } from '~/lib/models/interfaces'
304
+ import type {
305
+ UI_I_TargetDevice,
306
+ UI_I_Switch,
307
+ } from '~/components/common/wizards/network/add/lib/models/interfaces'
308
+ import type { UI_I_ErrorFields } from '~/components/atoms/wizard/lib/models/interfaces'
309
+ import type Wizard from '~/components/atoms/wizard/lib/utils/utils'
310
+ import { validateMtuTargetDeviceLocal } from '~/components/common/wizards/network/add/validations/validations'
311
+
312
+ const props = withDefaults(
313
+ defineProps<{
314
+ targetDevice: UI_I_TargetDevice
315
+ connectionType: string
316
+ standardSwitchesInitial: UI_I_Switch[]
317
+ alertMessages: string[]
318
+ messagesFields: UI_I_ArbitraryObject<UI_I_ErrorFields>
319
+ wizard: Wizard
320
+ selectedStandardSwitchId?: string
321
+ selectedSwitchId?: string
322
+ }>(),
323
+ {
324
+ selectedStandardSwitchId: '',
325
+ selectedSwitchId: '',
326
+ }
327
+ )
328
+
329
+ const localization = computed<UI_I_Localization>(() => useLocal())
330
+
331
+ const emits = defineEmits<{
332
+ (event: 'change-target-device', targetDevice: UI_I_TargetDevice): void
333
+ (event: 'hide-alert', stepId: 1): void
334
+ }>()
335
+
336
+ const isConnectionTypeFirstTwo = computed<boolean>(() =>
337
+ ['0', '1'].includes(props.connectionType)
338
+ )
339
+
340
+ const fields = ref<UI_I_TargetDevice>(useDeepCopy(props.targetDevice))
341
+
342
+ let prevMtu = fields.value.mtu
343
+
344
+ watch(
345
+ fields,
346
+ (newFields: UI_I_TargetDevice) => {
347
+ newFields.mtu !== prevMtu &&
348
+ validateMtuTargetDeviceLocal(localization.value, newFields, props.wizard)
349
+
350
+ prevMtu = newFields.mtu
351
+
352
+ emits('change-target-device', newFields)
353
+ },
354
+ { deep: true }
355
+ )
356
+
357
+ // The switches selection modal hide and show functionality
358
+ const isShowStandardSwitchModal = ref<boolean>(false)
359
+ const onHideStandardSwitchModal = (): void => {
360
+ isShowStandardSwitchModal.value = false
361
+ }
362
+ const isShowSwitchModal = ref<boolean>(false)
363
+ const onHideSwitchModal = (): void => {
364
+ isShowSwitchModal.value = false
365
+ }
366
+ const isShowNetworkModal = ref<boolean>(false)
367
+ const onHideNetworkModal = (): void => {
368
+ isShowNetworkModal.value = false
369
+ }
370
+
371
+ const onShowModal = (value: string): void => {
372
+ switch (value) {
373
+ case 'select-standard-switch':
374
+ isShowStandardSwitchModal.value = true
375
+ break
376
+ case 'select-switch':
377
+ isShowSwitchModal.value = true
378
+ break
379
+ case 'select-network':
380
+ isShowNetworkModal.value = true
381
+ break
382
+ }
383
+ }
384
+
385
+ // Switches selection functionality
386
+ const onSelectSwitch = (selectedSwitchId: string): void => {
387
+ fields.value.switch = selectedSwitchId
388
+ }
389
+ const onSelectStandardSwitch = (selectedStandardSwitchId: string): void => {
390
+ fields.value.standardSwitch = selectedStandardSwitchId
391
+ }
392
+ const onSelectNetwork = (_selectedNetworkId: string): void => {
393
+ fields.value.network = ''
394
+ }
395
+
396
+ onMounted(() => {
397
+ !fields.value.standardSwitch &&
398
+ (fields.value.standardSwitch = props.selectedStandardSwitchId)
399
+
400
+ !fields.value.switch && (fields.value.switch = props.selectedSwitchId)
401
+ })
402
+
403
+ const onHideAlert = (): void => {
404
+ emits('hide-alert', 1)
405
+ }
406
+ </script>
407
+
408
+ <style scoped lang="scss">
409
+ .wizard-content-container {
410
+ display: flex;
411
+ flex-direction: column;
412
+ align-items: stretch;
413
+ flex: 1 1 100%;
414
+ box-sizing: border-box;
415
+ padding: 16px 15px 10px 10px;
416
+ overflow-y: auto;
417
+ color: #333;
418
+ order: 2;
419
+ width: 100%;
420
+
421
+ .wizard-content {
422
+ height: auto;
423
+ width: inherit;
424
+ margin: 0;
425
+
426
+ fieldset {
427
+ display: flex;
428
+ flex-flow: column;
429
+ padding-left: 23px;
430
+
431
+ .fieldset-block {
432
+ padding-left: 0;
433
+ margin-right: 5px;
434
+ }
435
+
436
+ input[type='text'] {
437
+ width: 390px;
438
+
439
+ &:disabled {
440
+ opacity: 0.5;
441
+ cursor: not-allowed;
442
+ }
443
+ }
444
+
445
+ button {
446
+ text-transform: uppercase;
447
+ }
448
+ }
449
+
450
+ .radio {
451
+ min-height: 20px;
452
+ margin: 10px 0;
453
+
454
+ label {
455
+ font-weight: 700;
456
+ margin: 6px 12px 6px 0;
457
+ }
458
+ }
459
+ }
460
+ }
461
+
462
+ :deep(.select-table-modal) {
463
+ .table-top-margin-container {
464
+ margin-top: 10px;
465
+ }
466
+ }
467
+ </style>