bfg-common 1.5.537 → 1.5.539
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.
- package/assets/localization/local_be.json +1 -1
- package/assets/localization/local_en.json +1 -1
- package/assets/localization/local_hy.json +1 -1
- package/assets/localization/local_kk.json +1 -1
- package/assets/localization/local_ru.json +1 -1
- package/assets/localization/local_zh.json +1 -1
- package/assets/scss/clarity/local_ar.json +1 -1
- package/components/common/pages/backups/modals/restore/networks/Networks.vue +1 -1
- package/components/common/vm/actions/add/Add.vue +3 -2
- package/components/common/vm/actions/add/New.vue +3 -2
- package/components/common/vm/actions/add/Old.vue +5 -3
- package/components/common/vm/actions/clone/Clone.vue +3 -2
- package/components/common/vm/actions/clone/new/New.vue +50 -47
- package/components/common/vm/actions/clone/old/Old.vue +3 -3
- package/components/common/vm/actions/common/select/storage/Old.vue +125 -132
- package/components/common/vm/actions/common/select/storage/Storage.vue +178 -167
- package/components/common/vm/actions/common/select/storage/new/New.vue +311 -330
- package/components/common/vm/actions/register/Register.vue +5 -5
- package/components/common/wizards/common/{steps/computeResource/compatibility → compatibility}/Compatibility.vue +7 -3
- package/components/common/wizards/common/{steps/computeResource/compatibility → compatibility}/New.vue +2 -1
- package/components/common/wizards/common/{steps/computeResource/compatibility → compatibility}/Old.vue +4 -5
- package/components/common/wizards/common/{steps/computeResource/compatibility → compatibility}/lib/models/enums.ts +1 -1
- package/components/common/wizards/common/compatibility/lib/models/types.ts +1 -0
- package/components/common/wizards/common/steps/computeResource/ComputeResource.vue +2 -1
- package/components/common/wizards/common/steps/computeResource/New.vue +3 -2
- package/components/common/wizards/common/steps/computeResource/Old.vue +3 -2
- package/components/common/wizards/vm/migrate/select/computeResource/ComputeResource.vue +205 -195
- package/components/common/wizards/vm/migrate/select/network/Network.vue +1 -1
- package/components/common/wizards/vm/migrate/select/storage/Storage.vue +1 -1
- package/package.json +1 -1
|
@@ -2357,7 +2357,7 @@
|
|
|
2357
2357
|
"seeMore": "Глядзіце Больш",
|
|
2358
2358
|
"hide": "Схаваць",
|
|
2359
2359
|
"takeNotesWithDots": "Рабіце нататкі...",
|
|
2360
|
-
"deleteNotesMessage": "Вы ўпэўненыя, што хочаце выдаліць нататкі з \"{
|
|
2360
|
+
"deleteNotesMessage": "Вы ўпэўненыя, што хочаце выдаліць нататкі з \"{name}\"?",
|
|
2361
2361
|
"passwordContainsInvalidCharacters": "Пароль змяшчае недапушчальныя сімвалы",
|
|
2362
2362
|
"fieldInvalidCharacters": "Гэта поле павінна ўтрымліваць ад 3 да 64 сімвалаў і можа ўключаць толькі лацінскія літары, лічбы і сімвалы \"_\", \"-\", '.'",
|
|
2363
2363
|
"rowsPerPage": "Радкі на старонку",
|
|
@@ -2361,7 +2361,7 @@
|
|
|
2361
2361
|
"seeMore": "See More",
|
|
2362
2362
|
"hide": "Hide",
|
|
2363
2363
|
"takeNotesWithDots": "Take Notes...",
|
|
2364
|
-
"deleteNotesMessage": "Are you sure you want to delete notes from \"{
|
|
2364
|
+
"deleteNotesMessage": "Are you sure you want to delete notes from \"{name}\"?",
|
|
2365
2365
|
"passwordContainsInvalidCharacters": "Password contains invalid characters",
|
|
2366
2366
|
"fieldInvalidCharacters": "This field must contain from 3 to 64 characters and can include only Latin letters, numbers, and symbols '_', '-', '.'",
|
|
2367
2367
|
"rowsPerPage": "Rows per page",
|
|
@@ -2361,7 +2361,7 @@
|
|
|
2361
2361
|
"seeMore": "Տես ավելին",
|
|
2362
2362
|
"hide": "Թաքցնել",
|
|
2363
2363
|
"takeNotesWithDots": "Կատարել նշումներ...",
|
|
2364
|
-
"deleteNotesMessage": "Համոզված եք, որ ցանկանում եք ջնջել գրառումները \"{
|
|
2364
|
+
"deleteNotesMessage": "Համոզված եք, որ ցանկանում եք ջնջել գրառումները \"{name}\"-ից:",
|
|
2365
2365
|
"passwordContainsInvalidCharacters": "Գաղտնաբառը պարունակում է անվավեր նիշեր",
|
|
2366
2366
|
"fieldInvalidCharacters": "Այս դաշտը պետք է պարունակի 3-ից 64 նիշ եւ կարող է ներառել միայն լատինական տառեր, համարներ եւ խորհրդանիշներ «_», - «»:",
|
|
2367
2367
|
"rowsPerPage": "Շարքեր մեկ էջում",
|
|
@@ -2360,7 +2360,7 @@
|
|
|
2360
2360
|
"seeMore": "Толығырақ",
|
|
2361
2361
|
"hide": "Жасыру",
|
|
2362
2362
|
"takeNotesWithDots": "Жазбалар Алыңыз...",
|
|
2363
|
-
"deleteNotesMessage": "Жазбаларды \"{
|
|
2363
|
+
"deleteNotesMessage": "Жазбаларды \"{name}\" ішінен жойғыңыз келетініне сенімдісіз бе?",
|
|
2364
2364
|
"passwordContainsInvalidCharacters": "Құпия сөзде жарамсыз таңбалар бар",
|
|
2365
2365
|
"fieldInvalidCharacters": "Бұл өрісте 3-тен 64 таңбадан тұруы керек және тек латын әріптері, сандар, сандар және символдар, '', '', '', ''.",
|
|
2366
2366
|
"rowsPerPage": "Ағын сызықтары",
|
|
@@ -2360,7 +2360,7 @@
|
|
|
2360
2360
|
"seeMore": "Смотрите больше",
|
|
2361
2361
|
"hide": "Скрыть",
|
|
2362
2362
|
"takeNotesWithDots": "Делайте заметки...",
|
|
2363
|
-
"deleteNotesMessage": "Вы уверены, что хотите удалить заметки из \"{
|
|
2363
|
+
"deleteNotesMessage": "Вы уверены, что хотите удалить заметки из \"{name}\"?",
|
|
2364
2364
|
"passwordContainsInvalidCharacters": "Пароль содержит недопустимые символы",
|
|
2365
2365
|
"fieldInvalidCharacters": "Это поле должен содержать от 3 до 64 символов и может включать только латинские буквы, цифры, а также символы '_', '-', '.'",
|
|
2366
2366
|
"rowsPerPage": "Кол-во строк",
|
|
@@ -2358,7 +2358,7 @@
|
|
|
2358
2358
|
"seeMore": "查看更多",
|
|
2359
2359
|
"hide": "藏起来",
|
|
2360
2360
|
"takeNotesWithDots": "做笔记。。。",
|
|
2361
|
-
"deleteNotesMessage": "您确定要从 \"{
|
|
2361
|
+
"deleteNotesMessage": "您确定要从 \"{name}\" 中删除注释吗?",
|
|
2362
2362
|
"passwordContainsInvalidCharacters": "密码包含无效字符",
|
|
2363
2363
|
"fieldInvalidCharacters": "该字段必须包含3到64个字符,并且只能包括拉丁字母,数字和符号'_',',','。",
|
|
2364
2364
|
"rowsPerPage": "每页行",
|
|
@@ -2280,7 +2280,7 @@
|
|
|
2280
2280
|
"seeMore": "عرض المزيد",
|
|
2281
2281
|
"hide": "إخفاء",
|
|
2282
2282
|
"takeNotesWithDots": "دوّن ملاحظات...",
|
|
2283
|
-
"deleteNotesMessage": "هل تريد بالتأكيد حذف الملاحظات من \"{
|
|
2283
|
+
"deleteNotesMessage": "هل تريد بالتأكيد حذف الملاحظات من \"{name}\"؟",
|
|
2284
2284
|
"passwordContainsInvalidCharacters": "كلمة المرور تحتوي على أحرف غير صالحة",
|
|
2285
2285
|
"fieldInvalidCharacters": "يجب أن يتراوح طول هذا الحقل بين 3 و64 حرفًا، ويمكن أن يشمل الأحرف اللاتينية والأرقام والرموز '_', '-', '.' فقط",
|
|
2286
2286
|
"rowsPerPage": "عدد الصفوف في الصفحة",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
@hide-alert="onHideAlert"
|
|
17
17
|
/>
|
|
18
18
|
|
|
19
|
-
<common-wizards-common-
|
|
19
|
+
<common-wizards-common-compatibility
|
|
20
20
|
:loading="!model.pvm.network_devices.length"
|
|
21
21
|
:text="localization.common.compatibilityChecksSucceeded"
|
|
22
22
|
status="success"
|
|
@@ -204,6 +204,7 @@ import type {
|
|
|
204
204
|
UI_I_VmSettings,
|
|
205
205
|
} from '~/lib/models/store/vm/interfaces'
|
|
206
206
|
import type { UI_I_NameTestIds } from '~/components/common/wizards/common/steps/name/lib/models/interfaces'
|
|
207
|
+
import type { UI_T_CompatibilityStatus } from '~/components/common/wizards/common/compatibility/lib/models/types'
|
|
207
208
|
import { capabilities } from '~/components/common/vm/actions/common/lib/config/capabilities'
|
|
208
209
|
import {
|
|
209
210
|
stepsSchemeInitial,
|
|
@@ -510,7 +511,7 @@ const onCheckName = async (
|
|
|
510
511
|
}
|
|
511
512
|
})
|
|
512
513
|
}
|
|
513
|
-
const compatibilityText = computed<[
|
|
514
|
+
const compatibilityText = computed<[UI_T_CompatibilityStatus, string]>(() => {
|
|
514
515
|
const { computeResource } = vmForm.value
|
|
515
516
|
|
|
516
517
|
if (!computeResource)
|
|
@@ -519,7 +520,7 @@ const compatibilityText = computed<[string, string]>(() => {
|
|
|
519
520
|
localization.value.vmWizard.noDestinationComputeResourceSelected,
|
|
520
521
|
]
|
|
521
522
|
|
|
522
|
-
let res: [
|
|
523
|
+
let res: [UI_T_CompatibilityStatus, string] = [
|
|
523
524
|
'success',
|
|
524
525
|
localization.value.common.compatibilityChecksSucceeded,
|
|
525
526
|
]
|
|
@@ -461,6 +461,7 @@ import type {
|
|
|
461
461
|
UI_I_VmSettings,
|
|
462
462
|
} from '~/lib/models/store/vm/interfaces'
|
|
463
463
|
import type { UI_I_NameTestIds } from '~/components/common/wizards/common/steps/name/lib/models/interfaces'
|
|
464
|
+
import type { UI_T_CompatibilityStatus } from '~/components/common/wizards/common/compatibility/lib/models/types'
|
|
464
465
|
import { dynamicSteps } from '~/components/common/vm/actions/add/lib/config/steps'
|
|
465
466
|
|
|
466
467
|
const vmForm = defineModel<UI_I_VmForm>('vmForm', {
|
|
@@ -520,7 +521,7 @@ const props = withDefaults(
|
|
|
520
521
|
nameTestIds: UI_I_NameTestIds
|
|
521
522
|
isLoadingComputeTree?: boolean // для сферы
|
|
522
523
|
computeResourceAlert?: string[] // для сферы
|
|
523
|
-
compatibilityText?: [
|
|
524
|
+
compatibilityText?: [UI_T_CompatibilityStatus, string] // для сферы
|
|
524
525
|
dataCenter?: UI_I_TreeNode | null // для сферы
|
|
525
526
|
computeResourceTree?: UI_I_TreeNode[] // для сферы
|
|
526
527
|
locationNodes?: UI_I_TreeNode[] // для сферы
|
|
@@ -533,7 +534,7 @@ const props = withDefaults(
|
|
|
533
534
|
{
|
|
534
535
|
isLoadingComputeTree: false,
|
|
535
536
|
computeResourceAlert: () => [],
|
|
536
|
-
compatibilityText: () => [],
|
|
537
|
+
compatibilityText: () => ['none', ''],
|
|
537
538
|
dataCenter: null,
|
|
538
539
|
computeResourceTree: undefined,
|
|
539
540
|
locationNodes: () => [],
|
|
@@ -263,6 +263,7 @@ import type {
|
|
|
263
263
|
UI_I_VmSettings,
|
|
264
264
|
} from '~/lib/models/store/vm/interfaces'
|
|
265
265
|
import type { UI_I_NameTestIds } from '~/components/common/wizards/common/steps/name/lib/models/interfaces'
|
|
266
|
+
import type { UI_T_CompatibilityStatus } from '~/components/common/wizards/common/compatibility/lib/models/types'
|
|
266
267
|
import { dynamicSteps } from '~/components/common/vm/actions/add/lib/config/steps'
|
|
267
268
|
|
|
268
269
|
const vmForm = defineModel<UI_I_VmForm>('vmForm', {
|
|
@@ -321,7 +322,7 @@ const props = withDefaults(
|
|
|
321
322
|
nameTestIds: UI_I_NameTestIds
|
|
322
323
|
isLoadingComputeTree?: boolean // для сферы
|
|
323
324
|
computeResourceAlert?: string[] // для сферы
|
|
324
|
-
compatibilityText?: [
|
|
325
|
+
compatibilityText?: [UI_T_CompatibilityStatus, string] // для сферы
|
|
325
326
|
dataCenter?: UI_I_TreeNode | null // для сферы
|
|
326
327
|
computeResourceTree?: UI_I_TreeNode[] // для сферы
|
|
327
328
|
locationNodes?: UI_I_TreeNode[] // для сферы
|
|
@@ -333,7 +334,7 @@ const props = withDefaults(
|
|
|
333
334
|
{
|
|
334
335
|
isLoadingComputeTree: false,
|
|
335
336
|
computeResourceAlert: () => [],
|
|
336
|
-
compatibilityText: () => [],
|
|
337
|
+
compatibilityText: () => ['none', ''],
|
|
337
338
|
dataCenter: null,
|
|
338
339
|
computeResourceTree: undefined,
|
|
339
340
|
locationNodes: () => [],
|
|
@@ -369,7 +370,8 @@ const localization = computed<UI_I_Localization>(() => useLocal())
|
|
|
369
370
|
|
|
370
371
|
const location = ref<UI_I_TreeNode | null>(props.dataCenter) // для сферы
|
|
371
372
|
|
|
372
|
-
const computeResourceTreeLocal = computed<UI_I_TreeNode | null>(() => {
|
|
373
|
+
const computeResourceTreeLocal = computed<UI_I_TreeNode | null>(() => {
|
|
374
|
+
// для сферы
|
|
373
375
|
return props.computeResourceTree?.[0] || null
|
|
374
376
|
})
|
|
375
377
|
</script>
|
|
@@ -167,6 +167,7 @@ import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/schedu
|
|
|
167
167
|
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
168
168
|
import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
|
|
169
169
|
import type { UI_I_NameTestIds } from '~/components/common/wizards/common/steps/name/lib/models/interfaces'
|
|
170
|
+
import type { UI_T_CompatibilityStatus } from '~/components/common/wizards/common/compatibility/lib/models/types'
|
|
170
171
|
import {
|
|
171
172
|
stepsSchemeInitial,
|
|
172
173
|
stepsFunc,
|
|
@@ -425,7 +426,7 @@ const checkName = async (
|
|
|
425
426
|
}
|
|
426
427
|
})
|
|
427
428
|
}
|
|
428
|
-
const compatibilityText = computed<[
|
|
429
|
+
const compatibilityText = computed<[UI_T_CompatibilityStatus, string]>(() => {
|
|
429
430
|
const { computeResource } = vmForm.value
|
|
430
431
|
|
|
431
432
|
if (!computeResource)
|
|
@@ -434,7 +435,7 @@ const compatibilityText = computed<[string, string]>(() => {
|
|
|
434
435
|
localization.value.vmWizard.noDestinationComputeResourceSelected,
|
|
435
436
|
]
|
|
436
437
|
|
|
437
|
-
let res: [
|
|
438
|
+
let res: [UI_T_CompatibilityStatus, string] = [
|
|
438
439
|
'success',
|
|
439
440
|
localization.value.common.compatibilityChecksSucceeded,
|
|
440
441
|
]
|
|
@@ -239,7 +239,9 @@
|
|
|
239
239
|
<template #content>
|
|
240
240
|
<common-wizards-common-steps-compute-resource
|
|
241
241
|
v-if="props.isSphere"
|
|
242
|
-
v-show="
|
|
242
|
+
v-show="
|
|
243
|
+
selectedStep.id === props.dynamicSteps.selectComputeResource
|
|
244
|
+
"
|
|
243
245
|
v-model="computeResource"
|
|
244
246
|
:node="computeResourceTreeLocal"
|
|
245
247
|
:alert-messages="props.computeResourceAlert"
|
|
@@ -318,6 +320,7 @@ import type {
|
|
|
318
320
|
UI_I_FolderOrFileTreePayload,
|
|
319
321
|
} from '~/lib/models/store/storage/interfaces'
|
|
320
322
|
import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
|
|
323
|
+
import type { UI_T_CompatibilityStatus } from '~/components/common/wizards/common/compatibility/lib/models/types'
|
|
321
324
|
|
|
322
325
|
const vmForm = defineModel<UI_I_VmForm>('vm-form')
|
|
323
326
|
const schedulerTaskForm = defineModel<UI_I_ScheduleNewTasksForm>(
|
|
@@ -329,52 +332,52 @@ const computeResource = defineModel<UI_I_TreeNode | undefined>(
|
|
|
329
332
|
)
|
|
330
333
|
const location = defineModel<UI_I_TreeNode | null>('location')
|
|
331
334
|
const props = withDefaults(
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
335
|
+
defineProps<{
|
|
336
|
+
project: UI_T_Project
|
|
337
|
+
vmSettings: UI_I_VmSettings | null
|
|
338
|
+
nodes: UI_I_FileTreeNode[]
|
|
339
|
+
files: UI_I_FileTreeNode[]
|
|
340
|
+
networksTable: UI_I_NetworkTableItem[]
|
|
341
|
+
datastore: UI_I_DatastoreTableItem[]
|
|
342
|
+
isDatastoreLoading: boolean
|
|
343
|
+
errorValidationFields: UI_I_ErrorValidationField[]
|
|
344
|
+
readyCompleteTableInfo: UI_I_TableInfoItem[]
|
|
345
|
+
vmCpuHelpTextSecond: string
|
|
346
|
+
getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
|
|
347
|
+
passthroughDevices: UI_I_PciDevice[]
|
|
348
|
+
mediatedDevices: UI_I_MediatedDevice[]
|
|
349
|
+
nameRequestUrl: string
|
|
350
|
+
wizard: Wizard
|
|
351
|
+
selectedScheme: number[]
|
|
352
|
+
selectedVirtualMachine: string
|
|
353
|
+
isNewVmFromTemplate: boolean | undefined
|
|
354
|
+
computeResourceTree: UI_I_TreeNode[] | undefined // для сферы
|
|
355
|
+
locationNodes: UI_I_TreeNode[] | undefined // для сферы
|
|
356
|
+
title: string
|
|
357
|
+
nameFormSubmit: null | Function
|
|
358
|
+
storageSubmit: null | Function
|
|
359
|
+
customizeHardwareSubmit: null | Function
|
|
360
|
+
selectedNavItem: UI_T_SelectedNavItem
|
|
361
|
+
allowedLocationKinds: number[]
|
|
362
|
+
isSphere: boolean
|
|
363
|
+
locationDescription: string
|
|
364
|
+
nameTestIds: UI_I_NameTestIds
|
|
365
|
+
virtualHardwareHardDisksLocal: UI_I_SendDataNewHardDisk[] | null
|
|
366
|
+
virtualHardwareNetworksLocal: UI_I_SendDataNewNetwork[] | null
|
|
367
|
+
virtualHardwareCdDvdDrivesLocal: UI_I_SendDataNewCdDvdDrive[] | null
|
|
368
|
+
guestOsFamilies: UI_I_OptionItem[]
|
|
369
|
+
guestOsVersions: UI_I_ArbitraryObject<UI_I_OptionItem[]>
|
|
370
|
+
machineTypes: UI_I_OptionItem[]
|
|
371
|
+
dynamicSteps: UI_I_ArbitraryObject<number>
|
|
372
|
+
isLoadingComputeTree?: boolean // для сферы
|
|
373
|
+
computeResourceAlert?: string[] // для сферы
|
|
374
|
+
compatibilityText?: [UI_T_CompatibilityStatus, string] // для сферы
|
|
375
|
+
}>(),
|
|
376
|
+
{
|
|
377
|
+
isLoadingComputeTree: false,
|
|
378
|
+
computeResourceAlert: () => [],
|
|
379
|
+
compatibilityText: () => ['none', ''],
|
|
380
|
+
}
|
|
378
381
|
)
|
|
379
382
|
|
|
380
383
|
const emits = defineEmits<{
|
|
@@ -180,7 +180,7 @@ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
|
180
180
|
import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
|
|
181
181
|
import type { UI_I_NameTestIds } from '~/components/common/wizards/common/steps/name/lib/models/interfaces'
|
|
182
182
|
import type { UI_I_VmForm } from '~/components/common/vm/actions/common/lib/models/interfaces'
|
|
183
|
-
import {
|
|
183
|
+
import type { UI_T_CompatibilityStatus } from '~/components/common/wizards/common/compatibility/lib/models/types'
|
|
184
184
|
|
|
185
185
|
const vmForm = defineModel<UI_I_VmForm>('vm-form')
|
|
186
186
|
const schedulerTaskForm = defineModel<UI_I_ScheduleNewTasksForm>(
|
|
@@ -232,12 +232,12 @@ const props = withDefaults(
|
|
|
232
232
|
isLoading: boolean
|
|
233
233
|
isLoadingComputeTree?: boolean // для сферы
|
|
234
234
|
computeResourceAlert?: string[] // для сферы
|
|
235
|
-
compatibilityText?: [
|
|
235
|
+
compatibilityText?: [UI_T_CompatibilityStatus, string] // для сферы
|
|
236
236
|
}>(),
|
|
237
237
|
{
|
|
238
238
|
isLoadingComputeTree: false,
|
|
239
239
|
computeResourceAlert: () => [],
|
|
240
|
-
compatibilityText: () => [],
|
|
240
|
+
compatibilityText: () => ['none', ''],
|
|
241
241
|
}
|
|
242
242
|
)
|
|
243
243
|
|
|
@@ -1,132 +1,125 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="select-storage">
|
|
3
|
-
<atoms-alert
|
|
4
|
-
v-show="props.errors.length"
|
|
5
|
-
:items="props.errors"
|
|
6
|
-
status="alert-danger"
|
|
7
|
-
test-id="storage-alert"
|
|
8
|
-
@remove="emits('remove-error')"
|
|
9
|
-
/>
|
|
10
|
-
<div class="table-wrap">
|
|
11
|
-
<atoms-table-data-grid
|
|
12
|
-
v-model:selected-row="selectedRow"
|
|
13
|
-
v-model:column-keys="columnKeys"
|
|
14
|
-
v-model:page-size="pagination.pageSize"
|
|
15
|
-
v-model:page="pagination.page"
|
|
16
|
-
:head-items="headItems"
|
|
17
|
-
:body-items="bodyItems"
|
|
18
|
-
:total-items="bodyItems.length"
|
|
19
|
-
:total-pages="1"
|
|
20
|
-
:loading="props.isDatastoreLoading"
|
|
21
|
-
type="radio"
|
|
22
|
-
test-id="storage-table"
|
|
23
|
-
server-off
|
|
24
|
-
hide-page-size
|
|
25
|
-
@change="emits('change-storage', $event)"
|
|
26
|
-
>
|
|
27
|
-
<template #icon="{ item }">
|
|
28
|
-
<span :class="['datagrid-cell-icon', item.data]" />
|
|
29
|
-
<span class="text-ellipsis">
|
|
30
|
-
{{ item.text }}
|
|
31
|
-
</span>
|
|
32
|
-
</template>
|
|
33
|
-
</atoms-table-data-grid>
|
|
34
|
-
</div>
|
|
35
|
-
|
|
36
|
-
<
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
import
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
padding-top: 5px;
|
|
127
|
-
padding-left: 5px;
|
|
128
|
-
overflow: auto;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
</style>
|
|
1
|
+
<template>
|
|
2
|
+
<div class="select-storage">
|
|
3
|
+
<atoms-alert
|
|
4
|
+
v-show="props.errors.length"
|
|
5
|
+
:items="props.errors"
|
|
6
|
+
status="alert-danger"
|
|
7
|
+
test-id="storage-alert"
|
|
8
|
+
@remove="emits('remove-error')"
|
|
9
|
+
/>
|
|
10
|
+
<div class="table-wrap">
|
|
11
|
+
<atoms-table-data-grid
|
|
12
|
+
v-model:selected-row="selectedRow"
|
|
13
|
+
v-model:column-keys="columnKeys"
|
|
14
|
+
v-model:page-size="pagination.pageSize"
|
|
15
|
+
v-model:page="pagination.page"
|
|
16
|
+
:head-items="headItems"
|
|
17
|
+
:body-items="bodyItems"
|
|
18
|
+
:total-items="bodyItems.length"
|
|
19
|
+
:total-pages="1"
|
|
20
|
+
:loading="props.isDatastoreLoading"
|
|
21
|
+
type="radio"
|
|
22
|
+
test-id="storage-table"
|
|
23
|
+
server-off
|
|
24
|
+
hide-page-size
|
|
25
|
+
@change="emits('change-storage', $event)"
|
|
26
|
+
>
|
|
27
|
+
<template #icon="{ item }">
|
|
28
|
+
<span :class="['datagrid-cell-icon', item.data]" />
|
|
29
|
+
<span class="text-ellipsis">
|
|
30
|
+
{{ item.text }}
|
|
31
|
+
</span>
|
|
32
|
+
</template>
|
|
33
|
+
</atoms-table-data-grid>
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
<common-wizards-common-compatibility
|
|
37
|
+
v-if="!props.hideCompatibility"
|
|
38
|
+
:status="props.compatibility[0]"
|
|
39
|
+
:text="props.compatibility[1]"
|
|
40
|
+
/>
|
|
41
|
+
</div>
|
|
42
|
+
</template>
|
|
43
|
+
|
|
44
|
+
<script setup lang="ts">
|
|
45
|
+
import type { UI_I_Pagination } from '~/lib/models/table/interfaces'
|
|
46
|
+
import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
|
|
47
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
48
|
+
import type {
|
|
49
|
+
UI_I_ColumnKey,
|
|
50
|
+
UI_I_HeadItem,
|
|
51
|
+
UI_I_BodyItem,
|
|
52
|
+
} from '~/components/atoms/table/dataGrid/lib/models/interfaces'
|
|
53
|
+
import type { UI_T_CompatibilityStatus } from '~/components/common/wizards/common/compatibility/lib/models/types'
|
|
54
|
+
import * as table from '~/components/common/vm/actions/common/select/storage/lib/config/config'
|
|
55
|
+
|
|
56
|
+
const selectedRow = defineModel<number | null>('selectedRow')
|
|
57
|
+
const pagination = defineModel<UI_I_Pagination>('pagination', {
|
|
58
|
+
required: true,
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
const props = withDefaults(
|
|
62
|
+
defineProps<{
|
|
63
|
+
datastore: UI_I_DatastoreTableItem[]
|
|
64
|
+
isDatastoreLoading: boolean
|
|
65
|
+
errors: string[]
|
|
66
|
+
selectedStorage: UI_I_DatastoreTableItem | null
|
|
67
|
+
compatibility: [UI_T_CompatibilityStatus, string]
|
|
68
|
+
hideCompatibility?: boolean
|
|
69
|
+
}>(),
|
|
70
|
+
{
|
|
71
|
+
hideCompatibility: undefined,
|
|
72
|
+
}
|
|
73
|
+
)
|
|
74
|
+
const emits = defineEmits<{
|
|
75
|
+
(event: 'remove-error'): void
|
|
76
|
+
(event: 'change-storage', value: number): void
|
|
77
|
+
}>()
|
|
78
|
+
|
|
79
|
+
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
80
|
+
|
|
81
|
+
const headItems = ref<UI_I_HeadItem[]>(table.headItems(localization.value))
|
|
82
|
+
const columnKeys = ref<UI_I_ColumnKey[]>(table.columnKeys(localization.value))
|
|
83
|
+
watch(localization, () => {
|
|
84
|
+
columnKeys.value = table.columnKeys(localization.value)
|
|
85
|
+
})
|
|
86
|
+
|
|
87
|
+
const bodyItems = computed<UI_I_BodyItem[][]>(() => {
|
|
88
|
+
return table.bodyItems(props.datastore || [], localization.value)
|
|
89
|
+
})
|
|
90
|
+
</script>
|
|
91
|
+
|
|
92
|
+
<style scoped lang="scss">
|
|
93
|
+
.select-storage {
|
|
94
|
+
flex: 1;
|
|
95
|
+
display: flex;
|
|
96
|
+
flex-direction: column;
|
|
97
|
+
|
|
98
|
+
.table-wrap {
|
|
99
|
+
flex: 1;
|
|
100
|
+
|
|
101
|
+
.datagrid-cell-icon {
|
|
102
|
+
margin-right: 6px;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
:deep(.relative) {
|
|
106
|
+
height: 100%;
|
|
107
|
+
|
|
108
|
+
.datagrid-outer-wrapper {
|
|
109
|
+
height: 100%;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.compatibility-wrap {
|
|
115
|
+
padding-top: 10px;
|
|
116
|
+
|
|
117
|
+
.compatibility-message {
|
|
118
|
+
border: 1px solid #000;
|
|
119
|
+
padding-top: 5px;
|
|
120
|
+
padding-left: 5px;
|
|
121
|
+
overflow: auto;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
</style>
|