bfg-common 1.4.499 → 1.4.501

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 (114) hide show
  1. package/assets/img/icons/icons-sprite-dark-1.svg +407 -407
  2. package/assets/img/icons/icons-sprite-dark-2.svg +343 -343
  3. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  4. package/assets/img/icons/icons-sprite-dark-4.svg +255 -255
  5. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  6. package/assets/img/icons/icons-sprite-dark-6.svg +94 -94
  7. package/assets/img/icons/icons-sprite-light-1.svg +407 -407
  8. package/assets/img/icons/icons-sprite-light-2.svg +343 -343
  9. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  10. package/assets/img/icons/icons-sprite-light-4.svg +255 -255
  11. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  12. package/assets/img/icons/icons-sprite-light-6.svg +94 -94
  13. package/components/atoms/TheIcon3.vue +50 -50
  14. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  15. package/components/atoms/stack/StackBlock.vue +185 -185
  16. package/components/atoms/table/dataGrid/DataGrid.vue +1633 -1633
  17. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  18. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  19. package/components/common/browse/lib/models/interfaces.ts +5 -5
  20. package/components/common/context/lib/models/interfaces.ts +30 -30
  21. package/components/common/context/recursion/Recursion.vue +86 -86
  22. package/components/common/context/recursion/RecursionNew.vue +199 -199
  23. package/components/common/context/recursion/RecursionOld.vue +213 -213
  24. package/components/common/diagramMain/Header.vue +211 -211
  25. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  26. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  27. package/components/common/diagramMain/lib/models/enums.ts +44 -44
  28. package/components/common/diagramMain/lib/models/types.ts +21 -21
  29. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  30. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +330 -330
  31. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  32. package/components/common/diagramMain/modals/editSettings/EditSettings.vue +497 -497
  33. package/components/common/diagramMain/modals/editSettings/EditSettingsModal.vue +812 -812
  34. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  35. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  36. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  37. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  38. package/components/common/diagramMain/modals/editSettings/tabs/TrafficShaping.vue +398 -398
  39. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  40. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +205 -205
  41. package/components/common/diagramMain/modals/lib/config/diagramConfig.ts +23 -23
  42. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  43. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  44. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  45. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  46. package/components/common/diagramMain/modals/migrateVmkernelAdapter/MigrateVmkernelAdapter.vue +537 -537
  47. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  48. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  49. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  50. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  51. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  52. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  53. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  54. package/components/common/diagramMain/port/Ports.vue +47 -47
  55. package/components/common/modals/confirmation/Confirmation.vue +70 -70
  56. package/components/common/vm/actions/add/Add.vue +617 -617
  57. package/components/common/vm/actions/clone/lib/config/steps.ts +129 -129
  58. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +267 -267
  59. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +254 -204
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +118 -118
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +163 -164
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +55 -55
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +0 -1
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +147 -147
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/MemoryNew.vue +0 -1
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +0 -1
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -125
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkOld.vue +2 -2
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/Location.vue +71 -0
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/{Location.vue → location/LocationOld.vue} +134 -145
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -0
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/Table.vue +74 -0
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -0
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -84
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -53
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +27 -27
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +0 -1
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  84. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  85. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  86. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  87. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  88. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  89. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  90. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  91. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  92. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  93. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  94. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  95. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  96. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  98. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  99. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +100 -100
  101. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +38 -38
  102. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  103. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  104. package/components/common/vm/actions/common/select/storage/StorageOld.vue +129 -129
  105. package/components/common/vm/actions/common/select/storage/new/New.vue +159 -159
  106. package/components/common/vm/actions/editSettings/EditSettings.vue +214 -214
  107. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +182 -182
  108. package/components/common/wizards/network/add/lib/config/steps.ts +464 -464
  109. package/composables/productNameLocal.ts +30 -30
  110. package/package.json +1 -1
  111. package/plugins/date.ts +233 -233
  112. package/plugins/recursion.ts +311 -311
  113. package/public/spice-console/lib/images/bitmap.js +203 -203
  114. package/public/spice-console/network/spicechannel.js +383 -383
@@ -1,129 +1,129 @@
1
- <template>
2
- <div class="select-storage">
3
- <atoms-alert
4
- v-show="props.errors.length"
5
- status="alert-danger"
6
- test-id="storage-alert"
7
- :items="props.errors"
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
- type="radio"
17
- test-id="storage-table"
18
- :head-items="headItems"
19
- :body-items="bodyItems"
20
- :total-items="bodyItems.length"
21
- :total-pages="1"
22
- server-off
23
- hide-page-size
24
- @change="emits('change-storage', $event)"
25
- >
26
- <template #icon="{ item }">
27
- <span :class="['datagrid-cell-icon', item.data]" />
28
- <span class="text-ellipsis">
29
- {{ item.text }}
30
- </span>
31
- </template>
32
- </atoms-table-data-grid>
33
- </div>
34
-
35
- <div v-if="!props.hideCompatibility" class="compatibility-wrap">
36
- <p class="compatibility">
37
- {{ localization.inventorySummary.compatibility }}
38
- </p>
39
- <div class="compatibility-message flex-align-center">
40
- <template v-if="props.selectedStorage">
41
- <div class="icon-status-ok" />
42
- <span>{{ localization.common.compatibilityChecksSucceeded }}</span>
43
- </template>
44
- <div v-else>
45
- <br />
46
- </div>
47
- </div>
48
- </div>
49
- </div>
50
- </template>
51
-
52
- <script setup lang="ts">
53
- import type {
54
- UI_I_Pagination,
55
- UI_I_TablePayload,
56
- } from '~/lib/models/table/interfaces'
57
- import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
58
- import type { UI_I_Localization } from '~/lib/models/interfaces'
59
- import type {
60
- UI_I_ColumnKey,
61
- UI_I_HeadItem,
62
- UI_I_BodyItem,
63
- } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
64
- import * as table from '~/components/common/vm/actions/common/select/storage/lib/config/config'
65
-
66
- const selectedRow = defineModel<number | null>('selected-row')
67
- const pagination = defineModel<UI_I_Pagination>('pagination', {
68
- required: true,
69
- })
70
-
71
- const props = defineProps<{
72
- datastore: UI_I_DatastoreTableItem[]
73
- getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
74
- errors: string[]
75
- selectedStorage: UI_I_DatastoreTableItem | null
76
- hideCompatibility?: boolean
77
- }>()
78
- const emits = defineEmits<{
79
- (event: 'remove-error'): void
80
- (event: 'change-storage', value: number): void
81
- }>()
82
-
83
- const localization = computed<UI_I_Localization>(() => useLocal())
84
-
85
- const headItems = ref<UI_I_HeadItem[]>(table.headItems(localization.value))
86
- const columnKeys = ref<UI_I_ColumnKey[]>(table.columnKeys(localization.value))
87
- watch(localization, () => {
88
- columnKeys.value = table.columnKeys(localization.value)
89
- })
90
-
91
- const bodyItems = computed<UI_I_BodyItem[][]>(() => {
92
- return table.bodyItems(props.datastore || [], localization.value)
93
- })
94
- </script>
95
-
96
- <style scoped lang="scss">
97
- .select-storage {
98
- flex: 1;
99
- display: flex;
100
- flex-direction: column;
101
-
102
- .table-wrap {
103
- flex: 1;
104
-
105
- .datagrid-cell-icon {
106
- margin-right: 6px;
107
- }
108
-
109
- :deep(.relative) {
110
- height: 100%;
111
-
112
- .datagrid-outer-wrapper {
113
- height: 100%;
114
- }
115
- }
116
- }
117
-
118
- .compatibility-wrap {
119
- padding-top: 10px;
120
-
121
- .compatibility-message {
122
- border: 1px solid #000;
123
- padding-top: 5px;
124
- padding-left: 5px;
125
- overflow: auto;
126
- }
127
- }
128
- }
129
- </style>
1
+ <template>
2
+ <div class="select-storage">
3
+ <atoms-alert
4
+ v-show="props.errors.length"
5
+ status="alert-danger"
6
+ test-id="storage-alert"
7
+ :items="props.errors"
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
+ type="radio"
17
+ test-id="storage-table"
18
+ :head-items="headItems"
19
+ :body-items="bodyItems"
20
+ :total-items="bodyItems.length"
21
+ :total-pages="1"
22
+ server-off
23
+ hide-page-size
24
+ @change="emits('change-storage', $event)"
25
+ >
26
+ <template #icon="{ item }">
27
+ <span :class="['datagrid-cell-icon', item.data]" />
28
+ <span class="text-ellipsis">
29
+ {{ item.text }}
30
+ </span>
31
+ </template>
32
+ </atoms-table-data-grid>
33
+ </div>
34
+
35
+ <div v-if="!props.hideCompatibility" class="compatibility-wrap">
36
+ <p class="compatibility">
37
+ {{ localization.inventorySummary.compatibility }}
38
+ </p>
39
+ <div class="compatibility-message flex-align-center">
40
+ <template v-if="props.selectedStorage">
41
+ <div class="icon-status-ok" />
42
+ <span>{{ localization.common.compatibilityChecksSucceeded }}</span>
43
+ </template>
44
+ <div v-else>
45
+ <br />
46
+ </div>
47
+ </div>
48
+ </div>
49
+ </div>
50
+ </template>
51
+
52
+ <script setup lang="ts">
53
+ import type {
54
+ UI_I_Pagination,
55
+ UI_I_TablePayload,
56
+ } from '~/lib/models/table/interfaces'
57
+ import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
58
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
59
+ import type {
60
+ UI_I_ColumnKey,
61
+ UI_I_HeadItem,
62
+ UI_I_BodyItem,
63
+ } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
64
+ import * as table from '~/components/common/vm/actions/common/select/storage/lib/config/config'
65
+
66
+ const selectedRow = defineModel<number | null>('selected-row')
67
+ const pagination = defineModel<UI_I_Pagination>('pagination', {
68
+ required: true,
69
+ })
70
+
71
+ const props = defineProps<{
72
+ datastore: UI_I_DatastoreTableItem[]
73
+ getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
74
+ errors: string[]
75
+ selectedStorage: UI_I_DatastoreTableItem | null
76
+ hideCompatibility?: boolean
77
+ }>()
78
+ const emits = defineEmits<{
79
+ (event: 'remove-error'): void
80
+ (event: 'change-storage', value: number): void
81
+ }>()
82
+
83
+ const localization = computed<UI_I_Localization>(() => useLocal())
84
+
85
+ const headItems = ref<UI_I_HeadItem[]>(table.headItems(localization.value))
86
+ const columnKeys = ref<UI_I_ColumnKey[]>(table.columnKeys(localization.value))
87
+ watch(localization, () => {
88
+ columnKeys.value = table.columnKeys(localization.value)
89
+ })
90
+
91
+ const bodyItems = computed<UI_I_BodyItem[][]>(() => {
92
+ return table.bodyItems(props.datastore || [], localization.value)
93
+ })
94
+ </script>
95
+
96
+ <style scoped lang="scss">
97
+ .select-storage {
98
+ flex: 1;
99
+ display: flex;
100
+ flex-direction: column;
101
+
102
+ .table-wrap {
103
+ flex: 1;
104
+
105
+ .datagrid-cell-icon {
106
+ margin-right: 6px;
107
+ }
108
+
109
+ :deep(.relative) {
110
+ height: 100%;
111
+
112
+ .datagrid-outer-wrapper {
113
+ height: 100%;
114
+ }
115
+ }
116
+ }
117
+
118
+ .compatibility-wrap {
119
+ padding-top: 10px;
120
+
121
+ .compatibility-message {
122
+ border: 1px solid #000;
123
+ padding-top: 5px;
124
+ padding-left: 5px;
125
+ overflow: auto;
126
+ }
127
+ }
128
+ }
129
+ </style>
@@ -1,159 +1,159 @@
1
- <template>
2
- <div class="select-storage">
3
- <ui-alert
4
- v-show="props.errors.length"
5
- status="alert-danger"
6
- test-id="storage-alert"
7
- :items="props.errors"
8
- @remove="emits('remove-error')"
9
- />
10
- <div class="table-wrap">
11
- <ui-data-table
12
- test-id="select-storage-data-table"
13
- :data="data"
14
- :options="tableOptions"
15
- :loading="loading"
16
- server-off
17
- :default-layout="false"
18
- @select-row="onSelectRow"
19
- />
20
- </div>
21
-
22
- <div v-if="!props.hideCompatibility" class="compatibility-wrap">
23
- <p class="compatibility">
24
- {{ localization.inventorySummary.compatibility }}
25
- </p>
26
- <div class="compatibility-message flex-align-center">
27
- <template v-if="props.selectedStorage">
28
- <div class="icon-status-ok" />
29
- <span>{{ localization.common.compatibilityChecksSucceeded }}</span>
30
- </template>
31
- <div v-else>
32
- <br />
33
- </div>
34
- </div>
35
- </div>
36
- </div>
37
- </template>
38
-
39
- <script setup lang="ts">
40
- import type { UI_I_DataTable } from 'bfg-uikit/components/ui/dataTable/models/interfaces'
41
- import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
42
- import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
43
- import type { UI_I_Localization } from '~/lib/models/interfaces'
44
- import { datastoreLocalizationByState } from '~/components/common/lib/config/states'
45
- import {
46
- tableDataFunc,
47
- tableOptions,
48
- } from '~/components/common/vm/actions/common/select/storage/new/lib/config/table'
49
-
50
- const selectedRow = defineModel<number | null>('selected-row')
51
-
52
- const props = defineProps<{
53
- datastore: UI_I_DatastoreTableItem[]
54
- getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
55
- errors: string[]
56
- selectedStorage: UI_I_DatastoreTableItem | null
57
- hideCompatibility?: boolean
58
- }>()
59
- const emits = defineEmits<{
60
- (event: 'remove-error'): void
61
- (event: 'change-storage', value: number): void
62
- }>()
63
-
64
- const localization = computed<UI_I_Localization>(() => useLocal())
65
-
66
- const loading = ref<boolean>(true)
67
-
68
- const data = ref<UI_I_DataTable>(tableDataFunc(localization.value))
69
-
70
- watch(
71
- () => props.datastore,
72
- (newValue) => {
73
- if (!newValue.length || data.value.body.length) return
74
-
75
- const { $binary } = useNuxtApp()
76
-
77
- newValue.forEach((item, key) => {
78
- const state =
79
- localization.value.inventorySummary[
80
- datastoreLocalizationByState[item.state]
81
- ]
82
- data.value.body.push({
83
- row: key,
84
- collapse: false,
85
- isHiddenCollapse: false,
86
- collapseToggle: false,
87
- isSelected: key === selectedRow.value,
88
- data: [
89
- {
90
- key: item.id,
91
- col: 0,
92
- text: item.name,
93
- },
94
- {
95
- col: 1,
96
- text: state,
97
- },
98
- { col: 2, text: $binary.round(item.capacity.capacity_mb) },
99
- {
100
- col: 3,
101
- text: $binary.round(item.capacity.provisioned_mb.toString()),
102
- },
103
- {
104
- col: 4,
105
- text: $binary.round(item.capacity.free_mb.toString()),
106
- },
107
- {
108
- col: 5,
109
- text: $binary.round(item.capacity.used_mb.toString()),
110
- },
111
- {
112
- col: 6,
113
- text: item.type_text,
114
- },
115
- {
116
- col: 7,
117
- text: item.thin_provisioning
118
- ? localization.value.common.yes
119
- : localization.value.common.no,
120
- },
121
- {
122
- col: 8,
123
- text: item.access_mode,
124
- },
125
- {
126
- col: 9,
127
- text: item.hardware_acceleration,
128
- },
129
- {
130
- col: 10,
131
- text: item.drive_type,
132
- },
133
- {
134
- col: 11,
135
- text: item.device,
136
- },
137
- {
138
- col: 12,
139
- text: item.storage_io_control,
140
- },
141
- ],
142
- })
143
- })
144
- loading.value = false
145
- },
146
- { immediate: true, deep: true }
147
- )
148
-
149
- const onSelectRow = (selectedData: UI_I_DataTable): void => {
150
- const selectedId = selectedData[0]?.data[0]?.key
151
- const selectedItemIndex = props.datastore.findIndex(
152
- (item) => item.id === selectedId
153
- )
154
-
155
- emits('change-storage', selectedItemIndex)
156
- }
157
- </script>
158
-
159
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <div class="select-storage">
3
+ <ui-alert
4
+ v-show="props.errors.length"
5
+ status="alert-danger"
6
+ test-id="storage-alert"
7
+ :items="props.errors"
8
+ @remove="emits('remove-error')"
9
+ />
10
+ <div class="table-wrap">
11
+ <ui-data-table
12
+ test-id="select-storage-data-table"
13
+ :data="data"
14
+ :options="tableOptions"
15
+ :loading="loading"
16
+ server-off
17
+ :default-layout="false"
18
+ @select-row="onSelectRow"
19
+ />
20
+ </div>
21
+
22
+ <div v-if="!props.hideCompatibility" class="compatibility-wrap">
23
+ <p class="compatibility">
24
+ {{ localization.inventorySummary.compatibility }}
25
+ </p>
26
+ <div class="compatibility-message flex-align-center">
27
+ <template v-if="props.selectedStorage">
28
+ <div class="icon-status-ok" />
29
+ <span>{{ localization.common.compatibilityChecksSucceeded }}</span>
30
+ </template>
31
+ <div v-else>
32
+ <br />
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </div>
37
+ </template>
38
+
39
+ <script setup lang="ts">
40
+ import type { UI_I_DataTable } from 'bfg-uikit/components/ui/dataTable/models/interfaces'
41
+ import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
42
+ import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
43
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
44
+ import { datastoreLocalizationByState } from '~/components/common/lib/config/states'
45
+ import {
46
+ tableDataFunc,
47
+ tableOptions,
48
+ } from '~/components/common/vm/actions/common/select/storage/new/lib/config/table'
49
+
50
+ const selectedRow = defineModel<number | null>('selected-row')
51
+
52
+ const props = defineProps<{
53
+ datastore: UI_I_DatastoreTableItem[]
54
+ getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
55
+ errors: string[]
56
+ selectedStorage: UI_I_DatastoreTableItem | null
57
+ hideCompatibility?: boolean
58
+ }>()
59
+ const emits = defineEmits<{
60
+ (event: 'remove-error'): void
61
+ (event: 'change-storage', value: number): void
62
+ }>()
63
+
64
+ const localization = computed<UI_I_Localization>(() => useLocal())
65
+
66
+ const loading = ref<boolean>(true)
67
+
68
+ const data = ref<UI_I_DataTable>(tableDataFunc(localization.value))
69
+
70
+ watch(
71
+ () => props.datastore,
72
+ (newValue) => {
73
+ if (!newValue.length || data.value.body.length) return
74
+
75
+ const { $binary } = useNuxtApp()
76
+
77
+ newValue.forEach((item, key) => {
78
+ const state =
79
+ localization.value.inventorySummary[
80
+ datastoreLocalizationByState[item.state]
81
+ ]
82
+ data.value.body.push({
83
+ row: key,
84
+ collapse: false,
85
+ isHiddenCollapse: false,
86
+ collapseToggle: false,
87
+ isSelected: key === selectedRow.value,
88
+ data: [
89
+ {
90
+ key: item.id,
91
+ col: 0,
92
+ text: item.name,
93
+ },
94
+ {
95
+ col: 1,
96
+ text: state,
97
+ },
98
+ { col: 2, text: $binary.round(item.capacity.capacity_mb) },
99
+ {
100
+ col: 3,
101
+ text: $binary.round(item.capacity.provisioned_mb.toString()),
102
+ },
103
+ {
104
+ col: 4,
105
+ text: $binary.round(item.capacity.free_mb.toString()),
106
+ },
107
+ {
108
+ col: 5,
109
+ text: $binary.round(item.capacity.used_mb.toString()),
110
+ },
111
+ {
112
+ col: 6,
113
+ text: item.type_text,
114
+ },
115
+ {
116
+ col: 7,
117
+ text: item.thin_provisioning
118
+ ? localization.value.common.yes
119
+ : localization.value.common.no,
120
+ },
121
+ {
122
+ col: 8,
123
+ text: item.access_mode,
124
+ },
125
+ {
126
+ col: 9,
127
+ text: item.hardware_acceleration,
128
+ },
129
+ {
130
+ col: 10,
131
+ text: item.drive_type,
132
+ },
133
+ {
134
+ col: 11,
135
+ text: item.device,
136
+ },
137
+ {
138
+ col: 12,
139
+ text: item.storage_io_control,
140
+ },
141
+ ],
142
+ })
143
+ })
144
+ loading.value = false
145
+ },
146
+ { immediate: true, deep: true }
147
+ )
148
+
149
+ const onSelectRow = (selectedData: UI_I_DataTable): void => {
150
+ const selectedId = selectedData[0]?.data[0]?.key
151
+ const selectedItemIndex = props.datastore.findIndex(
152
+ (item) => item.id === selectedId
153
+ )
154
+
155
+ emits('change-storage', selectedItemIndex)
156
+ }
157
+ </script>
158
+
159
+ <style scoped lang="scss"></style>