bfg-common 1.5.756 → 1.5.759
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 +4 -2
- package/assets/localization/local_en.json +4 -2
- package/assets/localization/local_hy.json +4 -2
- package/assets/localization/local_kk.json +4 -2
- package/assets/localization/local_ru.json +8 -6
- package/assets/localization/local_zh.json +3 -1
- package/components/common/pages/backups/backupsNew/BackupsNew.vue +19 -107
- package/components/common/pages/backups/backupsNew/contextMenuView/ContextMenuView.vue +10 -16
- package/components/common/pages/backups/modals/createBackup/New.vue +22 -9
- package/components/common/pages/backups/modals/createBackup/configuration/ConfigurationNew.vue +17 -3
- package/components/common/pages/backups/modals/createBackup/configuration/backupWindow/BackupWindow.vue +29 -29
- package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/MaxBandwidth.vue +69 -69
- package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
- package/components/common/pages/backups/modals/createBackup/configuration/strategy/Strategy.vue +38 -38
- package/components/common/pages/backups/modals/createBackup/datastores/tableView/new/lib/config/table.ts +8 -8
- package/components/common/pages/backups/modals/createBackup/disks/tableView/new/TableView.vue +1 -1
- package/components/common/pages/backups/modals/createBackup/disks/tableView/new/lib/config/table.ts +7 -7
- package/components/common/pages/backups/modals/createBackup/general/GeneralNew.vue +1 -1
- package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +5 -5
- package/components/common/pages/backups/modals/createBackup/lib/config/steps.ts +1 -1
- package/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions.ts +14 -2
- package/components/common/pages/backups/modals/createBackup/lib/models/interfaces.ts +8 -8
- package/components/common/pages/backups/modals/createBackup/lib/validation/validations.ts +6 -6
- package/components/common/vm/snapshots/new/New.vue +12 -11
- package/components/common/vm/snapshots/new/Skeleton.vue +2 -26
- package/package.json +1 -1
- package/components/common/pages/backups/backupsNew/Skeleton.vue +0 -136
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<atoms-stack-block
|
|
3
|
-
:has-children="false"
|
|
4
|
-
test-id="backup-window-stack-block"
|
|
5
|
-
>
|
|
6
|
-
<template #stackBlockKey>
|
|
7
|
-
<span>{{ localization.common.backupWindow }}</span>
|
|
8
|
-
</template>
|
|
9
|
-
<template #stackBlockContent>
|
|
10
|
-
<input
|
|
11
|
-
v-model="model.start_window_min"
|
|
12
|
-
data-id="hours-input"
|
|
13
|
-
type="number"
|
|
14
|
-
class="hrs"
|
|
15
|
-
/>
|
|
16
|
-
</template>
|
|
17
|
-
</atoms-stack-block>
|
|
18
|
-
</template>
|
|
19
|
-
|
|
20
|
-
<script lang="ts" setup>
|
|
21
|
-
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
22
|
-
import type { UI_I_CreateBackupForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
|
|
23
|
-
|
|
24
|
-
const model = defineModel<UI_I_CreateBackupForm>({ required: true })
|
|
25
|
-
|
|
26
|
-
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
27
|
-
</script>
|
|
28
|
-
|
|
29
|
-
<style lang="scss" scoped></style>
|
|
1
|
+
<template>
|
|
2
|
+
<atoms-stack-block
|
|
3
|
+
:has-children="false"
|
|
4
|
+
test-id="backup-window-stack-block"
|
|
5
|
+
>
|
|
6
|
+
<template #stackBlockKey>
|
|
7
|
+
<span>{{ localization.common.backupWindow }}</span>
|
|
8
|
+
</template>
|
|
9
|
+
<template #stackBlockContent>
|
|
10
|
+
<input
|
|
11
|
+
v-model="model.start_window_min"
|
|
12
|
+
data-id="hours-input"
|
|
13
|
+
type="number"
|
|
14
|
+
class="hrs"
|
|
15
|
+
/>
|
|
16
|
+
</template>
|
|
17
|
+
</atoms-stack-block>
|
|
18
|
+
</template>
|
|
19
|
+
|
|
20
|
+
<script lang="ts" setup>
|
|
21
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
22
|
+
import type { UI_I_CreateBackupForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
|
|
23
|
+
|
|
24
|
+
const model = defineModel<UI_I_CreateBackupForm>({ required: true })
|
|
25
|
+
|
|
26
|
+
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
27
|
+
</script>
|
|
28
|
+
|
|
29
|
+
<style lang="scss" scoped></style>
|
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<atoms-stack-block
|
|
3
|
-
:has-children="false"
|
|
4
|
-
test-id="backup-max-bandwidth-stack-block"
|
|
5
|
-
>
|
|
6
|
-
<template #stackBlockKey>
|
|
7
|
-
<span>{{ localization.common.maxBandwidth }}</span>
|
|
8
|
-
</template>
|
|
9
|
-
<template #stackBlockContent>
|
|
10
|
-
<div class="flex-align-center">
|
|
11
|
-
<input
|
|
12
|
-
v-model="maxBindwidthLocal"
|
|
13
|
-
data-id="mbps-input"
|
|
14
|
-
type="number"
|
|
15
|
-
class="mbps"
|
|
16
|
-
/>
|
|
17
|
-
|
|
18
|
-
<common-select-input
|
|
19
|
-
v-model="selectedType"
|
|
20
|
-
:data="maxBandwidthOptionsLocal"
|
|
21
|
-
test-id="backup-max-bandwidth-type"
|
|
22
|
-
class="ml-1"
|
|
23
|
-
/>
|
|
24
|
-
</div>
|
|
25
|
-
</template>
|
|
26
|
-
</atoms-stack-block>
|
|
27
|
-
</template>
|
|
28
|
-
|
|
29
|
-
<script lang="ts" setup>
|
|
30
|
-
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
31
|
-
import type { UI_I_CreateBackupForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
|
|
32
|
-
import type { UI_T_BandwidthOption } from '~/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/models/types'
|
|
33
|
-
import type { UI_I_SelectInputItem } from '~/components/common/select/input/lib/models/interfaces'
|
|
34
|
-
import { maxBandwidthOptions } from '~/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options'
|
|
35
|
-
|
|
36
|
-
const model = defineModel<UI_I_CreateBackupForm>({ required: true })
|
|
37
|
-
|
|
38
|
-
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
39
|
-
const { $binary }: any = useNuxtApp()
|
|
40
|
-
|
|
41
|
-
const maxBandwidthOptionsLocal =
|
|
42
|
-
ref<UI_I_SelectInputItem[]>(maxBandwidthOptions)
|
|
43
|
-
|
|
44
|
-
const maxBindwidthLocal = computed<number>({
|
|
45
|
-
get() {
|
|
46
|
-
return selectedType.value === 1
|
|
47
|
-
? $binary.bToGb(model.value.bandwidth_limit)
|
|
48
|
-
: $binary.bToMb(model.value.bandwidth_limit)
|
|
49
|
-
},
|
|
50
|
-
set(newValue: number) {
|
|
51
|
-
model.value.bandwidth_limit =
|
|
52
|
-
selectedType.value === 1
|
|
53
|
-
? $binary.gbToB(newValue)
|
|
54
|
-
: $binary.mbToB(newValue)
|
|
55
|
-
},
|
|
56
|
-
})
|
|
57
|
-
|
|
58
|
-
const selectedType = ref<UI_T_BandwidthOption>(0)
|
|
59
|
-
watch(selectedType, (newValue) => {
|
|
60
|
-
if (newValue === 1) model.value.bandwidth_limit *= 1_024
|
|
61
|
-
else model.value.bandwidth_limit /= 1_024
|
|
62
|
-
})
|
|
63
|
-
</script>
|
|
64
|
-
|
|
65
|
-
<style lang="scss" scoped>
|
|
66
|
-
#backup-transaction-logs {
|
|
67
|
-
margin: 4px 4px 0 0;
|
|
68
|
-
}
|
|
69
|
-
</style>
|
|
1
|
+
<template>
|
|
2
|
+
<atoms-stack-block
|
|
3
|
+
:has-children="false"
|
|
4
|
+
test-id="backup-max-bandwidth-stack-block"
|
|
5
|
+
>
|
|
6
|
+
<template #stackBlockKey>
|
|
7
|
+
<span>{{ localization.common.maxBandwidth }}</span>
|
|
8
|
+
</template>
|
|
9
|
+
<template #stackBlockContent>
|
|
10
|
+
<div class="flex-align-center">
|
|
11
|
+
<input
|
|
12
|
+
v-model="maxBindwidthLocal"
|
|
13
|
+
data-id="mbps-input"
|
|
14
|
+
type="number"
|
|
15
|
+
class="mbps"
|
|
16
|
+
/>
|
|
17
|
+
|
|
18
|
+
<common-select-input
|
|
19
|
+
v-model="selectedType"
|
|
20
|
+
:data="maxBandwidthOptionsLocal"
|
|
21
|
+
test-id="backup-max-bandwidth-type"
|
|
22
|
+
class="ml-1"
|
|
23
|
+
/>
|
|
24
|
+
</div>
|
|
25
|
+
</template>
|
|
26
|
+
</atoms-stack-block>
|
|
27
|
+
</template>
|
|
28
|
+
|
|
29
|
+
<script lang="ts" setup>
|
|
30
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
31
|
+
import type { UI_I_CreateBackupForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
|
|
32
|
+
import type { UI_T_BandwidthOption } from '~/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/models/types'
|
|
33
|
+
import type { UI_I_SelectInputItem } from '~/components/common/select/input/lib/models/interfaces'
|
|
34
|
+
import { maxBandwidthOptions } from '~/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options'
|
|
35
|
+
|
|
36
|
+
const model = defineModel<UI_I_CreateBackupForm>({ required: true })
|
|
37
|
+
|
|
38
|
+
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
39
|
+
const { $binary }: any = useNuxtApp()
|
|
40
|
+
|
|
41
|
+
const maxBandwidthOptionsLocal =
|
|
42
|
+
ref<UI_I_SelectInputItem[]>(maxBandwidthOptions)
|
|
43
|
+
|
|
44
|
+
const maxBindwidthLocal = computed<number>({
|
|
45
|
+
get() {
|
|
46
|
+
return selectedType.value === 1
|
|
47
|
+
? $binary.bToGb(model.value.bandwidth_limit)
|
|
48
|
+
: $binary.bToMb(model.value.bandwidth_limit)
|
|
49
|
+
},
|
|
50
|
+
set(newValue: number) {
|
|
51
|
+
model.value.bandwidth_limit =
|
|
52
|
+
selectedType.value === 1
|
|
53
|
+
? $binary.gbToB(newValue)
|
|
54
|
+
: $binary.mbToB(newValue)
|
|
55
|
+
},
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
const selectedType = ref<UI_T_BandwidthOption>(0)
|
|
59
|
+
watch(selectedType, (newValue) => {
|
|
60
|
+
if (newValue === 1) model.value.bandwidth_limit *= 1_024
|
|
61
|
+
else model.value.bandwidth_limit /= 1_024
|
|
62
|
+
})
|
|
63
|
+
</script>
|
|
64
|
+
|
|
65
|
+
<style lang="scss" scoped>
|
|
66
|
+
#backup-transaction-logs {
|
|
67
|
+
margin: 4px 4px 0 0;
|
|
68
|
+
}
|
|
69
|
+
</style>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {UI_I_SelectInputItem} from "~/components/common/select/input/lib/models/interfaces";
|
|
2
|
-
|
|
3
|
-
export const maxBandwidthOptions: UI_I_SelectInputItem[] = [
|
|
4
|
-
{ label: 'Mbps', value: 0 },
|
|
5
|
-
{ label: 'Gbps', value: 1 },
|
|
6
|
-
]
|
|
1
|
+
import type {UI_I_SelectInputItem} from "~/components/common/select/input/lib/models/interfaces";
|
|
2
|
+
|
|
3
|
+
export const maxBandwidthOptions: UI_I_SelectInputItem[] = [
|
|
4
|
+
{ label: 'Mbps', value: 0 },
|
|
5
|
+
{ label: 'Gbps', value: 1 },
|
|
6
|
+
]
|
package/components/common/pages/backups/modals/createBackup/configuration/strategy/Strategy.vue
CHANGED
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<atoms-stack-block
|
|
3
|
-
:has-children="false"
|
|
4
|
-
test-id="backup-strategy-stack-block"
|
|
5
|
-
>
|
|
6
|
-
<template #stackBlockKey>
|
|
7
|
-
<span>{{ localization.common.strategy }}</span>
|
|
8
|
-
</template>
|
|
9
|
-
<template #stackBlockContent>
|
|
10
|
-
<common-select-input
|
|
11
|
-
v-model="model.strategy"
|
|
12
|
-
:data="strategyOptions"
|
|
13
|
-
test-id="backup-strategy"
|
|
14
|
-
/>
|
|
15
|
-
</template>
|
|
16
|
-
</atoms-stack-block>
|
|
17
|
-
</template>
|
|
18
|
-
|
|
19
|
-
<script lang="ts" setup>
|
|
20
|
-
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
21
|
-
import type { UI_I_CreateBackupForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
|
|
22
|
-
import type { UI_I_SelectInputItem } from '~/components/common/select/input/lib/models/interfaces'
|
|
23
|
-
import { strategyOptionsFunc } from '~/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions'
|
|
24
|
-
|
|
25
|
-
const model = defineModel<UI_I_CreateBackupForm>({ required: true })
|
|
26
|
-
|
|
27
|
-
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
28
|
-
|
|
29
|
-
const strategyOptions = ref<UI_I_SelectInputItem[]>(
|
|
30
|
-
strategyOptionsFunc(localization.value)
|
|
31
|
-
)
|
|
32
|
-
</script>
|
|
33
|
-
|
|
34
|
-
<style lang="scss" scoped>
|
|
35
|
-
#backup-transaction-logs {
|
|
36
|
-
margin: 4px 4px 0 0;
|
|
37
|
-
}
|
|
38
|
-
</style>
|
|
1
|
+
<template>
|
|
2
|
+
<atoms-stack-block
|
|
3
|
+
:has-children="false"
|
|
4
|
+
test-id="backup-strategy-stack-block"
|
|
5
|
+
>
|
|
6
|
+
<template #stackBlockKey>
|
|
7
|
+
<span>{{ localization.common.strategy }}</span>
|
|
8
|
+
</template>
|
|
9
|
+
<template #stackBlockContent>
|
|
10
|
+
<common-select-input
|
|
11
|
+
v-model="model.strategy"
|
|
12
|
+
:data="strategyOptions"
|
|
13
|
+
test-id="backup-strategy"
|
|
14
|
+
/>
|
|
15
|
+
</template>
|
|
16
|
+
</atoms-stack-block>
|
|
17
|
+
</template>
|
|
18
|
+
|
|
19
|
+
<script lang="ts" setup>
|
|
20
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
21
|
+
import type { UI_I_CreateBackupForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
|
|
22
|
+
import type { UI_I_SelectInputItem } from '~/components/common/select/input/lib/models/interfaces'
|
|
23
|
+
import { strategyOptionsFunc } from '~/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions'
|
|
24
|
+
|
|
25
|
+
const model = defineModel<UI_I_CreateBackupForm>({ required: true })
|
|
26
|
+
|
|
27
|
+
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
28
|
+
|
|
29
|
+
const strategyOptions = ref<UI_I_SelectInputItem[]>(
|
|
30
|
+
strategyOptionsFunc(localization.value)
|
|
31
|
+
)
|
|
32
|
+
</script>
|
|
33
|
+
|
|
34
|
+
<style lang="scss" scoped>
|
|
35
|
+
#backup-transaction-logs {
|
|
36
|
+
margin: 4px 4px 0 0;
|
|
37
|
+
}
|
|
38
|
+
</style>
|
|
@@ -7,7 +7,7 @@ import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
|
7
7
|
import type {
|
|
8
8
|
UI_I_BackupDatastore,
|
|
9
9
|
} from '~/components/common/pages/backups/modals/lib/models/interfaces'
|
|
10
|
-
import { datastoreLocalizationByState
|
|
10
|
+
import {backupStorageIconByState, datastoreLocalizationByState} from '~/components/common/lib/config/states'
|
|
11
11
|
import type {
|
|
12
12
|
I_BackupDatastoreChipStatus
|
|
13
13
|
} from "~/components/common/pages/backups/modals/createBackup/datastores/tableView/new/lib/models/interfaces";
|
|
@@ -22,7 +22,7 @@ export const getHeaderDataFunc = (
|
|
|
22
22
|
text: localization.common.name,
|
|
23
23
|
isSortable: true,
|
|
24
24
|
sort: 'asc',
|
|
25
|
-
width: '
|
|
25
|
+
width: '160px',
|
|
26
26
|
show: true,
|
|
27
27
|
filter: true
|
|
28
28
|
},
|
|
@@ -32,7 +32,7 @@ export const getHeaderDataFunc = (
|
|
|
32
32
|
text: localization.common.state,
|
|
33
33
|
isSortable: true,
|
|
34
34
|
sort: 'asc',
|
|
35
|
-
width: '
|
|
35
|
+
width: '160px',
|
|
36
36
|
show: true,
|
|
37
37
|
filter: true
|
|
38
38
|
},
|
|
@@ -42,7 +42,7 @@ export const getHeaderDataFunc = (
|
|
|
42
42
|
text: localization.common.capacity,
|
|
43
43
|
isSortable: true,
|
|
44
44
|
sort: 'asc',
|
|
45
|
-
width: '
|
|
45
|
+
width: '120px',
|
|
46
46
|
show: true,
|
|
47
47
|
filter: true
|
|
48
48
|
},
|
|
@@ -52,7 +52,7 @@ export const getHeaderDataFunc = (
|
|
|
52
52
|
text: localization.common.provisioned,
|
|
53
53
|
isSortable: true,
|
|
54
54
|
sort: 'asc',
|
|
55
|
-
width: '
|
|
55
|
+
width: '128px',
|
|
56
56
|
show: true,
|
|
57
57
|
filter: true
|
|
58
58
|
},
|
|
@@ -82,7 +82,7 @@ export const getHeaderDataFunc = (
|
|
|
82
82
|
text: localization.common.type,
|
|
83
83
|
isSortable: true,
|
|
84
84
|
sort: 'asc',
|
|
85
|
-
width: '
|
|
85
|
+
width: '104px',
|
|
86
86
|
show: true,
|
|
87
87
|
filter: true
|
|
88
88
|
},
|
|
@@ -92,7 +92,7 @@ export const getHeaderDataFunc = (
|
|
|
92
92
|
text: localization.common.location,
|
|
93
93
|
isSortable: true,
|
|
94
94
|
sort: 'asc',
|
|
95
|
-
width: '
|
|
95
|
+
width: '184px',
|
|
96
96
|
show: true,
|
|
97
97
|
filter: true
|
|
98
98
|
}
|
|
@@ -179,7 +179,7 @@ export const getBodyDataFunc = (
|
|
|
179
179
|
col: 'col0',
|
|
180
180
|
text: datastore.name,
|
|
181
181
|
data: {
|
|
182
|
-
iconClassName: [
|
|
182
|
+
iconClassName: `icon-${backupStorageIconByState[datastore.state]}`,
|
|
183
183
|
id: datastore.id
|
|
184
184
|
}
|
|
185
185
|
},
|
package/components/common/pages/backups/modals/createBackup/disks/tableView/new/TableView.vue
CHANGED
|
@@ -61,7 +61,7 @@ const texts = computed<UI_I_TableTexts>(() => ({
|
|
|
61
61
|
searchHere: localization.value.common.searchHere,
|
|
62
62
|
rowsPerPage: localization.value.common.rowsPerPage,
|
|
63
63
|
of: localization.value.common.of,
|
|
64
|
-
selected: localization.value.common.
|
|
64
|
+
selected: localization.value.common.selected2,
|
|
65
65
|
columns: localization.value.common.columns,
|
|
66
66
|
previous: localization.value.common.previous,
|
|
67
67
|
next: localization.value.common.next,
|
package/components/common/pages/backups/modals/createBackup/disks/tableView/new/lib/config/table.ts
CHANGED
|
@@ -19,7 +19,7 @@ export const getHeaderDataFunc = (
|
|
|
19
19
|
text: localization.common.source,
|
|
20
20
|
isSortable: true,
|
|
21
21
|
sort: 'asc',
|
|
22
|
-
width: '
|
|
22
|
+
width: '352px',
|
|
23
23
|
show: true,
|
|
24
24
|
filter: true
|
|
25
25
|
},
|
|
@@ -29,7 +29,7 @@ export const getHeaderDataFunc = (
|
|
|
29
29
|
text: localization.common.deviceType,
|
|
30
30
|
isSortable: true,
|
|
31
31
|
sort: 'asc',
|
|
32
|
-
width: '
|
|
32
|
+
width: '160px',
|
|
33
33
|
show: true,
|
|
34
34
|
filter: true
|
|
35
35
|
},
|
|
@@ -39,7 +39,7 @@ export const getHeaderDataFunc = (
|
|
|
39
39
|
text: localization.common.bus,
|
|
40
40
|
isSortable: true,
|
|
41
41
|
sort: 'asc',
|
|
42
|
-
width: '
|
|
42
|
+
width: '136px',
|
|
43
43
|
show: true,
|
|
44
44
|
filter: true
|
|
45
45
|
},
|
|
@@ -49,7 +49,7 @@ export const getHeaderDataFunc = (
|
|
|
49
49
|
text: localization.common.target,
|
|
50
50
|
isSortable: true,
|
|
51
51
|
sort: 'asc',
|
|
52
|
-
width: '
|
|
52
|
+
width: '136px',
|
|
53
53
|
show: true,
|
|
54
54
|
filter: true
|
|
55
55
|
},
|
|
@@ -59,7 +59,7 @@ export const getHeaderDataFunc = (
|
|
|
59
59
|
text: localization.common.capacity,
|
|
60
60
|
isSortable: true,
|
|
61
61
|
sort: 'asc',
|
|
62
|
-
width: '
|
|
62
|
+
width: '136px',
|
|
63
63
|
show: true,
|
|
64
64
|
filter: true
|
|
65
65
|
},
|
|
@@ -69,7 +69,7 @@ export const getHeaderDataFunc = (
|
|
|
69
69
|
text: localization.common.used,
|
|
70
70
|
isSortable: true,
|
|
71
71
|
sort: 'asc',
|
|
72
|
-
width: '
|
|
72
|
+
width: '136px',
|
|
73
73
|
show: true,
|
|
74
74
|
filter: true
|
|
75
75
|
},
|
|
@@ -79,7 +79,7 @@ export const getHeaderDataFunc = (
|
|
|
79
79
|
text: localization.common.free,
|
|
80
80
|
isSortable: true,
|
|
81
81
|
sort: 'asc',
|
|
82
|
-
width: '
|
|
82
|
+
width: '136px',
|
|
83
83
|
show: true,
|
|
84
84
|
filter: true
|
|
85
85
|
},
|
package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts
CHANGED
|
@@ -18,12 +18,12 @@ export const readyToCompleteOptions = (
|
|
|
18
18
|
// General
|
|
19
19
|
{
|
|
20
20
|
label: localization.common.name,
|
|
21
|
-
value: backupForm.name,
|
|
21
|
+
value: backupForm.name || '--',
|
|
22
22
|
iconClassName: 'icon-backup',
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
label: localization.common.description,
|
|
26
|
-
value: backupForm.description,
|
|
26
|
+
value: backupForm.description || '--',
|
|
27
27
|
},
|
|
28
28
|
]
|
|
29
29
|
|
|
@@ -31,7 +31,7 @@ export const readyToCompleteOptions = (
|
|
|
31
31
|
backupForm.disk_devices.forEach((disk_device, i) => {
|
|
32
32
|
result.push({
|
|
33
33
|
label: `${localization.common.disk} ${i + 1}`,
|
|
34
|
-
value: disk_device.location,
|
|
34
|
+
value: disk_device.location || '--',
|
|
35
35
|
iconClassName: 'icon-vSphere-dsVmDisk',
|
|
36
36
|
})
|
|
37
37
|
})
|
|
@@ -42,7 +42,7 @@ export const readyToCompleteOptions = (
|
|
|
42
42
|
)
|
|
43
43
|
result.push({
|
|
44
44
|
label: localization.common.datastore,
|
|
45
|
-
value: datastore?.name || '',
|
|
45
|
+
value: datastore?.name || '--',
|
|
46
46
|
iconClassName: 'vsphere-icon-datastore',
|
|
47
47
|
})
|
|
48
48
|
|
|
@@ -51,7 +51,7 @@ export const readyToCompleteOptions = (
|
|
|
51
51
|
label: localization.common.strategy,
|
|
52
52
|
value:
|
|
53
53
|
strategyOptions.find((option) => option.value === backupForm.strategy)
|
|
54
|
-
?.label || '',
|
|
54
|
+
?.label || '--',
|
|
55
55
|
})
|
|
56
56
|
|
|
57
57
|
const gbSizeByB = 1_073_741_824
|
|
@@ -62,7 +62,7 @@ export const stepsFunc = (
|
|
|
62
62
|
stepName: '',
|
|
63
63
|
title: localization.common.datastores,
|
|
64
64
|
|
|
65
|
-
subTitle: localization.common.
|
|
65
|
+
subTitle: localization.common.selectBackupStorageConfigurationDiskFiles,
|
|
66
66
|
status: UI_E_WIZARD_STATUS.INACTIVE,
|
|
67
67
|
isValid: true,
|
|
68
68
|
fields: {
|
|
@@ -2,12 +2,24 @@ import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
|
2
2
|
import type { UI_I_SelectInputItem } from '~/components/common/select/input/lib/models/interfaces'
|
|
3
3
|
|
|
4
4
|
export const strategyOptionsFunc = (
|
|
5
|
-
|
|
5
|
+
localization: UI_I_Localization
|
|
6
6
|
): UI_I_SelectInputItem[] => {
|
|
7
|
-
|
|
7
|
+
const { $text } = useNuxtApp()
|
|
8
|
+
const isLangEn = useLocalStorage('lang') === 'en_US'
|
|
9
|
+
|
|
10
|
+
let labels = [
|
|
8
11
|
{ label: localization.common.fullBackup, value: 0 },
|
|
9
12
|
{ label: localization.common.incrementalBackup, value: 1 },
|
|
10
13
|
{ label: localization.common.differentialBackup, value: 2 },
|
|
11
14
|
]
|
|
15
|
+
|
|
16
|
+
if(isLangEn) {
|
|
17
|
+
labels = labels.map((item) => ({
|
|
18
|
+
...item,
|
|
19
|
+
label: $text.toCapitalizeEveryWord(item.label)
|
|
20
|
+
}))
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return labels
|
|
12
24
|
}
|
|
13
25
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export interface UI_I_DynamicSteps {
|
|
2
|
-
general: number
|
|
3
|
-
disks: number
|
|
4
|
-
datastores: number
|
|
5
|
-
configuration: number
|
|
6
|
-
readyComplete: number
|
|
7
|
-
schedulingOptions: number
|
|
8
|
-
}
|
|
1
|
+
export interface UI_I_DynamicSteps {
|
|
2
|
+
general: number
|
|
3
|
+
disks: number
|
|
4
|
+
datastores: number
|
|
5
|
+
configuration: number
|
|
6
|
+
readyComplete: number
|
|
7
|
+
schedulingOptions: number
|
|
8
|
+
}
|
|
@@ -20,7 +20,7 @@ export const checkName = async (
|
|
|
20
20
|
if (!name) {
|
|
21
21
|
stepHasError = wizard.setValidation(dynamicSteps.general, 'name', {
|
|
22
22
|
fieldMessage: localization.common.fieldRequired,
|
|
23
|
-
alertMessage:
|
|
23
|
+
alertMessage: ''
|
|
24
24
|
})
|
|
25
25
|
wizard.setLoader(false)
|
|
26
26
|
return {
|
|
@@ -53,7 +53,7 @@ export const checkName = async (
|
|
|
53
53
|
|
|
54
54
|
if (stepErrorMessage) {
|
|
55
55
|
stepHasError = wizard.setValidation(dynamicSteps.general, 'name', {
|
|
56
|
-
fieldMessage:
|
|
56
|
+
fieldMessage: ' ',
|
|
57
57
|
alertMessage: stepErrorMessage
|
|
58
58
|
})
|
|
59
59
|
} else if (wizard.hasMessage(dynamicSteps.general, 'name')) {
|
|
@@ -82,8 +82,8 @@ export const checkDisks = (
|
|
|
82
82
|
|
|
83
83
|
if (!isValidStores) {
|
|
84
84
|
stepHasError = wizard.setValidation(dynamicSteps.disks, 'disk_devices', {
|
|
85
|
-
fieldMessage: localization.common.
|
|
86
|
-
alertMessage: localization.common.
|
|
85
|
+
fieldMessage: localization.common.selectLeastOneDisk,
|
|
86
|
+
alertMessage: localization.common.selectLeastOneDisk
|
|
87
87
|
})
|
|
88
88
|
} else if (wizard.hasMessage(dynamicSteps.disks, 'disk_devices')) {
|
|
89
89
|
value = wizard.removeValidation(dynamicSteps.disks, 'disk_devices', value)
|
|
@@ -106,8 +106,8 @@ export const checkDatastore = (
|
|
|
106
106
|
|
|
107
107
|
if (!isValidStorage) {
|
|
108
108
|
stepHasError = wizard.setValidation(dynamicSteps.datastores, 'backup_storage', {
|
|
109
|
-
fieldMessage: localization.common.
|
|
110
|
-
alertMessage: localization.common.
|
|
109
|
+
fieldMessage: localization.common.selectBackupStorageToProceed,
|
|
110
|
+
alertMessage: localization.common.selectBackupStorageToProceed
|
|
111
111
|
})
|
|
112
112
|
} else if (wizard.hasMessage(dynamicSteps.datastores, 'backup_storage')) {
|
|
113
113
|
value = wizard.removeValidation(dynamicSteps.datastores, 'backup_storage', value)
|
|
@@ -227,7 +227,6 @@
|
|
|
227
227
|
</template>
|
|
228
228
|
|
|
229
229
|
<script setup lang="ts">
|
|
230
|
-
import { useTemplateRef } from 'vue'
|
|
231
230
|
import { useElementSize } from '@vueuse/core'
|
|
232
231
|
import type { UI_I_InfoBlock } from '~/node_modules/bfg-uikit/components/ui/infoBlock/models/interfaces'
|
|
233
232
|
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
@@ -269,14 +268,19 @@ const onSelectContextMenuItem = (actionType: UI_T_SnapshotActionType): void => {
|
|
|
269
268
|
emits('show-modal', actionType)
|
|
270
269
|
}
|
|
271
270
|
|
|
272
|
-
const
|
|
273
|
-
const { height } = useElementSize(
|
|
271
|
+
const detailsScrollBlock = ref<HTMLElement | null>(null)
|
|
272
|
+
const { height } = useElementSize(detailsScrollBlock)
|
|
273
|
+
const hasScroll = ref<boolean>(false)
|
|
274
|
+
const checkScroll = (): void => {
|
|
275
|
+
const element = detailsScrollBlock.value
|
|
276
|
+
if (element) {
|
|
277
|
+
hasScroll.value = element.scrollHeight > element.clientHeight
|
|
278
|
+
}
|
|
279
|
+
}
|
|
274
280
|
|
|
275
|
-
|
|
276
|
-
()
|
|
277
|
-
|
|
278
|
-
detailsElement.value?.scrollHeight > detailsElement.value?.clientHeight
|
|
279
|
-
)
|
|
281
|
+
watch(height, () => {
|
|
282
|
+
checkScroll()
|
|
283
|
+
})
|
|
280
284
|
</script>
|
|
281
285
|
|
|
282
286
|
<style>
|
|
@@ -429,9 +433,6 @@ const hasScroll = computed<boolean>(
|
|
|
429
433
|
line-height: 18px;
|
|
430
434
|
text-align: right;
|
|
431
435
|
}
|
|
432
|
-
:deep(.ui-main-info-block-item) {
|
|
433
|
-
grid-column-gap: 10px;
|
|
434
|
-
}
|
|
435
436
|
:deep(.ui-main-info-block-item-right) {
|
|
436
437
|
white-space: unset !important;
|
|
437
438
|
max-width: 50%;
|