bfg-common 1.5.538 → 1.5.540

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 (50) hide show
  1. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  2. package/components/common/browse/lib/models/interfaces.ts +5 -5
  3. package/components/common/diagramMain/modals/lib/config/portModal.ts +251 -251
  4. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  5. package/components/common/diagramMain/network/Contents.vue +497 -497
  6. package/components/common/diagramMain/port/Port.vue +580 -580
  7. package/components/common/pages/backups/modals/createBackup/CreateBackup.vue +1 -1
  8. package/components/common/pages/backups/modals/createBackup/configuration/backupWindow/BackupWindow.vue +29 -29
  9. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/MaxBandwidth.vue +69 -69
  10. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  11. package/components/common/pages/backups/modals/createBackup/configuration/strategy/Strategy.vue +38 -38
  12. package/components/common/pages/backups/modals/createBackup/datastores/tableView/new/TableView.vue +3 -3
  13. package/components/common/pages/backups/modals/createBackup/disks/tableView/new/lib/config/table.ts +1 -0
  14. package/components/common/pages/backups/modals/createBackup/lib/models/interfaces.ts +8 -8
  15. package/components/common/pages/backups/modals/restore/Restore.vue +78 -196
  16. package/components/common/pages/backups/modals/restore/RestoreNew.vue +289 -0
  17. package/components/common/pages/backups/modals/restore/RestoreOld.vue +173 -0
  18. package/components/common/pages/backups/modals/restore/disks/Disks.vue +14 -9
  19. package/components/common/pages/backups/modals/restore/disks/DisksNew.vue +17 -0
  20. package/components/common/pages/backups/modals/restore/disks/DisksOld.vue +21 -0
  21. package/components/common/pages/backups/modals/restore/disks/tableView/new/Table.vue +126 -0
  22. package/components/common/pages/backups/modals/restore/disks/tableView/new/lib/config/table.ts +175 -0
  23. package/components/common/pages/backups/modals/restore/disks/tableView/{TableView.vue → old/Table.vue} +6 -3
  24. package/components/common/pages/backups/modals/restore/disks/tableView/{lib → old/lib}/config/keys.ts +1 -1
  25. package/components/common/pages/backups/modals/restore/disks/tableView/{lib → old/lib}/config/table.ts +1 -1
  26. package/components/common/pages/backups/modals/restore/disks/tableView/{lib → old/lib}/models/types.ts +1 -1
  27. package/components/common/pages/backups/modals/restore/lib/config/readyToCompleteOptions.ts +62 -0
  28. package/components/common/pages/backups/modals/restore/lib/config/steps.ts +21 -21
  29. package/components/common/pages/backups/modals/restore/name/Name.vue +16 -151
  30. package/components/common/pages/backups/modals/restore/name/NameNew.vue +98 -0
  31. package/components/common/pages/backups/modals/restore/name/NameOld.vue +86 -0
  32. package/components/common/pages/backups/modals/restore/networks/Networks.vue +18 -25
  33. package/components/common/pages/backups/modals/restore/networks/NetworksNew.vue +78 -0
  34. package/components/common/pages/backups/modals/restore/networks/NetworksOld.vue +48 -0
  35. package/components/common/pages/backups/modals/restore/networks/table/new/Table.vue +269 -0
  36. package/components/common/pages/backups/modals/restore/networks/table/new/lib/config/table.ts +127 -0
  37. package/components/common/pages/backups/modals/restore/networks/table/{Table.vue → old/Table.vue} +8 -3
  38. package/components/common/pages/backups/modals/restore/networks/table/{adapterType → old/adapterType}/AdapterType.vue +1 -1
  39. package/components/common/pages/backups/modals/restore/networks/table/{lib → old/lib}/config/networkTable.ts +1 -1
  40. package/components/common/pages/backups/modals/restore/networks/table/old/lib/config/tableKeys.ts +8 -0
  41. package/components/common/pages/backups/modals/restore/types/Types.vue +9 -50
  42. package/components/common/pages/backups/modals/restore/types/TypesNew.vue +95 -0
  43. package/components/common/pages/backups/modals/restore/types/TypesOld.vue +61 -0
  44. package/components/common/pages/backups/modals/restore/types/lib/config/descriptions.ts +1 -0
  45. package/components/common/pages/backups/modals/restore/types/lib/config/typeOptions.ts +1 -1
  46. package/components/common/pages/backups/modals/restore/validation/validation.ts +108 -0
  47. package/package.json +1 -1
  48. package/components/common/pages/backups/modals/restore/networks/table/lib/config/tableKeys.ts +0 -10
  49. /package/components/common/pages/backups/modals/restore/networks/table/{adapterType → old/adapterType}/lib/config/options.ts +0 -0
  50. /package/components/common/pages/backups/modals/restore/networks/table/{lib → old/lib}/models/types.ts +0 -0
@@ -8,7 +8,7 @@ export const dynamicSteps = {
8
8
  selectStorage: 2,
9
9
  selectDisks: 3,
10
10
  selectNetwork: 4,
11
- readyComplete: 5,
11
+ readyComplete: 5
12
12
  }
13
13
 
14
14
  export const stepsFunc = (
@@ -18,42 +18,42 @@ export const stepsFunc = (
18
18
  {
19
19
  id: dynamicSteps.selectType,
20
20
  stepName: '',
21
- title: localization.common.selectAType,
21
+ title: localization.backup.selectType,
22
22
  subTitle: '',
23
23
  status: UI_E_WIZARD_STATUS.SELECTED,
24
24
  isValid: true,
25
25
  fields: {},
26
- testId: 'backup-restore-type',
26
+ testId: 'backup-restore-type'
27
27
  },
28
28
  {
29
29
  id: dynamicSteps.selectName,
30
30
  stepName: '',
31
31
  title: localization.common.selectName,
32
- subTitle: '',
32
+ subTitle: 'Specify a unique name for the virtual machine.',
33
33
  status: UI_E_WIZARD_STATUS.INACTIVE,
34
34
  isValid: true,
35
35
  testId: 'backup-restore-select-name',
36
36
  fields: {
37
37
  name: {
38
38
  field: '',
39
- alert: '',
40
- },
41
- },
39
+ alert: ''
40
+ }
41
+ }
42
42
  },
43
43
  {
44
44
  id: dynamicSteps.selectStorage,
45
45
  stepName: '',
46
46
  title: localization.common.selectStorage,
47
- subTitle: '',
47
+ subTitle: 'Select a storage for the configuration and disk files.',
48
48
  status: UI_E_WIZARD_STATUS.INACTIVE,
49
49
  isValid: true,
50
50
  testId: 'backup-restore-select-storage',
51
51
  fields: {
52
52
  storage: {
53
53
  field: '',
54
- alert: '',
55
- },
56
- },
54
+ alert: ''
55
+ }
56
+ }
57
57
  },
58
58
  {
59
59
  id: dynamicSteps.selectDisks,
@@ -65,31 +65,31 @@ export const stepsFunc = (
65
65
  fields: {
66
66
  disk_devices: {
67
67
  field: '',
68
- alert: '',
69
- },
68
+ alert: ''
69
+ }
70
70
  },
71
- testId: 'backup-restore-select--disks',
71
+ testId: 'backup-restore-select--disks'
72
72
  },
73
73
  {
74
74
  id: dynamicSteps.selectNetwork,
75
75
  stepName: '',
76
76
  title: localization.common.selectNetwork,
77
- subTitle: '',
77
+ subTitle: 'Select adapter types and networks in Procurator.',
78
78
  status: UI_E_WIZARD_STATUS.INACTIVE,
79
79
  isValid: true,
80
80
  testId: 'backup-restore-select-network',
81
- fields: {},
81
+ fields: {}
82
82
  },
83
83
  {
84
84
  id: dynamicSteps.readyComplete,
85
85
  stepName: '',
86
86
  title: localization.common.readyComplete,
87
- subTitle: localization.common.clickFinishRestore,
87
+ subTitle: localization.backup.restoreBackupReviewSubtitle,
88
88
  status: UI_E_WIZARD_STATUS.INACTIVE,
89
89
  isValid: true,
90
90
  testId: 'backup-restore-ready-complete',
91
- fields: {},
92
- },
91
+ fields: {}
92
+ }
93
93
  ]
94
94
  }
95
95
 
@@ -103,6 +103,6 @@ export const stepsSchemeInitial = [
103
103
  dynamicSteps.selectStorage,
104
104
  dynamicSteps.selectDisks,
105
105
  dynamicSteps.selectNetwork,
106
- dynamicSteps.readyComplete,
107
- ], // as new
106
+ dynamicSteps.readyComplete
107
+ ] // as new
108
108
  ]
@@ -1,166 +1,31 @@
1
1
  <template>
2
- <div class="select-name">
3
- <atoms-alert
4
- v-show="errors.length"
5
- :items="errors"
6
- status="alert-danger"
7
- test-id="name-alert"
8
- @remove="onRemoveValidationErrors"
9
- />
10
-
11
- <form
12
- id="virtual-machine-form"
13
- class="flex items-center pt-5"
14
- @submit.prevent
15
- >
16
- <label for="virtual-machine-name"
17
- >{{ localization.common.virtualMachineName }}:</label
18
- >
19
- <input
20
- id="virtual-machine-name"
21
- v-model.trim="model.pvm.name"
22
- data-id="virtual-machine-name-input"
23
- type="text"
24
- maxlength="54"
25
- />
26
- </form>
27
- </div>
2
+ <common-pages-backups-modals-restore-name-new
3
+ v-if="isNewView"
4
+ v-model="model"
5
+ :messages-fields="props.messagesFields"
6
+ />
7
+ <common-pages-backups-modals-restore-name-old
8
+ v-else
9
+ v-model="model"
10
+ :show="props.show"
11
+ />
28
12
  </template>
29
13
 
30
14
  <script setup lang="ts">
31
- import type { UI_I_Localization } from '~/lib/models/interfaces'
32
- import type { UI_I_NameCheck } from '~/components/common/pages/backups/modals/restore/name/lib/models/interfaces'
15
+ import type { UI_I_ErrorFields } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
33
16
  import type { UI_I_RestoreForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
17
+ import type { UI_I_ArbitraryObject } from '~/lib/models/interfaces'
34
18
 
35
19
  const model = defineModel<UI_I_RestoreForm>({ required: true })
36
20
 
37
21
  const props = defineProps<{
38
22
  show: boolean
39
- nameFormSubmit: null | Function
40
- }>()
41
- const emits = defineEmits<{
42
- (event: 'check-name', value: UI_I_NameCheck): void
23
+ messagesFields?: UI_I_ArbitraryObject<UI_I_ErrorFields>
43
24
  }>()
44
25
 
45
- const localization = computed<UI_I_Localization>(() => useLocal())
46
-
47
- watch(
48
- () => props.nameFormSubmit,
49
- (newValue) => {
50
- newValue && submit(newValue)
51
- }
52
- )
53
-
54
- const submit = async (cb: Function): Promise<void> => {
55
- const name = model.value.pvm.name
56
-
57
- if (name !== '') {
58
- const isNameValid = await checkNameIsValid(name)
59
- if (!isNameValid) {
60
- // @ts-ignore
61
- cb(false)
62
- return
63
- }
64
- }
65
-
66
- onRemoveValidationErrors()
67
- // @ts-ignore
68
- cb(true)
69
- }
70
- const checkNameIsValid = async (name: string): Promise<boolean> => {
71
- return new Promise((resolve) => {
72
- emits('check-name', {
73
- name,
74
- cb: (error): void => {
75
- const status = error?.statusCode || 200
76
- switch (status) {
77
- case 400: // Empty name
78
- showValidationErrors([
79
- localization.value.common.emptyNameValidationDescription,
80
- ])
81
- resolve(false)
82
- break
83
- case 405: // Invalid kind
84
- showValidationErrors([
85
- localization.value.common.kindValidationDescription,
86
- ])
87
- resolve(false)
88
- break
89
- case 406: // Invalid name
90
- showValidationErrors([
91
- localization.value.common.nameValidationDescription,
92
- ])
93
- resolve(false)
94
- break
95
- case 409: // Name exist
96
- showValidationErrors([
97
- localization.value.common.vmNameExistInSelectedLocation,
98
- ])
99
- resolve(false)
100
- break
101
- }
26
+ const { $store }: any = useNuxtApp()
102
27
 
103
- resolve(true)
104
- },
105
- })
106
- })
107
- }
108
-
109
- const errors = ref<string[]>([])
110
- const showValidationErrors = (data: string[]): void => {
111
- errors.value = data
112
- }
113
- const onRemoveValidationErrors = (): void => {
114
- errors.value = []
115
- }
116
-
117
- watch(
118
- () => props.show,
119
- (newValue) => {
120
- if (!newValue) return
121
-
122
- const input = document.getElementById('virtual-machine-name')
123
- if (!input) return
124
-
125
- setTimeout(() => {
126
- input.focus()
127
- }, 0)
128
- }
129
- )
28
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
130
29
  </script>
131
30
 
132
- <style scoped lang="scss">
133
- .select-name {
134
- form {
135
- label {
136
- width: 216px;
137
- }
138
- input {
139
- width: 345px;
140
- }
141
- }
142
-
143
- .tree-view-wrap {
144
- position: relative;
145
- border: 1px solid #000;
146
- padding: 5px;
147
- max-height: 300px;
148
- min-height: 200px;
149
- overflow: auto;
150
- margin-bottom: 10px;
151
- }
152
- }
153
- .content-signpost {
154
- .icon-show-help {
155
- cursor: pointer;
156
- }
157
-
158
- .help-title {
159
- font-size: 22px;
160
- margin-bottom: 24px;
161
- }
162
- .signpost {
163
- max-width: 360px;
164
- }
165
- }
166
- </style>
31
+ <style scoped lang="scss"></style>
@@ -0,0 +1,98 @@
1
+ <template>
2
+ <div class="basics-step-row">
3
+ <div class="basics-step-row-title">
4
+ <span class="basics-step-row-title-text">
5
+ {{ localization.common.virtualMachineName }}
6
+ </span>
7
+ </div>
8
+ <div class="basics-step-row-content">
9
+ <ui-input
10
+ id="vm-backup-name-input"
11
+ v-model="model.pvm.name"
12
+ :placeholder="localization.common.name"
13
+ :error="props.messagesFields?.name.field"
14
+ test-id="vm-backup-name-input"
15
+ />
16
+ </div>
17
+ </div>
18
+ </template>
19
+ <script setup lang="ts">
20
+ import type { UI_I_ErrorFields } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
21
+ import type { UI_I_RestoreForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
22
+ import type { UI_I_ArbitraryObject } from '~/lib/models/interfaces'
23
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
24
+
25
+ const model = defineModel<UI_I_RestoreForm>({ required: true })
26
+
27
+ const props = defineProps<{
28
+ messagesFields: UI_I_ArbitraryObject<UI_I_ErrorFields>
29
+ }>()
30
+
31
+ const localization = computed<UI_I_Localization>(() => useLocal())
32
+ </script>
33
+ <style scoped lang="scss">
34
+ .basics-step {
35
+ &-row {
36
+ min-height: 36px;
37
+ width: 100%;
38
+ display: flex;
39
+ column-gap: 16px;
40
+ align-items: center;
41
+
42
+ &-title {
43
+ padding-top: 8px;
44
+ max-width: 240px;
45
+ width: 100%;
46
+ display: flex;
47
+ align-items: center;
48
+ column-gap: 8px;
49
+ font-weight: 400;
50
+ font-size: 13px;
51
+ line-height: 20px;
52
+ letter-spacing: 0;
53
+ vertical-align: middle;
54
+ align-self: flex-start;
55
+ color: var(--wizard-content-title);
56
+ white-space: nowrap;
57
+ text-overflow: ellipsis;
58
+ overflow: hidden;
59
+
60
+ &-text {
61
+ display: block;
62
+ white-space: nowrap;
63
+ text-overflow: ellipsis;
64
+ overflow: hidden;
65
+ text-transform: capitalize;
66
+ }
67
+ }
68
+
69
+ &-content {
70
+ max-width: 480px;
71
+ width: 100%;
72
+ font-weight: 400;
73
+ font-size: 13px;
74
+ line-height: 20px;
75
+ letter-spacing: 0;
76
+ vertical-align: middle;
77
+ color: var(--wizard-content-value);
78
+
79
+ &-text {
80
+ display: flex;
81
+ column-gap: 8px;
82
+ align-items: center;
83
+
84
+ &-icon {
85
+ width: 20px;
86
+ min-width: 20px;
87
+ height: 20px;
88
+ min-height: 20px;
89
+ }
90
+ }
91
+
92
+ &-switch-container {
93
+ width: fit-content;
94
+ }
95
+ }
96
+ }
97
+ }
98
+ </style>
@@ -0,0 +1,86 @@
1
+ <template>
2
+ <div class="select-name">
3
+ <form
4
+ id="virtual-machine-form"
5
+ class="flex items-center pt-5"
6
+ @submit.prevent
7
+ >
8
+ <label for="virtual-machine-name"
9
+ >{{ localization.common.virtualMachineName }}:</label
10
+ >
11
+ <input
12
+ id="virtual-machine-name"
13
+ v-model.trim="model.pvm.name"
14
+ data-id="virtual-machine-name-input"
15
+ type="text"
16
+ maxlength="54"
17
+ />
18
+ </form>
19
+ </div>
20
+ </template>
21
+
22
+ <script setup lang="ts">
23
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
24
+ import type { UI_I_RestoreForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
25
+
26
+ const model = defineModel<UI_I_RestoreForm>({ required: true })
27
+
28
+ const props = defineProps<{
29
+ show: boolean
30
+ }>()
31
+
32
+ const localization = computed<UI_I_Localization>(() => useLocal())
33
+
34
+ watch(
35
+ () => props.show,
36
+ (newValue) => {
37
+ if (!newValue) return
38
+
39
+ const input = document.getElementById('virtual-machine-name')
40
+ if (!input) return
41
+
42
+ setTimeout(() => {
43
+ input.focus()
44
+ }, 0)
45
+ }
46
+ )
47
+ </script>
48
+
49
+ <style scoped lang="scss">
50
+ .select-name {
51
+ form {
52
+ label {
53
+ width: 216px;
54
+ }
55
+
56
+ input {
57
+ width: 345px;
58
+ }
59
+ }
60
+
61
+ .tree-view-wrap {
62
+ position: relative;
63
+ border: 1px solid #000;
64
+ padding: 5px;
65
+ max-height: 300px;
66
+ min-height: 200px;
67
+ overflow: auto;
68
+ margin-bottom: 10px;
69
+ }
70
+ }
71
+
72
+ .content-signpost {
73
+ .icon-show-help {
74
+ cursor: pointer;
75
+ }
76
+
77
+ .help-title {
78
+ font-size: 22px;
79
+ margin-bottom: 24px;
80
+ }
81
+
82
+ .signpost {
83
+ max-width: 360px;
84
+ }
85
+ }
86
+ </style>
@@ -1,31 +1,22 @@
1
1
  <template>
2
- <div class="select-network h-full flex flex-col">
3
- <atoms-alert
4
- v-if="props.alertMessages.length"
5
- :items="props.alertMessages"
6
- status="alert-danger"
7
- test-id="import-vms-select-networks-errors"
8
- @remove="onHideAlert"
9
- />
10
-
11
- <common-pages-backups-modals-restore-networks-table
12
- v-model="model"
13
- :networks-table="model.pvm.network_devices"
14
- :source-networks="props.networks"
15
- :loading="networkTableLoading"
16
- @hide-alert="onHideAlert"
17
- />
18
-
19
- <common-wizards-common-steps-compute-resource-compatibility
20
- :loading="!model.pvm.network_devices.length"
21
- :text="localization.common.compatibilityChecksSucceeded"
22
- status="success"
23
- />
24
- </div>
2
+ <common-pages-backups-modals-restore-networks-new
3
+ v-if="isNewView"
4
+ v-model="model"
5
+ :alert-messages="props.alertMessages"
6
+ :networks="props.networks"
7
+ :networks-loading="networkTableLoading"
8
+ />
9
+ <common-pages-backups-modals-restore-networks-old
10
+ v-else
11
+ v-model="model"
12
+ :alert-messages="props.alertMessages"
13
+ :networks="props.networks"
14
+ :networks-loading="networkTableLoading"
15
+ @hide-alert="onHideAlert"
16
+ />
25
17
  </template>
26
18
 
27
19
  <script lang="ts" setup>
28
- import type { UI_I_Localization } from '~/lib/models/interfaces'
29
20
  import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
30
21
  import type { UI_I_RestoreForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
31
22
 
@@ -39,7 +30,9 @@ const emits = defineEmits<{
39
30
  (event: 'hide-alert'): void
40
31
  }>()
41
32
 
42
- const localization = computed<UI_I_Localization>(() => useLocal())
33
+ const { $store }: any = useNuxtApp()
34
+
35
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
43
36
 
44
37
  const networkTableLoading = ref<boolean>(false)
45
38
  const getNetworks = async (): Promise<void> => {
@@ -0,0 +1,78 @@
1
+ <template>
2
+ <common-pages-backups-modals-restore-networks-table-new-table
3
+ v-model="model"
4
+ :networks="model.pvm.network_devices"
5
+ :source-networks="props.networks"
6
+ :networks-loading="props.networksLoading"
7
+ />
8
+
9
+ <div class="assignment-validation mt-6">
10
+ <h2 class="assignment-validation__title">
11
+ {{ localization.common.compatibility }}
12
+ </h2>
13
+
14
+ <div
15
+ :class="[
16
+ 'assignment-validation__message flex items-center',
17
+ !selectedLicense && 'no-selected',
18
+ ]"
19
+ >
20
+ <ui-icon
21
+ name="success-fill-2"
22
+ width="16"
23
+ height="16"
24
+ class="assignment-validation__icon"
25
+ />
26
+ {{ localization.common.compatibilityChecksSucceeded }}
27
+ </div>
28
+ </div>
29
+ </template>
30
+ <script setup lang="ts">
31
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
32
+ import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
33
+ import type { UI_I_RestoreForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
34
+
35
+ const model = defineModel<UI_I_RestoreForm>({ required: true })
36
+
37
+ const props = defineProps<{
38
+ alertMessages: string[]
39
+ networks: UI_I_NetworkTableItem[]
40
+ networksLoading: boolean
41
+ }>()
42
+
43
+ const localization = computed<UI_I_Localization>(() => useLocal())
44
+
45
+ const selectedLicense = ref<boolean>(true)
46
+ </script>
47
+ <style scoped lang="scss">
48
+ .assignment-validation {
49
+ &__title {
50
+ font-size: 16px;
51
+ font-weight: 500;
52
+ color: var(--select-storage-title-color);
53
+ margin-bottom: 16px;
54
+ }
55
+
56
+ &__message {
57
+ font-family: 'Inter', sans-serif;
58
+ color: var(--title-form-first-color);
59
+ background-color: var(--select-bg);
60
+ border: 1px solid var(--line-color);
61
+ font-weight: 400;
62
+ font-size: 13px;
63
+ line-height: 100%;
64
+ vertical-align: middle;
65
+ border-radius: 8px;
66
+ padding: 12px;
67
+ column-gap: 12px;
68
+
69
+ &.no-selected {
70
+ color: #9da6ad; // for light and dark mode
71
+ }
72
+ }
73
+
74
+ &__icon {
75
+ min-width: 16px;
76
+ }
77
+ }
78
+ </style>
@@ -0,0 +1,48 @@
1
+ <template>
2
+ <div class="select-network h-full flex flex-col">
3
+ <atoms-alert
4
+ v-if="props.alertMessages.length"
5
+ :items="props.alertMessages"
6
+ status="alert-danger"
7
+ test-id="import-vms-select-networks-errors"
8
+ @remove="onHideAlert"
9
+ />
10
+
11
+ <common-pages-backups-modals-restore-networks-table-old-table
12
+ v-model="model"
13
+ :networks-table="model.pvm.network_devices"
14
+ :source-networks="props.networks"
15
+ :loading="props.networksLoading"
16
+ @hide-alert="onHideAlert"
17
+ />
18
+
19
+ <common-wizards-common-steps-compute-resource-compatibility
20
+ :loading="!model.pvm.network_devices.length"
21
+ :text="localization.common.compatibilityChecksSucceeded"
22
+ status="success"
23
+ />
24
+ </div>
25
+ </template>
26
+ <script setup lang="ts">
27
+ import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
28
+ import type { UI_I_RestoreForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
29
+ import type {UI_I_Localization} from "~/lib/models/interfaces";
30
+
31
+ const model = defineModel<UI_I_RestoreForm>({ required: true })
32
+ const props = defineProps<{
33
+ alertMessages: string[]
34
+ networks: UI_I_NetworkTableItem[]
35
+ networksLoading: boolean
36
+ }>()
37
+ const emits = defineEmits<{
38
+ (event: 'hide-alert'): void
39
+ }>()
40
+
41
+ const localization = computed<UI_I_Localization>(() => useLocal())
42
+
43
+ const onHideAlert = (): void => {
44
+ emits('hide-alert')
45
+ }
46
+ </script>
47
+
48
+ <style scoped lang="scss"></style>