bfg-common 1.5.714 → 1.5.716
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/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/DataGrid.vue +1718 -1718
- 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/theHeader/TheHeaderNew.vue +315 -315
- package/components/common/layout/theHeader/TheHeaderOld.vue +262 -262
- package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
- package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
- package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesOld.vue +144 -144
- package/components/common/layout/theHeader/userMenu/modals/preferences/lib/models/types.ts +7 -7
- package/components/common/pages/backups/DetailView.vue +52 -52
- 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/lib/config/readyToCompleteOptions.ts +69 -69
- package/components/common/pages/backups/modals/createBackup/lib/models/interfaces.ts +8 -8
- package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
- package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
- package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
- 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 -122
- package/components/common/pages/tasks/table/Table.vue +373 -370
- package/components/common/pages/tasks/table/lib/config/config.ts +279 -279
- package/components/common/pages/tasks/table/lib/models/interfaces.ts +6 -0
- 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/New.vue +311 -311
- 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/wizards/common/compatibility/Compatibility.vue +35 -35
- package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
- 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 +228 -228
- 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/composables/useAppVersion.ts +21 -21
- package/composables/useLocal.ts +6 -6
- package/composables/useLocalCommon.ts +39 -39
- 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/actions.ts +1 -1
- package/store/tasks/mappers/recentTasks.ts +123 -123
- package/store/tasks/mappers/tasks.ts +8 -1
- 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
|
+
}
|
|
@@ -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/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/package.json
CHANGED
package/plugins/console.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { defineNuxtPlugin } from '#app'
|
|
2
|
-
import type { UI_T_CODEC } from '~/components/common/spiceConsole/lib/models/types'
|
|
3
|
-
|
|
4
|
-
export default defineNuxtPlugin(() => {
|
|
5
|
-
const console = function (): any {
|
|
6
|
-
const self: any = {
|
|
7
|
-
codec: ref<UI_T_CODEC>(1),
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
self.changeCodec = (codec: UI_T_CODEC): void => {
|
|
11
|
-
self.codec.value = codec
|
|
12
|
-
}
|
|
13
|
-
return self
|
|
14
|
-
}.call({})
|
|
15
|
-
|
|
16
|
-
return {
|
|
17
|
-
provide: {
|
|
18
|
-
console,
|
|
19
|
-
},
|
|
20
|
-
}
|
|
21
|
-
})
|
|
1
|
+
import { defineNuxtPlugin } from '#app'
|
|
2
|
+
import type { UI_T_CODEC } from '~/components/common/spiceConsole/lib/models/types'
|
|
3
|
+
|
|
4
|
+
export default defineNuxtPlugin(() => {
|
|
5
|
+
const console = function (): any {
|
|
6
|
+
const self: any = {
|
|
7
|
+
codec: ref<UI_T_CODEC>(1),
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
self.changeCodec = (codec: UI_T_CODEC): void => {
|
|
11
|
+
self.codec.value = codec
|
|
12
|
+
}
|
|
13
|
+
return self
|
|
14
|
+
}.call({})
|
|
15
|
+
|
|
16
|
+
return {
|
|
17
|
+
provide: {
|
|
18
|
+
console,
|
|
19
|
+
},
|
|
20
|
+
}
|
|
21
|
+
})
|
package/plugins/mouse.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { defineNuxtPlugin } from '#app'
|
|
2
|
-
import type { UI_T_MouseMode } from '~/components/common/spiceConsole/lib/models/types'
|
|
3
|
-
|
|
4
|
-
export default defineNuxtPlugin(() => {
|
|
5
|
-
const mouse = function (): any {
|
|
6
|
-
const self: any = {
|
|
7
|
-
mode: ref<UI_T_MouseMode>(1),
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
self.changeMode = (mode: UI_T_MouseMode): void => {
|
|
11
|
-
self.mode.value = mode
|
|
12
|
-
}
|
|
13
|
-
return self
|
|
14
|
-
}.call({})
|
|
15
|
-
|
|
16
|
-
return {
|
|
17
|
-
provide: {
|
|
18
|
-
mouse,
|
|
19
|
-
},
|
|
20
|
-
}
|
|
21
|
-
})
|
|
1
|
+
import { defineNuxtPlugin } from '#app'
|
|
2
|
+
import type { UI_T_MouseMode } from '~/components/common/spiceConsole/lib/models/types'
|
|
3
|
+
|
|
4
|
+
export default defineNuxtPlugin(() => {
|
|
5
|
+
const mouse = function (): any {
|
|
6
|
+
const self: any = {
|
|
7
|
+
mode: ref<UI_T_MouseMode>(1),
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
self.changeMode = (mode: UI_T_MouseMode): void => {
|
|
11
|
+
self.mode.value = mode
|
|
12
|
+
}
|
|
13
|
+
return self
|
|
14
|
+
}.call({})
|
|
15
|
+
|
|
16
|
+
return {
|
|
17
|
+
provide: {
|
|
18
|
+
mouse,
|
|
19
|
+
},
|
|
20
|
+
}
|
|
21
|
+
})
|
package/plugins/panelStates.ts
CHANGED
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
import { defineNuxtPlugin } from '#app'
|
|
2
|
-
import type { UI_I_PanelOptions } from '~/lib/models/plugins/panelStates/interfaces'
|
|
3
|
-
|
|
4
|
-
export default defineNuxtPlugin(() => {
|
|
5
|
-
const panelStates = function (): any {
|
|
6
|
-
const self: any = {}
|
|
7
|
-
let options: UI_I_PanelOptions = {
|
|
8
|
-
leftPanelWidth: 20,
|
|
9
|
-
topPanelHeight: 80,
|
|
10
|
-
isBottomPanelCollapsed: false,
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
self.setLeftPanelWidth = function (width: number): void {
|
|
14
|
-
options.leftPanelWidth = width
|
|
15
|
-
|
|
16
|
-
self.setPanelStatesInStorage()
|
|
17
|
-
}
|
|
18
|
-
self.setTopPanelHeight = function (height: number): void {
|
|
19
|
-
options.topPanelHeight = height
|
|
20
|
-
|
|
21
|
-
self.setPanelStatesInStorage()
|
|
22
|
-
}
|
|
23
|
-
self.bottomPanelCollapse = function (collapse: boolean): void {
|
|
24
|
-
options.isBottomPanelCollapsed = collapse
|
|
25
|
-
|
|
26
|
-
self.setPanelStatesInStorage()
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
self.setPanelStatesInStorage = function (): void {
|
|
30
|
-
useLocalStorage('panelStates', options)
|
|
31
|
-
self.emitChanges()
|
|
32
|
-
}
|
|
33
|
-
self.getPanelStatesOfStorage = function (): UI_I_PanelOptions {
|
|
34
|
-
let panelStates = useLocalStorage('panelStates')
|
|
35
|
-
|
|
36
|
-
if (!panelStates) {
|
|
37
|
-
// const parent = document.getElementById('default-layout-outer')
|
|
38
|
-
const parent = document.body
|
|
39
|
-
const parentHeight = parent?.clientHeight || 0
|
|
40
|
-
const onePercent = parentHeight / 100
|
|
41
|
-
const defaultRecentTasksHeight = 250
|
|
42
|
-
|
|
43
|
-
options.topPanelHeight =
|
|
44
|
-
(parentHeight - defaultRecentTasksHeight - 1.5) / onePercent
|
|
45
|
-
|
|
46
|
-
panelStates = options
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
options = panelStates
|
|
50
|
-
|
|
51
|
-
return panelStates
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
self.cb = (): void => {}
|
|
55
|
-
self.on = function (cb: () => any | void): void {
|
|
56
|
-
self.cb = cb
|
|
57
|
-
}
|
|
58
|
-
self.emitChanges = function (): void {
|
|
59
|
-
self.cb(options)
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
return self
|
|
63
|
-
}.call({})
|
|
64
|
-
|
|
65
|
-
return {
|
|
66
|
-
provide: {
|
|
67
|
-
panelStates,
|
|
68
|
-
},
|
|
69
|
-
}
|
|
70
|
-
})
|
|
1
|
+
import { defineNuxtPlugin } from '#app'
|
|
2
|
+
import type { UI_I_PanelOptions } from '~/lib/models/plugins/panelStates/interfaces'
|
|
3
|
+
|
|
4
|
+
export default defineNuxtPlugin(() => {
|
|
5
|
+
const panelStates = function (): any {
|
|
6
|
+
const self: any = {}
|
|
7
|
+
let options: UI_I_PanelOptions = {
|
|
8
|
+
leftPanelWidth: 20,
|
|
9
|
+
topPanelHeight: 80,
|
|
10
|
+
isBottomPanelCollapsed: false,
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
self.setLeftPanelWidth = function (width: number): void {
|
|
14
|
+
options.leftPanelWidth = width
|
|
15
|
+
|
|
16
|
+
self.setPanelStatesInStorage()
|
|
17
|
+
}
|
|
18
|
+
self.setTopPanelHeight = function (height: number): void {
|
|
19
|
+
options.topPanelHeight = height
|
|
20
|
+
|
|
21
|
+
self.setPanelStatesInStorage()
|
|
22
|
+
}
|
|
23
|
+
self.bottomPanelCollapse = function (collapse: boolean): void {
|
|
24
|
+
options.isBottomPanelCollapsed = collapse
|
|
25
|
+
|
|
26
|
+
self.setPanelStatesInStorage()
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
self.setPanelStatesInStorage = function (): void {
|
|
30
|
+
useLocalStorage('panelStates', options)
|
|
31
|
+
self.emitChanges()
|
|
32
|
+
}
|
|
33
|
+
self.getPanelStatesOfStorage = function (): UI_I_PanelOptions {
|
|
34
|
+
let panelStates = useLocalStorage('panelStates')
|
|
35
|
+
|
|
36
|
+
if (!panelStates) {
|
|
37
|
+
// const parent = document.getElementById('default-layout-outer')
|
|
38
|
+
const parent = document.body
|
|
39
|
+
const parentHeight = parent?.clientHeight || 0
|
|
40
|
+
const onePercent = parentHeight / 100
|
|
41
|
+
const defaultRecentTasksHeight = 250
|
|
42
|
+
|
|
43
|
+
options.topPanelHeight =
|
|
44
|
+
(parentHeight - defaultRecentTasksHeight - 1.5) / onePercent
|
|
45
|
+
|
|
46
|
+
panelStates = options
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
options = panelStates
|
|
50
|
+
|
|
51
|
+
return panelStates
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
self.cb = (): void => {}
|
|
55
|
+
self.on = function (cb: () => any | void): void {
|
|
56
|
+
self.cb = cb
|
|
57
|
+
}
|
|
58
|
+
self.emitChanges = function (): void {
|
|
59
|
+
self.cb(options)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return self
|
|
63
|
+
}.call({})
|
|
64
|
+
|
|
65
|
+
return {
|
|
66
|
+
provide: {
|
|
67
|
+
panelStates,
|
|
68
|
+
},
|
|
69
|
+
}
|
|
70
|
+
})
|