bfg-common 1.5.692 → 1.5.694

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 (127) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  4. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  5. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  6. package/assets/localization/local_be.json +6 -0
  7. package/assets/localization/local_en.json +6 -0
  8. package/assets/localization/local_hy.json +6 -0
  9. package/assets/localization/local_kk.json +6 -0
  10. package/assets/localization/local_ru.json +6 -0
  11. package/assets/localization/local_zh.json +6 -0
  12. package/assets/scss/components/auth.scss +17 -0
  13. package/components/atoms/TheIcon3.vue +50 -50
  14. package/components/atoms/collapse/CollapseNav.vue +170 -170
  15. package/components/atoms/perPage/PerPage.vue +58 -58
  16. package/components/atoms/switch/Switch.vue +103 -103
  17. package/components/atoms/table/dataGrid/DataGrid.vue +1718 -1718
  18. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  19. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  20. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  21. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  22. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  23. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  24. package/components/common/diagramMain/port/Port.vue +580 -580
  25. package/components/common/layout/theHeader/TheHeaderNew.vue +315 -315
  26. package/components/common/layout/theHeader/TheHeaderOld.vue +262 -262
  27. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  28. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  29. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesNew.vue +13 -0
  30. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesOld.vue +144 -144
  31. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/ChangeLanguage.vue +8 -15
  32. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/{ChangeLanguageNew.vue → New.vue} +1 -2
  33. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/{ChangeLanguageOld.vue → Old.vue} +0 -2
  34. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/DefaultConsole.vue +8 -7
  35. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/{DefaultConsoleNew.vue → New.vue} +3 -3
  36. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/{DefaultConsoleOld.vue → Old.vue} +2 -2
  37. package/components/common/layout/theHeader/userMenu/modals/preferences/inventory/Inventory.vue +7 -8
  38. package/components/common/layout/theHeader/userMenu/modals/preferences/inventory/{InventoryNew.vue → New.vue} +3 -2
  39. package/components/common/layout/theHeader/userMenu/modals/preferences/inventory/{InventoryOld.vue → Old.vue} +2 -2
  40. package/components/common/layout/theHeader/userMenu/modals/preferences/lib/models/types.ts +7 -7
  41. package/components/common/layout/theHeader/userMenu/modals/preferences/security/New.vue +277 -12
  42. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Old.vue +184 -216
  43. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Security.vue +90 -31
  44. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/{TimeFormatNew.vue → New.vue} +3 -3
  45. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/{TimeFormatOld.vue → Old.vue} +2 -2
  46. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/TimeFormat.vue +8 -8
  47. package/components/common/layout/theHeader/userMenu/modals/preferences/view/{ViewNew.vue → New.vue} +12 -3
  48. package/components/common/layout/theHeader/userMenu/modals/preferences/view/{ViewOld.vue → Old.vue} +2 -2
  49. package/components/common/layout/theHeader/userMenu/modals/preferences/view/View.vue +8 -7
  50. package/components/common/pages/backups/DetailView.vue +52 -52
  51. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  52. package/components/common/pages/backups/modals/Modals.vue +243 -243
  53. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  54. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  55. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  56. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  57. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  58. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  59. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  60. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  61. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  62. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  63. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  64. package/components/common/qr/Qr.vue +69 -57
  65. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  66. package/components/common/select/radio/RadioGroup.vue +137 -137
  67. package/components/common/spiceConsole/Drawer.vue +420 -420
  68. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  69. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  70. package/components/common/tools/Actions.vue +207 -207
  71. package/components/common/treeView/TreeView.vue +52 -52
  72. package/components/common/vm/actions/clone/lib/config/steps.ts +295 -295
  73. package/components/common/vm/actions/clone/new/New.vue +438 -438
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +706 -706
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +489 -489
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +253 -253
  79. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +156 -156
  80. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  81. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  82. package/components/common/vm/actions/common/select/options/New.vue +264 -264
  83. package/components/common/vm/actions/common/select/options/Old.vue +109 -109
  84. package/components/common/vm/actions/common/select/options/Options.vue +58 -58
  85. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  86. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  87. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  88. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  89. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  90. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  91. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  92. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  93. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  94. package/components/common/wizards/common/steps/name/New.vue +221 -221
  95. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  96. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  97. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  98. package/components/common/wizards/datastore/add/Add.vue +228 -228
  99. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  100. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceNew.vue +232 -232
  101. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceOld.vue +231 -231
  102. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/AdvancedOptions.vue +43 -43
  103. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/New.vue +101 -101
  104. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/Old.vue +101 -101
  105. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  106. package/composables/useAppVersion.ts +21 -21
  107. package/composables/useEnvLanguage.ts +22 -22
  108. package/composables/useLocal.ts +6 -6
  109. package/composables/useLocalCommon.ts +39 -39
  110. package/package.json +2 -2
  111. package/plugins/console.ts +21 -21
  112. package/plugins/mouse.ts +21 -21
  113. package/plugins/panelStates.ts +70 -70
  114. package/plugins/text.ts +59 -59
  115. package/public/spice-console/application/clientgui.js +854 -854
  116. package/public/spice-console/application/packetfactory.js +211 -211
  117. package/public/spice-console/application/virtualmouse.js +147 -147
  118. package/public/spice-console/lib/images/bitmap.js +203 -203
  119. package/public/spice-console/network/spicechannel.js +440 -440
  120. package/public/spice-console/process/cursorprocess.js +128 -128
  121. package/public/spice-console/process/inputprocess.js +227 -227
  122. package/public/spice-console/process/mainprocess.js +212 -212
  123. package/public/spice-console/run.js +210 -210
  124. package/store/main/mutations.ts +7 -7
  125. package/store/main/state.ts +7 -7
  126. package/store/tasks/mappers/recentTasks.ts +123 -123
  127. package/store/tasks/mutations.ts +82 -82
@@ -1,243 +1,243 @@
1
- <template>
2
- <common-pages-backups-modals-create-backup
3
- v-if="schedulerTask.isShow"
4
- v-model="backupForm"
5
- v-model:scheduler-form="schedulerTaskForm"
6
- :is-scheduled-tasks="schedulerTask.scheduler.isSchedulerTask"
7
- :is-edit-scheduled-tasks="schedulerTask.scheduler.editTask"
8
- :target="props.target"
9
- :selected-vm-name="props.selectedVmName"
10
- :disks="props.disks"
11
- :disks-loading="props.disksLoading"
12
- :datastore-table="props.datastoreTable"
13
- :datastore-table-loading="props.datastoreTableLoading"
14
- @change-step-create-backup="onChangeStepCreateBackup"
15
- @check-name="onCheckBackupName"
16
- @finish="onCreateBackup"
17
- @hide="onHide"
18
- />
19
-
20
- <common-pages-backups-modals-restore
21
- v-if="isShowRestoreModal"
22
- v-model="restoreForm"
23
- :datastore="props.restoreDatastore"
24
- :datastore-loading="props.isRestoreDatastoreLoading"
25
- :networks="props.restoreNetworks"
26
- @get-datastore="onGetRestoreDatastore"
27
- @get-networks="onGetRestoreNetworks"
28
- @check-name="onCheckRestoreName"
29
- @finish="onRestore"
30
- @hide="onHide"
31
- />
32
-
33
- <common-pages-backups-modals-delete-backup
34
- v-if="isShowDeleteBackupModal || isShowDeleteAllBackupsModal"
35
- :name="action?.name"
36
- :is-loading="isLoadingDeleteBackup"
37
- :is-all="isShowDeleteAllBackupsModal"
38
- @remove="onDeleteBackup"
39
- @hide="onHide"
40
- />
41
- </template>
42
-
43
- <script lang="ts" setup>
44
- import type { UI_I_WizardStep } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
45
- import type { UI_T_Project } from '~/lib/models/types'
46
- import type {
47
- UI_I_SendTaskParams,
48
- UI_I_ModalPayload,
49
- } from '~/lib/models/interfaces'
50
- import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
51
- import type {
52
- UI_I_BackupDatastoreTable,
53
- UI_I_CreateBackupForm,
54
- UI_I_Pvm,
55
- UI_I_RestoreForm,
56
- } from '~/components/common/pages/backups/modals/lib/models/interfaces'
57
- import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
58
- import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
59
- import type { UI_I_BackupAction } from '~/components/common/pages/backups/lib/models/interfaces'
60
- import type { UI_I_NameCheck } from '~/components/common/pages/backups/modals/restore/name/lib/models/interfaces'
61
- import { sendTask } from '~/lib/utils/sendTask'
62
- import { scheduledTaskDefaultFormFunc } from '~/components/common/pages/scheduledTasks/modals/lib/config/createScheduledTask'
63
- import { backupDefaultFormFunc } from '~/components/common/pages/backups/modals/lib/config/createBackup'
64
- import { restoreDefaultFormFunc } from '~/components/common/pages/backups/modals/lib/config/restore'
65
- import { scheduledTasks } from '~/components/common/pages/scheduledTasks/lib/utils/utils'
66
-
67
- const action = defineModel<UI_I_BackupAction | null>('action', {
68
- required: true,
69
- })
70
-
71
- const props = defineProps<{
72
- project: UI_T_Project
73
- target: string
74
- selectedVmName: string
75
- disks: UI_I_Pvm['disk_devices']
76
- disksLoading: boolean
77
- datastoreTable: UI_I_BackupDatastoreTable | null
78
- datastoreTableLoading: boolean
79
- restoreDatastore: UI_I_DatastoreTableItem[]
80
- isRestoreDatastoreLoading: boolean
81
- restoreNetworks: UI_I_NetworkTableItem[]
82
- }>()
83
- const emits = defineEmits<{
84
- (event: 'change-step-create-backup', value: UI_I_WizardStep[]): void
85
- (event: 'get-restore-datastore', value: string): void
86
- (event: 'get-restore-networks', value: string): void
87
- (event: 'check-restore-name', value: UI_I_NameCheck): void
88
- (event: 'check-backup-name', value: UI_I_NameCheck): void
89
- (event: 'delete-backup', value: boolean): void
90
- }>()
91
-
92
- const { $store }: any = useNuxtApp()
93
-
94
- const backupForm = ref<UI_I_CreateBackupForm>(
95
- useDeepCopy(backupDefaultFormFunc())
96
- )
97
-
98
- const schedulerTaskForm = ref<UI_I_ScheduleNewTasksForm>(
99
- useDeepCopy(scheduledTaskDefaultFormFunc())
100
- )
101
-
102
- const restoreForm = ref<UI_I_RestoreForm>(useDeepCopy(restoreDefaultFormFunc()))
103
- const deleteBackupId = ref<string>('')
104
-
105
- const schedulerTask = computed<UI_I_ModalPayload>(
106
- () => $store.getters['backup/getCreateBackupModal']
107
- )
108
- watch(
109
- schedulerTask,
110
- (newValue: UI_I_ModalPayload) => {
111
- const { scheduler } = newValue
112
- if (!scheduler.isSchedulerTask) return
113
- schedulerTaskForm.value = scheduler.data
114
- },
115
- { immediate: true, deep: true }
116
- )
117
-
118
- const isShowDeleteBackupModal = ref<boolean>(false)
119
- const isShowDeleteAllBackupsModal = ref<boolean>(false)
120
- const isLoadingDeleteBackup = ref<boolean>(false)
121
- const isShowRestoreModal = ref<boolean>(false)
122
-
123
- const onCreateBackup = (): void => {
124
- // TODO
125
- backupForm.value.target = props.target
126
- const backupTask: UI_I_SendTaskParams = {
127
- method:
128
- props.project === 'sphere'
129
- ? 'VirtualMachines.CreateBackup'
130
- : 'backup.create_backup',
131
- target: props.target,
132
- args: backupForm.value,
133
- }
134
-
135
- const {
136
- scheduler: { isSchedulerTask, editTask, data },
137
- } = schedulerTask.value
138
- const sendData = isSchedulerTask
139
- ? scheduledTasks(
140
- schedulerTaskForm.value,
141
- backupTask,
142
- props.target,
143
- editTask,
144
- data,
145
- props.project
146
- )
147
- : backupTask
148
-
149
- sendTask(sendData)
150
- onHide()
151
- }
152
-
153
- const onDeleteBackup = async (isAll: boolean): Promise<void> => {
154
- isLoadingDeleteBackup.value = true
155
- emits('delete-backup', isAll)
156
- isLoadingDeleteBackup.value = false
157
- onHide()
158
- }
159
-
160
- const onRestore = (): void => {
161
- sendTask({
162
- args: restoreForm.value,
163
- method:
164
- props.project === 'sphere'
165
- ? 'VirtualMachines.RestoreBackup'
166
- : 'backup.restore_backup',
167
- target: props.target,
168
- })
169
- onHide()
170
- }
171
-
172
- watch(
173
- action,
174
- (newValue) => {
175
- switch (newValue?.action) {
176
- case 'createBackup':
177
- // TODO
178
- $store.dispatch('backup/A_SHOW_CREATE_BACKUP_MODAL', {
179
- isShow: true,
180
- scheduler: {
181
- isSchedulerTask: false,
182
- editTask: false,
183
- data: null,
184
- },
185
- })
186
- break
187
- case 'restoreBackup':
188
- isShowRestoreModal.value = true
189
- restoreForm.value.backup_storage = newValue.storageId || ''
190
- restoreForm.value.bucket = newValue.bucketId || ''
191
- restoreForm.value.backup = newValue.backupId || ''
192
- break
193
- case 'deleteBackup':
194
- deleteBackupId.value = newValue.backupId || ''
195
- isShowDeleteBackupModal.value = true
196
- break
197
- case 'deleteBackupAll':
198
- isShowDeleteAllBackupsModal.value = true
199
- break
200
- }
201
- },
202
- { deep: true }
203
- )
204
-
205
- const onHide = (): void => {
206
- // TODO
207
- $store.dispatch('backup/A_SHOW_CREATE_BACKUP_MODAL', {
208
- isShow: false,
209
- scheduler: {
210
- isSchedulerTask: false,
211
- editTask: false,
212
- data: null,
213
- },
214
- })
215
- isShowRestoreModal.value = false
216
- isShowDeleteBackupModal.value = false
217
- isShowDeleteAllBackupsModal.value = false
218
-
219
- action.value.action = ''
220
- backupForm.value = useDeepCopy(backupDefaultFormFunc())
221
- backupForm.value.target = props.target
222
- restoreForm.value = useDeepCopy(restoreDefaultFormFunc())
223
- }
224
-
225
- const onChangeStepCreateBackup = (value: UI_I_WizardStep[]): void => {
226
- emits('change-step-create-backup', value)
227
- }
228
- const onCheckBackupName = (data: UI_I_NameCheck): void => {
229
- emits('check-backup-name', data)
230
- }
231
-
232
- const onGetRestoreDatastore = (bucket: string): void => {
233
- emits('get-restore-datastore', bucket)
234
- }
235
- const onGetRestoreNetworks = (hostId: string): void => {
236
- emits('get-restore-networks', hostId)
237
- }
238
- const onCheckRestoreName = (data: UI_I_NameCheck): void => {
239
- emits('check-restore-name', data)
240
- }
241
- </script>
242
-
243
- <style lang="scss" scoped></style>
1
+ <template>
2
+ <common-pages-backups-modals-create-backup
3
+ v-if="schedulerTask.isShow"
4
+ v-model="backupForm"
5
+ v-model:scheduler-form="schedulerTaskForm"
6
+ :is-scheduled-tasks="schedulerTask.scheduler.isSchedulerTask"
7
+ :is-edit-scheduled-tasks="schedulerTask.scheduler.editTask"
8
+ :target="props.target"
9
+ :selected-vm-name="props.selectedVmName"
10
+ :disks="props.disks"
11
+ :disks-loading="props.disksLoading"
12
+ :datastore-table="props.datastoreTable"
13
+ :datastore-table-loading="props.datastoreTableLoading"
14
+ @change-step-create-backup="onChangeStepCreateBackup"
15
+ @check-name="onCheckBackupName"
16
+ @finish="onCreateBackup"
17
+ @hide="onHide"
18
+ />
19
+
20
+ <common-pages-backups-modals-restore
21
+ v-if="isShowRestoreModal"
22
+ v-model="restoreForm"
23
+ :datastore="props.restoreDatastore"
24
+ :datastore-loading="props.isRestoreDatastoreLoading"
25
+ :networks="props.restoreNetworks"
26
+ @get-datastore="onGetRestoreDatastore"
27
+ @get-networks="onGetRestoreNetworks"
28
+ @check-name="onCheckRestoreName"
29
+ @finish="onRestore"
30
+ @hide="onHide"
31
+ />
32
+
33
+ <common-pages-backups-modals-delete-backup
34
+ v-if="isShowDeleteBackupModal || isShowDeleteAllBackupsModal"
35
+ :name="action?.name"
36
+ :is-loading="isLoadingDeleteBackup"
37
+ :is-all="isShowDeleteAllBackupsModal"
38
+ @remove="onDeleteBackup"
39
+ @hide="onHide"
40
+ />
41
+ </template>
42
+
43
+ <script lang="ts" setup>
44
+ import type { UI_I_WizardStep } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
45
+ import type { UI_T_Project } from '~/lib/models/types'
46
+ import type {
47
+ UI_I_SendTaskParams,
48
+ UI_I_ModalPayload,
49
+ } from '~/lib/models/interfaces'
50
+ import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
51
+ import type {
52
+ UI_I_BackupDatastoreTable,
53
+ UI_I_CreateBackupForm,
54
+ UI_I_Pvm,
55
+ UI_I_RestoreForm,
56
+ } from '~/components/common/pages/backups/modals/lib/models/interfaces'
57
+ import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
58
+ import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
59
+ import type { UI_I_BackupAction } from '~/components/common/pages/backups/lib/models/interfaces'
60
+ import type { UI_I_NameCheck } from '~/components/common/pages/backups/modals/restore/name/lib/models/interfaces'
61
+ import { sendTask } from '~/lib/utils/sendTask'
62
+ import { scheduledTaskDefaultFormFunc } from '~/components/common/pages/scheduledTasks/modals/lib/config/createScheduledTask'
63
+ import { backupDefaultFormFunc } from '~/components/common/pages/backups/modals/lib/config/createBackup'
64
+ import { restoreDefaultFormFunc } from '~/components/common/pages/backups/modals/lib/config/restore'
65
+ import { scheduledTasks } from '~/components/common/pages/scheduledTasks/lib/utils/utils'
66
+
67
+ const action = defineModel<UI_I_BackupAction | null>('action', {
68
+ required: true,
69
+ })
70
+
71
+ const props = defineProps<{
72
+ project: UI_T_Project
73
+ target: string
74
+ selectedVmName: string
75
+ disks: UI_I_Pvm['disk_devices']
76
+ disksLoading: boolean
77
+ datastoreTable: UI_I_BackupDatastoreTable | null
78
+ datastoreTableLoading: boolean
79
+ restoreDatastore: UI_I_DatastoreTableItem[]
80
+ isRestoreDatastoreLoading: boolean
81
+ restoreNetworks: UI_I_NetworkTableItem[]
82
+ }>()
83
+ const emits = defineEmits<{
84
+ (event: 'change-step-create-backup', value: UI_I_WizardStep[]): void
85
+ (event: 'get-restore-datastore', value: string): void
86
+ (event: 'get-restore-networks', value: string): void
87
+ (event: 'check-restore-name', value: UI_I_NameCheck): void
88
+ (event: 'check-backup-name', value: UI_I_NameCheck): void
89
+ (event: 'delete-backup', value: boolean): void
90
+ }>()
91
+
92
+ const { $store }: any = useNuxtApp()
93
+
94
+ const backupForm = ref<UI_I_CreateBackupForm>(
95
+ useDeepCopy(backupDefaultFormFunc())
96
+ )
97
+
98
+ const schedulerTaskForm = ref<UI_I_ScheduleNewTasksForm>(
99
+ useDeepCopy(scheduledTaskDefaultFormFunc())
100
+ )
101
+
102
+ const restoreForm = ref<UI_I_RestoreForm>(useDeepCopy(restoreDefaultFormFunc()))
103
+ const deleteBackupId = ref<string>('')
104
+
105
+ const schedulerTask = computed<UI_I_ModalPayload>(
106
+ () => $store.getters['backup/getCreateBackupModal']
107
+ )
108
+ watch(
109
+ schedulerTask,
110
+ (newValue: UI_I_ModalPayload) => {
111
+ const { scheduler } = newValue
112
+ if (!scheduler.isSchedulerTask) return
113
+ schedulerTaskForm.value = scheduler.data
114
+ },
115
+ { immediate: true, deep: true }
116
+ )
117
+
118
+ const isShowDeleteBackupModal = ref<boolean>(false)
119
+ const isShowDeleteAllBackupsModal = ref<boolean>(false)
120
+ const isLoadingDeleteBackup = ref<boolean>(false)
121
+ const isShowRestoreModal = ref<boolean>(false)
122
+
123
+ const onCreateBackup = (): void => {
124
+ // TODO
125
+ backupForm.value.target = props.target
126
+ const backupTask: UI_I_SendTaskParams = {
127
+ method:
128
+ props.project === 'sphere'
129
+ ? 'VirtualMachines.CreateBackup'
130
+ : 'backup.create_backup',
131
+ target: props.target,
132
+ args: backupForm.value,
133
+ }
134
+
135
+ const {
136
+ scheduler: { isSchedulerTask, editTask, data },
137
+ } = schedulerTask.value
138
+ const sendData = isSchedulerTask
139
+ ? scheduledTasks(
140
+ schedulerTaskForm.value,
141
+ backupTask,
142
+ props.target,
143
+ editTask,
144
+ data,
145
+ props.project
146
+ )
147
+ : backupTask
148
+
149
+ sendTask(sendData)
150
+ onHide()
151
+ }
152
+
153
+ const onDeleteBackup = async (isAll: boolean): Promise<void> => {
154
+ isLoadingDeleteBackup.value = true
155
+ emits('delete-backup', isAll)
156
+ isLoadingDeleteBackup.value = false
157
+ onHide()
158
+ }
159
+
160
+ const onRestore = (): void => {
161
+ sendTask({
162
+ args: restoreForm.value,
163
+ method:
164
+ props.project === 'sphere'
165
+ ? 'VirtualMachines.RestoreBackup'
166
+ : 'backup.restore_backup',
167
+ target: props.target,
168
+ })
169
+ onHide()
170
+ }
171
+
172
+ watch(
173
+ action,
174
+ (newValue) => {
175
+ switch (newValue?.action) {
176
+ case 'createBackup':
177
+ // TODO
178
+ $store.dispatch('backup/A_SHOW_CREATE_BACKUP_MODAL', {
179
+ isShow: true,
180
+ scheduler: {
181
+ isSchedulerTask: false,
182
+ editTask: false,
183
+ data: null,
184
+ },
185
+ })
186
+ break
187
+ case 'restoreBackup':
188
+ isShowRestoreModal.value = true
189
+ restoreForm.value.backup_storage = newValue.storageId || ''
190
+ restoreForm.value.bucket = newValue.bucketId || ''
191
+ restoreForm.value.backup = newValue.backupId || ''
192
+ break
193
+ case 'deleteBackup':
194
+ deleteBackupId.value = newValue.backupId || ''
195
+ isShowDeleteBackupModal.value = true
196
+ break
197
+ case 'deleteBackupAll':
198
+ isShowDeleteAllBackupsModal.value = true
199
+ break
200
+ }
201
+ },
202
+ { deep: true }
203
+ )
204
+
205
+ const onHide = (): void => {
206
+ // TODO
207
+ $store.dispatch('backup/A_SHOW_CREATE_BACKUP_MODAL', {
208
+ isShow: false,
209
+ scheduler: {
210
+ isSchedulerTask: false,
211
+ editTask: false,
212
+ data: null,
213
+ },
214
+ })
215
+ isShowRestoreModal.value = false
216
+ isShowDeleteBackupModal.value = false
217
+ isShowDeleteAllBackupsModal.value = false
218
+
219
+ action.value.action = ''
220
+ backupForm.value = useDeepCopy(backupDefaultFormFunc())
221
+ backupForm.value.target = props.target
222
+ restoreForm.value = useDeepCopy(restoreDefaultFormFunc())
223
+ }
224
+
225
+ const onChangeStepCreateBackup = (value: UI_I_WizardStep[]): void => {
226
+ emits('change-step-create-backup', value)
227
+ }
228
+ const onCheckBackupName = (data: UI_I_NameCheck): void => {
229
+ emits('check-backup-name', data)
230
+ }
231
+
232
+ const onGetRestoreDatastore = (bucket: string): void => {
233
+ emits('get-restore-datastore', bucket)
234
+ }
235
+ const onGetRestoreNetworks = (hostId: string): void => {
236
+ emits('get-restore-networks', hostId)
237
+ }
238
+ const onCheckRestoreName = (data: UI_I_NameCheck): void => {
239
+ emits('check-restore-name', data)
240
+ }
241
+ </script>
242
+
243
+ <style lang="scss" scoped></style>
@@ -1,6 +1,6 @@
1
- import type {UI_I_SelectInputItem} from "~/components/common/select/input/lib/models/interfaces";
2
-
3
- export const maxBandwidthOptions: UI_I_SelectInputItem[] = [
4
- { label: 'Mbps', value: 0 },
5
- { label: 'Gbps', value: 1 },
6
- ]
1
+ import type {UI_I_SelectInputItem} from "~/components/common/select/input/lib/models/interfaces";
2
+
3
+ export const maxBandwidthOptions: UI_I_SelectInputItem[] = [
4
+ { label: 'Mbps', value: 0 },
5
+ { label: 'Gbps', value: 1 },
6
+ ]
@@ -1,69 +1,69 @@
1
- import type { UI_I_Localization } from '~/lib/models/interfaces'
2
- import type {
3
- UI_I_BackupDatastoreTable,
4
- UI_I_CreateBackupForm,
5
- } from '~/components/common/pages/backups/modals/lib/models/interfaces'
6
- import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
7
- import type { UI_I_SelectInputItem } from '~/components/common/select/input/lib/models/interfaces'
8
-
9
- export const readyToCompleteOptions = (
10
- backupForm: UI_I_CreateBackupForm,
11
- localization: UI_I_Localization,
12
- strategyOptions: UI_I_SelectInputItem[],
13
- datastoreTable: UI_I_BackupDatastoreTable | null
14
- ): UI_I_TableInfoItem[] => {
15
- const { $binary } = useNuxtApp()
16
-
17
- const result = [
18
- // General
19
- {
20
- label: localization.common.name,
21
- value: backupForm.name,
22
- iconClassName: 'icon-backup',
23
- },
24
- {
25
- label: localization.common.description,
26
- value: backupForm.description,
27
- },
28
- ]
29
-
30
- // Disks
31
- backupForm.disk_devices.forEach((disk_device, i) => {
32
- result.push({
33
- label: `${localization.common.disk} ${i + 1}`,
34
- value: disk_device.location,
35
- iconClassName: 'icon-vSphere-dsVmDisk',
36
- })
37
- })
38
-
39
- // Datastores
40
- const datastore = datastoreTable?.items.find(
41
- (item) => item.id === backupForm.backup_storage
42
- )
43
- result.push({
44
- label: localization.common.datastore,
45
- value: datastore?.name || '',
46
- iconClassName: 'vsphere-icon-datastore',
47
- })
48
-
49
- // Configuration
50
- result.push({
51
- label: localization.common.strategy,
52
- value:
53
- strategyOptions.find((option) => option.value === backupForm.strategy)
54
- ?.label || '',
55
- })
56
-
57
- const gbSizeByB = 1_073_741_824
58
- const maxBandwidth =
59
- backupForm.bandwidth_limit >= gbSizeByB
60
- ? $binary.bToGb(backupForm.bandwidth_limit) + ' Gbps'
61
- : $binary.bToMb(backupForm.bandwidth_limit) + ' Mbps'
62
-
63
- result.push({
64
- label: localization.common.maxBandwidth,
65
- value: maxBandwidth,
66
- })
67
-
68
- return result
69
- }
1
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
2
+ import type {
3
+ UI_I_BackupDatastoreTable,
4
+ UI_I_CreateBackupForm,
5
+ } from '~/components/common/pages/backups/modals/lib/models/interfaces'
6
+ import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
7
+ import type { UI_I_SelectInputItem } from '~/components/common/select/input/lib/models/interfaces'
8
+
9
+ export const readyToCompleteOptions = (
10
+ backupForm: UI_I_CreateBackupForm,
11
+ localization: UI_I_Localization,
12
+ strategyOptions: UI_I_SelectInputItem[],
13
+ datastoreTable: UI_I_BackupDatastoreTable | null
14
+ ): UI_I_TableInfoItem[] => {
15
+ const { $binary } = useNuxtApp()
16
+
17
+ const result = [
18
+ // General
19
+ {
20
+ label: localization.common.name,
21
+ value: backupForm.name,
22
+ iconClassName: 'icon-backup',
23
+ },
24
+ {
25
+ label: localization.common.description,
26
+ value: backupForm.description,
27
+ },
28
+ ]
29
+
30
+ // Disks
31
+ backupForm.disk_devices.forEach((disk_device, i) => {
32
+ result.push({
33
+ label: `${localization.common.disk} ${i + 1}`,
34
+ value: disk_device.location,
35
+ iconClassName: 'icon-vSphere-dsVmDisk',
36
+ })
37
+ })
38
+
39
+ // Datastores
40
+ const datastore = datastoreTable?.items.find(
41
+ (item) => item.id === backupForm.backup_storage
42
+ )
43
+ result.push({
44
+ label: localization.common.datastore,
45
+ value: datastore?.name || '',
46
+ iconClassName: 'vsphere-icon-datastore',
47
+ })
48
+
49
+ // Configuration
50
+ result.push({
51
+ label: localization.common.strategy,
52
+ value:
53
+ strategyOptions.find((option) => option.value === backupForm.strategy)
54
+ ?.label || '',
55
+ })
56
+
57
+ const gbSizeByB = 1_073_741_824
58
+ const maxBandwidth =
59
+ backupForm.bandwidth_limit >= gbSizeByB
60
+ ? $binary.bToGb(backupForm.bandwidth_limit) + ' Gbps'
61
+ : $binary.bToMb(backupForm.bandwidth_limit) + ' Mbps'
62
+
63
+ result.push({
64
+ label: localization.common.maxBandwidth,
65
+ value: maxBandwidth,
66
+ })
67
+
68
+ return result
69
+ }