bfg-common 1.5.197 → 1.5.199

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 (157) 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 +5 -4
  7. package/assets/localization/local_en.json +5 -4
  8. package/assets/localization/local_hy.json +5 -4
  9. package/assets/localization/local_kk.json +5 -4
  10. package/assets/localization/local_ru.json +5 -4
  11. package/assets/localization/local_zh.json +5 -4
  12. package/components/atoms/TheIcon3.vue +50 -50
  13. package/components/atoms/dropdown/Portlet.vue +1 -1
  14. package/components/atoms/perPage/PerPage.vue +58 -58
  15. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  16. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  17. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  18. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  19. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  20. package/components/common/browse/lib/models/interfaces.ts +5 -5
  21. package/components/common/context/lib/models/interfaces.ts +31 -31
  22. package/components/common/context/recursion/RecursionNew.vue +238 -238
  23. package/components/common/diagramMain/DiagramMain.vue +897 -897
  24. package/components/common/diagramMain/Header.vue +214 -214
  25. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  26. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  27. package/components/common/diagramMain/lib/models/types.ts +21 -21
  28. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  29. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  30. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  31. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  32. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  33. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  34. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  35. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  36. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  37. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  38. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  39. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  40. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  41. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  42. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  43. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  44. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  45. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  46. package/components/common/diagramMain/port/Ports.vue +47 -47
  47. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  48. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  49. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  50. package/components/common/pages/home/headline/Headline.vue +45 -45
  51. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  52. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  53. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  54. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  55. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  56. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  57. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  58. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  59. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  60. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  61. package/components/common/pages/packages/Packages.vue +208 -208
  62. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  63. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  64. package/components/common/recursionTree/RecursionTree.vue +223 -223
  65. package/components/common/select/button/ButtonDropdown.vue +108 -108
  66. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  67. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  68. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  69. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  70. package/components/common/vm/actions/add/lib/config/steps.ts +263 -263
  71. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  72. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  73. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +337 -337
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +480 -480
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +17 -2
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +190 -190
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/model/ModelNew.vue +237 -237
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/TooltipNew.vue +154 -154
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +304 -288
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/MemoryNew.vue +154 -154
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +382 -375
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +289 -289
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +151 -151
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationNew.vue +73 -73
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +83 -83
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  100. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  102. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  103. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  104. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  105. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  106. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  107. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  108. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/inputDevices/InputDevicesNew.vue +40 -40
  112. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  113. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +106 -106
  114. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +81 -81
  115. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  116. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  117. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  118. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +67 -67
  119. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +149 -149
  120. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  121. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +31 -31
  122. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +31 -31
  123. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  124. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +128 -128
  125. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  126. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +39 -39
  127. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  128. package/components/common/vm/actions/common/lib/utils/capabilities.ts +52 -52
  129. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  130. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +134 -134
  131. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +44 -44
  132. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  133. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  134. package/components/common/vm/actions/common/select/createType/New.vue +84 -84
  135. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  136. package/components/common/vm/actions/common/select/name/Name.vue +167 -167
  137. package/components/common/vm/actions/common/select/os/New.vue +122 -122
  138. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  139. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  140. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  141. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  142. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  143. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  144. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  145. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  146. package/components/common/wizards/vm/migrate/select/computeResource/tableView/TableView.vue +137 -137
  147. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  148. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  149. package/composables/productNameLocal.ts +30 -30
  150. package/composables/useAppVersion.ts +21 -21
  151. package/package.json +2 -2
  152. package/plugins/date.ts +233 -233
  153. package/public/spice-console/lib/images/bitmap.js +203 -203
  154. package/public/spice-console/network/spicechannel.js +383 -383
  155. package/store/main/mutations.ts +7 -7
  156. package/store/main/state.ts +7 -7
  157. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,167 +1,167 @@
1
- <template>
2
- <common-vm-actions-common-select-name-new
3
- v-if="isNewView"
4
- v-model:vm-name="vmName"
5
- v-model:is-show-help="isShowHelp"
6
- :project="props.project"
7
- :errors="errors"
8
- :data-center="props.dataCenter"
9
- @remove-validation-errors="onRemoveValidationErrors"
10
- @select-node="onSelectNode"
11
- />
12
- <common-vm-actions-common-select-name-old
13
- v-else
14
- v-model:vm-name="vmName"
15
- v-model:is-show-help="isShowHelp"
16
- :project="props.project"
17
- :errors="errors"
18
- :data-center="props.dataCenter"
19
- @remove-validation-errors="onRemoveValidationErrors"
20
- @select-node="onSelectNode"
21
- />
22
- </template>
23
-
24
- <script setup lang="ts">
25
- // import { API_UI_I_Error } from '~/lib/models/store/interfaces'
26
- import type { UI_I_Localization } from '~/lib/models/interfaces'
27
- import type { UI_T_Project } from '~/lib/models/types'
28
- import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
29
-
30
- const props = defineProps<{
31
- nameFormSubmit: null | Function
32
- show: boolean
33
- project: UI_T_Project
34
- dataCenter?: UI_I_TreeNode // для сферы
35
- }>()
36
- const emits = defineEmits<{
37
- (event: 'submit', value: [string, UI_I_TreeNode | null]): void
38
- (event: 'loading', value: boolean): void
39
- (
40
- event: 'check-name',
41
- value: [[string, UI_I_TreeNode | null], (error: any) => void]
42
- ): void
43
- }>()
44
-
45
- const { $store }: any = useNuxtApp()
46
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
47
-
48
- const localization = computed<UI_I_Localization>(() => useLocal())
49
-
50
- const vmName = ref<string>('')
51
-
52
- const selectedNode = ref<UI_I_TreeNode | null>(null)
53
- const onSelectNode = (node: UI_I_TreeNode): void => {
54
- selectedNode.value = node
55
- }
56
-
57
- watch(
58
- () => props.nameFormSubmit,
59
- (newValue) => {
60
- newValue && submit(newValue)
61
- }
62
- )
63
-
64
- const isParentDatacenter = (node: UI_I_TreeNode | null): boolean => {
65
- if (!node) return false
66
-
67
- if (node.parent?.type === 'datacenter') return true
68
- if (node.parent?.type === 'folder') return isParentDatacenter(node.parent)
69
- return false
70
- }
71
- const submit = async (cb: Function): Promise<void> => {
72
- const name = vmName.value
73
-
74
- if (name !== '') {
75
- const isNameValid = await checkNameIsValid(name)
76
- if (!isNameValid) {
77
- cb(false)
78
- return
79
- }
80
- }
81
-
82
- if (props.project === 'sphere') {
83
- // const isDatacenterFolder = isParentDatacenter(selectedNode.value)
84
-
85
- if (
86
- // selectedNode.value?.type !== 'datacenter' &&
87
- // selectedNode.value?.type === 'folder' &&
88
- // !isDatacenterFolder
89
- // TODO рефакторинг, здесь сейчас проверяем является ли выбранный элемент датацентром или папкой(вм)
90
- ![3, 7].includes(selectedNode.value?.kind)
91
- ) {
92
- showValidationErrors([
93
- localization.value.common.enterValidLocationVirtualMachine,
94
- ])
95
- cb(false)
96
- return
97
- }
98
- }
99
-
100
- onRemoveValidationErrors()
101
- emits('submit', [name, selectedNode.value])
102
- cb(true)
103
- }
104
- const checkNameIsValid = async (name: string): Promise<boolean> => {
105
- emits('loading', true)
106
-
107
- return new Promise((resolve) => {
108
- emits('check-name', [
109
- [name, selectedNode.value],
110
- (error) => {
111
- emits('loading', false)
112
-
113
- const status = error?.statusCode || 200
114
- switch (status) {
115
- case 405: // Invalid kind
116
- showValidationErrors([
117
- localization.value.common.kindValidationDescription,
118
- ])
119
- resolve(false)
120
- break
121
- case 406: // Invalid name
122
- showValidationErrors([
123
- localization.value.common.vmNameValidationDescription,
124
- ])
125
- resolve(false)
126
- break
127
- case 409: // Name exist
128
- showValidationErrors([
129
- localization.value.common.vmNameExistInSelectedLocation,
130
- ])
131
- resolve(false)
132
- break
133
- }
134
-
135
- resolve(true)
136
- },
137
- ])
138
- })
139
- }
140
-
141
- const errors = ref<string[]>([])
142
- const showValidationErrors = (data: string[]): void => {
143
- errors.value = data
144
- }
145
- const onRemoveValidationErrors = (): void => {
146
- errors.value = []
147
- }
148
-
149
- watch(
150
- () => props.show,
151
- (newValue) => {
152
- if (!newValue) return
153
-
154
- const input = document.getElementById('virtual-machine-name')
155
- if (!input) return
156
-
157
- setTimeout(() => {
158
- input.focus()
159
- }, 0)
160
- }
161
- )
162
-
163
- const isShowHelp = ref<boolean>(false)
164
- </script>
165
-
166
- <style scoped lang="scss">
167
- </style>
1
+ <template>
2
+ <common-vm-actions-common-select-name-new
3
+ v-if="isNewView"
4
+ v-model:vm-name="vmName"
5
+ v-model:is-show-help="isShowHelp"
6
+ :project="props.project"
7
+ :errors="errors"
8
+ :data-center="props.dataCenter"
9
+ @remove-validation-errors="onRemoveValidationErrors"
10
+ @select-node="onSelectNode"
11
+ />
12
+ <common-vm-actions-common-select-name-old
13
+ v-else
14
+ v-model:vm-name="vmName"
15
+ v-model:is-show-help="isShowHelp"
16
+ :project="props.project"
17
+ :errors="errors"
18
+ :data-center="props.dataCenter"
19
+ @remove-validation-errors="onRemoveValidationErrors"
20
+ @select-node="onSelectNode"
21
+ />
22
+ </template>
23
+
24
+ <script setup lang="ts">
25
+ // import { API_UI_I_Error } from '~/lib/models/store/interfaces'
26
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
27
+ import type { UI_T_Project } from '~/lib/models/types'
28
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
29
+
30
+ const props = defineProps<{
31
+ nameFormSubmit: null | Function
32
+ show: boolean
33
+ project: UI_T_Project
34
+ dataCenter?: UI_I_TreeNode // для сферы
35
+ }>()
36
+ const emits = defineEmits<{
37
+ (event: 'submit', value: [string, UI_I_TreeNode | null]): void
38
+ (event: 'loading', value: boolean): void
39
+ (
40
+ event: 'check-name',
41
+ value: [[string, UI_I_TreeNode | null], (error: any) => void]
42
+ ): void
43
+ }>()
44
+
45
+ const { $store }: any = useNuxtApp()
46
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
47
+
48
+ const localization = computed<UI_I_Localization>(() => useLocal())
49
+
50
+ const vmName = ref<string>('')
51
+
52
+ const selectedNode = ref<UI_I_TreeNode | null>(null)
53
+ const onSelectNode = (node: UI_I_TreeNode): void => {
54
+ selectedNode.value = node
55
+ }
56
+
57
+ watch(
58
+ () => props.nameFormSubmit,
59
+ (newValue) => {
60
+ newValue && submit(newValue)
61
+ }
62
+ )
63
+
64
+ const isParentDatacenter = (node: UI_I_TreeNode | null): boolean => {
65
+ if (!node) return false
66
+
67
+ if (node.parent?.type === 'datacenter') return true
68
+ if (node.parent?.type === 'folder') return isParentDatacenter(node.parent)
69
+ return false
70
+ }
71
+ const submit = async (cb: Function): Promise<void> => {
72
+ const name = vmName.value
73
+
74
+ if (name !== '') {
75
+ const isNameValid = await checkNameIsValid(name)
76
+ if (!isNameValid) {
77
+ cb(false)
78
+ return
79
+ }
80
+ }
81
+
82
+ if (props.project === 'sphere') {
83
+ // const isDatacenterFolder = isParentDatacenter(selectedNode.value)
84
+
85
+ if (
86
+ // selectedNode.value?.type !== 'datacenter' &&
87
+ // selectedNode.value?.type === 'folder' &&
88
+ // !isDatacenterFolder
89
+ // TODO рефакторинг, здесь сейчас проверяем является ли выбранный элемент датацентром или папкой(вм)
90
+ ![3, 7].includes(selectedNode.value?.kind)
91
+ ) {
92
+ showValidationErrors([
93
+ localization.value.common.enterValidLocationVirtualMachine,
94
+ ])
95
+ cb(false)
96
+ return
97
+ }
98
+ }
99
+
100
+ onRemoveValidationErrors()
101
+ emits('submit', [name, selectedNode.value])
102
+ cb(true)
103
+ }
104
+ const checkNameIsValid = async (name: string): Promise<boolean> => {
105
+ emits('loading', true)
106
+
107
+ return new Promise((resolve) => {
108
+ emits('check-name', [
109
+ [name, selectedNode.value],
110
+ (error) => {
111
+ emits('loading', false)
112
+
113
+ const status = error?.statusCode || 200
114
+ switch (status) {
115
+ case 405: // Invalid kind
116
+ showValidationErrors([
117
+ localization.value.common.kindValidationDescription,
118
+ ])
119
+ resolve(false)
120
+ break
121
+ case 406: // Invalid name
122
+ showValidationErrors([
123
+ localization.value.common.vmNameValidationDescription,
124
+ ])
125
+ resolve(false)
126
+ break
127
+ case 409: // Name exist
128
+ showValidationErrors([
129
+ localization.value.common.vmNameExistInSelectedLocation,
130
+ ])
131
+ resolve(false)
132
+ break
133
+ }
134
+
135
+ resolve(true)
136
+ },
137
+ ])
138
+ })
139
+ }
140
+
141
+ const errors = ref<string[]>([])
142
+ const showValidationErrors = (data: string[]): void => {
143
+ errors.value = data
144
+ }
145
+ const onRemoveValidationErrors = (): void => {
146
+ errors.value = []
147
+ }
148
+
149
+ watch(
150
+ () => props.show,
151
+ (newValue) => {
152
+ if (!newValue) return
153
+
154
+ const input = document.getElementById('virtual-machine-name')
155
+ if (!input) return
156
+
157
+ setTimeout(() => {
158
+ input.focus()
159
+ }, 0)
160
+ }
161
+ )
162
+
163
+ const isShowHelp = ref<boolean>(false)
164
+ </script>
165
+
166
+ <style scoped lang="scss">
167
+ </style>
@@ -1,122 +1,122 @@
1
- <template>
2
- <div class="select-os pt-4">
3
- <p class="select-os-description pb-4">
4
- {{ localization.common.identifyingGuestSystemInstallation }}
5
- </p>
6
-
7
- <div class="select-wrap mb-4 pb-4">
8
- <label for="machine-type-select" class="select-label"
9
- >{{ localization.common.machineType }}:</label
10
- >
11
-
12
- <ui-select
13
- v-model="machineType"
14
- :items="props.machineTypeOptions"
15
- :error-text="props.apiErrorMachineType"
16
- test-id="vm-wizard-machine-type-select"
17
- @change="emits('remove-error-by-title', 'machine_type')"
18
- />
19
- </div>
20
- <div class="select-wrap mb-4 pb-4">
21
- <label for="os-select" class="select-label"
22
- >{{ localization.common.guestOsFamily }}:</label
23
- >
24
-
25
- <ui-select
26
- v-model="guestOsFamily"
27
- :items="props.osOptions"
28
- :error-text="props.apiErrorGuestOsFamily"
29
- test-id="vm-wizard-os-select"
30
- @change="onChangeOsFamily"
31
- />
32
- </div>
33
- <div class="select-wrap mb-4">
34
- <label for="os-version-select" class="select-label"
35
- >{{ localization.common.guestOsVersion }}:</label
36
- >
37
-
38
- <ui-select
39
- v-model="guestOsVersion"
40
- :items="props.versionsOptions"
41
- :error-text="props.apiErrorGuestOsVersion"
42
- test-id="vm-wizard-os-version-select"
43
- @change="emits('remove-error-by-title', 'guest_os_version')"
44
- />
45
- </div>
46
- </div>
47
- </template>
48
-
49
- <script setup lang="ts">
50
- import type { UI_I_Localization } from '~/lib/models/interfaces'
51
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
52
-
53
- const machineType = defineModel<UI_I_OptionItem | null>('machine-type', {
54
- required: true,
55
- })
56
- const guestOsFamily = defineModel<UI_I_OptionItem | null>('guest-os-family', {
57
- required: true,
58
- })
59
- const guestOsVersion = defineModel<UI_I_OptionItem | null>('guest-os-version', {
60
- required: true,
61
- })
62
-
63
- const props = defineProps<{
64
- apiErrorMachineType: string
65
- machineTypeOptions: UI_I_OptionItem[]
66
- apiErrorGuestOsFamily: string
67
- osOptions: UI_I_OptionItem[]
68
- apiErrorGuestOsVersion: string
69
- versionsOptions: UI_I_OptionItem[]
70
- }>()
71
- const emits = defineEmits<{
72
- (event: 'remove-error-by-title', value: string): void
73
- (event: 'change-os'): void
74
- }>()
75
- const localization = computed<UI_I_Localization>(() => useLocal())
76
-
77
- const onChangeOsFamily = (): void => {
78
- setTimeout(() => {
79
- emits('remove-error-by-title', 'guest_os_family')
80
- emits('change-os')
81
- }, 0)
82
- }
83
- </script>
84
-
85
- <style>
86
- :root {
87
- --select-os-color: #4d5d69;
88
- --select-os-border-color: #e9ebed;
89
- }
90
- :root.dark-theme {
91
- --select-os-color: #e9eaec;
92
- --select-os-border-color: #e9ebed1f;
93
- }
94
- </style>
95
- <style scoped lang="scss">
96
- .select-os {
97
- .select-os-description {
98
- font-size: 13px;
99
- color: var(--select-os-color);
100
- }
101
-
102
- .select-wrap {
103
- display: grid;
104
- grid-template-columns: 1fr 2fr;
105
- grid-gap: 16px;
106
- align-items: center;
107
-
108
- &:not(:last-child) {
109
- border-bottom: 1px solid var(--select-os-border-color);
110
- }
111
-
112
- .select-label {
113
- font-size: 13px;
114
- color: var(--select-os-color);
115
- }
116
-
117
- :deep(.ui-select-toggle-button) {
118
- width: 100%;
119
- }
120
- }
121
- }
122
- </style>
1
+ <template>
2
+ <div class="select-os pt-4">
3
+ <p class="select-os-description pb-4">
4
+ {{ localization.common.identifyingGuestSystemInstallation }}
5
+ </p>
6
+
7
+ <div class="select-wrap mb-4 pb-4">
8
+ <label for="machine-type-select" class="select-label"
9
+ >{{ localization.common.machineType }}:</label
10
+ >
11
+
12
+ <ui-select
13
+ v-model="machineType"
14
+ :items="props.machineTypeOptions"
15
+ :error-text="props.apiErrorMachineType"
16
+ test-id="vm-wizard-machine-type-select"
17
+ @change="emits('remove-error-by-title', 'machine_type')"
18
+ />
19
+ </div>
20
+ <div class="select-wrap mb-4 pb-4">
21
+ <label for="os-select" class="select-label"
22
+ >{{ localization.common.guestOsFamily }}:</label
23
+ >
24
+
25
+ <ui-select
26
+ v-model="guestOsFamily"
27
+ :items="props.osOptions"
28
+ :error-text="props.apiErrorGuestOsFamily"
29
+ test-id="vm-wizard-os-select"
30
+ @change="onChangeOsFamily"
31
+ />
32
+ </div>
33
+ <div class="select-wrap mb-4">
34
+ <label for="os-version-select" class="select-label"
35
+ >{{ localization.common.guestOsVersion }}:</label
36
+ >
37
+
38
+ <ui-select
39
+ v-model="guestOsVersion"
40
+ :items="props.versionsOptions"
41
+ :error-text="props.apiErrorGuestOsVersion"
42
+ test-id="vm-wizard-os-version-select"
43
+ @change="emits('remove-error-by-title', 'guest_os_version')"
44
+ />
45
+ </div>
46
+ </div>
47
+ </template>
48
+
49
+ <script setup lang="ts">
50
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
51
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
52
+
53
+ const machineType = defineModel<UI_I_OptionItem | null>('machine-type', {
54
+ required: true,
55
+ })
56
+ const guestOsFamily = defineModel<UI_I_OptionItem | null>('guest-os-family', {
57
+ required: true,
58
+ })
59
+ const guestOsVersion = defineModel<UI_I_OptionItem | null>('guest-os-version', {
60
+ required: true,
61
+ })
62
+
63
+ const props = defineProps<{
64
+ apiErrorMachineType: string
65
+ machineTypeOptions: UI_I_OptionItem[]
66
+ apiErrorGuestOsFamily: string
67
+ osOptions: UI_I_OptionItem[]
68
+ apiErrorGuestOsVersion: string
69
+ versionsOptions: UI_I_OptionItem[]
70
+ }>()
71
+ const emits = defineEmits<{
72
+ (event: 'remove-error-by-title', value: string): void
73
+ (event: 'change-os'): void
74
+ }>()
75
+ const localization = computed<UI_I_Localization>(() => useLocal())
76
+
77
+ const onChangeOsFamily = (): void => {
78
+ setTimeout(() => {
79
+ emits('remove-error-by-title', 'guest_os_family')
80
+ emits('change-os')
81
+ }, 0)
82
+ }
83
+ </script>
84
+
85
+ <style>
86
+ :root {
87
+ --select-os-color: #4d5d69;
88
+ --select-os-border-color: #e9ebed;
89
+ }
90
+ :root.dark-theme {
91
+ --select-os-color: #e9eaec;
92
+ --select-os-border-color: #e9ebed1f;
93
+ }
94
+ </style>
95
+ <style scoped lang="scss">
96
+ .select-os {
97
+ .select-os-description {
98
+ font-size: 13px;
99
+ color: var(--select-os-color);
100
+ }
101
+
102
+ .select-wrap {
103
+ display: grid;
104
+ grid-template-columns: 1fr 2fr;
105
+ grid-gap: 16px;
106
+ align-items: center;
107
+
108
+ &:not(:last-child) {
109
+ border-bottom: 1px solid var(--select-os-border-color);
110
+ }
111
+
112
+ .select-label {
113
+ font-size: 13px;
114
+ color: var(--select-os-color);
115
+ }
116
+
117
+ :deep(.ui-select-toggle-button) {
118
+ width: 100%;
119
+ }
120
+ }
121
+ }
122
+ </style>