mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 21:10:38 +03:00
M: Update manuals
This commit is contained in:
parent
a6ad59b907
commit
9e8db4bfe6
|
@ -62,7 +62,7 @@ export { VscLibrary as IconLibrary } from 'react-icons/vsc';
|
||||||
export { IoLibrary as IconLibrary2 } from 'react-icons/io5';
|
export { IoLibrary as IconLibrary2 } from 'react-icons/io5';
|
||||||
export { BiDiamond as IconTemplates } from 'react-icons/bi';
|
export { BiDiamond as IconTemplates } from 'react-icons/bi';
|
||||||
export { GiHoneycomb as IconOSS } from 'react-icons/gi';
|
export { GiHoneycomb as IconOSS } from 'react-icons/gi';
|
||||||
export { LuBaby as IconChild } from 'react-icons/lu';
|
export { GrInherit as IconChild } from 'react-icons/gr';
|
||||||
export { RiParentLine as IconParent } from 'react-icons/ri';
|
export { RiParentLine as IconParent } from 'react-icons/ri';
|
||||||
export { BiSpa as IconPredecessor } from 'react-icons/bi';
|
export { BiSpa as IconPredecessor } from 'react-icons/bi';
|
||||||
export { RiHexagonLine as IconRSForm } from 'react-icons/ri';
|
export { RiHexagonLine as IconRSForm } from 'react-icons/ri';
|
||||||
|
|
|
@ -14,7 +14,7 @@ function InfoConstituenta({ data, className, ...restProps }: InfoConstituentaPro
|
||||||
return (
|
return (
|
||||||
<div className={clsx('dense min-w-[15rem]', className)} {...restProps}>
|
<div className={clsx('dense min-w-[15rem]', className)} {...restProps}>
|
||||||
<h2>
|
<h2>
|
||||||
Конституента {data.alias}
|
{data.alias}
|
||||||
{data.is_inherited ? ' (наследуется)' : ''}
|
{data.is_inherited ? ' (наследуется)' : ''}
|
||||||
</h2>
|
</h2>
|
||||||
{data.term_resolved ? (
|
{data.term_resolved ? (
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
import {
|
import {
|
||||||
|
IconChild,
|
||||||
IconClone,
|
IconClone,
|
||||||
IconControls,
|
IconControls,
|
||||||
IconDestroy,
|
IconDestroy,
|
||||||
IconEdit,
|
IconEdit,
|
||||||
|
IconFilter,
|
||||||
IconList,
|
IconList,
|
||||||
IconMoveDown,
|
IconMoveDown,
|
||||||
IconMoveUp,
|
IconMoveUp,
|
||||||
IconNewItem,
|
IconNewItem,
|
||||||
IconOSS,
|
IconOSS,
|
||||||
|
IconPredecessor,
|
||||||
IconReset,
|
IconReset,
|
||||||
IconSave,
|
IconSave,
|
||||||
|
IconSettings,
|
||||||
IconStatusOK,
|
IconStatusOK,
|
||||||
IconText,
|
IconText,
|
||||||
IconTree
|
IconTree
|
||||||
|
@ -23,37 +27,64 @@ function HelpCstEditor() {
|
||||||
return (
|
return (
|
||||||
<div className='dense'>
|
<div className='dense'>
|
||||||
<h1>Редактор конституенты</h1>
|
<h1>Редактор конституенты</h1>
|
||||||
|
<div className='flex flex-col sm:flex-row sm:gap-3'>
|
||||||
|
<div className='flex flex-col'>
|
||||||
<li>
|
<li>
|
||||||
<IconOSS className='inline-icon' /> переход к связанной <LinkTopic text='ОСС' topic={HelpTopic.CC_OSS} />
|
<IconOSS className='inline-icon' /> переход к <LinkTopic text='ОСС' topic={HelpTopic.CC_OSS} />
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<IconSave className='inline-icon' /> сохранить изменения: Ctrl + S
|
<IconPredecessor className='inline-icon' /> переход к исходной
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<IconReset className='inline-icon' /> сбросить несохраненные изменения
|
<IconList className='inline-icon' /> список конституент
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<IconClone className='inline-icon icon-green' /> клонировать текущую: Alt + V
|
<IconSave className='inline-icon' /> сохранить: Ctrl + S
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<IconReset className='inline-icon' /> сбросить изменения
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<IconClone className='inline-icon icon-green' /> клонировать: Alt + V
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<IconNewItem className='inline-icon icon-green' /> новая конституента
|
<IconNewItem className='inline-icon icon-green' /> новая конституента
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<IconDestroy className='inline-icon icon-red' /> удаление текущей
|
<IconDestroy className='inline-icon icon-red' /> удалить
|
||||||
</li>
|
</li>
|
||||||
|
</div>
|
||||||
|
|
||||||
<h2>Термин и Текстовое определение</h2>
|
<div className='flex flex-col'>
|
||||||
|
<h2>Список конституент</h2>
|
||||||
<li>
|
<li>
|
||||||
<IconEdit className='inline-icon' /> кнопка переименования справа от{' '}
|
<IconMoveDown className='inline-icon' />
|
||||||
<LinkTopic text='Имени' topic={HelpTopic.CC_CONSTITUENTA} />
|
<IconMoveUp className='inline-icon' /> Alt + вверх/вниз
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<IconEdit className='inline-icon' /> кнопка редактирования словоформ справа от{' '}
|
<IconFilter className='inline-icon' />
|
||||||
<LinkTopic text='Термина' topic={HelpTopic.CC_CONSTITUENTA} />
|
<IconSettings className='inline-icon' /> фильтрация по графу термов
|
||||||
</li>
|
</li>
|
||||||
<li>Ctrl + Пробел открывает редактирование отсылок</li>
|
<li>
|
||||||
|
<IconChild className='inline-icon' /> отображение наследованных
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span style={{ backgroundColor: colors.bgSelected }}>текущая конституента</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span style={{ backgroundColor: colors.bgGreen50 }}>
|
||||||
|
<LinkTopic text='основа' topic={HelpTopic.CC_RELATIONS} /> текущей
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span style={{ backgroundColor: colors.bgOrange50 }}>
|
||||||
|
<LinkTopic text='порожденные' topic={HelpTopic.CC_RELATIONS} /> текущей
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<h2>Определение понятия</h2>
|
<h2>Формальное определение</h2>
|
||||||
<li>
|
<li>
|
||||||
<IconStatusOK className='inline-icon' /> индикатор статуса определения сверху
|
<IconStatusOK className='inline-icon' /> индикатор статуса определения сверху
|
||||||
</li>
|
</li>
|
||||||
|
@ -69,26 +100,12 @@ function HelpCstEditor() {
|
||||||
</li>
|
</li>
|
||||||
<li>Ctrl + Пробел дополняет до незанятого имени</li>
|
<li>Ctrl + Пробел дополняет до незанятого имени</li>
|
||||||
|
|
||||||
<h2>Список конституент</h2>
|
<h2>Термин и Текстовое определение</h2>
|
||||||
<li>
|
<li>
|
||||||
<IconList className='inline-icon' /> отображение списка конституент
|
<IconEdit className='inline-icon' /> редактирование <LinkTopic text='Имени' topic={HelpTopic.CC_CONSTITUENTA} />{' '}
|
||||||
</li>
|
/ <LinkTopic text='Термина' topic={HelpTopic.CC_CONSTITUENTA} />
|
||||||
<li>
|
|
||||||
<IconMoveDown className='inline-icon' />
|
|
||||||
<IconMoveUp className='inline-icon' /> Alt + вверх/вниз – перемещение
|
|
||||||
</li>
|
|
||||||
<li>фильтрация в верхней части</li>
|
|
||||||
<li>
|
|
||||||
<span style={{ backgroundColor: colors.bgSelected }}>цветом фона</span> выделена текущая конституента
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span style={{ backgroundColor: colors.bgGreen50 }}>цветом фона</span> выделена{' '}
|
|
||||||
<LinkTopic text='основа' topic={HelpTopic.CC_RELATIONS} /> текущей
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span style={{ backgroundColor: colors.bgOrange50 }}>цветом фона</span> выделены{' '}
|
|
||||||
<LinkTopic text='порожденные' topic={HelpTopic.CC_RELATIONS} /> текущей
|
|
||||||
</li>
|
</li>
|
||||||
|
<li>Ctrl + Пробел открывает редактирование отсылок</li>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,100 @@
|
||||||
|
import {
|
||||||
|
IconAnimation,
|
||||||
|
IconAnimationOff,
|
||||||
|
IconConnect,
|
||||||
|
IconDestroy,
|
||||||
|
IconEdit2,
|
||||||
|
IconExecute,
|
||||||
|
IconFitImage,
|
||||||
|
IconGrid,
|
||||||
|
IconImage,
|
||||||
|
IconLineStraight,
|
||||||
|
IconLineWave,
|
||||||
|
IconNewItem,
|
||||||
|
IconReset,
|
||||||
|
IconRSForm,
|
||||||
|
IconSave
|
||||||
|
} from '@/components/Icons';
|
||||||
|
import Divider from '@/components/ui/Divider';
|
||||||
|
import LinkTopic from '@/components/ui/LinkTopic';
|
||||||
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
|
|
||||||
function HelpOssGraph() {
|
function HelpOssGraph() {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div className='flex flex-col'>
|
||||||
<h1>Граф синтеза</h1>
|
<h1>Граф синтеза</h1>
|
||||||
<p>TBD.</p>
|
<div className='flex flex-col sm:flex-row'>
|
||||||
|
<div className='w-full sm:w-[14rem]'>
|
||||||
|
<h1>Настройка графа</h1>
|
||||||
|
<li>
|
||||||
|
<IconFitImage className='inline-icon' /> Вписать в экран
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<IconGrid className='inline-icon' /> Отображение сетки
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<IconLineWave className='inline-icon' />
|
||||||
|
<IconLineStraight className='inline-icon' /> Тип линии
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<IconAnimation className='inline-icon' />
|
||||||
|
<IconAnimationOff className='inline-icon' /> Анимация
|
||||||
|
</li>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Divider vertical margins='mx-3 mt-3' className='hidden sm:block' />
|
||||||
|
|
||||||
|
<div className='w-full sm:w-[21rem]'>
|
||||||
|
<h1>Изменение узлов</h1>
|
||||||
|
<li>Клик на операцию – выделение</li>
|
||||||
|
<li>Esc – сбросить выделение</li>
|
||||||
|
<li>
|
||||||
|
<IconEdit2 className='inline-icon' /> Двойной клик – редактирование
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<IconNewItem className='inline-icon icon-green' /> Новая операция
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<IconDestroy className='inline-icon icon-red' /> Delete – удалить выбранные
|
||||||
|
</li>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Divider margins='my-3' className='hidden sm:block' />
|
||||||
|
|
||||||
|
<div className='flex flex-col-reverse mb-3 sm:flex-row'>
|
||||||
|
<div className='w-full sm:w-[14rem]'>
|
||||||
|
<h1>Общие</h1>
|
||||||
|
<li>
|
||||||
|
<IconReset className='inline-icon' /> Сбросить изменения
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<IconSave className='inline-icon' /> Сохранить положения
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<IconImage className='inline-icon' /> Сохранить в формат SVG
|
||||||
|
</li>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Divider vertical margins='mx-3' className='hidden sm:block' />
|
||||||
|
|
||||||
|
<div className='dense w-[21rem]'>
|
||||||
|
<h1>Контекстное меню</h1>
|
||||||
|
<li>
|
||||||
|
<IconRSForm className='inline-icon icon-green' /> Переход к связанной{' '}
|
||||||
|
<LinkTopic text='КС' topic={HelpTopic.CC_SYSTEM} />
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<IconNewItem className='inline-icon icon-green' /> Создать пустую КС для загрузки
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<IconConnect className='inline-icon' /> Выбрать КС для загрузки
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<IconExecute className='inline-icon icon-green' /> Выполнить (активировать) операцию
|
||||||
|
</li>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@ function HelpTermGraph() {
|
||||||
const { colors } = useConceptOptions();
|
const { colors } = useConceptOptions();
|
||||||
return (
|
return (
|
||||||
<div className='flex flex-col'>
|
<div className='flex flex-col'>
|
||||||
|
<h1>Граф термов</h1>
|
||||||
<div className='flex flex-col sm:flex-row'>
|
<div className='flex flex-col sm:flex-row'>
|
||||||
<div className='w-full sm:w-[14rem]'>
|
<div className='w-full sm:w-[14rem]'>
|
||||||
<h1>Настройка графа</h1>
|
<h1>Настройка графа</h1>
|
||||||
|
@ -78,7 +79,7 @@ function HelpTermGraph() {
|
||||||
<IconFilter className='inline-icon' /> Открыть настройки
|
<IconFilter className='inline-icon' /> Открыть настройки
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<IconFitImage className='inline-icon' /> Вписать граф в экран
|
<IconFitImage className='inline-icon' /> Вписать в экран
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<IconImage className='inline-icon' /> Сохранить в формат PNG
|
<IconImage className='inline-icon' /> Сохранить в формат PNG
|
||||||
|
|
|
@ -135,7 +135,7 @@ function OssTabs() {
|
||||||
<TabList className={clsx('mx-auto w-fit', 'flex items-stretch', 'border-b-2 border-x-2 divide-x-2')}>
|
<TabList className={clsx('mx-auto w-fit', 'flex items-stretch', 'border-b-2 border-x-2 divide-x-2')}>
|
||||||
<MenuOssTabs onDestroy={onDestroySchema} />
|
<MenuOssTabs onDestroy={onDestroySchema} />
|
||||||
|
|
||||||
<TabLabel label='Карточка' titleHtml={`Название: <b>${schema.title ?? ''}</b>`} />
|
<TabLabel label='Карточка' title={schema.title ?? ''} />
|
||||||
<TabLabel label='Граф' />
|
<TabLabel label='Граф' />
|
||||||
</TabList>
|
</TabList>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
|
import clsx from 'clsx';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
IconClone,
|
IconClone,
|
||||||
IconDestroy,
|
IconDestroy,
|
||||||
|
@ -118,7 +120,11 @@ function ToolbarConstituenta({
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
) : null}
|
) : null}
|
||||||
<BadgeHelp topic={HelpTopic.UI_RS_EDITOR} offset={4} className={PARAMETER.TOOLTIP_WIDTH} />
|
<BadgeHelp
|
||||||
|
topic={HelpTopic.UI_RS_EDITOR}
|
||||||
|
offset={4}
|
||||||
|
className={clsx(PARAMETER.TOOLTIP_WIDTH, 'sm:max-w-[40rem]')}
|
||||||
|
/>
|
||||||
</Overlay>
|
</Overlay>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -257,10 +257,7 @@ function RSTabs() {
|
||||||
<TabList className={clsx('mx-auto w-fit', 'flex items-stretch', 'border-b-2 border-x-2 divide-x-2')}>
|
<TabList className={clsx('mx-auto w-fit', 'flex items-stretch', 'border-b-2 border-x-2 divide-x-2')}>
|
||||||
<MenuRSTabs onDestroy={onDestroySchema} />
|
<MenuRSTabs onDestroy={onDestroySchema} />
|
||||||
|
|
||||||
<TabLabel
|
<TabLabel label='Карточка' titleHtml={`${schema.title ?? ''}<br />Версия: ${labelVersion(schema)}`} />
|
||||||
label='Карточка'
|
|
||||||
titleHtml={`Название: <b>${schema.title ?? ''}</b><br />Версия: ${labelVersion(schema)}`}
|
|
||||||
/>
|
|
||||||
<TabLabel
|
<TabLabel
|
||||||
label='Содержание'
|
label='Содержание'
|
||||||
titleHtml={`Конституент: ${schema.stats?.count_all ?? 0}<br />Ошибок: ${schema.stats?.count_errors ?? 0}`}
|
titleHtml={`Конституент: ${schema.stats?.count_all ?? 0}<br />Ошибок: ${schema.stats?.count_errors ?? 0}`}
|
||||||
|
|
|
@ -2,8 +2,10 @@
|
||||||
|
|
||||||
import { useLayoutEffect, useMemo, useState } from 'react';
|
import { useLayoutEffect, useMemo, useState } from 'react';
|
||||||
|
|
||||||
|
import { IconChild } from '@/components/Icons';
|
||||||
import SelectGraphFilter from '@/components/select/SelectGraphFilter';
|
import SelectGraphFilter from '@/components/select/SelectGraphFilter';
|
||||||
import SelectMatchMode from '@/components/select/SelectMatchMode';
|
import SelectMatchMode from '@/components/select/SelectMatchMode';
|
||||||
|
import MiniButton from '@/components/ui/MiniButton';
|
||||||
import SearchBar from '@/components/ui/SearchBar';
|
import SearchBar from '@/components/ui/SearchBar';
|
||||||
import useLocalStorage from '@/hooks/useLocalStorage';
|
import useLocalStorage from '@/hooks/useLocalStorage';
|
||||||
import { CstMatchMode, DependencyMode } from '@/models/miscellaneous';
|
import { CstMatchMode, DependencyMode } from '@/models/miscellaneous';
|
||||||
|
@ -25,6 +27,7 @@ function ConstituentsSearch({ schema, activeID, activeExpression, dense, setFilt
|
||||||
const [filterMatch, setFilterMatch] = useLocalStorage(storage.cstFilterMatch, CstMatchMode.ALL);
|
const [filterMatch, setFilterMatch] = useLocalStorage(storage.cstFilterMatch, CstMatchMode.ALL);
|
||||||
const [filterSource, setFilterSource] = useLocalStorage(storage.cstFilterGraph, DependencyMode.ALL);
|
const [filterSource, setFilterSource] = useLocalStorage(storage.cstFilterGraph, DependencyMode.ALL);
|
||||||
const [filterText, setFilterText] = useState('');
|
const [filterText, setFilterText] = useState('');
|
||||||
|
const [showInherited, setShowInherited] = useLocalStorage(storage.cstFilterShowInherited, true);
|
||||||
|
|
||||||
useLayoutEffect(() => {
|
useLayoutEffect(() => {
|
||||||
if (!schema || schema.items.length === 0) {
|
if (!schema || schema.items.length === 0) {
|
||||||
|
@ -48,8 +51,21 @@ function ConstituentsSearch({ schema, activeID, activeExpression, dense, setFilt
|
||||||
if (filterText) {
|
if (filterText) {
|
||||||
result = result.filter(cst => matchConstituenta(cst, filterText, filterMatch));
|
result = result.filter(cst => matchConstituenta(cst, filterText, filterMatch));
|
||||||
}
|
}
|
||||||
|
if (!showInherited) {
|
||||||
|
result = result.filter(cst => !cst.is_inherited);
|
||||||
|
}
|
||||||
setFiltered(result);
|
setFiltered(result);
|
||||||
}, [filterText, setFiltered, filterSource, activeExpression, schema?.items, schema, filterMatch, activeID]);
|
}, [
|
||||||
|
filterText,
|
||||||
|
setFiltered,
|
||||||
|
filterSource,
|
||||||
|
activeExpression,
|
||||||
|
schema?.items,
|
||||||
|
schema,
|
||||||
|
filterMatch,
|
||||||
|
activeID,
|
||||||
|
showInherited
|
||||||
|
]);
|
||||||
|
|
||||||
const selectGraph = useMemo(
|
const selectGraph = useMemo(
|
||||||
() => <SelectGraphFilter value={filterSource} onChange={newValue => setFilterSource(newValue)} dense={dense} />,
|
() => <SelectGraphFilter value={filterSource} onChange={newValue => setFilterSource(newValue)} dense={dense} />,
|
||||||
|
@ -72,6 +88,15 @@ function ConstituentsSearch({ schema, activeID, activeExpression, dense, setFilt
|
||||||
/>
|
/>
|
||||||
{selectMatchMode}
|
{selectMatchMode}
|
||||||
{selectGraph}
|
{selectGraph}
|
||||||
|
{schema && schema?.stats.count_inherited > 0 ? (
|
||||||
|
<MiniButton
|
||||||
|
noHover
|
||||||
|
titleHtml={`Наследованные: <b>${showInherited ? 'отображать' : 'скрывать'}</b>`}
|
||||||
|
icon={<IconChild size='1rem' className={showInherited ? 'icon-primary' : 'clr-text-controls'} />}
|
||||||
|
className='h-fit self-center'
|
||||||
|
onClick={() => setShowInherited(prev => !prev)}
|
||||||
|
/>
|
||||||
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,7 +123,8 @@ export const storage = {
|
||||||
ossEdgeAnimate: 'oss.edge_animate',
|
ossEdgeAnimate: 'oss.edge_animate',
|
||||||
|
|
||||||
cstFilterMatch: 'cst.filter.match',
|
cstFilterMatch: 'cst.filter.match',
|
||||||
cstFilterGraph: 'cst.filter.graph'
|
cstFilterGraph: 'cst.filter.graph',
|
||||||
|
cstFilterShowInherited: 'cst.filter.show_inherited'
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue
Block a user