bfg-common 1.5.759 → 1.5.760
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/CODE_STYLE.md +109 -109
- package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
- package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
- package/assets/img/icons/icons-sprite-light-3.svg +227 -227
- package/assets/img/icons/icons-sprite-light-5.svg +488 -488
- package/assets/localization/local_be.json +6 -3
- package/assets/localization/local_en.json +6 -3
- package/assets/localization/local_hy.json +6 -3
- package/assets/localization/local_kk.json +6 -3
- package/assets/localization/local_ru.json +6 -3
- package/assets/localization/local_zh.json +6 -3
- package/components/atoms/TheIcon3.vue +50 -50
- package/components/atoms/collapse/CollapseNav.vue +170 -170
- package/components/atoms/perPage/PerPage.vue +58 -58
- package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
- package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
- package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
- package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
- package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
- package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
- package/components/common/diagramMain/port/Port.vue +580 -580
- package/components/common/layout/console/Console.vue +70 -70
- package/components/common/layout/theHeader/New.vue +2 -0
- package/components/common/layout/theHeader/Old.vue +2 -0
- package/components/common/layout/theHeader/TheHeader.vue +2 -0
- package/components/common/layout/theHeader/modals/reconnect/New.vue +1 -1
- package/components/common/layout/theHeader/modals/reconnect/Reconnect.vue +3 -1
- package/components/common/layout/theHeader/userMenu/UserMenu.vue +2 -0
- package/components/common/layout/theHeader/userMenu/modals/preferences/New.vue +2 -0
- package/components/common/layout/theHeader/userMenu/modals/preferences/Old.vue +2 -0
- package/components/common/layout/theHeader/userMenu/modals/preferences/Preferences.vue +2 -0
- package/components/common/layout/theHeader/userMenu/modals/preferences/lib/models/types.ts +7 -7
- package/components/common/layout/theHeader/userMenu/modals/preferences/view/New.vue +64 -47
- package/components/common/layout/theHeader/userMenu/modals/preferences/view/Old.vue +19 -0
- package/components/common/layout/theHeader/userMenu/modals/preferences/view/View.vue +3 -0
- package/components/common/pages/backups/DetailView.vue +52 -52
- package/components/common/pages/backups/backupsNew/BackupsNew.vue +107 -19
- package/components/common/pages/backups/backupsNew/Skeleton.vue +136 -0
- package/components/common/pages/backups/backupsNew/contextMenuView/ContextMenuView.vue +16 -10
- package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
- package/components/common/pages/backups/modals/Modals.vue +243 -243
- 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/strategy/Strategy.vue +38 -38
- package/components/common/pages/backups/modals/createBackup/datastores/tableView/new/lib/config/table.ts +1 -1
- package/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions.ts +8 -11
- package/components/common/pages/backups/modals/createBackup/lib/models/interfaces.ts +8 -8
- package/components/common/pages/backups/modals/lib/config/restore.ts +116 -116
- package/components/common/pages/backups/modals/lib/models/interfaces.ts +187 -187
- package/components/common/pages/backups/modals/restore/Restore.vue +302 -302
- package/components/common/pages/backups/modals/restore/disks/Disks.vue +50 -50
- package/components/common/pages/backups/modals/restore/lib/config/readyToCompleteOptions.ts +94 -94
- package/components/common/pages/backups/modals/restore/lib/config/steps.ts +130 -130
- package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
- package/components/common/pages/backups/modals/restore/types/New.vue +95 -95
- package/components/common/pages/backups/modals/restore/types/Old.vue +62 -62
- package/components/common/pages/backups/modals/restore/types/Types.vue +31 -31
- package/components/common/pages/home/lib/models/interfaces.ts +48 -48
- package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
- package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
- package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
- package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
- package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
- package/components/common/pages/tasks/Tasks.vue +125 -125
- package/components/common/pages/tasks/table/Table.vue +373 -373
- package/components/common/pages/tasks/table/lib/config/config.ts +279 -279
- package/components/common/pages/tasks/table/lib/models/interfaces.ts +9 -9
- package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
- package/components/common/select/radio/RadioGroup.vue +137 -137
- package/components/common/spiceConsole/Drawer.vue +420 -420
- package/components/common/spiceConsole/SpiceConsole.vue +184 -184
- package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
- package/components/common/tools/Actions.vue +207 -207
- package/components/common/treeView/TreeView.vue +52 -52
- package/components/common/vm/actions/clone/lib/config/steps.ts +295 -295
- package/components/common/vm/actions/clone/new/New.vue +438 -438
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
- package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +156 -156
- package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
- package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
- package/components/common/vm/actions/common/select/options/New.vue +264 -264
- package/components/common/vm/actions/common/select/options/Options.vue +58 -58
- package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
- package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
- package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
- package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
- package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
- package/components/common/vm/snapshots/new/New.vue +11 -12
- package/components/common/vm/snapshots/new/Skeleton.vue +26 -2
- package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
- package/components/common/wizards/common/steps/name/Name.vue +178 -178
- package/components/common/wizards/common/steps/name/New.vue +221 -221
- package/components/common/wizards/common/steps/name/Old.vue +121 -121
- package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
- package/components/common/wizards/common/steps/name/location/New.vue +40 -40
- package/components/common/wizards/datastore/add/Add.vue +227 -227
- package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
- package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
- package/components/common/wizards/network/add/Add.vue +9 -6
- package/components/common/wizards/network/add/lib/config/initialData.ts +2 -1
- package/composables/useAppVersion.ts +21 -21
- package/composables/useBrowse.ts +24 -24
- package/composables/useLocal.ts +6 -6
- package/composables/useLocalCommon.ts +39 -39
- package/lib/models/types.ts +59 -59
- package/package.json +1 -1
- package/plugins/console.ts +21 -21
- package/plugins/mouse.ts +21 -21
- package/plugins/panelStates.ts +70 -70
- package/plugins/text.ts +59 -59
- package/public/spice-console/application/clientgui.js +854 -854
- package/public/spice-console/application/packetfactory.js +211 -211
- package/public/spice-console/application/virtualmouse.js +147 -147
- package/public/spice-console/lib/images/bitmap.js +203 -203
- package/public/spice-console/network/spicechannel.js +440 -440
- package/public/spice-console/process/cursorprocess.js +128 -128
- package/public/spice-console/process/inputprocess.js +227 -227
- package/public/spice-console/process/mainprocess.js +212 -212
- package/public/spice-console/run.js +210 -210
- package/store/main/mutations.ts +7 -7
- package/store/main/state.ts +7 -7
- package/store/tasks/mappers/recentTasks.ts +123 -123
- package/store/tasks/mutations.ts +82 -82
|
@@ -1,85 +1,85 @@
|
|
|
1
|
-
import Wizard from '~/node_modules/bfg-uikit/components/ui/wizard/lib/utils/utils'
|
|
2
|
-
import type { API_UI_I_Error } from '~/lib/models/store/interfaces'
|
|
3
|
-
import type { UI_T_Project } from '~/lib/models/types'
|
|
4
|
-
import { UI_E_Kind } from '~/lib/models/enums'
|
|
5
|
-
|
|
6
|
-
export const checkValidityName = async ({
|
|
7
|
-
name,
|
|
8
|
-
wizard,
|
|
9
|
-
project,
|
|
10
|
-
sendMessage,
|
|
11
|
-
datacenterId,
|
|
12
|
-
}: {
|
|
13
|
-
name: string
|
|
14
|
-
wizard: Wizard
|
|
15
|
-
project: UI_T_Project
|
|
16
|
-
sendMessage: (message: string) => void
|
|
17
|
-
datacenterId?: string
|
|
18
|
-
}): Promise<void> => {
|
|
19
|
-
wizard.setLoader(true)
|
|
20
|
-
const url = buildValidationUrl(name, project, datacenterId)
|
|
21
|
-
|
|
22
|
-
const { error } = await useMyFetch<null, API_UI_I_Error>(url, {
|
|
23
|
-
method: 'GET',
|
|
24
|
-
})
|
|
25
|
-
|
|
26
|
-
wizard.setLoader(false)
|
|
27
|
-
|
|
28
|
-
if (error.value && error.value.data.error_code !== 0) {
|
|
29
|
-
const existError = error.value.data?.error_message || error.value.data
|
|
30
|
-
sendMessage(existError)
|
|
31
|
-
return
|
|
32
|
-
}
|
|
33
|
-
sendMessage('')
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const buildValidationUrl = (
|
|
37
|
-
name: string,
|
|
38
|
-
project: UI_T_Project,
|
|
39
|
-
datacenterId?: string
|
|
40
|
-
): string => {
|
|
41
|
-
if (project === 'procurator') {
|
|
42
|
-
const params = new URLSearchParams({ name })
|
|
43
|
-
return `/ui/ds/validate?${params.toString()}`
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const params = new URLSearchParams()
|
|
47
|
-
params.set('name', name)
|
|
48
|
-
params.set('kind', String(UI_E_Kind.STORAGE_VALIDATION_NAME))
|
|
49
|
-
if (datacenterId) params.set('datacenter', datacenterId)
|
|
50
|
-
|
|
51
|
-
return `/ui/object/validate_name_datacenter?${params.toString()}`
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export const validateNameAndGenerateDataId = (
|
|
55
|
-
name: string,
|
|
56
|
-
_errorMessage: string,
|
|
57
|
-
defaultDataId?: string
|
|
58
|
-
): string => {
|
|
59
|
-
let baseDataId = defaultDataId || 'storage-name-alert-error'
|
|
60
|
-
|
|
61
|
-
const patterns = [
|
|
62
|
-
{
|
|
63
|
-
regex: /^[a-zA-Z0-9_\-\.]+$/,
|
|
64
|
-
error_message:
|
|
65
|
-
/invalid name, must only contain letters, numbers, and '_', '-' '.' symbols/,
|
|
66
|
-
suffix: '-invalid-name-symbols',
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
regex: /^.{3,64}$/,
|
|
70
|
-
error_message:
|
|
71
|
-
/invalid name length, must be between: \d+ and \d+ characters/,
|
|
72
|
-
suffix: '-invalid-name-length',
|
|
73
|
-
},
|
|
74
|
-
]
|
|
75
|
-
|
|
76
|
-
// Проверка error_message на соответствие шаблонам
|
|
77
|
-
|
|
78
|
-
for (const pattern of patterns) {
|
|
79
|
-
if (!pattern.regex.test(name)) {
|
|
80
|
-
return `${baseDataId}${pattern.suffix}`
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
return baseDataId
|
|
85
|
-
}
|
|
1
|
+
import Wizard from '~/node_modules/bfg-uikit/components/ui/wizard/lib/utils/utils'
|
|
2
|
+
import type { API_UI_I_Error } from '~/lib/models/store/interfaces'
|
|
3
|
+
import type { UI_T_Project } from '~/lib/models/types'
|
|
4
|
+
import { UI_E_Kind } from '~/lib/models/enums'
|
|
5
|
+
|
|
6
|
+
export const checkValidityName = async ({
|
|
7
|
+
name,
|
|
8
|
+
wizard,
|
|
9
|
+
project,
|
|
10
|
+
sendMessage,
|
|
11
|
+
datacenterId,
|
|
12
|
+
}: {
|
|
13
|
+
name: string
|
|
14
|
+
wizard: Wizard
|
|
15
|
+
project: UI_T_Project
|
|
16
|
+
sendMessage: (message: string) => void
|
|
17
|
+
datacenterId?: string
|
|
18
|
+
}): Promise<void> => {
|
|
19
|
+
wizard.setLoader(true)
|
|
20
|
+
const url = buildValidationUrl(name, project, datacenterId)
|
|
21
|
+
|
|
22
|
+
const { error } = await useMyFetch<null, API_UI_I_Error>(url, {
|
|
23
|
+
method: 'GET',
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
wizard.setLoader(false)
|
|
27
|
+
|
|
28
|
+
if (error.value && error.value.data.error_code !== 0) {
|
|
29
|
+
const existError = error.value.data?.error_message || error.value.data
|
|
30
|
+
sendMessage(existError)
|
|
31
|
+
return
|
|
32
|
+
}
|
|
33
|
+
sendMessage('')
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const buildValidationUrl = (
|
|
37
|
+
name: string,
|
|
38
|
+
project: UI_T_Project,
|
|
39
|
+
datacenterId?: string
|
|
40
|
+
): string => {
|
|
41
|
+
if (project === 'procurator') {
|
|
42
|
+
const params = new URLSearchParams({ name })
|
|
43
|
+
return `/ui/ds/validate?${params.toString()}`
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const params = new URLSearchParams()
|
|
47
|
+
params.set('name', name)
|
|
48
|
+
params.set('kind', String(UI_E_Kind.STORAGE_VALIDATION_NAME))
|
|
49
|
+
if (datacenterId) params.set('datacenter', datacenterId)
|
|
50
|
+
|
|
51
|
+
return `/ui/object/validate_name_datacenter?${params.toString()}`
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export const validateNameAndGenerateDataId = (
|
|
55
|
+
name: string,
|
|
56
|
+
_errorMessage: string,
|
|
57
|
+
defaultDataId?: string
|
|
58
|
+
): string => {
|
|
59
|
+
let baseDataId = defaultDataId || 'storage-name-alert-error'
|
|
60
|
+
|
|
61
|
+
const patterns = [
|
|
62
|
+
{
|
|
63
|
+
regex: /^[a-zA-Z0-9_\-\.]+$/,
|
|
64
|
+
error_message:
|
|
65
|
+
/invalid name, must only contain letters, numbers, and '_', '-' '.' symbols/,
|
|
66
|
+
suffix: '-invalid-name-symbols',
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
regex: /^.{3,64}$/,
|
|
70
|
+
error_message:
|
|
71
|
+
/invalid name length, must be between: \d+ and \d+ characters/,
|
|
72
|
+
suffix: '-invalid-name-length',
|
|
73
|
+
},
|
|
74
|
+
]
|
|
75
|
+
|
|
76
|
+
// Проверка error_message на соответствие шаблонам
|
|
77
|
+
|
|
78
|
+
for (const pattern of patterns) {
|
|
79
|
+
if (!pattern.regex.test(name)) {
|
|
80
|
+
return `${baseDataId}${pattern.suffix}`
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return baseDataId
|
|
85
|
+
}
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
2
|
-
import type { UI_T_Project } from '~/lib/models/types'
|
|
3
|
-
import type { UI_I_RadioOption } from '~/components/common/select/radio/lib/models/interfaces'
|
|
4
|
-
|
|
5
|
-
export const datastoreTypesFunc = (
|
|
6
|
-
localization: UI_I_Localization,
|
|
7
|
-
_project?: UI_T_Project
|
|
8
|
-
): UI_I_RadioOption[] => {
|
|
9
|
-
return [
|
|
10
|
-
{
|
|
11
|
-
id: 'datastore-type-shared-storm',
|
|
12
|
-
label: localization.common.stormSharedStorage,
|
|
13
|
-
value: 2,
|
|
14
|
-
disabled: false,
|
|
15
|
-
description: localization.common.sharedStormDesc,
|
|
16
|
-
isTooltip: false,
|
|
17
|
-
tooltipContent: localization.common.stormSharedStorageHelpDesc,
|
|
18
|
-
testId: 'datastore-type-shared-storm',
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
id: 'datastore-type-nfs',
|
|
22
|
-
label: localization.common.nfs,
|
|
23
|
-
value: 4,
|
|
24
|
-
disabled: false,
|
|
25
|
-
description: localization.common.nfsDesc,
|
|
26
|
-
isTooltip: false,
|
|
27
|
-
tooltipContent: localization.common.nfsHelpDesc,
|
|
28
|
-
testId: 'datastore-type-nfs',
|
|
29
|
-
},
|
|
30
|
-
]
|
|
31
|
-
|
|
32
|
-
// if (project === 'procurator') {
|
|
33
|
-
// types.unshift({
|
|
34
|
-
// label: localization.common.localStorage,
|
|
35
|
-
// value: 1,
|
|
36
|
-
// disabled: false,
|
|
37
|
-
// description: localization.common.localDesc,
|
|
38
|
-
// isTooltip: false,
|
|
39
|
-
// tooltipContent: localization.common.localStorageHelpDesc,
|
|
40
|
-
// testId: 'datastore-type-local',
|
|
41
|
-
// })
|
|
42
|
-
// }
|
|
43
|
-
}
|
|
1
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
2
|
+
import type { UI_T_Project } from '~/lib/models/types'
|
|
3
|
+
import type { UI_I_RadioOption } from '~/components/common/select/radio/lib/models/interfaces'
|
|
4
|
+
|
|
5
|
+
export const datastoreTypesFunc = (
|
|
6
|
+
localization: UI_I_Localization,
|
|
7
|
+
_project?: UI_T_Project
|
|
8
|
+
): UI_I_RadioOption[] => {
|
|
9
|
+
return [
|
|
10
|
+
{
|
|
11
|
+
id: 'datastore-type-shared-storm',
|
|
12
|
+
label: localization.common.stormSharedStorage,
|
|
13
|
+
value: 2,
|
|
14
|
+
disabled: false,
|
|
15
|
+
description: localization.common.sharedStormDesc,
|
|
16
|
+
isTooltip: false,
|
|
17
|
+
tooltipContent: localization.common.stormSharedStorageHelpDesc,
|
|
18
|
+
testId: 'datastore-type-shared-storm',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: 'datastore-type-nfs',
|
|
22
|
+
label: localization.common.nfs,
|
|
23
|
+
value: 4,
|
|
24
|
+
disabled: false,
|
|
25
|
+
description: localization.common.nfsDesc,
|
|
26
|
+
isTooltip: false,
|
|
27
|
+
tooltipContent: localization.common.nfsHelpDesc,
|
|
28
|
+
testId: 'datastore-type-nfs',
|
|
29
|
+
},
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
// if (project === 'procurator') {
|
|
33
|
+
// types.unshift({
|
|
34
|
+
// label: localization.common.localStorage,
|
|
35
|
+
// value: 1,
|
|
36
|
+
// disabled: false,
|
|
37
|
+
// description: localization.common.localDesc,
|
|
38
|
+
// isTooltip: false,
|
|
39
|
+
// tooltipContent: localization.common.localStorageHelpDesc,
|
|
40
|
+
// testId: 'datastore-type-local',
|
|
41
|
+
// })
|
|
42
|
+
// }
|
|
43
|
+
}
|
|
@@ -251,10 +251,12 @@ const globalPermissions = computed<any>(
|
|
|
251
251
|
|
|
252
252
|
// Step's content data (connectionType)
|
|
253
253
|
const connectionType = ref<string>(
|
|
254
|
-
|
|
255
|
-
|
|
254
|
+
globalPermissions.value === undefined
|
|
255
|
+
? '0'
|
|
256
|
+
: !globalPermissions.value?.['Networks.CreateSysx'] &&
|
|
257
|
+
!globalPermissions.value?.['Networks.CreatePortGroup']
|
|
256
258
|
? '2'
|
|
257
|
-
: !globalPermissions.value['Networks.CreateSysx']
|
|
259
|
+
: !globalPermissions.value?.['Networks.CreateSysx']
|
|
258
260
|
? '1'
|
|
259
261
|
: '0'
|
|
260
262
|
)
|
|
@@ -291,7 +293,7 @@ const onChangeAdapterStatus = (adapterStatusNew: UI_I_AdapterStatus): void => {
|
|
|
291
293
|
// Step's content data and changers (targetDevice)
|
|
292
294
|
const targetDevice = ref<UI_I_TargetDevice>(
|
|
293
295
|
useDeepCopy(
|
|
294
|
-
targetDeviceInitialFunc(globalPermissions.value['Networks.UpdateSwitch'])
|
|
296
|
+
targetDeviceInitialFunc(globalPermissions.value?.['Networks.UpdateSwitch'])
|
|
295
297
|
)
|
|
296
298
|
)
|
|
297
299
|
const mtuFromSwitch = ref<number>(1500)
|
|
@@ -385,7 +387,8 @@ watch(
|
|
|
385
387
|
: (targetDevice.value.selected = '0')
|
|
386
388
|
newCT === '1' && (targetDevice.value.selected = '1')
|
|
387
389
|
newCT === '2' &&
|
|
388
|
-
(globalPermissions.value
|
|
390
|
+
(globalPermissions.value === undefined ||
|
|
391
|
+
globalPermissions.value?.['Networks.UpdateSwitch']
|
|
389
392
|
? (targetDevice.value.selected = '2')
|
|
390
393
|
: (targetDevice.value.selected = '3'))
|
|
391
394
|
}
|
|
@@ -515,7 +518,7 @@ const reset = (): void => {
|
|
|
515
518
|
wizard.reset()
|
|
516
519
|
connectionTypeLocal.value = '0'
|
|
517
520
|
targetDevice.value = useDeepCopy(
|
|
518
|
-
targetDeviceInitialFunc(globalPermissions.value['Networks.UpdateSwitch'])
|
|
521
|
+
targetDeviceInitialFunc(globalPermissions.value?.['Networks.UpdateSwitch'])
|
|
519
522
|
)
|
|
520
523
|
connectionSettings.value = useDeepCopy(connectionSettingsInitial)
|
|
521
524
|
portProperties.value = useDeepCopy(portPropertiesInitial)
|
|
@@ -25,7 +25,8 @@ export const servicesInitial: UI_I_Services = {
|
|
|
25
25
|
export const targetDeviceInitialFunc = (
|
|
26
26
|
updateSwitchPermission: boolean
|
|
27
27
|
): UI_I_TargetDevice => ({
|
|
28
|
-
selected:
|
|
28
|
+
selected:
|
|
29
|
+
updateSwitchPermission === undefined || updateSwitchPermission ? '1' : '3',
|
|
29
30
|
network: '',
|
|
30
31
|
switch: '',
|
|
31
32
|
standardSwitch: '',
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import type { UI_I_UseAppVersionReturnType } from '~/lib/models/composables/useAppVersion/interfaces'
|
|
2
|
-
|
|
3
|
-
export function useAppVersion(): UI_I_UseAppVersionReturnType {
|
|
4
|
-
const config = useRuntimeConfig()
|
|
5
|
-
const version = config.public.APP_VERSION as string
|
|
6
|
-
|
|
7
|
-
// const regexHasDot = /\./
|
|
8
|
-
// const regexHasDotAndB = /\.\d*b$/
|
|
9
|
-
// const regexHasDotAndD = /\..*d/
|
|
10
|
-
|
|
11
|
-
// const isBeta = regexHasDotAndB.test(version)
|
|
12
|
-
// const isDev =
|
|
13
|
-
// regexHasDotAndD.test(version) ||
|
|
14
|
-
// (!regexHasDot.test(version) && version.length < 8)
|
|
15
|
-
|
|
16
|
-
return {
|
|
17
|
-
version,
|
|
18
|
-
// isBeta,
|
|
19
|
-
// isDev,
|
|
20
|
-
}
|
|
21
|
-
}
|
|
1
|
+
import type { UI_I_UseAppVersionReturnType } from '~/lib/models/composables/useAppVersion/interfaces'
|
|
2
|
+
|
|
3
|
+
export function useAppVersion(): UI_I_UseAppVersionReturnType {
|
|
4
|
+
const config = useRuntimeConfig()
|
|
5
|
+
const version = config.public.APP_VERSION as string
|
|
6
|
+
|
|
7
|
+
// const regexHasDot = /\./
|
|
8
|
+
// const regexHasDotAndB = /\.\d*b$/
|
|
9
|
+
// const regexHasDotAndD = /\..*d/
|
|
10
|
+
|
|
11
|
+
// const isBeta = regexHasDotAndB.test(version)
|
|
12
|
+
// const isDev =
|
|
13
|
+
// regexHasDotAndD.test(version) ||
|
|
14
|
+
// (!regexHasDot.test(version) && version.length < 8)
|
|
15
|
+
|
|
16
|
+
return {
|
|
17
|
+
version,
|
|
18
|
+
// isBeta,
|
|
19
|
+
// isDev,
|
|
20
|
+
}
|
|
21
|
+
}
|
package/composables/useBrowse.ts
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import type { UI_I_Browse } from '~/lib/models/composables/useBrowse/interfaces'
|
|
2
|
-
|
|
3
|
-
export const useBrowse = (): UI_I_Browse => {
|
|
4
|
-
const browseInfo: UI_I_Browse = {
|
|
5
|
-
version: '',
|
|
6
|
-
type: '',
|
|
7
|
-
}
|
|
8
|
-
const userAgent = navigator.userAgent
|
|
9
|
-
if (userAgent.match(/edg/i)) {
|
|
10
|
-
browseInfo.version = userAgent.match(/Edg\/(\d+)/)?.[1] || ''
|
|
11
|
-
browseInfo.type = 'edg'
|
|
12
|
-
} else if (userAgent.match(/firefox|fxios/i)) {
|
|
13
|
-
browseInfo.version = userAgent.match(/Firefox\/(\d+)/)?.[1] || ''
|
|
14
|
-
browseInfo.type = 'firefox'
|
|
15
|
-
} else if (userAgent.match(/chrome|chromium|crios/i)) {
|
|
16
|
-
browseInfo.version = userAgent.match(/Chrome\/(\d+)/)?.[1] || ''
|
|
17
|
-
browseInfo.type = 'chrome'
|
|
18
|
-
} else if (userAgent.match(/safari/i)) {
|
|
19
|
-
browseInfo.version = userAgent.match(/Safari\/(\d+)/)?.[1] || ''
|
|
20
|
-
browseInfo.type = 'safari'
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
return browseInfo
|
|
24
|
-
}
|
|
1
|
+
import type { UI_I_Browse } from '~/lib/models/composables/useBrowse/interfaces'
|
|
2
|
+
|
|
3
|
+
export const useBrowse = (): UI_I_Browse => {
|
|
4
|
+
const browseInfo: UI_I_Browse = {
|
|
5
|
+
version: '',
|
|
6
|
+
type: '',
|
|
7
|
+
}
|
|
8
|
+
const userAgent = navigator.userAgent
|
|
9
|
+
if (userAgent.match(/edg/i)) {
|
|
10
|
+
browseInfo.version = userAgent.match(/Edg\/(\d+)/)?.[1] || ''
|
|
11
|
+
browseInfo.type = 'edg'
|
|
12
|
+
} else if (userAgent.match(/firefox|fxios/i)) {
|
|
13
|
+
browseInfo.version = userAgent.match(/Firefox\/(\d+)/)?.[1] || ''
|
|
14
|
+
browseInfo.type = 'firefox'
|
|
15
|
+
} else if (userAgent.match(/chrome|chromium|crios/i)) {
|
|
16
|
+
browseInfo.version = userAgent.match(/Chrome\/(\d+)/)?.[1] || ''
|
|
17
|
+
browseInfo.type = 'chrome'
|
|
18
|
+
} else if (userAgent.match(/safari/i)) {
|
|
19
|
+
browseInfo.version = userAgent.match(/Safari\/(\d+)/)?.[1] || ''
|
|
20
|
+
browseInfo.type = 'safari'
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return browseInfo
|
|
24
|
+
}
|
package/composables/useLocal.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
2
|
-
import { useLocalCommon } from '~/composables/useLocalCommon'
|
|
3
|
-
|
|
4
|
-
export const useLocal = (): UI_I_Localization => {
|
|
5
|
-
return useLocalCommon()
|
|
6
|
-
}
|
|
1
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
2
|
+
import { useLocalCommon } from '~/composables/useLocalCommon'
|
|
3
|
+
|
|
4
|
+
export const useLocal = (): UI_I_Localization => {
|
|
5
|
+
return useLocalCommon()
|
|
6
|
+
}
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
2
|
-
import localAr from '~/assets/scss/clarity/local_ar.json'
|
|
3
|
-
import localRu from '~/assets/localization/local_ru.json'
|
|
4
|
-
import localEn from '~/assets/localization/local_en.json'
|
|
5
|
-
import localHy from '~/assets/localization/local_hy.json'
|
|
6
|
-
import localZh from '~/assets/localization/local_zh.json'
|
|
7
|
-
import localKk from '~/assets/localization/local_kk.json'
|
|
8
|
-
import localBe from '~/assets/localization/local_be.json'
|
|
9
|
-
import { productNameLocal } from '~/lib/utils/localizationMapper'
|
|
10
|
-
|
|
11
|
-
const rawLocals: Record<string, any> = {
|
|
12
|
-
ar: localAr,
|
|
13
|
-
ru: localRu,
|
|
14
|
-
en: localEn,
|
|
15
|
-
hy: localHy,
|
|
16
|
-
zh: localZh,
|
|
17
|
-
kk: localKk,
|
|
18
|
-
be: localBe,
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// Кешируем уже обработанные локали
|
|
22
|
-
const processedCache: Record<string, UI_I_Localization | undefined> = {}
|
|
23
|
-
|
|
24
|
-
export const useLocalCommon = (): UI_I_Localization => {
|
|
25
|
-
const config = useRuntimeConfig()
|
|
26
|
-
let code = String(config?.public?.LOCALIZATION_CODE || 'ru').toLowerCase()
|
|
27
|
-
|
|
28
|
-
if (code === 'ar' && !useLocalStorage('rtl')) code = 'ru'
|
|
29
|
-
|
|
30
|
-
if (typeof document !== 'undefined') document.documentElement.lang = code
|
|
31
|
-
|
|
32
|
-
// если в кеше нет — создаём и сохраняем
|
|
33
|
-
if (!processedCache[code]) {
|
|
34
|
-
const raw = rawLocals[code] || rawLocals['ru']
|
|
35
|
-
processedCache[code] = productNameLocal(raw)
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
return processedCache[code] as UI_I_Localization
|
|
39
|
-
}
|
|
1
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
2
|
+
import localAr from '~/assets/scss/clarity/local_ar.json'
|
|
3
|
+
import localRu from '~/assets/localization/local_ru.json'
|
|
4
|
+
import localEn from '~/assets/localization/local_en.json'
|
|
5
|
+
import localHy from '~/assets/localization/local_hy.json'
|
|
6
|
+
import localZh from '~/assets/localization/local_zh.json'
|
|
7
|
+
import localKk from '~/assets/localization/local_kk.json'
|
|
8
|
+
import localBe from '~/assets/localization/local_be.json'
|
|
9
|
+
import { productNameLocal } from '~/lib/utils/localizationMapper'
|
|
10
|
+
|
|
11
|
+
const rawLocals: Record<string, any> = {
|
|
12
|
+
ar: localAr,
|
|
13
|
+
ru: localRu,
|
|
14
|
+
en: localEn,
|
|
15
|
+
hy: localHy,
|
|
16
|
+
zh: localZh,
|
|
17
|
+
kk: localKk,
|
|
18
|
+
be: localBe,
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Кешируем уже обработанные локали
|
|
22
|
+
const processedCache: Record<string, UI_I_Localization | undefined> = {}
|
|
23
|
+
|
|
24
|
+
export const useLocalCommon = (): UI_I_Localization => {
|
|
25
|
+
const config = useRuntimeConfig()
|
|
26
|
+
let code = String(config?.public?.LOCALIZATION_CODE || 'ru').toLowerCase()
|
|
27
|
+
|
|
28
|
+
if (code === 'ar' && !useLocalStorage('rtl')) code = 'ru'
|
|
29
|
+
|
|
30
|
+
if (typeof document !== 'undefined') document.documentElement.lang = code
|
|
31
|
+
|
|
32
|
+
// если в кеше нет — создаём и сохраняем
|
|
33
|
+
if (!processedCache[code]) {
|
|
34
|
+
const raw = rawLocals[code] || rawLocals['ru']
|
|
35
|
+
processedCache[code] = productNameLocal(raw)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return processedCache[code] as UI_I_Localization
|
|
39
|
+
}
|
package/lib/models/types.ts
CHANGED
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
export type UI_T_Project = 'sphere' | 'procurator'
|
|
2
|
-
|
|
3
|
-
export type UI_T_Lang = 'ru' | 'en' | 'be' | 'hy' | 'kk' | 'zh'
|
|
4
|
-
|
|
5
|
-
export type UI_T_NavNodes =
|
|
6
|
-
// для Сферы
|
|
7
|
-
| 'h'
|
|
8
|
-
// для Прокуратора и Сферы
|
|
9
|
-
| 'v'
|
|
10
|
-
| 's'
|
|
11
|
-
| 'n'
|
|
12
|
-
| 'b'
|
|
13
|
-
|
|
14
|
-
export type UI_T_Binary = 'KB' | 'MB' | 'GB' | 'TB' | 'PB' | 'EB' | 'ZB' | 'YB'
|
|
15
|
-
export type UI_T_BinaryLower =
|
|
16
|
-
| 'kb'
|
|
17
|
-
| 'mb'
|
|
18
|
-
| 'gb'
|
|
19
|
-
| 'tb'
|
|
20
|
-
| 'pb'
|
|
21
|
-
| 'eb'
|
|
22
|
-
| 'zb'
|
|
23
|
-
| 'yb'
|
|
24
|
-
|
|
25
|
-
export type UI_T_LangValue =
|
|
26
|
-
| 'en_US'
|
|
27
|
-
| 'ru_RU'
|
|
28
|
-
| 'hy_AM'
|
|
29
|
-
| 'zh_CHS'
|
|
30
|
-
| 'kk_KZ'
|
|
31
|
-
| 'be_BY'
|
|
32
|
-
| 'BROWSER'
|
|
33
|
-
|
|
34
|
-
export type UI_T_ProcuratorTypeNodes =
|
|
35
|
-
| 'host'
|
|
36
|
-
| 'vm'
|
|
37
|
-
| 'datastore'
|
|
38
|
-
| 'network'
|
|
39
|
-
| 'folder'
|
|
40
|
-
| 'file'
|
|
41
|
-
|
|
42
|
-
export type UI_T_SphereTypeNodes =
|
|
43
|
-
| UI_T_ProcuratorTypeNodes
|
|
44
|
-
| 'zone'
|
|
45
|
-
| 'datacenter'
|
|
46
|
-
| 'cluster'
|
|
47
|
-
| 'zone_dir'
|
|
48
|
-
| 'dc_hc_dir'
|
|
49
|
-
| 'dc_net_dir'
|
|
50
|
-
| 'dc_ds_dir'
|
|
51
|
-
| 'dc_vmt_dir'
|
|
52
|
-
| 'dc_backup_dir'
|
|
53
|
-
| 'IdentityProviders'
|
|
54
|
-
| 'networks' // может быть это не нужный тип так как есть 'network' в UI_T_ProcuratorTypeNodes
|
|
55
|
-
| 'backup_storage'
|
|
56
|
-
| 'bucket'
|
|
57
|
-
| 'vmtemplate' // TODO думаю нужно добавить в UI_T_ProcuratorTypeNodes
|
|
58
|
-
|
|
59
|
-
export type UI_T_AllTypeNodes = UI_T_SphereTypeNodes
|
|
1
|
+
export type UI_T_Project = 'sphere' | 'procurator'
|
|
2
|
+
|
|
3
|
+
export type UI_T_Lang = 'ru' | 'en' | 'be' | 'hy' | 'kk' | 'zh'
|
|
4
|
+
|
|
5
|
+
export type UI_T_NavNodes =
|
|
6
|
+
// для Сферы
|
|
7
|
+
| 'h'
|
|
8
|
+
// для Прокуратора и Сферы
|
|
9
|
+
| 'v'
|
|
10
|
+
| 's'
|
|
11
|
+
| 'n'
|
|
12
|
+
| 'b'
|
|
13
|
+
|
|
14
|
+
export type UI_T_Binary = 'KB' | 'MB' | 'GB' | 'TB' | 'PB' | 'EB' | 'ZB' | 'YB'
|
|
15
|
+
export type UI_T_BinaryLower =
|
|
16
|
+
| 'kb'
|
|
17
|
+
| 'mb'
|
|
18
|
+
| 'gb'
|
|
19
|
+
| 'tb'
|
|
20
|
+
| 'pb'
|
|
21
|
+
| 'eb'
|
|
22
|
+
| 'zb'
|
|
23
|
+
| 'yb'
|
|
24
|
+
|
|
25
|
+
export type UI_T_LangValue =
|
|
26
|
+
| 'en_US'
|
|
27
|
+
| 'ru_RU'
|
|
28
|
+
| 'hy_AM'
|
|
29
|
+
| 'zh_CHS'
|
|
30
|
+
| 'kk_KZ'
|
|
31
|
+
| 'be_BY'
|
|
32
|
+
| 'BROWSER'
|
|
33
|
+
|
|
34
|
+
export type UI_T_ProcuratorTypeNodes =
|
|
35
|
+
| 'host'
|
|
36
|
+
| 'vm'
|
|
37
|
+
| 'datastore'
|
|
38
|
+
| 'network'
|
|
39
|
+
| 'folder'
|
|
40
|
+
| 'file'
|
|
41
|
+
|
|
42
|
+
export type UI_T_SphereTypeNodes =
|
|
43
|
+
| UI_T_ProcuratorTypeNodes
|
|
44
|
+
| 'zone'
|
|
45
|
+
| 'datacenter'
|
|
46
|
+
| 'cluster'
|
|
47
|
+
| 'zone_dir'
|
|
48
|
+
| 'dc_hc_dir'
|
|
49
|
+
| 'dc_net_dir'
|
|
50
|
+
| 'dc_ds_dir'
|
|
51
|
+
| 'dc_vmt_dir'
|
|
52
|
+
| 'dc_backup_dir'
|
|
53
|
+
| 'IdentityProviders'
|
|
54
|
+
| 'networks' // может быть это не нужный тип так как есть 'network' в UI_T_ProcuratorTypeNodes
|
|
55
|
+
| 'backup_storage'
|
|
56
|
+
| 'bucket'
|
|
57
|
+
| 'vmtemplate' // TODO думаю нужно добавить в UI_T_ProcuratorTypeNodes
|
|
58
|
+
|
|
59
|
+
export type UI_T_AllTypeNodes = UI_T_SphereTypeNodes
|