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,197 +1,200 @@
1
- <template>
2
- <common-vm-actions-common-select-name-new
3
- v-if="isNewView"
4
- v-model:vm-name="vmName"
5
- v-model:is-show-help="isShowHelp"
6
- :project="props.project"
7
- :errors="errors"
8
- :data-center="props.dataCenter"
9
- @remove-validation-errors="onRemoveValidationErrors"
10
- @select-node="onSelectNode"
11
- />
12
- <common-vm-actions-common-select-name-old
13
- v-else
14
- v-model:vm-name="vmName"
15
- v-model:is-show-help="isShowHelp"
16
- :project="props.project"
17
- :errors="errors"
18
- :data-center="props.dataCenter"
19
- @remove-validation-errors="onRemoveValidationErrors"
20
- @select-node="onSelectNode"
21
- />
22
- </template>
23
-
24
- <script setup lang="ts">
25
- // import { API_UI_I_Error } from '~/lib/models/store/interfaces'
26
- import type { UI_I_Localization } from '~/lib/models/interfaces'
27
- import type { UI_T_Project } from '~/lib/models/types'
28
- import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
29
-
30
- const props = withDefaults(
31
- defineProps<{
32
- nameFormSubmit: null | Function
33
- show: boolean
34
- project: UI_T_Project
35
- validateEmptyName?: boolean
36
- dataCenter?: UI_I_TreeNode // для сферы
37
- existName?: string
38
- }>(),
39
- {
40
- validateEmptyName: false,
41
- dataCenter: undefined,
42
- existName: undefined,
43
- }
44
- )
45
- const emits = defineEmits<{
46
- (event: 'submit', value: [string, UI_I_TreeNode | null]): void
47
- (event: 'loading', value: boolean): void
48
- (
49
- event: 'check-name',
50
- value: [[string, UI_I_TreeNode | null], (error: any) => void]
51
- ): void
52
- (event: 'has-errors', value: boolean): void
53
- }>()
54
-
55
- const { $store }: any = useNuxtApp()
56
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
57
-
58
- const localization = computed<UI_I_Localization>(() => useLocal())
59
-
60
- // TODO 100
61
- const vmName = ref<string>(props.existName || '')
62
-
63
- const selectedNode = ref<UI_I_TreeNode | null>(null)
64
- const onSelectNode = (node: UI_I_TreeNode): void => {
65
- selectedNode.value = node
66
- }
67
-
68
- watch(
69
- () => props.nameFormSubmit,
70
- (newValue) => {
71
- newValue && submit(newValue)
72
- }
73
- )
74
-
75
- const isParentDatacenter = (node: UI_I_TreeNode | null): boolean => {
76
- if (!node) return false
77
-
78
- if (node.parent?.type === 'datacenter') return true
79
- if (node.parent?.type === 'folder') return isParentDatacenter(node.parent)
80
- return false
81
- }
82
- const submit = async (cb: Function): Promise<void> => {
83
- const name = vmName.value
84
-
85
- if (props.validateEmptyName && name === '') {
86
- showValidationErrors([
87
- localization.value.common.emptyNameValidationDescription,
88
- ])
89
- cb(false)
90
- return
91
- }
92
- if (name !== '') {
93
- const isNameValid = await checkNameIsValid(name)
94
- if (!isNameValid) {
95
- cb(false)
96
- return
97
- }
98
- }
99
-
100
- if (props.project === 'sphere') {
101
- // const isDatacenterFolder = isParentDatacenter(selectedNode.value)
102
-
103
- if (
104
- // selectedNode.value?.type !== 'datacenter' &&
105
- // selectedNode.value?.type === 'folder' &&
106
- // !isDatacenterFolder
107
- // TODO рефакторинг, здесь сейчас проверяем является ли выбранный элемент датацентром или папкой(вм)
108
- ![3, 7].includes(selectedNode.value?.kind)
109
- ) {
110
- showValidationErrors([
111
- localization.value.common.enterValidLocationVirtualMachine,
112
- ])
113
- cb(false)
114
- return
115
- }
116
- }
117
-
118
- onRemoveValidationErrors()
119
- emits('submit', [name, selectedNode.value])
120
- cb(true)
121
- }
122
- const checkNameIsValid = async (name: string): Promise<boolean> => {
123
- emits('loading', true)
124
-
125
- return new Promise((resolve) => {
126
- emits('check-name', [
127
- [name, selectedNode.value],
128
- (error) => {
129
- emits('loading', false)
130
-
131
- const status = error?.statusCode || 200
132
- switch (status) {
133
- case 400: // Empty name
134
- showValidationErrors([
135
- localization.value.common.emptyNameValidationDescription,
136
- ])
137
- resolve(false)
138
- break
139
- case 405: // Invalid kind
140
- showValidationErrors([
141
- localization.value.common.kindValidationDescription,
142
- ])
143
- resolve(false)
144
- break
145
- case 406: // Invalid name
146
- showValidationErrors([
147
- localization.value.common.vmNameValidationDescription,
148
- ])
149
- resolve(false)
150
- break
151
- case 409: // Name exist
152
- showValidationErrors([
153
- localization.value.common.vmNameExistInSelectedLocation,
154
- ])
155
- resolve(false)
156
- break
157
- }
158
-
159
- resolve(true)
160
- },
161
- ])
162
- })
163
- }
164
-
165
- const errors = ref<string[]>([])
166
- const showValidationErrors = (data: string[]): void => {
167
- errors.value = data
168
- }
169
- const onRemoveValidationErrors = (): void => {
170
- errors.value = []
171
- }
172
- watch(
173
- errors,
174
- (newValue) => {
175
- emits('has-errors', !newValue.length)
176
- },
177
- { immediate: true, deep: true }
178
- )
179
-
180
- watch(
181
- () => props.show,
182
- (newValue) => {
183
- if (!newValue) return
184
-
185
- const input = document.getElementById('virtual-machine-name')
186
- if (!input) return
187
-
188
- setTimeout(() => {
189
- input.focus()
190
- }, 0)
191
- }
192
- )
193
-
194
- const isShowHelp = ref<boolean>(false)
195
- </script>
196
-
197
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <common-vm-actions-common-select-name-new
3
+ v-if="isNewView"
4
+ v-model:vm-name="vmName"
5
+ v-model:is-show-help="isShowHelp"
6
+ :project="props.project"
7
+ :errors="errors"
8
+ :data-center="props.dataCenter"
9
+ @remove-validation-errors="onRemoveValidationErrors"
10
+ @select-node="onSelectNode"
11
+ />
12
+ <common-vm-actions-common-select-name-old
13
+ v-else
14
+ v-model:vm-name="vmName"
15
+ v-model:is-show-help="isShowHelp"
16
+ :project="props.project"
17
+ :is-vmt="props.isVmt"
18
+ :errors="errors"
19
+ :data-center="props.dataCenter"
20
+ @remove-validation-errors="onRemoveValidationErrors"
21
+ @select-node="onSelectNode"
22
+ />
23
+ </template>
24
+
25
+ <script setup lang="ts">
26
+ // import { API_UI_I_Error } from '~/lib/models/store/interfaces'
27
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
28
+ import type { UI_T_Project } from '~/lib/models/types'
29
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
30
+
31
+ const props = withDefaults(
32
+ defineProps<{
33
+ nameFormSubmit: null | Function
34
+ show: boolean
35
+ project: UI_T_Project
36
+ isVmt?: boolean
37
+ validateEmptyName?: boolean
38
+ dataCenter?: UI_I_TreeNode // для сферы
39
+ existName?: string
40
+ }>(),
41
+ {
42
+ validateEmptyName: false,
43
+ isVmt: false,
44
+ dataCenter: undefined,
45
+ existName: undefined,
46
+ }
47
+ )
48
+ const emits = defineEmits<{
49
+ (event: 'submit', value: [string, UI_I_TreeNode | null]): void
50
+ (event: 'loading', value: boolean): void
51
+ (
52
+ event: 'check-name',
53
+ value: [[string, UI_I_TreeNode | null], (error: any) => void]
54
+ ): void
55
+ (event: 'has-errors', value: boolean): void
56
+ }>()
57
+
58
+ const { $store }: any = useNuxtApp()
59
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
60
+
61
+ const localization = computed<UI_I_Localization>(() => useLocal())
62
+
63
+ // TODO 100
64
+ const vmName = ref<string>(props.existName || '')
65
+
66
+ const selectedNode = ref<UI_I_TreeNode | null>(null)
67
+ const onSelectNode = (node: UI_I_TreeNode): void => {
68
+ selectedNode.value = node
69
+ }
70
+
71
+ watch(
72
+ () => props.nameFormSubmit,
73
+ (newValue) => {
74
+ newValue && submit(newValue)
75
+ }
76
+ )
77
+
78
+ const isParentDatacenter = (node: UI_I_TreeNode | null): boolean => {
79
+ if (!node) return false
80
+
81
+ if (node.parent?.type === 'datacenter') return true
82
+ if (node.parent?.type === 'folder') return isParentDatacenter(node.parent)
83
+ return false
84
+ }
85
+ const submit = async (cb: Function): Promise<void> => {
86
+ const name = vmName.value
87
+
88
+ if (props.validateEmptyName && name === '') {
89
+ showValidationErrors([
90
+ localization.value.common.emptyNameValidationDescription,
91
+ ])
92
+ cb(false)
93
+ return
94
+ }
95
+ if (name !== '') {
96
+ const isNameValid = await checkNameIsValid(name)
97
+ if (!isNameValid) {
98
+ cb(false)
99
+ return
100
+ }
101
+ }
102
+
103
+ if (props.project === 'sphere') {
104
+ // const isDatacenterFolder = isParentDatacenter(selectedNode.value)
105
+
106
+ if (
107
+ // selectedNode.value?.type !== 'datacenter' &&
108
+ // selectedNode.value?.type === 'folder' &&
109
+ // !isDatacenterFolder
110
+ // TODO рефакторинг, здесь сейчас проверяем является ли выбранный элемент датацентром или папкой(вм)
111
+ ![3, 7].includes(selectedNode.value?.kind)
112
+ ) {
113
+ showValidationErrors([
114
+ localization.value.common.enterValidLocationVirtualMachine,
115
+ ])
116
+ cb(false)
117
+ return
118
+ }
119
+ }
120
+
121
+ onRemoveValidationErrors()
122
+ emits('submit', [name, selectedNode.value])
123
+ cb(true)
124
+ }
125
+ const checkNameIsValid = async (name: string): Promise<boolean> => {
126
+ emits('loading', true)
127
+
128
+ return new Promise((resolve) => {
129
+ emits('check-name', [
130
+ [name, selectedNode.value],
131
+ (error) => {
132
+ emits('loading', false)
133
+
134
+ const status = error?.statusCode || 200
135
+ switch (status) {
136
+ case 400: // Empty name
137
+ showValidationErrors([
138
+ localization.value.common.emptyNameValidationDescription,
139
+ ])
140
+ resolve(false)
141
+ break
142
+ case 405: // Invalid kind
143
+ showValidationErrors([
144
+ localization.value.common.kindValidationDescription,
145
+ ])
146
+ resolve(false)
147
+ break
148
+ case 406: // Invalid name
149
+ showValidationErrors([
150
+ localization.value.common.vmNameValidationDescription,
151
+ ])
152
+ resolve(false)
153
+ break
154
+ case 409: // Name exist
155
+ showValidationErrors([
156
+ localization.value.common.vmNameExistInSelectedLocation,
157
+ ])
158
+ resolve(false)
159
+ break
160
+ }
161
+
162
+ resolve(true)
163
+ },
164
+ ])
165
+ })
166
+ }
167
+
168
+ const errors = ref<string[]>([])
169
+ const showValidationErrors = (data: string[]): void => {
170
+ errors.value = data
171
+ }
172
+ const onRemoveValidationErrors = (): void => {
173
+ errors.value = []
174
+ }
175
+ watch(
176
+ errors,
177
+ (newValue) => {
178
+ emits('has-errors', !newValue.length)
179
+ },
180
+ { immediate: true, deep: true }
181
+ )
182
+
183
+ watch(
184
+ () => props.show,
185
+ (newValue) => {
186
+ if (!newValue) return
187
+
188
+ const input = document.getElementById('virtual-machine-name')
189
+ if (!input) return
190
+
191
+ setTimeout(() => {
192
+ input.focus()
193
+ }, 0)
194
+ }
195
+ )
196
+
197
+ const isShowHelp = ref<boolean>(false)
198
+ </script>
199
+
200
+ <style scoped lang="scss"></style>
@@ -42,7 +42,7 @@
42
42
 
43
43
  <template v-if="props.project === 'sphere'">
44
44
  <p class="new-vm-name-and-folder-instructions mt-1">
45
- {{ localization.common.selectLocationVirtualMachine }}
45
+ {{ locationDescription }}
46
46
  </p>
47
47
  <div class="tree-view-wrap">
48
48
  <common-vm-actions-add-folder-tree-view
@@ -67,6 +67,7 @@ const props = withDefaults(
67
67
  defineProps<{
68
68
  project: UI_T_Project
69
69
  errors: string[]
70
+ isVmt: boolean
70
71
  dataCenter?: UI_I_TreeNode // для сферы
71
72
  }>(),
72
73
  {
@@ -79,6 +80,12 @@ const emits = defineEmits<{
79
80
  }>()
80
81
 
81
82
  const localization = computed<UI_I_Localization>(() => useLocal())
83
+
84
+ const locationDescription = computed<string>(() =>
85
+ props.isVmt
86
+ ? localization.value.vmt.selectLocationTemplate
87
+ : localization.value.common.selectLocationVirtualMachine
88
+ )
82
89
  </script>
83
90
 
84
91
  <style scoped lang="scss">