bfg-common 1.5.245 → 1.5.246

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