ConceptPortal-public/rsconcept/frontend/src/dialogs/DlgGraphOptions.tsx

107 lines
3.9 KiB
TypeScript
Raw Normal View History

2023-11-01 13:47:49 +03:00
import Checkbox from '../components/Common/Checkbox';
import Modal, { ModalProps } from '../components/Common/Modal';
import usePartialUpdate from '../hooks/usePartialUpdate';
2023-11-01 14:09:44 +03:00
import { GraphEditorParams } from '../models/miscelanious';
2023-11-01 13:47:49 +03:00
import { CstType } from '../models/rsform';
import { labelCstType } from '../utils/labels';
2023-08-16 00:39:16 +03:00
2023-09-11 17:56:32 +03:00
interface DlgGraphOptionsProps
extends Pick<ModalProps, 'hideWindow'> {
2023-08-16 00:39:16 +03:00
initial: GraphEditorParams
onConfirm: (params: GraphEditorParams) => void
}
function DlgGraphOptions({ hideWindow, initial, onConfirm } : DlgGraphOptionsProps) {
const [params, updateParams] = usePartialUpdate(initial);
2023-08-16 00:39:16 +03:00
const handleSubmit = () => {
hideWindow();
onConfirm(params);
2023-08-16 00:39:16 +03:00
};
return (
<Modal
hideWindow={hideWindow}
title='Настройки графа термов'
onSubmit={handleSubmit}
canSubmit
submitText='Применить'
>
<div className='flex gap-2'>
<div className='flex flex-col gap-1'>
2023-08-16 00:39:16 +03:00
<h1>Преобразования</h1>
2023-08-16 00:50:27 +03:00
<Checkbox
label='Скрыть текст'
tooltip='Не отображать термины'
value={params.noTerms}
setValue={ value => updateParams({noTerms: value}) }
2023-08-16 00:50:27 +03:00
/>
2023-08-16 00:39:16 +03:00
<Checkbox
label='Скрыть несвязанные'
tooltip='Неиспользуемые конституенты'
value={params.noHermits}
setValue={ value => updateParams({ noHermits: value}) }
2023-08-16 00:39:16 +03:00
/>
<Checkbox
label='Скрыть шаблоны'
tooltip='Терм-функции и предикат-функции с параметризованными аргументами'
value={params.noTemplates}
setValue={ value => updateParams({ noTemplates: value}) }
2023-08-16 00:39:16 +03:00
/>
<Checkbox
label='Транзитивная редукция'
tooltip='Удалить связи, образующие транзитивные пути в графе'
value={params.noTransitive}
setValue={ value => updateParams({ noTransitive: value}) }
2023-08-16 00:39:16 +03:00
/>
</div>
<div className='flex flex-col gap-1'>
2023-08-16 00:39:16 +03:00
<h1>Типы конституент</h1>
<Checkbox
2023-09-21 14:58:01 +03:00
label={labelCstType(CstType.BASE)}
value={params.allowBase}
setValue={ value => updateParams({ allowBase: value}) }
2023-08-16 00:39:16 +03:00
/>
<Checkbox
2023-09-21 14:58:01 +03:00
label={labelCstType(CstType.STRUCTURED)}
value={params.allowStruct}
setValue={ value => updateParams({ allowStruct: value}) }
2023-08-16 00:39:16 +03:00
/>
<Checkbox
2023-09-21 14:58:01 +03:00
label={labelCstType(CstType.TERM)}
value={params.allowTerm}
setValue={ value => updateParams({ allowTerm: value}) }
2023-08-16 00:39:16 +03:00
/>
<Checkbox
2023-09-21 14:58:01 +03:00
label={labelCstType(CstType.AXIOM)}
value={params.allowAxiom}
setValue={ value => updateParams({ allowAxiom: value}) }
2023-08-16 00:39:16 +03:00
/>
<Checkbox
2023-09-21 14:58:01 +03:00
label={labelCstType(CstType.FUNCTION)}
value={params.allowFunction}
setValue={ value => updateParams({ allowFunction: value}) }
2023-08-16 00:39:16 +03:00
/>
<Checkbox
2023-09-21 14:58:01 +03:00
label={labelCstType(CstType.PREDICATE)}
value={params.allowPredicate}
setValue={ value => updateParams({ allowPredicate: value}) }
2023-08-16 00:39:16 +03:00
/>
<Checkbox
2023-09-21 14:58:01 +03:00
label={labelCstType(CstType.CONSTANT)}
value={params.allowConstant}
setValue={ value => updateParams({ allowConstant: value}) }
2023-08-16 00:39:16 +03:00
/>
<Checkbox
2023-09-21 14:58:01 +03:00
label={labelCstType(CstType.THEOREM)}
value={params.allowTheorem}
setValue ={ value => updateParams({ allowTheorem: value}) }
2023-08-16 00:39:16 +03:00
/>
</div>
</div>
</Modal>
);
}
export default DlgGraphOptions;