bfg-common 1.6.30 → 1.6.32

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 (101) hide show
  1. package/assets/localization/local_be.json +245 -6
  2. package/assets/localization/local_en.json +252 -13
  3. package/assets/localization/local_hy.json +246 -7
  4. package/assets/localization/local_kk.json +245 -6
  5. package/assets/localization/local_ru.json +252 -13
  6. package/assets/localization/local_zh.json +245 -6
  7. package/assets/scss/common/theme.scss +2 -2
  8. package/components/atoms/stack/StackBlock.vue +1 -1
  9. package/components/common/adapterManager/addAdapterModal/AddAdapterModalNew.vue +1 -1
  10. package/components/common/adapterManager/addAdapterWarningModal/AddAdapterWarningModalNew.vue +0 -1
  11. package/components/common/adapterManager/ui/table/adapters/AdaptersNew.vue +1 -0
  12. package/components/common/certificate/CertificateInfo.vue +7 -1
  13. package/components/common/configure/physicalAdapters/PhysicalAdapters.vue +6 -0
  14. package/components/common/configure/physicalAdapters/PhysicalAdaptersNew.vue +219 -192
  15. package/components/common/configure/physicalAdapters/PhysicalAdaptersOld.vue +6 -4
  16. package/components/common/configure/physicalAdapters/buttons/Buttons.vue +1 -0
  17. package/components/common/configure/physicalAdapters/modals/edit/Edit.vue +26 -1
  18. package/components/common/configure/physicalAdapters/modals/edit/EditNew.vue +30 -1
  19. package/components/common/configure/physicalAdapters/modals/edit/lib/models/interfaces.ts +5 -0
  20. package/components/common/configure/physicalAdapters/modals/edit/lib/validations/validations.ts +19 -0
  21. package/components/common/configure/physicalAdapters/tableView/TableViewNew.vue +12 -1
  22. package/components/common/configure/physicalAdapters/tableView/lib/config/physicalAdaptersTableConfigNew.ts +21 -21
  23. package/components/common/configure/physicalAdapters/tableView/lib/config/settings.ts +12 -5
  24. package/components/common/configure/physicalAdapters/tableView/lib/models/interfaces.ts +4 -1
  25. package/components/common/diagramMain/DiagramMain.vue +6 -0
  26. package/components/common/diagramMain/modals/Modals.vue +4 -0
  27. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +2 -2
  28. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +1 -1
  29. package/components/common/diagramMain/modals/migrateVmkernelAdapter/MigrateVmkernelAdapter.vue +2 -2
  30. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +1 -1
  31. package/components/common/layout/theHeader/ThemeSwitch.vue +1 -1
  32. package/components/common/layout/theHeader/userMenu/modals/changePassword/New.vue +8 -9
  33. package/components/common/layout/theHeader/userMenu/modals/preferences/New.vue +4 -0
  34. package/components/common/layout/theHeader/userMenu/modals/preferences/Old.vue +9 -2
  35. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/ChangeLanguage.vue +12 -8
  36. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/DefaultConsole.vue +7 -1
  37. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/lib/config/consoleOptions.ts +8 -5
  38. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/TimeFormat.vue +9 -5
  39. package/components/common/layout/theHeader/userMenu/modals/preferences/view/Old.vue +5 -9
  40. package/components/common/layout/theHeader/userMenu/modals/preferences/view/View.vue +9 -6
  41. package/components/common/mainNavigationPanel/MainNavigationPanelNew.vue +3 -1
  42. package/components/common/monitor/advanced/table/lib/models/interfaces.ts +13 -13
  43. package/components/common/monitor/advanced/table/lib/models/types.ts +7 -7
  44. package/components/common/monitor/advanced/table/tableNew/TableNew.vue +93 -93
  45. package/components/common/monitor/advanced/table/tableNew/lib/config/options.ts +109 -109
  46. package/components/common/monitor/advanced/table/tableNew/lib/utils/constructBody.ts +25 -25
  47. package/components/common/monitor/advanced/table/tableOld/TableOld.vue +93 -93
  48. package/components/common/monitor/advanced/table/tableOld/lib/config/performanceDatatable.ts +125 -125
  49. package/components/common/monitor/lib/utils/local_be.json +702 -702
  50. package/components/common/monitor/lib/utils/local_en.json +702 -702
  51. package/components/common/monitor/lib/utils/local_hy.json +702 -702
  52. package/components/common/monitor/lib/utils/local_kk.json +702 -702
  53. package/components/common/monitor/lib/utils/local_ru.json +702 -702
  54. package/components/common/monitor/lib/utils/local_zh.json +702 -702
  55. package/components/common/monitor/utilization/lib/utils/index.ts +33 -33
  56. package/components/common/noDataProvided/NoDataProvidedNew.vue +1 -1
  57. package/components/common/pages/backups/modals/createBackup/datastores/tableView/new/lib/config/table.ts +4 -4
  58. package/components/common/pages/backups/modals/createBackup/datastores/tableView/old/lib/config/table.ts +4 -4
  59. package/components/common/pages/hardwareHealth/HardwareHealthNew.vue +1 -1
  60. package/components/common/pages/hardwareHealth/historyTestimony/GraphNew.vue +1 -1
  61. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/actions/ActionsNew.vue +1 -1
  62. package/components/common/pages/scheduledTasks/table/lib/models/enums.ts +9 -0
  63. package/components/common/pages/scheduledTasks/table/new/New.vue +12 -10
  64. package/components/common/pages/tasks/Tasks.vue +4 -1
  65. package/components/common/pages/tasks/table/Table.vue +24 -22
  66. package/components/common/split/vertical/New.vue +42 -8
  67. package/components/common/split/vertical/Old.vue +31 -2
  68. package/components/common/split/vertical/Vertical.vue +4 -0
  69. package/components/common/vm/actions/add/New.vue +21 -6
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +1 -1
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/New.vue +5 -0
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/New.vue +1 -0
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/reservation/New.vue +2 -0
  74. package/components/common/vm/actions/common/select/storage/new/lib/config/table.ts +13 -15
  75. package/components/common/vm/actions/confirm/Confirm.vue +3 -0
  76. package/components/common/vm/snapshots/DetailView.vue +6 -6
  77. package/components/common/wizards/datastore/add/New.vue +6 -0
  78. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceNew.vue +1 -1
  79. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/New.vue +1 -1
  80. package/components/common/wizards/network/add/Add.vue +13 -2
  81. package/components/common/wizards/network/add/AddNew.vue +22 -26
  82. package/components/common/wizards/network/add/lib/config/initialData.ts +4 -4
  83. package/components/common/wizards/network/add/lib/utils/utils.ts +1 -1
  84. package/components/common/wizards/network/add/steps/ipFourSettings/IpFourSettingsNew.vue +2 -8
  85. package/components/common/wizards/network/add/steps/portProperties/PortPropertiesNew.vue +2 -8
  86. package/components/common/wizards/network/add/steps/selectTargetDevice/SelectTargetDeviceNew.vue +10 -3
  87. package/components/common/wizards/network/add/steps/selectTargetDevice/modals/new/SelectNetwork.vue +5 -1
  88. package/components/common/wizards/network/add/validations/common.ts +1 -1
  89. package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/New.vue +31 -13
  90. package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/lib/config/clusterTable.ts +340 -0
  91. package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/lib/config/hostTable.ts +3 -1
  92. package/components/common/wizards/vm/migrate/steps/selectStorage/New.vue +5 -4
  93. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/batch/New.vue +4 -0
  94. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/batch/table/new/New.vue +3 -1
  95. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/new/lib/config/diskTable.ts +8 -3
  96. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/old/lib/config/diskTable.ts +7 -1
  97. package/lib/models/store/tasks/enums.ts +3 -0
  98. package/lib/models/store/tasks/types.ts +7 -6
  99. package/package.json +2 -2
  100. package/store/tasks/actions.ts +26 -8
  101. package/store/tasks/mappers/recentTasks.ts +1 -0
@@ -1,33 +1,33 @@
1
- import type {
2
- API_UI_I_UtilizationData,
3
- UI_I_UtilizationDataItem,
4
- } from '~/components/common/monitor/utilization/lib/models/interfaces'
5
- import type { UI_I_Localization } from '~/lib/models/interfaces'
6
- import { UI_E_UtilizationBlockCurrentKeys } from '~/components/common/monitor/utilization/lib/models/enums'
7
- import { getMetricsLocalizationByKey } from '~/components/common/monitor/lib/utils/localization'
8
-
9
- export const constructApiData = (
10
- apiData: API_UI_I_UtilizationData,
11
- localization: UI_I_Localization
12
- ): UI_I_UtilizationDataItem[] => {
13
- const result: UI_I_UtilizationDataItem[] = []
14
- Object.keys(apiData).forEach((key) => {
15
- result.push({
16
- id: key,
17
- isShow: true,
18
- title: localization.common[UI_E_UtilizationBlockCurrentKeys[key]],
19
- data: apiData[key].items.map((item) => {
20
- item.color = !item.label.toLowerCase().includes('capacity')
21
- ? '#' +
22
- Math.floor(Math.random() * 0xffffff)
23
- .toString(16)
24
- .padStart(6, '0')
25
- : ''
26
- item.label = getMetricsLocalizationByKey(item.label)
27
-
28
- return item
29
- }),
30
- })
31
- })
32
- return result
33
- }
1
+ import type {
2
+ API_UI_I_UtilizationData,
3
+ UI_I_UtilizationDataItem,
4
+ } from '~/components/common/monitor/utilization/lib/models/interfaces'
5
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
6
+ import { UI_E_UtilizationBlockCurrentKeys } from '~/components/common/monitor/utilization/lib/models/enums'
7
+ import { getMetricsLocalizationByKey } from '~/components/common/monitor/lib/utils/localization'
8
+
9
+ export const constructApiData = (
10
+ apiData: API_UI_I_UtilizationData,
11
+ localization: UI_I_Localization
12
+ ): UI_I_UtilizationDataItem[] => {
13
+ const result: UI_I_UtilizationDataItem[] = []
14
+ Object.keys(apiData).forEach((key) => {
15
+ result.push({
16
+ id: key,
17
+ isShow: true,
18
+ title: localization.common[UI_E_UtilizationBlockCurrentKeys[key]],
19
+ data: apiData[key].items.map((item) => {
20
+ item.color = !item.label.toLowerCase().includes('capacity')
21
+ ? '#' +
22
+ Math.floor(Math.random() * 0xffffff)
23
+ .toString(16)
24
+ .padStart(6, '0')
25
+ : ''
26
+ item.label = getMetricsLocalizationByKey(item.label)
27
+
28
+ return item
29
+ }),
30
+ })
31
+ })
32
+ return result
33
+ }
@@ -43,7 +43,7 @@ const localization = computed<UI_I_Localization>(() => useLocal())
43
43
  }
44
44
 
45
45
  .ui-no-data-provided-title {
46
- font-weight: 500;
46
+ font-weight: 400;
47
47
  font-size: 16px;
48
48
  line-height: 19px;
49
49
  letter-spacing: 0;
@@ -191,19 +191,19 @@ export const getBodyDataFunc = (
191
191
  },
192
192
  {
193
193
  col: 'col2',
194
- text: $binary.round(datastore.capacity.capacity_mb, false, lang)
194
+ text: $binary.round(datastore.capacity.capacity_mb || 0, false, lang)
195
195
  },
196
196
  {
197
197
  col: 'col3',
198
- text: $binary.round(datastore.capacity.provisioned_mb, false, lang)
198
+ text: $binary.round(datastore.capacity.provisioned_mb || 0, false, lang)
199
199
  },
200
200
  {
201
201
  col: 'col4',
202
- text: $binary.round(datastore.capacity.free_mb, false, lang)
202
+ text: $binary.round(datastore.capacity.free_mb || 0, false, lang)
203
203
  },
204
204
  {
205
205
  col: 'col5',
206
- text: $binary.round(datastore.capacity.used_mb, false, lang)
206
+ text: $binary.round(datastore.capacity.used_mb || 0, false, lang)
207
207
  },
208
208
  {
209
209
  col: 'col6',
@@ -83,7 +83,7 @@ export const bodyItems = (
83
83
  },
84
84
  {
85
85
  key: 'col2',
86
- text: $binary.round(datastore.capacity[tableKeys[2]], false, lang),
86
+ text: $binary.round(datastore.capacity[tableKeys[2]] || 0, false, lang),
87
87
  id: datastore.id,
88
88
  testId: `backup-datastore-table-item-${datastore.id}`,
89
89
  data: {
@@ -93,7 +93,7 @@ export const bodyItems = (
93
93
  {
94
94
  key: 'col3',
95
95
  text: $binary.round(
96
- datastore.capacity[tableKeys[3]],
96
+ datastore.capacity[tableKeys[3]] || 0,
97
97
  false,
98
98
  lang
99
99
  ),
@@ -105,7 +105,7 @@ export const bodyItems = (
105
105
  },
106
106
  {
107
107
  key: 'col4',
108
- text: $binary.round(datastore.capacity[tableKeys[4]], false, lang),
108
+ text: $binary.round(datastore.capacity[tableKeys[4]] || 0, false, lang),
109
109
  id: datastore.id,
110
110
  testId: `backup-datastore-table-item-${datastore.id}`,
111
111
  data: {
@@ -114,7 +114,7 @@ export const bodyItems = (
114
114
  },
115
115
  {
116
116
  key: 'col5',
117
- text: $binary.round(datastore.capacity[tableKeys[5]], false, lang),
117
+ text: $binary.round(datastore.capacity[tableKeys[5]] || 0, false, lang),
118
118
  id: datastore.id,
119
119
  testId: `backup-datastore-table-item-${datastore.id}`,
120
120
  data: {
@@ -235,7 +235,7 @@ const statusCounts = computed<UI_I_IndicatorAlerts>(() => {
235
235
 
236
236
  .table-content {
237
237
  &.alert-warning, &.history-testimony {
238
- :deep(.data-table-header th) {
238
+ :deep(.data-table-header th:not(:last-child)) {
239
239
  min-width: max-content !important;
240
240
  }
241
241
  }
@@ -154,7 +154,7 @@ const emits = defineEmits<{
154
154
  display: flex;
155
155
  flex-wrap: wrap;
156
156
  justify-content: space-between;
157
- grid-column-gap: 12px;
157
+ grid-gap: 12px;
158
158
 
159
159
  &.power {
160
160
  & > div:nth-child(1) {
@@ -135,7 +135,7 @@ const onSaveNewName = (): void => {
135
135
  &:disabled {
136
136
  color: var(--chart-options-name-actions-delete-disabled-text-color);
137
137
 
138
- :deep(.button-icon) {
138
+ :deep(span) {
139
139
  color: #bdc3c7;
140
140
  opacity: 0.44;
141
141
  }
@@ -2,3 +2,12 @@ export enum UI_E_SchedulerRunStatus {
2
2
  RUNNING = 'this task has been started',
3
3
  SUCCESS = 'success',
4
4
  }
5
+
6
+ export enum E_SchedulerFrequencyModeLocale {
7
+ Once = 'once',
8
+ Startup = 'afterVCenterStartup',
9
+ Hourly = 'hourly',
10
+ Daily = 'daily',
11
+ Weekly = 'weekly',
12
+ Monthly = 'monthly',
13
+ }
@@ -82,16 +82,18 @@
82
82
  <ui-icon name="vertical-dotes" width="20" height="20" />
83
83
  </span>
84
84
  </ui-button>
85
- <ui-dropdown
86
- :show="actionsShowId === item.data.id"
87
- :test-id="`event-table-action-dropdown-${item.data.id}`"
88
- :items="schedulerDropActions"
89
- :elem-id="`event-table-action-${item.data.id}`"
90
- width="max-content"
91
- left
92
- @select="onSelectAction"
93
- @hide="onHideActionsDropdown"
94
- />
85
+ <Teleport to="body">
86
+ <ui-dropdown
87
+ :show="actionsShowId === item.data.id"
88
+ :test-id="`event-table-action-dropdown-${item.data.id}`"
89
+ :items="schedulerDropActions"
90
+ :elem-id="`event-table-action-${item.data.id}`"
91
+ width="max-content"
92
+ left
93
+ @select="onSelectAction"
94
+ @hide="onHideActionsDropdown"
95
+ />
96
+ </Teleport>
95
97
  </div>
96
98
  </template>
97
99
 
@@ -58,7 +58,10 @@ const getTasks = async (): Promise<void> => {
58
58
  sortBy: sort.value || '',
59
59
  filter: filter.value || '',
60
60
  }
61
- await $store.dispatch('tasks/A_GET_TASKS', payload)
61
+ await $store.dispatch('tasks/A_GET_TASKS', {
62
+ data: payload,
63
+ project: props.project,
64
+ })
62
65
  }
63
66
  const onUpdatePagination = (event: UI_I_Pagination): void => {
64
67
  pagination.value = event
@@ -67,28 +67,30 @@
67
67
  <ui-icon name="vertical-dotes" width="20" height="20" />
68
68
  </span>
69
69
  </ui-button>
70
- <ui-dropdown
71
- :show="actionsShowId === item.data.id"
72
- :test-id="`data-table-task-dropdown-${item.data.id}`"
73
- :items="actions"
74
- :elem-id="`data-table-task-action-${item.data.id}`"
75
- width="max-content"
76
- left
77
- @select="onSelectAction(item.data.target, $event)"
78
- @hide="onHideActionsDropdown"
79
- >
80
- <template #row="{ item: dropMenu }">
81
- <ui-icon
82
- v-if="dropMenu.iconName === 'hide'"
83
- name="password-hide"
84
- width="16"
85
- height="16"
86
- />
87
- <span class="action-text">
88
- {{ dropMenu.text }}
89
- </span>
90
- </template>
91
- </ui-dropdown>
70
+ <Teleport to="body">
71
+ <ui-dropdown
72
+ :show="actionsShowId === item.data.id"
73
+ :test-id="`data-table-task-dropdown-${item.data.id}`"
74
+ :items="actions"
75
+ :elem-id="`data-table-task-action-${item.data.id}`"
76
+ width="max-content"
77
+ left
78
+ @select="onSelectAction(item.data.target, $event)"
79
+ @hide="onHideActionsDropdown"
80
+ >
81
+ <template #row="{ item: dropMenu }">
82
+ <ui-icon
83
+ v-if="dropMenu.iconName === 'hide'"
84
+ name="password-hide"
85
+ width="16"
86
+ height="16"
87
+ />
88
+ <span class="action-text">
89
+ {{ dropMenu.text }}
90
+ </span>
91
+ </template>
92
+ </ui-dropdown>
93
+ </Teleport>
92
94
  </div>
93
95
  </template>
94
96
 
@@ -3,13 +3,22 @@
3
3
  :id="props.elementId"
4
4
  :class="['fill-parent vertical', { dragging: props.isDrag }]"
5
5
  >
6
- <div :style="props.topPanelStyle" class="vui-horizontal-panel firstPanel">
6
+ <div
7
+ :style="props.topPanelStyle"
8
+ :class="[
9
+ 'vui-horizontal-panel firstPanel',
10
+ {
11
+ 'hidden-second': !props.bottomPermission,
12
+ },
13
+ ]"
14
+ >
7
15
  <div class="vui-horizontal-panel sec-nav-container">
8
16
  <slot name="firstPanel" />
9
17
  </div>
10
18
  </div>
11
19
 
12
20
  <div
21
+ v-if="props.bottomPermission"
13
22
  :id="`gutter-${props.elementId}`"
14
23
  class="gutter gutter-vertical"
15
24
  tabindex="0"
@@ -20,7 +29,16 @@
20
29
  <div class="gutter-vertical-handler"></div>
21
30
  </div>
22
31
 
23
- <div :style="props.bottomPanelStyle" class="secondPanel bottom">
32
+ <div
33
+ v-if="props.bottomPermission"
34
+ :style="props.bottomPanelStyle"
35
+ :class="[
36
+ 'secondPanel bottom',
37
+ {
38
+ hidden: !props.bottomPermission,
39
+ },
40
+ ]"
41
+ >
24
42
  <slot name="secondPanel" />
25
43
  </div>
26
44
  </div>
@@ -37,6 +55,7 @@ const props = defineProps<{
37
55
  isDrag: boolean
38
56
  topPanelStyle: UI_I_SplitVerticalStyle
39
57
  bottomPanelStyle: UI_I_SplitVerticalStyle
58
+ bottomPermission: boolean
40
59
  }>()
41
60
  </script>
42
61
 
@@ -52,10 +71,14 @@ const props = defineProps<{
52
71
  </style>
53
72
 
54
73
  <style scoped lang="scss">
55
- .fill-parent {
74
+ .vertical {
56
75
  &.dragging {
57
76
  .gutter-vertical.gutter {
58
- background-color: var(--gutter-active-bg-color);
77
+ background-color: var(--new-gutter-active-bg-color);
78
+
79
+ &::before {
80
+ background-color: var(--new-gutter-active-before-bg-color);
81
+ }
59
82
  }
60
83
  }
61
84
 
@@ -63,6 +86,11 @@ const props = defineProps<{
63
86
  max-height: calc(100% - 36px);
64
87
  height: calc(100vh - 36px);
65
88
 
89
+ &.hidden-second {
90
+ max-height: 100%;
91
+ height: 100% !important;
92
+ }
93
+
66
94
  .sec-nav-container {
67
95
  width: 100%;
68
96
  height: 100%;
@@ -95,11 +123,11 @@ const props = defineProps<{
95
123
  //}
96
124
 
97
125
  &:hover {
98
- background-color: var(--gutter-hover-bg-color);
126
+ background-color: var(--new-gutter-hover-bg-color);
99
127
  cursor: row-resize;
100
128
 
101
129
  &:before {
102
- background-color: var(--gutter-handler-active-bg-color);
130
+ background-color: var(--new-gutter-active-before-bg-color);
103
131
  }
104
132
  }
105
133
 
@@ -112,8 +140,9 @@ const props = defineProps<{
112
140
  transition-duration: 0.25s;
113
141
  width: 24px;
114
142
  height: 2px;
115
- left: calc(50% - 12px);
116
- top: calc(50% - 1px);
143
+ left: 50%;
144
+ top: 50%;
145
+ transform: translate(-50%, -50%);
117
146
  border-radius: 4px;
118
147
  }
119
148
  }
@@ -122,6 +151,11 @@ const props = defineProps<{
122
151
  overflow: hidden;
123
152
  flex: 1;
124
153
  box-shadow: var(--second-panel-box-shadow);
154
+
155
+ &.hidden {
156
+ display: none;
157
+ height: 0;
158
+ }
125
159
  //z-index: calc(var(--z-default) + 1);
126
160
  }
127
161
  }
@@ -3,13 +3,22 @@
3
3
  :id="props.elementId"
4
4
  :class="['fill-parent vertical', { dragging: props.isDrag }]"
5
5
  >
6
- <div :style="props.topPanelStyle" class="vui-horizontal-panel firstPanel">
6
+ <div
7
+ :style="props.topPanelStyle"
8
+ :class="[
9
+ 'vui-horizontal-panel firstPanel',
10
+ {
11
+ 'hidden-second': !props.bottomPermission,
12
+ },
13
+ ]"
14
+ >
7
15
  <div class="vui-horizontal-panel sec-nav-container">
8
16
  <slot name="firstPanel" />
9
17
  </div>
10
18
  </div>
11
19
 
12
20
  <div
21
+ v-if="props.bottomPermission"
13
22
  :id="`gutter-${props.elementId}`"
14
23
  class="gutter gutter-vertical"
15
24
  tabindex="0"
@@ -20,7 +29,16 @@
20
29
  <div class="gutter-vertical-handler"></div>
21
30
  </div>
22
31
 
23
- <div :style="props.bottomPanelStyle" class="secondPanel bottom">
32
+ <div
33
+ v-if="props.bottomPermission"
34
+ :style="props.bottomPanelStyle"
35
+ :class="[
36
+ 'secondPanel bottom',
37
+ {
38
+ hidden: !props.bottomPermission,
39
+ },
40
+ ]"
41
+ >
24
42
  <slot name="secondPanel" />
25
43
  </div>
26
44
  </div>
@@ -37,6 +55,7 @@ const props = defineProps<{
37
55
  isDrag: boolean
38
56
  topPanelStyle: UI_I_SplitVerticalStyle
39
57
  bottomPanelStyle: UI_I_SplitVerticalStyle
58
+ bottomPermission: boolean
40
59
  }>()
41
60
  </script>
42
61
 
@@ -52,6 +71,11 @@ const props = defineProps<{
52
71
  max-height: calc(100% - 36px);
53
72
  height: calc(100vh - 36px);
54
73
 
74
+ &.hidden-second {
75
+ max-height: 100%;
76
+ height: 100% !important;
77
+ }
78
+
55
79
  .sec-nav-container {
56
80
  width: 100%;
57
81
  height: 100%;
@@ -109,6 +133,11 @@ const props = defineProps<{
109
133
  height: auto;
110
134
  overflow: hidden;
111
135
  flex: 1;
136
+
137
+ &.hidden {
138
+ display: none;
139
+ height: 0;
140
+ }
112
141
  }
113
142
  }
114
143
  </style>
@@ -7,6 +7,7 @@
7
7
  :is-drag="isDrag"
8
8
  :top-panel-style="topPanelStyle"
9
9
  :bottom-panel-style="bottomPanelStyle"
10
+ :bottom-permission="props.bottomPermission"
10
11
  >
11
12
  <template #firstPanel>
12
13
  <slot name="firstPanel" />
@@ -25,6 +26,7 @@
25
26
  :is-drag="isDrag"
26
27
  :top-panel-style="topPanelStyle"
27
28
  :bottom-panel-style="bottomPanelStyle"
29
+ :bottom-permission="props.bottomPermission"
28
30
  >
29
31
  <template #firstPanel>
30
32
  <slot name="firstPanel" />
@@ -46,12 +48,14 @@ const props = withDefaults(
46
48
  topPanelH?: number
47
49
  topPanelMinHeight?: number
48
50
  bottomPanelMinHeight?: number
51
+ bottomPermission?: boolean
49
52
  }>(),
50
53
  {
51
54
  topPanelMinHeight: 200, // 200px
52
55
  bottomPanelMinHeight: 200, // 200px
53
56
  topPanelHForce: '',
54
57
  topPanelH: undefined,
58
+ bottomPermission: true,
55
59
  }
56
60
  )
57
61
  const emits = defineEmits<{
@@ -55,13 +55,13 @@
55
55
  <div ref="subTitleBlockName">
56
56
  <div class="subtitle-block">
57
57
  <div
58
- id="name-alert-wrapper"
59
- :class="[{ 'mb-4': !isNameAlertWrapperEmpty }]"
58
+ id="name-alert-wrapper"
59
+ :class="[{ 'mb-4': !isNameAlertWrapperEmpty }]"
60
60
  ></div>
61
61
  <ui-wizard-subtitle
62
- :sub-title="
63
- localization.vmWizard.specifyUniqueNameAndTargetLocationForVm
64
- "
62
+ :sub-title="
63
+ localization.vmWizard.specifyUniqueNameAndTargetLocationForVm
64
+ "
65
65
  />
66
66
  </div>
67
67
  </div>
@@ -153,7 +153,8 @@
153
153
  :datastore="props.datastore"
154
154
  :is-datastore-loading="props.isDatastoreLoading"
155
155
  :get-datastore-table-func="props.getDatastoreTableFunc"
156
- :storage="props.vmtSettings?.storage"
156
+ :storage="storageLocal"
157
+ @change-storage="setSelectedStorageIdLocal"
157
158
  @submit="emits('change-storage', $event)"
158
159
  @has-errors="isStorageAlertWrapperEmpty = $event"
159
160
  />
@@ -593,6 +594,20 @@ const isNameAlertWrapperEmpty = ref<boolean>(false)
593
594
  // const isComputeResourceAlertWrapperEmpty = ref<boolean>(false)
594
595
  const isStorageAlertWrapperEmpty = ref<boolean>(false)
595
596
  const isCompatibilityAlertWrapperEmpty = ref<boolean>(false)
597
+
598
+ const storageLocal = computed<UI_I_DatastoreTableItem | undefined>(() => {
599
+ return selectedStorageLocal.value ?? props.vmtSettings?.storage
600
+ })
601
+
602
+ /* TODO: В дальнейшем необходимо вынести все данные наружу и передавать его через v-model */
603
+ // рефакторинг. При возврате на шаг выбора хранилища ранее выбранное хранилище не отображается как выбранное.
604
+ // Для хранилища в v-model необходимо сохранять ID хранилища, а не ключ индекса.
605
+ const selectedStorageLocal = ref<UI_I_DatastoreTableItem | null>(null)
606
+ const setSelectedStorageIdLocal = (datastore: UI_I_DatastoreTableItem) => {
607
+ selectedStorageLocal.value = {
608
+ id: datastore.id,
609
+ } as UI_I_DatastoreTableItem
610
+ }
596
611
  </script>
597
612
 
598
613
  <style>
@@ -157,7 +157,7 @@ const onHideFileModal = (): void => {
157
157
  }, 0)
158
158
  }
159
159
  const onSelectFile = (file: UI_I_FileTreeNode): void => {
160
- source.value = file.path
160
+ source.value = file.path.replace(/^([^:]+):/, '[$1]:')
161
161
  }
162
162
  const fileTypes = computed<UI_I_OptionItem[]>(() =>
163
163
  fileTypesFunc(localization.value)
@@ -56,6 +56,11 @@ const emits = defineEmits<{
56
56
  }>()
57
57
 
58
58
  const localization = computed<UI_I_Localization>(() => useLocal())
59
+
60
+ onMounted(() => {
61
+ const cdDvdMediaInputElement = document.getElementById('vm-wizard-dvd-media-input')
62
+ cdDvdMediaInputElement?.classList.remove('text-ellipsis')
63
+ })
59
64
  </script>
60
65
 
61
66
  <style>
@@ -242,6 +242,7 @@ const localization = computed<UI_I_Localization>(() => useLocal())
242
242
  .cpu-info-block {
243
243
  :deep(.help-text) {
244
244
  margin-bottom: 12px;
245
+ color: var(--stack-block-text-color);
245
246
  }
246
247
  :deep(.cpu-more-info) {
247
248
  font-size: 13px;
@@ -106,6 +106,8 @@ const onSelectReservation = (value: number): void => {
106
106
 
107
107
  .ui-checkbox-label {
108
108
  min-height: unset !important;
109
+ height: max-content;
110
+ word-break: break-word;
109
111
  }
110
112
  }
111
113
  </style>