bfg-common 1.5.421 → 1.5.423

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 (157) 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 +7 -3
  7. package/assets/localization/local_en.json +12 -8
  8. package/assets/localization/local_hy.json +8 -4
  9. package/assets/localization/local_kk.json +7 -3
  10. package/assets/localization/local_ru.json +12 -8
  11. package/assets/localization/local_zh.json +7 -3
  12. package/assets/scss/common/theme.scss +0 -214
  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/lib/config/settingsTable.ts +94 -94
  17. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  18. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  19. package/components/common/context/lib/models/interfaces.ts +33 -33
  20. package/components/common/diagramMain/modals/lib/config/networkModal.ts +398 -398
  21. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  22. package/components/common/pages/backups/Backups.vue +102 -102
  23. package/components/common/pages/backups/DetailView.vue +52 -52
  24. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  25. package/components/common/pages/backups/modals/Modals.vue +231 -226
  26. package/components/common/pages/backups/modals/createBackup/CreateBackup.vue +376 -353
  27. package/components/common/pages/backups/modals/createBackup/configuration/Configuration.vue +29 -29
  28. package/components/common/pages/backups/modals/createBackup/configuration/backupWindow/BackupWindow.vue +26 -26
  29. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/MaxBandwidth.vue +66 -66
  30. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  31. package/components/common/pages/backups/modals/createBackup/configuration/strategy/Strategy.vue +35 -35
  32. package/components/common/pages/backups/modals/createBackup/datastores/Datastores.vue +59 -59
  33. package/components/common/pages/backups/modals/createBackup/datastores/tableView/TableView.vue +95 -95
  34. package/components/common/pages/backups/modals/createBackup/datastores/tableView/lib/config/table.ts +119 -119
  35. package/components/common/pages/backups/modals/createBackup/disks/Disks.vue +2 -2
  36. package/components/common/pages/backups/modals/createBackup/disks/tableView/TableView.vue +7 -4
  37. package/components/common/pages/backups/modals/createBackup/disks/tableView/lib/config/table.ts +117 -117
  38. package/components/common/pages/backups/modals/createBackup/general/General.vue +135 -48
  39. package/components/common/pages/backups/modals/createBackup/lib/config/steps.ts +117 -117
  40. package/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions.ts +12 -12
  41. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  42. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -185
  43. package/components/common/pages/backups/modals/restore/Restore.vue +417 -417
  44. package/components/common/pages/backups/modals/restore/disks/Disks.vue +27 -27
  45. package/components/common/pages/backups/modals/restore/disks/tableView/TableView.vue +102 -102
  46. package/components/common/pages/backups/modals/restore/disks/tableView/lib/config/table.ts +117 -117
  47. package/components/common/pages/backups/modals/restore/lib/config/steps.ts +108 -108
  48. package/components/common/pages/backups/modals/restore/name/Name.vue +160 -160
  49. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  50. package/components/common/pages/backups/modals/restore/networks/Networks.vue +67 -67
  51. package/components/common/pages/backups/modals/restore/networks/table/Table.vue +214 -214
  52. package/components/common/pages/backups/modals/restore/types/lib/config/typeOptions.ts +25 -25
  53. package/components/common/pages/backups/tools/Tools.vue +75 -75
  54. package/components/common/pages/backups/tools/lib/config/tabs.ts +36 -36
  55. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  56. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  57. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  58. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  59. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  60. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  61. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  62. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  63. package/components/common/select/radio/RadioGroup.vue +137 -137
  64. package/components/common/spiceConsole/Drawer.vue +381 -381
  65. package/components/common/spiceConsole/SpiceConsole.vue +127 -127
  66. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  67. package/components/common/split/horizontal/HorizontalNew.vue +22 -5
  68. package/components/common/split/horizontal/HorizontalOld.vue +8 -1
  69. package/components/common/split/vertical/VerticalNew.vue +13 -2
  70. package/components/common/summary/notification/NotificationNew.vue +20 -4
  71. package/components/common/titleBar/titleBarNew/notification/Notification.vue +31 -0
  72. package/components/common/tools/Actions.vue +207 -207
  73. package/components/common/tooltip/Help.vue +14 -1
  74. package/components/common/treeView/TreeView.vue +52 -52
  75. package/components/common/vm/actions/add/New.vue +10 -0
  76. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  77. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  78. package/components/common/vm/actions/clone/Clone.vue +11 -0
  79. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  80. package/components/common/vm/actions/clone/toTemplate/ToTemplate.vue +11 -0
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +26 -0
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -70
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +8 -0
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/TooltipNew.vue +2 -0
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +15 -0
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/file/FileNew.vue +8 -0
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +85 -85
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/maximumSize/MaximumSize.vue +23 -23
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/maximumSize/MaximumSizeNew.vue +8 -0
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  100. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  102. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  103. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  104. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  105. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/inputDevices/InputDevicesNew.vue +10 -0
  106. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  107. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  108. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  109. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  110. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  111. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapOld.vue +44 -44
  112. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  113. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  114. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  115. package/components/common/vm/actions/common/select/compatibility/New.vue +18 -0
  116. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  117. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +143 -143
  118. package/components/common/vm/actions/common/select/computeResource/New.vue +184 -168
  119. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +131 -131
  120. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  121. package/components/common/vm/actions/common/select/createType/New.vue +16 -0
  122. package/components/common/vm/actions/common/select/createType/Old.vue +9 -0
  123. package/components/common/vm/actions/common/select/createType/lib/config/items.ts +48 -48
  124. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  125. package/components/common/vm/actions/common/select/name/New.vue +20 -0
  126. package/components/common/vm/actions/common/select/os/New.vue +10 -0
  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/new/New.vue +32 -0
  130. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  131. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  132. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  133. package/components/common/vm/actions/common/select/template/treeView/New.vue +10 -0
  134. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  135. package/components/common/vmt/actions/add/Old.vue +10 -0
  136. package/components/common/vmt/actions/add/lib/models/interfaces.ts +23 -23
  137. package/components/common/wizards/datastore/add/steps/nameAndConfigure/_serversList/DeletePopover.vue +8 -0
  138. package/components/common/wizards/datastore/add/steps/nameAndDevice/table/new/New.vue +11 -0
  139. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  140. package/components/common/wizards/network/add/modals/SelectStandardSwitch.vue +17 -6
  141. package/components/common/wizards/network/add/modals/SelectSwitch.vue +17 -6
  142. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  143. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  144. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  145. package/components/common/wizards/vm/migrate/select/type/lib/config/typeOptions.ts +45 -45
  146. package/composables/productNameLocal.ts +30 -30
  147. package/composables/useAppVersion.ts +21 -21
  148. package/package.json +1 -1
  149. package/plugins/date.ts +233 -233
  150. package/plugins/panelStates.ts +70 -70
  151. package/plugins/text.ts +59 -59
  152. package/public/spice-console/lib/images/bitmap.js +203 -203
  153. package/public/spice-console/network/spicechannel.js +390 -390
  154. package/store/main/mutations.ts +7 -7
  155. package/store/main/state.ts +7 -7
  156. package/components/common/pages/backups/modals/createBackup/disks/tableView/lib/models/interfaces.ts +0 -4
  157. package/components/common/wizards/network/add/modals/lib/models/interfaces.ts +0 -21
@@ -1,168 +1,184 @@
1
- <template>
2
- <div class="select-compute-resource pb-4">
3
- <Teleport to="#compute-resource-alert-wrapper">
4
- <ui-alert
5
- v-show="props.errors.length"
6
- :messages="props.errors"
7
- status="alert-danger"
8
- test-id="computed-resource-alert"
9
- class="errors-alert"
10
- size="md"
11
- @hide="emits('remove-validation-errors')"
12
- />
13
- </Teleport>
14
-
15
- <div class="tree-view-wrap">
16
- <common-vm-actions-common-select-compute-resource-tree-view
17
- v-model="selectedNode"
18
- :data-center="props.dataCenter"
19
- :compute-resource="props.computeResource"
20
- :compute-resource-tree="props.computeResourceTree"
21
- @get-compute-resource-tree="emits('get-compute-resource-tree', $event)"
22
- @show-compute-resource-tree="
23
- emits('show-compute-resource-tree', $event)
24
- "
25
- @select-compute-resource-tree="
26
- emits('select-compute-resource-tree', $event)
27
- "
28
- @clear-compute-resource-tree="emits('clear-compute-resource-tree')"
29
- />
30
- </div>
31
-
32
- <div class="compatibility-wrap">
33
- <p class="compatibility">
34
- {{ localization.inventorySummary.compatibility }}
35
- </p>
36
- <div class="compatibility-message flex-align-start">
37
- <ui-skeleton-item
38
- v-if="!props.computeResourceTree"
39
- width="160px"
40
- height="16px"
41
- />
42
- <template v-else-if="props.compatibilityText[1]">
43
- <ui-icon
44
- v-show="props.compatibilityText[0] === 2"
45
- name="error"
46
- width="16"
47
- height="16"
48
- class="icon-compatibility-alert"
49
- />
50
-
51
- <ui-icon
52
- v-show="props.compatibilityText[0] === 1"
53
- name="success-fill"
54
- width="16"
55
- height="16"
56
- class="icon-compatibility-alert"
57
- />
58
- <span
59
- :class="[
60
- 'compatibility-message-description',
61
- { 'not-selected': props.compatibilityText[0] === 0 },
62
- ]"
63
- >{{ props.compatibilityText[1] }}</span
64
- >
65
- </template>
66
- </div>
67
- </div>
68
- </div>
69
- </template>
70
-
71
- <script setup lang="ts">
72
- import type { UI_I_Localization } from '~/lib/models/interfaces'
73
- import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
74
-
75
- const selectedNode = defineModel<UI_I_TreeNode>('modelValue', {
76
- required: true,
77
- })
78
-
79
- const props = defineProps<{
80
- dataCenter: UI_I_TreeNode | null
81
- computeResource: UI_I_TreeNode
82
- computeResourceTree: UI_I_TreeNode[]
83
- errors: string[]
84
- compatibilityText: [number, string]
85
- }>()
86
-
87
- const emits = defineEmits<{
88
- (
89
- event: 'get-compute-resource-tree',
90
- value: { id: string | number; cb: () => void }
91
- ): void
92
- (event: 'show-compute-resource-tree', value: UI_I_TreeNode): void
93
- (event: 'select-compute-resource-tree', value: UI_I_TreeNode): void
94
- (event: 'clear-compute-resource-tree'): void
95
- (event: 'remove-validation-errors'): void
96
- }>()
97
-
98
- const localization = computed<UI_I_Localization>(() => useLocal())
99
- </script>
100
-
101
- <style scoped lang="scss">
102
- .select-compute-resource {
103
- .tree-view-wrap {
104
- height: 182px;
105
- max-height: 240px;
106
- border-radius: 8px;
107
- border: 1px solid var(--select-compute-resource-border-color);
108
- padding: 8px;
109
- background-color: var(--select-compute-resource-location-bg-color);
110
- margin: 16px 0 24px;
111
- overflow: auto;
112
-
113
- :deep(.skeleton-tree) {
114
- padding: 4px 8px;
115
-
116
- .skeleton-tree-row:last-child {
117
- display: none;
118
- }
119
- }
120
- :deep(.tree-content) {
121
- padding: 0 !important;
122
-
123
- .node-wrapper {
124
- border-radius: 4px;
125
-
126
- .node-name {
127
- font-size: 12px;
128
- margin-left: 8px;
129
- overflow: hidden;
130
- text-overflow: ellipsis;
131
- white-space: nowrap;
132
- }
133
- }
134
- }
135
- }
136
-
137
- .compatibility-wrap {
138
- .compatibility {
139
- font-size: 16px;
140
- font-weight: 500;
141
- color: var(--select-compute-resource-compatibility-title-color);
142
- margin-bottom: 16px;
143
- }
144
- .compatibility-message {
145
- border-radius: 8px;
146
- border: 1px solid var(--select-compute-resource-border-color);
147
- padding: 12px;
148
- background-color: var(--select-compute-resource-location-bg-color);
149
- gap: 10px;
150
-
151
- .icon-compatibility-alert {
152
- min-width: 16px;
153
- min-height: 16px;
154
- }
155
- .compatibility-message-description {
156
- font-size: 13px;
157
- color: var(--select-compute-resource-compatibility-description-color);
158
-
159
- &.not-selected {
160
- color: var(
161
- --select-compute-resource-compatibilityd-empty-escription-color
162
- );
163
- }
164
- }
165
- }
166
- }
167
- }
168
- </style>
1
+ <template>
2
+ <div class="select-compute-resource pb-4">
3
+ <Teleport to="#compute-resource-alert-wrapper">
4
+ <ui-alert
5
+ v-show="props.errors.length"
6
+ :messages="props.errors"
7
+ status="alert-danger"
8
+ test-id="computed-resource-alert"
9
+ class="errors-alert"
10
+ size="md"
11
+ @hide="emits('remove-validation-errors')"
12
+ />
13
+ </Teleport>
14
+
15
+ <div class="tree-view-wrap">
16
+ <common-vm-actions-common-select-compute-resource-tree-view
17
+ v-model="selectedNode"
18
+ :data-center="props.dataCenter"
19
+ :compute-resource="props.computeResource"
20
+ :compute-resource-tree="props.computeResourceTree"
21
+ @get-compute-resource-tree="emits('get-compute-resource-tree', $event)"
22
+ @show-compute-resource-tree="
23
+ emits('show-compute-resource-tree', $event)
24
+ "
25
+ @select-compute-resource-tree="
26
+ emits('select-compute-resource-tree', $event)
27
+ "
28
+ @clear-compute-resource-tree="emits('clear-compute-resource-tree')"
29
+ />
30
+ </div>
31
+
32
+ <div class="compatibility-wrap">
33
+ <p class="compatibility">
34
+ {{ localization.inventorySummary.compatibility }}
35
+ </p>
36
+ <div class="compatibility-message flex-align-start">
37
+ <ui-skeleton-item
38
+ v-if="!props.computeResourceTree"
39
+ width="160px"
40
+ height="16px"
41
+ />
42
+ <template v-else-if="props.compatibilityText[1]">
43
+ <ui-icon
44
+ v-show="props.compatibilityText[0] === 2"
45
+ name="error"
46
+ width="16"
47
+ height="16"
48
+ class="icon-compatibility-alert"
49
+ />
50
+
51
+ <ui-icon
52
+ v-show="props.compatibilityText[0] === 1"
53
+ name="success-fill"
54
+ width="16"
55
+ height="16"
56
+ class="icon-compatibility-alert"
57
+ />
58
+ <span
59
+ :class="[
60
+ 'compatibility-message-description',
61
+ { 'not-selected': props.compatibilityText[0] === 0 },
62
+ ]"
63
+ >{{ props.compatibilityText[1] }}</span
64
+ >
65
+ </template>
66
+ </div>
67
+ </div>
68
+ </div>
69
+ </template>
70
+
71
+ <script setup lang="ts">
72
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
73
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
74
+
75
+ const selectedNode = defineModel<UI_I_TreeNode>('modelValue', {
76
+ required: true,
77
+ })
78
+
79
+ const props = defineProps<{
80
+ dataCenter: UI_I_TreeNode | null
81
+ computeResource: UI_I_TreeNode
82
+ computeResourceTree: UI_I_TreeNode[]
83
+ errors: string[]
84
+ compatibilityText: [number, string]
85
+ }>()
86
+
87
+ const emits = defineEmits<{
88
+ (
89
+ event: 'get-compute-resource-tree',
90
+ value: { id: string | number; cb: () => void }
91
+ ): void
92
+ (event: 'show-compute-resource-tree', value: UI_I_TreeNode): void
93
+ (event: 'select-compute-resource-tree', value: UI_I_TreeNode): void
94
+ (event: 'clear-compute-resource-tree'): void
95
+ (event: 'remove-validation-errors'): void
96
+ }>()
97
+
98
+ const localization = computed<UI_I_Localization>(() => useLocal())
99
+ </script>
100
+
101
+ <style>
102
+ :root {
103
+ --select-compute-resource-border-color: #e9ebed;
104
+ --select-compute-resource-location-bg-color: #ffffff;
105
+ --select-compute-resource-compatibility-title-color: #4d5d69;
106
+ --select-compute-resource-compatibilityd-empty-escription-color: #9da6ad;
107
+ --select-compute-resource-compatibility-description-color: #4d5d69;
108
+ }
109
+ :root.dark-theme {
110
+ --select-compute-resource-border-color: #e9ebed1f;
111
+ --select-compute-resource-location-bg-color: #1b2a371f;
112
+ --select-compute-resource-compatibility-title-color: #e9eaec;
113
+ --select-compute-resource-compatibilityd-empty-escription-color: #9da6ad;
114
+ --select-compute-resource-compatibility-description-color: #e9eaec;
115
+ }
116
+ </style>
117
+ <style scoped lang="scss">
118
+ .select-compute-resource {
119
+ .tree-view-wrap {
120
+ height: 182px;
121
+ max-height: 240px;
122
+ border-radius: 8px;
123
+ border: 1px solid var(--select-compute-resource-border-color);
124
+ padding: 8px;
125
+ background-color: var(--select-compute-resource-location-bg-color);
126
+ margin: 16px 0 24px;
127
+ overflow: auto;
128
+
129
+ :deep(.skeleton-tree) {
130
+ padding: 4px 8px;
131
+
132
+ .skeleton-tree-row:last-child {
133
+ display: none;
134
+ }
135
+ }
136
+ :deep(.tree-content) {
137
+ padding: 0 !important;
138
+
139
+ .node-wrapper {
140
+ border-radius: 4px;
141
+
142
+ .node-name {
143
+ font-size: 12px;
144
+ margin-left: 8px;
145
+ overflow: hidden;
146
+ text-overflow: ellipsis;
147
+ white-space: nowrap;
148
+ }
149
+ }
150
+ }
151
+ }
152
+
153
+ .compatibility-wrap {
154
+ .compatibility {
155
+ font-size: 16px;
156
+ font-weight: 500;
157
+ color: var(--select-compute-resource-compatibility-title-color);
158
+ margin-bottom: 16px;
159
+ }
160
+ .compatibility-message {
161
+ border-radius: 8px;
162
+ border: 1px solid var(--select-compute-resource-border-color);
163
+ padding: 12px;
164
+ background-color: var(--select-compute-resource-location-bg-color);
165
+ gap: 10px;
166
+
167
+ .icon-compatibility-alert {
168
+ min-width: 16px;
169
+ min-height: 16px;
170
+ }
171
+ .compatibility-message-description {
172
+ font-size: 13px;
173
+ color: var(--select-compute-resource-compatibility-description-color);
174
+
175
+ &.not-selected {
176
+ color: var(
177
+ --select-compute-resource-compatibilityd-empty-escription-color
178
+ );
179
+ }
180
+ }
181
+ }
182
+ }
183
+ }
184
+ </style>
@@ -1,131 +1,131 @@
1
- <template>
2
- <common-vm-actions-common-select-compute-resource-tree-view-new
3
- v-if="isNewView"
4
- :compute-resource-tree="props.computeResourceTree"
5
- :loading="loading"
6
- @show-nodes="onShowNodes"
7
- @select-node="onSelectNode"
8
- />
9
- <common-vm-actions-common-select-compute-resource-tree-view-old
10
- v-else
11
- :compute-resource-tree="props.computeResourceTree"
12
- :loading="loading"
13
- @show-nodes="onShowNodes"
14
- @select-node="onSelectNode"
15
- />
16
- </template>
17
-
18
- <script setup lang="ts">
19
- import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
20
-
21
- const model = defineModel<UI_I_TreeNode>('modelValue', { required: true })
22
-
23
- const props = defineProps<{
24
- dataCenter: UI_I_TreeNode | null
25
- computeResource: UI_I_TreeNode
26
- computeResourceTree: UI_I_TreeNode[]
27
- }>()
28
-
29
- const emits = defineEmits<{
30
- (
31
- event: 'get-compute-resource-tree',
32
- value: { id: string | number; cb: () => void }
33
- ): void
34
- (event: 'show-compute-resource-tree', value: UI_I_TreeNode): void
35
- (event: 'select-compute-resource-tree', value: UI_I_TreeNode): void
36
- (event: 'clear-compute-resource-tree'): void
37
- }>()
38
-
39
- const { $store }: any = useNuxtApp()
40
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
41
-
42
- const loading = ref<boolean>(false)
43
- watch(
44
- () => props.dataCenter,
45
- async () => {
46
- if (!props.dataCenter) return
47
-
48
- loading.value = true
49
- emits('get-compute-resource-tree', {
50
- id: props.dataCenter.id,
51
- cb: () => {
52
- let node = model.value
53
- let hasNode = checkHasNodeRecursion(
54
- props.computeResourceTree[0].nodes,
55
- node
56
- )
57
- if (!hasNode) {
58
- node = props.computeResource
59
- hasNode = checkHasNodeRecursion(
60
- props.computeResourceTree[0].nodes,
61
- node
62
- )
63
- }
64
- if (!hasNode) {
65
- node = props.computeResourceTree[0]
66
- }
67
- loading.value = false
68
-
69
- if (!node || (node.type !== 'host' && node.type !== 'cluster')) return
70
- onSelectNode(node)
71
- },
72
- })
73
- },
74
- { immediate: true, deep: true }
75
- )
76
- const checkHasNodeRecursion = (
77
- nodes: UI_I_TreeNode[],
78
- node: UI_I_TreeNode | null
79
- ): boolean => {
80
- if (!node) return false
81
-
82
- let has = false
83
- for (let i = 0; i < nodes.length; i++) {
84
- const item = nodes[i]
85
-
86
- if (item.id === node.id && item.type === node.type) {
87
- has = true
88
- break
89
- }
90
- if (has) break
91
-
92
- has = checkHasNodeRecursion(item.nodes, node)
93
- }
94
- return has
95
- }
96
-
97
- const onShowNodes = ({
98
- node,
99
- cb,
100
- }: {
101
- node: UI_I_TreeNode
102
- cb: () => void
103
- }): void => {
104
- emits('show-compute-resource-tree', node)
105
- cb()
106
- }
107
- const onSelectNode = (node: UI_I_TreeNode): void => {
108
- emits('select-compute-resource-tree', node)
109
-
110
- model.value = node
111
- }
112
-
113
- // Разворачиваем первый элемент
114
- watch(
115
- () => props.computeResourceTree,
116
- (newValue) => {
117
- if (newValue.length > 0) {
118
- onShowNodes({
119
- node: newValue[0],
120
- cb: () => {},
121
- })
122
- }
123
- }
124
- )
125
-
126
- onUnmounted(() => {
127
- emits('clear-compute-resource-tree')
128
- })
129
- </script>
130
-
131
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <common-vm-actions-common-select-compute-resource-tree-view-new
3
+ v-if="isNewView"
4
+ :compute-resource-tree="props.computeResourceTree"
5
+ :loading="loading"
6
+ @show-nodes="onShowNodes"
7
+ @select-node="onSelectNode"
8
+ />
9
+ <common-vm-actions-common-select-compute-resource-tree-view-old
10
+ v-else
11
+ :compute-resource-tree="props.computeResourceTree"
12
+ :loading="loading"
13
+ @show-nodes="onShowNodes"
14
+ @select-node="onSelectNode"
15
+ />
16
+ </template>
17
+
18
+ <script setup lang="ts">
19
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
20
+
21
+ const model = defineModel<UI_I_TreeNode>('modelValue', { required: true })
22
+
23
+ const props = defineProps<{
24
+ dataCenter: UI_I_TreeNode | null
25
+ computeResource: UI_I_TreeNode
26
+ computeResourceTree: UI_I_TreeNode[]
27
+ }>()
28
+
29
+ const emits = defineEmits<{
30
+ (
31
+ event: 'get-compute-resource-tree',
32
+ value: { id: string | number; cb: () => void }
33
+ ): void
34
+ (event: 'show-compute-resource-tree', value: UI_I_TreeNode): void
35
+ (event: 'select-compute-resource-tree', value: UI_I_TreeNode): void
36
+ (event: 'clear-compute-resource-tree'): void
37
+ }>()
38
+
39
+ const { $store }: any = useNuxtApp()
40
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
41
+
42
+ const loading = ref<boolean>(false)
43
+ watch(
44
+ () => props.dataCenter,
45
+ async () => {
46
+ if (!props.dataCenter) return
47
+
48
+ loading.value = true
49
+ emits('get-compute-resource-tree', {
50
+ id: props.dataCenter.id,
51
+ cb: () => {
52
+ let node = model.value
53
+ let hasNode = checkHasNodeRecursion(
54
+ props.computeResourceTree[0].nodes,
55
+ node
56
+ )
57
+ if (!hasNode) {
58
+ node = props.computeResource
59
+ hasNode = checkHasNodeRecursion(
60
+ props.computeResourceTree[0].nodes,
61
+ node
62
+ )
63
+ }
64
+ if (!hasNode) {
65
+ node = props.computeResourceTree[0]
66
+ }
67
+ loading.value = false
68
+
69
+ if (!node || (node.type !== 'host' && node.type !== 'cluster')) return
70
+ onSelectNode(node)
71
+ },
72
+ })
73
+ },
74
+ { immediate: true, deep: true }
75
+ )
76
+ const checkHasNodeRecursion = (
77
+ nodes: UI_I_TreeNode[],
78
+ node: UI_I_TreeNode | null
79
+ ): boolean => {
80
+ if (!node) return false
81
+
82
+ let has = false
83
+ for (let i = 0; i < nodes.length; i++) {
84
+ const item = nodes[i]
85
+
86
+ if (item.id === node.id && item.type === node.type) {
87
+ has = true
88
+ break
89
+ }
90
+ if (has) break
91
+
92
+ has = checkHasNodeRecursion(item.nodes, node)
93
+ }
94
+ return has
95
+ }
96
+
97
+ const onShowNodes = ({
98
+ node,
99
+ cb,
100
+ }: {
101
+ node: UI_I_TreeNode
102
+ cb: () => void
103
+ }): void => {
104
+ emits('show-compute-resource-tree', node)
105
+ cb()
106
+ }
107
+ const onSelectNode = (node: UI_I_TreeNode): void => {
108
+ emits('select-compute-resource-tree', node)
109
+
110
+ model.value = node
111
+ }
112
+
113
+ // Разворачиваем первый элемент
114
+ watch(
115
+ () => props.computeResourceTree,
116
+ (newValue) => {
117
+ if (newValue.length > 0) {
118
+ onShowNodes({
119
+ node: newValue[0],
120
+ cb: () => {},
121
+ })
122
+ }
123
+ }
124
+ )
125
+
126
+ onUnmounted(() => {
127
+ emits('clear-compute-resource-tree')
128
+ })
129
+ </script>
130
+
131
+ <style scoped lang="scss"></style>