bfg-common 1.5.227 → 1.5.228

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 (148) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/localization/local_be.json +4 -3
  3. package/assets/localization/local_en.json +11 -10
  4. package/assets/localization/local_hy.json +4 -3
  5. package/assets/localization/local_kk.json +4 -3
  6. package/assets/localization/local_ru.json +6 -5
  7. package/assets/localization/local_zh.json +4 -3
  8. package/assets/scss/common/normalize.scss +1 -0
  9. package/components/atoms/TheIcon3.vue +50 -50
  10. package/components/atoms/perPage/PerPage.vue +58 -58
  11. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  12. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  13. package/components/atoms/table/info/lib/models/interfaces.ts +10 -10
  14. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  15. package/components/common/backup/storage/actions/add/Add.vue +247 -247
  16. package/components/common/backup/storage/actions/add/New.vue +281 -281
  17. package/components/common/backup/storage/actions/add/Old.vue +114 -114
  18. package/components/common/backup/storage/actions/add/lib/config/steps.ts +168 -168
  19. package/components/common/backup/storage/actions/add/steps/nameAndConfigure/NameAndConfigure.vue +41 -41
  20. package/components/common/backup/storage/actions/add/steps/nameAndConfigure/NameAndConfigureNew.vue +294 -294
  21. package/components/common/backup/storage/actions/add/steps/readyComplete/ReadyComplete.vue +45 -45
  22. package/components/common/backup/storage/actions/add/steps/readyComplete/lib/config/propertiesDetails.ts +242 -242
  23. package/components/common/backup/storage/actions/delete/Delete.vue +65 -65
  24. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  25. package/components/common/context/lib/models/interfaces.ts +31 -31
  26. package/components/common/diagramMain/DiagramMain.vue +897 -897
  27. package/components/common/diagramMain/Header.vue +214 -214
  28. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  29. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  30. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  31. package/components/common/pages/home/headline/Headline.vue +45 -45
  32. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  33. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  34. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  35. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  36. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  37. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  38. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  39. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  40. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  41. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  42. package/components/common/pages/packages/Packages.vue +208 -208
  43. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  44. package/components/common/readyToComplete/New.vue +16 -1
  45. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  46. package/components/common/recursionTree/RecursionTree.vue +223 -223
  47. package/components/common/select/button/ButtonDropdown.vue +108 -108
  48. package/components/common/spiceConsole/Drawer.vue +377 -377
  49. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  50. package/components/common/vm/actions/add/New.vue +98 -36
  51. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  52. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  53. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  54. package/components/common/vm/actions/add/lib/config/steps.ts +263 -263
  55. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  56. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  57. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +348 -337
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +480 -480
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +190 -190
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/model/ModelNew.vue +237 -237
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/TooltipNew.vue +154 -154
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +307 -307
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/MemoryNew.vue +154 -154
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +382 -382
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +151 -151
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationNew.vue +73 -73
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +83 -83
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/inputDevices/InputDevicesNew.vue +40 -40
  94. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  95. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +106 -106
  96. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +81 -81
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  98. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  99. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +67 -67
  101. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +149 -149
  102. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  103. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +31 -31
  104. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +31 -31
  105. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  106. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  107. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +128 -128
  108. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  109. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +39 -39
  110. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  111. package/components/common/vm/actions/common/lib/utils/capabilities.ts +52 -52
  112. package/components/common/vm/actions/common/select/compatibility/Compatibility.vue +8 -0
  113. package/components/common/vm/actions/common/select/compatibility/New.vue +14 -7
  114. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  115. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +142 -134
  116. package/components/common/vm/actions/common/select/computeResource/New.vue +29 -7
  117. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +44 -44
  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/New.vue +92 -84
  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 -167
  123. package/components/common/vm/actions/common/select/name/New.vue +36 -8
  124. package/components/common/vm/actions/common/select/os/New.vue +128 -122
  125. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  126. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  127. package/components/common/vm/actions/common/select/storage/Storage.vue +8 -0
  128. package/components/common/vm/actions/common/select/storage/new/New.vue +27 -8
  129. package/components/common/vm/actions/common/select/storage/new/lib/config/table.ts +9 -9
  130. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  131. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  132. package/components/common/vm/actions/editSettings/new/New.vue +1 -1
  133. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  134. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  135. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  136. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  137. package/components/common/wizards/vm/migrate/select/computeResource/tableView/TableView.vue +137 -137
  138. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  139. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  140. package/composables/productNameLocal.ts +30 -30
  141. package/composables/useAppVersion.ts +21 -21
  142. package/package.json +2 -2
  143. package/plugins/date.ts +233 -233
  144. package/public/spice-console/lib/images/bitmap.js +203 -203
  145. package/public/spice-console/network/spicechannel.js +387 -387
  146. package/store/main/mutations.ts +7 -7
  147. package/store/main/state.ts +7 -7
  148. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,247 +1,247 @@
1
- <template>
2
- <common-backup-storage-actions-add-new
3
- v-if="isNewView"
4
- v-model="form"
5
- :project="props.project"
6
- :wizard="wizard"
7
- :selected-scheme="selectedScheme"
8
- :alert-messages="alertMessages"
9
- :title="title"
10
- :hosts="props.hosts"
11
- :datastore="props.datastore"
12
- :get-datastore-table-func="props.getDatastoreTableFunc"
13
- @change-steps="onChangeSteps"
14
- @change-storage="onChangeStorage"
15
- @submit="onCreate"
16
- @hide="onHideModal"
17
- />
18
- <common-backup-storage-actions-add-old
19
- v-else
20
- v-model="form"
21
- :project="props.project"
22
- :wizard="wizard"
23
- :selected-scheme="selectedScheme"
24
- :alert-messages="alertMessages"
25
- :title="title"
26
- :hosts="props.hosts"
27
- :datastore="props.datastore"
28
- :get-datastore-table-func="props.getDatastoreTableFunc"
29
- @change-steps="onChangeSteps"
30
- @change-storage="onChangeStorage"
31
- @submit="onCreate"
32
- @hide="onHideModal"
33
- />
34
- </template>
35
-
36
- <script setup lang="ts">
37
- import type { UI_T_Project } from '~/lib/models/types'
38
- import type { UI_I_CreateDatastoreForm } from '~/components/common/backup/storage/actions/add/lib/models/interfaces'
39
- import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
40
- import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
41
- import type { UI_I_Localization } from '~/lib/models/interfaces'
42
- import type {
43
- UI_I_ValidationReturn,
44
- UI_I_WizardStep,
45
- } from '~/components/atoms/wizard/lib/models/interfaces'
46
- import type { UI_T_DatastoreTypeCode } from '~/components/common/backup/storage/actions/add/lib/models/types'
47
- // TODO use from uikit
48
- import Wizard from "~/components/atoms/wizard/lib/utils/utils";
49
- import {
50
- stepsFunc,
51
- stepsSchemeInitial,
52
- } from '~/components/common/backup/storage/actions/add/lib/config/steps'
53
- import { datastoreDefaultFormFunc } from '~/components/common/backup/storage/actions/add/lib/config/createDatastore'
54
- import {
55
- dynamicSteps,
56
- getStepScheme,
57
- } from '~/components/common/backup/storage/actions/add/lib/config/steps'
58
- import * as validation from '~/components/common/backup/storage/actions/add/lib/validations'
59
-
60
- const props = withDefaults(
61
- defineProps<{
62
- project: UI_T_Project
63
- datastore: UI_I_DatastoreTableItem[]
64
- getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
65
- hosts?: any[]
66
- }>(),
67
- { hosts: [] }
68
- )
69
- const emits = defineEmits<{
70
- (event: 'create', value: UI_I_CreateDatastoreForm): void
71
- (event: 'hide'): void
72
- }>()
73
-
74
- const { $store }: any = useNuxtApp()
75
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
76
-
77
- const localization = computed<UI_I_Localization>(() => useLocal())
78
-
79
- const title = ref(localization.value.common.newBackupStorage)
80
-
81
- const wizard: Wizard = new Wizard(
82
- stepsFunc(localization.value),
83
- stepsSchemeInitial
84
- )
85
-
86
- const selectedScheme = computed<number[]>(() => wizard.selectedScheme.value)
87
- const alertMessages = computed<string[][]>(() => wizard.alertMessages.value)
88
-
89
- const form = ref<UI_I_CreateDatastoreForm>(
90
- useDeepCopy(datastoreDefaultFormFunc())
91
- )
92
-
93
- const validationFunc = async (
94
- value: UI_I_WizardStep[],
95
- currentStep: UI_I_WizardStep,
96
- nextStep: UI_I_WizardStep
97
- ): Promise<UI_I_ValidationReturn> => {
98
- let stepHasError = false
99
-
100
- if (
101
- wizard.isValidateForStep(dynamicSteps.name, currentStep.id, nextStep.id)
102
- ) {
103
- const nameValidation = await validation.checkDatastoreNameAsync(
104
- localization.value,
105
- value,
106
- form.value,
107
- dynamicSteps.name,
108
- 'name',
109
- wizard,
110
- props.project
111
- )
112
-
113
- value = nameValidation.newValue
114
-
115
- stepHasError = nameValidation.stepHasError
116
- }
117
-
118
- if (
119
- wizard.isValidateForStep(
120
- dynamicSteps.nameAndConfigure,
121
- currentStep.id,
122
- nextStep.id
123
- )
124
- ) {
125
- const nameValidation = await validation.checkDatastoreNameAsync(
126
- localization.value,
127
- value,
128
- form.value,
129
- dynamicSteps.nameAndConfigure,
130
- 'name',
131
- wizard,
132
- props.project
133
- )
134
- value = nameValidation.newValue
135
-
136
- const folderValidation = validation.checkFolderSync(
137
- localization.value,
138
- form.value.folder,
139
- wizard,
140
- value
141
- )
142
- value = folderValidation.newValue
143
-
144
- const serverValidation = validation.checkServerSync(
145
- localization.value,
146
- form.value.server,
147
- wizard,
148
- value
149
- )
150
- value = serverValidation.newValue
151
-
152
- const usernameValidation = validation.checkUsernameSync(
153
- localization.value,
154
- form.value.user,
155
- wizard,
156
- value
157
- )
158
- value = usernameValidation.newValue
159
-
160
- const passwordValidation = validation.checkPasswordSync(
161
- localization.value,
162
- form.value.password,
163
- wizard,
164
- value
165
- )
166
- value = passwordValidation.newValue
167
-
168
- stepHasError =
169
- nameValidation.stepHasError ||
170
- folderValidation.stepHasError ||
171
- serverValidation.stepHasError ||
172
- usernameValidation.stepHasError ||
173
- passwordValidation.stepHasError
174
- }
175
-
176
- if (
177
- wizard.isValidateForStep(
178
- dynamicSteps.hostAccessibility,
179
- currentStep.id,
180
- nextStep.id
181
- )
182
- ) {
183
- const hostsValidation = await validation.checkHostsAccessibilitySync(
184
- localization.value,
185
- form.value.hosts,
186
- wizard,
187
- value
188
- )
189
-
190
- value = hostsValidation.newValue
191
-
192
- stepHasError = hostsValidation.stepHasError
193
- }
194
-
195
- if (
196
- wizard.isValidateForStep(dynamicSteps.storage, currentStep.id, nextStep.id)
197
- ) {
198
- const storageValidation = await validation.checkStorageSync(
199
- localization.value,
200
- form.value.storm_id,
201
- wizard,
202
- value
203
- )
204
-
205
- value = storageValidation.newValue
206
-
207
- stepHasError = storageValidation.stepHasError
208
- }
209
-
210
- return {
211
- newValue: value,
212
- stepHasError,
213
- }
214
- }
215
-
216
- const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> =>
217
- wizard.changeSteps(value, validationFunc)
218
-
219
- // Choosing Scheme
220
- watch(
221
- () => form.value.type_code,
222
- (newValue: UI_T_DatastoreTypeCode) => {
223
- const step = getStepScheme(props.project, newValue)
224
- if (step !== undefined) {
225
- wizard.changeScheme(step)
226
- }
227
- },
228
- { immediate: true }
229
- )
230
-
231
- const onChangeStorage = (storage: UI_I_DatastoreTableItem | null): void => {
232
- if (!storage) return
233
-
234
- form.value.storm_id = storage.id
235
- }
236
-
237
- const onCreate = async (
238
- ): Promise<void> => {
239
- emits('create', form.value)
240
- }
241
-
242
- const onHideModal = (): void => {
243
- emits('hide')
244
- }
245
- </script>
246
-
247
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <common-backup-storage-actions-add-new
3
+ v-if="isNewView"
4
+ v-model="form"
5
+ :project="props.project"
6
+ :wizard="wizard"
7
+ :selected-scheme="selectedScheme"
8
+ :alert-messages="alertMessages"
9
+ :title="title"
10
+ :hosts="props.hosts"
11
+ :datastore="props.datastore"
12
+ :get-datastore-table-func="props.getDatastoreTableFunc"
13
+ @change-steps="onChangeSteps"
14
+ @change-storage="onChangeStorage"
15
+ @submit="onCreate"
16
+ @hide="onHideModal"
17
+ />
18
+ <common-backup-storage-actions-add-old
19
+ v-else
20
+ v-model="form"
21
+ :project="props.project"
22
+ :wizard="wizard"
23
+ :selected-scheme="selectedScheme"
24
+ :alert-messages="alertMessages"
25
+ :title="title"
26
+ :hosts="props.hosts"
27
+ :datastore="props.datastore"
28
+ :get-datastore-table-func="props.getDatastoreTableFunc"
29
+ @change-steps="onChangeSteps"
30
+ @change-storage="onChangeStorage"
31
+ @submit="onCreate"
32
+ @hide="onHideModal"
33
+ />
34
+ </template>
35
+
36
+ <script setup lang="ts">
37
+ import type { UI_T_Project } from '~/lib/models/types'
38
+ import type { UI_I_CreateDatastoreForm } from '~/components/common/backup/storage/actions/add/lib/models/interfaces'
39
+ import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
40
+ import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
41
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
42
+ import type {
43
+ UI_I_ValidationReturn,
44
+ UI_I_WizardStep,
45
+ } from '~/components/atoms/wizard/lib/models/interfaces'
46
+ import type { UI_T_DatastoreTypeCode } from '~/components/common/backup/storage/actions/add/lib/models/types'
47
+ // TODO use from uikit
48
+ import Wizard from "~/components/atoms/wizard/lib/utils/utils";
49
+ import {
50
+ stepsFunc,
51
+ stepsSchemeInitial,
52
+ } from '~/components/common/backup/storage/actions/add/lib/config/steps'
53
+ import { datastoreDefaultFormFunc } from '~/components/common/backup/storage/actions/add/lib/config/createDatastore'
54
+ import {
55
+ dynamicSteps,
56
+ getStepScheme,
57
+ } from '~/components/common/backup/storage/actions/add/lib/config/steps'
58
+ import * as validation from '~/components/common/backup/storage/actions/add/lib/validations'
59
+
60
+ const props = withDefaults(
61
+ defineProps<{
62
+ project: UI_T_Project
63
+ datastore: UI_I_DatastoreTableItem[]
64
+ getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
65
+ hosts?: any[]
66
+ }>(),
67
+ { hosts: [] }
68
+ )
69
+ const emits = defineEmits<{
70
+ (event: 'create', value: UI_I_CreateDatastoreForm): void
71
+ (event: 'hide'): void
72
+ }>()
73
+
74
+ const { $store }: any = useNuxtApp()
75
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
76
+
77
+ const localization = computed<UI_I_Localization>(() => useLocal())
78
+
79
+ const title = ref(localization.value.common.newBackupStorage)
80
+
81
+ const wizard: Wizard = new Wizard(
82
+ stepsFunc(localization.value),
83
+ stepsSchemeInitial
84
+ )
85
+
86
+ const selectedScheme = computed<number[]>(() => wizard.selectedScheme.value)
87
+ const alertMessages = computed<string[][]>(() => wizard.alertMessages.value)
88
+
89
+ const form = ref<UI_I_CreateDatastoreForm>(
90
+ useDeepCopy(datastoreDefaultFormFunc())
91
+ )
92
+
93
+ const validationFunc = async (
94
+ value: UI_I_WizardStep[],
95
+ currentStep: UI_I_WizardStep,
96
+ nextStep: UI_I_WizardStep
97
+ ): Promise<UI_I_ValidationReturn> => {
98
+ let stepHasError = false
99
+
100
+ if (
101
+ wizard.isValidateForStep(dynamicSteps.name, currentStep.id, nextStep.id)
102
+ ) {
103
+ const nameValidation = await validation.checkDatastoreNameAsync(
104
+ localization.value,
105
+ value,
106
+ form.value,
107
+ dynamicSteps.name,
108
+ 'name',
109
+ wizard,
110
+ props.project
111
+ )
112
+
113
+ value = nameValidation.newValue
114
+
115
+ stepHasError = nameValidation.stepHasError
116
+ }
117
+
118
+ if (
119
+ wizard.isValidateForStep(
120
+ dynamicSteps.nameAndConfigure,
121
+ currentStep.id,
122
+ nextStep.id
123
+ )
124
+ ) {
125
+ const nameValidation = await validation.checkDatastoreNameAsync(
126
+ localization.value,
127
+ value,
128
+ form.value,
129
+ dynamicSteps.nameAndConfigure,
130
+ 'name',
131
+ wizard,
132
+ props.project
133
+ )
134
+ value = nameValidation.newValue
135
+
136
+ const folderValidation = validation.checkFolderSync(
137
+ localization.value,
138
+ form.value.folder,
139
+ wizard,
140
+ value
141
+ )
142
+ value = folderValidation.newValue
143
+
144
+ const serverValidation = validation.checkServerSync(
145
+ localization.value,
146
+ form.value.server,
147
+ wizard,
148
+ value
149
+ )
150
+ value = serverValidation.newValue
151
+
152
+ const usernameValidation = validation.checkUsernameSync(
153
+ localization.value,
154
+ form.value.user,
155
+ wizard,
156
+ value
157
+ )
158
+ value = usernameValidation.newValue
159
+
160
+ const passwordValidation = validation.checkPasswordSync(
161
+ localization.value,
162
+ form.value.password,
163
+ wizard,
164
+ value
165
+ )
166
+ value = passwordValidation.newValue
167
+
168
+ stepHasError =
169
+ nameValidation.stepHasError ||
170
+ folderValidation.stepHasError ||
171
+ serverValidation.stepHasError ||
172
+ usernameValidation.stepHasError ||
173
+ passwordValidation.stepHasError
174
+ }
175
+
176
+ if (
177
+ wizard.isValidateForStep(
178
+ dynamicSteps.hostAccessibility,
179
+ currentStep.id,
180
+ nextStep.id
181
+ )
182
+ ) {
183
+ const hostsValidation = await validation.checkHostsAccessibilitySync(
184
+ localization.value,
185
+ form.value.hosts,
186
+ wizard,
187
+ value
188
+ )
189
+
190
+ value = hostsValidation.newValue
191
+
192
+ stepHasError = hostsValidation.stepHasError
193
+ }
194
+
195
+ if (
196
+ wizard.isValidateForStep(dynamicSteps.storage, currentStep.id, nextStep.id)
197
+ ) {
198
+ const storageValidation = await validation.checkStorageSync(
199
+ localization.value,
200
+ form.value.storm_id,
201
+ wizard,
202
+ value
203
+ )
204
+
205
+ value = storageValidation.newValue
206
+
207
+ stepHasError = storageValidation.stepHasError
208
+ }
209
+
210
+ return {
211
+ newValue: value,
212
+ stepHasError,
213
+ }
214
+ }
215
+
216
+ const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> =>
217
+ wizard.changeSteps(value, validationFunc)
218
+
219
+ // Choosing Scheme
220
+ watch(
221
+ () => form.value.type_code,
222
+ (newValue: UI_T_DatastoreTypeCode) => {
223
+ const step = getStepScheme(props.project, newValue)
224
+ if (step !== undefined) {
225
+ wizard.changeScheme(step)
226
+ }
227
+ },
228
+ { immediate: true }
229
+ )
230
+
231
+ const onChangeStorage = (storage: UI_I_DatastoreTableItem | null): void => {
232
+ if (!storage) return
233
+
234
+ form.value.storm_id = storage.id
235
+ }
236
+
237
+ const onCreate = async (
238
+ ): Promise<void> => {
239
+ emits('create', form.value)
240
+ }
241
+
242
+ const onHideModal = (): void => {
243
+ emits('hide')
244
+ }
245
+ </script>
246
+
247
+ <style scoped lang="scss"></style>