bfg-common 1.5.735 → 1.5.737

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.
@@ -3304,7 +3304,8 @@
3304
3304
  "filterEvents": "Фільтраваць падзеі",
3305
3305
  "fromDate": "З даты",
3306
3306
  "toDate": "Па дату",
3307
- "addAtLeastOneInitiator": "Дадайце хаця б адзін ініцыятар."
3307
+ "addAtLeastOneInitiator": "Дадайце хаця б адзін ініцыятар.",
3308
+ "exportEvent": "Экспартаваць падзею"
3308
3309
  },
3309
3310
  "zabbix": {
3310
3311
  "zabbixVersions": "Zabbix версіі",
@@ -3308,7 +3308,8 @@
3308
3308
  "filterEvents": "Filter Events",
3309
3309
  "fromDate": "From date",
3310
3310
  "toDate": "To date",
3311
- "addAtLeastOneInitiator": "Add at least one initiator."
3311
+ "addAtLeastOneInitiator": "Add at least one initiator.",
3312
+ "exportEvent": "Export Event"
3312
3313
  },
3313
3314
  "zabbix": {
3314
3315
  "zabbixVersions": "Zabbix Versions",
@@ -3308,7 +3308,8 @@
3308
3308
  "filterEvents": "Ֆիլտրել իրադարձությունները",
3309
3309
  "fromDate": "Սկիզբ ամսաթիվ",
3310
3310
  "toDate": "Մինչ ամսաթիվ",
3311
- "addAtLeastOneInitiator": "Ավելացրեք առնվազն մեկ նախաձեռնող։"
3311
+ "addAtLeastOneInitiator": "Ավելացրեք առնվազն մեկ նախաձեռնող։",
3312
+ "exportEvent": "Արտահանել իրադարձությունը"
3312
3313
  },
3313
3314
  "zabbix": {
3314
3315
  "zabbixVersions": "Zabbix տարբերակները",
@@ -3307,7 +3307,8 @@
3307
3307
  "filterEvents": "Оқиғаларды сүзу",
3308
3308
  "fromDate": "Басталу күні",
3309
3309
  "toDate": "Аяқталу күні",
3310
- "addAtLeastOneInitiator": "Кемінде бір бастаушыны қосыңыз."
3310
+ "addAtLeastOneInitiator": "Кемінде бір бастаушыны қосыңыз.",
3311
+ "exportEvent": "Оқиғаны экспорттау"
3311
3312
  },
3312
3313
  "zabbix": {
3313
3314
  "zabbixVersions": "Zabbix нұсқалары",
@@ -3307,7 +3307,8 @@
3307
3307
  "filterEvents": "Фильтровать события",
3308
3308
  "fromDate": "С даты",
3309
3309
  "toDate": "По дату",
3310
- "addAtLeastOneInitiator": "Добавьте как минимум один инициатор."
3310
+ "addAtLeastOneInitiator": "Добавьте как минимум один инициатор.",
3311
+ "exportEvent": "Экспортировать событие"
3311
3312
  },
3312
3313
  "zabbix": {
3313
3314
  "zabbixVersions": "Версия Zabbix",
@@ -3305,7 +3305,8 @@
3305
3305
  "filterEvents": "筛选事件",
3306
3306
  "fromDate": "起始日期",
3307
3307
  "toDate": "结束日期",
3308
- "addAtLeastOneInitiator": "请至少添加一个发起者。"
3308
+ "addAtLeastOneInitiator": "请至少添加一个发起者。",
3309
+ "exportEvent": "导出事件"
3309
3310
  },
3310
3311
  "zabbix": {
3311
3312
  "zabbixVersions": "Zabbix 版本",
@@ -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
+ ]
@@ -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>
@@ -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
+ }
@@ -22,7 +22,7 @@
22
22
  </td>
23
23
  </tr>
24
24
  <tr>
25
- <td class="left">{{ localization.common.timestamp }}</td>
25
+ <td class="left">{{ localization.snapshots.timestamp }}</td>
26
26
  <td class="left snapshot-name-label" data-id="vm-snapshot-timestamp">
27
27
  {{ detailData.timestamp }}
28
28
  </td>
@@ -6,3 +6,6 @@ export type UI_T_SnapshotActionType =
6
6
  | 'delete_all'
7
7
  | 'group_take'
8
8
  | 'group_delete_all'
9
+
10
+ export type UI_T_TakeOrEdit = 'take' | 'edit' | 'groupTake'
11
+
@@ -0,0 +1,48 @@
1
+ <template>
2
+ <component
3
+ :is="currentComponent"
4
+ v-model:suspend-on-revert="suspendOnRevert"
5
+ :type="props.type"
6
+ :snapshot="props.snapshot"
7
+ :snapshots-count="props.snapshotsCount"
8
+ :vm-state="props.vmState"
9
+ @hide="emits('hide')"
10
+ @submit="emits('submit', suspendOnRevert)"
11
+ />
12
+ </template>
13
+
14
+ <script setup lang="ts">
15
+ import type { UI_I_SnapshotsTreeNode } from '~/store/inventory/modules/snapshots/lib/models/interfaces'
16
+ import type { UI_T_SnapshotActionType } from '~/components/common/vm/snapshots/lib/models/types'
17
+
18
+ const props = withDefaults(
19
+ defineProps<{
20
+ type: UI_T_SnapshotActionType
21
+ snapshot: UI_I_SnapshotsTreeNode | null
22
+ snapshotsCount: number
23
+ targets: string[]
24
+ vmState?: number | null
25
+ }>(),
26
+ {
27
+ vmState: null,
28
+ }
29
+ )
30
+
31
+ const emits = defineEmits<{
32
+ (event: 'hide'): void
33
+ (event: 'submit', value: boolean): void
34
+ }>()
35
+
36
+ const { $store }: any = useNuxtApp()
37
+
38
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
39
+ const currentComponent = computed(() =>
40
+ isNewView.value
41
+ ? defineAsyncComponent(() => import('./New.vue'))
42
+ : defineAsyncComponent(() => import('./Old.vue'))
43
+ )
44
+
45
+ const suspendOnRevert = ref<boolean>(false)
46
+ </script>
47
+
48
+ <style scoped lang="scss"></style>
@@ -0,0 +1,122 @@
1
+ <template>
2
+ <common-modals-confirmation
3
+ :headline="title"
4
+ :description="descriptionText"
5
+ :modal-texts="modalTextsLocal"
6
+ :loading="false"
7
+ :icon-name="modalIcon"
8
+ test-id="vm-snapshots-modal"
9
+ is-new-view
10
+ @hide-modal="emits('hide')"
11
+ @confirm="emits('submit')"
12
+ >
13
+ <template v-if="props.type === 'revert'" #otherContent>
14
+ <div class="confirm-modal-checkbox-content mt-4 p-3">
15
+ <ui-checkbox
16
+ v-model="suspendOnRevert"
17
+ :label-text="
18
+ localization.common
19
+ .suspendThisVirtualMachineWhenRevertingToSelectedSnapshot
20
+ "
21
+ :disabled="props.vmState === 2"
22
+ test-id="vm-snapshots-modal-revert-checkbox"
23
+ class="confirm-modal-checkbox flex items-start"
24
+ size="md"
25
+ />
26
+ </div>
27
+ </template>
28
+ </common-modals-confirmation>
29
+ </template>
30
+
31
+ <script setup lang="ts">
32
+ import type { UI_I_ModalTexts } from '~/node_modules/bfg-uikit/components/ui/modal/models/interfaces'
33
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
34
+ import type { UI_I_SnapshotsTreeNode } from '~/store/inventory/modules/snapshots/lib/models/interfaces'
35
+ import type { UI_T_SnapshotActionType } from '~/components/common/vm/snapshots/lib/models/types'
36
+ import { UI_E_TitleModal } from '~/components/common/vm/snapshots/modals/confirm/lib/models/enums'
37
+ import { modalTexts } from '~/components/common/vm/snapshots/modals/confirm/lib/config/modalTexts'
38
+
39
+ const suspendOnRevert = defineModel<boolean>('suspendOnRevert', {
40
+ required: true,
41
+ })
42
+ const props = defineProps<{
43
+ type: UI_T_SnapshotActionType
44
+ snapshot: UI_I_SnapshotsTreeNode | null
45
+ snapshotsCount: number
46
+ vmState: number | null
47
+ }>()
48
+
49
+ const emits = defineEmits<{
50
+ (event: 'hide'): void
51
+ (event: 'submit'): void
52
+ }>()
53
+
54
+ const localization = computed<UI_I_Localization>(() => useLocal())
55
+
56
+ const modalTextsLocal = computed<UI_I_ModalTexts>(() =>
57
+ modalTexts(localization.value, props.type)
58
+ )
59
+
60
+ const title = computed<string>(() =>
61
+ props.snapshotsCount === 1 && props.type === 'delete'
62
+ ? localization.value.snapshots.deleteTheLastSnapshot
63
+ : localization.value.snapshots[UI_E_TitleModal[props.type]] || ''
64
+ )
65
+
66
+ const modalIcon = computed<string>(() =>
67
+ props.type === 'delete_all' ||
68
+ (props.snapshotsCount === 1 && props.type === 'delete')
69
+ ? 'circle-warning'
70
+ : 'info-status'
71
+ )
72
+
73
+ const descriptionText = computed<string>(() => {
74
+ let description: string
75
+
76
+ switch (props.type) {
77
+ case 'delete_all':
78
+ description = localization.value.snapshots.deleteAllSnapshotsDescription
79
+ break
80
+
81
+ case 'revert':
82
+ description =
83
+ localization.value.snapshots.revertToSnapshotDescription.replace(
84
+ '{0}',
85
+ props.snapshot?.name || ''
86
+ )
87
+ break
88
+
89
+ default:
90
+ description =
91
+ props.snapshotsCount === 1
92
+ ? localization.value.snapshots.deleteLastSnapshotsDescription
93
+ : localization.value.snapshots.deleteSnapshotConfirmationDescription.replace(
94
+ '{0}',
95
+ props.snapshot?.name || ''
96
+ )
97
+ break
98
+ }
99
+
100
+ return description
101
+ })
102
+
103
+ const descriptionDeleteContent = computed<string>(() =>
104
+ props.snapshotsCount === 1
105
+ ? localization.value.snapshots.deleteLastSnapshotsDescription
106
+ : localization.value.snapshots.deleteSnapshotConfirmationDescription.replace(
107
+ '{0}',
108
+ props.snapshot?.name || ''
109
+ )
110
+ )
111
+ </script>
112
+
113
+ <style scoped lang="scss">
114
+ .confirm-modal-checkbox-content {
115
+ background-color: #e9ebed66;
116
+ border-radius: 8px;
117
+
118
+ .confirm-modal-checkbox {
119
+ height: max-content;
120
+ }
121
+ }
122
+ </style>
@@ -0,0 +1,140 @@
1
+ <template>
2
+ <atoms-modal
3
+ :title="title"
4
+ test-id="vm-snapshots-modal"
5
+ width="576px"
6
+ show
7
+ @hide="onHide"
8
+ @submit="onConfirm"
9
+ >
10
+ <template #modalBody>
11
+ <div v-if="props.type === 'revert'">
12
+ <p class="description-text" data-id="description-revert-content">
13
+ {{ descriptionRevertContent }}
14
+ </p>
15
+ <div class="flex-row mt-1">
16
+ <div
17
+ :class="[
18
+ 'clr-checkbox-wrapper flex-align-center w-100',
19
+ { disabled: props.vmState === 2 },
20
+ ]"
21
+ >
22
+ <input
23
+ id="suspend-on-revert"
24
+ v-model="suspendOnRevert"
25
+ :disabled="props.vmState === 2"
26
+ data-id="suspend-on-revert-checkbox"
27
+ type="checkbox"
28
+ class="checkbox-btn"
29
+ />
30
+ <label for="suspend-on-revert" class="clr-control-label">{{
31
+ localization.common
32
+ .suspendThisVirtualMachineWhenRevertingToSelectedSnapshot
33
+ }}</label>
34
+ </div>
35
+ </div>
36
+ </div>
37
+ <div v-else-if="props.type === 'delete'">
38
+ <p class="description-text" data-id="description-delete-content">
39
+ {{ descriptionDeleteContent }}
40
+ </p>
41
+ </div>
42
+ <div v-else-if="props.type === 'delete_all'">
43
+ <p class="description-text" data-id="delete-all-snapshots-description">
44
+ {{ localization.snapshots.deleteAllSnapshotsDescription }}
45
+ </p>
46
+ </div>
47
+ </template>
48
+ <template #modalFooter>
49
+ <button
50
+ id="snapshot-confirm-modal-close-button"
51
+ data-id="snapshot-confirm-modal-close-button"
52
+ class="btn btn-outline"
53
+ @click="onHide"
54
+ >
55
+ {{ localization.common.cancel }}
56
+ </button>
57
+ <button
58
+ id="snapshot-confirm-modal-apply-button"
59
+ data-id="snapshot-confirm-modal-apply-button"
60
+ class="btn btn-danger"
61
+ @click="onConfirm"
62
+ >
63
+ {{ titleConfirmButton }}
64
+ </button>
65
+ </template>
66
+ </atoms-modal>
67
+ </template>
68
+
69
+ <script setup lang="ts">
70
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
71
+ import type { UI_I_SnapshotsTreeNode } from '~/store/inventory/modules/snapshots/lib/models/interfaces'
72
+ import type { UI_T_SnapshotActionType } from '~/components/common/vm/snapshots/lib/models/types'
73
+ import {
74
+ UI_E_TitleConfirmModal,
75
+ UI_E_TitleModal,
76
+ } from '~/components/common/vm/snapshots/modals/confirm/lib/models/enums'
77
+
78
+ const suspendOnRevert = defineModel<boolean>('suspendOnRevert', {
79
+ required: true,
80
+ })
81
+ const props = defineProps<{
82
+ type: UI_T_SnapshotActionType
83
+ snapshot: UI_I_SnapshotsTreeNode | null
84
+ snapshotsCount: number
85
+ vmState: number | null
86
+ }>()
87
+
88
+ const emits = defineEmits<{
89
+ (event: 'hide'): void
90
+ (event: 'submit'): void
91
+ }>()
92
+
93
+ const localization = computed<UI_I_Localization>(() => useLocal())
94
+
95
+ const title = computed<string>(() =>
96
+ props.snapshotsCount === 1 && props.type === 'delete'
97
+ ? localization.value.snapshots.deleteTheLastSnapshot
98
+ : localization.value.snapshots[UI_E_TitleModal[props.type]] || ''
99
+ )
100
+
101
+ const titleConfirmButton = computed<string>(
102
+ () => localization.value.common[UI_E_TitleConfirmModal[props.type]] || ''
103
+ )
104
+
105
+ const descriptionRevertContent = computed<string>(() =>
106
+ localization.value.snapshots.revertToSnapshotDescription.replace(
107
+ '{0}',
108
+ props.snapshot?.name || ''
109
+ )
110
+ )
111
+
112
+ const descriptionDeleteContent = computed<string>(() =>
113
+ props.snapshotsCount === 1
114
+ ? localization.value.snapshots.deleteLastSnapshotsDescription
115
+ : localization.value.snapshots.deleteSnapshotConfirmationDescription.replace(
116
+ '{0}',
117
+ props.snapshot?.name || ''
118
+ )
119
+ )
120
+
121
+ const onHide = (): void => {
122
+ emits('hide')
123
+ }
124
+ const onConfirm = (): void => {
125
+ emits('submit')
126
+ }
127
+ </script>
128
+
129
+ <style scoped lang="scss">
130
+ .description-text {
131
+ font-size: 14px;
132
+ }
133
+
134
+ .clr-checkbox-wrapper.disabled {
135
+ .clr-control-label {
136
+ opacity: 0.3;
137
+ cursor: not-allowed;
138
+ }
139
+ }
140
+ </style>
@@ -0,0 +1,30 @@
1
+ import type { UI_I_ModalTexts } from '~/node_modules/bfg-uikit/components/ui/modal/models/interfaces'
2
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
3
+ import type {
4
+ UI_T_SnapshotActionType,
5
+ UI_T_TakeOrEdit,
6
+ } from '~/components/common/vm/snapshots/lib/models/types'
7
+
8
+ export const modalTexts = (
9
+ localization: UI_I_Localization,
10
+ type: UI_T_SnapshotActionType | UI_T_TakeOrEdit
11
+ ): UI_I_ModalTexts => {
12
+ const actionTextMap: Record<
13
+ UI_T_SnapshotActionType | UI_T_TakeOrEdit,
14
+ string
15
+ > = {
16
+ take: localization.common.create,
17
+ group_take: localization.common.create,
18
+ groupTake: localization.common.create,
19
+ edit: localization.common.save,
20
+ revert: localization.common.revert,
21
+ delete: localization.common.delete,
22
+ delete_all: localization.common.deleteAll,
23
+ group_delete_all: localization.common.deleteAll,
24
+ }
25
+
26
+ return {
27
+ button1: localization.common.cancel,
28
+ button2: actionTextMap[type],
29
+ }
30
+ }
@@ -0,0 +1,19 @@
1
+ export enum UI_E_TitleConfirmModal {
2
+ 'take' = '',
3
+ 'edit' = 'edit',
4
+ 'revert' = 'revert',
5
+ 'delete' = 'delete',
6
+ 'delete_all' = 'deleteAll',
7
+ 'group_delete_all' = 'deleteAll',
8
+ 'group_take' = '',
9
+ }
10
+
11
+ export enum UI_E_TitleModal {
12
+ 'take' = '',
13
+ 'edit' = '',
14
+ 'revert' = 'revertToSnapshotConfirmation',
15
+ 'delete' = 'deleteSnapshotConfirmation',
16
+ 'delete_all' = 'deleteAllSnapshots',
17
+ 'group_delete_all' = 'deleteAllSnapshots',
18
+ 'group_take' = '',
19
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bfg-common",
3
3
  "private": false,
4
- "version": "1.5.735",
4
+ "version": "1.5.737",
5
5
  "scripts": {
6
6
  "build": "nuxt build",
7
7
  "dev": "nuxt dev --port=3002",