ConceptPortal-public/rsconcept/frontend/src/utils/selectors.ts

82 lines
2.6 KiB
TypeScript
Raw Normal View History

2023-09-14 16:53:38 +03:00
// Module: Selector maps
import { LayoutTypes } from 'reagraph';
2023-09-27 23:36:51 +03:00
import { compareGrammemes,type GramData, Grammeme } from '../models/language';
2023-09-14 16:53:38 +03:00
import { CstType } from '../models/rsform';
import { ColoringScheme } from '../pages/RSFormPage/EditorTermGraph';
2023-09-21 14:58:01 +03:00
import { labelGrammeme } from './labels';
import { labelCstType } from './labels';
2023-09-14 16:53:38 +03:00
2023-09-27 23:36:51 +03:00
/**
* Represents options for GraphLayout selector.
*/
2023-09-19 17:55:17 +03:00
export const SelectorGraphLayout: { value: LayoutTypes, label: string }[] = [
2023-09-14 16:53:38 +03:00
{ value: 'treeTd2d', label: 'Граф: ДеревоВ 2D' },
{ value: 'treeTd3d', label: 'Граф: ДеревоВ 3D' },
{ value: 'forceatlas2', label: 'Граф: Атлас 2D' },
{ value: 'forceDirected2d', label: 'Граф: Силы 2D' },
{ value: 'forceDirected3d', label: 'Граф: Силы 3D' },
{ value: 'treeLr2d', label: 'Граф: ДеревоГ 2D' },
{ value: 'treeLr3d', label: 'Граф: ДеревоГ 3D' },
{ value: 'radialOut2d', label: 'Граф: Радиальная 2D' },
{ value: 'radialOut3d', label: 'Граф: Радиальная 3D' },
// { value: 'circular2d', label: 'circular2d'},
// { value: 'nooverlap', label: 'nooverlap'},
// { value: 'hierarchicalTd', label: 'hierarchicalTd'},
// { value: 'hierarchicalLr', label: 'hierarchicalLr'}
];
2023-09-27 23:36:51 +03:00
/**
* Represents options for {@link ColoringScheme} selector.
*/
2023-09-19 17:55:17 +03:00
export const SelectorGraphColoring: { value: ColoringScheme, label: string }[] = [
2023-09-14 16:53:38 +03:00
{ value: 'none', label: 'Цвет: моно' },
{ value: 'status', label: 'Цвет: статус' },
{ value: 'type', label: 'Цвет: класс' },
];
2023-09-27 23:36:51 +03:00
/**
* Represents options for {@link CstType} selector.
*/
2023-09-14 16:53:38 +03:00
export const SelectorCstType = (
Object.values(CstType)).map(
2023-09-21 14:58:01 +03:00
typeStr => ({
value: typeStr as CstType,
label: labelCstType(typeStr as CstType)
})
);
2023-09-27 23:36:51 +03:00
/**
* Represents single option for {@link Grammeme} selector.
*/
export interface IGrammemeOption {
value: GramData
2023-09-21 14:58:01 +03:00
label: string
}
2023-09-27 23:36:51 +03:00
/**
* Compares {@link IGrammemeOption} based on Grammeme comparison.
*/
export function compareGrammemeOptions(left: IGrammemeOption, right: IGrammemeOption): number {
return compareGrammemes(left.value, right.value);
}
/**
* Represents list of {@link Grammeme}s available in reference construction.
*/
2023-09-25 14:17:52 +03:00
export const SelectorGrammemesList = [
2023-09-21 14:58:01 +03:00
Grammeme.sing, Grammeme.plur,
Grammeme.nomn, Grammeme.gent, Grammeme.datv,
Grammeme.accs, Grammeme.ablt, Grammeme.loct,
2023-09-25 14:17:52 +03:00
];
2023-09-27 23:36:51 +03:00
/**
* Represents options for {@link Grammeme} selector.
*/
2023-09-25 14:17:52 +03:00
export const SelectorGrammems: IGrammemeOption[] =
SelectorGrammemesList.map(
2023-09-21 14:58:01 +03:00
gram => ({
2023-09-27 23:36:51 +03:00
value: gram,
label: labelGrammeme(gram)
2023-09-21 14:58:01 +03:00
}));