Fix graph UI

This commit is contained in:
IRBorisov 2023-08-16 00:50:27 +03:00
parent ecea364d69
commit b55ad31147
2 changed files with 28 additions and 9 deletions

View File

@ -16,6 +16,7 @@ function DlgGraphOptions({ hideWindow, initial, onConfirm }:DlgGraphOptionsProps
const [ noHermits, setNoHermits ] = useState(true); const [ noHermits, setNoHermits ] = useState(true);
const [ noTransitive, setNoTransitive ] = useState(false); const [ noTransitive, setNoTransitive ] = useState(false);
const [ noTemplates, setNoTemplates ] = useState(true); const [ noTemplates, setNoTemplates ] = useState(true);
const [ noTerms, setNoTerms ] = useState(true);
const [ allowBase, setAllowBase ] = useState(true); const [ allowBase, setAllowBase ] = useState(true);
const [ allowStruct, setAllowStruct ] = useState(true); const [ allowStruct, setAllowStruct ] = useState(true);
@ -31,6 +32,7 @@ function DlgGraphOptions({ hideWindow, initial, onConfirm }:DlgGraphOptionsProps
noHermits: noHermits, noHermits: noHermits,
noTransitive: noTransitive, noTransitive: noTransitive,
noTemplates: noTemplates, noTemplates: noTemplates,
noTerms: noTerms,
allowBase: allowBase, allowBase: allowBase,
allowStruct: allowStruct, allowStruct: allowStruct,
@ -52,6 +54,7 @@ function DlgGraphOptions({ hideWindow, initial, onConfirm }:DlgGraphOptionsProps
setNoHermits(initial.noHermits); setNoHermits(initial.noHermits);
setNoTransitive(initial.noTransitive); setNoTransitive(initial.noTransitive);
setNoTemplates(initial.noTemplates); setNoTemplates(initial.noTemplates);
setNoTerms(initial.noTerms);
setAllowBase(initial.allowBase); setAllowBase(initial.allowBase);
setAllowStruct(initial.allowStruct); setAllowStruct(initial.allowStruct);
@ -74,6 +77,12 @@ function DlgGraphOptions({ hideWindow, initial, onConfirm }:DlgGraphOptionsProps
<div className='flex gap-2'> <div className='flex gap-2'>
<div className='flex flex-col'> <div className='flex flex-col'>
<h1>Преобразования</h1> <h1>Преобразования</h1>
<Checkbox
label='Скрыть текст'
tooltip='Не отображать термины'
value={noTerms}
onChange={ event => setNoTerms(event.target.checked) }
/>
<Checkbox <Checkbox
label='Скрыть несвязанные' label='Скрыть несвязанные'
tooltip='Неиспользуемые конституенты' tooltip='Неиспользуемые конституенты'

View File

@ -43,6 +43,7 @@ export interface GraphEditorParams {
noHermits: boolean noHermits: boolean
noTransitive: boolean noTransitive: boolean
noTemplates: boolean noTemplates: boolean
noTerms: boolean
allowBase: boolean allowBase: boolean
allowStruct: boolean allowStruct: boolean
@ -71,6 +72,7 @@ function EditorTermGraph({ onOpenEdit }: EditorTermGraphProps) {
const [ noHermits, setNoHermits ] = useLocalStorage('graph_no_hermits', true); const [ noHermits, setNoHermits ] = useLocalStorage('graph_no_hermits', true);
const [ noTransitive, setNoTransitive ] = useLocalStorage('graph_no_transitive', false); const [ noTransitive, setNoTransitive ] = useLocalStorage('graph_no_transitive', false);
const [ noTemplates, setNoTemplates ] = useLocalStorage('graph_no_templates', false); const [ noTemplates, setNoTemplates ] = useLocalStorage('graph_no_templates', false);
const [ noTerms, setNoTerms ] = useLocalStorage('graph_no_terms', false);
const [ allowBase, setAllowBase ] = useLocalStorage('graph_allow_base', true); const [ allowBase, setAllowBase ] = useLocalStorage('graph_allow_base', true);
const [ allowStruct, setAllowStruct ] = useLocalStorage('graph_allow_struct', true); const [ allowStruct, setAllowStruct ] = useLocalStorage('graph_allow_struct', true);
const [ allowTerm, setAllowTerm ] = useLocalStorage('graph_allow_term', true); const [ allowTerm, setAllowTerm ] = useLocalStorage('graph_allow_term', true);
@ -170,12 +172,12 @@ function EditorTermGraph({ onOpenEdit }: EditorTermGraphProps) {
result.push({ result.push({
id: String(node.id), id: String(node.id),
fill: getCstNodeColor(cst, coloringScheme, darkMode), fill: getCstNodeColor(cst, coloringScheme, darkMode),
label: cst.term.resolved ? `${cst.alias}: ${cst.term.resolved}` : cst.alias label: cst.term.resolved && !noTerms ? `${cst.alias}: ${cst.term.resolved}` : cst.alias
}); });
} }
}); });
return result; return result;
}, [schema, coloringScheme, filtered.nodes, darkMode]); }, [schema, coloringScheme, filtered.nodes, darkMode, noTerms]);
const edges: GraphEdge[] = useMemo( const edges: GraphEdge[] = useMemo(
() => { () => {
@ -205,7 +207,8 @@ function EditorTermGraph({ onOpenEdit }: EditorTermGraphProps) {
nodes, nodes,
edges, edges,
type: 'multi', // 'single' | 'multi' | 'multiModifier' type: 'multi', // 'single' | 'multi' | 'multiModifier'
pathSelectionType: 'all', pathSelectionType: 'out',
pathHoverType: 'all',
focusOnSelect: false focusOnSelect: false
}); });
@ -241,6 +244,7 @@ function EditorTermGraph({ onOpenEdit }: EditorTermGraphProps) {
noHermits: noHermits, noHermits: noHermits,
noTemplates: noTemplates, noTemplates: noTemplates,
noTransitive: noTransitive, noTransitive: noTransitive,
noTerms: noTerms,
allowBase: allowBase, allowBase: allowBase,
allowStruct: allowStruct, allowStruct: allowStruct,
@ -258,6 +262,7 @@ function EditorTermGraph({ onOpenEdit }: EditorTermGraphProps) {
setNoHermits(params.noHermits); setNoHermits(params.noHermits);
setNoTransitive(params.noTransitive); setNoTransitive(params.noTransitive);
setNoTemplates(params.noTemplates); setNoTemplates(params.noTemplates);
setNoTerms(params.noTerms);
setAllowBase(params.allowBase); setAllowBase(params.allowBase);
setAllowStruct(params.allowStruct); setAllowStruct(params.allowStruct);
@ -269,7 +274,7 @@ function EditorTermGraph({ onOpenEdit }: EditorTermGraphProps) {
setAllowTheorem(params.allowTheorem); setAllowTheorem(params.allowTheorem);
}, [setNoHermits, setNoTransitive, setNoTemplates, }, [setNoHermits, setNoTransitive, setNoTemplates,
setAllowBase, setAllowStruct, setAllowTerm, setAllowAxiom, setAllowFunction, setAllowBase, setAllowStruct, setAllowTerm, setAllowAxiom, setAllowFunction,
setAllowPredicate, setAllowConstant, setAllowTheorem]); setAllowPredicate, setAllowConstant, setAllowTheorem, setNoTerms]);
const canvasWidth = useMemo( const canvasWidth = useMemo(
() => { () => {
@ -331,16 +336,21 @@ function EditorTermGraph({ onOpenEdit }: EditorTermGraphProps) {
onChange={data => { setLayout(data.length > 0 ? data[0].value : GraphLayoutSelector[0].value); }} onChange={data => { setLayout(data.length > 0 ? data[0].value : GraphLayoutSelector[0].value); }}
/> />
<Checkbox <Checkbox
disabled={!is3D} label='Скрыть текст'
label='Анимация вращения' value={noTerms}
value={orbit} onChange={ event => setNoTerms(event.target.checked) }
onChange={ event => setOrbit(event.target.checked) }
/> />
<Checkbox <Checkbox
label='Транзитивная редукция' label='Транзитивная редукция'
value={noTransitive} value={noTransitive}
onChange={ event => setNoTransitive(event.target.checked) } onChange={ event => setNoTransitive(event.target.checked) }
/> />
<Checkbox
disabled={!is3D}
label='Анимация вращения'
value={orbit}
onChange={ event => setOrbit(event.target.checked) }
/>
<Divider margins='mt-3 mb-2' /> <Divider margins='mt-3 mb-2' />
@ -354,7 +364,7 @@ function EditorTermGraph({ onOpenEdit }: EditorTermGraphProps) {
<div <div
key={`${cst.alias}`} key={`${cst.alias}`}
id={`${prefixes.cst_list}${cst.alias}`} id={`${prefixes.cst_list}${cst.alias}`}
className='w-fit min-w-[3rem] rounded-md text-center cursor-pointer]' className='w-fit min-w-[3rem] rounded-md text-center cursor-pointer'
style={ { backgroundColor: getCstNodeColor(cst, adjustedColoring, darkMode), ...dismissedStyle(cstID) }} style={ { backgroundColor: getCstNodeColor(cst, adjustedColoring, darkMode), ...dismissedStyle(cstID) }}
onClick={() => toggleDismissed(cstID)} onClick={() => toggleDismissed(cstID)}
onDoubleClick={() => onOpenEdit(cstID)} onDoubleClick={() => onOpenEdit(cstID)}