2026-09-29 15:48:11 +03:00

84 lines
3.0 KiB
JavaScript

export const DEFAULT_ACTIONS = {
ROW_CREATE: 'Создание строки',
ROW_DELETE: 'Удаление строки',
ACCESS_EXTEND: 'Продление этапа',
ACCESS_WINDOW_CHANGE: 'Изменение этапа',
USER_ROLE_CHANGE: 'Изменение роли пользователя',
CREATE_TASK: 'Создание задачи',
FORM_MARKED_FOR_DELETION: 'Задача отмечена на удаление',
FORM_RESTORED: 'Задача возвращена',
FORM_HARD_DELETED: 'Задача полностью удалена',
USER_CREATE: 'Создание пользователя',
USER_ACCESS_GRANTED: 'Предоставление доступа к ССП/РФ',
USER_ACCESS_REVOKED: 'Отмена доступа к ССП/РФ',
VSP_CREATE: 'Создание ВСП',
VSP_UPDATE: 'Обновление ВСП',
DELETE_VSP: 'Удаление ВСП',
PROJECT_CREATE: 'Создание проекта',
PROJECT_UPDATE: 'Обновление проекта',
PROJECT_DELETE: 'Удаление проекта',
PROJECT_YEAR_ADD: 'Добавление года для проекта',
SMETA_UPDATE: 'Обновление сметы проекта',
};
const ACTION_NAME_ALIASES = {
UPDATE_SMETA: 'Обновление сметы проекта',
};
export const ENTITY_RUSSIAN_NAMES = {
ROW: ['строки', 'строка'],
PROJECT: ['проекта', 'проект'],
TABLE: ['таблицы', 'таблица'],
STAGE: ['этапа', 'этап'],
SSP: ['ССП/РФ', 'ССП/РФ'],
TASKS: ['задач', 'задачи'],
TASK: ['задачи', 'задача'],
USER_ACCESS: ['доступа к ССП/РФ', 'доступ к ССП/РФ'],
USER: ['пользователя', 'пользователь'],
ACCESS_WINDOW: ['этапа', 'этап'],
ACCESS: ['этапа', 'этап'],
USER_ROLE: ['роли пользователя', 'роль пользователя'],
VSP: ['ВСП', 'ВСП'],
};
export const ACTION_RUSSIAN_NAMES = {
CREATE: 'Создание',
UPDATE: 'Обновление',
DELETE: 'Удаление',
CHANGE: 'Изменение',
GET: 'Получение',
GRANTED: 'Предоставление',
REVOKED: 'Отмена',
EXTEND: 'Продление',
};
export const getRussianNamesForType = (name) => {
if (!name) return name;
if (DEFAULT_ACTIONS[name] || ACTION_NAME_ALIASES[name]) return DEFAULT_ACTIONS[name] || ACTION_NAME_ALIASES[name];
let entityTranslation = '';
const sortedEntities = Object.keys(ENTITY_RUSSIAN_NAMES).sort((a, b) => b[0].length - a[0].length);
for (const entity of sortedEntities) {
if (name.includes(entity)) {
entityTranslation = ENTITY_RUSSIAN_NAMES[entity][0];
break;
}
}
let actionTranslation = '';
for (const action of Object.keys(ACTION_RUSSIAN_NAMES)) {
if (name.includes(action)) {
actionTranslation = ACTION_RUSSIAN_NAMES[action];
break;
}
}
if (!actionTranslation && !entityTranslation) {
return name;
}
return `${actionTranslation} ${entityTranslation}`.trim();
};