bfg-common 1.5.539 → 1.5.541

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 (42) hide show
  1. package/components/common/pages/backups/modals/createBackup/CreateBackup.vue +195 -195
  2. package/components/common/pages/backups/modals/createBackup/datastores/tableView/new/TableView.vue +3 -3
  3. package/components/common/pages/backups/modals/createBackup/disks/tableView/new/lib/config/table.ts +1 -0
  4. package/components/common/pages/backups/modals/restore/Restore.vue +78 -196
  5. package/components/common/pages/backups/modals/restore/RestoreNew.vue +289 -0
  6. package/components/common/pages/backups/modals/restore/RestoreOld.vue +173 -0
  7. package/components/common/pages/backups/modals/restore/disks/Disks.vue +32 -27
  8. package/components/common/pages/backups/modals/restore/disks/DisksNew.vue +17 -0
  9. package/components/common/pages/backups/modals/restore/disks/DisksOld.vue +21 -0
  10. package/components/common/pages/backups/modals/restore/disks/tableView/new/Table.vue +126 -0
  11. package/components/common/pages/backups/modals/restore/disks/tableView/new/lib/config/table.ts +175 -0
  12. package/components/common/pages/backups/modals/restore/disks/tableView/{TableView.vue → old/Table.vue} +6 -3
  13. package/components/common/pages/backups/modals/restore/disks/tableView/{lib → old/lib}/config/keys.ts +1 -1
  14. package/components/common/pages/backups/modals/restore/disks/tableView/{lib → old/lib}/config/table.ts +117 -117
  15. package/components/common/pages/backups/modals/restore/disks/tableView/{lib → old/lib}/models/types.ts +1 -1
  16. package/components/common/pages/backups/modals/restore/lib/config/readyToCompleteOptions.ts +62 -0
  17. package/components/common/pages/backups/modals/restore/lib/config/steps.ts +21 -21
  18. package/components/common/pages/backups/modals/restore/name/Name.vue +31 -166
  19. package/components/common/pages/backups/modals/restore/name/NameNew.vue +98 -0
  20. package/components/common/pages/backups/modals/restore/name/NameOld.vue +86 -0
  21. package/components/common/pages/backups/modals/restore/networks/Networks.vue +64 -70
  22. package/components/common/pages/backups/modals/restore/networks/NetworksNew.vue +78 -0
  23. package/components/common/pages/backups/modals/restore/networks/NetworksOld.vue +48 -0
  24. package/components/common/pages/backups/modals/restore/networks/table/new/Table.vue +269 -0
  25. package/components/common/pages/backups/modals/restore/networks/table/new/lib/config/table.ts +127 -0
  26. package/components/common/pages/backups/modals/restore/networks/table/{Table.vue → old/Table.vue} +219 -214
  27. package/components/common/pages/backups/modals/restore/networks/table/{adapterType → old/adapterType}/AdapterType.vue +1 -1
  28. package/components/common/pages/backups/modals/restore/networks/table/{lib → old/lib}/config/networkTable.ts +1 -1
  29. package/components/common/pages/backups/modals/restore/networks/table/old/lib/config/tableKeys.ts +8 -0
  30. package/components/common/pages/backups/modals/restore/types/Types.vue +9 -50
  31. package/components/common/pages/backups/modals/restore/types/TypesNew.vue +95 -0
  32. package/components/common/pages/backups/modals/restore/types/TypesOld.vue +61 -0
  33. package/components/common/pages/backups/modals/restore/types/lib/config/descriptions.ts +1 -0
  34. package/components/common/pages/backups/modals/restore/types/lib/config/typeOptions.ts +25 -25
  35. package/components/common/pages/backups/modals/restore/validation/validation.ts +108 -0
  36. package/components/common/pages/hardwareHealth/tableView/lib/config/sensorTable.ts +1 -1
  37. package/components/common/pages/hardwareHealth/tableView/modal/SensorWarning.vue +1 -1
  38. package/components/common/tooltip/Help.vue +5 -0
  39. package/package.json +1 -1
  40. package/components/common/pages/backups/modals/restore/networks/table/lib/config/tableKeys.ts +0 -10
  41. /package/components/common/pages/backups/modals/restore/networks/table/{adapterType → old/adapterType}/lib/config/options.ts +0 -0
  42. /package/components/common/pages/backups/modals/restore/networks/table/{lib → old/lib}/models/types.ts +0 -0
@@ -0,0 +1,269 @@
1
+ <template>
2
+ <div class="networks-table">
3
+ <ui-data-table
4
+ :data="data"
5
+ :options="options"
6
+ :loading="props.networksLoading"
7
+ :total-pages="1"
8
+ :total-items="props.networks?.length || 0"
9
+ :texts="texts"
10
+ :default-layout="false"
11
+ :skeleton="skeletonData"
12
+ size="sm"
13
+ test-id="backup-restore-networks-table"
14
+ >
15
+ <template #icon="{ item }">
16
+ <span :class="['icon', item.data.iconClassName]"></span>
17
+ <span :title="item.text" class="text-ellipsis ml-1 networks-table-text">
18
+ {{ item.text }}
19
+ </span>
20
+ </template>
21
+
22
+ <template #select="item">
23
+ <div v-if="item.item.data.type === 'select-network'" class="w-full">
24
+ <ui-select
25
+ v-model="selectedLocation"
26
+ :items="locationOptions"
27
+ test-id="select-network-type"
28
+ size="sm"
29
+ class="network-type-select"
30
+ select-width="100%"
31
+ show-text
32
+ @change="changeLocation($event, item.item.data.key)"
33
+ />
34
+ </div>
35
+
36
+ <div v-if="item.item.data.type === 'select-adapter'" class="w-full">
37
+ <ui-select
38
+ v-model="model.pvm.network_devices[item.item.data.key].model"
39
+ :items="adapterTypeOptionsConfig"
40
+ test-id="select-adapter-type"
41
+ size="sm"
42
+ class="adapter-type-select"
43
+ select-width="112px"
44
+ show-text
45
+ />
46
+ </div>
47
+ </template>
48
+ </ui-data-table>
49
+
50
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-network-location
51
+ v-if="selectedNetworkKeyForLocation !== -1"
52
+ :location-modal-is-show="selectedNetworkKeyForLocation !== -1"
53
+ :networks-table="props.sourceNetworks"
54
+ @hide="onHideLocationModal"
55
+ @select="onSelectLocation"
56
+ />
57
+ </div>
58
+ </template>
59
+
60
+ <script setup lang="ts">
61
+ import type {
62
+ UI_I_DataTable,
63
+ UI_I_DataTableBody,
64
+ UI_I_DataTableHeader,
65
+ UI_I_DataTableSkeleton,
66
+ UI_I_TableTexts,
67
+ } from '~/node_modules/bfg-uikit/components/ui/dataTable/models/interfaces'
68
+ import {
69
+ getBodyDataFunc,
70
+ getHeaderDataFunc,
71
+ options,
72
+ } from '~/components/common/pages/backups/modals/restore/networks/table/new/lib/config/table'
73
+ import type {
74
+ UI_I_HTMLSelectElement,
75
+ UI_I_Localization,
76
+ } from '~/lib/models/interfaces'
77
+ import { adapterTypeOptionsConfig } from '~/components/common/pages/backups/modals/restore/networks/table/old/adapterType/lib/config/options'
78
+ import type { UI_I_RestoreForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
79
+ import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
80
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
81
+
82
+ const model = defineModel<UI_I_RestoreForm>({ required: true })
83
+
84
+ const props = defineProps<{
85
+ networks: UI_I_RestoreForm['pvm']['network_devices']
86
+ sourceNetworks: UI_I_NetworkTableItem[]
87
+ networksLoading: boolean
88
+ }>()
89
+
90
+ const localization = computed<UI_I_Localization>(() => useLocal())
91
+
92
+ const texts = computed<UI_I_TableTexts>(() => ({
93
+ searchHere: localization.value.common.searchHere,
94
+ rowsPerPage: localization.value.common.rowsPerPage,
95
+ of: localization.value.common.of,
96
+ selected: localization.value.common.selected,
97
+ columns: localization.value.common.columns,
98
+ previous: localization.value.common.previous,
99
+ next: localization.value.common.next,
100
+ noItemsFound: localization.value.common.noItemsFound,
101
+ exportAll: localization.value.common.exportAll,
102
+ exportSelected: localization.value.common.exportSelected,
103
+ all: localization.value.common.all,
104
+ filter: localization.value.common.filter,
105
+ }))
106
+ const skeletonData = ref<UI_I_DataTableSkeleton>({
107
+ columnsCount: 4,
108
+ headColumns: [],
109
+ bodyColumns: [],
110
+ withoutPagination: true,
111
+ })
112
+
113
+ const data = computed<UI_I_DataTable>(() => ({
114
+ id: 'backup-restore-networks-table',
115
+ header: headItems.value,
116
+ body: bodyItems.value,
117
+ title: `${localization.value.common.networks} (${
118
+ props.networks?.length || 0
119
+ })`,
120
+ }))
121
+
122
+ const headItems = computed<UI_I_DataTableHeader[]>(() =>
123
+ getHeaderDataFunc(localization.value)
124
+ )
125
+
126
+ const bodyItems = ref<UI_I_DataTableBody[]>([])
127
+ watch(
128
+ () => props.networks,
129
+ (newValue) => {
130
+ if (!newValue?.length) {
131
+ bodyItems.value = []
132
+ return
133
+ }
134
+
135
+ bodyItems.value = getBodyDataFunc(newValue)
136
+ },
137
+ { deep: true, immediate: true }
138
+ )
139
+
140
+ const selectedLocationOld = ref<string>('')
141
+ const selectedLocation = ref<string>('')
142
+ const locationOptions = ref<UI_I_OptionItem[]>([])
143
+ const selectedNetworkKeyForLocation = ref<number>(-1)
144
+
145
+ watch(
146
+ (): any => props.sourceNetworks,
147
+ (newValue) => {
148
+ if (!props.networks?.length || !newValue?.length) {
149
+ return
150
+ }
151
+ let selectedNetwork: any = null
152
+ model.value.pvm.network_devices = model.value.pvm.network_devices.map(
153
+ (network) => {
154
+ selectedNetwork =
155
+ newValue.find((net) => net.net_bridge === network.net_bridge) ||
156
+ newValue[0]
157
+
158
+ network.network = selectedNetwork.name
159
+ return network
160
+ }
161
+ )
162
+ selectedLocationOld.value = selectedNetwork.net_bridge
163
+ selectedLocation.value = selectedNetwork.net_bridge
164
+
165
+ locationOptions.value = [
166
+ {
167
+ text: selectedNetwork.name,
168
+ value: selectedNetwork.net_bridge,
169
+ },
170
+ { text: `${localization.value.common.browse}...`, value: 'browser' },
171
+ ]
172
+ },
173
+ { immediate: true }
174
+ )
175
+
176
+ const onHideLocationModal = (): void => {
177
+ selectedLocation.value = selectedLocationOld.value
178
+ const network = findNetwork(selectedLocationOld.value)
179
+ model.value.pvm.network_devices[selectedNetworkKeyForLocation.value].network =
180
+ network.name
181
+ model.value.pvm.network_devices[
182
+ selectedNetworkKeyForLocation.value
183
+ ].net_bridge = selectedLocationOld.value
184
+ selectedNetworkKeyForLocation.value = -1
185
+ }
186
+
187
+ const changeLocation = (event: UI_I_HTMLSelectElement, key: number): void => {
188
+ const value = event
189
+
190
+ if (value === 'browser') {
191
+ selectedNetworkKeyForLocation.value = key
192
+ return
193
+ }
194
+
195
+ selectedLocationOld.value = value
196
+ selectedLocation.value = value
197
+ const network = findNetwork(value)
198
+ model.value.pvm.network_devices[key].network = network.name || ''
199
+ model.value.pvm.network_devices[key].net_bridge = value
200
+ }
201
+
202
+ const onSelectLocation = (network: any): void => {
203
+ selectedLocationOld.value = network.net_bridge
204
+ selectedLocation.value = network.net_bridge
205
+ model.value.pvm.network_devices[selectedNetworkKeyForLocation.value].network =
206
+ network.name
207
+ model.value.pvm.network_devices[
208
+ selectedNetworkKeyForLocation.value
209
+ ].net_bridge = network.net_bridge
210
+ selectedNetworkKeyForLocation.value = -1
211
+
212
+ const hasNetwork = locationOptions.value.some(
213
+ (option) => option.value === network.name
214
+ )
215
+ if (hasNetwork) {
216
+ return
217
+ }
218
+
219
+ locationOptions.value = [
220
+ ...locationOptions.value.slice(0, -1),
221
+ { text: network.name, value: network.net_bridge },
222
+ locationOptions.value[locationOptions.value.length - 1],
223
+ ]
224
+ }
225
+
226
+ const findNetwork = (net_bridge: string): any => {
227
+ return props.sourceNetworks.find(
228
+ (network) => network.net_bridge === net_bridge
229
+ )
230
+ }
231
+ </script>
232
+
233
+ <style scoped lang="scss">
234
+ .networks-table {
235
+ :deep(.table-header-content) {
236
+ min-height: auto;
237
+ }
238
+
239
+ :deep(.title-container-top-info h6.title-container-top-selected-rows) {
240
+ font-size: 12px;
241
+ }
242
+
243
+ :deep(.ui-main-no-items-found span) {
244
+ font-size: 14px;
245
+ }
246
+
247
+ .adapter-type-select,
248
+ .network-type-select {
249
+ :deep(.ui-select-toggle-button) {
250
+ height: 28px;
251
+ }
252
+
253
+ :deep(.ui-selected-text) {
254
+ font-size: 12px;
255
+ }
256
+
257
+ :deep(.ui-arrow-icon) {
258
+ svg {
259
+ width: 16px;
260
+ height: 16px;
261
+ }
262
+ }
263
+ }
264
+
265
+ &-text {
266
+ font-size: 12px;
267
+ }
268
+ }
269
+ </style>
@@ -0,0 +1,127 @@
1
+ import type {
2
+ UI_I_DataTableBody,
3
+ UI_I_DataTableOptions,
4
+ UI_I_DataTableHeader,
5
+ } from '~/node_modules/bfg-uikit/components/ui/dataTable/models/interfaces'
6
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
7
+ import type { UI_I_RestoreForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
8
+
9
+ export const getHeaderDataFunc = (
10
+ localization: UI_I_Localization
11
+ ): UI_I_DataTableHeader[] => [
12
+ {
13
+ col: 'col0',
14
+ colName: 'name',
15
+ text: localization.common.name,
16
+ isSortable: true,
17
+ sort: 'asc',
18
+ width: '188px',
19
+ show: true,
20
+ filter: false,
21
+ },
22
+ {
23
+ col: 'col1',
24
+ colName: 'macAddress',
25
+ text: localization.common.macAddress,
26
+ isSortable: true,
27
+ sort: 'asc',
28
+ width: '128px',
29
+ show: true,
30
+ filter: false,
31
+ },
32
+ {
33
+ col: 'col2',
34
+ colName: 'adapterType',
35
+ text: localization.common.adapterType,
36
+ isSortable: true,
37
+ sort: 'asc',
38
+ width: '112px',
39
+ show: true,
40
+ filter: false,
41
+ },
42
+ {
43
+ col: 'col3',
44
+ colName: 'networkInProcurator',
45
+ text: localization.common.networkInProcurator,
46
+ isSortable: true,
47
+ sort: 'asc',
48
+ width: '188px',
49
+ show: true,
50
+ filter: false,
51
+ },
52
+ ]
53
+
54
+ export const options: UI_I_DataTableOptions = {
55
+ perPageOptions: [{ text: '10', value: 100, default: true }],
56
+ isSelectable: false,
57
+ isFocusable: false,
58
+ showPagination: false,
59
+ showPaginationOnTop: false,
60
+ selectType: 'checkbox',
61
+ showPageInfo: false,
62
+ isSortable: true,
63
+ server: false,
64
+ isResizable: true,
65
+ showSearch: false,
66
+ showSelectedRows: false,
67
+ showColumnManager: false,
68
+ withActions: false,
69
+ inBlock: false,
70
+ inModal: true,
71
+ showExport: false,
72
+ withCollapse: false,
73
+ }
74
+
75
+ export const getBodyDataFunc = (
76
+ bodyData: UI_I_RestoreForm['pvm']['network_devices']
77
+ ): UI_I_DataTableBody[] => {
78
+ return bodyData.map((network, index: number) => {
79
+ const dataAdapterType = {
80
+ key: index,
81
+ id: `${network.vm_name}-select`,
82
+ sourceNetwork: network.source_network,
83
+ disabled: false,
84
+ type: 'select-adapter',
85
+ network: network.network,
86
+ }
87
+ const dataSelectNetwork = {
88
+ key: index,
89
+ id: `${network.vm_name}-select`,
90
+ type: 'select-network',
91
+ network: network.network,
92
+ }
93
+
94
+ return {
95
+ row: index,
96
+ collapse: false,
97
+ isHiddenCollapse: false,
98
+ collapseToggle: false,
99
+ data: [
100
+ {
101
+ key: 'icon',
102
+ col: 'col0',
103
+ text: network.import_source_id,
104
+ data: {
105
+ iconClassName: 'vsphere-icon-network',
106
+ },
107
+ },
108
+ {
109
+ col: 'col1',
110
+ text: network.mac,
111
+ },
112
+ {
113
+ col: 'col2',
114
+ key: 'select',
115
+ text: network.target,
116
+ data: dataAdapterType,
117
+ },
118
+ {
119
+ col: 'col3',
120
+ key: 'select',
121
+ data: dataSelectNetwork,
122
+ text: network.network,
123
+ },
124
+ ],
125
+ }
126
+ })
127
+ }