bfg-common 1.5.448 → 1.5.449

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 (115) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  4. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  5. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  6. package/components/atoms/TheIcon3.vue +50 -50
  7. package/components/atoms/collapse/CollapseNav.vue +170 -170
  8. package/components/atoms/perPage/PerPage.vue +58 -58
  9. package/components/atoms/table/dataGrid/DataGrid.vue +1694 -1694
  10. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  11. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  12. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  13. package/components/common/browse/blocks/Container.vue +235 -235
  14. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  15. package/components/common/context/lib/models/interfaces.ts +33 -33
  16. package/components/common/diagramMain/modals/lib/config/networkModal.ts +398 -398
  17. package/components/common/diagramMain/modals/lib/config/portModal.ts +251 -251
  18. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  19. package/components/common/diagramMain/port/Port.vue +580 -580
  20. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  21. package/components/common/pages/backups/Backups.vue +102 -102
  22. package/components/common/pages/backups/DetailView.vue +52 -52
  23. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  24. package/components/common/pages/backups/modals/createBackup/configuration/Configuration.vue +29 -29
  25. package/components/common/pages/backups/modals/createBackup/configuration/backupWindow/BackupWindow.vue +26 -26
  26. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/MaxBandwidth.vue +66 -66
  27. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  28. package/components/common/pages/backups/modals/createBackup/configuration/strategy/Strategy.vue +35 -35
  29. package/components/common/pages/backups/modals/createBackup/datastores/Datastores.vue +59 -59
  30. package/components/common/pages/backups/modals/createBackup/datastores/tableView/TableView.vue +95 -95
  31. package/components/common/pages/backups/modals/createBackup/disks/tableView/lib/config/table.ts +117 -117
  32. package/components/common/pages/backups/modals/createBackup/general/General.vue +135 -135
  33. package/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions.ts +12 -12
  34. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  35. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  36. package/components/common/pages/backups/modals/restore/disks/Disks.vue +27 -27
  37. package/components/common/pages/backups/modals/restore/disks/tableView/TableView.vue +102 -102
  38. package/components/common/pages/backups/modals/restore/disks/tableView/lib/config/table.ts +117 -117
  39. package/components/common/pages/backups/modals/restore/name/Name.vue +160 -160
  40. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  41. package/components/common/pages/backups/modals/restore/networks/Networks.vue +67 -67
  42. package/components/common/pages/backups/modals/restore/networks/table/Table.vue +214 -214
  43. package/components/common/pages/backups/modals/restore/types/lib/config/typeOptions.ts +25 -25
  44. package/components/common/pages/backups/tools/Tools.vue +75 -75
  45. package/components/common/pages/backups/tools/lib/config/tabs.ts +36 -36
  46. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  47. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  48. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  49. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  50. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  51. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  52. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  53. package/components/common/select/radio/RadioGroup.vue +137 -137
  54. package/components/common/spiceConsole/Drawer.vue +381 -381
  55. package/components/common/spiceConsole/SpiceConsole.vue +127 -127
  56. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  57. package/components/common/tools/Actions.vue +207 -207
  58. package/components/common/treeView/TreeView.vue +52 -52
  59. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  60. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +7 -1
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +85 -85
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/maximumSize/MaximumSize.vue +23 -23
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/Table.vue +99 -99
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  82. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  83. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  84. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  85. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  86. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapOld.vue +44 -44
  87. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  88. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  89. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  90. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  91. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +143 -143
  92. package/components/common/vm/actions/common/select/computeResource/New.vue +184 -184
  93. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +131 -131
  94. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  95. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  96. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  97. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  98. package/components/common/vm/actions/common/select/storage/new/New.vue +320 -320
  99. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  100. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  101. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  102. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  103. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  104. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  105. package/components/common/wizards/vm/migrate/select/type/lib/config/typeOptions.ts +45 -45
  106. package/composables/productNameLocal.ts +30 -30
  107. package/composables/useAppVersion.ts +21 -21
  108. package/package.json +1 -1
  109. package/plugins/date.ts +233 -233
  110. package/plugins/panelStates.ts +70 -70
  111. package/plugins/text.ts +59 -59
  112. package/public/spice-console/lib/images/bitmap.js +203 -203
  113. package/public/spice-console/network/spicechannel.js +390 -390
  114. package/store/main/mutations.ts +7 -7
  115. package/store/main/state.ts +7 -7
@@ -1,117 +1,117 @@
1
- import type { UI_I_Localization } from '~/lib/models/interfaces'
2
- import type {
3
- UI_I_HeadItem,
4
- UI_I_ColumnKey,
5
- UI_I_BodyItem,
6
- } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
7
- import type { UI_I_Pvm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
8
- import {
9
- constructHeadItem,
10
- constructColumnKey,
11
- } from '~/components/atoms/table/dataGrid/lib/utils/constructDataTable'
12
- import { tableKeys } from '~/components/common/pages/backups/modals/createBackup/disks/tableView/lib/config/keys'
13
-
14
- const getItems = (
15
- localization: UI_I_Localization
16
- ): [string, boolean, string, string][] => {
17
- return [
18
- [localization.common.source, true, '180px', tableKeys[0]],
19
- [localization.common.deviceType, true, '180px', tableKeys[1]],
20
- [localization.common.bus, true, '180px', tableKeys[2]],
21
- [localization.common.target, true, '180px', tableKeys[3]],
22
- [localization.common.capacity, true, '180px', tableKeys[4]],
23
- [localization.common.used, true, '180px', tableKeys[5]],
24
- [localization.common.free, true, '180px', tableKeys[6]],
25
- [localization.common.volumePath, true, '180px', tableKeys[7]],
26
- ]
27
- }
28
- export const columnKeys = (
29
- localization: UI_I_Localization
30
- ): UI_I_ColumnKey[] => {
31
- const result: UI_I_ColumnKey[] = []
32
- getItems(localization).forEach((item, i) => {
33
- result.push(
34
- constructColumnKey(`col${i}`, item[0], item[1], `show-column-${item[3]}`)
35
- )
36
- })
37
- return result
38
- }
39
- export const headItems = (localization: UI_I_Localization): UI_I_HeadItem[] => {
40
- const result: UI_I_HeadItem[] = []
41
- getItems(localization).forEach((item, i) => {
42
- result.push(
43
- constructHeadItem(
44
- `col${i}`,
45
- item[0],
46
- item[3],
47
- true,
48
- item[2],
49
- undefined,
50
- item[3]
51
- )
52
- )
53
- })
54
- return result
55
- }
56
-
57
- export const bodyItems = (
58
- data: UI_I_Pvm['disk_devices']
59
- ): UI_I_BodyItem[][] => {
60
- const { $binary }: any = useNuxtApp()
61
- const lang = useLocalStorage('lang') === 'ru_RU' ? 'ru' : 'en'
62
-
63
- const bodyItems: UI_I_BodyItem[][] = []
64
- data.forEach((disk: UI_I_Pvm['disk_devices'][0]) => {
65
- bodyItems.push([
66
- {
67
- key: 'col0',
68
- text: disk[tableKeys[0]],
69
- id: disk.source,
70
- data: {
71
- location: disk.source,
72
- target: disk.target,
73
- },
74
- },
75
- {
76
- key: 'col1',
77
- text: disk[tableKeys[1]],
78
- id: disk.source,
79
- },
80
- {
81
- key: 'col2',
82
- text: disk[tableKeys[2]],
83
- id: disk.source,
84
- },
85
- {
86
- key: 'col3',
87
- text: disk[tableKeys[3]],
88
- id: disk.source,
89
- },
90
- {
91
- key: 'col4',
92
- text: $binary.round(disk[tableKeys[4]], false, lang),
93
- id: disk.source,
94
- },
95
- {
96
- key: 'col5',
97
- text: $binary.round(
98
- disk[tableKeys[4]] - disk[tableKeys[6]],
99
- false,
100
- lang
101
- ),
102
- id: disk.source,
103
- },
104
- {
105
- key: 'col6',
106
- text: $binary.round(disk[tableKeys[6]], false, lang),
107
- id: disk.source,
108
- },
109
- {
110
- key: 'col7',
111
- text: disk[tableKeys[7]],
112
- id: disk.source,
113
- },
114
- ])
115
- })
116
- return bodyItems
117
- }
1
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
2
+ import type {
3
+ UI_I_HeadItem,
4
+ UI_I_ColumnKey,
5
+ UI_I_BodyItem,
6
+ } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
7
+ import type { UI_I_Pvm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
8
+ import {
9
+ constructHeadItem,
10
+ constructColumnKey,
11
+ } from '~/components/atoms/table/dataGrid/lib/utils/constructDataTable'
12
+ import { tableKeys } from '~/components/common/pages/backups/modals/createBackup/disks/tableView/lib/config/keys'
13
+
14
+ const getItems = (
15
+ localization: UI_I_Localization
16
+ ): [string, boolean, string, string][] => {
17
+ return [
18
+ [localization.common.source, true, '180px', tableKeys[0]],
19
+ [localization.common.deviceType, true, '180px', tableKeys[1]],
20
+ [localization.common.bus, true, '180px', tableKeys[2]],
21
+ [localization.common.target, true, '180px', tableKeys[3]],
22
+ [localization.common.capacity, true, '180px', tableKeys[4]],
23
+ [localization.common.used, true, '180px', tableKeys[5]],
24
+ [localization.common.free, true, '180px', tableKeys[6]],
25
+ [localization.common.volumePath, true, '180px', tableKeys[7]],
26
+ ]
27
+ }
28
+ export const columnKeys = (
29
+ localization: UI_I_Localization
30
+ ): UI_I_ColumnKey[] => {
31
+ const result: UI_I_ColumnKey[] = []
32
+ getItems(localization).forEach((item, i) => {
33
+ result.push(
34
+ constructColumnKey(`col${i}`, item[0], item[1], `show-column-${item[3]}`)
35
+ )
36
+ })
37
+ return result
38
+ }
39
+ export const headItems = (localization: UI_I_Localization): UI_I_HeadItem[] => {
40
+ const result: UI_I_HeadItem[] = []
41
+ getItems(localization).forEach((item, i) => {
42
+ result.push(
43
+ constructHeadItem(
44
+ `col${i}`,
45
+ item[0],
46
+ item[3],
47
+ true,
48
+ item[2],
49
+ undefined,
50
+ item[3]
51
+ )
52
+ )
53
+ })
54
+ return result
55
+ }
56
+
57
+ export const bodyItems = (
58
+ data: UI_I_Pvm['disk_devices']
59
+ ): UI_I_BodyItem[][] => {
60
+ const { $binary }: any = useNuxtApp()
61
+ const lang = useLocalStorage('lang') === 'ru_RU' ? 'ru' : 'en'
62
+
63
+ const bodyItems: UI_I_BodyItem[][] = []
64
+ data.forEach((disk: UI_I_Pvm['disk_devices'][0]) => {
65
+ bodyItems.push([
66
+ {
67
+ key: 'col0',
68
+ text: disk[tableKeys[0]],
69
+ id: disk.source,
70
+ data: {
71
+ location: disk.source,
72
+ target: disk.target,
73
+ },
74
+ },
75
+ {
76
+ key: 'col1',
77
+ text: disk[tableKeys[1]],
78
+ id: disk.source,
79
+ },
80
+ {
81
+ key: 'col2',
82
+ text: disk[tableKeys[2]],
83
+ id: disk.source,
84
+ },
85
+ {
86
+ key: 'col3',
87
+ text: disk[tableKeys[3]],
88
+ id: disk.source,
89
+ },
90
+ {
91
+ key: 'col4',
92
+ text: $binary.round(disk[tableKeys[4]], false, lang),
93
+ id: disk.source,
94
+ },
95
+ {
96
+ key: 'col5',
97
+ text: $binary.round(
98
+ disk[tableKeys[4]] - disk[tableKeys[6]],
99
+ false,
100
+ lang
101
+ ),
102
+ id: disk.source,
103
+ },
104
+ {
105
+ key: 'col6',
106
+ text: $binary.round(disk[tableKeys[6]], false, lang),
107
+ id: disk.source,
108
+ },
109
+ {
110
+ key: 'col7',
111
+ text: disk[tableKeys[7]],
112
+ id: disk.source,
113
+ },
114
+ ])
115
+ })
116
+ return bodyItems
117
+ }
@@ -1,135 +1,135 @@
1
- <template>
2
- <div class="general">
3
- <form @submit.prevent>
4
- <div class="field flex pt-4">
5
- <label for="general-name">{{ localization.common.name }}:</label>
6
- <input
7
- id="general-name"
8
- v-model.trim="model.name"
9
- data-id="general-name-input"
10
- type="text"
11
- />
12
- </div>
13
- <div class="field flex pt-4">
14
- <label for="general-description"
15
- >{{ localization.common.description }} ({{
16
- localization.common.optional
17
- }}):</label
18
- >
19
- <textarea
20
- id="general-description"
21
- v-model="model.description"
22
- data-id="general-description-textarea"
23
- />
24
- </div>
25
- </form>
26
- </div>
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_I_NameCheck } from '~/components/common/pages/backups/modals/restore/name/lib/models/interfaces'
33
-
34
- const model = defineModel<UI_I_CreateBackupForm>({ required: true })
35
-
36
- const props = defineProps<{
37
- show: boolean
38
- generalSubmit: null | Function
39
- }>()
40
- const emits = defineEmits<{
41
- (event: 'check-name', value: UI_I_NameCheck): void
42
- }>()
43
-
44
- const localization = computed<UI_I_Localization>(() => useLocal())
45
-
46
- watch(
47
- () => props.generalSubmit,
48
- (newValue) => {
49
- newValue && submit(newValue)
50
- }
51
- )
52
- const submit = async (cb: Function): Promise<void> => {
53
- const name = model.value.name
54
-
55
- if (name !== '') {
56
- const isNameValid = await checkNameIsValid(name)
57
- if (!isNameValid) {
58
- // @ts-ignore
59
- cb(false)
60
- return
61
- }
62
- }
63
-
64
- onRemoveValidationErrors()
65
- // @ts-ignore
66
- cb(true)
67
- }
68
-
69
- const checkNameIsValid = async (name: string): Promise<boolean> => {
70
- return new Promise((resolve) => {
71
- emits('check-name', {
72
- name,
73
- cb: (error): void => {
74
- const status = error?.statusCode || 200
75
- switch (status) {
76
- case 405: // Invalid kind
77
- showValidationErrors([
78
- localization.value.common.kindValidationDescription,
79
- ])
80
- resolve(false)
81
- break
82
- case 406: // Invalid name
83
- showValidationErrors([
84
- localization.value.common.vmNameValidationDescription,
85
- ])
86
- resolve(false)
87
- break
88
- case 409: // Name exist
89
- showValidationErrors([
90
- localization.value.common.vmNameExistInSelectedLocation,
91
- ])
92
- resolve(false)
93
- break
94
- }
95
-
96
- resolve(true)
97
- },
98
- })
99
- })
100
- }
101
-
102
- const errors = ref<string[]>([])
103
- const showValidationErrors = (data: string[]): void => {
104
- errors.value = data
105
- }
106
- const onRemoveValidationErrors = (): void => {
107
- errors.value = []
108
- }
109
-
110
- watch(
111
- () => props.show,
112
- (newValue) => {
113
- if (!newValue) return
114
-
115
- const input = document.getElementById('general-name')
116
- if (!input) return
117
-
118
- setTimeout(() => {
119
- input.focus()
120
- }, 0)
121
- }
122
- )
123
- </script>
124
-
125
- <style lang="scss" scoped>
126
- .field {
127
- label {
128
- width: 216px;
129
- }
130
- input,
131
- textarea {
132
- width: 345px;
133
- }
134
- }
135
- </style>
1
+ <template>
2
+ <div class="general">
3
+ <form @submit.prevent>
4
+ <div class="field flex pt-4">
5
+ <label for="general-name">{{ localization.common.name }}:</label>
6
+ <input
7
+ id="general-name"
8
+ v-model.trim="model.name"
9
+ data-id="general-name-input"
10
+ type="text"
11
+ />
12
+ </div>
13
+ <div class="field flex pt-4">
14
+ <label for="general-description"
15
+ >{{ localization.common.description }} ({{
16
+ localization.common.optional
17
+ }}):</label
18
+ >
19
+ <textarea
20
+ id="general-description"
21
+ v-model="model.description"
22
+ data-id="general-description-textarea"
23
+ />
24
+ </div>
25
+ </form>
26
+ </div>
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_I_NameCheck } from '~/components/common/pages/backups/modals/restore/name/lib/models/interfaces'
33
+
34
+ const model = defineModel<UI_I_CreateBackupForm>({ required: true })
35
+
36
+ const props = defineProps<{
37
+ show: boolean
38
+ generalSubmit: null | Function
39
+ }>()
40
+ const emits = defineEmits<{
41
+ (event: 'check-name', value: UI_I_NameCheck): void
42
+ }>()
43
+
44
+ const localization = computed<UI_I_Localization>(() => useLocal())
45
+
46
+ watch(
47
+ () => props.generalSubmit,
48
+ (newValue) => {
49
+ newValue && submit(newValue)
50
+ }
51
+ )
52
+ const submit = async (cb: Function): Promise<void> => {
53
+ const name = model.value.name
54
+
55
+ if (name !== '') {
56
+ const isNameValid = await checkNameIsValid(name)
57
+ if (!isNameValid) {
58
+ // @ts-ignore
59
+ cb(false)
60
+ return
61
+ }
62
+ }
63
+
64
+ onRemoveValidationErrors()
65
+ // @ts-ignore
66
+ cb(true)
67
+ }
68
+
69
+ const checkNameIsValid = async (name: string): Promise<boolean> => {
70
+ return new Promise((resolve) => {
71
+ emits('check-name', {
72
+ name,
73
+ cb: (error): void => {
74
+ const status = error?.statusCode || 200
75
+ switch (status) {
76
+ case 405: // Invalid kind
77
+ showValidationErrors([
78
+ localization.value.common.kindValidationDescription,
79
+ ])
80
+ resolve(false)
81
+ break
82
+ case 406: // Invalid name
83
+ showValidationErrors([
84
+ localization.value.common.vmNameValidationDescription,
85
+ ])
86
+ resolve(false)
87
+ break
88
+ case 409: // Name exist
89
+ showValidationErrors([
90
+ localization.value.common.vmNameExistInSelectedLocation,
91
+ ])
92
+ resolve(false)
93
+ break
94
+ }
95
+
96
+ resolve(true)
97
+ },
98
+ })
99
+ })
100
+ }
101
+
102
+ const errors = ref<string[]>([])
103
+ const showValidationErrors = (data: string[]): void => {
104
+ errors.value = data
105
+ }
106
+ const onRemoveValidationErrors = (): void => {
107
+ errors.value = []
108
+ }
109
+
110
+ watch(
111
+ () => props.show,
112
+ (newValue) => {
113
+ if (!newValue) return
114
+
115
+ const input = document.getElementById('general-name')
116
+ if (!input) return
117
+
118
+ setTimeout(() => {
119
+ input.focus()
120
+ }, 0)
121
+ }
122
+ )
123
+ </script>
124
+
125
+ <style lang="scss" scoped>
126
+ .field {
127
+ label {
128
+ width: 216px;
129
+ }
130
+ input,
131
+ textarea {
132
+ width: 345px;
133
+ }
134
+ }
135
+ </style>
@@ -1,12 +1,12 @@
1
- import type { UI_I_Localization } from '~/lib/models/interfaces'
2
- import type { UI_I_SelectInputItem } from '~/components/common/select/input/lib/models/interfaces'
3
-
4
- export const strategyOptionsFunc = (
5
- localization: UI_I_Localization
6
- ): UI_I_SelectInputItem[] => {
7
- return [
8
- { label: localization.common.fullBackup, value: 0 },
9
- { label: localization.common.incrementalBackup, value: 1 },
10
- { label: localization.common.differentialBackup, value: 2 },
11
- ]
12
- }
1
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
2
+ import type { UI_I_SelectInputItem } from '~/components/common/select/input/lib/models/interfaces'
3
+
4
+ export const strategyOptionsFunc = (
5
+ localization: UI_I_Localization
6
+ ): UI_I_SelectInputItem[] => {
7
+ return [
8
+ { label: localization.common.fullBackup, value: 0 },
9
+ { label: localization.common.incrementalBackup, value: 1 },
10
+ { label: localization.common.differentialBackup, value: 2 },
11
+ ]
12
+ }