bfg-common 1.5.539 → 1.5.540

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 (158) 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/collapse/CollapseNav.vue +170 -170
  8. package/components/atoms/perPage/PerPage.vue +58 -58
  9. package/components/atoms/table/dataGrid/DataGrid.vue +1718 -1718
  10. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  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/common/backup/storage/actions/add/Add.vue +251 -251
  14. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  15. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  16. package/components/common/diagramMain/modals/lib/config/portModal.ts +251 -251
  17. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  18. package/components/common/diagramMain/port/Port.vue +580 -580
  19. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  20. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  21. package/components/common/pages/backups/DetailView.vue +52 -52
  22. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  23. package/components/common/pages/backups/modals/Modals.vue +243 -243
  24. package/components/common/pages/backups/modals/createBackup/CreateBackup.vue +195 -195
  25. package/components/common/pages/backups/modals/createBackup/configuration/backupWindow/BackupWindow.vue +29 -29
  26. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/MaxBandwidth.vue +69 -69
  27. package/components/common/pages/backups/modals/createBackup/configuration/strategy/Strategy.vue +38 -38
  28. package/components/common/pages/backups/modals/createBackup/datastores/tableView/new/TableView.vue +3 -3
  29. package/components/common/pages/backups/modals/createBackup/disks/tableView/new/lib/config/table.ts +1 -0
  30. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  31. package/components/common/pages/backups/modals/createBackup/lib/models/interfaces.ts +8 -8
  32. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  33. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  34. package/components/common/pages/backups/modals/restore/Restore.vue +78 -196
  35. package/components/common/pages/backups/modals/restore/RestoreNew.vue +289 -0
  36. package/components/common/pages/backups/modals/restore/RestoreOld.vue +173 -0
  37. package/components/common/pages/backups/modals/restore/disks/Disks.vue +32 -27
  38. package/components/common/pages/backups/modals/restore/disks/DisksNew.vue +17 -0
  39. package/components/common/pages/backups/modals/restore/disks/DisksOld.vue +21 -0
  40. package/components/common/pages/backups/modals/restore/disks/tableView/new/Table.vue +126 -0
  41. package/components/common/pages/backups/modals/restore/disks/tableView/new/lib/config/table.ts +175 -0
  42. package/components/common/pages/backups/modals/restore/disks/tableView/{TableView.vue → old/Table.vue} +6 -3
  43. package/components/common/pages/backups/modals/restore/disks/tableView/{lib → old/lib}/config/keys.ts +1 -1
  44. package/components/common/pages/backups/modals/restore/disks/tableView/{lib → old/lib}/config/table.ts +117 -117
  45. package/components/common/pages/backups/modals/restore/disks/tableView/{lib → old/lib}/models/types.ts +1 -1
  46. package/components/common/pages/backups/modals/restore/lib/config/readyToCompleteOptions.ts +62 -0
  47. package/components/common/pages/backups/modals/restore/lib/config/steps.ts +21 -21
  48. package/components/common/pages/backups/modals/restore/name/Name.vue +31 -166
  49. package/components/common/pages/backups/modals/restore/name/NameNew.vue +98 -0
  50. package/components/common/pages/backups/modals/restore/name/NameOld.vue +86 -0
  51. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  52. package/components/common/pages/backups/modals/restore/networks/Networks.vue +63 -70
  53. package/components/common/pages/backups/modals/restore/networks/NetworksNew.vue +78 -0
  54. package/components/common/pages/backups/modals/restore/networks/NetworksOld.vue +48 -0
  55. package/components/common/pages/backups/modals/restore/networks/table/new/Table.vue +269 -0
  56. package/components/common/pages/backups/modals/restore/networks/table/new/lib/config/table.ts +127 -0
  57. package/components/common/pages/backups/modals/restore/networks/table/{Table.vue → old/Table.vue} +219 -214
  58. package/components/common/pages/backups/modals/restore/networks/table/{adapterType → old/adapterType}/AdapterType.vue +1 -1
  59. package/components/common/pages/backups/modals/restore/networks/table/{lib → old/lib}/config/networkTable.ts +1 -1
  60. package/components/common/pages/backups/modals/restore/networks/table/old/lib/config/tableKeys.ts +8 -0
  61. package/components/common/pages/backups/modals/restore/types/Types.vue +9 -50
  62. package/components/common/pages/backups/modals/restore/types/TypesNew.vue +95 -0
  63. package/components/common/pages/backups/modals/restore/types/TypesOld.vue +61 -0
  64. package/components/common/pages/backups/modals/restore/types/lib/config/descriptions.ts +1 -0
  65. package/components/common/pages/backups/modals/restore/types/lib/config/typeOptions.ts +25 -25
  66. package/components/common/pages/backups/modals/restore/validation/validation.ts +108 -0
  67. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  68. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  69. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  70. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  71. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  72. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  73. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  74. package/components/common/select/radio/RadioGroup.vue +137 -137
  75. package/components/common/spiceConsole/Drawer.vue +420 -420
  76. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  77. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  78. package/components/common/tools/Actions.vue +207 -207
  79. package/components/common/treeView/TreeView.vue +52 -52
  80. package/components/common/vm/actions/add/Add.vue +949 -950
  81. package/components/common/vm/actions/add/New.vue +689 -690
  82. package/components/common/vm/actions/add/Old.vue +400 -402
  83. package/components/common/vm/actions/add/lib/config/steps.ts +347 -347
  84. package/components/common/vm/actions/clone/Clone.vue +808 -809
  85. package/components/common/vm/actions/clone/new/New.vue +454 -457
  86. package/components/common/vm/actions/clone/old/Old.vue +378 -378
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +368 -368
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +427 -427
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  96. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  98. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  99. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  101. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  102. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  103. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  104. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  105. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  106. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  107. package/components/common/vm/actions/common/select/storage/Old.vue +132 -125
  108. package/components/common/vm/actions/common/select/storage/Storage.vue +167 -178
  109. package/components/common/vm/actions/common/select/storage/new/New.vue +330 -311
  110. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  111. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  112. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  113. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  114. package/components/common/vm/actions/register/Register.vue +352 -352
  115. package/components/common/vm/actions/register/lib/config/steps.ts +86 -86
  116. package/components/common/wizards/common/steps/computeResource/ComputeResource.vue +85 -86
  117. package/components/common/wizards/common/steps/computeResource/New.vue +92 -93
  118. package/components/common/wizards/common/steps/computeResource/Old.vue +102 -103
  119. package/components/common/wizards/common/{compatibility → steps/computeResource/compatibility}/Compatibility.vue +31 -35
  120. package/components/common/wizards/common/{compatibility → steps/computeResource/compatibility}/New.vue +98 -99
  121. package/components/common/wizards/common/{compatibility → steps/computeResource/compatibility}/Old.vue +54 -53
  122. package/components/common/wizards/common/{compatibility → steps/computeResource/compatibility}/lib/models/enums.ts +1 -1
  123. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  124. package/components/common/wizards/common/steps/name/New.vue +221 -221
  125. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  126. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  127. package/components/common/wizards/common/steps/name/location/Location.vue +85 -85
  128. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  129. package/components/common/wizards/datastore/add/Add.vue +228 -228
  130. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  131. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  132. package/components/common/wizards/vm/migrate/select/computeResource/ComputeResource.vue +195 -205
  133. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  134. package/components/common/wizards/vm/migrate/select/storage/Storage.vue +1 -1
  135. package/composables/useAppVersion.ts +21 -21
  136. package/composables/useLocal.ts +6 -6
  137. package/composables/useLocalCommon.ts +39 -39
  138. package/package.json +1 -1
  139. package/plugins/console.ts +21 -21
  140. package/plugins/date.ts +233 -233
  141. package/plugins/mouse.ts +21 -21
  142. package/plugins/panelStates.ts +70 -70
  143. package/plugins/text.ts +59 -59
  144. package/public/spice-console/application/clientgui.js +854 -854
  145. package/public/spice-console/application/packetfactory.js +211 -211
  146. package/public/spice-console/application/virtualmouse.js +147 -147
  147. package/public/spice-console/lib/images/bitmap.js +203 -203
  148. package/public/spice-console/network/spicechannel.js +440 -440
  149. package/public/spice-console/process/cursorprocess.js +121 -121
  150. package/public/spice-console/process/inputprocess.js +227 -227
  151. package/public/spice-console/process/mainprocess.js +210 -210
  152. package/public/spice-console/run.js +210 -210
  153. package/store/main/mutations.ts +7 -7
  154. package/store/main/state.ts +7 -7
  155. package/components/common/pages/backups/modals/restore/networks/table/lib/config/tableKeys.ts +0 -10
  156. package/components/common/wizards/common/compatibility/lib/models/types.ts +0 -1
  157. /package/components/common/pages/backups/modals/restore/networks/table/{adapterType → old/adapterType}/lib/config/options.ts +0 -0
  158. /package/components/common/pages/backups/modals/restore/networks/table/{lib → old/lib}/models/types.ts +0 -0
@@ -1,196 +1,196 @@
1
- <template>
2
- <common-pages-backups-modals-create-backup-new
3
- v-if="isNewView"
4
- v-model="backupForm"
5
- v-model:scheduler-form="schedulerForm"
6
- :wizard="wizard"
7
- :selected-scheme="selectedScheme"
8
- :alert-messages="alertMessages"
9
- :title="title"
10
- :is-scheduled-tasks="props.isScheduledTasks"
11
- :is-edit-scheduled-tasks="props.isEditScheduledTasks"
12
- :target="props.target"
13
- :selected-vm-name="props.selectedVmName"
14
- :disks="props.disks"
15
- :disks-loading="props.disksLoading"
16
- :datastore-table="props.datastoreTable"
17
- :datastore-table-loading="props.datastoreTableLoading"
18
- :ready-to-complete-data="readyToCompleteInfo"
19
- @change-steps="onChangeSteps"
20
- @submit="emits('finish')"
21
- @hide="emits('hide')"
22
- />
23
- <common-pages-backups-modals-create-backup-old
24
- v-else
25
- v-model="backupForm"
26
- v-model:scheduler-form="schedulerForm"
27
- :wizard="wizard"
28
- :selected-scheme="selectedScheme"
29
- :alert-messages="alertMessages"
30
- :title="title"
31
- :alert-errors="errors"
32
- :is-scheduled-tasks="props.isScheduledTasks"
33
- :is-edit-scheduled-tasks="props.isEditScheduledTasks"
34
- :target="props.target"
35
- :selected-vm-name="props.selectedVmName"
36
- :disks="props.disks"
37
- :disks-loading="props.disksLoading"
38
- :datastore-table="props.datastoreTable"
39
- :datastore-table-loading="props.datastoreTableLoading"
40
- :ready-to-complete-data="readyToCompleteInfo"
41
- @change-step-create-backup="onChangeSteps"
42
- @remove-validation-errors="onRemoveValidationErrors"
43
- @finish="emits('finish')"
44
- @hide="emits('hide')"
45
- />
46
- </template>
47
-
48
- <script setup lang="ts">
49
-
50
- import type { UI_I_WizardStep } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
51
- import Wizard from '~/node_modules/bfg-uikit/components/ui/wizard/lib/utils/utils'
52
- import type { UI_I_ValidationReturn } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
53
- import type {UI_I_Localization} from "~/lib/models/interfaces";
54
- import {
55
- stepsSchemeInitial,
56
- stepsFunc,
57
- dynamicSteps
58
- } from '~/components/common/pages/backups/modals/createBackup/lib/config/steps'
59
- import type {
60
- UI_I_BackupDatastoreTable,
61
- UI_I_CreateBackupForm,
62
- UI_I_Pvm
63
- } from '~/components/common/pages/backups/modals/lib/models/interfaces'
64
- import { strategyOptionsFunc } from '~/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions'
65
- import {
66
- readyToCompleteOptions
67
- } from '~/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions'
68
- import {
69
- checkName,
70
- checkDisks,
71
- checkDatastore,
72
- checkConfiguration
73
- } from '~/components/common/pages/backups/modals/createBackup/lib/validation/validations'
74
- import type {UI_I_NameCheck} from "~/components/common/pages/backups/modals/restore/name/lib/models/interfaces";
75
- import type {UI_I_SelectInputItem} from "~/components/common/select/input/lib/models/interfaces";
76
- import type {UI_I_TableInfoItem} from "~/components/atoms/table/info/lib/models/interfaces";
77
-
78
-
79
- const backupForm = defineModel<UI_I_CreateBackupForm>({ required: true })
80
- const schedulerForm = defineModel('schedulerForm', { required: true })
81
-
82
- const props = defineProps<{
83
- isEdit: boolean // ToDo проверить на использование
84
- target: string
85
- isScheduledTasks: boolean
86
- isEditScheduledTasks: boolean
87
- selectedVmName: string
88
- disks: UI_I_Pvm['disk_devices']
89
- disksLoading: boolean
90
- datastoreTable: UI_I_BackupDatastoreTable | null
91
- datastoreTableLoading: boolean
92
- }>()
93
-
94
- const emits = defineEmits<{
95
- (event: 'change-step-create-backup', value: UI_I_WizardStep[]): void
96
- (event: 'check-name', value: UI_I_NameCheck): void
97
- (event: 'finish'): void
98
- (event: 'hide'): void
99
- }>()
100
-
101
- const localization = computed<UI_I_Localization>(() => useLocal())
102
-
103
- const { $store }: any = useNuxtApp()
104
-
105
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
106
-
107
- const title = computed<string>(() => {
108
- const { createBackup, updateBackup, scheduleNewTasks, scheduleTaskEdit } =
109
- localization.value.common
110
- let result = props.isEdit ? updateBackup : createBackup
111
- if (props.isScheduledTasks) {
112
- const schedulerMode = props.isEditScheduledTasks
113
- ? scheduleTaskEdit
114
- : scheduleNewTasks
115
-
116
- result = `${schedulerMode} (${createBackup})`
117
- }
118
-
119
- return result
120
- })
121
-
122
-
123
- const wizard: Wizard = new Wizard(
124
- stepsFunc(localization.value),
125
- stepsSchemeInitial(props.isScheduledTasks)
126
- )
127
-
128
- const selectedScheme = computed<number[]>(() => wizard.selectedScheme.value)
129
- const alertMessages = computed<string[][]>(() => wizard.alertMessages.value)
130
-
131
- const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> => {
132
- emits('change-step-create-backup', value)
133
- wizard.changeSteps(value, validationFunc)
134
- }
135
-
136
- const validationFunc = async (
137
- value: UI_I_WizardStep[],
138
- currentStep: UI_I_WizardStep,
139
- nextStep: UI_I_WizardStep
140
- ): Promise<UI_I_ValidationReturn> => {
141
- let stepHasError = false
142
- const stepShouldStop = {
143
- ifOnCurrentStep: false,
144
- ifFromAnyStep: false,
145
- stoppageStepId: -1
146
- }
147
-
148
- if (wizard.isValidateForStep(dynamicSteps.general, currentStep.id, nextStep.id)) {
149
- const nameValidation = await checkName(value, backupForm.value.name, wizard, localization.value, emits)
150
- value = nameValidation.newValue
151
- stepHasError = nameValidation.stepHasError
152
- }
153
-
154
- if (wizard.isValidateForStep(dynamicSteps.disks, currentStep.id, nextStep.id)) {
155
- const disksValidation = checkDisks(value, backupForm.value, wizard, localization.value, showValidationErrors, onRemoveValidationErrors)
156
- value = disksValidation.newValue
157
- stepHasError = disksValidation.stepHasError
158
- }
159
-
160
- if (wizard.isValidateForStep(dynamicSteps.datastores, currentStep.id, nextStep.id)) {
161
- const datastoreValidation = checkDatastore(value, backupForm.value, wizard, localization.value, showValidationErrors, onRemoveValidationErrors)
162
- value = datastoreValidation.newValue
163
- stepHasError = datastoreValidation.stepHasError
164
- }
165
-
166
- if (wizard.isValidateForStep(dynamicSteps.configuration, currentStep.id, nextStep.id)) {
167
- const configurationValidation = checkConfiguration(value, backupForm.value.bandwidth_limit, wizard, localization.value)
168
- value = configurationValidation.newValue
169
- stepHasError = configurationValidation.stepHasError
170
- }
171
-
172
- return {
173
- newValue: value,
174
- stepHasError,
175
- stepShouldStop
176
- }
177
- }
178
-
179
- const errors = ref<string[]>([])
180
- const showValidationErrors = (data: string[]): void => {
181
- errors.value = data
182
- }
183
- const onRemoveValidationErrors = (): void => {
184
- errors.value = []
185
- }
186
-
187
- const strategyOptions = ref<UI_I_SelectInputItem[]>(
188
- strategyOptionsFunc(localization.value)
189
- )
190
-
191
- const readyToCompleteInfo = computed<UI_I_TableInfoItem[]>(() => {
192
- return readyToCompleteOptions(backupForm.value, localization.value, strategyOptions.value, props.datastoreTable)
193
- })
194
-
195
- </script>
1
+ <template>
2
+ <common-pages-backups-modals-create-backup-new
3
+ v-if="isNewView"
4
+ v-model="backupForm"
5
+ v-model:scheduler-form="schedulerForm"
6
+ :wizard="wizard"
7
+ :selected-scheme="selectedScheme"
8
+ :alert-messages="alertMessages"
9
+ :title="title"
10
+ :is-scheduled-tasks="props.isScheduledTasks"
11
+ :is-edit-scheduled-tasks="props.isEditScheduledTasks"
12
+ :target="props.target"
13
+ :selected-vm-name="props.selectedVmName"
14
+ :disks="props.disks"
15
+ :disks-loading="props.disksLoading"
16
+ :datastore-table="props.datastoreTable"
17
+ :datastore-table-loading="props.datastoreTableLoading"
18
+ :ready-to-complete-data="readyToCompleteInfo"
19
+ @change-steps="onChangeSteps"
20
+ @submit="emits('finish')"
21
+ @hide="emits('hide')"
22
+ />
23
+ <common-pages-backups-modals-create-backup-old
24
+ v-else
25
+ v-model="backupForm"
26
+ v-model:scheduler-form="schedulerForm"
27
+ :wizard="wizard"
28
+ :selected-scheme="selectedScheme"
29
+ :alert-messages="alertMessages"
30
+ :title="title"
31
+ :alert-errors="errors"
32
+ :is-scheduled-tasks="props.isScheduledTasks"
33
+ :is-edit-scheduled-tasks="props.isEditScheduledTasks"
34
+ :target="props.target"
35
+ :selected-vm-name="props.selectedVmName"
36
+ :disks="props.disks"
37
+ :disks-loading="props.disksLoading"
38
+ :datastore-table="props.datastoreTable"
39
+ :datastore-table-loading="props.datastoreTableLoading"
40
+ :ready-to-complete-data="readyToCompleteInfo"
41
+ @change-step-create-backup="onChangeSteps"
42
+ @remove-validation-errors="onRemoveValidationErrors"
43
+ @finish="emits('finish')"
44
+ @hide="emits('hide')"
45
+ />
46
+ </template>
47
+
48
+ <script setup lang="ts">
49
+
50
+ import type { UI_I_WizardStep } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
51
+ import Wizard from '~/node_modules/bfg-uikit/components/ui/wizard/lib/utils/utils'
52
+ import type { UI_I_ValidationReturn } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
53
+ import type {UI_I_Localization} from "~/lib/models/interfaces";
54
+ import {
55
+ stepsSchemeInitial,
56
+ stepsFunc,
57
+ dynamicSteps
58
+ } from '~/components/common/pages/backups/modals/createBackup/lib/config/steps'
59
+ import type {
60
+ UI_I_BackupDatastoreTable,
61
+ UI_I_CreateBackupForm,
62
+ UI_I_Pvm
63
+ } from '~/components/common/pages/backups/modals/lib/models/interfaces'
64
+ import { strategyOptionsFunc } from '~/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions'
65
+ import {
66
+ readyToCompleteOptions
67
+ } from '~/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions'
68
+ import {
69
+ checkName,
70
+ checkDisks,
71
+ checkDatastore,
72
+ checkConfiguration
73
+ } from '~/components/common/pages/backups/modals/createBackup/lib/validation/validations'
74
+ import type {UI_I_NameCheck} from "~/components/common/pages/backups/modals/restore/name/lib/models/interfaces";
75
+ import type {UI_I_SelectInputItem} from "~/components/common/select/input/lib/models/interfaces";
76
+ import type {UI_I_TableInfoItem} from "~/components/atoms/table/info/lib/models/interfaces";
77
+
78
+
79
+ const backupForm = defineModel<UI_I_CreateBackupForm>({ required: true })
80
+ const schedulerForm = defineModel('schedulerForm', { required: true })
81
+
82
+ const props = defineProps<{
83
+ isEdit?: boolean // ToDo проверить на использование
84
+ target: string
85
+ isScheduledTasks: boolean
86
+ isEditScheduledTasks: boolean
87
+ selectedVmName: string
88
+ disks: UI_I_Pvm['disk_devices']
89
+ disksLoading: boolean
90
+ datastoreTable: UI_I_BackupDatastoreTable | null
91
+ datastoreTableLoading: boolean
92
+ }>()
93
+
94
+ const emits = defineEmits<{
95
+ (event: 'change-step-create-backup', value: UI_I_WizardStep[]): void
96
+ (event: 'check-name', value: UI_I_NameCheck): void
97
+ (event: 'finish'): void
98
+ (event: 'hide'): void
99
+ }>()
100
+
101
+ const localization = computed<UI_I_Localization>(() => useLocal())
102
+
103
+ const { $store }: any = useNuxtApp()
104
+
105
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
106
+
107
+ const title = computed<string>(() => {
108
+ const { createBackup, updateBackup, scheduleNewTasks, scheduleTaskEdit } =
109
+ localization.value.common
110
+ let result = props.isEdit ? updateBackup : createBackup
111
+ if (props.isScheduledTasks) {
112
+ const schedulerMode = props.isEditScheduledTasks
113
+ ? scheduleTaskEdit
114
+ : scheduleNewTasks
115
+
116
+ result = `${schedulerMode} (${createBackup})`
117
+ }
118
+
119
+ return result
120
+ })
121
+
122
+
123
+ const wizard: Wizard = new Wizard(
124
+ stepsFunc(localization.value),
125
+ stepsSchemeInitial(props.isScheduledTasks)
126
+ )
127
+
128
+ const selectedScheme = computed<number[]>(() => wizard.selectedScheme.value)
129
+ const alertMessages = computed<string[][]>(() => wizard.alertMessages.value)
130
+
131
+ const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> => {
132
+ emits('change-step-create-backup', value)
133
+ wizard.changeSteps(value, validationFunc)
134
+ }
135
+
136
+ const validationFunc = async (
137
+ value: UI_I_WizardStep[],
138
+ currentStep: UI_I_WizardStep,
139
+ nextStep: UI_I_WizardStep
140
+ ): Promise<UI_I_ValidationReturn> => {
141
+ let stepHasError = false
142
+ const stepShouldStop = {
143
+ ifOnCurrentStep: false,
144
+ ifFromAnyStep: false,
145
+ stoppageStepId: -1
146
+ }
147
+
148
+ if (wizard.isValidateForStep(dynamicSteps.general, currentStep.id, nextStep.id)) {
149
+ const nameValidation = await checkName(value, backupForm.value.name, wizard, localization.value, emits)
150
+ value = nameValidation.newValue
151
+ stepHasError = nameValidation.stepHasError
152
+ }
153
+
154
+ if (wizard.isValidateForStep(dynamicSteps.disks, currentStep.id, nextStep.id)) {
155
+ const disksValidation = checkDisks(value, backupForm.value, wizard, localization.value, showValidationErrors, onRemoveValidationErrors)
156
+ value = disksValidation.newValue
157
+ stepHasError = disksValidation.stepHasError
158
+ }
159
+
160
+ if (wizard.isValidateForStep(dynamicSteps.datastores, currentStep.id, nextStep.id)) {
161
+ const datastoreValidation = checkDatastore(value, backupForm.value, wizard, localization.value, showValidationErrors, onRemoveValidationErrors)
162
+ value = datastoreValidation.newValue
163
+ stepHasError = datastoreValidation.stepHasError
164
+ }
165
+
166
+ if (wizard.isValidateForStep(dynamicSteps.configuration, currentStep.id, nextStep.id)) {
167
+ const configurationValidation = checkConfiguration(value, backupForm.value.bandwidth_limit, wizard, localization.value)
168
+ value = configurationValidation.newValue
169
+ stepHasError = configurationValidation.stepHasError
170
+ }
171
+
172
+ return {
173
+ newValue: value,
174
+ stepHasError,
175
+ stepShouldStop
176
+ }
177
+ }
178
+
179
+ const errors = ref<string[]>([])
180
+ const showValidationErrors = (data: string[]): void => {
181
+ errors.value = data
182
+ }
183
+ const onRemoveValidationErrors = (): void => {
184
+ errors.value = []
185
+ }
186
+
187
+ const strategyOptions = ref<UI_I_SelectInputItem[]>(
188
+ strategyOptionsFunc(localization.value)
189
+ )
190
+
191
+ const readyToCompleteInfo = computed<UI_I_TableInfoItem[]>(() => {
192
+ return readyToCompleteOptions(backupForm.value, localization.value, strategyOptions.value, props.datastoreTable)
193
+ })
194
+
195
+ </script>
196
196
  <style scoped lang="scss"></style>
@@ -1,29 +1,29 @@
1
- <template>
2
- <atoms-stack-block
3
- :has-children="false"
4
- test-id="backup-window-stack-block"
5
- >
6
- <template #stackBlockKey>
7
- <span>{{ localization.common.backupWindow }}</span>
8
- </template>
9
- <template #stackBlockContent>
10
- <input
11
- v-model="model.start_window_min"
12
- data-id="hours-input"
13
- type="number"
14
- class="hrs"
15
- />
16
- </template>
17
- </atoms-stack-block>
18
- </template>
19
-
20
- <script lang="ts" setup>
21
- import type { UI_I_Localization } from '~/lib/models/interfaces'
22
- import type { UI_I_CreateBackupForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
23
-
24
- const model = defineModel<UI_I_CreateBackupForm>({ required: true })
25
-
26
- const localization = computed<UI_I_Localization>(() => useLocal())
27
- </script>
28
-
29
- <style lang="scss" scoped></style>
1
+ <template>
2
+ <atoms-stack-block
3
+ :has-children="false"
4
+ test-id="backup-window-stack-block"
5
+ >
6
+ <template #stackBlockKey>
7
+ <span>{{ localization.common.backupWindow }}</span>
8
+ </template>
9
+ <template #stackBlockContent>
10
+ <input
11
+ v-model="model.start_window_min"
12
+ data-id="hours-input"
13
+ type="number"
14
+ class="hrs"
15
+ />
16
+ </template>
17
+ </atoms-stack-block>
18
+ </template>
19
+
20
+ <script lang="ts" setup>
21
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
22
+ import type { UI_I_CreateBackupForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
23
+
24
+ const model = defineModel<UI_I_CreateBackupForm>({ required: true })
25
+
26
+ const localization = computed<UI_I_Localization>(() => useLocal())
27
+ </script>
28
+
29
+ <style lang="scss" scoped></style>
@@ -1,69 +1,69 @@
1
- <template>
2
- <atoms-stack-block
3
- :has-children="false"
4
- test-id="backup-max-bandwidth-stack-block"
5
- >
6
- <template #stackBlockKey>
7
- <span>{{ localization.common.maxBandwidth }}</span>
8
- </template>
9
- <template #stackBlockContent>
10
- <div class="flex-align-center">
11
- <input
12
- v-model="maxBindwidthLocal"
13
- data-id="mbps-input"
14
- type="number"
15
- class="mbps"
16
- />
17
-
18
- <common-select-input
19
- v-model="selectedType"
20
- :data="maxBandwidthOptionsLocal"
21
- test-id="backup-max-bandwidth-type"
22
- class="ml-1"
23
- />
24
- </div>
25
- </template>
26
- </atoms-stack-block>
27
- </template>
28
-
29
- <script lang="ts" setup>
30
- import type { UI_I_Localization } from '~/lib/models/interfaces'
31
- import type { UI_I_CreateBackupForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
32
- import type { UI_T_BandwidthOption } from '~/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/models/types'
33
- import type { UI_I_SelectInputItem } from '~/components/common/select/input/lib/models/interfaces'
34
- import { maxBandwidthOptions } from '~/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options'
35
-
36
- const model = defineModel<UI_I_CreateBackupForm>({ required: true })
37
-
38
- const localization = computed<UI_I_Localization>(() => useLocal())
39
- const { $binary }: any = useNuxtApp()
40
-
41
- const maxBandwidthOptionsLocal =
42
- ref<UI_I_SelectInputItem[]>(maxBandwidthOptions)
43
-
44
- const maxBindwidthLocal = computed<number>({
45
- get() {
46
- return selectedType.value === 1
47
- ? $binary.bToGb(model.value.bandwidth_limit)
48
- : $binary.bToMb(model.value.bandwidth_limit)
49
- },
50
- set(newValue: number) {
51
- model.value.bandwidth_limit =
52
- selectedType.value === 1
53
- ? $binary.gbToB(newValue)
54
- : $binary.mbToB(newValue)
55
- },
56
- })
57
-
58
- const selectedType = ref<UI_T_BandwidthOption>(0)
59
- watch(selectedType, (newValue) => {
60
- if (newValue === 1) model.value.bandwidth_limit *= 1_024
61
- else model.value.bandwidth_limit /= 1_024
62
- })
63
- </script>
64
-
65
- <style lang="scss" scoped>
66
- #backup-transaction-logs {
67
- margin: 4px 4px 0 0;
68
- }
69
- </style>
1
+ <template>
2
+ <atoms-stack-block
3
+ :has-children="false"
4
+ test-id="backup-max-bandwidth-stack-block"
5
+ >
6
+ <template #stackBlockKey>
7
+ <span>{{ localization.common.maxBandwidth }}</span>
8
+ </template>
9
+ <template #stackBlockContent>
10
+ <div class="flex-align-center">
11
+ <input
12
+ v-model="maxBindwidthLocal"
13
+ data-id="mbps-input"
14
+ type="number"
15
+ class="mbps"
16
+ />
17
+
18
+ <common-select-input
19
+ v-model="selectedType"
20
+ :data="maxBandwidthOptionsLocal"
21
+ test-id="backup-max-bandwidth-type"
22
+ class="ml-1"
23
+ />
24
+ </div>
25
+ </template>
26
+ </atoms-stack-block>
27
+ </template>
28
+
29
+ <script lang="ts" setup>
30
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
31
+ import type { UI_I_CreateBackupForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
32
+ import type { UI_T_BandwidthOption } from '~/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/models/types'
33
+ import type { UI_I_SelectInputItem } from '~/components/common/select/input/lib/models/interfaces'
34
+ import { maxBandwidthOptions } from '~/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options'
35
+
36
+ const model = defineModel<UI_I_CreateBackupForm>({ required: true })
37
+
38
+ const localization = computed<UI_I_Localization>(() => useLocal())
39
+ const { $binary }: any = useNuxtApp()
40
+
41
+ const maxBandwidthOptionsLocal =
42
+ ref<UI_I_SelectInputItem[]>(maxBandwidthOptions)
43
+
44
+ const maxBindwidthLocal = computed<number>({
45
+ get() {
46
+ return selectedType.value === 1
47
+ ? $binary.bToGb(model.value.bandwidth_limit)
48
+ : $binary.bToMb(model.value.bandwidth_limit)
49
+ },
50
+ set(newValue: number) {
51
+ model.value.bandwidth_limit =
52
+ selectedType.value === 1
53
+ ? $binary.gbToB(newValue)
54
+ : $binary.mbToB(newValue)
55
+ },
56
+ })
57
+
58
+ const selectedType = ref<UI_T_BandwidthOption>(0)
59
+ watch(selectedType, (newValue) => {
60
+ if (newValue === 1) model.value.bandwidth_limit *= 1_024
61
+ else model.value.bandwidth_limit /= 1_024
62
+ })
63
+ </script>
64
+
65
+ <style lang="scss" scoped>
66
+ #backup-transaction-logs {
67
+ margin: 4px 4px 0 0;
68
+ }
69
+ </style>