bfg-common 1.3.216 → 1.3.218

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 (49) hide show
  1. package/assets/localization/local_be.json +2 -1
  2. package/assets/localization/local_en.json +4 -1
  3. package/assets/localization/local_hy.json +2 -1
  4. package/assets/localization/local_kk.json +2 -1
  5. package/assets/localization/local_ru.json +2 -1
  6. package/assets/localization/local_zh.json +2 -1
  7. package/components/atoms/alert/Alert.vue +95 -95
  8. package/components/atoms/alert/Notification.vue +170 -170
  9. package/components/atoms/switch/Switch.vue +111 -111
  10. package/components/atoms/table/compact/Compact.vue +526 -526
  11. package/components/atoms/tooltip/Signpost.vue +225 -225
  12. package/components/common/diagramMain/lib/models/interfaces.ts +6 -11
  13. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +8 -11
  14. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +2 -9
  15. package/components/common/diagramMain/modals/editSettings/tabs/TrafficShaping.vue +6 -139
  16. package/components/common/diagramMain/modals/lib/config/index.ts +0 -4
  17. package/components/common/diagramMain/modals/lib/config/initial.ts +0 -154
  18. package/components/common/diagramMain/modals/lib/config/networkModal.ts +92 -165
  19. package/components/common/pages/Tasks.vue +120 -120
  20. package/components/common/recursionTree/RecursionTree.vue +203 -203
  21. package/components/common/vm/actions/add/Add.vue +575 -575
  22. package/components/common/vm/actions/clone/Clone.vue +518 -518
  23. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +269 -269
  24. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +693 -693
  25. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuModel.vue +220 -220
  26. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +59 -59
  27. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +294 -294
  28. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +165 -165
  29. package/components/common/vm/actions/common/select/storage/lib/config/config.ts +166 -166
  30. package/components/common/vm/actions/editSettings/EditSettings.vue +313 -313
  31. package/components/common/weekSelect/WeekSelect.vue +112 -112
  32. package/components/common/weekSelect/lib/config/options.ts +10 -10
  33. package/components/common/wizards/network/add/Add.vue +17 -1
  34. package/components/common/wizards/network/add/validations/physicalAdapter.ts +70 -0
  35. package/composables/productNameLocal.ts +22 -22
  36. package/composables/useAppVersion.ts +21 -21
  37. package/composables/useEnvLanguage.ts +20 -20
  38. package/lib/utils/sendTask.ts +72 -72
  39. package/minify.js +146 -146
  40. package/package.json +1 -1
  41. package/public/spice-console/application/codec.js +257 -257
  42. package/public/spice-console/lib/rasterEngine.js +907 -907
  43. package/public/spice-console/network/spicechannel.js +369 -369
  44. package/store/main/lib/interfaces.ts +9 -9
  45. package/store/tasks/actions.ts +133 -133
  46. package/store/tasks/getters.ts +25 -25
  47. package/store/tasks/lib/models/interfaces.ts +18 -18
  48. package/store/tasks/mutations.ts +58 -58
  49. package/store/tasks/state.ts +16 -16
@@ -1,165 +1,165 @@
1
- <template>
2
- <div class="hardware-pci-device">
3
- <atoms-stack-block
4
- :has-children="true"
5
- :removable="isRemovable"
6
- @remove="onRemovePciDevice"
7
- >
8
- <template #stackBlockKey>
9
- <div class="flex-align-center">
10
- <span>{{ label }}</span>
11
- </div>
12
- </template>
13
- <template #stackBlockContent>
14
- <span class="main-label">
15
- {{ selectedLabel }}
16
- </span>
17
- </template>
18
- <template #stackChildren>
19
- <template v-if="props.type === 'new'">
20
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-type-selection
21
- v-model="selectedType"
22
- :options="pciDeviceTypeOptions"
23
- :pci-device-index="props.index"
24
- />
25
-
26
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-direct-path-io
27
- v-show="selectedType.value === 'direct_path_io'"
28
- v-model="directPathIo"
29
- :pci-device-index="props.index"
30
- :passthrough-devices="props.passthroughDevices"
31
- />
32
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-dynamic-direct-path-io
33
- v-show="selectedType.value === 'dynamic_direct_path_io'"
34
- v-model="dynamicDirectPathIo"
35
- :pci-device-index="props.index"
36
- :passthrough-devices="props.passthroughDevices"
37
- />
38
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-nvidia-grid
39
- v-show="selectedType.value === 'nvidia_grid'"
40
- v-model="nvidiaGridProfile"
41
- :pci-device-index="props.index"
42
- />
43
- </template>
44
-
45
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-note />
46
- </template>
47
- </atoms-stack-block>
48
- </div>
49
- </template>
50
-
51
- <script setup lang="ts">
52
- import type { UI_I_Localization } from '~/lib/models/interfaces'
53
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
54
- import type { UI_I_SendDataNewPciDevice } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
55
- import type { UI_T_PciDeviceType } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types'
56
- import type { UI_I_PciDevice } from '~/lib/models/store/vm/interfaces'
57
- import { pciDeviceTypeOptionsConfig } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/lib/config/options'
58
-
59
- const props = defineProps<{
60
- index: number
61
- pciDevice: UI_I_SendDataNewPciDevice
62
- passthroughDevices: UI_I_PciDevice[]
63
- type: UI_T_PciDeviceType
64
- isEdit: boolean
65
- state?: string | number
66
- // errorValidationFields: UI_I_ErrorValidationField<string>[]
67
- }>()
68
- const emits = defineEmits<{
69
- (event: 'send-data', value: UI_I_SendDataNewPciDevice): void
70
- (event: 'remove'): void
71
- }>()
72
-
73
- const localization = computed<UI_I_Localization>(() => useLocal())
74
-
75
- const isRunning = computed<boolean>(() => {
76
- return props.state === 2
77
- })
78
-
79
- const isRemovable = computed<boolean>(() => {
80
- return !props.isEdit || !isRunning.value
81
- })
82
-
83
- const label = computed<string>(() => {
84
- if (props.type === 'edit')
85
- return `${localization.value.newPciDevice} ${props.index + 1}`
86
-
87
- return `${localization.value.pciDevice} *`
88
- })
89
-
90
- const selectedLabel = computed<string>(() => {
91
- switch (selectedType.value.value) {
92
- case 'direct_path_io':
93
- return `${directPathIo.value.address}|${directPathIo.value.device_name}`
94
- case 'dynamic_direct_path_io':
95
- return dynamicDirectPathIo.value
96
- default:
97
- return nvidiaGridProfile.value
98
- }
99
- })
100
-
101
- const pciDeviceTypeOptions = ref<UI_I_OptionItem[]>(pciDeviceTypeOptionsConfig)
102
- const selectedType = ref<UI_I_OptionItem>(pciDeviceTypeOptionsConfig[0])
103
-
104
- const directPathIo = ref<UI_I_PciDevice>(
105
- props.passthroughDevices[0]
106
- )
107
- const dynamicDirectPathIo = ref<string>('')
108
- const nvidiaGridProfile = ref<string>('')
109
-
110
- watch(
111
- props.pciDevice,
112
- (newValue) => {
113
- // const passthroughDevice = props.passthroughDevices.find(
114
- // (item) => item.address === newValue.address
115
- // )
116
- // passthroughDevice && (directPathIo.value = passthroughDevice) // Todo change
117
- newValue && (directPathIo.value = newValue)
118
- },
119
- { immediate: true }
120
- )
121
-
122
- const sendData = computed<UI_I_SendDataNewPciDevice>(() => {
123
- switch (selectedType.value.value) {
124
- case 'direct_path_io':
125
- return {
126
- address: directPathIo.value.address,
127
- vendor_name: directPathIo.value.vendor_name,
128
- class_name: directPathIo.value.class_name,
129
- device_name: directPathIo.value.device_name,
130
- }
131
- case 'dynamic_direct_path_io':
132
- return {
133
- address: '',
134
- vendor_name: '',
135
- class_name: '',
136
- device_name: '',
137
- }
138
- default:
139
- return {
140
- address: '',
141
- vendor_name: '',
142
- class_name: '',
143
- device_name: '',
144
- }
145
- }
146
- })
147
-
148
- watch(
149
- sendData,
150
- (newValue) => {
151
- emits('send-data', newValue)
152
- },
153
- { immediate: true }
154
- )
155
-
156
- const onRemovePciDevice = (): void => {
157
- emits('remove')
158
- }
159
- </script>
160
-
161
- <style scoped lang="scss">
162
- #network-connect {
163
- margin-right: 4px;
164
- }
165
- </style>
1
+ <template>
2
+ <div class="hardware-pci-device">
3
+ <atoms-stack-block
4
+ :has-children="true"
5
+ :removable="isRemovable"
6
+ @remove="onRemovePciDevice"
7
+ >
8
+ <template #stackBlockKey>
9
+ <div class="flex-align-center">
10
+ <span>{{ label }}</span>
11
+ </div>
12
+ </template>
13
+ <template #stackBlockContent>
14
+ <span class="main-label">
15
+ {{ selectedLabel }}
16
+ </span>
17
+ </template>
18
+ <template #stackChildren>
19
+ <template v-if="props.type === 'new'">
20
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-type-selection
21
+ v-model="selectedType"
22
+ :options="pciDeviceTypeOptions"
23
+ :pci-device-index="props.index"
24
+ />
25
+
26
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-direct-path-io
27
+ v-show="selectedType.value === 'direct_path_io'"
28
+ v-model="directPathIo"
29
+ :pci-device-index="props.index"
30
+ :passthrough-devices="props.passthroughDevices"
31
+ />
32
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-dynamic-direct-path-io
33
+ v-show="selectedType.value === 'dynamic_direct_path_io'"
34
+ v-model="dynamicDirectPathIo"
35
+ :pci-device-index="props.index"
36
+ :passthrough-devices="props.passthroughDevices"
37
+ />
38
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-nvidia-grid
39
+ v-show="selectedType.value === 'nvidia_grid'"
40
+ v-model="nvidiaGridProfile"
41
+ :pci-device-index="props.index"
42
+ />
43
+ </template>
44
+
45
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-note />
46
+ </template>
47
+ </atoms-stack-block>
48
+ </div>
49
+ </template>
50
+
51
+ <script setup lang="ts">
52
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
53
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
54
+ import type { UI_I_SendDataNewPciDevice } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
55
+ import type { UI_T_PciDeviceType } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types'
56
+ import type { UI_I_PciDevice } from '~/lib/models/store/vm/interfaces'
57
+ import { pciDeviceTypeOptionsConfig } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/lib/config/options'
58
+
59
+ const props = defineProps<{
60
+ index: number
61
+ pciDevice: UI_I_SendDataNewPciDevice
62
+ passthroughDevices: UI_I_PciDevice[]
63
+ type: UI_T_PciDeviceType
64
+ isEdit: boolean
65
+ state?: string | number
66
+ // errorValidationFields: UI_I_ErrorValidationField<string>[]
67
+ }>()
68
+ const emits = defineEmits<{
69
+ (event: 'send-data', value: UI_I_SendDataNewPciDevice): void
70
+ (event: 'remove'): void
71
+ }>()
72
+
73
+ const localization = computed<UI_I_Localization>(() => useLocal())
74
+
75
+ const isRunning = computed<boolean>(() => {
76
+ return props.state === 2
77
+ })
78
+
79
+ const isRemovable = computed<boolean>(() => {
80
+ return !props.isEdit || !isRunning.value
81
+ })
82
+
83
+ const label = computed<string>(() => {
84
+ if (props.type === 'edit')
85
+ return `${localization.value.newPciDevice} ${props.index + 1}`
86
+
87
+ return `${localization.value.pciDevice} *`
88
+ })
89
+
90
+ const selectedLabel = computed<string>(() => {
91
+ switch (selectedType.value.value) {
92
+ case 'direct_path_io':
93
+ return `${directPathIo.value.address}|${directPathIo.value.device_name}`
94
+ case 'dynamic_direct_path_io':
95
+ return dynamicDirectPathIo.value
96
+ default:
97
+ return nvidiaGridProfile.value
98
+ }
99
+ })
100
+
101
+ const pciDeviceTypeOptions = ref<UI_I_OptionItem[]>(pciDeviceTypeOptionsConfig)
102
+ const selectedType = ref<UI_I_OptionItem>(pciDeviceTypeOptionsConfig[0])
103
+
104
+ const directPathIo = ref<UI_I_PciDevice>(
105
+ props.passthroughDevices[0]
106
+ )
107
+ const dynamicDirectPathIo = ref<string>('')
108
+ const nvidiaGridProfile = ref<string>('')
109
+
110
+ watch(
111
+ props.pciDevice,
112
+ (newValue) => {
113
+ // const passthroughDevice = props.passthroughDevices.find(
114
+ // (item) => item.address === newValue.address
115
+ // )
116
+ // passthroughDevice && (directPathIo.value = passthroughDevice) // Todo change
117
+ newValue && (directPathIo.value = newValue)
118
+ },
119
+ { immediate: true }
120
+ )
121
+
122
+ const sendData = computed<UI_I_SendDataNewPciDevice>(() => {
123
+ switch (selectedType.value.value) {
124
+ case 'direct_path_io':
125
+ return {
126
+ address: directPathIo.value.address,
127
+ vendor_name: directPathIo.value.vendor_name,
128
+ class_name: directPathIo.value.class_name,
129
+ device_name: directPathIo.value.device_name,
130
+ }
131
+ case 'dynamic_direct_path_io':
132
+ return {
133
+ address: '',
134
+ vendor_name: '',
135
+ class_name: '',
136
+ device_name: '',
137
+ }
138
+ default:
139
+ return {
140
+ address: '',
141
+ vendor_name: '',
142
+ class_name: '',
143
+ device_name: '',
144
+ }
145
+ }
146
+ })
147
+
148
+ watch(
149
+ sendData,
150
+ (newValue) => {
151
+ emits('send-data', newValue)
152
+ },
153
+ { immediate: true }
154
+ )
155
+
156
+ const onRemovePciDevice = (): void => {
157
+ emits('remove')
158
+ }
159
+ </script>
160
+
161
+ <style scoped lang="scss">
162
+ #network-connect {
163
+ margin-right: 4px;
164
+ }
165
+ </style>
@@ -1,166 +1,166 @@
1
- import { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
2
- import type {
3
- UI_I_ColumnKey,
4
- UI_I_HeadItem,
5
- UI_I_BodyItem,
6
- } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
7
- import type { UI_I_Localization } from '~/lib/models/interfaces'
8
- import { UI_T_StorageColumnKeys } from '~/components/common/vm/actions/common/select/storage/lib/models/types'
9
- import {
10
- constructColumnKey,
11
- constructHeadItem,
12
- } from '~/components/atoms/table/dataGrid/lib/utils/constructDataTable'
13
- import {
14
- datastoreIconByState,
15
- datastoreLocalizationByState,
16
- } from '~/components/common/lib/config/states'
17
-
18
- export const storageTableKeys: UI_T_StorageColumnKeys = [
19
- 'name',
20
- 'state',
21
- 'capacity_mb',
22
- 'provisioned_mb',
23
- 'free_mb',
24
- 'used_mb',
25
- 'type_text',
26
- 'thin_provisioning',
27
- 'access_mode',
28
- 'hardware_acceleration',
29
- 'drive_type',
30
- 'device',
31
- 'storage_io_control',
32
- ]
33
-
34
- const getItems = (
35
- localization: UI_I_Localization
36
- ): [string, boolean, string, string][] => {
37
- return [
38
- [localization.name, true, '96px', storageTableKeys[0]],
39
- [localization.state, true, '138px', storageTableKeys[1]],
40
- [localization.capacity, true, '110px', storageTableKeys[2]],
41
- [localization.provisioned, true, '128px', storageTableKeys[3]],
42
- [localization.free, true, '110px', storageTableKeys[4]],
43
- [localization.used, true, '110px', storageTableKeys[5]],
44
- [localization.type, true, '110px', storageTableKeys[6]],
45
- [localization.thinProvisioning, true, '132px', storageTableKeys[7]],
46
- [localization.access, true, '110px', storageTableKeys[8]],
47
- [localization.hardwareAcceleration, true, '134px', storageTableKeys[9]],
48
- [localization.driverType, true, '110px', storageTableKeys[10]],
49
- [localization.device, true, '110px', storageTableKeys[11]],
50
- [localization.storageIoControl, true, '110px', storageTableKeys[12]],
51
- ]
52
- }
53
-
54
- export const columnKeys = (
55
- localization: UI_I_Localization
56
- ): UI_I_ColumnKey[] => {
57
- const result: UI_I_ColumnKey[] = []
58
- getItems(localization).forEach((item, i) => {
59
- const col = i === 0 ? 'icon' : `col${i}`
60
- result.push(constructColumnKey(col, item[0], item[1]))
61
- })
62
- return result
63
- }
64
-
65
- export const headItems = (localization: UI_I_Localization): UI_I_HeadItem[] => {
66
- const result: UI_I_HeadItem[] = []
67
- getItems(localization).forEach((item, i) => {
68
- const col = i === 0 ? 'icon' : `col${i}`
69
- result.push(constructHeadItem(col, item[0], item[3], true, item[2]))
70
- })
71
- return result
72
- }
73
-
74
- export const bodyItems = (
75
- data: UI_I_DatastoreTableItem[],
76
- localization: UI_I_Localization
77
- ): UI_I_BodyItem[][] => {
78
- const bodyItems: UI_I_BodyItem[][] = []
79
- const { $binary } = useNuxtApp()
80
-
81
- data.forEach((storage: UI_I_DatastoreTableItem, key: number) => {
82
- const state =
83
- localization[datastoreLocalizationByState[storage[storageTableKeys[1]]]]
84
- bodyItems.push([
85
- {
86
- key: 'icon',
87
- text: storage[storageTableKeys[0]].toString(),
88
- data: `vsphere-icon-${datastoreIconByState[storage.state]}`,
89
- id: key,
90
- },
91
- {
92
- key: 'col1',
93
- text: state,
94
- id: key,
95
- },
96
- {
97
- key: 'col2',
98
- text: $binary.round(storage.capacity[storageTableKeys[2]]),
99
- data: {
100
- sortValue: storage.capacity[storageTableKeys[2]],
101
- },
102
- id: key,
103
- },
104
- {
105
- key: 'col3',
106
- text: $binary.round(storage.capacity[storageTableKeys[3]].toString()),
107
- data: {
108
- sortValue: storage.capacity[storageTableKeys[3]],
109
- },
110
- id: key,
111
- },
112
- {
113
- key: 'col4',
114
- text: $binary.round(storage.capacity[storageTableKeys[4]].toString()),
115
- data: {
116
- sortValue: storage.capacity[storageTableKeys[4]],
117
- },
118
- id: key,
119
- },
120
- {
121
- key: 'col5',
122
- text: $binary.round(storage.capacity[storageTableKeys[5]].toString()),
123
- data: {
124
- sortValue: storage.capacity[storageTableKeys[5]],
125
- },
126
- id: key,
127
- },
128
- {
129
- key: 'col6',
130
- text: storage[storageTableKeys[6]].toString(),
131
- id: key,
132
- },
133
- {
134
- key: 'col7',
135
- text: storage[storageTableKeys[7]] ? localization.yes : localization.no,
136
- id: key,
137
- },
138
- {
139
- key: 'col8',
140
- text: storage[storageTableKeys[8]].toString(),
141
- id: key,
142
- },
143
- {
144
- key: 'col9',
145
- text: storage[storageTableKeys[9]].toString(),
146
- id: key,
147
- },
148
- {
149
- key: 'col10',
150
- text: storage[storageTableKeys[10]].toString(),
151
- id: key,
152
- },
153
- {
154
- key: 'col11',
155
- text: storage[storageTableKeys[11]].toString(),
156
- id: key,
157
- },
158
- {
159
- key: 'col12',
160
- text: storage[storageTableKeys[12]].toString(),
161
- id: key,
162
- },
163
- ])
164
- })
165
- return bodyItems
166
- }
1
+ import { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
2
+ import type {
3
+ UI_I_ColumnKey,
4
+ UI_I_HeadItem,
5
+ UI_I_BodyItem,
6
+ } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
7
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
8
+ import { UI_T_StorageColumnKeys } from '~/components/common/vm/actions/common/select/storage/lib/models/types'
9
+ import {
10
+ constructColumnKey,
11
+ constructHeadItem,
12
+ } from '~/components/atoms/table/dataGrid/lib/utils/constructDataTable'
13
+ import {
14
+ datastoreIconByState,
15
+ datastoreLocalizationByState,
16
+ } from '~/components/common/lib/config/states'
17
+
18
+ export const storageTableKeys: UI_T_StorageColumnKeys = [
19
+ 'name',
20
+ 'state',
21
+ 'capacity_mb',
22
+ 'provisioned_mb',
23
+ 'free_mb',
24
+ 'used_mb',
25
+ 'type_text',
26
+ 'thin_provisioning',
27
+ 'access_mode',
28
+ 'hardware_acceleration',
29
+ 'drive_type',
30
+ 'device',
31
+ 'storage_io_control',
32
+ ]
33
+
34
+ const getItems = (
35
+ localization: UI_I_Localization
36
+ ): [string, boolean, string, string][] => {
37
+ return [
38
+ [localization.name, true, '96px', storageTableKeys[0]],
39
+ [localization.state, true, '138px', storageTableKeys[1]],
40
+ [localization.capacity, true, '110px', storageTableKeys[2]],
41
+ [localization.provisioned, true, '128px', storageTableKeys[3]],
42
+ [localization.free, true, '110px', storageTableKeys[4]],
43
+ [localization.used, true, '110px', storageTableKeys[5]],
44
+ [localization.type, true, '110px', storageTableKeys[6]],
45
+ [localization.thinProvisioning, true, '132px', storageTableKeys[7]],
46
+ [localization.access, true, '110px', storageTableKeys[8]],
47
+ [localization.hardwareAcceleration, true, '134px', storageTableKeys[9]],
48
+ [localization.driverType, true, '110px', storageTableKeys[10]],
49
+ [localization.device, true, '110px', storageTableKeys[11]],
50
+ [localization.storageIoControl, true, '110px', storageTableKeys[12]],
51
+ ]
52
+ }
53
+
54
+ export const columnKeys = (
55
+ localization: UI_I_Localization
56
+ ): UI_I_ColumnKey[] => {
57
+ const result: UI_I_ColumnKey[] = []
58
+ getItems(localization).forEach((item, i) => {
59
+ const col = i === 0 ? 'icon' : `col${i}`
60
+ result.push(constructColumnKey(col, item[0], item[1]))
61
+ })
62
+ return result
63
+ }
64
+
65
+ export const headItems = (localization: UI_I_Localization): UI_I_HeadItem[] => {
66
+ const result: UI_I_HeadItem[] = []
67
+ getItems(localization).forEach((item, i) => {
68
+ const col = i === 0 ? 'icon' : `col${i}`
69
+ result.push(constructHeadItem(col, item[0], item[3], true, item[2]))
70
+ })
71
+ return result
72
+ }
73
+
74
+ export const bodyItems = (
75
+ data: UI_I_DatastoreTableItem[],
76
+ localization: UI_I_Localization
77
+ ): UI_I_BodyItem[][] => {
78
+ const bodyItems: UI_I_BodyItem[][] = []
79
+ const { $binary } = useNuxtApp()
80
+
81
+ data.forEach((storage: UI_I_DatastoreTableItem, key: number) => {
82
+ const state =
83
+ localization[datastoreLocalizationByState[storage[storageTableKeys[1]]]]
84
+ bodyItems.push([
85
+ {
86
+ key: 'icon',
87
+ text: storage[storageTableKeys[0]].toString(),
88
+ data: `vsphere-icon-${datastoreIconByState[storage.state]}`,
89
+ id: key,
90
+ },
91
+ {
92
+ key: 'col1',
93
+ text: state,
94
+ id: key,
95
+ },
96
+ {
97
+ key: 'col2',
98
+ text: $binary.round(storage.capacity[storageTableKeys[2]]),
99
+ data: {
100
+ sortValue: storage.capacity[storageTableKeys[2]],
101
+ },
102
+ id: key,
103
+ },
104
+ {
105
+ key: 'col3',
106
+ text: $binary.round(storage.capacity[storageTableKeys[3]].toString()),
107
+ data: {
108
+ sortValue: storage.capacity[storageTableKeys[3]],
109
+ },
110
+ id: key,
111
+ },
112
+ {
113
+ key: 'col4',
114
+ text: $binary.round(storage.capacity[storageTableKeys[4]].toString()),
115
+ data: {
116
+ sortValue: storage.capacity[storageTableKeys[4]],
117
+ },
118
+ id: key,
119
+ },
120
+ {
121
+ key: 'col5',
122
+ text: $binary.round(storage.capacity[storageTableKeys[5]].toString()),
123
+ data: {
124
+ sortValue: storage.capacity[storageTableKeys[5]],
125
+ },
126
+ id: key,
127
+ },
128
+ {
129
+ key: 'col6',
130
+ text: storage[storageTableKeys[6]].toString(),
131
+ id: key,
132
+ },
133
+ {
134
+ key: 'col7',
135
+ text: storage[storageTableKeys[7]] ? localization.yes : localization.no,
136
+ id: key,
137
+ },
138
+ {
139
+ key: 'col8',
140
+ text: storage[storageTableKeys[8]].toString(),
141
+ id: key,
142
+ },
143
+ {
144
+ key: 'col9',
145
+ text: storage[storageTableKeys[9]].toString(),
146
+ id: key,
147
+ },
148
+ {
149
+ key: 'col10',
150
+ text: storage[storageTableKeys[10]].toString(),
151
+ id: key,
152
+ },
153
+ {
154
+ key: 'col11',
155
+ text: storage[storageTableKeys[11]].toString(),
156
+ id: key,
157
+ },
158
+ {
159
+ key: 'col12',
160
+ text: storage[storageTableKeys[12]].toString(),
161
+ id: key,
162
+ },
163
+ ])
164
+ })
165
+ return bodyItems
166
+ }