Загрузка данных
Порядок типов операций и перевод должен быть соблюден по таблице:
RU US
Все All
Вход Entrance
Выход Exit
Регистрация пользователя User registration
Обновление пользователя User update
Удаление пользователя User delete
Создание контроллера Controller create
Обновление контроллера Controller update
Удаление контроллера Controller delete
Создание модели контроллера Controller model create
Обновление модели контроллера Controller model update
Удаление модели контроллера Controller model delete
Создание типа контроллера Controller type create
Обновление типа контроллера Controller type update
Удаление типа контроллера Controller type delete
Создание устройства Device create
Обновление устройства Device update
Удаление устройства Device delete
Создание типа устройства Device type create
Обновление типа устройства Device type update
Удаление типа устройства Device type delete
Создание модели устройства Device model create
Обновление модели устройства Device model update
Удаление модели устройства Device model delete
Создание самостоятельного сетевого устройства Independent network device create
Обновление самостоятельного сетевого устройства Independent network device update
Удаление самостоятельного сетевого устройства Independent network device delete
Создание панели SmartRoom Panel Smartroom create
Обновление панели SmartRoom Panel Smartroom update
Удаление панели SmartRoom Panel Smartroom delete
Создание типа панели SmartRoom Panel Smartroom type create
Обновление типа панели SmartRoom Panel Smartroom type update
Удаление типа панели SmartRoom Panel Smartroom type delete
Создание модели панели SmartRoom Panel Smartroom model create
Обновление модели панели SmartRoom Panel Smartroom model update
Удаление модели панели SmartRoom Panel Smartroom model delete
Создание самостоятельного несетевого устройства Independent non-network device create
Обновление самостоятельного несетевого устройства Independent non-network device update
Удаление самостоятельного несетевого устройства Independent non-network device delete
Создание локации Location create
Обновление локации Location update
Удаление локации Location delete
Создание заметки локации Location note create
Обновление заметки локации Location note update
Удаление заметки локации Location note delete
Создание заявки для локации Location request create
Обновление заявки для локации Location request update
Удаление заявки для локации Location request delete
Архивирование заявки для локации Location request archive
Обновление сервисного статуса локации Location service status update
Добавление владельца локации Location owner add
Удаление владельца локации Location owner delete
Перевод локации в учет Transfer location to accounting
Вывод локации из учета Removing location from accounting
Перевод оборудования в учет Transfer equipment to accounting
Вывод оборудования из учета Removing equipment from accounting
Создание производителя Manufacturer create
Обновление производителя Manufacturer update
Удаление производителя Manufacturer delete
Создание подрядчика Contractor create
Обновление подрядчика Contractor update
Удаление подрядчика Contractor delete
Создание имени интерфейса Interface name create
Обновление имени интерфейса Interface name update
Удаление имени интерфейса Interface name delete
Создание значения интерфейса Interface value create
Обновление значения интерфейса Interface value update
Удаление значения интерфейса Interface value delete
Прочтение уведомления Notification read
Прочтение всех уведомлений All notifications read
Архивирование уведомления Notification archive
Архивирование всех уведомлений All notification archive
Вывод из статуса "Нестабильно" Removing the "Unstable" status
Открытия окна аутентификации Opening the authentication window
Добавление токена оборудования Equipment token add
Обновление токена оборудования Equipment token update
Удаление токена оборудования Equipment token delete
en/audit.json
{
"sign_in": "Sign in",
"log_out": "Log out",
"user_register": "User registration",
"user_update": "User update",
"user_delete": "User delete",
"manufacturer_create": "Manufacturer create",
"manufacturer_update": "Manufacturer update",
"manufacturer_delete": "Manufacturer delete",
"controller_create": "Controller create",
"controller_update": "Controller update",
"controller_delete": "Controller delete",
"controller_model_create": "Controller model create",
"controller_model_update": "Controller model update",
"controller_model_delete": "Controller model delete",
"controller_type_create": "Controller type create",
"controller_type_update": "Controller type update",
"controller_type_delete": "Controller type delete",
"device_create": "Device create",
"device_update": "Device update",
"device_delete": "Device delete",
"device_type_create": "Device type create",
"device_type_update": "Device type update",
"device_type_delete": "Device type delete",
"device_model_create": "Device model create",
"device_model_update": "Device model update",
"device_model_delete": "Device model delete",
"location_create": "Location create",
"location_update": "Location update",
"location_delete": "Location delete",
"location_note_create": "Location note create",
"location_note_update": "Location note update",
"location_note_delete": "Location note delete",
"location_ticket_create": "Location ticket create",
"location_ticket_update": "Location ticket update",
"location_ticket_delete": "Location ticket delete",
"location_ticket_archive": "Location ticket archive",
"service_status_create": "Location Service Status Update",
"interface_name_create": "Interface name create",
"interface_name_update": "Interface name update",
"interface_name_delete": "Interface name delete",
"interface_value_create": "Interface value create",
"interface_value_update": "Interface value update",
"interface_value_delete": "Interface value delete",
"contractor_create": "Contractor create",
"contractor_update": "Contractor update",
"contractor_delete": "Contractor delete",
"network_device_create": "Independent Network equipment create",
"network_device_update": "Independent Network equipment update",
"network_device_delete": "Independent Network equipment delete",
"offline_device_create": "Independent Offline equipment create",
"offline_device_update": "Independent Offline equipment update",
"offline_device_delete": "Independent Offline equipment delete",
"notification_archive": "Notification archived",
"notification_archive_all": "All notifications archived",
"notification_read": "Notification read",
"notification_read_all": "All notifications read",
"equipment_disable": "Equipment disable",
"equipment_enable": "Equipment enable",
"location_disable": "Location disable",
"location_enable": "Location enable",
"call_start": "Call start",
"call_end": "Call end",
"call_start_vip": "VIP call start",
"call_end_vip": "VIP call end",
"call_start_common": "Common call start",
"call_end_common": "Common call end",
"equipment_token_create": "Equipment token created",
"equipment_token_update": "Equipment token updated",
"equipment_token_delete": "Equipment token deleted",
"equipment_window_create": "Equipment window created",
"location_owner_add": "Location owner added",
"location_owner_delete": "Location owner removed",
"padlet_create": "Panel SmartRoom created",
"padlet_update": "Panel SmartRoom updated",
"padlet_delete": "Panel SmartRoom deleted",
"padlet_type_create": "Panel SmartRoom type created",
"padlet_type_update": "Panel SmartRoom type updated",
"padlet_type_delete": "Panel SmartRoom type deleted",
"padlet_model_create": "Panel SmartRoom model created",
"padlet_model_update": "Panel SmartRoom model updated",
"padlet_model_delete": "Panel SmartRoom model deleted",
"flapping_resolved": "Flapping resolved",
"call_start": "Start a call from a Skill",
"call_end": "Ending a call from a Skill",
"call_start_vip": "Start of a VIP call from SberCom",
"call_end_vip": "Ending a VIP call from SberCom",
"call_start_common": "Start of a regular call from SberCom",
"call_end_common": "Ending a regular call from SberCom",
"actionType": "Action type",
"actionDetails": "Action details",
"sortBy": {
"status": "by status",
"created_at": "by date created",
"updated_at": "by date updated"
},
"destination": "Destination",
"location_id": "Location ID"
}
{
"sign_in": "Вход",
"log_out": "Выход",
"user_register": "Регистрация пользователя",
"user_update": "Обновление пользователя",
"user_delete": "Удаление пользователя",
"manufacturer_create": "Создание производителя",
"manufacturer_update": "Обновление производителя",
"manufacturer_delete": "Удаление производителя",
"controller_create": "Создание контроллера",
"controller_update": "Обновление контроллера",
"controller_delete": "Удаления контроллера",
"controller_model_create": "Создание модели контроллера",
"controller_model_update": "Обновление модели контроллера",
"controller_model_delete": "Удаление модели контроллера",
"controller_type_create": "Создание типа контроллера",
"controller_type_update": "Обновление типа контроллера",
"controller_type_delete": "Удаление типа контроллера",
"device_create": "Создание устройства",
"device_update": "Обновление устройства",
"device_delete": "Удаление устройства",
"device_type_create": "Создание типа устройства",
"device_type_update": "Обновление типа устройства",
"device_type_delete": "Удаление типа устройства",
"device_model_create": "Создание модели устройства",
"device_model_update": "Обновление модели устройства",
"device_model_delete": "Удаление модели устройства",
"location_create": "Создание локации",
"location_update": "Обновление локации",
"location_delete": "Удаление локации",
"location_note_create": "Создание заметки локации",
"location_note_update": "Обновление заметки локации",
"location_note_delete": "Удаление заметки локации",
"location_ticket_create": "Создание заявки для локации",
"location_ticket_update": "Обновление заявки для локации",
"location_ticket_delete": "Удаление заявки для локации",
"location_ticket_archive": "Архивирование заявки для локации",
"service_status_create": "Обновление сервисного статуса локации",
"interface_name_create": "Создание имени интерфейса",
"interface_name_update": "Обновление имени интерфейса",
"interface_name_delete": "Удаление имени интерфейса",
"interface_value_create": "Создание значения интерфейса",
"interface_value_update": "Обновление значения интерфейса",
"interface_value_delete": "Удаление значения интерфейса",
"contractor_create": "Создание подрядчика",
"contractor_update": "Обновление подрядчика",
"contractor_delete": "Удаление подрядчика",
"network_device_create": "Создание самостоятельного сетевого устройства",
"network_device_update": "Обновление самостоятельного сетевого устройства",
"network_device_delete": "Удаление самостоятельного сетевого устройства",
"offline_device_create": "Создание самостоятельного несетевого устройства",
"offline_device_update": "Обновление самостоятельного несетевого устройства",
"offline_device_delete": "Удаление самостоятельного несетевого устройства",
"notification_archive": "Архивирование уведомления",
"notification_archive_all": "Архивирование всех уведомлений",
"notification_read": "Прочтение уведомления",
"notification_read_all": "Прочтение всех уведомлений",
"equipment_disable": "Отключение оборудования",
"equipment_enable": "Включение оборудования",
"location_disable": "Отключение локации",
"location_enable": "Включение локации",
"call_start": "Начало вызова",
"call_end": "Завершение вызова",
"call_start_vip": "Начало VIP-вызова",
"call_end_vip": "Завершение VIP-вызова",
"call_start_common": "Начало обычного вызова",
"call_end_common": "Завершение обычного вызова",
"equipment_token_create": "Создание токена оборудования",
"equipment_token_update": "Обновление токена оборудования",
"equipment_token_delete": "Удаление токена оборудования",
"equipment_window_create": "Создание окна оборудования",
"location_owner_add": "Добавление владельца локации",
"location_owner_delete": "Удаление владельца локации",
"padlet_create": "Создание панели SmartRoom",
"padlet_update": "Обновление панели SmartRoom",
"padlet_delete": "Удаление панели SmartRoom",
"padlet_type_create": "Создание типа панели SmartRoom",
"padlet_type_update": "Обновление типа панели SmartRoom",
"padlet_type_delete": "Удаление типа панели SmartRoom",
"padlet_model_create": "Создание модели панели SmartRoom",
"padlet_model_update": "Обновление модели панели SmartRoom",
"padlet_model_delete": "Удаление модели панели SmartRoom",
"flapping_resolved": "Колебания состояния устранены",
"call_start": "Начало вызова из Навыка",
"call_end": "Завершение вызова из Навыка",
"call_start_vip": "Начало VIP вызова из SberCom",
"call_end_vip": "Завершение VIP вызова из SberCom",
"call_start_common": "Начало обычного вызова из SberCom",
"call_end_common": "Завершение обычного вызова из SberCom",
"actionType": "Тип действия",
"actionDetails": "Детали события",
"sortBy": {
"status": "по статусу",
"created_at": "по дате создания",
"updated_at": "по дате обновления"
},
"destination": "Номер ВКС",
"location_id": "ID локации"
}
import { AppConsts } from '@/shared';
import {
Button,
Column,
DateTimeField,
Select,
TextField,
} from '@/shared/components';
import { SearchSelect } from '@/shared/components/SearchSelect';
import { useTranslation } from 'react-i18next';
import { useAuditSideFilter } from '../controller';
export const AuditSideFilter = () => {
const { t } = useTranslation('common');
const {
searchParams,
isFetchingUsers,
userOptions,
typeOptions,
smartRoomId,
smartRoomIdError,
setSearchUser,
resetFilters,
refetchQuery,
handleChangeTimeFrom,
handleChange,
handleChangeTimeMax,
handleChangeUser,
handleSmartRoomIdChange,
} = useAuditSideFilter();
return (
<Column minWidth={330} maxWidth={330}>
<DateTimeField
label={t('timeFrom')}
onChange={handleChangeTimeFrom}
value={searchParams.tmMin && searchParams.tmMin * AppConsts.THOUSAND}
/>
<DateTimeField
label={t('timeTo')}
onChange={handleChangeTimeMax}
value={searchParams.tmMax && searchParams.tmMax * AppConsts.THOUSAND}
/>
<Select
label={t('type')}
onChange={handleChange('type')}
options={typeOptions}
margin='normal'
value={searchParams.type}
/>
<SearchSelect
label={t('user')}
placeholder={t('user:placeholders.searchByFullName')}
loading={isFetchingUsers}
value={searchParams?.userId || ''}
setValue={setSearchUser}
options={userOptions}
margin='normal'
onChangeCallback={handleChangeUser}
/>
<Select
label={t('source')}
onChange={handleChange('source')}
value={searchParams.source}
margin='normal'
// TO DO backend options
options={[
{ label: t('common:all'), value: undefined },
{ label: t('monitoring'), value: 'smartroom-monitoring' },
{ label: t('authentication'), value: 'smartroom-auth' },
{
label: t('notifications:notifications'),
value: 'smartroom-notifications',
},
]}
/>
<TextField
label='Smartroom ID'
value={smartRoomId}
onChange={handleSmartRoomIdChange}
margin='normal'
error={smartRoomIdError}
helperText={
smartRoomIdError ? t('common:messages.invalidUUIDMessage') : ''
}
/>
<Column gridGap={16}>
<Button onClick={resetFilters} color='error'>
{t('buttons.reset')}
</Button>
<Button onClick={refetchQuery} color='primary'>
{t('buttons.update')}
</Button>
</Column>
</Column>
);
};
import { auditRoute } from '@/app/router/routes/audit';
import { AppConsts } from '@/shared';
import {
useGetApiV1MessageQuery,
useGetApiV1MessageTypesQuery,
} from '@/shared/api/audit/client';
import {
useGetUserByIdQuery,
useGetUsersQuery,
} from '@/shared/api/user/client';
import { RouterConsts } from '@/shared/consts/RouterConsts';
import { useUpdateSearchParams } from '@/shared/hooks';
import { Helpers } from '@/shared/lib';
import { ChangeEvent, useEffect, useMemo, useRef, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { AuditLib } from '../../lib/AuditLib';
export const useAuditSideFilter = () => {
const { t } = useTranslation('common');
const updateSearchParams = useUpdateSearchParams();
const searchParams = auditRoute.useSearch();
const { refetch } = useGetApiV1MessageQuery(searchParams);
const [searchUser, setSearchUser] = useState('');
const [smartRoomId, setSmartRoomId] = useState(
searchParams.smartroomId || '',
);
const [smartRoomIdError, setSmartRoomIdError] = useState(false);
const { data: auditTypesData } = useGetApiV1MessageTypesQuery();
const { data: usersData, isFetching: isFetchingUsers } = useGetUsersQuery({
limit: 10,
sortType: 'asc',
sortColumn: 'full_name',
search: searchUser,
});
const { data: user } = useGetUserByIdQuery(
{ userId: searchParams.userId ?? '' },
{ skip: false },
);
const hasFetchedUser = useRef(false);
useEffect(() => {
if (searchParams.userId && user) {
hasFetchedUser.current = true;
}
}, [user, searchParams.userId]);
const resetPage = () => {
updateSearchParams({ paramName: 'offset', value: 0 });
};
const handleChange =
(paramName: string) =>
(event: ChangeEvent<{ name?: string | undefined; value: unknown }>) => {
const { value } = event.target;
updateSearchParams({ paramName, value });
resetPage();
};
const handleChangeUser = (value: string) => {
updateSearchParams({ paramName: 'userId', value });
resetPage();
};
const handleChangeTimeFrom = (time: Date) => {
const dateMs = new Date(time).getTime() / AppConsts.THOUSAND;
updateSearchParams({ paramName: 'tmMin', value: dateMs });
resetPage();
};
const handleChangeTimeMax = (time: Date) => {
const dateMs = new Date(time).getTime() / AppConsts.THOUSAND;
updateSearchParams({ paramName: 'tmMax', value: dateMs });
resetPage();
};
useEffect(() => {
const valid = Helpers.isUUID(smartRoomId);
setSmartRoomIdError(smartRoomId !== '' && !valid);
if (valid || smartRoomId === '') {
updateSearchParams({ paramName: 'smartroomId', value: smartRoomId });
resetPage();
return;
}
updateSearchParams({ paramName: 'smartroomId', value: '' });
}, [smartRoomId]);
const handleSmartRoomIdChange = (e: ChangeEvent<HTMLInputElement>) => {
const value = e.target.value;
setSmartRoomId(value);
};
const typeOptions = useMemo(() => {
if (!auditTypesData || !Array.isArray(auditTypesData.types)) {
return [];
}
return [
{ label: t('common:all'), value: undefined },
...auditTypesData.types.map((type: string) => ({
value: type,
label: t(`audit:${type}`) || type,
})),
];
}, [auditTypesData]);
const userOptions = useMemo(() => {
let options = usersData?.users
? AuditLib.mapUsersToOptions(usersData.users)
: [];
if (searchParams.userId && user) {
options = [...options, { label: user.fullName!, value: user.id! }];
}
return options;
}, [usersData, user]);
const resetFilters = () => {
updateSearchParams({
queryObject: { ...RouterConsts.AUDIT_DEFAULT_QUERY },
});
setSmartRoomId('');
setSmartRoomIdError(false);
};
const refetchQuery = () => {
refetch();
};
return {
searchParams,
isFetchingUsers,
typeOptions,
userOptions,
searchUser,
smartRoomId,
smartRoomIdError,
hasFetchedUser,
setSearchUser,
refetchQuery,
resetFilters,
handleChange,
handleChangeUser,
handleChangeTimeFrom,
handleChangeTimeMax,
handleSmartRoomIdChange,
};
};