bfg-common 1.5.331 → 1.5.332

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 (156) 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 +6 -4
  7. package/assets/localization/local_en.json +3266 -3264
  8. package/assets/localization/local_hy.json +6 -4
  9. package/assets/localization/local_kk.json +6 -4
  10. package/assets/localization/local_ru.json +6 -4
  11. package/assets/localization/local_zh.json +3263 -3261
  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/pages/home/headline/Headline.vue +45 -45
  34. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  35. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  36. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  37. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -88
  38. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -36
  39. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  40. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  41. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  42. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  43. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  44. package/components/common/pages/packages/Packages.vue +208 -208
  45. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  46. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  47. package/components/common/recursionTree/RecursionTree.vue +223 -223
  48. package/components/common/select/button/ButtonDropdown.vue +112 -112
  49. package/components/common/select/radio/RadioGroup.vue +128 -135
  50. package/components/common/select/radio/lib/models/interfaces.ts +0 -1
  51. package/components/common/spiceConsole/Drawer.vue +377 -377
  52. package/components/common/spiceConsole/SpiceConsole.vue +127 -127
  53. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  54. package/components/common/tools/Actions.vue +207 -207
  55. package/components/common/vm/actions/add/New.vue +642 -647
  56. package/components/common/vm/actions/add/Old.vue +385 -388
  57. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  58. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  59. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  60. package/components/common/vm/actions/add/lib/config/steps.ts +10 -22
  61. package/components/common/vm/actions/clone/Clone.vue +823 -823
  62. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  63. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  64. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +0 -3
  65. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +0 -2
  66. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +0 -2
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +321 -321
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +227 -227
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/TooltipNew.vue +154 -154
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +153 -155
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +307 -307
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +385 -385
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +85 -85
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCard.vue +154 -154
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  99. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +152 -155
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +128 -130
  101. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsOld.vue +111 -113
  102. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  103. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  104. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  105. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +83 -95
  106. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +1 -2
  107. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsOld.vue +154 -155
  108. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +6 -8
  109. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/Old.vue +6 -8
  110. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  111. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapOld.vue +44 -44
  112. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  113. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  114. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  115. package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/ToolsNew.vue +0 -1
  116. package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/ToolsOld.vue +1 -1
  117. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  118. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  119. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  120. package/components/common/vm/actions/common/select/createType/lib/config/items.ts +48 -48
  121. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  122. package/components/common/vm/actions/common/select/name/Name.vue +174 -174
  123. package/components/common/vm/actions/common/select/options/Options.vue +1 -6
  124. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  125. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  126. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  127. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  128. package/components/common/vm/actions/editSettings/EditSettings.vue +239 -242
  129. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +0 -2
  130. package/components/common/vm/actions/editSettings/new/New.vue +0 -2
  131. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  132. package/components/common/vmt/actions/add/Add.vue +280 -379
  133. package/components/common/vmt/actions/add/New.vue +346 -0
  134. package/components/common/vmt/actions/add/Old.vue +301 -0
  135. package/components/common/vmt/actions/add/lib/config/steps.ts +8 -8
  136. package/components/common/vmt/actions/add/lib/models/interfaces.ts +23 -23
  137. package/components/common/wizards/network/add/steps/SelectConnectionType.vue +104 -104
  138. package/components/common/wizards/network/add/steps/SelectedTargetDevice.vue +467 -467
  139. package/components/common/wizards/vm/migrate/Migrate.vue +349 -349
  140. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  141. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  142. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  143. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  144. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  145. package/components/common/wizards/vm/migrate/select/type/lib/config/typeOptions.ts +43 -45
  146. package/composables/productNameLocal.ts +30 -30
  147. package/composables/useAppVersion.ts +21 -21
  148. package/package.json +1 -1
  149. package/plugins/date.ts +233 -233
  150. package/plugins/panelStates.ts +70 -70
  151. package/plugins/text.ts +59 -59
  152. package/public/spice-console/lib/images/bitmap.js +203 -203
  153. package/public/spice-console/network/spicechannel.js +387 -387
  154. package/store/main/mutations.ts +7 -7
  155. package/store/main/state.ts +7 -7
  156. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -0,0 +1,346 @@
1
+ <template>
2
+ <ui-wizard
3
+ :steps="props.wizard.steps"
4
+ :selected-scheme="props.selectedScheme"
5
+ :title="props.title"
6
+ :texts="texts"
7
+ :is-loading="props.isLoading"
8
+ test-id="vmt-add"
9
+ show
10
+ @change-steps="emits('change-steps', $event)"
11
+ @hide="emits('hide')"
12
+ @submit="emits('finish')"
13
+ >
14
+ <template #content="{ selectedStep }">
15
+ <!-- <ui-wizard-block-->
16
+ <!-- v-if="selectedStep.id === props.dynamicSteps.scheduledTasks"-->
17
+ <!-- >-->
18
+ <!-- <template #content>-->
19
+ <!-- <common-pages-scheduled-tasks-modals-common-new-task-form-->
20
+ <!-- v-model="props.newTaskForm"-->
21
+ <!-- target="0"-->
22
+ <!-- class="new-task-form"-->
23
+ <!-- />-->
24
+ <!-- </template>-->
25
+ <!-- </ui-wizard-block>-->
26
+ <ui-wizard-block
27
+ v-if="selectedStep.id === props.dynamicSteps.selectName"
28
+ :sub-title-height="height0"
29
+ >
30
+ <template #subTitle>
31
+ <div ref="subTitleBlock0" class="subtitle-block">
32
+ <div
33
+ id="name-alert-wrapper"
34
+ :class="[{ 'mb-4': !isNameAlertWrapperEmpty }]"
35
+ ></div>
36
+ <ui-wizard-subtitle
37
+ :sub-title="
38
+ localization.vmWizard.specifyUniqueNameAndTargetLocationForVm
39
+ "
40
+ />
41
+ </div>
42
+ </template>
43
+ <template #content>
44
+ <common-vm-actions-common-select-name
45
+ :show="selectedStep.id === props.dynamicSteps.selectName"
46
+ :name-form-submit="props.nameFormSubmit"
47
+ :project="props.project"
48
+ @submit="emits('change-name', $event)"
49
+ @check-name="emits('check-name', $event)"
50
+ @has-errors="isNameAlertWrapperEmpty = $event"
51
+ />
52
+ </template>
53
+ </ui-wizard-block>
54
+ <ui-wizard-block
55
+ v-if="selectedStep.id === props.dynamicSteps.selectStorage"
56
+ :sub-title-height="height2"
57
+ >
58
+ <template #subTitle>
59
+ <div ref="subTitleBlock2">
60
+ <div class="subtitle-block">
61
+ <div
62
+ id="storage-alert-wrapper"
63
+ :class="[{ 'mb-4': !isStorageAlertWrapperEmpty }]"
64
+ ></div>
65
+ <ui-wizard-subtitle
66
+ :sub-title="localization.vmt.wizardSubTitle2"
67
+ />
68
+ </div>
69
+ </div>
70
+ </template>
71
+ <template #content>
72
+ <common-vm-actions-common-select-storage
73
+ :storage-submit="props.storageSubmit"
74
+ :datastore="props.datastore"
75
+ :is-datastore-loading="props.isDatastoreLoading"
76
+ :get-datastore-table-func="props.getDatastoreTableFunc"
77
+ @submit="emits('change-storage', $event)"
78
+ @has-errors="isStorageAlertWrapperEmpty = $event"
79
+ />
80
+ </template>
81
+ </ui-wizard-block>
82
+
83
+ <ui-wizard-block
84
+ v-if="selectedStep.id === props.dynamicSteps.selectGuestOSMachineType"
85
+ :sub-title-height="height3"
86
+ >
87
+ <template #subTitle>
88
+ <div ref="subTitleBlock3">
89
+ <div class="subtitle-block">
90
+ <ui-wizard-subtitle
91
+ :sub-title="localization.common.chooseGuestOSInstalledVM"
92
+ />
93
+ </div>
94
+ </div>
95
+ </template>
96
+ <template #content>
97
+ <common-vm-actions-common-select-os
98
+ v-model:machine-type="vmtForm.guestMachineType"
99
+ v-model:guest-os-family="vmtForm.guestOsFamily"
100
+ v-model:guest-os-version="vmtForm.guestOsVersion"
101
+ :families-options="props.guestOsFamilies"
102
+ :versions-options="props.guestOsVersions"
103
+ :machine-types-options="props.machineTypes"
104
+ :error-validation-fields="props.errorValidationFields"
105
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
106
+ />
107
+ </template>
108
+ </ui-wizard-block>
109
+
110
+ <ui-wizard-block
111
+ v-if="selectedStep.id === props.dynamicSteps.customizeHardware"
112
+ >
113
+ <template #content>
114
+ <div
115
+ class="select-block-wrap overflow-auto h-full flex flex-col pr-8"
116
+ >
117
+ <common-vm-actions-common-customize-hardware
118
+ :project="props.project"
119
+ :vm-name="vmtForm.name"
120
+ :guest-machine-type="vmtForm.guestMachineType"
121
+ :guest-os-family="vmtForm.guestOsFamily"
122
+ :guest-os-version="vmtForm.guestOsVersion"
123
+ :storage="vmtForm.storage"
124
+ :hard-disks-for-boot-options="props.virtualHardwareHardDisksLocal"
125
+ :cd-dvd-drives-for-boot-options="
126
+ props.virtualHardwareCdDvdDrivesLocal
127
+ "
128
+ :networks-for-boot-options="props.virtualHardwareNetworksLocal"
129
+ :cd-dvd-drives="props.virtualHardwareCdDvdDrivesLocal"
130
+ :customize-hardware-submit="props.customizeHardwareSubmit"
131
+ :max-cpus="props.maxCpus"
132
+ :max-memory="props.maxMemory"
133
+ :cpu-models="props.cpuModels"
134
+ :selected-nav-item="props.selectedNavItem"
135
+ :nodes="props.nodes"
136
+ :files="props.files"
137
+ :networks-table="props.networksTable"
138
+ :error-validation-fields="props.errorValidationFields"
139
+ :get-datastore-table-func="props.getDatastoreTableFunc"
140
+ :datastore="props.datastore"
141
+ :is-datastore-loading="props.isDatastoreLoading"
142
+ :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
143
+ :passthrough-devices="props.passthroughDevices"
144
+ :mediated-devices="props.mediatedDevices"
145
+ :compute-resource="vmtForm.computeResource"
146
+ @change-boot-order="emits('change-boot-order', $event)"
147
+ @send-data="emits('change-customize-hardware', $event)"
148
+ @get-storage="emits('get-storage', $event)"
149
+ @get-folders-or-files="emits('get-folders-or-files', $event)"
150
+ @get-active-device-child="
151
+ emits('get-active-device-child', $event)
152
+ "
153
+ @show-datastore-child="emits('show-datastore-child', $event)"
154
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
155
+ @get-networks-table="emits('get-networks-table', $event)"
156
+ @get-pci-devices="emits('get-pci-devices')"
157
+ />
158
+ </div>
159
+ </template>
160
+ </ui-wizard-block>
161
+ <ui-wizard-block
162
+ v-if="selectedStep.id === props.dynamicSteps.readyComplete"
163
+ :sub-title-height="heightLast"
164
+ >
165
+ <template #subTitle>
166
+ <div ref="subTitleBlockLast">
167
+ <div class="subtitle-block">
168
+ <ui-wizard-subtitle
169
+ :sub-title="localization.vmt.wizardSubTitleLast"
170
+ />
171
+ </div>
172
+ </div>
173
+ </template>
174
+ <template #content>
175
+ <div class="mt-3 mb-4">
176
+ <common-ready-to-complete
177
+ v-if="selectedStep.id === props.dynamicSteps.readyComplete"
178
+ :data="props.readyCompleteTableInfo"
179
+ />
180
+ </div>
181
+ </template>
182
+ </ui-wizard-block>
183
+ </template>
184
+ </ui-wizard>
185
+ </template>
186
+
187
+ <script setup lang="ts">
188
+ import { useElementSize } from '@vueuse/core'
189
+ import type {
190
+ UI_I_DatastoreTableItem,
191
+ UI_I_FolderOrFileTreePayload,
192
+ } from '~/lib/models/store/storage/interfaces'
193
+ import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
194
+ import type { API_UI_I_Error } from '~/lib/models/store/interfaces'
195
+ import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
196
+ import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
197
+ import type {
198
+ UI_I_ArbitraryObject,
199
+ UI_I_Localization,
200
+ } from '~/lib/models/interfaces'
201
+ import type { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/lib/models/interfaces'
202
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
203
+ import type {
204
+ UI_I_SendDataNewCdDvdDrive,
205
+ UI_I_SendDataNewHardDisk,
206
+ UI_I_SendDataNewNetwork,
207
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
208
+ import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
209
+ import type { UI_T_SelectedNavItem } from '~/components/common/vm/actions/common/lib/models/types'
210
+ import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
211
+ import type { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
212
+ import type { UI_T_Project } from '~/lib/models/types'
213
+ import type {
214
+ UI_I_MediatedDevice,
215
+ UI_I_PciDevice,
216
+ } from '~/lib/models/store/vm/interfaces'
217
+ import type { UI_I_WizardStep } from '~/components/atoms/wizard/lib/models/interfaces'
218
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
219
+ import type { UI_I_VmtForm } from '~/components/common/vmt/actions/add/lib/models/interfaces'
220
+ import type { I_DynamicSteps } from '~/components/common/vmt/actions/add/lib/models/interfaces'
221
+ import Wizard from '~/components/atoms/wizard/lib/utils/utils'
222
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
223
+
224
+ const vmtForm = defineModel<UI_I_VmtForm>('vmtForm')
225
+ const props = defineProps<{
226
+ alertMessages: string[]
227
+ title: string
228
+ wizard: Wizard
229
+ dynamicSteps: I_DynamicSteps
230
+ newTaskForm: UI_I_ScheduleNewTasksForm
231
+ selectedScheme: number[]
232
+ nameFormSubmit: Function | null
233
+ storageSubmit: Function | null
234
+ customizeHardwareSubmit: Function | null
235
+ isLoading: boolean
236
+ selectedNavItem: UI_T_SelectedNavItem
237
+ virtualHardwareCdDvdDrivesLocal: UI_I_SendDataNewCdDvdDrive[] | null
238
+ virtualHardwareNetworksLocal: UI_I_SendDataNewNetwork[] | null
239
+ virtualHardwareHardDisksLocal: UI_I_SendDataNewHardDisk[] | null
240
+ maxMemory: number
241
+ maxCpus: number
242
+ machineTypes: UI_I_OptionItem[]
243
+ cpuModels: UI_I_OptionItem[]
244
+ guestOsVersions: UI_I_ArbitraryObject<UI_I_OptionItem[]>
245
+ guestOsFamilies: UI_I_OptionItem[]
246
+ project: UI_T_Project
247
+ nodes: UI_I_FileTreeNode[]
248
+ files: UI_I_FileTreeNode[]
249
+ networksTable: UI_I_NetworkTableItem[]
250
+ datastore: UI_I_DatastoreTableItem[]
251
+ isDatastoreLoading: boolean
252
+ errorValidationFields: UI_I_ErrorValidationField[]
253
+ readyCompleteTableInfo: UI_I_TableInfoItem[]
254
+ vmCpuHelpTextSecond: string
255
+ getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
256
+ passthroughDevices: UI_I_PciDevice[]
257
+ mediatedDevices: UI_I_MediatedDevice[]
258
+ }>()
259
+
260
+ const emits = defineEmits<{
261
+ (event: 'change-steps', value: UI_I_WizardStep[]): void
262
+ (
263
+ event: 'check-name',
264
+ value: [[string, UI_I_TreeNode | null], (error: any) => void]
265
+ ): void
266
+ (event: 'get-storage', value: UI_I_TablePayload): void
267
+ (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
268
+ (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
269
+ (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
270
+ (event: 'remove-error-by-title', value: string): void
271
+ (event: 'get-networks-table', value: UI_I_TablePayload): void
272
+ (event: 'change-boot-order', value: UI_T_ChangeBootOrder): void
273
+ (
274
+ event: 'change-customize-hardware',
275
+ value: UI_I_SendDataCustomizeHardware
276
+ ): void
277
+ (event: 'get-pci-devices'): void
278
+ (event: 'change-storage', value: UI_I_DatastoreTableItem | null): void
279
+ (event: 'change-name', value: [string, UI_I_TreeNode | null]): void
280
+ (event: 'hide'): void
281
+ (event: 'finish'): void
282
+ }>()
283
+
284
+ const localization = computed<UI_I_Localization>(() => useLocal())
285
+
286
+ const texts = computed<UI_I_WizardTexts>(() => ({
287
+ cancel: localization.value.common.cancel,
288
+ back: localization.value.common.backCap,
289
+ processing: localization.value.common.processing,
290
+ next: localization.value.common.next,
291
+ finish: localization.value.common.create,
292
+ incompleteTitle: localization.value.common.incompleteProcess,
293
+ incompleteMessage: localization.value.common.incompleteProcessMessage,
294
+ incompleteCancel: localization.value.common.cancel,
295
+ incompleteLeave: localization.value.common.leave,
296
+ step: localization.value.common.step,
297
+ of: localization.value.common.of2,
298
+ }))
299
+
300
+ const subTitleBlock0 = ref<HTMLElement | null>(null)
301
+ const { height: height0 } = useElementSize(subTitleBlock0)
302
+
303
+ const subTitleBlock2 = ref<HTMLElement | null>(null)
304
+ const { height: height2 } = useElementSize(subTitleBlock2)
305
+
306
+ const subTitleBlock3 = ref<HTMLElement | null>(null)
307
+ const { height: height3 } = useElementSize(subTitleBlock3)
308
+
309
+ const subTitleBlockLast = ref<HTMLElement | null>(null)
310
+ const { height: heightLast } = useElementSize(subTitleBlockLast)
311
+
312
+ const isNameAlertWrapperEmpty = ref<boolean>(false)
313
+ const isStorageAlertWrapperEmpty = ref<boolean>(false)
314
+ </script>
315
+
316
+ <style scoped lang="scss">
317
+ .subtitle-block {
318
+ display: flex;
319
+ flex-direction: column;
320
+ border-bottom: 1px solid var(--wizard-line);
321
+ padding-bottom: 12px;
322
+ }
323
+ .select-block-wrap {
324
+ :deep(.customize-hardware) {
325
+ height: inherit;
326
+ max-height: 100%;
327
+ padding-bottom: 40px;
328
+
329
+ :deep(.tabs-wrapper) {
330
+ overflow-y: auto;
331
+ }
332
+ :deep(.tabs-wrapper),
333
+ :deep(.errors-alert),
334
+ :deep(.action-wrap) {
335
+ margin-right: 32px;
336
+ }
337
+ :deep(.virtual-hardware-content-block),
338
+ :deep(.vm-options) {
339
+ padding-right: 18px;
340
+ }
341
+ }
342
+ :deep(.details-list) {
343
+ margin-top: 0;
344
+ }
345
+ }
346
+ </style>
@@ -0,0 +1,301 @@
1
+ <template>
2
+ <div class="add-template">
3
+ <atoms-wizard
4
+ :wizard="props.wizard"
5
+ :selected-scheme="props.selectedScheme"
6
+ :title="props.title"
7
+ :localization="localization"
8
+ show
9
+ @change-steps="emits('change-steps', $event)"
10
+ @hide="emits('hide')"
11
+ @submit="emits('finish')"
12
+ >
13
+ <template #modalBody="{ selectedStep }">
14
+ <atoms-loader
15
+ v-show="props.isLoading"
16
+ id="loader"
17
+ test-id="add-template-loader"
18
+ />
19
+ <div class="vmt-context">
20
+ <common-pages-scheduled-tasks-modals-common-new-task-form
21
+ v-show="selectedStep.id === props.dynamicSteps.scheduledTasks"
22
+ v-model="props.newTaskForm"
23
+ target="0"
24
+ class="new-task-form"
25
+ />
26
+ <common-vm-actions-common-select-name
27
+ v-show="selectedStep.id === props.dynamicSteps.selectName"
28
+ :show="selectedStep.id === props.dynamicSteps.selectName"
29
+ :name-form-submit="props.nameFormSubmit"
30
+ :project="props.project"
31
+ @submit="emits('change-name', ...$event)"
32
+ @check-name="emits('check-name', $event)"
33
+ />
34
+ <common-vm-actions-common-select-storage
35
+ v-show="selectedStep.id === props.dynamicSteps.selectStorage"
36
+ :storage-submit="props.storageSubmit"
37
+ :datastore="props.datastore"
38
+ :is-datastore-loading="props.isDatastoreLoading"
39
+ :get-datastore-table-func="props.getDatastoreTableFunc"
40
+ @submit="emits('change-storage', $event)"
41
+ />
42
+ <common-vm-actions-common-select-os
43
+ v-show="
44
+ selectedStep.id === props.dynamicSteps.selectGuestOSMachineType
45
+ "
46
+ v-model:machine-type="vmtForm.guestMachineType"
47
+ v-model:guest-os-family="vmtForm.guestOsFamily"
48
+ v-model:guest-os-version="vmtForm.guestOsVersion"
49
+ :families-options="props.guestOsFamilies"
50
+ :versions-options="props.guestOsVersions"
51
+ :machine-types-options="props.machineTypes"
52
+ :error-validation-fields="props.errorValidationFields"
53
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
54
+ />
55
+ <common-vm-actions-common-customize-hardware
56
+ v-show="selectedStep.id === props.dynamicSteps.customizeHardware"
57
+ v-model:vm-name="vmtForm.name"
58
+ v-model:guest-machine-type="vmtForm.guestMachineType"
59
+ v-model:guest-os-family="vmtForm.guestOsFamily"
60
+ v-model:guest-os-version="vmtForm.guestOsVersion"
61
+ :storage="vmtForm.storage"
62
+ :hard-disks-for-boot-options="props.virtualHardwareHardDisksLocal"
63
+ :cd-dvd-drives-for-boot-options="
64
+ props.virtualHardwareCdDvdDrivesLocal
65
+ "
66
+ :networks-for-boot-options="props.virtualHardwareNetworksLocal"
67
+ :customize-hardware-submit="props.customizeHardwareSubmit"
68
+ :max-cpus="props.maxCpus"
69
+ :max-memory="props.maxMemory"
70
+ :cpu-models="props.cpuModels"
71
+ :selected-nav-item="props.selectedNavItem"
72
+ :nodes="props.nodes"
73
+ :files="props.files"
74
+ :networks-table="props.networksTable"
75
+ :error-validation-fields="props.errorValidationFields"
76
+ :get-datastore-table-func="props.getDatastoreTableFunc"
77
+ :datastore="props.datastore"
78
+ :is-datastore-loading="props.isDatastoreLoading"
79
+ :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
80
+ :passthrough-devices="props.passthroughDevices"
81
+ :mediated-devices="props.mediatedDevices"
82
+ :compute-resource="vmtForm.computeResource"
83
+ :project="props.project"
84
+ @change-boot-order="emits('change-boot-order', $event)"
85
+ @send-data="emits('change-customize-hardware', $event)"
86
+ @get-storage="emits('get-storage', $event)"
87
+ @get-folders-or-files="emits('get-folders-or-files', $event)"
88
+ @get-active-device-child="emits('get-active-device-child', $event)"
89
+ @show-datastore-child="emits('show-datastore-child', $event)"
90
+ @get-networks-table="emits('get-networks-table', $event)"
91
+ @get-pci-devices="emits('get-pci-devices')"
92
+ />
93
+ <common-ready-to-complete
94
+ v-show="selectedStep.id === props.dynamicSteps.readyComplete"
95
+ :data="props.readyCompleteTableInfo"
96
+ />
97
+ </div>
98
+ </template>
99
+ </atoms-wizard>
100
+ </div>
101
+ </template>
102
+
103
+ <script setup lang="ts">
104
+ import type {
105
+ UI_I_DatastoreTableItem,
106
+ UI_I_FolderOrFileTreePayload,
107
+ } from '~/lib/models/store/storage/interfaces'
108
+ import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
109
+ import type { API_UI_I_Error } from '~/lib/models/store/interfaces'
110
+ import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
111
+ import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
112
+ import type {
113
+ UI_I_ArbitraryObject,
114
+ UI_I_Localization,
115
+ } from '~/lib/models/interfaces'
116
+ import type { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/lib/models/interfaces'
117
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
118
+ import type {
119
+ UI_I_SendDataNewCdDvdDrive,
120
+ UI_I_SendDataNewHardDisk,
121
+ UI_I_SendDataNewNetwork,
122
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
123
+ import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
124
+ import type { UI_T_SelectedNavItem } from '~/components/common/vm/actions/common/lib/models/types'
125
+ import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
126
+ import type { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
127
+ import type { UI_T_Project } from '~/lib/models/types'
128
+ import type {
129
+ UI_I_MediatedDevice,
130
+ UI_I_PciDevice,
131
+ } from '~/lib/models/store/vm/interfaces'
132
+ import type { UI_I_WizardStep } from '~/components/atoms/wizard/lib/models/interfaces'
133
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
134
+ import type { UI_I_VmtForm } from '~/components/common/vmt/actions/add/lib/models/interfaces'
135
+ import type { I_DynamicSteps } from '~/components/common/vmt/actions/add/lib/models/interfaces'
136
+ import Wizard from '~/components/atoms/wizard/lib/utils/utils'
137
+
138
+ const vmtForm = defineModel<UI_I_VmtForm>('vmtForm')
139
+ const props = defineProps<{
140
+ title: string
141
+ wizard: Wizard
142
+ dynamicSteps: I_DynamicSteps
143
+ newTaskForm: UI_I_ScheduleNewTasksForm
144
+ selectedScheme: number[]
145
+ nameFormSubmit: Function | null
146
+ storageSubmit: Function | null
147
+ customizeHardwareSubmit: Function | null
148
+ isLoading: boolean
149
+ selectedNavItem: UI_T_SelectedNavItem
150
+ virtualHardwareCdDvdDrivesLocal: UI_I_SendDataNewCdDvdDrive[] | null
151
+ virtualHardwareNetworksLocal: UI_I_SendDataNewNetwork[] | null
152
+ virtualHardwareHardDisksLocal: UI_I_SendDataNewHardDisk[] | null
153
+ maxMemory: number
154
+ maxCpus: number
155
+ machineTypes: UI_I_OptionItem[]
156
+ cpuModels: UI_I_OptionItem[]
157
+ guestOsVersions: UI_I_ArbitraryObject<UI_I_OptionItem[]>
158
+ guestOsFamilies: UI_I_OptionItem[]
159
+ project: UI_T_Project
160
+ nodes: UI_I_FileTreeNode[]
161
+ files: UI_I_FileTreeNode[]
162
+ networksTable: UI_I_NetworkTableItem[]
163
+ datastore: UI_I_DatastoreTableItem[]
164
+ isDatastoreLoading: boolean
165
+ errorValidationFields: UI_I_ErrorValidationField[]
166
+ readyCompleteTableInfo: UI_I_TableInfoItem[]
167
+ vmCpuHelpTextSecond: string
168
+ getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
169
+ passthroughDevices: UI_I_PciDevice[]
170
+ mediatedDevices: UI_I_MediatedDevice[]
171
+ }>()
172
+
173
+ const emits = defineEmits<{
174
+ (event: 'change-steps', value: UI_I_WizardStep[]): void
175
+ (event: 'check-name', value: [string, (error: API_UI_I_Error) => void]): void
176
+ (event: 'get-storage', value: UI_I_TablePayload): void
177
+ (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
178
+ (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
179
+ (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
180
+ (event: 'remove-error-by-title', value: string): void
181
+ (event: 'get-networks-table', value: UI_I_TablePayload): void
182
+ (event: 'change-boot-order', value: UI_T_ChangeBootOrder): void
183
+ (
184
+ event: 'change-customize-hardware',
185
+ value: UI_I_SendDataCustomizeHardware
186
+ ): void
187
+ (event: 'get-pci-devices'): void
188
+ (event: 'change-storage', value: UI_I_DatastoreTableItem | null): void
189
+ (event: 'change-name', value: string): void
190
+ (event: 'hide'): void
191
+ (event: 'finish'): void
192
+ }>()
193
+
194
+ const localization = computed<UI_I_Localization>(() => useLocal())
195
+ </script>
196
+
197
+ <style>
198
+ :root {
199
+ --vmt-context-title: #333;
200
+ --vmt-context-sub-title: #000;
201
+ }
202
+ :root.dark-theme {
203
+ --vmt-context-title: #adbbc4;
204
+ --vmt-context-sub-title: #adbbc4;
205
+ }
206
+ </style>
207
+ <style scoped lang="scss">
208
+ :deep(.has-solid.close-icon.clr-icon) {
209
+ width: 20px;
210
+ top: 0;
211
+ }
212
+ .vmt-context {
213
+ padding: 16px 15px 10px 10px;
214
+ height: 100%;
215
+ display: flex;
216
+ flex-direction: column;
217
+
218
+ .context-title-wrap {
219
+ padding-bottom: 3px;
220
+ border-bottom: 1px solid #a6a6a6;
221
+
222
+ h4 {
223
+ font-weight: 700;
224
+ font-size: 13px;
225
+ color: var(--vmt-context-title);
226
+ }
227
+ p {
228
+ font-weight: 400;
229
+ font-size: 13px;
230
+ color: var(--vmt-context-sub-title);
231
+ }
232
+ }
233
+
234
+ .finish-block {
235
+ padding: 18px 24px 24px 24px;
236
+
237
+ .add-hosts-ready-to-complete-mt-12 {
238
+ margin-top: 12px;
239
+
240
+ .add-hosts-ready-to-complete-bold {
241
+ line-height: 18px;
242
+ font-weight: 700;
243
+ }
244
+ }
245
+ }
246
+
247
+ .vm-hardware-version {
248
+ align-self: flex-end;
249
+ margin-top: auto;
250
+ }
251
+ }
252
+
253
+ :deep(.modal .modal-dialog .modal-content .modal-footer) {
254
+ flex: unset;
255
+ height: unset;
256
+ min-height: unset;
257
+ }
258
+ :deep(.wizard-modal-titlebar h3) {
259
+ color: #000;
260
+ font-size: 24px;
261
+ font-weight: 200;
262
+ line-height: 27px;
263
+ margin: 0;
264
+ padding: 0;
265
+ }
266
+ :deep(.clr-wizard-stepnav-item) {
267
+ padding-left: 0;
268
+ }
269
+ :deep(.clr-wizard-stepnav
270
+ .clr-wizard-stepnav-item
271
+ button
272
+ .clr-wizard-stepnav-link-title) {
273
+ width: 189px;
274
+ font-weight: 700;
275
+ font-size: 13px;
276
+ }
277
+
278
+ #vm-wizard-notification {
279
+ h3 {
280
+ color: var(--global-font-color7);
281
+ margin-top: 6px;
282
+ }
283
+ p {
284
+ color: var(--global-font-color6);
285
+ line-height: 16px;
286
+ }
287
+ }
288
+
289
+ .power-on-by-default-wrap {
290
+ display: flex;
291
+ align-items: center;
292
+
293
+ input {
294
+ margin-right: 6px;
295
+ }
296
+ }
297
+
298
+ .new-task-form {
299
+ padding: 0 25px 0 5px;
300
+ }
301
+ </style>