2023-12-13 14:32:57 +03:00
|
|
|
|
'use client';
|
|
|
|
|
|
2024-01-04 19:38:12 +03:00
|
|
|
|
import Checkbox from '@/components/ui/Checkbox';
|
|
|
|
|
import Modal, { ModalProps } from '@/components/ui/Modal';
|
2023-12-13 14:32:57 +03:00
|
|
|
|
import usePartialUpdate from '@/hooks/usePartialUpdate';
|
2023-12-26 14:23:51 +03:00
|
|
|
|
import { GraphFilterParams } from '@/models/miscellaneous';
|
2023-12-13 14:32:57 +03:00
|
|
|
|
import { CstType } from '@/models/rsform';
|
|
|
|
|
import { labelCstType } from '@/utils/labels';
|
2023-11-27 18:27:23 +03:00
|
|
|
|
|
2023-12-28 14:04:44 +03:00
|
|
|
|
interface DlgGraphParamsProps extends Pick<ModalProps, 'hideWindow'> {
|
|
|
|
|
initial: GraphFilterParams;
|
|
|
|
|
onConfirm: (params: GraphFilterParams) => void;
|
2023-11-27 18:27:23 +03:00
|
|
|
|
}
|
|
|
|
|
|
2023-12-28 14:04:44 +03:00
|
|
|
|
function DlgGraphParams({ hideWindow, initial, onConfirm }: DlgGraphParamsProps) {
|
2023-11-27 18:27:23 +03:00
|
|
|
|
const [params, updateParams] = usePartialUpdate(initial);
|
|
|
|
|
|
2023-12-04 14:19:54 +03:00
|
|
|
|
function handleSubmit() {
|
2023-11-27 18:27:23 +03:00
|
|
|
|
hideWindow();
|
|
|
|
|
onConfirm(params);
|
2023-12-04 14:19:54 +03:00
|
|
|
|
}
|
2023-11-27 18:27:23 +03:00
|
|
|
|
|
|
|
|
|
return (
|
2023-12-28 14:04:44 +03:00
|
|
|
|
<Modal
|
|
|
|
|
canSubmit
|
|
|
|
|
hideWindow={hideWindow}
|
|
|
|
|
header='Настройки графа термов'
|
|
|
|
|
onSubmit={handleSubmit}
|
|
|
|
|
submitText='Применить'
|
|
|
|
|
className='flex gap-12 px-6 py-2'
|
|
|
|
|
>
|
|
|
|
|
<div className='flex flex-col gap-1'>
|
|
|
|
|
<h1 className='mb-2'>Преобразования</h1>
|
|
|
|
|
<Checkbox
|
|
|
|
|
label='Скрыть текст'
|
|
|
|
|
title='Не отображать термины'
|
|
|
|
|
value={params.noText}
|
|
|
|
|
setValue={value => updateParams({ noText: value })}
|
|
|
|
|
/>
|
|
|
|
|
<Checkbox
|
|
|
|
|
label='Скрыть несвязанные'
|
|
|
|
|
title='Неиспользуемые конституенты'
|
|
|
|
|
value={params.noHermits}
|
|
|
|
|
setValue={value => updateParams({ noHermits: value })}
|
|
|
|
|
/>
|
|
|
|
|
<Checkbox
|
|
|
|
|
label='Скрыть шаблоны'
|
|
|
|
|
title='Терм-функции и предикат-функции с параметризованными аргументами'
|
|
|
|
|
value={params.noTemplates}
|
|
|
|
|
setValue={value => updateParams({ noTemplates: value })}
|
|
|
|
|
/>
|
|
|
|
|
<Checkbox
|
|
|
|
|
label='Транзитивная редукция'
|
|
|
|
|
title='Удалить связи, образующие транзитивные пути в графе'
|
|
|
|
|
value={params.noTransitive}
|
|
|
|
|
setValue={value => updateParams({ noTransitive: value })}
|
|
|
|
|
/>
|
2024-04-05 15:53:05 +03:00
|
|
|
|
<Checkbox
|
|
|
|
|
label='Свернуть производные'
|
|
|
|
|
title='Отображать производные понятия вместе с основным'
|
|
|
|
|
value={params.foldDerived}
|
|
|
|
|
setValue={value => updateParams({ foldDerived: value })}
|
|
|
|
|
/>
|
2023-12-28 14:04:44 +03:00
|
|
|
|
</div>
|
|
|
|
|
<div className='flex flex-col gap-1'>
|
|
|
|
|
<h1 className='mb-2'>Типы конституент</h1>
|
|
|
|
|
<Checkbox
|
|
|
|
|
label={labelCstType(CstType.BASE)}
|
|
|
|
|
value={params.allowBase}
|
|
|
|
|
setValue={value => updateParams({ allowBase: value })}
|
|
|
|
|
/>
|
|
|
|
|
<Checkbox
|
|
|
|
|
label={labelCstType(CstType.STRUCTURED)}
|
|
|
|
|
value={params.allowStruct}
|
|
|
|
|
setValue={value => updateParams({ allowStruct: value })}
|
|
|
|
|
/>
|
|
|
|
|
<Checkbox
|
|
|
|
|
label={labelCstType(CstType.TERM)}
|
|
|
|
|
value={params.allowTerm}
|
|
|
|
|
setValue={value => updateParams({ allowTerm: value })}
|
|
|
|
|
/>
|
|
|
|
|
<Checkbox
|
|
|
|
|
label={labelCstType(CstType.AXIOM)}
|
|
|
|
|
value={params.allowAxiom}
|
|
|
|
|
setValue={value => updateParams({ allowAxiom: value })}
|
|
|
|
|
/>
|
|
|
|
|
<Checkbox
|
|
|
|
|
label={labelCstType(CstType.FUNCTION)}
|
|
|
|
|
value={params.allowFunction}
|
|
|
|
|
setValue={value => updateParams({ allowFunction: value })}
|
|
|
|
|
/>
|
|
|
|
|
<Checkbox
|
|
|
|
|
label={labelCstType(CstType.PREDICATE)}
|
|
|
|
|
value={params.allowPredicate}
|
|
|
|
|
setValue={value => updateParams({ allowPredicate: value })}
|
|
|
|
|
/>
|
|
|
|
|
<Checkbox
|
|
|
|
|
label={labelCstType(CstType.CONSTANT)}
|
|
|
|
|
value={params.allowConstant}
|
|
|
|
|
setValue={value => updateParams({ allowConstant: value })}
|
|
|
|
|
/>
|
|
|
|
|
<Checkbox
|
|
|
|
|
label={labelCstType(CstType.THEOREM)}
|
|
|
|
|
value={params.allowTheorem}
|
|
|
|
|
setValue={value => updateParams({ allowTheorem: value })}
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
</Modal>
|
|
|
|
|
);
|
2023-11-27 18:27:23 +03:00
|
|
|
|
}
|
|
|
|
|
|
2023-12-28 14:04:44 +03:00
|
|
|
|
export default DlgGraphParams;
|