bfg-common 1.5.238 → 1.5.240

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 (152) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/scss/common/theme.scss +6 -0
  3. package/components/atoms/TheIcon3.vue +50 -50
  4. package/components/atoms/perPage/PerPage.vue +58 -58
  5. package/components/atoms/stack/StackBlock.vue +185 -185
  6. package/components/atoms/table/dataGrid/DataGrid.vue +1717 -1717
  7. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  8. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  9. package/components/atoms/table/info/lib/models/interfaces.ts +10 -10
  10. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  11. package/components/common/backup/storage/actions/add/Add.vue +247 -247
  12. package/components/common/backup/storage/actions/add/New.vue +281 -281
  13. package/components/common/backup/storage/actions/add/Old.vue +114 -114
  14. package/components/common/backup/storage/actions/add/lib/config/steps.ts +168 -168
  15. package/components/common/backup/storage/actions/add/steps/nameAndConfigure/NameAndConfigure.vue +41 -41
  16. package/components/common/backup/storage/actions/add/steps/nameAndConfigure/NameAndConfigureNew.vue +294 -294
  17. package/components/common/backup/storage/actions/add/steps/readyComplete/ReadyComplete.vue +45 -45
  18. package/components/common/backup/storage/actions/add/steps/readyComplete/lib/config/propertiesDetails.ts +242 -242
  19. package/components/common/backup/storage/actions/delete/Delete.vue +65 -65
  20. package/components/common/browse/BrowseNew.vue +8 -2
  21. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  22. package/components/common/context/lib/models/interfaces.ts +31 -31
  23. package/components/common/diagramMain/DiagramMain.vue +897 -897
  24. package/components/common/diagramMain/Header.vue +214 -214
  25. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  26. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  27. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  28. package/components/common/pages/home/headline/Headline.vue +45 -45
  29. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  30. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  31. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  32. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  33. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  34. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  35. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  36. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  37. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  38. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  39. package/components/common/pages/packages/Packages.vue +208 -208
  40. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  41. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  42. package/components/common/recursionTree/RecursionTree.vue +223 -223
  43. package/components/common/select/button/ButtonDropdown.vue +108 -108
  44. package/components/common/spiceConsole/Drawer.vue +377 -377
  45. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  46. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  47. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  48. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  49. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  50. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  51. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +5 -2
  52. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +7 -7
  53. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  54. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  55. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +2 -2
  57. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +4 -0
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +194 -190
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/model/ModelNew.vue +246 -237
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/SharesNew.vue +6 -1
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/TooltipNew.vue +154 -154
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +307 -307
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/MemoryNew.vue +158 -154
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/hotPlug/HotPlugNew.vue +8 -2
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +382 -382
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +4 -0
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/file/FileNew.vue +8 -3
  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/newHardDisk/location/StorageModalNew.vue +1 -0
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/maximumSize/MaximumSizeNew.vue +8 -4
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/provisioning/ProvisioningNew.vue +6 -1
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +6 -1
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +1 -1
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +4 -3
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/Table.vue +1 -0
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +1 -0
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  100. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +36 -30
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/inputDevices/InputDevicesNew.vue +40 -40
  102. package/components/common/vm/actions/common/customizeHardware/virtualHardware/reservation/ReservationNew.vue +5 -2
  103. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +5 -2
  104. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  105. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +85 -81
  106. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  107. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  108. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  109. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +71 -67
  110. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +150 -149
  111. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +146 -140
  112. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +31 -31
  113. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +31 -31
  114. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  115. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  116. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +128 -128
  117. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  118. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +39 -39
  119. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  120. package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/ToolsNew.vue +5 -1
  121. package/components/common/vm/actions/common/lib/utils/capabilities.ts +52 -52
  122. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  123. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +44 -44
  124. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  125. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  126. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  127. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  128. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  129. package/components/common/vm/actions/common/select/storage/Storage.vue +2 -0
  130. package/components/common/vm/actions/common/select/storage/new/New.vue +6 -1
  131. package/components/common/vm/actions/common/select/storage/new/lib/config/table.ts +2 -1
  132. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  133. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  134. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  135. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  136. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  137. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  138. package/components/common/wizards/vm/migrate/select/computeResource/tableView/TableView.vue +135 -137
  139. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  140. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  141. package/composables/productNameLocal.ts +30 -30
  142. package/composables/useAppVersion.ts +21 -21
  143. package/package.json +2 -2
  144. package/plugins/cron.ts +75 -0
  145. package/plugins/date.ts +233 -233
  146. package/plugins/panelStates.ts +70 -70
  147. package/plugins/text.ts +59 -59
  148. package/public/spice-console/lib/images/bitmap.js +203 -203
  149. package/public/spice-console/network/spicechannel.js +387 -387
  150. package/store/main/mutations.ts +7 -7
  151. package/store/main/state.ts +7 -7
  152. 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>