Portal/rsconcept/frontend/src/features/oss/dialogs/dlg-show-term-graph/dlg-show-term-graph.tsx

50 lines
1.5 KiB
TypeScript
Raw Normal View History

2025-07-09 17:58:09 +03:00
'use client';
import { ReactFlowProvider } from 'reactflow';
import { urls, useConceptNavigation } from '@/app';
import { type IRSForm } from '@/features/rsform';
import { RSTabID } from '@/features/rsform/pages/rsform-page/rsedit-context';
import { MiniButton } from '@/components/control';
import { IconRSForm } from '@/components/icons';
import { ModalView } from '@/components/modal';
import { useDialogsStore } from '@/stores/dialogs';
2025-07-09 17:09:45 +03:00
import { TGReadonlyFlow } from './tg-readonly-flow';
export interface DlgShowTermGraphProps {
schema: IRSForm;
}
export function DlgShowTermGraph() {
const { schema } = useDialogsStore(state => state.props as DlgShowTermGraphProps);
const hideDialog = useDialogsStore(state => state.hideDialog);
const router = useConceptNavigation();
function navigateToSchema() {
hideDialog();
router.push({
path: urls.schema_props({
id: schema.id,
tab: RSTabID.GRAPH
})
});
}
return (
2025-07-09 17:09:45 +03:00
<ModalView className='relative w-[calc(100dvw-3rem)] h-[calc(100dvh-3rem)]' fullScreen header='Граф термов'>
<MiniButton
title='Открыть концептуальную схему'
noPadding
2025-07-09 17:09:45 +03:00
className='absolute z-pop top-2 left-2'
icon={<IconRSForm size='1.25rem' className='text-primary' />}
onClick={navigateToSchema}
/>
<ReactFlowProvider>
2025-07-09 17:09:45 +03:00
<TGReadonlyFlow schema={schema} />
</ReactFlowProvider>
</ModalView>
);
}