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.
Files changed (30) hide show
  1. package/assets/localization/local_be.json +1 -1
  2. package/assets/localization/local_en.json +1 -1
  3. package/assets/localization/local_hy.json +1 -1
  4. package/assets/localization/local_kk.json +1 -1
  5. package/assets/localization/local_ru.json +1 -1
  6. package/assets/localization/local_zh.json +1 -1
  7. package/assets/scss/clarity/local_ar.json +1 -1
  8. package/components/common/pages/backups/modals/restore/networks/Networks.vue +1 -1
  9. package/components/common/vm/actions/add/Add.vue +3 -2
  10. package/components/common/vm/actions/add/New.vue +3 -2
  11. package/components/common/vm/actions/add/Old.vue +5 -3
  12. package/components/common/vm/actions/clone/Clone.vue +3 -2
  13. package/components/common/vm/actions/clone/new/New.vue +50 -47
  14. package/components/common/vm/actions/clone/old/Old.vue +3 -3
  15. package/components/common/vm/actions/common/select/storage/Old.vue +125 -132
  16. package/components/common/vm/actions/common/select/storage/Storage.vue +178 -167
  17. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -330
  18. package/components/common/vm/actions/register/Register.vue +5 -5
  19. package/components/common/wizards/common/{steps/computeResource/compatibility → compatibility}/Compatibility.vue +7 -3
  20. package/components/common/wizards/common/{steps/computeResource/compatibility → compatibility}/New.vue +2 -1
  21. package/components/common/wizards/common/{steps/computeResource/compatibility → compatibility}/Old.vue +4 -5
  22. package/components/common/wizards/common/{steps/computeResource/compatibility → compatibility}/lib/models/enums.ts +1 -1
  23. package/components/common/wizards/common/compatibility/lib/models/types.ts +1 -0
  24. package/components/common/wizards/common/steps/computeResource/ComputeResource.vue +2 -1
  25. package/components/common/wizards/common/steps/computeResource/New.vue +3 -2
  26. package/components/common/wizards/common/steps/computeResource/Old.vue +3 -2
  27. package/components/common/wizards/vm/migrate/select/computeResource/ComputeResource.vue +205 -195
  28. package/components/common/wizards/vm/migrate/select/network/Network.vue +1 -1
  29. package/components/common/wizards/vm/migrate/select/storage/Storage.vue +1 -1
  30. package/package.json +1 -1
@@ -2357,7 +2357,7 @@
2357
2357
  "seeMore": "Глядзіце Больш",
2358
2358
  "hide": "Схаваць",
2359
2359
  "takeNotesWithDots": "Рабіце нататкі...",
2360
- "deleteNotesMessage": "Вы ўпэўненыя, што хочаце выдаліць нататкі з \"{vmName}\"?",
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 \"{vmName}\"?",
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": "Համոզված եք, որ ցանկանում եք ջնջել գրառումները \"{vmName}\"-ից:",
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": "Жазбаларды \"{vmName}\" ішінен жойғыңыз келетініне сенімдісіз бе?",
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": "Вы уверены, что хотите удалить заметки из \"{vmName}\"?",
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": "您确定要从 \"{vmName}\" 中删除注释吗?",
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": "هل تريد بالتأكيد حذف الملاحظات من \"{vmName}\"؟",
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-steps-compute-resource-compatibility
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<[string, string]>(() => {
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: [string, string] = [
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?: [string, string] // для сферы
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?: [string, string] // для сферы
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<[string, string]>(() => {
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: [string, string] = [
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="selectedStep.id === props.dynamicSteps.selectComputeResource"
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
- defineProps<{
333
- project: UI_T_Project
334
- vmSettings: UI_I_VmSettings | null
335
- nodes: UI_I_FileTreeNode[]
336
- files: UI_I_FileTreeNode[]
337
- networksTable: UI_I_NetworkTableItem[]
338
- datastore: UI_I_DatastoreTableItem[]
339
- isDatastoreLoading: boolean
340
- errorValidationFields: UI_I_ErrorValidationField[]
341
- readyCompleteTableInfo: UI_I_TableInfoItem[]
342
- vmCpuHelpTextSecond: string
343
- getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
344
- passthroughDevices: UI_I_PciDevice[]
345
- mediatedDevices: UI_I_MediatedDevice[]
346
- nameRequestUrl: string
347
- wizard: Wizard
348
- selectedScheme: number[]
349
- selectedVirtualMachine: string
350
- isNewVmFromTemplate: boolean | undefined
351
- computeResourceTree: UI_I_TreeNode[] | undefined // для сферы
352
- locationNodes: UI_I_TreeNode[] | undefined // для сферы
353
- title: string
354
- nameFormSubmit: null | Function
355
- storageSubmit: null | Function
356
- customizeHardwareSubmit: null | Function
357
- selectedNavItem: UI_T_SelectedNavItem
358
- allowedLocationKinds: number[]
359
- isSphere: boolean
360
- locationDescription: string
361
- nameTestIds: UI_I_NameTestIds
362
- virtualHardwareHardDisksLocal: UI_I_SendDataNewHardDisk[] | null
363
- virtualHardwareNetworksLocal: UI_I_SendDataNewNetwork[] | null
364
- virtualHardwareCdDvdDrivesLocal: UI_I_SendDataNewCdDvdDrive[] | null
365
- guestOsFamilies: UI_I_OptionItem[]
366
- guestOsVersions: UI_I_ArbitraryObject<UI_I_OptionItem[]>
367
- machineTypes: UI_I_OptionItem[]
368
- dynamicSteps: UI_I_ArbitraryObject<number>
369
- isLoadingComputeTree?: boolean // для сферы
370
- computeResourceAlert?: string[] // для сферы
371
- compatibilityText?: [string, string] // для сферы
372
- }>(),
373
- {
374
- isLoadingComputeTree: false,
375
- computeResourceAlert: () => [],
376
- compatibilityText: () => []
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 { dynamicSteps } from '~/components/common/vm/actions/add/lib/config/steps'
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?: [string, string] // для сферы
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
- <div v-if="!props.hideCompatibility" class="compatibility-wrap">
37
- <p class="compatibility">
38
- {{ localization.inventorySummary.compatibility }}
39
- </p>
40
- <div class="compatibility-message flex-align-center">
41
- <template v-if="props.selectedStorage">
42
- <div class="icon-status-ok" />
43
- <span>{{ localization.common.compatibilityChecksSucceeded }}</span>
44
- </template>
45
- <div v-else>
46
- <br />
47
- </div>
48
- </div>
49
- </div>
50
- </div>
51
- </template>
52
-
53
- <script setup lang="ts">
54
- import type { UI_I_Pagination } from '~/lib/models/table/interfaces'
55
- import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
56
- import type { UI_I_Localization } from '~/lib/models/interfaces'
57
- import type {
58
- UI_I_ColumnKey,
59
- UI_I_HeadItem,
60
- UI_I_BodyItem,
61
- } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
62
- import * as table from '~/components/common/vm/actions/common/select/storage/lib/config/config'
63
-
64
- const selectedRow = defineModel<number | null>('selectedRow')
65
- const pagination = defineModel<UI_I_Pagination>('pagination', {
66
- required: true,
67
- })
68
-
69
- const props = withDefaults(
70
- defineProps<{
71
- datastore: UI_I_DatastoreTableItem[]
72
- isDatastoreLoading: boolean
73
- errors: string[]
74
- selectedStorage: UI_I_DatastoreTableItem | null
75
- hideCompatibility?: boolean
76
- }>(),
77
- {
78
- hideCompatibility: undefined,
79
- }
80
- )
81
- const emits = defineEmits<{
82
- (event: 'remove-error'): void
83
- (event: 'change-storage', value: number): void
84
- }>()
85
-
86
- const localization = computed<UI_I_Localization>(() => useLocal())
87
-
88
- const headItems = ref<UI_I_HeadItem[]>(table.headItems(localization.value))
89
- const columnKeys = ref<UI_I_ColumnKey[]>(table.columnKeys(localization.value))
90
- watch(localization, () => {
91
- columnKeys.value = table.columnKeys(localization.value)
92
- })
93
-
94
- const bodyItems = computed<UI_I_BodyItem[][]>(() => {
95
- return table.bodyItems(props.datastore || [], localization.value)
96
- })
97
- </script>
98
-
99
- <style scoped lang="scss">
100
- .select-storage {
101
- flex: 1;
102
- display: flex;
103
- flex-direction: column;
104
-
105
- .table-wrap {
106
- flex: 1;
107
-
108
- .datagrid-cell-icon {
109
- margin-right: 6px;
110
- }
111
-
112
- :deep(.relative) {
113
- height: 100%;
114
-
115
- .datagrid-outer-wrapper {
116
- height: 100%;
117
- }
118
- }
119
- }
120
-
121
- .compatibility-wrap {
122
- padding-top: 10px;
123
-
124
- .compatibility-message {
125
- border: 1px solid #000;
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>