bfg-common 1.5.523 → 1.5.525

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 (116) 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/scss/common/icons/icons-1.scss +1 -1
  7. package/components/atoms/TheIcon3.vue +50 -50
  8. package/components/atoms/collapse/CollapseNav.vue +170 -170
  9. package/components/atoms/perPage/PerPage.vue +58 -58
  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 +1 -1
  25. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  26. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +23 -13
  27. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  28. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  29. package/components/common/pages/backups/modals/restore/disks/Disks.vue +27 -27
  30. package/components/common/pages/backups/modals/restore/disks/tableView/lib/config/table.ts +117 -117
  31. package/components/common/pages/backups/modals/restore/name/Name.vue +166 -166
  32. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  33. package/components/common/pages/backups/modals/restore/networks/Networks.vue +67 -67
  34. package/components/common/pages/backups/modals/restore/networks/table/Table.vue +214 -214
  35. package/components/common/pages/backups/modals/restore/types/lib/config/typeOptions.ts +25 -25
  36. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  37. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  38. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  39. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  40. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  41. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  42. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  43. package/components/common/select/radio/RadioGroup.vue +137 -137
  44. package/components/common/spiceConsole/Drawer.vue +420 -420
  45. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  46. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  47. package/components/common/tools/Actions.vue +207 -207
  48. package/components/common/treeView/TreeView.vue +52 -52
  49. package/components/common/vm/actions/add/Add.vue +895 -895
  50. package/components/common/vm/actions/add/New.vue +695 -695
  51. package/components/common/vm/actions/add/Old.vue +414 -414
  52. package/components/common/vm/actions/add/lib/config/steps.ts +347 -347
  53. package/components/common/vm/actions/clone/Clone.vue +754 -863
  54. package/components/common/vm/actions/clone/cloneNew/CloneNew.vue +434 -0
  55. package/components/common/vm/actions/clone/cloneOld/CloneOld.vue +382 -0
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +368 -368
  57. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +427 -427
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/Table.vue +99 -99
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  66. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  67. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  68. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  69. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  70. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  71. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  72. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  73. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +143 -143
  74. package/components/common/vm/actions/common/select/computeResource/New.vue +184 -184
  75. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +131 -131
  76. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  77. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  78. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  79. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  80. package/components/common/vm/actions/common/select/storage/new/New.vue +330 -320
  81. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  82. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  83. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  84. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  85. package/components/common/vm/actions/register/Register.vue +285 -285
  86. package/components/common/vm/actions/register/lib/config/steps.ts +86 -86
  87. package/components/common/wizards/common/steps/name/Name.vue +179 -179
  88. package/components/common/wizards/common/steps/name/New.vue +221 -221
  89. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  90. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  91. package/components/common/wizards/common/steps/name/location/Location.vue +85 -85
  92. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  93. package/components/common/wizards/datastore/add/Add.vue +228 -228
  94. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  95. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  96. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  97. package/composables/useAppVersion.ts +21 -21
  98. package/composables/useLocal.ts +6 -6
  99. package/composables/useLocalCommon.ts +39 -39
  100. package/package.json +1 -1
  101. package/plugins/console.ts +21 -21
  102. package/plugins/date.ts +233 -233
  103. package/plugins/mouse.ts +21 -21
  104. package/plugins/panelStates.ts +70 -70
  105. package/plugins/text.ts +59 -59
  106. package/public/spice-console/application/clientgui.js +854 -854
  107. package/public/spice-console/application/packetfactory.js +211 -211
  108. package/public/spice-console/application/virtualmouse.js +147 -147
  109. package/public/spice-console/lib/images/bitmap.js +203 -203
  110. package/public/spice-console/network/spicechannel.js +440 -440
  111. package/public/spice-console/process/cursorprocess.js +121 -121
  112. package/public/spice-console/process/inputprocess.js +227 -227
  113. package/public/spice-console/process/mainprocess.js +210 -210
  114. package/public/spice-console/run.js +210 -210
  115. package/store/main/mutations.ts +7 -7
  116. package/store/main/state.ts +7 -7
@@ -1,28 +1,28 @@
1
- <template>
2
- <common-vm-actions-common-customize-hardware-vmoptions-remote-console-options-usb-redirection-new
3
- v-if="isNewView"
4
- v-model:usb-redirection="usbRedirection"
5
- :usb-redirection-options="usbRedirectionOptions"
6
- />
7
- <common-vm-actions-common-customize-hardware-vmoptions-remote-console-options-usb-redirection-old
8
- v-else
9
- v-model:usb-redirection="usbRedirection"
10
- :usb-redirection-options="usbRedirectionOptions"
11
- />
12
- </template>
13
-
14
- <script setup lang="ts">
15
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
16
- import { usbRedirectionOptionsConfig } from '~/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/lib/config/config'
17
-
18
- const usbRedirection = defineModel<number>('usbRedirection', { required: true })
19
-
20
- const { $store }: any = useNuxtApp()
21
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
22
-
23
- const usbRedirectionOptions = ref<UI_I_OptionItem[]>(
24
- usbRedirectionOptionsConfig
25
- )
26
- </script>
27
-
28
- <style scoped></style>
1
+ <template>
2
+ <common-vm-actions-common-customize-hardware-vmoptions-remote-console-options-usb-redirection-new
3
+ v-if="isNewView"
4
+ v-model:usb-redirection="usbRedirection"
5
+ :usb-redirection-options="usbRedirectionOptions"
6
+ />
7
+ <common-vm-actions-common-customize-hardware-vmoptions-remote-console-options-usb-redirection-old
8
+ v-else
9
+ v-model:usb-redirection="usbRedirection"
10
+ :usb-redirection-options="usbRedirectionOptions"
11
+ />
12
+ </template>
13
+
14
+ <script setup lang="ts">
15
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
16
+ import { usbRedirectionOptionsConfig } from '~/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/lib/config/config'
17
+
18
+ const usbRedirection = defineModel<number>('usbRedirection', { required: true })
19
+
20
+ const { $store }: any = useNuxtApp()
21
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
22
+
23
+ const usbRedirectionOptions = ref<UI_I_OptionItem[]>(
24
+ usbRedirectionOptionsConfig
25
+ )
26
+ </script>
27
+
28
+ <style scoped></style>
@@ -1,107 +1,107 @@
1
- <template>
2
- <div class="select-compatibility">
3
- <p class="select-compatibility-block">
4
- {{ props.description }}
5
- </p>
6
- <div class="select-compatibility-block version-select-wrap">
7
- <label for="version-select"
8
- >{{ localization.common.compatibleWith }}:</label
9
- >
10
-
11
- <atoms-tooltip-error
12
- :has-error="!!props.apiError"
13
- selector="#vm-wizard-version-select"
14
- @remove="emits('remove-validation-error')"
15
- >
16
- <template #elem>
17
- <select
18
- id="vm-wizard-version-select"
19
- v-model="selectedVersion"
20
- data-id="vm-wizard-version-select"
21
- >
22
- <option v-for="(item, key) in props.versions" :key="key" :value="item">
23
- {{ item.text }}
24
- </option>
25
- </select>
26
- </template>
27
- <template #content>{{ props.apiError }}</template>
28
- </atoms-tooltip-error>
29
- <!-- <div id="version-select-help-icon" class="flex-align-center relative">-->
30
- <!-- <atoms-the-icon-->
31
- <!-- fill="#0072a3"-->
32
- <!-- width="24px"-->
33
- <!-- height="24px"-->
34
- <!-- name="info-circle"-->
35
- <!-- @click="isShowHelp = !isShowHelp"-->
36
- <!-- />-->
37
- <!-- <atoms-tooltip-signpost-->
38
- <!-- v-if="isShowHelp"-->
39
- <!-- elem-id="version-select-help-icon"-->
40
- <!-- @hide="isShowHelp = false"-->
41
- <!-- >-->
42
- <!-- <h3 class="help-title">{{ localization.common.help }}</h3>-->
43
-
44
- <!-- <p>-->
45
- <!-- {{-->
46
- <!-- localization.common.eachVirtualMachineCompatibilitySettingIncludesHardwareAvailableVirtualMachine-->
47
- <!-- }}-->
48
- <!-- </p>-->
49
-
50
- <!-- <a id="more-information-link" class="pointer">{{-->
51
- <!-- localization.common.moreInformation-->
52
- <!-- }}</a>-->
53
- <!-- </atoms-tooltip-signpost>-->
54
- <!-- </div>-->
55
- </div>
56
- <p class="select-compatibility-block">
57
- {{ props.versionDescription }}
58
- </p>
59
- </div>
60
- </template>
61
-
62
- <script setup lang="ts">
63
- import type { UI_I_Localization } from '~/lib/models/interfaces'
64
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
65
-
66
- const selectedVersion = defineModel<UI_I_OptionItem | null>('selectedVersion', {required: true})
67
-
68
- const props = defineProps<{
69
- versions: UI_I_OptionItem[]
70
- description: string
71
- versionDescription: string
72
- apiError: string
73
- }>()
74
- const emits = defineEmits<{
75
- (event: 'remove-validation-error'): void
76
- }>()
77
-
78
- const localization = computed<UI_I_Localization>(() => useLocal())
79
-
80
- </script>
81
-
82
- <style scoped lang="scss">
83
- .select-compatibility-block {
84
- margin-top: 12px;
85
- font-size: 13px;
86
-
87
- &.version-select-wrap {
88
- display: flex;
89
- align-items: center;
90
- gap: 6px;
91
-
92
- //#version-select-help-icon {
93
- // .help-title {
94
- // font-size: 22px;
95
- // }
96
- //
97
- // p {
98
- // width: 200px;
99
- // }
100
- //
101
- // a {
102
- // color: #0072a3;
103
- // }
104
- //}
105
- }
106
- }
107
- </style>
1
+ <template>
2
+ <div class="select-compatibility">
3
+ <p class="select-compatibility-block">
4
+ {{ props.description }}
5
+ </p>
6
+ <div class="select-compatibility-block version-select-wrap">
7
+ <label for="version-select"
8
+ >{{ localization.common.compatibleWith }}:</label
9
+ >
10
+
11
+ <atoms-tooltip-error
12
+ :has-error="!!props.apiError"
13
+ selector="#vm-wizard-version-select"
14
+ @remove="emits('remove-validation-error')"
15
+ >
16
+ <template #elem>
17
+ <select
18
+ id="vm-wizard-version-select"
19
+ v-model="selectedVersion"
20
+ data-id="vm-wizard-version-select"
21
+ >
22
+ <option v-for="(item, key) in props.versions" :key="key" :value="item">
23
+ {{ item.text }}
24
+ </option>
25
+ </select>
26
+ </template>
27
+ <template #content>{{ props.apiError }}</template>
28
+ </atoms-tooltip-error>
29
+ <!-- <div id="version-select-help-icon" class="flex-align-center relative">-->
30
+ <!-- <atoms-the-icon-->
31
+ <!-- fill="#0072a3"-->
32
+ <!-- width="24px"-->
33
+ <!-- height="24px"-->
34
+ <!-- name="info-circle"-->
35
+ <!-- @click="isShowHelp = !isShowHelp"-->
36
+ <!-- />-->
37
+ <!-- <atoms-tooltip-signpost-->
38
+ <!-- v-if="isShowHelp"-->
39
+ <!-- elem-id="version-select-help-icon"-->
40
+ <!-- @hide="isShowHelp = false"-->
41
+ <!-- >-->
42
+ <!-- <h3 class="help-title">{{ localization.common.help }}</h3>-->
43
+
44
+ <!-- <p>-->
45
+ <!-- {{-->
46
+ <!-- localization.common.eachVirtualMachineCompatibilitySettingIncludesHardwareAvailableVirtualMachine-->
47
+ <!-- }}-->
48
+ <!-- </p>-->
49
+
50
+ <!-- <a id="more-information-link" class="pointer">{{-->
51
+ <!-- localization.common.moreInformation-->
52
+ <!-- }}</a>-->
53
+ <!-- </atoms-tooltip-signpost>-->
54
+ <!-- </div>-->
55
+ </div>
56
+ <p class="select-compatibility-block">
57
+ {{ props.versionDescription }}
58
+ </p>
59
+ </div>
60
+ </template>
61
+
62
+ <script setup lang="ts">
63
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
64
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
65
+
66
+ const selectedVersion = defineModel<UI_I_OptionItem | null>('selectedVersion', {required: true})
67
+
68
+ const props = defineProps<{
69
+ versions: UI_I_OptionItem[]
70
+ description: string
71
+ versionDescription: string
72
+ apiError: string
73
+ }>()
74
+ const emits = defineEmits<{
75
+ (event: 'remove-validation-error'): void
76
+ }>()
77
+
78
+ const localization = computed<UI_I_Localization>(() => useLocal())
79
+
80
+ </script>
81
+
82
+ <style scoped lang="scss">
83
+ .select-compatibility-block {
84
+ margin-top: 12px;
85
+ font-size: 13px;
86
+
87
+ &.version-select-wrap {
88
+ display: flex;
89
+ align-items: center;
90
+ gap: 6px;
91
+
92
+ //#version-select-help-icon {
93
+ // .help-title {
94
+ // font-size: 22px;
95
+ // }
96
+ //
97
+ // p {
98
+ // width: 200px;
99
+ // }
100
+ //
101
+ // a {
102
+ // color: #0072a3;
103
+ // }
104
+ //}
105
+ }
106
+ }
107
+ </style>
@@ -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>