Decouple dialogs and pages

This commit is contained in:
IRBorisov 2023-11-01 14:09:44 +03:00
parent ce1cd7f6ca
commit 97a2585185
8 changed files with 60 additions and 45 deletions

View File

@ -1,6 +1,6 @@
import ConceptTooltip from '../../../components/Common/ConceptTooltip';
import InfoConstituenta from '../../../components/Help/InfoConstituenta';
import { IConstituenta } from '../../../models/rsform';
import { IConstituenta } from '../../models/rsform';
import ConceptTooltip from '../Common/ConceptTooltip';
import InfoConstituenta from './InfoConstituenta';
interface ConstituentaTooltipProps {
data: IConstituenta

View File

@ -1,6 +1,6 @@
import SwitchButton from '../../components/Common/SwitchButton';
import { ReferenceType } from '../../models/language';
import { labelReferenceType } from '../../utils/labels';
import SwitchButton from '../Common/SwitchButton';
interface ReferenceTypeButtonProps {
type: ReferenceType

View File

@ -1,28 +1,28 @@
import { createColumnHelper } from '@tanstack/react-table';
import { useCallback, useEffect, useLayoutEffect, useMemo, useState } from 'react';
import ConceptTooltip from '../components/Common/ConceptTooltip';
import Label from '../components/Common/Label';
import Modal from '../components/Common/Modal';
import SelectMulti from '../components/Common/SelectMulti';
import TextInput from '../components/Common/TextInput';
import DataTable, { IConditionalStyle } from '../components/DataTable';
import HelpTerminologyControl from '../components/Help/HelpTerminologyControl';
import { HelpIcon, MagnifyingGlassIcon } from '../components/Icons';
import ReferenceTypeButton from '../components/RefsInput/ReferenceTypeButton';
import WordformButton from '../components/RefsInput/WordformButton';
import { useConceptTheme } from '../context/ThemeContext';
import ConceptTooltip from '../../components/Common/ConceptTooltip';
import Label from '../../components/Common/Label';
import Modal from '../../components/Common/Modal';
import SelectMulti from '../../components/Common/SelectMulti';
import TextInput from '../../components/Common/TextInput';
import DataTable, { IConditionalStyle } from '../../components/DataTable';
import ConstituentaTooltip from '../../components/Help/ConstituentaTooltip';
import HelpTerminologyControl from '../../components/Help/HelpTerminologyControl';
import { HelpIcon, MagnifyingGlassIcon } from '../../components/Icons';
import { useConceptTheme } from '../../context/ThemeContext';
import {
getCompatibleGrams, Grammeme,
parseEntityReference, parseGrammemes,
parseSyntacticReference, ReferenceType
} from '../models/language';
import { CstMatchMode } from '../models/miscelanious';
import { IConstituenta, matchConstituenta } from '../models/rsform';
import ConstituentaTooltip from '../pages/RSFormPage/elements/ConstituentaTooltip';
import { colorfgCstStatus } from '../utils/color';
import { prefixes } from '../utils/constants';
import { compareGrammemeOptions, IGrammemeOption, PremadeWordForms, SelectorGrammems } from '../utils/selectors';
} from '../../models/language';
import { CstMatchMode } from '../../models/miscelanious';
import { IConstituenta, matchConstituenta } from '../../models/rsform';
import { colorfgCstStatus } from '../../utils/color';
import { prefixes } from '../../utils/constants';
import { compareGrammemeOptions, IGrammemeOption, PremadeWordForms, SelectorGrammems } from '../../utils/selectors';
import ReferenceTypeButton from './ReferenceTypeButton';
import WordformButton from './WordformButton';
export interface IReferenceInputState {
type: ReferenceType

View File

@ -2,8 +2,8 @@ import { useLayoutEffect, useState } from 'react';
import Checkbox from '../components/Common/Checkbox';
import Modal, { ModalProps } from '../components/Common/Modal';
import { GraphEditorParams } from '../models/miscelanious';
import { CstType } from '../models/rsform';
import { GraphEditorParams } from '../pages/RSFormPage/EditorTermGraph';
import { labelCstType } from '../utils/labels';
interface DlgGraphOptionsProps

View File

@ -2,7 +2,9 @@
import { IConstituenta, IRSForm } from './rsform'
// Dependency mode for schema analysis
/**
* Represents graph dependency mode.
*/
export enum DependencyMode {
ALL = 0,
EXPRESSION,
@ -12,7 +14,9 @@ export enum DependencyMode {
EXPAND_INPUTS
}
// Help manual topic compare mode
/**
* Represents manuals topic.
*/
export enum HelpTopic {
MAIN = 'main',
LIBRARY = 'library',
@ -27,7 +31,9 @@ export enum HelpTopic {
API = 'api'
}
// Constituent compare mode
/**
* Represents {@link IConstituenta} matching mode.
*/
export enum CstMatchMode {
ALL = 1,
EXPR,
@ -36,6 +42,9 @@ export enum CstMatchMode {
NAME
}
/**
* Represents Library filter parameters.
*/
export interface ILibraryFilter {
query?: string
is_personal?: boolean
@ -45,7 +54,9 @@ export interface ILibraryFilter {
is_subscribed?: boolean
}
// Library premade filters
/**
* Represents filtering strategy for Library.
*/
export enum LibraryFilterStrategy {
MANUAL = 'manual',
PERSONAL = 'personal',
@ -55,6 +66,25 @@ export enum LibraryFilterStrategy {
OWNED = 'owned'
}
/**
* Represents parameters for GraphEditor.
*/
export interface GraphEditorParams {
noHermits: boolean
noTransitive: boolean
noTemplates: boolean
noTerms: boolean
allowBase: boolean
allowStruct: boolean
allowTerm: boolean
allowAxiom: boolean
allowFunction: boolean
allowPredicate: boolean
allowConstant: boolean
allowTheorem: boolean
}
// ================== API ====================
export function applyGraphFilter(schema: IRSForm, start: number, mode: DependencyMode): IConstituenta[] {
if (mode === DependencyMode.ALL) {

View File

@ -6,6 +6,7 @@ import { GraphCanvas, GraphCanvasRef, GraphEdge,
import ConceptTooltip from '../../components/Common/ConceptTooltip';
import MiniButton from '../../components/Common/MiniButton';
import SelectSingle from '../../components/Common/SelectSingle';
import ConstituentaTooltip from '../../components/Help/ConstituentaTooltip';
import HelpTermGraph from '../../components/Help/HelpTermGraph';
import InfoConstituenta from '../../components/Help/InfoConstituenta';
import { ArrowsFocusIcon, DumpBinIcon, FilterIcon, HelpIcon, LetterAIcon, LetterALinesIcon, PlanetIcon, SmallPlusIcon } from '../../components/Icons';
@ -13,6 +14,7 @@ import { useRSForm } from '../../context/RSFormContext';
import { useConceptTheme } from '../../context/ThemeContext';
import DlgGraphOptions from '../../dialogs/DlgGraphOptions';
import useLocalStorage from '../../hooks/useLocalStorage';
import { GraphEditorParams } from '../../models/miscelanious';
import { CstType, IConstituenta, ICstCreateData } from '../../models/rsform';
import { graphDarkT, graphLightT, IColorTheme } from '../../utils/color';
import { colorbgCstClass } from '../../utils/color';
@ -23,7 +25,6 @@ import { mapLabelColoring } from '../../utils/labels';
import { mapLableLayout } from '../../utils/labels';
import { SelectorGraphLayout } from '../../utils/selectors';
import { SelectorGraphColoring } from '../../utils/selectors';
import ConstituentaTooltip from './elements/ConstituentaTooltip';
export type ColoringScheme = 'none' | 'status' | 'type';
const TREE_SIZE_MILESTONE = 50;
@ -38,22 +39,6 @@ function getCstNodeColor(cst: IConstituenta, coloringScheme: ColoringScheme, col
return '';
}
export interface GraphEditorParams {
noHermits: boolean
noTransitive: boolean
noTemplates: boolean
noTerms: boolean
allowBase: boolean
allowStruct: boolean
allowTerm: boolean
allowAxiom: boolean
allowFunction: boolean
allowPredicate: boolean
allowConstant: boolean
allowTheorem: boolean
}
interface EditorTermGraphProps {
onOpenEdit: (cstID: number) => void
onCreateCst: (initial: ICstCreateData, skipDialog?: boolean) => void

View File

@ -22,7 +22,7 @@ import {
describeCstSource, labelCstMathchMode,
labelCstSource
} from '../../../utils/labels';
import ConstituentaTooltip from './ConstituentaTooltip';
import ConstituentaTooltip from '../../../components/Help/ConstituentaTooltip';
// Height that should be left to accomodate navigation panel + bottom margin
const LOCAL_NAVIGATION_H = '2.1rem';