bfg-common 1.5.152 → 1.5.154

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 (150) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  4. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  5. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  6. package/components/atoms/TheIcon3.vue +50 -50
  7. package/components/atoms/perPage/PerPage.vue +58 -58
  8. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  9. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  10. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  11. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  12. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  13. package/components/common/browse/lib/models/interfaces.ts +5 -5
  14. package/components/common/context/lib/models/interfaces.ts +31 -31
  15. package/components/common/context/recursion/RecursionNew.vue +238 -238
  16. package/components/common/diagramMain/DiagramMain.vue +897 -897
  17. package/components/common/diagramMain/Header.vue +214 -214
  18. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  19. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  20. package/components/common/diagramMain/lib/models/types.ts +21 -21
  21. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  22. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  23. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  24. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  25. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  26. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  27. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  28. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +205 -205
  29. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  30. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  31. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  32. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  33. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  34. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  35. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  36. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  37. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  38. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  39. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  40. package/components/common/diagramMain/port/Ports.vue +47 -47
  41. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  42. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  43. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  44. package/components/common/pages/home/headline/Headline.vue +45 -45
  45. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  46. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  47. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  48. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  49. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  50. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  51. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  52. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  53. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  54. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  55. package/components/common/pages/packages/Packages.vue +208 -208
  56. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  57. package/components/common/readyToComplete/New.vue +66 -66
  58. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  59. package/components/common/recursionTree/RecursionTree.vue +223 -223
  60. package/components/common/select/button/ButtonDropdown.vue +108 -108
  61. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  62. package/components/common/vm/actions/add/Add.vue +785 -785
  63. package/components/common/vm/actions/add/New.vue +556 -556
  64. package/components/common/vm/actions/add/Old.vue +371 -371
  65. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  66. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  67. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  68. package/components/common/vm/actions/add/lib/config/steps.ts +263 -263
  69. package/components/common/vm/actions/clone/Clone.vue +801 -801
  70. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  71. package/components/common/vm/actions/clone/toTemplate/ToTemplate.vue +626 -626
  72. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +99 -99
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +70 -70
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +373 -373
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +149 -149
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationNew.vue +74 -74
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +83 -83
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  100. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  102. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  103. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  104. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  105. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  106. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  107. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  108. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  109. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  110. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  111. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  112. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  113. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  114. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  115. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +39 -39
  116. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  117. package/components/common/vm/actions/common/lib/utils/capabilities.ts +52 -52
  118. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  119. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +134 -134
  120. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +44 -44
  121. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  122. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  123. package/components/common/vm/actions/common/select/createType/New.vue +84 -84
  124. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  125. package/components/common/vm/actions/common/select/name/Name.vue +167 -167
  126. package/components/common/vm/actions/common/select/os/New.vue +122 -122
  127. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  128. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  129. package/components/common/vm/actions/common/select/storage/Storage.vue +131 -131
  130. package/components/common/vm/actions/common/select/storage/new/lib/config/table.ts +326 -326
  131. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  132. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  133. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  134. package/components/common/wizards/network/add/steps/SelectConnectionType.vue +104 -105
  135. package/components/common/wizards/vm/migrate/Migrate.vue +343 -343
  136. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  137. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  138. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  139. package/components/common/wizards/vm/migrate/select/computeResource/tableView/TableView.vue +137 -137
  140. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  141. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  142. package/composables/productNameLocal.ts +30 -30
  143. package/composables/useAppVersion.ts +21 -21
  144. package/package.json +1 -1
  145. package/plugins/date.ts +233 -233
  146. package/public/spice-console/lib/images/bitmap.js +203 -203
  147. package/public/spice-console/network/spicechannel.js +383 -383
  148. package/store/main/mutations.ts +7 -7
  149. package/store/main/state.ts +7 -7
  150. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,84 +1,84 @@
1
- <template>
2
- <div class="select-create-type py-3">
3
- <div
4
- v-for="item in props.items"
5
- v-development="item.disabled"
6
- :key="item.value"
7
- :class="[
8
- 'select-create-type-block',
9
- { selected: item.value === model, disabled: item.disabled },
10
- ]"
11
- @click="model = item.value"
12
- >
13
- <ui-radio
14
- v-model="model"
15
- :label="item.text"
16
- :value="item.value"
17
- :test-id="item.testId"
18
- :disabled="item.disabled"
19
- size="md"
20
- />
21
-
22
- <p class="description">
23
- {{ item.description }}
24
- </p>
25
- </div>
26
- </div>
27
- </template>
28
-
29
- <script setup lang="ts">
30
- import type { UI_I_VmCreateTypeOption } from '~/components/common/vm/actions/common/select/createType/lib/models/interfaces'
31
-
32
- const model = defineModel<string>()
33
-
34
- const props = defineProps<{
35
- items: UI_I_VmCreateTypeOption[]
36
- }>()
37
- </script>
38
-
39
- <style>
40
- :root {
41
- --select-create-type-block-bg-color: #ffffff;
42
- --select-create-type-block-border-color: #e9ebed;
43
- --select-create-type-block-border-hover-color: #d3d6da;
44
- --select-create-type-block-selected-bg-color: #f0f8fd;
45
- --select-create-type-block-selected-border-color: #008fd6;
46
- }
47
- :root.dark-theme {
48
- --select-create-type-block-bg-color: transparent;
49
- --select-create-type-block-border-color: #e9ebed1f;
50
- --select-create-type-block-border-hover-color: #e9ebed3d;
51
- --select-create-type-block-selected-bg-color: #2ba2de14;
52
- --select-create-type-block-selected-border-color: #2ba2de;
53
- }
54
- </style>
55
- <style scoped lang="scss">
56
- .select-create-type-block {
57
- background-color: var(--select-create-type-block-bg-color);
58
- border: 1px solid var(--select-create-type-block-border-color);
59
- padding: 12px;
60
- border-radius: 8px;
61
-
62
- &:not(.selected):not(.disabled) {
63
- cursor: pointer;
64
- &:hover {
65
- border-color: var(--select-create-type-block-border-hover-color);
66
- }
67
- }
68
-
69
- &.selected {
70
- background-color: var(--select-create-type-block-selected-bg-color);
71
- border: 1.5px solid var(--select-create-type-block-selected-border-color);
72
- }
73
-
74
- &:not(:last-child) {
75
- margin-bottom: 12px;
76
- }
77
-
78
- .description {
79
- font-size: 13px;
80
- color: #9da6ad;
81
- margin: 8px 0 0 28px;
82
- }
83
- }
84
- </style>
1
+ <template>
2
+ <div class="select-create-type py-3">
3
+ <div
4
+ v-for="item in props.items"
5
+ v-development="item.disabled"
6
+ :key="item.value"
7
+ :class="[
8
+ 'select-create-type-block',
9
+ { selected: item.value === model, disabled: item.disabled },
10
+ ]"
11
+ @click="model = item.value"
12
+ >
13
+ <ui-radio
14
+ v-model="model"
15
+ :label="item.text"
16
+ :value="item.value"
17
+ :test-id="item.testId"
18
+ :disabled="item.disabled"
19
+ size="md"
20
+ />
21
+
22
+ <p class="description">
23
+ {{ item.description }}
24
+ </p>
25
+ </div>
26
+ </div>
27
+ </template>
28
+
29
+ <script setup lang="ts">
30
+ import type { UI_I_VmCreateTypeOption } from '~/components/common/vm/actions/common/select/createType/lib/models/interfaces'
31
+
32
+ const model = defineModel<string>()
33
+
34
+ const props = defineProps<{
35
+ items: UI_I_VmCreateTypeOption[]
36
+ }>()
37
+ </script>
38
+
39
+ <style>
40
+ :root {
41
+ --select-create-type-block-bg-color: #ffffff;
42
+ --select-create-type-block-border-color: #e9ebed;
43
+ --select-create-type-block-border-hover-color: #d3d6da;
44
+ --select-create-type-block-selected-bg-color: #f0f8fd;
45
+ --select-create-type-block-selected-border-color: #008fd6;
46
+ }
47
+ :root.dark-theme {
48
+ --select-create-type-block-bg-color: transparent;
49
+ --select-create-type-block-border-color: #e9ebed1f;
50
+ --select-create-type-block-border-hover-color: #e9ebed3d;
51
+ --select-create-type-block-selected-bg-color: #2ba2de14;
52
+ --select-create-type-block-selected-border-color: #2ba2de;
53
+ }
54
+ </style>
55
+ <style scoped lang="scss">
56
+ .select-create-type-block {
57
+ background-color: var(--select-create-type-block-bg-color);
58
+ border: 1px solid var(--select-create-type-block-border-color);
59
+ padding: 12px;
60
+ border-radius: 8px;
61
+
62
+ &:not(.selected):not(.disabled) {
63
+ cursor: pointer;
64
+ &:hover {
65
+ border-color: var(--select-create-type-block-border-hover-color);
66
+ }
67
+ }
68
+
69
+ &.selected {
70
+ background-color: var(--select-create-type-block-selected-bg-color);
71
+ border: 1.5px solid var(--select-create-type-block-selected-border-color);
72
+ }
73
+
74
+ &:not(:last-child) {
75
+ margin-bottom: 12px;
76
+ }
77
+
78
+ .description {
79
+ font-size: 13px;
80
+ color: #9da6ad;
81
+ margin: 8px 0 0 28px;
82
+ }
83
+ }
84
+ </style>
@@ -1,5 +1,5 @@
1
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
2
-
3
- export interface UI_I_VmCreateTypeOption extends UI_I_OptionItem {
4
- description: string
5
- }
1
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
2
+
3
+ export interface UI_I_VmCreateTypeOption extends UI_I_OptionItem {
4
+ description: string
5
+ }
@@ -1,167 +1,167 @@
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 = defineProps<{
31
- nameFormSubmit: null | Function
32
- show: boolean
33
- project: UI_T_Project
34
- dataCenter?: UI_I_TreeNode // для сферы
35
- }>()
36
- const emits = defineEmits<{
37
- (event: 'submit', value: [string, UI_I_TreeNode | null]): void
38
- (event: 'loading', value: boolean): void
39
- (
40
- event: 'check-name',
41
- value: [[string, UI_I_TreeNode | null], (error: any) => void]
42
- ): void
43
- }>()
44
-
45
- const { $store }: any = useNuxtApp()
46
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
47
-
48
- const localization = computed<UI_I_Localization>(() => useLocal())
49
-
50
- const vmName = ref<string>('')
51
-
52
- const selectedNode = ref<UI_I_TreeNode | null>(null)
53
- const onSelectNode = (node: UI_I_TreeNode): void => {
54
- selectedNode.value = node
55
- }
56
-
57
- watch(
58
- () => props.nameFormSubmit,
59
- (newValue) => {
60
- newValue && submit(newValue)
61
- }
62
- )
63
-
64
- const isParentDatacenter = (node: UI_I_TreeNode | null): boolean => {
65
- if (!node) return false
66
-
67
- if (node.parent?.type === 'datacenter') return true
68
- if (node.parent?.type === 'folder') return isParentDatacenter(node.parent)
69
- return false
70
- }
71
- const submit = async (cb: Function): Promise<void> => {
72
- const name = vmName.value
73
-
74
- if (name !== '') {
75
- const isNameValid = await checkNameIsValid(name)
76
- if (!isNameValid) {
77
- cb(false)
78
- return
79
- }
80
- }
81
-
82
- if (props.project === 'sphere') {
83
- // const isDatacenterFolder = isParentDatacenter(selectedNode.value)
84
-
85
- if (
86
- // selectedNode.value?.type !== 'datacenter' &&
87
- // selectedNode.value?.type === 'folder' &&
88
- // !isDatacenterFolder
89
- // TODO рефакторинг, здесь сейчас проверяем является ли выбранный элемент датацентром или папкой(вм)
90
- ![3, 7].includes(selectedNode.value?.kind)
91
- ) {
92
- showValidationErrors([
93
- localization.value.common.enterValidLocationVirtualMachine,
94
- ])
95
- cb(false)
96
- return
97
- }
98
- }
99
-
100
- onRemoveValidationErrors()
101
- emits('submit', [name, selectedNode.value])
102
- cb(true)
103
- }
104
- const checkNameIsValid = async (name: string): Promise<boolean> => {
105
- emits('loading', true)
106
-
107
- return new Promise((resolve) => {
108
- emits('check-name', [
109
- [name, selectedNode.value],
110
- (error) => {
111
- emits('loading', false)
112
-
113
- const status = error?.statusCode || 200
114
- switch (status) {
115
- case 405: // Invalid kind
116
- showValidationErrors([
117
- localization.value.common.kindValidationDescription,
118
- ])
119
- resolve(false)
120
- break
121
- case 406: // Invalid name
122
- showValidationErrors([
123
- localization.value.common.vmNameValidationDescription,
124
- ])
125
- resolve(false)
126
- break
127
- case 409: // Name exist
128
- showValidationErrors([
129
- localization.value.common.vmNameExistInSelectedLocation,
130
- ])
131
- resolve(false)
132
- break
133
- }
134
-
135
- resolve(true)
136
- },
137
- ])
138
- })
139
- }
140
-
141
- const errors = ref<string[]>([])
142
- const showValidationErrors = (data: string[]): void => {
143
- errors.value = data
144
- }
145
- const onRemoveValidationErrors = (): void => {
146
- errors.value = []
147
- }
148
-
149
- watch(
150
- () => props.show,
151
- (newValue) => {
152
- if (!newValue) return
153
-
154
- const input = document.getElementById('virtual-machine-name')
155
- if (!input) return
156
-
157
- setTimeout(() => {
158
- input.focus()
159
- }, 0)
160
- }
161
- )
162
-
163
- const isShowHelp = ref<boolean>(false)
164
- </script>
165
-
166
- <style scoped lang="scss">
167
- </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
+ :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 = defineProps<{
31
+ nameFormSubmit: null | Function
32
+ show: boolean
33
+ project: UI_T_Project
34
+ dataCenter?: UI_I_TreeNode // для сферы
35
+ }>()
36
+ const emits = defineEmits<{
37
+ (event: 'submit', value: [string, UI_I_TreeNode | null]): void
38
+ (event: 'loading', value: boolean): void
39
+ (
40
+ event: 'check-name',
41
+ value: [[string, UI_I_TreeNode | null], (error: any) => void]
42
+ ): void
43
+ }>()
44
+
45
+ const { $store }: any = useNuxtApp()
46
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
47
+
48
+ const localization = computed<UI_I_Localization>(() => useLocal())
49
+
50
+ const vmName = ref<string>('')
51
+
52
+ const selectedNode = ref<UI_I_TreeNode | null>(null)
53
+ const onSelectNode = (node: UI_I_TreeNode): void => {
54
+ selectedNode.value = node
55
+ }
56
+
57
+ watch(
58
+ () => props.nameFormSubmit,
59
+ (newValue) => {
60
+ newValue && submit(newValue)
61
+ }
62
+ )
63
+
64
+ const isParentDatacenter = (node: UI_I_TreeNode | null): boolean => {
65
+ if (!node) return false
66
+
67
+ if (node.parent?.type === 'datacenter') return true
68
+ if (node.parent?.type === 'folder') return isParentDatacenter(node.parent)
69
+ return false
70
+ }
71
+ const submit = async (cb: Function): Promise<void> => {
72
+ const name = vmName.value
73
+
74
+ if (name !== '') {
75
+ const isNameValid = await checkNameIsValid(name)
76
+ if (!isNameValid) {
77
+ cb(false)
78
+ return
79
+ }
80
+ }
81
+
82
+ if (props.project === 'sphere') {
83
+ // const isDatacenterFolder = isParentDatacenter(selectedNode.value)
84
+
85
+ if (
86
+ // selectedNode.value?.type !== 'datacenter' &&
87
+ // selectedNode.value?.type === 'folder' &&
88
+ // !isDatacenterFolder
89
+ // TODO рефакторинг, здесь сейчас проверяем является ли выбранный элемент датацентром или папкой(вм)
90
+ ![3, 7].includes(selectedNode.value?.kind)
91
+ ) {
92
+ showValidationErrors([
93
+ localization.value.common.enterValidLocationVirtualMachine,
94
+ ])
95
+ cb(false)
96
+ return
97
+ }
98
+ }
99
+
100
+ onRemoveValidationErrors()
101
+ emits('submit', [name, selectedNode.value])
102
+ cb(true)
103
+ }
104
+ const checkNameIsValid = async (name: string): Promise<boolean> => {
105
+ emits('loading', true)
106
+
107
+ return new Promise((resolve) => {
108
+ emits('check-name', [
109
+ [name, selectedNode.value],
110
+ (error) => {
111
+ emits('loading', false)
112
+
113
+ const status = error?.statusCode || 200
114
+ switch (status) {
115
+ case 405: // Invalid kind
116
+ showValidationErrors([
117
+ localization.value.common.kindValidationDescription,
118
+ ])
119
+ resolve(false)
120
+ break
121
+ case 406: // Invalid name
122
+ showValidationErrors([
123
+ localization.value.common.vmNameValidationDescription,
124
+ ])
125
+ resolve(false)
126
+ break
127
+ case 409: // Name exist
128
+ showValidationErrors([
129
+ localization.value.common.vmNameExistInSelectedLocation,
130
+ ])
131
+ resolve(false)
132
+ break
133
+ }
134
+
135
+ resolve(true)
136
+ },
137
+ ])
138
+ })
139
+ }
140
+
141
+ const errors = ref<string[]>([])
142
+ const showValidationErrors = (data: string[]): void => {
143
+ errors.value = data
144
+ }
145
+ const onRemoveValidationErrors = (): void => {
146
+ errors.value = []
147
+ }
148
+
149
+ watch(
150
+ () => props.show,
151
+ (newValue) => {
152
+ if (!newValue) return
153
+
154
+ const input = document.getElementById('virtual-machine-name')
155
+ if (!input) return
156
+
157
+ setTimeout(() => {
158
+ input.focus()
159
+ }, 0)
160
+ }
161
+ )
162
+
163
+ const isShowHelp = ref<boolean>(false)
164
+ </script>
165
+
166
+ <style scoped lang="scss">
167
+ </style>