bfg-common 1.6.23 → 1.6.25
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.
- package/assets/localization/local_be.json +65 -5
- package/assets/localization/local_en.json +72 -12
- package/assets/localization/local_hy.json +66 -6
- package/assets/localization/local_kk.json +65 -5
- package/assets/localization/local_ru.json +71 -11
- package/assets/localization/local_zh.json +65 -5
- package/assets/scss/common/theme.scss +2 -2
- package/components/atoms/stack/StackBlock.vue +1 -1
- package/components/common/adapterManager/addAdapterModal/AddAdapterModalNew.vue +1 -1
- package/components/common/adapterManager/addAdapterWarningModal/AddAdapterWarningModalNew.vue +0 -1
- package/components/common/adapterManager/ui/table/adapters/AdaptersNew.vue +1 -0
- package/components/common/configure/physicalAdapters/PhysicalAdapters.vue +6 -0
- package/components/common/configure/physicalAdapters/PhysicalAdaptersNew.vue +219 -192
- package/components/common/configure/physicalAdapters/PhysicalAdaptersOld.vue +6 -4
- package/components/common/configure/physicalAdapters/buttons/Buttons.vue +1 -0
- package/components/common/configure/physicalAdapters/modals/edit/Edit.vue +26 -1
- package/components/common/configure/physicalAdapters/modals/edit/EditNew.vue +30 -1
- package/components/common/configure/physicalAdapters/modals/edit/lib/models/interfaces.ts +5 -0
- package/components/common/configure/physicalAdapters/modals/edit/lib/validations/validations.ts +19 -0
- package/components/common/configure/physicalAdapters/tableView/TableViewNew.vue +12 -1
- package/components/common/configure/physicalAdapters/tableView/lib/config/physicalAdaptersTableConfigNew.ts +21 -21
- package/components/common/configure/physicalAdapters/tableView/lib/config/settings.ts +12 -5
- package/components/common/configure/physicalAdapters/tableView/lib/models/interfaces.ts +4 -1
- package/components/common/diagramMain/DiagramMain.vue +6 -0
- package/components/common/diagramMain/modals/Modals.vue +4 -0
- package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +2 -2
- package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +1 -1
- package/components/common/diagramMain/modals/migrateVmkernelAdapter/MigrateVmkernelAdapter.vue +2 -2
- package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +1 -1
- package/components/common/layout/theHeader/ThemeSwitch.vue +1 -1
- package/components/common/layout/theHeader/userMenu/modals/changePassword/New.vue +8 -9
- package/components/common/layout/theHeader/userMenu/modals/preferences/New.vue +4 -0
- package/components/common/layout/theHeader/userMenu/modals/preferences/Old.vue +9 -2
- package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/ChangeLanguage.vue +11 -7
- package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/DefaultConsole.vue +7 -1
- package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/lib/config/consoleOptions.ts +8 -5
- package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/TimeFormat.vue +9 -5
- package/components/common/layout/theHeader/userMenu/modals/preferences/view/Old.vue +5 -9
- package/components/common/layout/theHeader/userMenu/modals/preferences/view/View.vue +9 -6
- package/components/common/mainNavigationPanel/MainNavigationPanelNew.vue +3 -1
- package/components/common/monitor/advanced/table/tableNew/lib/utils/constructBody.ts +27 -27
- package/components/common/monitor/lib/utils/local_be.json +39 -31
- package/components/common/monitor/lib/utils/local_en.json +39 -31
- package/components/common/monitor/lib/utils/local_hy.json +39 -31
- package/components/common/monitor/lib/utils/local_kk.json +39 -31
- package/components/common/monitor/lib/utils/local_ru.json +39 -31
- package/components/common/monitor/lib/utils/local_zh.json +39 -31
- package/components/common/noDataProvided/NoDataProvidedNew.vue +1 -1
- package/components/common/pages/backups/modals/createBackup/datastores/tableView/new/lib/config/table.ts +4 -4
- package/components/common/pages/backups/modals/createBackup/datastores/tableView/old/lib/config/table.ts +4 -4
- package/components/common/pages/scheduledTasks/table/lib/models/enums.ts +9 -0
- package/components/common/pages/scheduledTasks/table/new/New.vue +12 -10
- package/components/common/pages/tasks/Tasks.vue +4 -1
- package/components/common/pages/tasks/table/Table.vue +24 -22
- package/components/common/split/vertical/New.vue +42 -8
- package/components/common/split/vertical/Old.vue +31 -2
- package/components/common/split/vertical/Vertical.vue +4 -0
- package/components/common/vm/actions/add/New.vue +21 -6
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/New.vue +1 -0
- package/components/common/vm/actions/common/select/storage/new/lib/config/table.ts +13 -15
- package/components/common/vm/actions/confirm/Confirm.vue +3 -0
- package/components/common/vm/snapshots/DetailView.vue +6 -6
- package/components/common/wizards/datastore/add/New.vue +6 -0
- package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceNew.vue +1 -1
- package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/New.vue +1 -1
- package/components/common/wizards/network/add/Add.vue +13 -2
- package/components/common/wizards/network/add/AddNew.vue +22 -26
- package/components/common/wizards/network/add/lib/config/initialData.ts +4 -4
- package/components/common/wizards/network/add/lib/utils/utils.ts +1 -1
- package/components/common/wizards/network/add/steps/ipFourSettings/IpFourSettingsNew.vue +2 -8
- package/components/common/wizards/network/add/steps/portProperties/PortPropertiesNew.vue +2 -8
- package/components/common/wizards/network/add/steps/selectTargetDevice/SelectTargetDeviceNew.vue +10 -3
- package/components/common/wizards/network/add/steps/selectTargetDevice/modals/new/SelectNetwork.vue +5 -1
- package/components/common/wizards/network/add/validations/common.ts +1 -1
- package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/New.vue +31 -13
- package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/lib/config/clusterTable.ts +340 -0
- package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/lib/config/hostTable.ts +3 -1
- package/components/common/wizards/vm/migrate/steps/selectStorage/New.vue +5 -4
- package/components/common/wizards/vm/migrate/steps/selectStorage/configure/batch/New.vue +4 -0
- package/components/common/wizards/vm/migrate/steps/selectStorage/configure/batch/table/new/New.vue +3 -1
- package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/new/lib/config/diskTable.ts +8 -3
- package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/old/lib/config/diskTable.ts +7 -1
- package/lib/models/store/tasks/enums.ts +3 -0
- package/lib/models/store/tasks/types.ts +7 -6
- package/package.json +2 -2
- package/store/tasks/actions.ts +26 -8
- package/store/tasks/mappers/recentTasks.ts +1 -0
|
@@ -3,13 +3,22 @@
|
|
|
3
3
|
:id="props.elementId"
|
|
4
4
|
:class="['fill-parent vertical', { dragging: props.isDrag }]"
|
|
5
5
|
>
|
|
6
|
-
<div
|
|
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
|
|
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
|
-
.
|
|
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-
|
|
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:
|
|
116
|
-
top:
|
|
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
|
|
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
|
|
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
|
-
|
|
59
|
-
|
|
58
|
+
id="name-alert-wrapper"
|
|
59
|
+
:class="[{ 'mb-4': !isNameAlertWrapperEmpty }]"
|
|
60
60
|
></div>
|
|
61
61
|
<ui-wizard-subtitle
|
|
62
|
-
|
|
63
|
-
|
|
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="
|
|
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>
|
|
@@ -9,9 +9,7 @@ import type { UI_I_StatusData } from '~/components/common/vm/actions/common/sele
|
|
|
9
9
|
import { datastoreLocalizationByState } from '~/components/common/lib/config/states'
|
|
10
10
|
import { getStatus } from '~/components/common/vm/actions/common/select/storage/new/lib/utils/utils'
|
|
11
11
|
|
|
12
|
-
export const tableDataFunc = (
|
|
13
|
-
localization: UI_I_Localization
|
|
14
|
-
): UI_I_DataTable => ({
|
|
12
|
+
export const tableDataFunc = (localization: UI_I_Localization): UI_I_DataTable => ({
|
|
15
13
|
id: 'select-storage',
|
|
16
14
|
header: [
|
|
17
15
|
{
|
|
@@ -31,7 +29,7 @@ export const tableDataFunc = (
|
|
|
31
29
|
text: localization.inventorySummary.state,
|
|
32
30
|
isSortable: false,
|
|
33
31
|
sort: 'asc',
|
|
34
|
-
sortColumn:
|
|
32
|
+
sortColumn: false,
|
|
35
33
|
width: '160px',
|
|
36
34
|
show: true,
|
|
37
35
|
filter: true,
|
|
@@ -42,7 +40,7 @@ export const tableDataFunc = (
|
|
|
42
40
|
text: localization.common.capacity,
|
|
43
41
|
isSortable: false,
|
|
44
42
|
sort: 'asc',
|
|
45
|
-
sortColumn:
|
|
43
|
+
sortColumn: false,
|
|
46
44
|
width: '150px',
|
|
47
45
|
show: true,
|
|
48
46
|
filter: true,
|
|
@@ -53,7 +51,7 @@ export const tableDataFunc = (
|
|
|
53
51
|
text: localization.common.provisioned,
|
|
54
52
|
isSortable: false,
|
|
55
53
|
sort: 'asc',
|
|
56
|
-
sortColumn:
|
|
54
|
+
sortColumn: false,
|
|
57
55
|
width: '150px',
|
|
58
56
|
show: true,
|
|
59
57
|
filter: true,
|
|
@@ -64,7 +62,7 @@ export const tableDataFunc = (
|
|
|
64
62
|
text: localization.common.free,
|
|
65
63
|
isSortable: false,
|
|
66
64
|
sort: 'asc',
|
|
67
|
-
sortColumn:
|
|
65
|
+
sortColumn: false,
|
|
68
66
|
width: '150px',
|
|
69
67
|
show: true,
|
|
70
68
|
filter: true,
|
|
@@ -75,7 +73,7 @@ export const tableDataFunc = (
|
|
|
75
73
|
text: localization.common.used,
|
|
76
74
|
isSortable: false,
|
|
77
75
|
sort: 'asc',
|
|
78
|
-
sortColumn:
|
|
76
|
+
sortColumn: false,
|
|
79
77
|
width: '150px',
|
|
80
78
|
show: true,
|
|
81
79
|
filter: true,
|
|
@@ -86,7 +84,7 @@ export const tableDataFunc = (
|
|
|
86
84
|
text: localization.common.type,
|
|
87
85
|
isSortable: false,
|
|
88
86
|
sort: 'asc',
|
|
89
|
-
sortColumn:
|
|
87
|
+
sortColumn: false,
|
|
90
88
|
width: '120px',
|
|
91
89
|
show: true,
|
|
92
90
|
filter: true,
|
|
@@ -97,7 +95,7 @@ export const tableDataFunc = (
|
|
|
97
95
|
text: localization.common.thinProvisioning,
|
|
98
96
|
isSortable: false,
|
|
99
97
|
sort: 'asc',
|
|
100
|
-
sortColumn:
|
|
98
|
+
sortColumn: false,
|
|
101
99
|
width: '160px',
|
|
102
100
|
show: true,
|
|
103
101
|
filter: true,
|
|
@@ -108,7 +106,7 @@ export const tableDataFunc = (
|
|
|
108
106
|
text: localization.common.access,
|
|
109
107
|
isSortable: false,
|
|
110
108
|
sort: 'asc',
|
|
111
|
-
sortColumn:
|
|
109
|
+
sortColumn: false,
|
|
112
110
|
width: '120px',
|
|
113
111
|
show: true,
|
|
114
112
|
filter: true,
|
|
@@ -119,7 +117,7 @@ export const tableDataFunc = (
|
|
|
119
117
|
text: localization.common.hardwareAcceleration,
|
|
120
118
|
isSortable: false,
|
|
121
119
|
sort: 'asc',
|
|
122
|
-
sortColumn:
|
|
120
|
+
sortColumn: false,
|
|
123
121
|
width: '200px',
|
|
124
122
|
show: true,
|
|
125
123
|
filter: true,
|
|
@@ -130,7 +128,7 @@ export const tableDataFunc = (
|
|
|
130
128
|
text: localization.common.driverType,
|
|
131
129
|
isSortable: false,
|
|
132
130
|
sort: 'asc',
|
|
133
|
-
sortColumn:
|
|
131
|
+
sortColumn: false,
|
|
134
132
|
width: '150px',
|
|
135
133
|
show: true,
|
|
136
134
|
filter: true,
|
|
@@ -141,7 +139,7 @@ export const tableDataFunc = (
|
|
|
141
139
|
text: localization.common.device,
|
|
142
140
|
isSortable: false,
|
|
143
141
|
sort: 'asc',
|
|
144
|
-
sortColumn:
|
|
142
|
+
sortColumn: false,
|
|
145
143
|
width: '150px',
|
|
146
144
|
show: true,
|
|
147
145
|
filter: true,
|
|
@@ -152,7 +150,7 @@ export const tableDataFunc = (
|
|
|
152
150
|
text: localization.common.storageIoControl,
|
|
153
151
|
isSortable: false,
|
|
154
152
|
sort: 'asc',
|
|
155
|
-
sortColumn:
|
|
153
|
+
sortColumn: false,
|
|
156
154
|
width: '180px',
|
|
157
155
|
show: true,
|
|
158
156
|
filter: true,
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
:sub-title="props.subTitle"
|
|
5
5
|
:description="props.description"
|
|
6
6
|
:modal-texts="props.modalTexts"
|
|
7
|
+
:loading="props.isLoading"
|
|
7
8
|
@hide-modal="emits('hide')"
|
|
8
9
|
@confirm="emits('confirm')"
|
|
9
10
|
>
|
|
@@ -22,9 +23,11 @@ const props = withDefaults(
|
|
|
22
23
|
subTitle: string
|
|
23
24
|
description: string
|
|
24
25
|
modalTexts?: UI_I_ModalTexts
|
|
26
|
+
isLoading?: boolean
|
|
25
27
|
}>(),
|
|
26
28
|
{
|
|
27
29
|
modalTexts: undefined,
|
|
30
|
+
isLoading: false
|
|
28
31
|
}
|
|
29
32
|
)
|
|
30
33
|
|
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
>
|
|
8
8
|
<tbody>
|
|
9
9
|
<tr>
|
|
10
|
-
<td class="left">{{ localization.common.name }}</td>
|
|
10
|
+
<td class="left" data-id="vm-snapshot-name-label">{{ localization.common.name }}</td>
|
|
11
11
|
<td class="left snapshot-name-label" data-id="vm-snapshot-name">
|
|
12
12
|
{{ detailData.name }}
|
|
13
13
|
</td>
|
|
14
14
|
</tr>
|
|
15
15
|
<tr>
|
|
16
|
-
<td class="left">{{ localization.common.description }}</td>
|
|
16
|
+
<td class="left" data-id="vm-snapshot-description-label">{{ localization.common.description }}</td>
|
|
17
17
|
<td
|
|
18
18
|
class="left snapshot-name-label"
|
|
19
19
|
data-id="vm-snapshot-description"
|
|
@@ -22,17 +22,17 @@
|
|
|
22
22
|
</td>
|
|
23
23
|
</tr>
|
|
24
24
|
<tr>
|
|
25
|
-
<td class="left">{{ localization.snapshots.timestamp }}</td>
|
|
25
|
+
<td class="left" data-id="vm-snapshot-timestamp-label">{{ localization.snapshots.timestamp }}</td>
|
|
26
26
|
<td class="left snapshot-name-label" data-id="vm-snapshot-timestamp">
|
|
27
27
|
{{ detailData.timestamp }}
|
|
28
28
|
</td>
|
|
29
29
|
</tr>
|
|
30
30
|
<tr>
|
|
31
|
-
<td class="left">{{ localization.common.size }}</td>
|
|
31
|
+
<td class="left" data-id="vm-snapshot-size-label">{{ localization.common.size }}</td>
|
|
32
32
|
<td class="left snapshot-name-label">{{ detailData.size }}</td>
|
|
33
33
|
</tr>
|
|
34
34
|
<tr>
|
|
35
|
-
<td class="left">
|
|
35
|
+
<td class="left" data-id="vm-snapshot-of-memory-label">
|
|
36
36
|
{{ localization.common.snapshotTheVirtualMachinesMemory }}
|
|
37
37
|
</td>
|
|
38
38
|
<td class="left snapshot-name-label" data-id="vm-snapshot-of-memory">
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
</td>
|
|
41
41
|
</tr>
|
|
42
42
|
<tr>
|
|
43
|
-
<td class="left">
|
|
43
|
+
<td class="left" data-id="vm-snapshot-file-system-label">
|
|
44
44
|
{{ localization.common.quiesceGuestFileSystem }}
|
|
45
45
|
</td>
|
|
46
46
|
<td
|
|
@@ -256,4 +256,10 @@ const onCreateDatastore = (): void => emits('submit')
|
|
|
256
256
|
padding: 10px 12px;
|
|
257
257
|
}
|
|
258
258
|
}
|
|
259
|
+
:deep(.ui-wizard-content-right-container) {
|
|
260
|
+
padding: 0 30px;
|
|
261
|
+
}
|
|
262
|
+
:deep(.ui-wizard-subtitle-container) + *, :deep(.ui-wizard-subtitle-container) {
|
|
263
|
+
padding-left: 2px;
|
|
264
|
+
}
|
|
259
265
|
</style>
|
|
@@ -618,9 +618,20 @@ const finalValidationFunc = async (
|
|
|
618
618
|
const stepId = wizard.getStepIdByFieldName(fieldName)
|
|
619
619
|
|
|
620
620
|
if (stepId !== -1) {
|
|
621
|
+
let message = ''
|
|
622
|
+
|
|
623
|
+
if (validationFields[fieldName]) {
|
|
624
|
+
message = `${validationFields[
|
|
625
|
+
fieldName
|
|
626
|
+
][0].toUpperCase()}${validationFields[fieldName].substring(1)}`
|
|
627
|
+
|
|
628
|
+
message =
|
|
629
|
+
message.charAt(message.length - 1) !== '.' ? message + '.' : message
|
|
630
|
+
}
|
|
631
|
+
|
|
621
632
|
stepHasError = wizard.setValidation(stepId, fieldName, {
|
|
622
|
-
fieldMessage:
|
|
623
|
-
alertMessage:
|
|
633
|
+
fieldMessage: message,
|
|
634
|
+
alertMessage: message,
|
|
624
635
|
})
|
|
625
636
|
}
|
|
626
637
|
}
|
|
@@ -44,22 +44,21 @@
|
|
|
44
44
|
>
|
|
45
45
|
<template #subTitle>
|
|
46
46
|
<div ref="selectTargetDeviceBlock">
|
|
47
|
-
<div class="
|
|
47
|
+
<div class="alert-block flex flex-col">
|
|
48
48
|
<template
|
|
49
49
|
v-for="(message, field, key) in selectedStep.fields"
|
|
50
50
|
:key="key"
|
|
51
51
|
>
|
|
52
52
|
<ui-alert
|
|
53
|
+
v-if="!!message.alert"
|
|
53
54
|
:messages="[message.alert]"
|
|
54
55
|
test-id="select-target-device-alert"
|
|
55
|
-
:class="{
|
|
56
|
-
'mb-4':
|
|
57
|
-
props.alertMessages[selectedStep.id].length - 1 === key,
|
|
58
|
-
}"
|
|
59
56
|
size="md"
|
|
60
57
|
@hide="emits('hide-alert', selectedStep.id, field)"
|
|
61
58
|
/>
|
|
62
59
|
</template>
|
|
60
|
+
</div>
|
|
61
|
+
<div class="subtitle-block flex flex-col">
|
|
63
62
|
<ui-wizard-subtitle :sub-title="selectedStep.subTitle" />
|
|
64
63
|
<ui-line margin="12px 0 0" />
|
|
65
64
|
</div>
|
|
@@ -89,22 +88,21 @@
|
|
|
89
88
|
>
|
|
90
89
|
<template #subTitle>
|
|
91
90
|
<div ref="createStandardSwitchBlock">
|
|
92
|
-
<div class="
|
|
91
|
+
<div class="alert-block flex flex-col">
|
|
93
92
|
<template
|
|
94
93
|
v-for="(message, field, key) in selectedStep.fields"
|
|
95
94
|
:key="key"
|
|
96
95
|
>
|
|
97
96
|
<ui-alert
|
|
97
|
+
v-if="!!message.alert"
|
|
98
98
|
:messages="[message.alert]"
|
|
99
99
|
test-id="create-standard-switch-alert"
|
|
100
|
-
:class="{
|
|
101
|
-
'mb-4':
|
|
102
|
-
props.alertMessages[selectedStep.id].length - 1 === key,
|
|
103
|
-
}"
|
|
104
100
|
size="md"
|
|
105
101
|
@hide="emits('hide-alert', selectedStep.id, field)"
|
|
106
102
|
/>
|
|
107
103
|
</template>
|
|
104
|
+
</div>
|
|
105
|
+
<div class="subtitle-block flex flex-col">
|
|
108
106
|
<ui-wizard-subtitle :sub-title="selectedStep.subTitle" />
|
|
109
107
|
<ui-line margin="12px 0 0" />
|
|
110
108
|
</div>
|
|
@@ -146,22 +144,21 @@
|
|
|
146
144
|
>
|
|
147
145
|
<template #subTitle>
|
|
148
146
|
<div ref="portPropertiesBlock">
|
|
149
|
-
<div class="
|
|
147
|
+
<div class="alert-block flex flex-col">
|
|
150
148
|
<template
|
|
151
149
|
v-for="(message, field, key) in selectedStep.fields"
|
|
152
150
|
:key="key"
|
|
153
151
|
>
|
|
154
152
|
<ui-alert
|
|
153
|
+
v-if="!!message.alert"
|
|
155
154
|
:messages="[message.alert]"
|
|
156
155
|
test-id="port-properties-alert"
|
|
157
|
-
:class="{
|
|
158
|
-
'mb-4':
|
|
159
|
-
props.alertMessages[selectedStep.id].length - 1 === key,
|
|
160
|
-
}"
|
|
161
156
|
size="md"
|
|
162
157
|
@hide="emits('hide-alert', selectedStep.id, field)"
|
|
163
158
|
/>
|
|
164
159
|
</template>
|
|
160
|
+
</div>
|
|
161
|
+
<div class="subtitle-block flex flex-col">
|
|
165
162
|
<ui-wizard-subtitle :sub-title="selectedStep.subTitle" />
|
|
166
163
|
<ui-line margin="12px 0 0" />
|
|
167
164
|
</div>
|
|
@@ -190,22 +187,21 @@
|
|
|
190
187
|
>
|
|
191
188
|
<template #subTitle>
|
|
192
189
|
<div ref="ipFourSettingsBlock">
|
|
193
|
-
<div class="
|
|
190
|
+
<div class="alert-block flex flex-col">
|
|
194
191
|
<template
|
|
195
192
|
v-for="(message, field, key) in selectedStep.fields"
|
|
196
193
|
:key="key"
|
|
197
194
|
>
|
|
198
195
|
<ui-alert
|
|
196
|
+
v-if="!!message.alert"
|
|
199
197
|
:messages="[message.alert]"
|
|
200
198
|
test-id="ip-four-settings-alert"
|
|
201
|
-
:class="{
|
|
202
|
-
'mb-4':
|
|
203
|
-
props.alertMessages[selectedStep.id].length - 1 === key,
|
|
204
|
-
}"
|
|
205
199
|
size="md"
|
|
206
200
|
@hide="emits('hide-alert', selectedStep.id, field)"
|
|
207
201
|
/>
|
|
208
202
|
</template>
|
|
203
|
+
</div>
|
|
204
|
+
<div class="subtitle-block flex flex-col">
|
|
209
205
|
<ui-wizard-subtitle :sub-title="selectedStep.subTitle" />
|
|
210
206
|
<ui-line margin="12px 0 0" />
|
|
211
207
|
</div>
|
|
@@ -233,22 +229,21 @@
|
|
|
233
229
|
>
|
|
234
230
|
<template #subTitle>
|
|
235
231
|
<div ref="connectionSettingsBlock">
|
|
236
|
-
<div class="
|
|
232
|
+
<div class="alert-block flex flex-col">
|
|
237
233
|
<template
|
|
238
234
|
v-for="(message, field, key) in selectedStep.fields"
|
|
239
235
|
:key="key"
|
|
240
236
|
>
|
|
241
237
|
<ui-alert
|
|
238
|
+
v-if="!!message.alert"
|
|
242
239
|
:messages="[message.alert]"
|
|
243
240
|
test-id="connection-settings-alert"
|
|
244
|
-
:class="{
|
|
245
|
-
'mb-4':
|
|
246
|
-
props.alertMessages[selectedStep.id].length - 1 === key,
|
|
247
|
-
}"
|
|
248
241
|
size="md"
|
|
249
242
|
@hide="emits('hide-alert', selectedStep.id, field)"
|
|
250
243
|
/>
|
|
251
244
|
</template>
|
|
245
|
+
</div>
|
|
246
|
+
<div class="subtitle-block flex flex-col">
|
|
252
247
|
<ui-wizard-subtitle :sub-title="selectedStep.subTitle" />
|
|
253
248
|
<ui-line margin="12px 0 0" />
|
|
254
249
|
</div>
|
|
@@ -463,6 +458,7 @@ const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> => {
|
|
|
463
458
|
}
|
|
464
459
|
:deep(.ui-wizard-content-with-subtitle) {
|
|
465
460
|
padding-right: 0;
|
|
461
|
+
scrollbar-gutter: unset;
|
|
466
462
|
}
|
|
467
463
|
}
|
|
468
464
|
|
|
@@ -477,7 +473,7 @@ const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> => {
|
|
|
477
473
|
:deep(.ui-alert-item) {
|
|
478
474
|
margin-bottom: 12px;
|
|
479
475
|
|
|
480
|
-
|
|
476
|
+
&:last-of-type {
|
|
481
477
|
margin-bottom: 16px;
|
|
482
478
|
}
|
|
483
479
|
}
|