bfg-common 1.5.539 → 1.5.540

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 (158) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  4. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  5. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  6. package/components/atoms/TheIcon3.vue +50 -50
  7. package/components/atoms/collapse/CollapseNav.vue +170 -170
  8. package/components/atoms/perPage/PerPage.vue +58 -58
  9. package/components/atoms/table/dataGrid/DataGrid.vue +1718 -1718
  10. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  11. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  12. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  13. package/components/common/backup/storage/actions/add/Add.vue +251 -251
  14. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  15. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  16. package/components/common/diagramMain/modals/lib/config/portModal.ts +251 -251
  17. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  18. package/components/common/diagramMain/port/Port.vue +580 -580
  19. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  20. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  21. package/components/common/pages/backups/DetailView.vue +52 -52
  22. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  23. package/components/common/pages/backups/modals/Modals.vue +243 -243
  24. package/components/common/pages/backups/modals/createBackup/CreateBackup.vue +195 -195
  25. package/components/common/pages/backups/modals/createBackup/configuration/backupWindow/BackupWindow.vue +29 -29
  26. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/MaxBandwidth.vue +69 -69
  27. package/components/common/pages/backups/modals/createBackup/configuration/strategy/Strategy.vue +38 -38
  28. package/components/common/pages/backups/modals/createBackup/datastores/tableView/new/TableView.vue +3 -3
  29. package/components/common/pages/backups/modals/createBackup/disks/tableView/new/lib/config/table.ts +1 -0
  30. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  31. package/components/common/pages/backups/modals/createBackup/lib/models/interfaces.ts +8 -8
  32. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  33. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  34. package/components/common/pages/backups/modals/restore/Restore.vue +78 -196
  35. package/components/common/pages/backups/modals/restore/RestoreNew.vue +289 -0
  36. package/components/common/pages/backups/modals/restore/RestoreOld.vue +173 -0
  37. package/components/common/pages/backups/modals/restore/disks/Disks.vue +32 -27
  38. package/components/common/pages/backups/modals/restore/disks/DisksNew.vue +17 -0
  39. package/components/common/pages/backups/modals/restore/disks/DisksOld.vue +21 -0
  40. package/components/common/pages/backups/modals/restore/disks/tableView/new/Table.vue +126 -0
  41. package/components/common/pages/backups/modals/restore/disks/tableView/new/lib/config/table.ts +175 -0
  42. package/components/common/pages/backups/modals/restore/disks/tableView/{TableView.vue → old/Table.vue} +6 -3
  43. package/components/common/pages/backups/modals/restore/disks/tableView/{lib → old/lib}/config/keys.ts +1 -1
  44. package/components/common/pages/backups/modals/restore/disks/tableView/{lib → old/lib}/config/table.ts +117 -117
  45. package/components/common/pages/backups/modals/restore/disks/tableView/{lib → old/lib}/models/types.ts +1 -1
  46. package/components/common/pages/backups/modals/restore/lib/config/readyToCompleteOptions.ts +62 -0
  47. package/components/common/pages/backups/modals/restore/lib/config/steps.ts +21 -21
  48. package/components/common/pages/backups/modals/restore/name/Name.vue +31 -166
  49. package/components/common/pages/backups/modals/restore/name/NameNew.vue +98 -0
  50. package/components/common/pages/backups/modals/restore/name/NameOld.vue +86 -0
  51. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  52. package/components/common/pages/backups/modals/restore/networks/Networks.vue +63 -70
  53. package/components/common/pages/backups/modals/restore/networks/NetworksNew.vue +78 -0
  54. package/components/common/pages/backups/modals/restore/networks/NetworksOld.vue +48 -0
  55. package/components/common/pages/backups/modals/restore/networks/table/new/Table.vue +269 -0
  56. package/components/common/pages/backups/modals/restore/networks/table/new/lib/config/table.ts +127 -0
  57. package/components/common/pages/backups/modals/restore/networks/table/{Table.vue → old/Table.vue} +219 -214
  58. package/components/common/pages/backups/modals/restore/networks/table/{adapterType → old/adapterType}/AdapterType.vue +1 -1
  59. package/components/common/pages/backups/modals/restore/networks/table/{lib → old/lib}/config/networkTable.ts +1 -1
  60. package/components/common/pages/backups/modals/restore/networks/table/old/lib/config/tableKeys.ts +8 -0
  61. package/components/common/pages/backups/modals/restore/types/Types.vue +9 -50
  62. package/components/common/pages/backups/modals/restore/types/TypesNew.vue +95 -0
  63. package/components/common/pages/backups/modals/restore/types/TypesOld.vue +61 -0
  64. package/components/common/pages/backups/modals/restore/types/lib/config/descriptions.ts +1 -0
  65. package/components/common/pages/backups/modals/restore/types/lib/config/typeOptions.ts +25 -25
  66. package/components/common/pages/backups/modals/restore/validation/validation.ts +108 -0
  67. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  68. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  69. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  70. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  71. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  72. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  73. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  74. package/components/common/select/radio/RadioGroup.vue +137 -137
  75. package/components/common/spiceConsole/Drawer.vue +420 -420
  76. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  77. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  78. package/components/common/tools/Actions.vue +207 -207
  79. package/components/common/treeView/TreeView.vue +52 -52
  80. package/components/common/vm/actions/add/Add.vue +949 -950
  81. package/components/common/vm/actions/add/New.vue +689 -690
  82. package/components/common/vm/actions/add/Old.vue +400 -402
  83. package/components/common/vm/actions/add/lib/config/steps.ts +347 -347
  84. package/components/common/vm/actions/clone/Clone.vue +808 -809
  85. package/components/common/vm/actions/clone/new/New.vue +454 -457
  86. package/components/common/vm/actions/clone/old/Old.vue +378 -378
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +368 -368
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +427 -427
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  96. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  98. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  99. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  101. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  102. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  103. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  104. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  105. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  106. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  107. package/components/common/vm/actions/common/select/storage/Old.vue +132 -125
  108. package/components/common/vm/actions/common/select/storage/Storage.vue +167 -178
  109. package/components/common/vm/actions/common/select/storage/new/New.vue +330 -311
  110. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  111. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  112. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  113. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  114. package/components/common/vm/actions/register/Register.vue +352 -352
  115. package/components/common/vm/actions/register/lib/config/steps.ts +86 -86
  116. package/components/common/wizards/common/steps/computeResource/ComputeResource.vue +85 -86
  117. package/components/common/wizards/common/steps/computeResource/New.vue +92 -93
  118. package/components/common/wizards/common/steps/computeResource/Old.vue +102 -103
  119. package/components/common/wizards/common/{compatibility → steps/computeResource/compatibility}/Compatibility.vue +31 -35
  120. package/components/common/wizards/common/{compatibility → steps/computeResource/compatibility}/New.vue +98 -99
  121. package/components/common/wizards/common/{compatibility → steps/computeResource/compatibility}/Old.vue +54 -53
  122. package/components/common/wizards/common/{compatibility → steps/computeResource/compatibility}/lib/models/enums.ts +1 -1
  123. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  124. package/components/common/wizards/common/steps/name/New.vue +221 -221
  125. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  126. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  127. package/components/common/wizards/common/steps/name/location/Location.vue +85 -85
  128. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  129. package/components/common/wizards/datastore/add/Add.vue +228 -228
  130. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  131. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  132. package/components/common/wizards/vm/migrate/select/computeResource/ComputeResource.vue +195 -205
  133. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  134. package/components/common/wizards/vm/migrate/select/storage/Storage.vue +1 -1
  135. package/composables/useAppVersion.ts +21 -21
  136. package/composables/useLocal.ts +6 -6
  137. package/composables/useLocalCommon.ts +39 -39
  138. package/package.json +1 -1
  139. package/plugins/console.ts +21 -21
  140. package/plugins/date.ts +233 -233
  141. package/plugins/mouse.ts +21 -21
  142. package/plugins/panelStates.ts +70 -70
  143. package/plugins/text.ts +59 -59
  144. package/public/spice-console/application/clientgui.js +854 -854
  145. package/public/spice-console/application/packetfactory.js +211 -211
  146. package/public/spice-console/application/virtualmouse.js +147 -147
  147. package/public/spice-console/lib/images/bitmap.js +203 -203
  148. package/public/spice-console/network/spicechannel.js +440 -440
  149. package/public/spice-console/process/cursorprocess.js +121 -121
  150. package/public/spice-console/process/inputprocess.js +227 -227
  151. package/public/spice-console/process/mainprocess.js +210 -210
  152. package/public/spice-console/run.js +210 -210
  153. package/store/main/mutations.ts +7 -7
  154. package/store/main/state.ts +7 -7
  155. package/components/common/pages/backups/modals/restore/networks/table/lib/config/tableKeys.ts +0 -10
  156. package/components/common/wizards/common/compatibility/lib/models/types.ts +0 -1
  157. /package/components/common/pages/backups/modals/restore/networks/table/{adapterType → old/adapterType}/lib/config/options.ts +0 -0
  158. /package/components/common/pages/backups/modals/restore/networks/table/{lib → old/lib}/models/types.ts +0 -0
@@ -1,125 +1,132 @@
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>
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,178 +1,167 @@
1
- <template>
2
- <common-vm-actions-common-select-storage-new
3
- v-if="isNewView"
4
- v-model:selected-row="selectedRow"
5
- v-model:pagination="pagination"
6
- :datastore="props.datastore"
7
- :is-datastore-loading="props.isDatastoreLoading"
8
- :errors="errors"
9
- :selected-storage="selectedStorage"
10
- :hide-compatibility="props.hideCompatibility"
11
- :hide-alert="props.hideAlert"
12
- :is-in-wizard="props.isInWizard"
13
- :table-options="props.tableOptions"
14
- :compatibility="compatibility"
15
- @remove-error="onRemoveValidationErrors"
16
- @change-storage="changeStorage"
17
- />
18
- <common-vm-actions-common-select-storage-old
19
- v-else
20
- v-model:selected-row="selectedRow"
21
- v-model:pagination="pagination"
22
- :datastore="props.datastore"
23
- :is-datastore-loading="props.isDatastoreLoading"
24
- :errors="errors"
25
- :selected-storage="selectedStorage"
26
- :hide-compatibility="props.hideCompatibility"
27
- :compatibility="compatibility"
28
- @remove-error="onRemoveValidationErrors"
29
- @change-storage="changeStorage"
30
- />
31
- </template>
32
-
33
- <script setup lang="ts">
34
- import type { UI_I_DataTableOptions } from '~/node_modules/bfg-uikit/components/ui/dataTable/models/interfaces'
35
- import type {
36
- UI_I_Pagination,
37
- UI_I_TablePayload,
38
- } from '~/lib/models/table/interfaces'
39
- import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
40
- import type { UI_I_Localization } from '~/lib/models/interfaces'
41
- import type { UI_T_CompatibilityStatus } from '~/components/common/wizards/common/compatibility/lib/models/types'
42
-
43
- const props = withDefaults(
44
- defineProps<{
45
- storageSubmit: null | Function
46
- datastore: UI_I_DatastoreTableItem[]
47
- isDatastoreLoading: boolean
48
- getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
49
- storage?: UI_I_DatastoreTableItem
50
- hideCompatibility?: boolean
51
- hideAlert?: boolean
52
- isInWizard?: boolean
53
- tableOptions?: UI_I_DataTableOptions
54
- }>(),
55
- {
56
- storage: undefined,
57
- hideCompatibility: undefined,
58
- hideAlert: undefined,
59
- isInWizard: undefined,
60
- tableOptions: undefined,
61
- }
62
- )
63
- const emits = defineEmits<{
64
- (event: 'submit', value: UI_I_DatastoreTableItem): void
65
- (event: 'change-storage', value: UI_I_DatastoreTableItem): void
66
- (event: 'is-selected-row', value: boolean): void
67
- (event: 'has-errors', value: boolean): void
68
- }>()
69
-
70
- const { $store }: any = useNuxtApp()
71
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
72
-
73
- const localization = computed<UI_I_Localization>(() => useLocal())
74
-
75
- const pagination = ref<UI_I_Pagination>({
76
- page: 1,
77
- pageSize: 100,
78
- })
79
- const getStorage = async (): Promise<void> => {
80
- const payload: UI_I_TablePayload = {
81
- pagination: pagination.value,
82
- sortBy: null,
83
- type: 'datastore',
84
- schema: 'full',
85
- }
86
-
87
- props.getDatastoreTableFunc(payload).then(() => {
88
- selectedRow.value = null
89
- setStorageFromProps()
90
- })
91
- }
92
- getStorage()
93
-
94
- const selectedStorage = ref<UI_I_DatastoreTableItem | null>(null)
95
- const selectedRow = ref<number | null>(null)
96
- const changeStorage = (index: number): void => {
97
- if (!props.datastore) return
98
- selectedStorage.value = props.datastore[index]
99
- selectedRow.value = index
100
- emits('change-storage', selectedStorage.value)
101
- }
102
-
103
- const setStorageFromProps = (): void => {
104
- if (!props.storage) return
105
- props.datastore.forEach((item, index) => {
106
- if (item.id === props.storage.id) changeStorage(index)
107
- })
108
- }
109
- watch(
110
- () => props.storage,
111
- () => {
112
- setStorageFromProps()
113
- },
114
- { immediate: true }
115
- )
116
- watch(
117
- () => props.datastore,
118
- (newValue) => {
119
- const hasSelectedRow: boolean = !!newValue.filter?.(
120
- (item) => item.id === selectedStorage.value?.id
121
- ).length
122
- if (!hasSelectedRow) {
123
- selectedRow.value = null
124
- selectedStorage.value = null
125
- }
126
- },
127
- { immediate: true }
128
- )
129
- watch(
130
- selectedRow,
131
- (newValue) => {
132
- emits('is-selected-row', typeof newValue === 'number')
133
- },
134
- { immediate: true }
135
- )
136
-
137
- watch(
138
- () => props.storageSubmit,
139
- (newValue) => {
140
- newValue && submit(newValue)
141
- }
142
- )
143
- const submit = (cb: Function): void => {
144
- if (!selectedStorage.value) {
145
- showValidationErrors([
146
- localization.value.common.selectValidDestinationStorage,
147
- ])
148
- cb(false)
149
- return
150
- }
151
-
152
- emits('submit', selectedStorage.value)
153
- cb(true)
154
- }
155
-
156
- const compatibility = computed<[UI_T_CompatibilityStatus, string]>(() => {
157
- if (!selectedStorage.value)
158
- return ['none', localization.value.vmWizard.noStorageSelected]
159
- return ['success', localization.value.common.compatibilityChecksSucceeded]
160
- })
161
-
162
- const errors = ref<string[]>([])
163
- const showValidationErrors = (arr: string[]): void => {
164
- errors.value = arr
165
- }
166
- const onRemoveValidationErrors = (): void => {
167
- errors.value = []
168
- }
169
- watch(
170
- errors,
171
- (newValue) => {
172
- emits('has-errors', !newValue.length)
173
- },
174
- { immediate: true, deep: true }
175
- )
176
- </script>
177
-
178
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <common-vm-actions-common-select-storage-new
3
+ v-if="isNewView"
4
+ v-model:selected-row="selectedRow"
5
+ v-model:pagination="pagination"
6
+ :datastore="props.datastore"
7
+ :is-datastore-loading="props.isDatastoreLoading"
8
+ :errors="errors"
9
+ :selected-storage="selectedStorage"
10
+ :hide-compatibility="props.hideCompatibility"
11
+ :hide-alert="props.hideAlert"
12
+ :is-in-wizard="props.isInWizard"
13
+ :table-options="props.tableOptions"
14
+ @remove-error="onRemoveValidationErrors"
15
+ @change-storage="changeStorage"
16
+ />
17
+ <common-vm-actions-common-select-storage-old
18
+ v-else
19
+ v-model:selected-row="selectedRow"
20
+ v-model:pagination="pagination"
21
+ :datastore="props.datastore"
22
+ :is-datastore-loading="props.isDatastoreLoading"
23
+ :errors="errors"
24
+ :selected-storage="selectedStorage"
25
+ :hide-compatibility="props.hideCompatibility"
26
+ @remove-error="onRemoveValidationErrors"
27
+ @change-storage="changeStorage"
28
+ />
29
+ </template>
30
+
31
+ <script setup lang="ts">
32
+ import type { UI_I_DataTableOptions } from '~/node_modules/bfg-uikit/components/ui/dataTable/models/interfaces'
33
+ import type {
34
+ UI_I_Pagination,
35
+ UI_I_TablePayload,
36
+ } from '~/lib/models/table/interfaces'
37
+ import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
38
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
39
+
40
+ const props = withDefaults(
41
+ defineProps<{
42
+ storageSubmit: null | Function
43
+ datastore: UI_I_DatastoreTableItem[]
44
+ isDatastoreLoading: boolean
45
+ getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
46
+ storage?: UI_I_DatastoreTableItem
47
+ hideCompatibility?: boolean
48
+ hideAlert?: boolean
49
+ isInWizard?: boolean
50
+ tableOptions?: UI_I_DataTableOptions
51
+ }>(),
52
+ {
53
+ storage: undefined,
54
+ hideCompatibility: undefined,
55
+ hideAlert: undefined,
56
+ isInWizard: undefined,
57
+ tableOptions: undefined,
58
+ }
59
+ )
60
+ const emits = defineEmits<{
61
+ (event: 'submit', value: UI_I_DatastoreTableItem): void
62
+ (event: 'change-storage', value: UI_I_DatastoreTableItem): void
63
+ (event: 'is-selected-row', value: boolean): void
64
+ (event: 'has-errors', value: boolean): void
65
+ }>()
66
+
67
+ const { $store }: any = useNuxtApp()
68
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
69
+
70
+ const localization = computed<UI_I_Localization>(() => useLocal())
71
+
72
+ const pagination = ref<UI_I_Pagination>({
73
+ page: 1,
74
+ pageSize: 100,
75
+ })
76
+ const getStorage = async (): Promise<void> => {
77
+ const payload: UI_I_TablePayload = {
78
+ pagination: pagination.value,
79
+ sortBy: null,
80
+ type: 'datastore',
81
+ schema: 'full',
82
+ }
83
+
84
+ props.getDatastoreTableFunc(payload).then(() => {
85
+ selectedRow.value = null
86
+ setStorageFromProps()
87
+ })
88
+ }
89
+ getStorage()
90
+
91
+ const selectedStorage = ref<UI_I_DatastoreTableItem | null>(null)
92
+ const selectedRow = ref<number | null>(null)
93
+ const changeStorage = (index: number): void => {
94
+ if (!props.datastore) return
95
+ selectedStorage.value = props.datastore[index]
96
+ selectedRow.value = index
97
+ emits('change-storage', selectedStorage.value)
98
+ }
99
+
100
+ const setStorageFromProps = (): void => {
101
+ if (!props.storage) return
102
+ props.datastore.forEach((item, index) => {
103
+ if (item.id === props.storage.id) changeStorage(index)
104
+ })
105
+ }
106
+ watch(
107
+ () => props.storage,
108
+ () => {
109
+ setStorageFromProps()
110
+ },
111
+ { immediate: true }
112
+ )
113
+ watch(
114
+ () => props.datastore,
115
+ (newValue) => {
116
+ const hasSelectedRow: boolean = !!newValue.filter?.(item => item.id === selectedStorage.value?.id).length
117
+ if(!hasSelectedRow) {
118
+ selectedRow.value = null
119
+ selectedStorage.value = null
120
+ }
121
+ },
122
+ { immediate: true }
123
+ )
124
+ watch(
125
+ selectedRow,
126
+ (newValue) => {
127
+ emits('is-selected-row', typeof newValue === 'number')
128
+ },
129
+ { immediate: true }
130
+ )
131
+
132
+ watch(
133
+ () => props.storageSubmit,
134
+ (newValue) => {
135
+ newValue && submit(newValue)
136
+ }
137
+ )
138
+ const submit = (cb: Function): void => {
139
+ if (!selectedStorage.value) {
140
+ showValidationErrors([
141
+ localization.value.common.selectValidDestinationStorage,
142
+ ])
143
+ cb(false)
144
+ return
145
+ }
146
+
147
+ emits('submit', selectedStorage.value)
148
+ cb(true)
149
+ }
150
+
151
+ const errors = ref<string[]>([])
152
+ const showValidationErrors = (arr: string[]): void => {
153
+ errors.value = arr
154
+ }
155
+ const onRemoveValidationErrors = (): void => {
156
+ errors.value = []
157
+ }
158
+ watch(
159
+ errors,
160
+ (newValue) => {
161
+ emits('has-errors', !newValue.length)
162
+ },
163
+ { immediate: true, deep: true }
164
+ )
165
+ </script>
166
+
167
+ <style scoped lang="scss"></style>