bfg-common 1.5.486 → 1.5.488

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 (209) 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/assets/localization/local_be.json +9 -2
  7. package/assets/localization/local_en.json +19 -12
  8. package/assets/localization/local_hy.json +9 -2
  9. package/assets/localization/local_kk.json +9 -2
  10. package/assets/localization/local_ru.json +9 -2
  11. package/assets/localization/local_zh.json +9 -2
  12. package/assets/scss/common/theme.scss +2 -2
  13. package/components/atoms/TheIcon3.vue +50 -50
  14. package/components/atoms/collapse/CollapseNav.vue +170 -170
  15. package/components/atoms/perPage/PerPage.vue +58 -58
  16. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  17. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  18. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  19. package/components/common/adapterManager/AdapterManager.vue +189 -545
  20. package/components/common/adapterManager/AdapterManagerNew.vue +300 -0
  21. package/components/common/adapterManager/AdapterManagerOld.vue +498 -0
  22. package/components/common/adapterManager/addAdapterModal/AddAdapterModal.vue +70 -0
  23. package/components/common/adapterManager/addAdapterModal/AddAdapterModalNew.vue +77 -0
  24. package/components/common/adapterManager/{AddAdapterModal.vue → addAdapterModal/AddAdapterModalOld.vue} +16 -46
  25. package/components/common/adapterManager/addAdapterWarningModal/AddAdapterWarningModal.vue +32 -0
  26. package/components/common/adapterManager/addAdapterWarningModal/AddAdapterWarningModalNew.vue +38 -0
  27. package/components/common/adapterManager/{AddAdapterWarningModal.vue → addAdapterWarningModal/AddAdapterWarningModalOld.vue} +5 -14
  28. package/components/common/adapterManager/noActiveAdaptersModal/NoActiveAdaptersModal.vue +31 -0
  29. package/components/common/adapterManager/noActiveAdaptersModal/NoActiveAdaptersModalNew.vue +34 -0
  30. package/components/common/adapterManager/{NoActiveAdaptersModal.vue → noActiveAdaptersModal/NoActiveAdaptersModalOld.vue} +2 -6
  31. package/components/common/adapterManager/noConnectedActiveAdaptersModal/NoConnectedActiveAdaptersModal.vue +31 -0
  32. package/components/common/adapterManager/noConnectedActiveAdaptersModal/NoConnectedActiveAdaptersModalNew.vue +34 -0
  33. package/components/common/adapterManager/{NoConnectedActiveAdaptersModal.vue → noConnectedActiveAdaptersModal/NoConnectedActiveAdaptersModalOld.vue} +2 -6
  34. package/components/common/adapterManager/ui/actions/bar/Bar.vue +57 -0
  35. package/components/common/adapterManager/ui/actions/bar/BarNew.vue +38 -0
  36. package/components/common/adapterManager/ui/actions/moveDownAdapterButton/MoveDownAdapterButton.vue +28 -0
  37. package/components/common/adapterManager/ui/actions/moveDownAdapterButton/MoveDownAdapterButtonNew.vue +75 -0
  38. package/components/common/adapterManager/ui/actions/{MoveDownAdapterButton.vue → moveDownAdapterButton/MoveDownAdapterButtonOld.vue} +3 -9
  39. package/components/common/adapterManager/ui/actions/moveUpAdapterButton/MoveUpAdapterButton.vue +28 -0
  40. package/components/common/adapterManager/ui/actions/moveUpAdapterButton/MoveUpAdapterButtonNew.vue +76 -0
  41. package/components/common/adapterManager/ui/actions/{MoveUpAdapterButton.vue → moveUpAdapterButton/MoveUpAdapterButtonOld.vue} +3 -9
  42. package/components/common/adapterManager/ui/noSelectedAdapter/NoSelectedAdapter.vue +24 -0
  43. package/components/common/adapterManager/ui/noSelectedAdapter/NoSelectedAdapterNew.vue +13 -0
  44. package/components/common/adapterManager/ui/secondTitle/SecondTitle.vue +31 -0
  45. package/components/common/adapterManager/ui/secondTitle/SecondTitleNew.vue +36 -0
  46. package/components/common/adapterManager/ui/{SecondTitle.vue → secondTitle/SecondTitleOld.vue} +0 -1
  47. package/components/common/adapterManager/ui/table/Table.vue +59 -133
  48. package/components/common/adapterManager/ui/table/TableNew.vue +136 -0
  49. package/components/common/adapterManager/ui/table/TableOld.vue +141 -0
  50. package/components/common/adapterManager/ui/table/adapters/Adapters.vue +44 -0
  51. package/components/common/adapterManager/ui/table/adapters/AdaptersNew.vue +153 -0
  52. package/components/common/adapterManager/ui/table/{Adapters.vue → adapters/AdaptersOld.vue} +5 -10
  53. package/components/common/adapterManager/ui/table/header/Header.vue +57 -0
  54. package/components/common/adapterManager/ui/table/header/HeaderNew.vue +77 -0
  55. package/components/common/adapterManager/ui/table/{Header.vue → header/HeaderOld.vue} +3 -20
  56. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  57. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  58. package/components/common/browse/lib/models/interfaces.ts +5 -5
  59. package/components/common/context/lib/models/interfaces.ts +33 -33
  60. package/components/common/diagramMain/DiagramMain.vue +3 -1
  61. package/components/common/diagramMain/lib/models/interfaces.ts +5 -2
  62. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +6 -5
  63. package/components/common/diagramMain/modals/Modals.vue +19 -1
  64. package/components/common/diagramMain/modals/lib/config/adapterModal.ts +23 -20
  65. package/components/common/diagramMain/modals/lib/config/networkModal.ts +401 -398
  66. package/components/common/diagramMain/modals/lib/config/switchModal.ts +3 -0
  67. package/components/common/diagramMain/modals/remove/RemoveModal.vue +8 -0
  68. package/components/common/diagramMain/modals/remove/RemoveModalNew.vue +12 -1
  69. package/components/common/diagramMain/modals/remove/RemoveModalOld.vue +12 -1
  70. package/components/common/diagramMain/modals/viewSettings/info/Info.vue +0 -2
  71. package/components/common/diagramMain/modals/viewSettings/viewSettings/ViewSettings.vue +6 -0
  72. package/components/common/diagramMain/modals/viewSettings/viewSettings/ViewSettingsNew.vue +140 -71
  73. package/components/common/diagramMain/modals/viewSettings/viewSettings/ViewSettingsOld.vue +4 -4
  74. package/components/common/diagramMain/network/Contents.vue +497 -497
  75. package/components/common/layout/theHeader/feedback/new/New.vue +2 -2
  76. package/components/common/layout/theHeader/feedback/new/description/Description.vue +3 -3
  77. package/components/common/layout/theHeader/feedback/new/tabs/Tabs.vue +4 -2
  78. package/components/common/layout/theHeader/feedback/new/tabs/lib/config/tabs.ts +3 -2
  79. package/components/common/layout/theHeader/feedback/new/tabs/lib/models/interfaces.ts +5 -0
  80. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  81. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +96 -95
  82. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  83. package/components/common/layout/theHeader/userMenu/modals/changePassword/ChangePasswordNew.vue +1 -2
  84. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesNew.vue +9 -0
  85. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewNew.vue +6 -2
  86. package/components/common/monitor/advanced/tools/chartOptionsModal/ChartOptionsModalNew.vue +1 -0
  87. package/components/common/monitor/overview/OverviewNew.vue +4 -1
  88. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModal.vue +0 -2
  89. package/components/common/monitor/overview/filters/customIntervalModal/customIntervalModalNew/CustomIntervalModalNew.vue +6 -6
  90. package/components/common/pages/backups/DetailView.vue +52 -52
  91. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  92. package/components/common/pages/backups/modals/Modals.vue +243 -243
  93. package/components/common/pages/backups/modals/createBackup/configuration/Configuration.vue +29 -29
  94. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  95. package/components/common/pages/backups/modals/createBackup/datastores/tableView/TableView.vue +95 -95
  96. package/components/common/pages/backups/modals/createBackup/general/General.vue +141 -141
  97. package/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions.ts +12 -12
  98. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  99. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  100. package/components/common/pages/backups/modals/restore/disks/Disks.vue +27 -27
  101. package/components/common/pages/backups/modals/restore/disks/tableView/lib/config/table.ts +117 -117
  102. package/components/common/pages/backups/modals/restore/name/Name.vue +166 -166
  103. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  104. package/components/common/pages/backups/modals/restore/networks/Networks.vue +67 -67
  105. package/components/common/pages/backups/modals/restore/networks/table/Table.vue +214 -214
  106. package/components/common/pages/backups/modals/restore/types/lib/config/typeOptions.ts +25 -25
  107. package/components/common/pages/backups/tools/Tools.vue +75 -75
  108. package/components/common/pages/backups/tools/lib/config/tabs.ts +36 -36
  109. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  110. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  111. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  112. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  113. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  114. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  115. package/components/common/pages/tasks/table/Table.vue +8 -9
  116. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  117. package/components/common/select/radio/RadioGroup.vue +137 -137
  118. package/components/common/spiceConsole/Drawer.vue +392 -392
  119. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  120. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  121. package/components/common/tools/Actions.vue +207 -207
  122. package/components/common/treeView/TreeView.vue +52 -52
  123. package/components/common/vm/actions/add/Add.vue +32 -5
  124. package/components/common/vm/actions/add/New.vue +8 -2
  125. package/components/common/vm/actions/add/Old.vue +8 -2
  126. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  127. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  128. package/components/common/vm/actions/add/lib/config/steps.ts +14 -3
  129. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +368 -368
  130. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  131. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  132. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  133. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/Table.vue +99 -99
  134. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  135. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  136. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  137. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  138. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  139. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  140. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  141. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  142. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  143. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  144. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  145. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +143 -143
  146. package/components/common/vm/actions/common/select/computeResource/New.vue +184 -184
  147. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +131 -131
  148. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  149. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  150. package/components/common/vm/actions/common/select/name/Name.vue +200 -197
  151. package/components/common/vm/actions/common/select/name/Old.vue +8 -1
  152. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  153. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  154. package/components/common/vm/actions/common/select/storage/new/New.vue +320 -320
  155. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  156. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  157. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  158. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  159. package/components/common/vm/actions/register/Register.vue +267 -267
  160. package/components/common/vm/actions/register/lib/config/steps.ts +86 -86
  161. package/components/common/vmt/actions/add/Add.vue +1 -0
  162. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  163. package/components/common/wizards/network/add/Add.vue +9 -3
  164. package/components/common/wizards/network/add/AddNew.vue +291 -354
  165. package/components/common/wizards/network/add/AddOld.vue +0 -3
  166. package/components/common/wizards/network/add/lib/config/config.ts +1 -0
  167. package/components/common/wizards/network/add/lib/config/initialData.ts +9 -0
  168. package/components/common/wizards/network/add/lib/config/steps.ts +35 -5
  169. package/components/common/wizards/network/add/lib/models/interfaces.ts +12 -2
  170. package/components/common/wizards/network/add/steps/connectionSettings/ConnectionSettings.vue +83 -0
  171. package/components/common/wizards/network/add/steps/connectionSettings/ConnectionSettingsNew.vue +114 -0
  172. package/components/common/wizards/network/add/steps/{ConnectionSettings.vue → connectionSettings/ConnectionSettingsOld.vue} +11 -42
  173. package/components/common/wizards/network/add/steps/createStandardSwitch/CreateStandardSwitch.vue +99 -0
  174. package/components/common/wizards/network/add/steps/createStandardSwitch/CreateStandardSwitchNew.vue +80 -0
  175. package/components/common/wizards/network/add/steps/{CreateStandardSwitch.vue → createStandardSwitch/CreateStandardSwitchOld.vue} +24 -33
  176. package/components/common/wizards/network/add/steps/ipFourSettings/IpFourSettings.vue +143 -0
  177. package/components/common/wizards/network/add/steps/ipFourSettings/IpFourSettingsNew.vue +224 -0
  178. package/components/common/wizards/network/add/steps/{IpFourSettings.vue → ipFourSettings/IpFourSettingsOld.vue} +13 -101
  179. package/components/common/wizards/network/add/steps/portProperties/PortProperties.vue +214 -0
  180. package/components/common/wizards/network/add/steps/portProperties/PortPropertiesNew.vue +289 -0
  181. package/components/common/wizards/network/add/steps/{PortProperties.vue → portProperties/PortPropertiesOld.vue} +19 -166
  182. package/components/common/wizards/network/add/steps/readyComplete/ReadyComplete.vue +22 -0
  183. package/components/common/wizards/network/add/steps/readyComplete/ReadyCompleteNew.vue +30 -0
  184. package/components/common/wizards/network/add/steps/selectTargetDevice/SelectTargetDevice.vue +7 -2
  185. package/components/common/wizards/network/add/steps/selectTargetDevice/SelectTargetDeviceNew.vue +1 -3
  186. package/components/common/wizards/network/add/steps/selectTargetDevice/SelectTargetDeviceOld.vue +0 -2
  187. package/components/common/wizards/network/add/validations/common.ts +1 -2
  188. package/components/common/wizards/network/add/validations/connectionSettings.ts +14 -7
  189. package/components/common/wizards/network/add/validations/ipFourSettings.ts +24 -10
  190. package/components/common/wizards/network/add/validations/networkValidation.ts +1 -1
  191. package/components/common/wizards/network/add/validations/portProperties.ts +52 -20
  192. package/components/common/wizards/network/add/validations/targetDevice.ts +18 -4
  193. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  194. package/composables/useAppVersion.ts +21 -21
  195. package/composables/useLocal.ts +6 -6
  196. package/composables/useLocalCommon.ts +39 -39
  197. package/package.json +2 -2
  198. package/plugins/date.ts +233 -233
  199. package/plugins/panelStates.ts +70 -70
  200. package/plugins/text.ts +59 -59
  201. package/public/spice-console/lib/images/bitmap.js +203 -203
  202. package/public/spice-console/network/spicechannel.js +440 -440
  203. package/public/spice-console/run.js +210 -210
  204. package/store/main/mutations.ts +7 -7
  205. package/store/main/state.ts +7 -7
  206. package/components/common/wizards/network/add/steps/PhysicalAdapter.vue +0 -13
  207. /package/components/common/adapterManager/ui/actions/{ActionsBar.vue → bar/BarOld.vue} +0 -0
  208. /package/components/common/adapterManager/ui/{NoSelectedAdapter.vue → noSelectedAdapter/NoSelectedAdapterOld.vue} +0 -0
  209. /package/components/common/wizards/network/add/steps/{ReadyComplete.vue → readyComplete/ReadyCompleteOld.vue} +0 -0
@@ -1,143 +1,143 @@
1
- <template>
2
- <common-vm-actions-common-select-compute-resource-new
3
- v-if="isNewView"
4
- v-model="selectedNode"
5
- :data-center="props.dataCenter"
6
- :compute-resource="props.computeResource"
7
- :compute-resource-tree="props.computeResourceTree"
8
- :errors="errors"
9
- :compatibility-text="compatibilityText"
10
- @get-compute-resource-tree="emits('get-compute-resource-tree', $event)"
11
- @show-compute-resource-tree="emits('show-compute-resource-tree', $event)"
12
- @select-compute-resource-tree="
13
- emits('select-compute-resource-tree', $event)
14
- "
15
- @clear-compute-resource-tree="emits('clear-compute-resource-tree')"
16
- @remove-validation-errors="onRemoveValidationErrors"
17
- />
18
- <common-vm-actions-common-select-compute-resource-old
19
- v-else
20
- v-model="selectedNode"
21
- :data-center="props.dataCenter"
22
- :compute-resource="props.computeResource"
23
- :compute-resource-tree="props.computeResourceTree"
24
- :errors="errors"
25
- :compatibility-text="compatibilityText"
26
- @get-compute-resource-tree="emits('get-compute-resource-tree', $event)"
27
- @show-compute-resource-tree="emits('show-compute-resource-tree', $event)"
28
- @select-compute-resource-tree="
29
- emits('select-compute-resource-tree', $event)
30
- "
31
- @clear-compute-resource-tree="emits('clear-compute-resource-tree')"
32
- @remove-validation-errors="onRemoveValidationErrors"
33
- />
34
- </template>
35
-
36
- <script setup lang="ts">
37
- import type { UI_I_Localization } from '~/lib/models/interfaces'
38
- import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
39
-
40
- const props = defineProps<{
41
- computeResourceSubmit: null | Function
42
- dataCenter: UI_I_TreeNode | null
43
- computeResource: UI_I_TreeNode
44
- computeResourceTree: UI_I_TreeNode[]
45
- }>()
46
-
47
- const emits = defineEmits<{
48
- (event: 'submit', value: UI_I_TreeNode): void
49
- (
50
- event: 'get-compute-resource-tree',
51
- value: { id: string | number; cb: () => void }
52
- ): void
53
- (event: 'show-compute-resource-tree', value: UI_I_TreeNode): void
54
- (event: 'select-compute-resource-tree', value: UI_I_TreeNode): void
55
- (event: 'clear-compute-resource-tree'): void
56
- (event: 'has-errors', value: boolean): void
57
- }>()
58
-
59
- const { $store }: any = useNuxtApp()
60
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
61
-
62
- const localization = computed<UI_I_Localization>(() => useLocal())
63
-
64
- watch(
65
- () => props.computeResourceSubmit,
66
- (newValue: null | Function) => {
67
- newValue && submit(newValue)
68
- }
69
- )
70
- const submit = (cb: Function): void => {
71
- if (
72
- !selectedNode.value ||
73
- // !compatibilityText.value[1] ||
74
- compatibilityText.value[0] !== 1 ||
75
- selectedNode.value.type === 'datacenter' ||
76
- selectedNode.value.type === 'folder' ||
77
- (selectedNode.value.type === 'cluster' && !selectedNode.value.nodes.length)
78
- ) {
79
- showValidationErrors(
80
- localization.value.common.specifyValidClusterOrHostDestination
81
- )
82
- cb(false)
83
- return
84
- }
85
-
86
- onRemoveValidationErrors()
87
- emits('submit', selectedNode.value)
88
- cb(true)
89
- }
90
-
91
- const errors = ref<string[]>([])
92
- const showValidationErrors = (text: string): void => {
93
- errors.value = [text]
94
- }
95
- const onRemoveValidationErrors = (): void => {
96
- errors.value = []
97
- }
98
- watch(
99
- errors,
100
- (newValue) => {
101
- emits('has-errors', !newValue.length)
102
- },
103
- { immediate: true, deep: true }
104
- )
105
-
106
- const selectedNode = defineModel<UI_I_TreeNode | null>('modelValue')
107
-
108
- const compatibilityText = computed<[number, string]>(() => {
109
- if (!selectedNode.value)
110
- return [0, localization.value.vmWizard.noDestinationComputeResourceSelected]
111
-
112
- let res: [number, string] = [
113
- 1,
114
- localization.value.common.compatibilityChecksSucceeded,
115
- ]
116
-
117
- if (
118
- !['cluster', 'host', 'resource_pool'].includes(selectedNode.value?.type)
119
- ) {
120
- res = [2, localization.value.common.selectValidClusterOrHostDestination]
121
- }
122
- if (selectedNode.value?.type === 'cluster') {
123
- const hasHost = !!selectedNode.value.nodes.length
124
- if (!hasHost) {
125
- res = [2, localization.value.common.clusterNotContainAnyHosts]
126
- }
127
- }
128
-
129
- if (selectedNode.value?.type === 'host') {
130
- if (selectedNode.value.state === 'Error') {
131
- // TODO check Maintenance Mode
132
- res = [
133
- 2,
134
- localization.value.common.selectedHostDisconnectedMaintenanceMode,
135
- ]
136
- }
137
- }
138
-
139
- return res
140
- })
141
- </script>
142
-
143
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <common-vm-actions-common-select-compute-resource-new
3
+ v-if="isNewView"
4
+ v-model="selectedNode"
5
+ :data-center="props.dataCenter"
6
+ :compute-resource="props.computeResource"
7
+ :compute-resource-tree="props.computeResourceTree"
8
+ :errors="errors"
9
+ :compatibility-text="compatibilityText"
10
+ @get-compute-resource-tree="emits('get-compute-resource-tree', $event)"
11
+ @show-compute-resource-tree="emits('show-compute-resource-tree', $event)"
12
+ @select-compute-resource-tree="
13
+ emits('select-compute-resource-tree', $event)
14
+ "
15
+ @clear-compute-resource-tree="emits('clear-compute-resource-tree')"
16
+ @remove-validation-errors="onRemoveValidationErrors"
17
+ />
18
+ <common-vm-actions-common-select-compute-resource-old
19
+ v-else
20
+ v-model="selectedNode"
21
+ :data-center="props.dataCenter"
22
+ :compute-resource="props.computeResource"
23
+ :compute-resource-tree="props.computeResourceTree"
24
+ :errors="errors"
25
+ :compatibility-text="compatibilityText"
26
+ @get-compute-resource-tree="emits('get-compute-resource-tree', $event)"
27
+ @show-compute-resource-tree="emits('show-compute-resource-tree', $event)"
28
+ @select-compute-resource-tree="
29
+ emits('select-compute-resource-tree', $event)
30
+ "
31
+ @clear-compute-resource-tree="emits('clear-compute-resource-tree')"
32
+ @remove-validation-errors="onRemoveValidationErrors"
33
+ />
34
+ </template>
35
+
36
+ <script setup lang="ts">
37
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
38
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
39
+
40
+ const props = defineProps<{
41
+ computeResourceSubmit: null | Function
42
+ dataCenter: UI_I_TreeNode | null
43
+ computeResource: UI_I_TreeNode
44
+ computeResourceTree: UI_I_TreeNode[]
45
+ }>()
46
+
47
+ const emits = defineEmits<{
48
+ (event: 'submit', value: UI_I_TreeNode): void
49
+ (
50
+ event: 'get-compute-resource-tree',
51
+ value: { id: string | number; cb: () => void }
52
+ ): void
53
+ (event: 'show-compute-resource-tree', value: UI_I_TreeNode): void
54
+ (event: 'select-compute-resource-tree', value: UI_I_TreeNode): void
55
+ (event: 'clear-compute-resource-tree'): void
56
+ (event: 'has-errors', value: boolean): void
57
+ }>()
58
+
59
+ const { $store }: any = useNuxtApp()
60
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
61
+
62
+ const localization = computed<UI_I_Localization>(() => useLocal())
63
+
64
+ watch(
65
+ () => props.computeResourceSubmit,
66
+ (newValue: null | Function) => {
67
+ newValue && submit(newValue)
68
+ }
69
+ )
70
+ const submit = (cb: Function): void => {
71
+ if (
72
+ !selectedNode.value ||
73
+ // !compatibilityText.value[1] ||
74
+ compatibilityText.value[0] !== 1 ||
75
+ selectedNode.value.type === 'datacenter' ||
76
+ selectedNode.value.type === 'folder' ||
77
+ (selectedNode.value.type === 'cluster' && !selectedNode.value.nodes.length)
78
+ ) {
79
+ showValidationErrors(
80
+ localization.value.common.specifyValidClusterOrHostDestination
81
+ )
82
+ cb(false)
83
+ return
84
+ }
85
+
86
+ onRemoveValidationErrors()
87
+ emits('submit', selectedNode.value)
88
+ cb(true)
89
+ }
90
+
91
+ const errors = ref<string[]>([])
92
+ const showValidationErrors = (text: string): void => {
93
+ errors.value = [text]
94
+ }
95
+ const onRemoveValidationErrors = (): void => {
96
+ errors.value = []
97
+ }
98
+ watch(
99
+ errors,
100
+ (newValue) => {
101
+ emits('has-errors', !newValue.length)
102
+ },
103
+ { immediate: true, deep: true }
104
+ )
105
+
106
+ const selectedNode = defineModel<UI_I_TreeNode | null>('modelValue')
107
+
108
+ const compatibilityText = computed<[number, string]>(() => {
109
+ if (!selectedNode.value)
110
+ return [0, localization.value.vmWizard.noDestinationComputeResourceSelected]
111
+
112
+ let res: [number, string] = [
113
+ 1,
114
+ localization.value.common.compatibilityChecksSucceeded,
115
+ ]
116
+
117
+ if (
118
+ !['cluster', 'host', 'resource_pool'].includes(selectedNode.value?.type)
119
+ ) {
120
+ res = [2, localization.value.common.selectValidClusterOrHostDestination]
121
+ }
122
+ if (selectedNode.value?.type === 'cluster') {
123
+ const hasHost = !!selectedNode.value.nodes.length
124
+ if (!hasHost) {
125
+ res = [2, localization.value.common.clusterNotContainAnyHosts]
126
+ }
127
+ }
128
+
129
+ if (selectedNode.value?.type === 'host') {
130
+ if (selectedNode.value.state === 'Error') {
131
+ // TODO check Maintenance Mode
132
+ res = [
133
+ 2,
134
+ localization.value.common.selectedHostDisconnectedMaintenanceMode,
135
+ ]
136
+ }
137
+ }
138
+
139
+ return res
140
+ })
141
+ </script>
142
+
143
+ <style scoped lang="scss"></style>
@@ -1,184 +1,184 @@
1
- <template>
2
- <div class="select-compute-resource pb-4">
3
- <Teleport to="#compute-resource-alert-wrapper">
4
- <ui-alert
5
- v-show="props.errors.length"
6
- :messages="props.errors"
7
- status="alert-danger"
8
- test-id="computed-resource-alert"
9
- class="errors-alert"
10
- size="md"
11
- @hide="emits('remove-validation-errors')"
12
- />
13
- </Teleport>
14
-
15
- <div class="tree-view-wrap">
16
- <common-vm-actions-common-select-compute-resource-tree-view
17
- v-model="selectedNode"
18
- :data-center="props.dataCenter"
19
- :compute-resource="props.computeResource"
20
- :compute-resource-tree="props.computeResourceTree"
21
- @get-compute-resource-tree="emits('get-compute-resource-tree', $event)"
22
- @show-compute-resource-tree="
23
- emits('show-compute-resource-tree', $event)
24
- "
25
- @select-compute-resource-tree="
26
- emits('select-compute-resource-tree', $event)
27
- "
28
- @clear-compute-resource-tree="emits('clear-compute-resource-tree')"
29
- />
30
- </div>
31
-
32
- <div class="compatibility-wrap">
33
- <p class="compatibility">
34
- {{ localization.inventorySummary.compatibility }}
35
- </p>
36
- <div class="compatibility-message flex-align-start">
37
- <ui-skeleton-item
38
- v-if="!props.computeResourceTree"
39
- width="160px"
40
- height="16px"
41
- />
42
- <template v-else-if="props.compatibilityText[1]">
43
- <ui-icon
44
- v-show="props.compatibilityText[0] === 2"
45
- name="error"
46
- width="16"
47
- height="16"
48
- class="icon-compatibility-alert"
49
- />
50
-
51
- <ui-icon
52
- v-show="props.compatibilityText[0] === 1"
53
- name="success-fill"
54
- width="16"
55
- height="16"
56
- class="icon-compatibility-alert"
57
- />
58
- <span
59
- :class="[
60
- 'compatibility-message-description',
61
- { 'not-selected': props.compatibilityText[0] === 0 },
62
- ]"
63
- >{{ props.compatibilityText[1] }}</span
64
- >
65
- </template>
66
- </div>
67
- </div>
68
- </div>
69
- </template>
70
-
71
- <script setup lang="ts">
72
- import type { UI_I_Localization } from '~/lib/models/interfaces'
73
- import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
74
-
75
- const selectedNode = defineModel<UI_I_TreeNode>('modelValue', {
76
- required: true,
77
- })
78
-
79
- const props = defineProps<{
80
- dataCenter: UI_I_TreeNode | null
81
- computeResource: UI_I_TreeNode
82
- computeResourceTree: UI_I_TreeNode[]
83
- errors: string[]
84
- compatibilityText: [number, string]
85
- }>()
86
-
87
- const emits = defineEmits<{
88
- (
89
- event: 'get-compute-resource-tree',
90
- value: { id: string | number; cb: () => void }
91
- ): void
92
- (event: 'show-compute-resource-tree', value: UI_I_TreeNode): void
93
- (event: 'select-compute-resource-tree', value: UI_I_TreeNode): void
94
- (event: 'clear-compute-resource-tree'): void
95
- (event: 'remove-validation-errors'): void
96
- }>()
97
-
98
- const localization = computed<UI_I_Localization>(() => useLocal())
99
- </script>
100
-
101
- <style>
102
- :root {
103
- --select-compute-resource-border-color: #e9ebed;
104
- --select-compute-resource-location-bg-color: #ffffff;
105
- --select-compute-resource-compatibility-title-color: #4d5d69;
106
- --select-compute-resource-compatibilityd-empty-escription-color: #9da6ad;
107
- --select-compute-resource-compatibility-description-color: #4d5d69;
108
- }
109
- :root.dark-theme {
110
- --select-compute-resource-border-color: #e9ebed1f;
111
- --select-compute-resource-location-bg-color: #1b2a371f;
112
- --select-compute-resource-compatibility-title-color: #e9eaec;
113
- --select-compute-resource-compatibilityd-empty-escription-color: #9da6ad;
114
- --select-compute-resource-compatibility-description-color: #e9eaec;
115
- }
116
- </style>
117
- <style scoped lang="scss">
118
- .select-compute-resource {
119
- .tree-view-wrap {
120
- height: 182px;
121
- max-height: 240px;
122
- border-radius: 8px;
123
- border: 1px solid var(--select-compute-resource-border-color);
124
- padding: 8px;
125
- background-color: var(--select-compute-resource-location-bg-color);
126
- margin: 16px 0 24px;
127
- overflow: auto;
128
-
129
- :deep(.skeleton-tree) {
130
- padding: 4px 8px;
131
-
132
- .skeleton-tree-row:last-child {
133
- display: none;
134
- }
135
- }
136
- :deep(.tree-content) {
137
- padding: 0 !important;
138
-
139
- .node-wrapper {
140
- border-radius: 4px;
141
-
142
- .node-name {
143
- font-size: 12px;
144
- margin-left: 8px;
145
- overflow: hidden;
146
- text-overflow: ellipsis;
147
- white-space: nowrap;
148
- }
149
- }
150
- }
151
- }
152
-
153
- .compatibility-wrap {
154
- .compatibility {
155
- font-size: 16px;
156
- font-weight: 500;
157
- color: var(--select-compute-resource-compatibility-title-color);
158
- margin-bottom: 16px;
159
- }
160
- .compatibility-message {
161
- border-radius: 8px;
162
- border: 1px solid var(--select-compute-resource-border-color);
163
- padding: 12px;
164
- background-color: var(--select-compute-resource-location-bg-color);
165
- gap: 10px;
166
-
167
- .icon-compatibility-alert {
168
- min-width: 16px;
169
- min-height: 16px;
170
- }
171
- .compatibility-message-description {
172
- font-size: 13px;
173
- color: var(--select-compute-resource-compatibility-description-color);
174
-
175
- &.not-selected {
176
- color: var(
177
- --select-compute-resource-compatibilityd-empty-escription-color
178
- );
179
- }
180
- }
181
- }
182
- }
183
- }
184
- </style>
1
+ <template>
2
+ <div class="select-compute-resource pb-4">
3
+ <Teleport to="#compute-resource-alert-wrapper">
4
+ <ui-alert
5
+ v-show="props.errors.length"
6
+ :messages="props.errors"
7
+ status="alert-danger"
8
+ test-id="computed-resource-alert"
9
+ class="errors-alert"
10
+ size="md"
11
+ @hide="emits('remove-validation-errors')"
12
+ />
13
+ </Teleport>
14
+
15
+ <div class="tree-view-wrap">
16
+ <common-vm-actions-common-select-compute-resource-tree-view
17
+ v-model="selectedNode"
18
+ :data-center="props.dataCenter"
19
+ :compute-resource="props.computeResource"
20
+ :compute-resource-tree="props.computeResourceTree"
21
+ @get-compute-resource-tree="emits('get-compute-resource-tree', $event)"
22
+ @show-compute-resource-tree="
23
+ emits('show-compute-resource-tree', $event)
24
+ "
25
+ @select-compute-resource-tree="
26
+ emits('select-compute-resource-tree', $event)
27
+ "
28
+ @clear-compute-resource-tree="emits('clear-compute-resource-tree')"
29
+ />
30
+ </div>
31
+
32
+ <div class="compatibility-wrap">
33
+ <p class="compatibility">
34
+ {{ localization.inventorySummary.compatibility }}
35
+ </p>
36
+ <div class="compatibility-message flex-align-start">
37
+ <ui-skeleton-item
38
+ v-if="!props.computeResourceTree"
39
+ width="160px"
40
+ height="16px"
41
+ />
42
+ <template v-else-if="props.compatibilityText[1]">
43
+ <ui-icon
44
+ v-show="props.compatibilityText[0] === 2"
45
+ name="error"
46
+ width="16"
47
+ height="16"
48
+ class="icon-compatibility-alert"
49
+ />
50
+
51
+ <ui-icon
52
+ v-show="props.compatibilityText[0] === 1"
53
+ name="success-fill"
54
+ width="16"
55
+ height="16"
56
+ class="icon-compatibility-alert"
57
+ />
58
+ <span
59
+ :class="[
60
+ 'compatibility-message-description',
61
+ { 'not-selected': props.compatibilityText[0] === 0 },
62
+ ]"
63
+ >{{ props.compatibilityText[1] }}</span
64
+ >
65
+ </template>
66
+ </div>
67
+ </div>
68
+ </div>
69
+ </template>
70
+
71
+ <script setup lang="ts">
72
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
73
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
74
+
75
+ const selectedNode = defineModel<UI_I_TreeNode>('modelValue', {
76
+ required: true,
77
+ })
78
+
79
+ const props = defineProps<{
80
+ dataCenter: UI_I_TreeNode | null
81
+ computeResource: UI_I_TreeNode
82
+ computeResourceTree: UI_I_TreeNode[]
83
+ errors: string[]
84
+ compatibilityText: [number, string]
85
+ }>()
86
+
87
+ const emits = defineEmits<{
88
+ (
89
+ event: 'get-compute-resource-tree',
90
+ value: { id: string | number; cb: () => void }
91
+ ): void
92
+ (event: 'show-compute-resource-tree', value: UI_I_TreeNode): void
93
+ (event: 'select-compute-resource-tree', value: UI_I_TreeNode): void
94
+ (event: 'clear-compute-resource-tree'): void
95
+ (event: 'remove-validation-errors'): void
96
+ }>()
97
+
98
+ const localization = computed<UI_I_Localization>(() => useLocal())
99
+ </script>
100
+
101
+ <style>
102
+ :root {
103
+ --select-compute-resource-border-color: #e9ebed;
104
+ --select-compute-resource-location-bg-color: #ffffff;
105
+ --select-compute-resource-compatibility-title-color: #4d5d69;
106
+ --select-compute-resource-compatibilityd-empty-escription-color: #9da6ad;
107
+ --select-compute-resource-compatibility-description-color: #4d5d69;
108
+ }
109
+ :root.dark-theme {
110
+ --select-compute-resource-border-color: #e9ebed1f;
111
+ --select-compute-resource-location-bg-color: #1b2a371f;
112
+ --select-compute-resource-compatibility-title-color: #e9eaec;
113
+ --select-compute-resource-compatibilityd-empty-escription-color: #9da6ad;
114
+ --select-compute-resource-compatibility-description-color: #e9eaec;
115
+ }
116
+ </style>
117
+ <style scoped lang="scss">
118
+ .select-compute-resource {
119
+ .tree-view-wrap {
120
+ height: 182px;
121
+ max-height: 240px;
122
+ border-radius: 8px;
123
+ border: 1px solid var(--select-compute-resource-border-color);
124
+ padding: 8px;
125
+ background-color: var(--select-compute-resource-location-bg-color);
126
+ margin: 16px 0 24px;
127
+ overflow: auto;
128
+
129
+ :deep(.skeleton-tree) {
130
+ padding: 4px 8px;
131
+
132
+ .skeleton-tree-row:last-child {
133
+ display: none;
134
+ }
135
+ }
136
+ :deep(.tree-content) {
137
+ padding: 0 !important;
138
+
139
+ .node-wrapper {
140
+ border-radius: 4px;
141
+
142
+ .node-name {
143
+ font-size: 12px;
144
+ margin-left: 8px;
145
+ overflow: hidden;
146
+ text-overflow: ellipsis;
147
+ white-space: nowrap;
148
+ }
149
+ }
150
+ }
151
+ }
152
+
153
+ .compatibility-wrap {
154
+ .compatibility {
155
+ font-size: 16px;
156
+ font-weight: 500;
157
+ color: var(--select-compute-resource-compatibility-title-color);
158
+ margin-bottom: 16px;
159
+ }
160
+ .compatibility-message {
161
+ border-radius: 8px;
162
+ border: 1px solid var(--select-compute-resource-border-color);
163
+ padding: 12px;
164
+ background-color: var(--select-compute-resource-location-bg-color);
165
+ gap: 10px;
166
+
167
+ .icon-compatibility-alert {
168
+ min-width: 16px;
169
+ min-height: 16px;
170
+ }
171
+ .compatibility-message-description {
172
+ font-size: 13px;
173
+ color: var(--select-compute-resource-compatibility-description-color);
174
+
175
+ &.not-selected {
176
+ color: var(
177
+ --select-compute-resource-compatibilityd-empty-escription-color
178
+ );
179
+ }
180
+ }
181
+ }
182
+ }
183
+ }
184
+ </style>