bfg-common 1.2.197 → 1.2.198

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 (107) hide show
  1. package/assets/localization/local_be.json +9 -2
  2. package/assets/localization/local_en.json +9 -2
  3. package/assets/localization/local_hy.json +9 -2
  4. package/assets/localization/local_kk.json +9 -2
  5. package/assets/localization/local_ru.json +9 -2
  6. package/assets/localization/local_zh.json +9 -2
  7. package/components/atoms/table/dataGrid/DataGrid.vue +1490 -1490
  8. package/components/atoms/table/simpleTable/SimpleTable.vue +5 -2
  9. package/components/atoms/wizard/Wizard.vue +4 -4
  10. package/components/atoms/wizard/models/interfaces.ts +4 -3
  11. package/components/atoms/wizard/utils/utils.ts +106 -27
  12. package/components/common/diagramMain/DiagramMain.vue +11 -47
  13. package/components/common/diagramMain/modals/config/index.ts +0 -6
  14. package/components/common/diagramMain/modals/config/vmKernelAdapter.ts +2 -2
  15. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +1 -1
  16. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +1 -1
  17. package/components/common/diagramMain/modals/migrateVmkernelAdapter/MigrateVmkernelAdapter.vue +531 -0
  18. package/components/common/diagramMain/modals/migrateVmkernelAdapter/config/steps.ts +114 -0
  19. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +161 -0
  20. package/components/common/diagramMain/modals/{steps → migrateVmkernelAdapter/steps}/SelectVmkernelAdapter.vue +24 -86
  21. package/components/common/diagramMain/modals/{steps → migrateVmkernelAdapter/steps}/VmkernelAdapterReadyComplete.vue +7 -11
  22. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +47 -0
  23. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +146 -0
  24. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +54 -0
  25. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -0
  26. package/components/common/diagramMain/models/enums.ts +6 -7
  27. package/components/common/diagramMain/models/interfaces.ts +28 -29
  28. package/components/common/diagramMain/models/types.ts +0 -1
  29. package/components/common/monitor/advanced/Advanced.vue +10 -3
  30. package/components/common/monitor/advanced/tools/Tools.vue +15 -7
  31. package/components/common/monitor/advanced/tools/chartOptionsModal/ChartOptionsModal.vue +21 -9
  32. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/Counters.vue +7 -3
  33. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/Table.vue +3 -3
  34. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/config/utils.ts +5 -5
  35. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/Timespan.vue +7 -3
  36. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/Object.vue +24 -3
  37. package/components/common/monitor/advanced/tools/chartOptionsModal/models/types.ts +2 -2
  38. package/components/common/monitor/advanced/tools/config/advancedToolbar.ts +14 -7
  39. package/components/common/monitor/overview/filters/Filters.vue +5 -4
  40. package/components/common/monitor/overview/filters/config/filterOptions.ts +3 -2
  41. package/components/common/tools/viewSettings/ViewSettings.vue +71 -0
  42. package/components/common/tools/viewSettings/models/interfaces.ts +9 -0
  43. package/components/common/vm/actions/add/Add.vue +785 -525
  44. package/components/common/vm/actions/add/utils.ts +105 -0
  45. package/components/common/vm/actions/addOld/Add.vue +690 -0
  46. package/components/common/vm/actions/addOld/FolderTreeView.vue +83 -0
  47. package/components/common/vm/actions/addOld/utils.ts +118 -0
  48. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +394 -394
  49. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +1 -1
  50. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +1 -1
  51. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbController.vue +1 -1
  52. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +1 -1
  53. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCard.vue +1 -1
  54. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptions.vue +1 -1
  55. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +1 -1
  56. package/components/common/vm/actions/common/select/name/Name.vue +10 -5
  57. package/components/common/vm/actions/common/select/name/NameOld.vue +215 -0
  58. package/components/common/vm/actions/common/select/storage/Storage.vue +6 -4
  59. package/components/common/vm/actions/common/select/storage/StorageOld.vue +194 -0
  60. package/components/common/wizards/network/add/Add.vue +874 -0
  61. package/components/common/{addNetworking → wizards/network/add}/config/index.ts +2 -16
  62. package/components/common/{addNetworking → wizards/network/add}/config/initialData.ts +4 -19
  63. package/components/common/{addNetworking → wizards/network/add}/config/portPropertiesStep.ts +1 -1
  64. package/components/common/{addNetworking → wizards/network/add}/config/selectSwitch.ts +1 -1
  65. package/components/common/{addNetworking → wizards/network/add}/config/sendData.ts +1 -1
  66. package/components/common/{addNetworking/config/addNetworkingSteps.ts → wizards/network/add/config/steps.ts} +107 -60
  67. package/components/common/{addNetworking → wizards/network/add}/modals/SelectNetwork.vue +2 -2
  68. package/components/common/{addNetworking → wizards/network/add}/modals/SelectStandardSwitch.vue +2 -2
  69. package/components/common/{addNetworking → wizards/network/add}/modals/SelectSwitch.vue +2 -2
  70. package/components/common/wizards/network/add/models/enums.ts +17 -0
  71. package/components/common/{addNetworking → wizards/network/add}/models/interfaces.ts +30 -37
  72. package/components/common/wizards/network/add/models/types.ts +2 -0
  73. package/components/common/wizards/network/add/steps/ConnectionSettings.vue +148 -0
  74. package/components/common/{addNetworking → wizards/network/add}/steps/CreateStandardSwitch.vue +0 -7
  75. package/components/common/wizards/network/add/steps/IpFourSettings.vue +245 -0
  76. package/components/common/{addNetworking → wizards/network/add}/steps/PhysicalAdapter.vue +1 -12
  77. package/components/common/{addNetworking → wizards/network/add}/steps/PortProperties.vue +57 -180
  78. package/components/common/{addNetworking → wizards/network/add}/steps/ReadyComplete.vue +1 -10
  79. package/components/common/{addNetworking → wizards/network/add}/steps/SelectConnectionType.vue +3 -15
  80. package/components/common/{addNetworking → wizards/network/add}/steps/SelectedTargetDevice.vue +106 -212
  81. package/components/common/wizards/network/add/utils/index.ts +4 -0
  82. package/components/common/wizards/network/add/validations/common.ts +58 -0
  83. package/components/common/wizards/network/add/validations/connectionSettings.ts +75 -0
  84. package/components/common/wizards/network/add/validations/createStandardSwitch.ts +58 -0
  85. package/components/common/wizards/network/add/validations/ipFourSettings.ts +188 -0
  86. package/components/common/wizards/network/add/validations/networkValidation.ts +73 -0
  87. package/components/common/wizards/network/add/validations/portProperties.ts +87 -0
  88. package/components/common/wizards/network/add/validations/targetDevice.ts +113 -0
  89. package/components/common/wizards/network/add/validations/validations.ts +43 -0
  90. package/models/composables/useMyFetch/interfaces.ts +25 -25
  91. package/package.json +1 -1
  92. package/components/common/addNetworking/AddNetworking.vue +0 -1123
  93. package/components/common/addNetworking/Wizard.vue +0 -286
  94. package/components/common/addNetworking/config/temporaryData.ts +0 -8
  95. package/components/common/addNetworking/config/validation.ts +0 -23
  96. package/components/common/addNetworking/models/enums.ts +0 -7
  97. package/components/common/addNetworking/models/types.ts +0 -13
  98. package/components/common/addNetworking/steps/ConnectionSettings.vue +0 -269
  99. package/components/common/addNetworking/steps/Header.vue +0 -53
  100. package/components/common/addNetworking/steps/IpFourSettings.vue +0 -361
  101. package/components/common/addNetworking/utils/index.ts +0 -212
  102. package/components/common/diagramMain/modals/MigrateVmkernelAdapter.vue +0 -603
  103. package/components/common/diagramMain/modals/config/migrateVmkernelAdapterSteps.ts +0 -81
  104. package/components/common/diagramMain/modals/config/validation.ts +0 -3
  105. package/components/common/diagramMain/modals/steps/ConnectionSettings.vue +0 -221
  106. package/components/common/diagramMain/modals/steps/Header.vue +0 -60
  107. /package/components/common/{addNetworking → wizards/network/add}/mappers/mappers.ts +0 -0
@@ -1,248 +1,505 @@
1
1
  <template>
2
2
  <div class="add-vm">
3
- <atoms-modal-by-steps
4
- test-id="add-vm-wizard"
5
- :show="true"
3
+ <atoms-wizard
4
+ show
5
+ :steps="wizard.steps"
6
+ :selected-scheme="selectedScheme"
7
+ :is-loading="wizard.wizardLoader.status"
8
+ :loader-messages="wizard.wizardLoader.messages"
6
9
  :title="localization.newVirtualMachine2"
7
- :step-items="stepItems"
8
- :step-position="stepPosition"
9
- :loading="loading"
10
- @change-step="onChangeStep"
10
+ :was-completed="wasCompleted"
11
+ :localization="localization"
12
+ @change-steps="onChangeSteps"
11
13
  @hide="onHideModal"
14
+ @submit="onFinish"
12
15
  >
13
- <template #modalBody>
14
- <div class="add-vm-context">
15
- <div class="context-title-wrap">
16
- <p>{{ stepSubTitle }}</p>
17
- </div>
18
-
19
- <common-vm-actions-common-select-create-type
20
- v-show="stepPosition === 0"
21
- :import-from-v-m-warev-sphere="props.importFromVMWarevSphere"
22
- @next="onNext"
23
- />
24
- <common-vm-actions-common-select-name
25
- v-show="stepPosition === 1"
26
- :show="stepPosition === 1"
27
- :name-form-submit="nameFormSubmit"
28
- :project="props.project"
29
- :data-center="props.dataCenter"
30
- @submit="onChangeNameAndNext(...$event)"
31
- @check-name="emits('check-name', $event)"
32
- @loading="loading = $event"
33
- />
34
- <common-vm-actions-common-select-compute-resource
35
- v-if="props.project === 'sphere'"
36
- v-show="stepPosition === 2"
37
- v-model="vmForm.computeResource"
38
- :compute-resource-submit="computeResourceSubmit"
39
- :data-center="vmForm.dataCenter"
40
- :compute-resource="props.computeResource"
41
- :compute-resource-tree="props.computeResourceTree"
42
- @submit="changeComputeResourceAndNext"
43
- @get-compute-resource-tree="
44
- emits('get-compute-resource-tree', $event)
45
- "
46
- @show-compute-resource-tree="
47
- emits('show-compute-resource-tree', $event)
48
- "
49
- @select-compute-resource-tree="onSelectComputeResourceTree"
50
- @clear-compute-resource-tree="
51
- emits('clear-compute-resource-tree', $event)
52
- "
53
- />
54
- <common-vm-actions-common-select-storage
55
- v-show="
56
- props.project === 'sphere'
57
- ? stepPosition === 3
58
- : stepPosition === 2
59
- "
60
- :storage-submit="storageSubmit"
61
- :datastore="props.datastore"
62
- :get-datastore-table-func="props.getDatastoreTableFunc"
63
- @submit="onChangeStorageAndNext"
64
- />
65
- <common-vm-actions-common-select-compatibility
66
- v-show="
67
- props.project === 'sphere'
68
- ? stepPosition === 4
69
- : stepPosition === 3
70
- "
71
- :options="compatibility"
72
- :error-validation-fields="props.errorValidationFields"
73
- @change="onChangeCompatibility"
74
- @remove-error-by-title="emits('remove-error-by-title', $event)"
75
- />
76
- <common-vm-actions-common-select-os
77
- v-show="
78
- props.project === 'sphere'
79
- ? stepPosition === 5
80
- : stepPosition === 4
81
- "
82
- :families-options="guestOsFamilies"
83
- :versions-options="guestOsVersions"
84
- :machine-types-options="machineTypes"
85
- :error-validation-fields="props.errorValidationFields"
86
- @change="onChangeOs"
87
- @remove-error-by-title="emits('remove-error-by-title', $event)"
88
- />
89
- <common-vm-actions-common-customize-hardware
90
- v-show="
91
- props.project === 'sphere'
92
- ? stepPosition === 6
93
- : stepPosition === 5
94
- "
95
- :vm-name="vmForm.name"
96
- :guest-machine-type="vmForm.guestMachineType"
97
- :guest-os-family="vmForm.guestOsFamily"
98
- :guest-os-version="vmForm.guestOsVersion"
99
- :storage="vmForm.storage"
100
- :hard-disks-for-boot-options="virtualHardwareHardDisksLocal"
101
- :cd-dvd-drives-for-boot-options="virtualHardwareCdDvdDrivesLocal"
102
- :networks-for-boot-options="virtualHardwareNetworksLocal"
103
- :cd-dvd-drives="virtualHardwareCdDvdDrivesLocal"
104
- :customize-hardware-submit="customizeHardwareSubmit"
105
- :max-cpus="maxCpus"
106
- :max-memory="maxMemory"
107
- :cpu-models="cpuModels"
108
- :selected-nav-item="selectedNavItem"
109
- :nodes="props.nodes"
110
- :files="props.files"
111
- :networks-table="props.networksTable"
112
- :error-validation-fields="props.errorValidationFields"
113
- :get-datastore-table-func="props.getDatastoreTableFunc"
114
- :datastore="props.datastore"
115
- :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
116
- :passthrough-devices="props.passthroughDevices"
117
- @change-boot-order="onChangeBootOrder"
118
- @send-data="onChangeCustomizeHardware"
119
- @get-storage="emits('get-storage', $event)"
120
- @get-folders-or-files="emits('get-folders-or-files', $event)"
121
- @get-active-device-child="emits('get-active-device-child', $event)"
122
- @show-datastore-child="emits('show-datastore-child', $event)"
123
- @remove-error-by-title="emits('remove-error-by-title', $event)"
124
- @get-networks-table="emits('get-networks-table', $event)"
125
- @get-pci-devices="emits('get-pci-devices')"
126
- @next="onNext(true)"
127
- />
128
- <common-vm-actions-common-ready-to-complete
129
- v-if="
130
- props.project === 'sphere'
131
- ? stepPosition === 7
132
- : stepPosition === 6
133
- "
134
- :ready-complete-table-info="props.readyCompleteTableInfo"
135
- />
136
-
137
- <span
138
- v-if="
139
- props.project === 'sphere' ? stepPosition > 4 : stepPosition > 3
140
- "
141
- class="vm-hardware-version"
142
- >{{ compatibilityInfo }}</span
143
- >
144
- </div>
16
+ <template #modalBody="{ selectedStep }">
17
+ {{ selectedStep }}
18
+
19
+ {{ alertMessages[selectedStep.id] }}
20
+
21
+ <common-vm-actions-common-select-create-type
22
+ v-show="selectedStep.id === 0"
23
+ :import-from-v-m-warev-sphere="props.importFromVMWarevSphere"
24
+ />
25
+ <common-vm-actions-common-select-name
26
+ v-show="selectedStep.id === 1 || selectedStep.id === 2"
27
+ :show="selectedStep.id === 1 || selectedStep.id === 2"
28
+ :name-form-submit="nameFormSubmit"
29
+ :project="props.project"
30
+ :data-center="props.dataCenter"
31
+ @check-name="emits('check-name', $event)"
32
+ />
33
+ <!-- <common-vm-actions-common-select-compute-resource-->
34
+ <!-- v-if="props.project === 'sphere'"-->
35
+ <!-- v-show="selectedStep.id === 3"-->
36
+ <!-- v-model="vmForm.computeResource"-->
37
+ <!-- :compute-resource-submit="computeResourceSubmit"-->
38
+ <!-- :data-center="vmForm.dataCenter"-->
39
+ <!-- :compute-resource="props.computeResource"-->
40
+ <!-- :compute-resource-tree="props.computeResourceTree"-->
41
+ <!-- @submit="changeComputeResourceAndNext"-->
42
+ <!-- @get-compute-resource-tree="-->
43
+ <!-- emits('get-compute-resource-tree', $event)-->
44
+ <!-- "-->
45
+ <!-- @show-compute-resource-tree="-->
46
+ <!-- emits('show-compute-resource-tree', $event)-->
47
+ <!-- "-->
48
+ <!-- @select-compute-resource-tree="onSelectComputeResourceTree"-->
49
+ <!-- @clear-compute-resource-tree="-->
50
+ <!-- emits('clear-compute-resource-tree', $event)-->
51
+ <!-- "-->
52
+ <!-- />-->
53
+ <common-vm-actions-common-select-storage
54
+ v-show="selectedStep.id === 4"
55
+ :storage-submit="storageSubmit"
56
+ :datastore="props.datastore"
57
+ :get-datastore-table-func="props.getDatastoreTableFunc"
58
+ />
59
+ <!-- <common-vm-actions-common-select-compatibility-->
60
+ <!-- v-show="selectedStep.id === 5"-->
61
+ <!-- :options="compatibility"-->
62
+ <!-- :error-validation-fields="props.errorValidationFields"-->
63
+ <!-- @change="onChangeCompatibility"-->
64
+ <!-- @remove-error-by-title="emits('remove-error-by-title', $event)"-->
65
+ <!-- />-->
66
+ <!-- <common-vm-actions-common-select-os-->
67
+ <!-- v-show="selectedStep.id === 6 || selectedStep.id === 7"-->
68
+ <!-- :families-options="guestOsFamilies"-->
69
+ <!-- :versions-options="guestOsVersions"-->
70
+ <!-- :machine-types-options="machineTypes"-->
71
+ <!-- :error-validation-fields="props.errorValidationFields"-->
72
+ <!-- @change="onChangeOs"-->
73
+ <!-- @remove-error-by-title="emits('remove-error-by-title', $event)"-->
74
+ <!-- />-->
75
+ <!-- <common-vm-actions-common-customize-hardware-->
76
+ <!-- v-show="selectedStep.id === 8"-->
77
+ <!-- :vm-name="vmForm.name"-->
78
+ <!-- :guest-machine-type="vmForm.guestMachineType"-->
79
+ <!-- :guest-os-family="vmForm.guestOsFamily"-->
80
+ <!-- :guest-os-version="vmForm.guestOsVersion"-->
81
+ <!-- :storage="vmForm.storage"-->
82
+ <!-- :hard-disks-for-boot-options="virtualHardwareHardDisksLocal"-->
83
+ <!-- :cd-dvd-drives-for-boot-options="virtualHardwareCdDvdDrivesLocal"-->
84
+ <!-- :networks-for-boot-options="virtualHardwareNetworksLocal"-->
85
+ <!-- :cd-dvd-drives="virtualHardwareCdDvdDrivesLocal"-->
86
+ <!-- :customize-hardware-submit="customizeHardwareSubmit"-->
87
+ <!-- :max-cpus="maxCpus"-->
88
+ <!-- :max-memory="maxMemory"-->
89
+ <!-- :cpu-models="cpuModels"-->
90
+ <!-- :selected-nav-item="selectedNavItem"-->
91
+ <!-- :nodes="props.nodes"-->
92
+ <!-- :files="props.files"-->
93
+ <!-- :networks-table="props.networksTable"-->
94
+ <!-- :error-validation-fields="props.errorValidationFields"-->
95
+ <!-- :get-datastore-table-func="props.getDatastoreTableFunc"-->
96
+ <!-- :datastore="props.datastore"-->
97
+ <!-- :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"-->
98
+ <!-- :passthrough-devices="props.passthroughDevices"-->
99
+ <!-- @change-boot-order="onChangeBootOrder"-->
100
+ <!-- @send-data="onChangeCustomizeHardware"-->
101
+ <!-- @get-storage="emits('get-storage', $event)"-->
102
+ <!-- @get-folders-or-files="emits('get-folders-or-files', $event)"-->
103
+ <!-- @get-active-device-child="emits('get-active-device-child', $event)"-->
104
+ <!-- @show-datastore-child="emits('show-datastore-child', $event)"-->
105
+ <!-- @remove-error-by-title="emits('remove-error-by-title', $event)"-->
106
+ <!-- @get-networks-table="emits('get-networks-table', $event)"-->
107
+ <!-- @get-pci-devices="emits('get-pci-devices')"-->
108
+ <!-- @next="onNext(true)"-->
109
+ <!-- />-->
110
+ <!-- <common-vm-actions-common-ready-to-complete-->
111
+ <!-- v-if="selectedStep.id === 9"-->
112
+ <!-- :ready-complete-table-info="props.readyCompleteTableInfo"-->
113
+ <!-- />-->
114
+
115
+ <!-- <span v-if="selectedStep.id > 5" class="vm-hardware-version">{{-->
116
+ <!-- compatibilityInfo-->
117
+ <!-- }}</span>-->
145
118
  </template>
146
-
147
- <template #modalFooter>
148
- <div class="flex-align-center flex-space-between w-100">
149
- <div class="power-on-by-default-wrap">
150
- <template
151
- v-if="
152
- props.project === 'sphere'
153
- ? stepPosition === 7
154
- : stepPosition === 6
155
- "
156
- >
157
- <input
158
- id="power-on-by-default"
159
- v-model="isPowerOnByDefault"
160
- type="checkbox"
161
- />
162
- <label for="power-on-by-default" class="label-text-normal">{{
163
- localization.powerOnByDefault
164
- }}</label>
165
- </template>
166
- </div>
167
- <div class="flex-align-center">
168
- <button
169
- id="vm-wizard-cancel-button"
170
- class="btn btn-link"
171
- @click="onHideModal"
172
- >
173
- {{ localization.cancel }}
174
- </button>
175
- <button
176
- v-show="stepPosition > 0"
177
- id="vm-wizard-back-button"
178
- class="btn btn-outline"
179
- @click="onBack"
180
- >
181
- {{ localization.back }}
182
- </button>
183
- <button
184
- v-if="stepPosition === stepItems.length - 1"
185
- id="vm-wizard-finish-button"
186
- class="btn btn-success"
187
- @click="onFinish"
188
- >
189
- {{ localization.finish }}
190
- </button>
191
- <button
192
- v-else
193
- id="vm-wizard-next-button"
194
- class="btn btn-primary"
195
- @click="onNext(false)"
196
- >
197
- {{ localization.next }}
198
- </button>
199
- </div>
200
- </div>
201
- </template>
202
- </atoms-modal-by-steps>
119
+ </atoms-wizard>
120
+ <!-- <atoms-modal-by-steps-->
121
+ <!-- test-id="add-vm-wizard"-->
122
+ <!-- :show="true"-->
123
+ <!-- :title="localization.newVirtualMachine2"-->
124
+ <!-- :step-items="stepItems"-->
125
+ <!-- :step-position="stepPosition"-->
126
+ <!-- :loading="loading"-->
127
+ <!-- @change-step="onChangeStep"-->
128
+ <!-- @hide="onHideModal"-->
129
+ <!-- >-->
130
+ <!-- <template #modalBody>-->
131
+ <!-- <div class="add-vm-context">-->
132
+ <!-- <div class="context-title-wrap">-->
133
+ <!-- <p>{{ stepSubTitle }}</p>-->
134
+ <!-- </div>-->
135
+
136
+ <!-- <common-vm-actions-common-select-create-type-->
137
+ <!-- v-show="stepPosition === 0"-->
138
+ <!-- :import-from-v-m-warev-sphere="props.importFromVMWarevSphere"-->
139
+ <!-- @next="onNext"-->
140
+ <!-- />-->
141
+ <!-- <common-vm-actions-common-select-name-->
142
+ <!-- v-show="stepPosition === 1"-->
143
+ <!-- :show="stepPosition === 1"-->
144
+ <!-- :name-form-submit="nameFormSubmit"-->
145
+ <!-- :project="props.project"-->
146
+ <!-- :data-center="props.dataCenter"-->
147
+ <!-- @submit="onChangeNameAndNext(...$event)"-->
148
+ <!-- @check-name="emits('check-name', $event)"-->
149
+ <!-- @loading="loading = $event"-->
150
+ <!-- />-->
151
+ <!-- <common-vm-actions-common-select-compute-resource-->
152
+ <!-- v-if="props.project === 'sphere'"-->
153
+ <!-- v-show="stepPosition === 2"-->
154
+ <!-- v-model="vmForm.computeResource"-->
155
+ <!-- :compute-resource-submit="computeResourceSubmit"-->
156
+ <!-- :data-center="vmForm.dataCenter"-->
157
+ <!-- :compute-resource="props.computeResource"-->
158
+ <!-- :compute-resource-tree="props.computeResourceTree"-->
159
+ <!-- @submit="changeComputeResourceAndNext"-->
160
+ <!-- @get-compute-resource-tree="-->
161
+ <!-- emits('get-compute-resource-tree', $event)-->
162
+ <!-- "-->
163
+ <!-- @show-compute-resource-tree="-->
164
+ <!-- emits('show-compute-resource-tree', $event)-->
165
+ <!-- "-->
166
+ <!-- @select-compute-resource-tree="onSelectComputeResourceTree"-->
167
+ <!-- @clear-compute-resource-tree="-->
168
+ <!-- emits('clear-compute-resource-tree', $event)-->
169
+ <!-- "-->
170
+ <!-- />-->
171
+ <!-- <common-vm-actions-common-select-storage-->
172
+ <!-- v-show="-->
173
+ <!-- props.project === 'sphere'-->
174
+ <!-- ? stepPosition === 3-->
175
+ <!-- : stepPosition === 2-->
176
+ <!-- "-->
177
+ <!-- :storage-submit="storageSubmit"-->
178
+ <!-- :datastore="props.datastore"-->
179
+ <!-- :get-datastore-table-func="props.getDatastoreTableFunc"-->
180
+ <!-- @submit="onChangeStorageAndNext"-->
181
+ <!-- />-->
182
+ <!-- <common-vm-actions-common-select-compatibility-->
183
+ <!-- v-show="-->
184
+ <!-- props.project === 'sphere'-->
185
+ <!-- ? stepPosition === 4-->
186
+ <!-- : stepPosition === 3-->
187
+ <!-- "-->
188
+ <!-- :options="compatibility"-->
189
+ <!-- :error-validation-fields="props.errorValidationFields"-->
190
+ <!-- @change="onChangeCompatibility"-->
191
+ <!-- @remove-error-by-title="emits('remove-error-by-title', $event)"-->
192
+ <!-- />-->
193
+ <!-- <common-vm-actions-common-select-os-->
194
+ <!-- v-show="-->
195
+ <!-- props.project === 'sphere'-->
196
+ <!-- ? stepPosition === 5-->
197
+ <!-- : stepPosition === 4-->
198
+ <!-- "-->
199
+ <!-- :families-options="guestOsFamilies"-->
200
+ <!-- :versions-options="guestOsVersions"-->
201
+ <!-- :machine-types-options="machineTypes"-->
202
+ <!-- :error-validation-fields="props.errorValidationFields"-->
203
+ <!-- @change="onChangeOs"-->
204
+ <!-- @remove-error-by-title="emits('remove-error-by-title', $event)"-->
205
+ <!-- />-->
206
+ <!-- <common-vm-actions-common-customize-hardware-->
207
+ <!-- v-show="-->
208
+ <!-- props.project === 'sphere'-->
209
+ <!-- ? stepPosition === 6-->
210
+ <!-- : stepPosition === 5-->
211
+ <!-- "-->
212
+ <!-- :vm-name="vmForm.name"-->
213
+ <!-- :guest-machine-type="vmForm.guestMachineType"-->
214
+ <!-- :guest-os-family="vmForm.guestOsFamily"-->
215
+ <!-- :guest-os-version="vmForm.guestOsVersion"-->
216
+ <!-- :storage="vmForm.storage"-->
217
+ <!-- :hard-disks-for-boot-options="virtualHardwareHardDisksLocal"-->
218
+ <!-- :cd-dvd-drives-for-boot-options="virtualHardwareCdDvdDrivesLocal"-->
219
+ <!-- :networks-for-boot-options="virtualHardwareNetworksLocal"-->
220
+ <!-- :cd-dvd-drives="virtualHardwareCdDvdDrivesLocal"-->
221
+ <!-- :customize-hardware-submit="customizeHardwareSubmit"-->
222
+ <!-- :max-cpus="maxCpus"-->
223
+ <!-- :max-memory="maxMemory"-->
224
+ <!-- :cpu-models="cpuModels"-->
225
+ <!-- :selected-nav-item="selectedNavItem"-->
226
+ <!-- :nodes="props.nodes"-->
227
+ <!-- :files="props.files"-->
228
+ <!-- :networks-table="props.networksTable"-->
229
+ <!-- :error-validation-fields="props.errorValidationFields"-->
230
+ <!-- :get-datastore-table-func="props.getDatastoreTableFunc"-->
231
+ <!-- :datastore="props.datastore"-->
232
+ <!-- :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"-->
233
+ <!-- :passthrough-devices="props.passthroughDevices"-->
234
+ <!-- @change-boot-order="onChangeBootOrder"-->
235
+ <!-- @send-data="onChangeCustomizeHardware"-->
236
+ <!-- @get-storage="emits('get-storage', $event)"-->
237
+ <!-- @get-folders-or-files="emits('get-folders-or-files', $event)"-->
238
+ <!-- @get-active-device-child="emits('get-active-device-child', $event)"-->
239
+ <!-- @show-datastore-child="emits('show-datastore-child', $event)"-->
240
+ <!-- @remove-error-by-title="emits('remove-error-by-title', $event)"-->
241
+ <!-- @get-networks-table="emits('get-networks-table', $event)"-->
242
+ <!-- @get-pci-devices="emits('get-pci-devices')"-->
243
+ <!-- @next="onNext(true)"-->
244
+ <!-- />-->
245
+ <!-- <common-vm-actions-common-ready-to-complete-->
246
+ <!-- v-if="-->
247
+ <!-- props.project === 'sphere'-->
248
+ <!-- ? stepPosition === 7-->
249
+ <!-- : stepPosition === 6-->
250
+ <!-- "-->
251
+ <!-- :ready-complete-table-info="props.readyCompleteTableInfo"-->
252
+ <!-- />-->
253
+
254
+ <!-- <span-->
255
+ <!-- v-if="-->
256
+ <!-- props.project === 'sphere' ? stepPosition > 4 : stepPosition > 3-->
257
+ <!-- "-->
258
+ <!-- class="vm-hardware-version"-->
259
+ <!-- >{{ compatibilityInfo }}</span-->
260
+ <!-- >-->
261
+ <!-- </div>-->
262
+ <!-- </template>-->
263
+
264
+ <!-- <template #modalFooter>-->
265
+ <!-- <div class="flex-align-center flex-space-between w-100">-->
266
+ <!-- <div class="power-on-by-default-wrap">-->
267
+ <!-- <template-->
268
+ <!-- v-if="-->
269
+ <!-- props.project === 'sphere'-->
270
+ <!-- ? stepPosition === 7-->
271
+ <!-- : stepPosition === 6-->
272
+ <!-- "-->
273
+ <!-- >-->
274
+ <!-- <input-->
275
+ <!-- id="power-on-by-default"-->
276
+ <!-- v-model="isPowerOnByDefault"-->
277
+ <!-- type="checkbox"-->
278
+ <!-- />-->
279
+ <!-- <label for="power-on-by-default" class="label-text-normal">{{-->
280
+ <!-- localization.powerOnByDefault-->
281
+ <!-- }}</label>-->
282
+ <!-- </template>-->
283
+ <!-- </div>-->
284
+ <!-- <div class="flex-align-center">-->
285
+ <!-- <button-->
286
+ <!-- id="vm-wizard-cancel-button"-->
287
+ <!-- class="btn btn-link"-->
288
+ <!-- @click="onHideModal"-->
289
+ <!-- >-->
290
+ <!-- {{ localization.cancel }}-->
291
+ <!-- </button>-->
292
+ <!-- <button-->
293
+ <!-- v-show="stepPosition > 0"-->
294
+ <!-- id="vm-wizard-back-button"-->
295
+ <!-- class="btn btn-outline"-->
296
+ <!-- @click="onBack"-->
297
+ <!-- >-->
298
+ <!-- {{ localization.back }}-->
299
+ <!-- </button>-->
300
+ <!-- <button-->
301
+ <!-- v-if="stepPosition === stepItems.length - 1"-->
302
+ <!-- id="vm-wizard-finish-button"-->
303
+ <!-- class="btn btn-success"-->
304
+ <!-- @click="onFinish"-->
305
+ <!-- >-->
306
+ <!-- {{ localization.finish }}-->
307
+ <!-- </button>-->
308
+ <!-- <button-->
309
+ <!-- v-else-->
310
+ <!-- id="vm-wizard-next-button"-->
311
+ <!-- class="btn btn-primary"-->
312
+ <!-- @click="onNext(false)"-->
313
+ <!-- >-->
314
+ <!-- {{ localization.next }}-->
315
+ <!-- </button>-->
316
+ <!-- </div>-->
317
+ <!-- </div>-->
318
+ <!-- </template>-->
319
+ <!-- </atoms-modal-by-steps>-->
203
320
  </div>
204
321
  </template>
205
322
 
206
323
  <script setup lang="ts">
207
- import { UI_I_DatastoreTableItem } from '~/models/store/storage/interfaces'
208
- import { UI_I_NetworkTableItem } from '~/models/store/network/interfaces'
209
- import { API_UI_I_Error, UI_I_TablePayload } from '~/models/store/interfaces'
210
- import { UI_I_FolderOrFileTreePayload } from '~/models/store/storage/interfaces'
211
- import { UI_I_FileTreeNode } from '~/components/models/interfaces'
212
- import { UI_I_Localization, UI_I_ArbitraryObject } from '~/models/interfaces'
213
- import {
214
- UI_I_VmForm,
215
- UI_I_VmFormCash,
216
- } from '~/components/common/vm/actions/common/models/interfaces'
217
- import { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/models/interfaces'
218
- import { UI_I_ErrorValidationField } from '~/models/store/interfaces'
219
- import { UI_I_OsChange } from '~/components/common/vm/actions/common/select/models/interfaces'
220
- import {
221
- UI_I_SendDataCpu,
222
- UI_I_SendDataMemory,
223
- UI_I_SendDataNewCdDvdDrive,
224
- UI_I_SendDataNewHardDisk,
225
- UI_I_SendDataNewNetwork,
226
- } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/models/interfaces'
227
- import {
324
+ import type { UI_I_Localization } from '~/models/interfaces'
325
+ import type { UI_T_Project } from '~/models/types'
326
+ import type { UI_I_FileTreeNode } from '~/components/models/interfaces'
327
+ import type { UI_I_NetworkTableItem } from '~/models/store/network/interfaces'
328
+ import type {
329
+ UI_I_DatastoreTableItem,
330
+ UI_I_FolderOrFileTreePayload,
331
+ } from '~/models/store/storage/interfaces'
332
+ import type {
333
+ API_UI_I_Error,
334
+ UI_I_ErrorValidationField,
335
+ UI_I_TablePayload,
336
+ } from '~/models/store/interfaces'
337
+ import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/models/interfaces'
338
+ import type {
228
339
  UI_T_AddVmFinishFunc,
229
340
  UI_T_SelectedNavItem,
230
341
  } from '~/components/common/vm/actions/common/models/types'
231
- import {
232
- UI_I_OptionItem,
233
- UI_I_VerticalStepItem,
234
- } from '~/components/atoms/models/interfaces'
235
- import { UI_I_TableInfoItem } from '~/components/atoms/table/info/models/interfaces'
236
- import { UI_I_ConfigurePciDevicesTable } from '~/models/store/host/interfaces'
237
- import { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/models/types'
238
- import { UI_T_Project } from '~/models/types'
239
- import { UI_I_TreeNode } from '~/components/common/recursionTree/models/interfaces'
240
- import { capabilities } from '~/components/common/vm/actions/common/config/capabilities'
241
- import {
242
- stepItemsFunc,
243
- subTitleFunc,
244
- } from '~/components/common/vm/actions/add/utils'
342
+ import type { UI_I_ConfigurePciDevicesTable } from '~/models/store/host/interfaces'
343
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/models/interfaces'
344
+ import type {
345
+ UI_I_ValidationReturn,
346
+ UI_I_WizardStep,
347
+ } from '~/components/atoms/wizard/models/interfaces'
348
+ import Wizard from '~/components/atoms/wizard/utils/utils'
349
+ import { wizardSteps } from '~/components/common/vm/actions/add/utils'
350
+
351
+ const localization = computed<UI_I_Localization>(() => useLocal())
352
+
353
+ const wizard: Wizard = new Wizard(wizardSteps(localization.value), [
354
+ [0, 1, 4, 5, 6, 8, 9], // Procurator
355
+ [0, 2, 3, 4, 5, 7, 8, 9], // Sphere
356
+ ])
357
+ // Procurator
358
+ // wizard.selectedScheme = [0, 1, 4, 5, 6, 8, 9]
359
+ // Sphere
360
+ const wasCompleted = computed<boolean>(() => wizard.wasCompleted())
361
+ const selectedScheme = computed<number[]>(() => wizard.selectedScheme.value)
362
+ const alertMessages = computed<string[][]>(() => wizard.alertMessages.value)
363
+
364
+ const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> => {
365
+ // wizard.isLastStep()
366
+ // ? wizard.changeSteps(value, finalValidationFunc)
367
+ // : wizard.changeSteps(value, validationFunc)
368
+ wizard.changeSteps(value, validationFunc)
369
+ }
370
+ const validationFunc = async (
371
+ value: UI_I_WizardStep[],
372
+ currentStep: UI_I_WizardStep,
373
+ nextStep: UI_I_WizardStep
374
+ ): Promise<UI_I_ValidationReturn> => {
375
+ let stepHasError = false
376
+ let stepShouldStop = {
377
+ ifOnCurrentStep: false,
378
+ ifFromAnyStep: false,
379
+ stoppageStepId: -1,
380
+ }
381
+
382
+ wizard.setLoader(true)
383
+ if (
384
+ wizard.isValidateForStep(1, currentStep.id, nextStep.id) ||
385
+ wizard.isValidateForStep(2, currentStep.id, nextStep.id)
386
+ ) {
387
+ let nameValidation: any = {}
388
+
389
+ nameValidation = await checkName(value)
390
+ console.log(nameValidation, 111)
391
+
392
+ value = nameValidation.value
393
+ stepHasError = stepHasError || nameValidation.stepHasError
394
+ if (stepHasError) stepShouldStop.stoppageStepId = 1
395
+ } else if (wizard.isValidateForStep(4, currentStep.id, nextStep.id)) {
396
+ let storageValidation: any = {}
397
+
398
+ storageValidation = await checkStorage(value)
399
+ console.log(storageValidation, 222)
400
+
401
+ value = storageValidation.value
402
+
403
+ stepShouldStop = storageValidation.stepShouldStop
404
+
405
+ stepHasError = stepHasError || storageValidation.stepHasError
406
+ if (stepHasError) stepShouldStop.stoppageStepId = 4
407
+ }
408
+ wizard.setLoader(false)
409
+
410
+ console.log(777, {
411
+ newValue: value,
412
+ stepHasError,
413
+ stepShouldStop,
414
+ })
415
+ return {
416
+ newValue: value,
417
+ stepHasError,
418
+ stepShouldStop,
419
+ }
420
+ }
421
+ const checkName = async (
422
+ value: UI_I_WizardStep[],
423
+ ): Promise<any> => {
424
+ let stepHasError = false
425
+
426
+ return new Promise((resolve) => {
427
+ nameFormSubmit.value = (isValid: boolean) => {
428
+ if (!isValid) {
429
+ stepHasError = wizard.setValidation(1, 'name', {
430
+ fieldMessage: '',
431
+ alertMessage: '',
432
+ })
433
+ }
245
434
 
435
+ resolve({
436
+ value,
437
+ stepHasError,
438
+ })
439
+ }
440
+ })
441
+ }
442
+ const checkStorage = async (
443
+ value: UI_I_WizardStep[],
444
+ ): Promise<any> => {
445
+ let stepHasError = false
446
+
447
+ return new Promise((resolve) => {
448
+ storageSubmit.value = (isValid: boolean) => {
449
+ if (!isValid) {
450
+ stepHasError = wizard.setValidation(4, 'storage', {
451
+ fieldMessage: '',
452
+ alertMessage: '',
453
+ })
454
+ }
455
+
456
+ resolve({
457
+ newValue: value,
458
+ stepHasError,
459
+ })
460
+ }
461
+ })
462
+ }
463
+
464
+ // import { UI_I_DatastoreTableItem } from '~/models/store/storage/interfaces'
465
+ // import { UI_I_NetworkTableItem } from '~/models/store/network/interfaces'
466
+ // import { API_UI_I_Error, UI_I_TablePayload } from '~/models/store/interfaces'
467
+ // import { UI_I_FolderOrFileTreePayload } from '~/models/store/storage/interfaces'
468
+ // import { UI_I_FileTreeNode } from '~/components/models/interfaces'
469
+ // import { UI_I_Localization, UI_I_ArbitraryObject } from '~/models/interfaces'
470
+ // import {
471
+ // UI_I_VmForm,
472
+ // UI_I_VmFormCash,
473
+ // } from '~/components/common/vm/actions/common/models/interfaces'
474
+ // import { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/models/interfaces'
475
+ // import { UI_I_ErrorValidationField } from '~/models/store/interfaces'
476
+ // import { UI_I_OsChange } from '~/components/common/vm/actions/common/select/models/interfaces'
477
+ // import {
478
+ // UI_I_SendDataCpu,
479
+ // UI_I_SendDataMemory,
480
+ // UI_I_SendDataNewCdDvdDrive,
481
+ // UI_I_SendDataNewHardDisk,
482
+ // UI_I_SendDataNewNetwork,
483
+ // } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/models/interfaces'
484
+ // import {
485
+ // UI_T_AddVmFinishFunc,
486
+ // UI_T_SelectedNavItem,
487
+ // } from '~/components/common/vm/actions/common/models/types'
488
+ // import {
489
+ // UI_I_OptionItem,
490
+ // UI_I_VerticalStepItem,
491
+ // } from '~/components/atoms/models/interfaces'
492
+ // import { UI_I_TableInfoItem } from '~/components/atoms/table/info/models/interfaces'
493
+ // import { UI_I_ConfigurePciDevicesTable } from '~/models/store/host/interfaces'
494
+ // import { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/models/types'
495
+ // import { UI_T_Project } from '~/models/types'
496
+ // import { UI_I_TreeNode } from '~/components/common/recursionTree/models/interfaces'
497
+ // import { capabilities } from '~/components/common/vm/actions/common/config/capabilities'
498
+ // import {
499
+ // stepItemsFunc,
500
+ // subTitleFunc,
501
+ // } from '~/components/common/vm/actions/add/utils'
502
+ //
246
503
  const props = defineProps<{
247
504
  project: UI_T_Project
248
505
  nodes: UI_I_FileTreeNode[]
@@ -264,7 +521,7 @@ const props = defineProps<{
264
521
  computeResource?: UI_I_TreeNode // для сферы
265
522
  computeResourceTree?: UI_I_TreeNode[] // для сферы
266
523
  }>()
267
-
524
+ //
268
525
  const emits = defineEmits<{
269
526
  (event: 'check-name', value: [string, (error: API_UI_I_Error) => void]): void
270
527
  (event: 'get-storage', value: UI_I_TablePayload): void
@@ -283,301 +540,304 @@ const emits = defineEmits<{
283
540
  (event: 'select-compute-resource-tree', value: UI_I_TreeNode): void // для сферы
284
541
  (event: 'clear-compute-resource-tree'): void // для сферы
285
542
  }>()
286
-
287
- const { $recursion } = useNuxtApp()
288
-
289
- const localization = computed<UI_I_Localization>(() => useLocal())
290
-
291
- const stepPosition = ref<number>(0)
292
- watch(stepPosition, (newValue) => {
293
- if (props.project === 'sphere' ? newValue === 7 : newValue === 6)
294
- validateSendData()
295
- })
296
- const stepItems = ref<UI_I_VerticalStepItem[]>([])
297
- stepItems.value = stepItemsFunc(localization.value, props.project)
298
-
299
- const subTitle: string[] = subTitleFunc(localization.value, props.project)
300
- const stepSubTitle = computed<string>(() => subTitle[stepPosition.value])
301
-
302
- const storageIdCash = ref<string | null>(null)
303
- const vmForm = ref<UI_I_VmForm>({
304
- name: '',
305
- compatibility: '',
306
- guestMachineType: null,
307
- guestOsFamily: null,
308
- guestOsVersion: null,
309
- computeResource: null,
310
- storage: null,
311
- locationPath: '',
312
- dataCenter: null,
313
- })
314
- const vmFormCash = ref<UI_I_VmFormCash>({
315
- dataCenterId: null,
316
- computeResourceTypeAndId: null,
317
- })
318
-
319
- const isPowerOnByDefault = ref<boolean>(true)
320
-
321
- const onChangeNameAndNext = (name: string, node: UI_I_TreeNode): void => {
322
- const hasChanges = vmFormCash.value.dataCenterId !== node?.id
323
- if (hasChanges) checkLocalChangeAndChangeStepStatus()
324
-
325
- vmForm.value.name = name
326
- if (props.project === 'sphere') {
327
- vmForm.value.locationPath = $recursion.createAbsolutePathRecursion(
328
- node,
329
- 'id',
330
- 'parent'
331
- )
332
- vmForm.value.dataCenter = $recursion.findParentByValue(
333
- node,
334
- 'datacenter',
335
- 'type',
336
- 'parent'
337
- )
338
- vmFormCash.value.dataCenterId = vmForm.value.dataCenter?.id || null
339
- }
340
- onNext(true)
341
- }
342
- // Для сферы
343
- const computeResourcePath = ref<string>('')
344
- const onSelectComputeResourceTree = (node: UI_I_TreeNode): void => {
345
- emits('select-compute-resource-tree', node)
346
- computeResourcePath.value = $recursion.createAbsolutePathRecursion(
347
- node,
348
- 'id',
349
- 'parent'
350
- )
351
- }
352
- const changeComputeResourceAndNext = (node: UI_I_TreeNode): void => {
353
- const hasChanges =
354
- `${node.type}${node.id}` !== vmFormCash.value.computeResourceTypeAndId
355
- if (hasChanges) checkLocalChangeAndChangeStepStatus()
356
-
357
- vmForm.value.computeResource = node
358
- // const type = node.type.toUpperCase()
359
- // schedRequirementsTemplate.value = `sched_requirements="(${type}_ID=${node.id})"\\`
360
- vmFormCash.value.computeResourceTypeAndId = `${node.type}${node.id}` || null
361
-
362
- onNext(true)
363
- }
364
- const onChangeStorageAndNext = (
365
- storage: UI_I_DatastoreTableItem | null
366
- ): void => {
367
- if (!storage) return
368
-
369
- const hasChanges = storage.id !== storageIdCash.value
370
- if (hasChanges) checkLocalChangeAndChangeStepStatus()
371
-
372
- vmForm.value.storage = storage
373
- storageIdCash.value = storage.id
374
-
375
- onNext(true)
376
- }
377
- const compatibilityInfo = ref<string>('')
378
- const onChangeCompatibility = (compatibility: UI_I_OptionItem): void => {
379
- vmForm.value.compatibility = compatibility.value
380
-
381
- const version = compatibility.value.split('-')[1]
382
- compatibilityInfo.value = `${localization.value.compatibility}: ${compatibility.text} (${localization.value.vmVersion} ${version})`
383
- }
384
- const onChangeOs = (data: UI_I_OsChange): void => {
385
- vmForm.value.guestMachineType = data.selectedMachineType
386
- vmForm.value.guestOsFamily = data.selectedOS
387
- vmForm.value.guestOsVersion = data.selectedVersion
388
- }
389
- const customizeHardware = ref<UI_I_SendDataCustomizeHardware | null>(null)
390
- const onChangeCustomizeHardware = (
391
- data: UI_I_SendDataCustomizeHardware
392
- ): void => {
393
- customizeHardware.value = data
394
- }
395
-
396
- const virtualHardwareHardDisksLocal = computed<
397
- UI_I_SendDataNewHardDisk[] | null
398
- >(() => customizeHardware.value?.virtualHardware?.hardDisks || null)
399
- const virtualHardwareNetworksLocal = computed<UI_I_SendDataNewNetwork[] | null>(
400
- () => customizeHardware.value?.virtualHardware?.networks || null
401
- )
402
- const virtualHardwareCdDvdDrivesLocal = computed<
403
- UI_I_SendDataNewCdDvdDrive[] | null
404
- >(() => customizeHardware.value?.virtualHardware?.cdDvdDrives || null)
405
-
406
- const virtualHardwareCpu = computed<UI_I_SendDataCpu | null>(
407
- () => customizeHardware.value?.virtualHardware?.cpu || null
408
- )
409
- const virtualHardwareMemory = computed<UI_I_SendDataMemory | null>(
410
- () => customizeHardware.value?.virtualHardware?.memory || null
411
- )
412
- const virtualHardwareHardDisks = ref<UI_I_SendDataNewHardDisk[] | null>(null)
413
- const virtualHardwareCdDvdDrives = ref<UI_I_SendDataNewCdDvdDrive[] | null>(
414
- null
415
- )
416
- const virtualHardwareNetworks = ref<UI_I_SendDataNewNetwork[] | null>(null)
417
- const onChangeBootOrder = (data: UI_T_ChangeBootOrder): void => {
418
- virtualHardwareHardDisks.value = data[0]
419
- virtualHardwareCdDvdDrives.value = data[1]
420
- virtualHardwareNetworks.value = data[2]
421
- }
422
-
423
- watch(() => props.vmNameInWizard, (newValue) => {
424
- vmForm.value.name = newValue
425
- })
426
-
427
- const loading = ref<boolean>(false)
428
- const validateSendData = (): void => {
429
- loading.value = true
430
- props
431
- .validateSendDataFunc(
432
- vmForm.value,
433
- virtualHardwareCpu.value,
434
- virtualHardwareMemory.value,
435
- customizeHardware.value,
436
- virtualHardwareNetworks.value,
437
- virtualHardwareHardDisks.value,
438
- virtualHardwareCdDvdDrives.value,
439
- isPowerOnByDefault.value,
440
- localization.value,
441
- vmForm.value.locationPath, // для сферы
442
- computeResourcePath.value // для сферы
443
- )
444
- .then((data) => {
445
- loading.value = false
446
- if (!data) return
447
-
448
- selectedNavItem.value = data[0]
449
- data[1] !== null && (stepPosition.value = data[1])
450
- })
451
- }
543
+ //
544
+ // const { $recursion } = useNuxtApp()
545
+ //
546
+ // const localization = computed<UI_I_Localization>(() => useLocal())
547
+ //
548
+ // const stepPosition = ref<number>(0)
549
+ // watch(stepPosition, (newValue) => {
550
+ // if (props.project === 'sphere' ? newValue === 7 : newValue === 6)
551
+ // validateSendData()
552
+ // })
553
+ // const stepItems = ref<UI_I_VerticalStepItem[]>([])
554
+ // stepItems.value = stepItemsFunc(localization.value, props.project)
555
+ //
556
+ // const subTitle: string[] = subTitleFunc(localization.value, props.project)
557
+ // const stepSubTitle = computed<string>(() => subTitle[stepPosition.value])
558
+ //
559
+ // const storageIdCash = ref<string | null>(null)
560
+ // const vmForm = ref<UI_I_VmForm>({
561
+ // name: '',
562
+ // compatibility: '',
563
+ // guestMachineType: null,
564
+ // guestOsFamily: null,
565
+ // guestOsVersion: null,
566
+ // computeResource: null,
567
+ // storage: null,
568
+ // locationPath: '',
569
+ // dataCenter: null,
570
+ // })
571
+ // const vmFormCash = ref<UI_I_VmFormCash>({
572
+ // dataCenterId: null,
573
+ // computeResourceTypeAndId: null,
574
+ // })
575
+ //
576
+ // const isPowerOnByDefault = ref<boolean>(true)
577
+ //
578
+ // const onChangeNameAndNext = (name: string, node: UI_I_TreeNode): void => {
579
+ // const hasChanges = vmFormCash.value.dataCenterId !== node?.id
580
+ // if (hasChanges) checkLocalChangeAndChangeStepStatus()
581
+ //
582
+ // vmForm.value.name = name
583
+ // if (props.project === 'sphere') {
584
+ // vmForm.value.locationPath = $recursion.createAbsolutePathRecursion(
585
+ // node,
586
+ // 'id',
587
+ // 'parent'
588
+ // )
589
+ // vmForm.value.dataCenter = $recursion.findParentByValue(
590
+ // node,
591
+ // 'datacenter',
592
+ // 'type',
593
+ // 'parent'
594
+ // )
595
+ // vmFormCash.value.dataCenterId = vmForm.value.dataCenter?.id || null
596
+ // }
597
+ // onNext(true)
598
+ // }
599
+ // // Для сферы
600
+ // const computeResourcePath = ref<string>('')
601
+ // const onSelectComputeResourceTree = (node: UI_I_TreeNode): void => {
602
+ // emits('select-compute-resource-tree', node)
603
+ // computeResourcePath.value = $recursion.createAbsolutePathRecursion(
604
+ // node,
605
+ // 'id',
606
+ // 'parent'
607
+ // )
608
+ // }
609
+ // const changeComputeResourceAndNext = (node: UI_I_TreeNode): void => {
610
+ // const hasChanges =
611
+ // `${node.type}${node.id}` !== vmFormCash.value.computeResourceTypeAndId
612
+ // if (hasChanges) checkLocalChangeAndChangeStepStatus()
613
+ //
614
+ // vmForm.value.computeResource = node
615
+ // // const type = node.type.toUpperCase()
616
+ // // schedRequirementsTemplate.value = `sched_requirements="(${type}_ID=${node.id})"\\`
617
+ // vmFormCash.value.computeResourceTypeAndId = `${node.type}${node.id}` || null
618
+ //
619
+ // onNext(true)
620
+ // }
621
+ // const onChangeStorageAndNext = (
622
+ // storage: UI_I_DatastoreTableItem | null
623
+ // ): void => {
624
+ // if (!storage) return
625
+ //
626
+ // const hasChanges = storage.id !== storageIdCash.value
627
+ // if (hasChanges) checkLocalChangeAndChangeStepStatus()
628
+ //
629
+ // vmForm.value.storage = storage
630
+ // storageIdCash.value = storage.id
631
+ //
632
+ // onNext(true)
633
+ // }
634
+ // const compatibilityInfo = ref<string>('')
635
+ // const onChangeCompatibility = (compatibility: UI_I_OptionItem): void => {
636
+ // vmForm.value.compatibility = compatibility.value
637
+ //
638
+ // const version = compatibility.value.split('-')[1]
639
+ // compatibilityInfo.value = `${localization.value.compatibility}: ${compatibility.text} (${localization.value.vmVersion} ${version})`
640
+ // }
641
+ // const onChangeOs = (data: UI_I_OsChange): void => {
642
+ // vmForm.value.guestMachineType = data.selectedMachineType
643
+ // vmForm.value.guestOsFamily = data.selectedOS
644
+ // vmForm.value.guestOsVersion = data.selectedVersion
645
+ // }
646
+ // const customizeHardware = ref<UI_I_SendDataCustomizeHardware | null>(null)
647
+ // const onChangeCustomizeHardware = (
648
+ // data: UI_I_SendDataCustomizeHardware
649
+ // ): void => {
650
+ // customizeHardware.value = data
651
+ // }
652
+ //
653
+ // const virtualHardwareHardDisksLocal = computed<
654
+ // UI_I_SendDataNewHardDisk[] | null
655
+ // >(() => customizeHardware.value?.virtualHardware?.hardDisks || null)
656
+ // const virtualHardwareNetworksLocal = computed<UI_I_SendDataNewNetwork[] | null>(
657
+ // () => customizeHardware.value?.virtualHardware?.networks || null
658
+ // )
659
+ // const virtualHardwareCdDvdDrivesLocal = computed<
660
+ // UI_I_SendDataNewCdDvdDrive[] | null
661
+ // >(() => customizeHardware.value?.virtualHardware?.cdDvdDrives || null)
662
+ //
663
+ // const virtualHardwareCpu = computed<UI_I_SendDataCpu | null>(
664
+ // () => customizeHardware.value?.virtualHardware?.cpu || null
665
+ // )
666
+ // const virtualHardwareMemory = computed<UI_I_SendDataMemory | null>(
667
+ // () => customizeHardware.value?.virtualHardware?.memory || null
668
+ // )
669
+ // const virtualHardwareHardDisks = ref<UI_I_SendDataNewHardDisk[] | null>(null)
670
+ // const virtualHardwareCdDvdDrives = ref<UI_I_SendDataNewCdDvdDrive[] | null>(
671
+ // null
672
+ // )
673
+ // const virtualHardwareNetworks = ref<UI_I_SendDataNewNetwork[] | null>(null)
674
+ // const onChangeBootOrder = (data: UI_T_ChangeBootOrder): void => {
675
+ // virtualHardwareHardDisks.value = data[0]
676
+ // virtualHardwareCdDvdDrives.value = data[1]
677
+ // virtualHardwareNetworks.value = data[2]
678
+ // }
679
+ //
680
+ // watch(
681
+ // () => props.vmNameInWizard,
682
+ // (newValue) => {
683
+ // vmForm.value.name = newValue
684
+ // }
685
+ // )
686
+ //
687
+ // const loading = ref<boolean>(false)
688
+ // const validateSendData = (): void => {
689
+ // loading.value = true
690
+ // props
691
+ // .validateSendDataFunc(
692
+ // vmForm.value,
693
+ // virtualHardwareCpu.value,
694
+ // virtualHardwareMemory.value,
695
+ // customizeHardware.value,
696
+ // virtualHardwareNetworks.value,
697
+ // virtualHardwareHardDisks.value,
698
+ // virtualHardwareCdDvdDrives.value,
699
+ // isPowerOnByDefault.value,
700
+ // localization.value,
701
+ // vmForm.value.locationPath, // для сферы
702
+ // computeResourcePath.value // для сферы
703
+ // )
704
+ // .then((data) => {
705
+ // loading.value = false
706
+ // if (!data) return
707
+ //
708
+ // selectedNavItem.value = data[0]
709
+ // data[1] !== null && (stepPosition.value = data[1])
710
+ // })
711
+ // }
452
712
  const onFinish = (): void => {
453
- loading.value = true
454
- props
455
- .finishFunc(
456
- vmForm.value,
457
- virtualHardwareCpu.value,
458
- virtualHardwareMemory.value,
459
- customizeHardware.value,
460
- virtualHardwareNetworks.value,
461
- virtualHardwareHardDisks.value,
462
- virtualHardwareCdDvdDrives.value,
463
- isPowerOnByDefault.value,
464
- localization.value,
465
- vmForm.value.locationPath, // для сферы
466
- computeResourcePath.value, // для сферы
467
- false
468
- )
469
- .then(() => {
470
- onHideModal()
471
- loading.value = false
472
- })
473
- }
474
-
475
- const selectedNavItem = ref<UI_T_SelectedNavItem>(0)
476
-
477
- const nameFormSubmit = ref<number>(0)
478
- const computeResourceSubmit = ref<number>(0)
479
- const storageSubmit = ref<number>(0)
480
- const customizeHardwareSubmit = ref<number>(0)
481
- const onNext = (force = false): void => {
482
- const isValid = checkSubmit(force)
483
- if (!isValid) {
484
- return
485
- }
486
-
487
- const isDisabled = stepItems.value[cashStep]?.disabled
488
- if (cashStep !== -1 && !isDisabled) {
489
- stepPosition.value = cashStep
490
- cashStep = -1
491
- return
492
- }
493
-
494
- stepItems.value[stepPosition.value].complete = true
495
- stepItems.value[stepPosition.value + 1].disabled = false
496
- stepPosition.value++
713
+ // loading.value = true
714
+ // props
715
+ // .finishFunc(
716
+ // vmForm.value,
717
+ // virtualHardwareCpu.value,
718
+ // virtualHardwareMemory.value,
719
+ // customizeHardware.value,
720
+ // virtualHardwareNetworks.value,
721
+ // virtualHardwareHardDisks.value,
722
+ // virtualHardwareCdDvdDrives.value,
723
+ // isPowerOnByDefault.value,
724
+ // localization.value,
725
+ // vmForm.value.locationPath, // для сферы
726
+ // computeResourcePath.value, // для сферы
727
+ // false
728
+ // )
729
+ // .then(() => {
730
+ // onHideModal()
731
+ // loading.value = false
732
+ // })
497
733
  }
498
- const checkLocalChangeAndChangeStepStatus = (): void => {
499
- stepItems.value = stepItems.value.map((step, index) => {
500
- if (index > stepPosition.value) {
501
- step.complete = false
502
- step.disabled = index > stepPosition.value + 1
503
- }
504
-
505
- return step
506
- })
507
- }
508
-
509
- const checkSubmit = (force = false): boolean => {
510
- if (stepPosition.value === 1 && !force) {
511
- nameFormSubmit.value++
512
- return false
513
- }
514
- if (props.project === 'sphere' && stepPosition.value === 2 && !force) {
515
- computeResourceSubmit.value++
516
- return false
517
- }
518
- if (
519
- (props.project === 'sphere'
520
- ? stepPosition.value === 3
521
- : stepPosition.value === 2) &&
522
- !force
523
- ) {
524
- storageSubmit.value++
525
- return false
526
- }
527
- if (
528
- (props.project === 'sphere'
529
- ? stepPosition.value === 6
530
- : stepPosition.value === 5) &&
531
- !force
532
- ) {
533
- customizeHardwareSubmit.value++
534
- return false
535
- }
536
- return true
537
- }
538
- const checkSubmitByManual = (step: number): boolean => {
539
- if (stepPosition.value === 1) {
540
- nameFormSubmit.value++
541
- return false
542
- }
543
- if (
544
- props.project === 'sphere'
545
- ? stepPosition.value === 3
546
- : stepPosition.value === 2
547
- ) {
548
- storageSubmit.value++
549
- return false
550
- }
551
- if (props.project === 'sphere' ? step === 8 : step === 7) {
552
- customizeHardwareSubmit.value++
553
- return false
554
- }
555
- return true
556
- }
557
- const onBack = (): void => {
558
- stepPosition.value--
559
- }
560
- let cashStep = -1
561
- const onChangeStep = (key: number): void => {
562
- const isValid = checkSubmitByManual(key)
563
- if (!isValid) {
564
- cashStep = key
565
- return
566
- }
567
-
568
- stepPosition.value = key
569
- }
570
-
571
- const compatibility = ref<UI_I_OptionItem[]>(capabilities.compatibility)
572
- const guestOsFamilies = ref<UI_I_OptionItem[]>(capabilities.guestOsFamilies)
573
- const guestOsVersions = ref<UI_I_ArbitraryObject<UI_I_OptionItem[]>>(
574
- capabilities.guestOsVersions
575
- )
576
- const machineTypes = ref<UI_I_OptionItem[]>(capabilities.machineTypes)
577
- const cpuModels = ref<UI_I_OptionItem[]>(capabilities.cpuModels)
578
- const maxCpus = ref<number>(capabilities.maxCpus)
579
- const maxMemory = ref<number>(capabilities.maxMemory)
580
-
734
+ //
735
+ // const selectedNavItem = ref<UI_T_SelectedNavItem>(0)
736
+ //
737
+ const nameFormSubmit = ref<null | Function>(null)
738
+ // const computeResourceSubmit = ref<number>(0)
739
+ const storageSubmit = ref<null | Function>(null)
740
+ // const customizeHardwareSubmit = ref<number>(0)
741
+ // const onNext = (force = false): void => {
742
+ // const isValid = checkSubmit(force)
743
+ // if (!isValid) {
744
+ // return
745
+ // }
746
+ //
747
+ // const isDisabled = stepItems.value[cashStep]?.disabled
748
+ // if (cashStep !== -1 && !isDisabled) {
749
+ // stepPosition.value = cashStep
750
+ // cashStep = -1
751
+ // return
752
+ // }
753
+ //
754
+ // stepItems.value[stepPosition.value].complete = true
755
+ // stepItems.value[stepPosition.value + 1].disabled = false
756
+ // stepPosition.value++
757
+ // }
758
+ // const checkLocalChangeAndChangeStepStatus = (): void => {
759
+ // stepItems.value = stepItems.value.map((step, index) => {
760
+ // if (index > stepPosition.value) {
761
+ // step.complete = false
762
+ // step.disabled = index > stepPosition.value + 1
763
+ // }
764
+ //
765
+ // return step
766
+ // })
767
+ // }
768
+ //
769
+ // const checkSubmit = (force = false): boolean => {
770
+ // if (stepPosition.value === 1 && !force) {
771
+ // nameFormSubmit.value++
772
+ // return false
773
+ // }
774
+ // if (props.project === 'sphere' && stepPosition.value === 2 && !force) {
775
+ // computeResourceSubmit.value++
776
+ // return false
777
+ // }
778
+ // if (
779
+ // (props.project === 'sphere'
780
+ // ? stepPosition.value === 3
781
+ // : stepPosition.value === 2) &&
782
+ // !force
783
+ // ) {
784
+ // storageSubmit.value++
785
+ // return false
786
+ // }
787
+ // if (
788
+ // (props.project === 'sphere'
789
+ // ? stepPosition.value === 6
790
+ // : stepPosition.value === 5) &&
791
+ // !force
792
+ // ) {
793
+ // customizeHardwareSubmit.value++
794
+ // return false
795
+ // }
796
+ // return true
797
+ // }
798
+ // const checkSubmitByManual = (step: number): boolean => {
799
+ // if (stepPosition.value === 1) {
800
+ // nameFormSubmit.value++
801
+ // return false
802
+ // }
803
+ // if (
804
+ // props.project === 'sphere'
805
+ // ? stepPosition.value === 3
806
+ // : stepPosition.value === 2
807
+ // ) {
808
+ // storageSubmit.value++
809
+ // return false
810
+ // }
811
+ // if (props.project === 'sphere' ? step === 8 : step === 7) {
812
+ // customizeHardwareSubmit.value++
813
+ // return false
814
+ // }
815
+ // return true
816
+ // }
817
+ // const onBack = (): void => {
818
+ // stepPosition.value--
819
+ // }
820
+ // let cashStep = -1
821
+ // const onChangeStep = (key: number): void => {
822
+ // const isValid = checkSubmitByManual(key)
823
+ // if (!isValid) {
824
+ // cashStep = key
825
+ // return
826
+ // }
827
+ //
828
+ // stepPosition.value = key
829
+ // }
830
+ //
831
+ // const compatibility = ref<UI_I_OptionItem[]>(capabilities.compatibility)
832
+ // const guestOsFamilies = ref<UI_I_OptionItem[]>(capabilities.guestOsFamilies)
833
+ // const guestOsVersions = ref<UI_I_ArbitraryObject<UI_I_OptionItem[]>>(
834
+ // capabilities.guestOsVersions
835
+ // )
836
+ // const machineTypes = ref<UI_I_OptionItem[]>(capabilities.machineTypes)
837
+ // const cpuModels = ref<UI_I_OptionItem[]>(capabilities.cpuModels)
838
+ // const maxCpus = ref<number>(capabilities.maxCpus)
839
+ // const maxMemory = ref<number>(capabilities.maxMemory)
840
+ //
581
841
  const onHideModal = (): void => {
582
842
  emits('hide')
583
843
  }