import * as React from 'react'; import styles from './AdminApp.module.scss'; import { TopNav } from './TopNav'; import { ScreenKey } from './types'; import { ApprovalRouteApi } from '../../services/api'; import { PortalDictionaryClient } from '../../services/portalDictionary'; import { TemplateRoute } from '../../models'; import { DashboardScreen } from '../screens/DashboardScreen'; import { RequestTypesScreen } from '../screens/RequestTypesScreen'; import { RoutesScreen } from '../screens/RoutesScreen'; import { RouteStepsScreen } from '../screens/RouteStepsScreen'; import { ResolveScreen } from '../screens/ResolveScreen'; export interface IAdminAppProps { api: ApprovalRouteApi; /** Undefined, пока SPFx выдаёт AAD-клиент для api.tnsu.kz. */ dictionary?: PortalDictionaryClient; currentUserEmail?: string; } export const AdminApp: React.FC = ({ api, dictionary, currentUserEmail }) => { const [screen, setScreen] = React.useState('dashboard'); const [selectedRoute, setSelectedRoute] = React.useState(); const [selectedRequestTypeName, setSelectedRequestTypeName] = React.useState(''); const navigate = (key: ScreenKey): void => { setScreen(key); }; const openSteps = (route: TemplateRoute): void => { setSelectedRoute(route); api.requestTypes.get(route.requestTypeId) .then(rt => setSelectedRequestTypeName(rt.name)) .catch(() => setSelectedRequestTypeName(`#${route.requestTypeId}`)); setScreen('routeSteps'); }; return (
{screen === 'dashboard' && } {screen === 'requestTypes' && } {screen === 'routes' && } {screen === 'routeSteps' && selectedRoute && ( setScreen('routes')} /> )} {screen === 'resolve' && ( )}
); };