import * as React from 'react'; import styles from './RoutesScreen.module.scss'; import { RouteFormModal } from './RouteFormModal'; import { ApprovalRouteApi } from '../../services/api'; import { PortalDictionaryClient } from '../../services/portalDictionary'; import { RouteType, TemplateRoute } from '../../models'; import { routeTypeLabels, texts } from '../../texts'; import { shortGuid } from '../../utils/guid'; import { useRequestTypes } from '../../hooks/useRequestTypes'; import { useTemplateRoutes } from '../../hooks/useTemplateRoutes'; import { usePortalDictionaries } from '../../hooks/usePortalDictionaries'; import { useDeleteTarget } from '../../hooks/useDeleteTarget'; import { ActionsCell, Alert, Badge, Breadcrumbs, Button, ConfirmDialog, DataTable, Field, IconButton, PageHeader, PrimaryCell, Select } from '../ui'; export interface IRoutesScreenProps { api: ApprovalRouteApi; dictionary?: PortalDictionaryClient; onOpenSteps: (route: TemplateRoute) => void; } export const RoutesScreen: React.FC = ({ api, dictionary, onOpenSteps }) => { const requestTypes = useRequestTypes(api); const portalDictionaries = usePortalDictionaries(dictionary); const [filterRequestTypeId, setFilterRequestTypeId] = React.useState(''); const routes = useTemplateRoutes(api, filterRequestTypeId ? Number(filterRequestTypeId) : undefined); const [editing, setEditing] = React.useState(); const [showForm, setShowForm] = React.useState(false); const deleteTarget = useDeleteTarget(item => api.templateRoutes.remove(item.id), routes.reload); const requestTypeName = (id: number): string => requestTypes.items.find(rt => rt.id === id)?.name ?? `#${id}`; // Пока справочник не загрузился (или маршрут ссылается на удалённую запись), // показываем усечённый Guid — чтобы строка таблицы не выглядела пустой. const companyName = (id: string): string => portalDictionaries.companies.find(c => c.id === id)?.name ?? shortGuid(id); const departmentName = (id: string): string => portalDictionaries.departments.find(d => d.id === id)?.name ?? shortGuid(id); const openCreate = (): void => { setEditing(undefined); setShowForm(true); }; const openEdit = (item: TemplateRoute): void => { setEditing(item); setShowForm(true); }; return (
{texts.routes.add}} />