Update Help topics

This commit is contained in:
IRBorisov 2024-05-17 15:48:54 +03:00
parent aecb0f70ed
commit b8dd8376ea
18 changed files with 440 additions and 155 deletions

View File

@ -2,9 +2,12 @@
import { useCallback, useMemo, useState } from 'react'; import { useCallback, useMemo, useState } from 'react';
import BadgeHelp from '@/components/info/BadgeHelp';
import GraphUI, { GraphEdge, GraphNode } from '@/components/ui/GraphUI'; import GraphUI, { GraphEdge, GraphNode } from '@/components/ui/GraphUI';
import Modal, { ModalProps } from '@/components/ui/Modal'; import Modal, { ModalProps } from '@/components/ui/Modal';
import Overlay from '@/components/ui/Overlay';
import { useConceptOptions } from '@/context/OptionsContext'; import { useConceptOptions } from '@/context/OptionsContext';
import { HelpTopic } from '@/models/miscellaneous';
import { SyntaxTree } from '@/models/rslang'; import { SyntaxTree } from '@/models/rslang';
import { graphDarkT, graphLightT } from '@/styling/color'; import { graphDarkT, graphLightT } from '@/styling/color';
import { colorBgSyntaxTree } from '@/styling/color'; import { colorBgSyntaxTree } from '@/styling/color';
@ -51,6 +54,9 @@ function DlgShowAST({ hideWindow, syntaxTree, expression }: DlgShowASTProps) {
return ( return (
<Modal readonly hideWindow={hideWindow} className='px-6'> <Modal readonly hideWindow={hideWindow} className='px-6'>
<Overlay position='left-[-1rem] top-[0.25rem]'>
<BadgeHelp topic={HelpTopic.UI_FORMULA_TREE} className='max-w-[32rem]' />
</Overlay>
<div className='my-2 text-lg text-center'> <div className='my-2 text-lg text-center'>
{!hoverNode ? expression : null} {!hoverNode ? expression : null}
{hoverNode ? ( {hoverNode ? (

View File

@ -13,17 +13,17 @@ import HelpExteor from './items/HelpExteor';
import HelpFormulaTree from './items/HelpFormulaTree'; import HelpFormulaTree from './items/HelpFormulaTree';
import HelpInterface from './items/HelpInterface'; import HelpInterface from './items/HelpInterface';
import HelpLibrary from './items/HelpLibrary'; import HelpLibrary from './items/HelpLibrary';
import HelpMain from './items/HelpMain'; import HelpPortal from './items/HelpPortal';
import HelpPrivacy from './items/HelpPrivacy'; import HelpPrivacy from './items/HelpPrivacy';
import HelpRSFormCard from './items/HelpRSFormCard';
import HelpRSFormItems from './items/HelpRSFormItems'; import HelpRSFormItems from './items/HelpRSFormItems';
import HelpRSFormMenu from './items/HelpRSFormMenu'; import HelpRSFormMenu from './items/HelpRSFormMenu';
import HelpRSFormMeta from './items/HelpRSFormMeta';
import HelpRSLang from './items/HelpRSLang'; import HelpRSLang from './items/HelpRSLang';
import HelpRSLangCorrect from './items/HelpRSLangCorrect'; import HelpRSLangCorrect from './items/HelpRSLangCorrect';
import HelpRSLangInterpret from './items/HelpRSLangInterpret'; import HelpRSLangInterpret from './items/HelpRSLangInterpret';
import HelpRSLangOperations from './items/HelpRSLangOperations'; import HelpRSLangOperations from './items/HelpRSLangOperations';
import HelpRSLangTemplates from './items/HelpRSLangTemplates';
import HelpRSLangTypes from './items/HelpRSLangTypes'; import HelpRSLangTypes from './items/HelpRSLangTypes';
import HelpRSTemplates from './items/HelpRSTemplates';
import HelpTermGraph from './items/HelpTermGraph'; import HelpTermGraph from './items/HelpTermGraph';
import HelpTerminologyControl from './items/HelpTerminologyControl'; import HelpTerminologyControl from './items/HelpTerminologyControl';
import HelpVersions from './items/HelpVersions'; import HelpVersions from './items/HelpVersions';
@ -33,12 +33,12 @@ interface TopicPageProps {
} }
function TopicPage({ topic }: TopicPageProps) { function TopicPage({ topic }: TopicPageProps) {
if (topic === HelpTopic.MAIN) return <HelpMain />; if (topic === HelpTopic.MAIN) return <HelpPortal />;
if (topic === HelpTopic.INTERFACE) return <HelpInterface />; if (topic === HelpTopic.INTERFACE) return <HelpInterface />;
if (topic === HelpTopic.UI_LIBRARY) return <HelpLibrary />; if (topic === HelpTopic.UI_LIBRARY) return <HelpLibrary />;
if (topic === HelpTopic.UI_RS_MENU) return <HelpRSFormMenu />; if (topic === HelpTopic.UI_RS_MENU) return <HelpRSFormMenu />;
if (topic === HelpTopic.UI_RS_CARD) return <HelpRSFormMeta />; if (topic === HelpTopic.UI_RS_CARD) return <HelpRSFormCard />;
if (topic === HelpTopic.UI_RS_LIST) return <HelpRSFormItems />; if (topic === HelpTopic.UI_RS_LIST) return <HelpRSFormItems />;
if (topic === HelpTopic.UI_RS_EDITOR) return <HelpCstEditor />; if (topic === HelpTopic.UI_RS_EDITOR) return <HelpCstEditor />;
if (topic === HelpTopic.UI_GRAPH_TERM) return <HelpTermGraph />; if (topic === HelpTopic.UI_GRAPH_TERM) return <HelpTermGraph />;
@ -57,7 +57,7 @@ function TopicPage({ topic }: TopicPageProps) {
if (topic === HelpTopic.RSL_CORRECT) return <HelpRSLangCorrect />; if (topic === HelpTopic.RSL_CORRECT) return <HelpRSLangCorrect />;
if (topic === HelpTopic.RSL_INTERPRET) return <HelpRSLangInterpret />; if (topic === HelpTopic.RSL_INTERPRET) return <HelpRSLangInterpret />;
if (topic === HelpTopic.RSL_OPERATIONS) return <HelpRSLangOperations />; if (topic === HelpTopic.RSL_OPERATIONS) return <HelpRSLangOperations />;
if (topic === HelpTopic.RSL_TEMPLATES) return <HelpRSTemplates />; if (topic === HelpTopic.RSL_TEMPLATES) return <HelpRSLangTemplates />;
if (topic === HelpTopic.TERM_CONTROL) return <HelpTerminologyControl />; if (topic === HelpTopic.TERM_CONTROL) return <HelpTerminologyControl />;
if (topic === HelpTopic.VERSIONS) return <HelpVersions />; if (topic === HelpTopic.VERSIONS) return <HelpVersions />;

View File

@ -1,10 +1,15 @@
function HelpConceptRelations() { function HelpConceptRelations() {
// prettier-ignore
return ( return (
<div> <div>
<h1>Связи между конституентами</h1> <h1>Связи между конституентами</h1>
<p>TBD</p> <p>TBD</p>
</div>); <li>Вывод: формальный и содержательный</li>
<li>Структурные отношения</li>
<li>Порожденные понятия</li>
<li>Родо-видовое отношение</li>
<li>Порождение многообразий</li>
</div>
);
} }
export default HelpConceptRelations; export default HelpConceptRelations;

View File

@ -1,15 +1,29 @@
import LinkTopic from '@/components/ui/LinkTopic';
import { HelpTopic } from '@/models/miscellaneous';
function HelpConceptSystem() { function HelpConceptSystem() {
// prettier-ignore
return ( return (
<div> <div>
<h1>Концептуальная схема Система определений</h1> <h1>Концептуальная схема Система определений</h1>
<p>Теория и модель предметной области</p> <p>
Данный раздел вводит <b>систему определений</b> как предмет концептуализации предметных областей. Под системой
определений понимается совокупность отдельных понятий и утверждений, а также связей между ними, задаваемых
определениями понятий.
</p>
<li>Теория и модель предметной области</li>
<li>Базовые и неопределяемые</li> <li>Базовые и неопределяемые</li>
<li>Неопределяемые и производные</li> <li>Неопределяемые и производные</li>
<li>Утверждения и определения</li> <li>Утверждения и определения</li>
<li>Ядро</li> <li>Ядро</li>
<li>Разворачивание термов</li> <li>Разворачивание термов</li>
</div>);
<p>
Более подробно различные отношения между понятиями и способы построения систем определений раскрываются в
разделе <LinkTopic text='Связи понятий' topic={HelpTopic.CC_RELATIONS} />
</p>
</div>
);
} }
export default HelpConceptSystem; export default HelpConceptSystem;

View File

@ -32,33 +32,33 @@ function HelpCstAttributes() {
<h2>Неопределяемые понятия</h2> <h2>Неопределяемые понятия</h2>
<p> <p>
<b>X1, C1</b> Базисные множества и Константные множества не обладают сложной структурой и определяются <code>X1, C1</code> Базисные множества и Константные множества не обладают сложной структурой и определяются
Конвенцией. Элементы Константных множеств участвуют в арифметических операциях и порядковых предикатах наряду с Конвенцией. Элементы Константных множеств участвуют в арифметических операциях и порядковых предикатах наряду с
мощностями множеств мощностями множеств
</p> </p>
<p> <p>
<b>S1 : (X1)</b> Родовые структуры задаются совокупностью Области определения, Конвенции и набора Аксиом, а <code>S1 : (X1)</code> Родовые структуры задаются совокупностью Области определения, Конвенции и набора
также Термином. Согласно Конвенции элементы родовой структуры заполняются из Области определения так, чтобы Аксиом, а также Термином. Согласно Конвенции элементы родовой структуры заполняются из Области определения так,
Аксиомы были выполнены. Родовая структура может быть как множеством, так и элементом или кортежем чтобы Аксиомы были выполнены. Родовая структура может быть как множеством, так и элементом или кортежем
</p> </p>
<p> <p>
<b>A1 :== (α,β)S1 (β,α)S1</b> Аксиомы задаются логическим Формальным определением и по необходимости <code>A1 :== (α,β)S1 (β,α)S1</code> Аксиомы задаются логическим Формальным определением и по необходимости
Конвенцией Конвенцией
</p> </p>
<h2>Производные понятия</h2> <h2>Производные понятия</h2>
<p> <p>
<b>D1 :== Pr1(S1)</b> Термы задаются типизированным Формальным определением <code>D1 :== Pr1(S1)</code> Термы задаются типизированным Формальным определением
</p> </p>
<p> <p>
<b>T1 :== Pr1(S1)=Pr2(S1)</b> Теоремы определяются логическим Формальным определением <code>T1 :== Pr1(S1)=Pr2(S1)</code> Теоремы определяются логическим Формальным определением
</p> </p>
<p> <p>
<b>F1 :== [σ(X1×X1)] Pr1(σ)\Pr2(σ)</b> <code>F1 :== [σ(X1×X1)] Pr1(σ)\Pr2(σ)</code>
<br /> <br />
Терм-функции определяются параметризованным типизированным Формальным определением Терм-функции определяются параметризованным типизированным Формальным определением
</p> </p>
<p> <p>
<b>P1 :== [σ(X1×X1)] card(Pr1(σ)) = card(σ)</b> <code>P1 :== [σ(X1×X1)] card(Pr1(σ)) = card(σ)</code>
<br /> <br />
Предикат-функции определяются параметризованным логическим Формальным определением Предикат-функции определяются параметризованным логическим Формальным определением
</p> </p>

View File

@ -2,14 +2,19 @@ import TextURL from '@/components/ui/TextURL';
import { external_urls } from '@/utils/constants'; import { external_urls } from '@/utils/constants';
function HelpExteor() { function HelpExteor() {
// prettier-ignore
return ( return (
<div> <div>
<h1>Экстеор</h1> <h1>Экстеор</h1>
<p>Экстеор 4.9 редактор текстов систем понятий эксплицированных в родах структур</p> <p>Экстеор 4.9 редактор текстов систем понятий эксплицированных в родах структур</p>
<p>Портал превосходит Экстеор в части редактирования экспликаций, но вычисление интерпретации доступно только в Экстеоре. Также следует использовать Экстеор для выгрузки экспликаций в Word для последующей печати</p> <p>
Портал превосходит Экстеор в части редактирования экспликаций, но вычисление интерпретации доступно только в
Экстеоре. Также следует использовать Экстеор для выгрузки экспликаций в Word для последующей печати
</p>
<p>Экстеор доступен на операционной системы Windows 10+</p> <p>Экстеор доступен на операционной системы Windows 10+</p>
<p>Скачать установщик: <TextURL href={external_urls.exteor64} text='64bit'/> | <TextURL href={external_urls.exteor32} text='32bit'/></p> <p>
Скачать установщик: <TextURL href={external_urls.exteor64} text='64bit' /> |{' '}
<TextURL href={external_urls.exteor32} text='32bit' />
</p>
<h2>Основные функции</h2> <h2>Основные функции</h2>
<li>Работа с РС-формой системы понятий</li> <li>Работа с РС-формой системы понятий</li>
@ -23,7 +28,8 @@ function HelpExteor() {
<li>Вычисление объектной интерпретации</li> <li>Вычисление объектной интерпретации</li>
<li>Выгрузка концептуальных схем в Word</li> <li>Выгрузка концептуальных схем в Word</li>
<li>Импорт/экспорт интерпретаций через Excel</li> <li>Импорт/экспорт интерпретаций через Excel</li>
</div>); </div>
);
} }
export default HelpExteor; export default HelpExteor;

View File

@ -1,10 +1,39 @@
import { useConceptOptions } from '@/context/OptionsContext';
function HelpFormulaTree() { function HelpFormulaTree() {
// prettier-ignore const { colors } = useConceptOptions();
return ( return (
<div> <div>
<h1>Дерево разбора родоструктурного выражения</h1> <h1>Дерево разбора выражения</h1>
<p>TBD.</p> <p>
</div>); Дерево разбора получено путем семантических преобразований дерева синтаксического разбора. Оно отражает
структуру грамматически корректного выражения языка родов структур.
</p>
<li>Порядок узлов в рамках одного уровня может отличаться от их порядка в выражении</li>
<li>При наведении курсора на узел в тексте выделяется соответствующий ему фрагмент</li>
<li>Текст в узле дерева соответствует элементу языка</li>
<h2>Виды узлов</h2>
<li>
<span style={{ backgroundColor: colors.bgGreen }}>объявление идентификатора</span>
</li>
<li>
<span style={{ backgroundColor: colors.bgTeal }}>глобальный идентификатор</span>
</li>
<li>
<span style={{ backgroundColor: colors.bgOrange }}>логическое выражение</span>
</li>
<li>
<span style={{ backgroundColor: colors.bgBlue }}>типизированное выражение</span>
</li>
<li>
<span style={{ backgroundColor: colors.bgRed }}>присвоение и итерация</span>
</li>
<li>
<span style={{ backgroundColor: '#7ca0ab' }}>составные выражения</span>
</li>
</div>
);
} }
export default HelpFormulaTree; export default HelpFormulaTree;

View File

@ -1,22 +1,60 @@
import {
IconDarkTheme,
IconHelp,
IconHelpOff,
IconLightTheme,
IconLogin,
IconLogout,
IconPin,
IconUser2
} from '@/components/Icons';
import { HelpTopic } from '@/models/miscellaneous'; import { HelpTopic } from '@/models/miscellaneous';
import Subtopics from '../Subtopics'; import Subtopics from '../Subtopics';
function HelpInterface() { function HelpInterface() {
// prettier-ignore
return ( return (
<div> <div>
<h1>Пользовательский интерфейс</h1> <h1>Пользовательский интерфейс</h1>
<p>Общие принципы построения интерфейса</p> <p>
Интерфейс построен на основе динамических компонент с использованием рендеринга графики в браузере.
Поддерживаются светлая и темная темы оформления.
</p>
<p>
<IconHelp className='inline-icon' />
Помимо данного раздела справка предоставляется контекстно через специальную иконку{' '}
<IconHelp className='inline-icon' />
</p>
<h2>Навигация и настройки</h2> <h2>Навигация и настройки</h2>
<li>Навигационную панель можно скрыть с помощью кнопки в правом верхнем углу</li> <li>Ctrl + клик на объект навигации откроет новую вкладку</li>
<li>В меню пользователя доступен ряд настроек и управление активным профилем</li> <li>
<br/> <IconPin size='1.25rem' className='inline-icon' /> навигационную панель можно скрыть с помощью кнопки в правом
верхнем углу
</li>
<li>
<IconLogin size='1.25rem' className='inline-icon' /> вход в систему / регистрация нового пользователя
</li>
<li>
<IconUser2 size='1.25rem' className='inline-icon' /> меню пользователя содержит ряд настроек и переход к профилю
пользователя
</li>
<li>
<IconLightTheme className='inline-icon' />
<IconDarkTheme className='inline-icon' /> переключатели темы
</li>
<li>
<IconHelp className='inline-icon' />
<IconHelpOff className='inline-icon' /> отключение иконок контекстной справки
</li>
<li>
<IconLogout className='inline-icon' /> выход из системы
</li>
<Subtopics headTopic={HelpTopic.INTERFACE} /> <Subtopics headTopic={HelpTopic.INTERFACE} />
</div>); </div>
);
} }
export default HelpInterface; export default HelpInterface;

View File

@ -7,8 +7,9 @@ function HelpLibrary() {
<h1>Библиотека схем</h1> <h1>Библиотека схем</h1>
<p>В библиотеке собраны концептуальные схемы, эксплицированные в родоструктурном аппарате</p> <p>В библиотеке собраны концептуальные схемы, эксплицированные в родоструктурном аппарате</p>
<p>используемые при концептуального проектирования систем организационного управления</p> <p>используемые при концептуального проектирования систем организационного управления</p>
<p>Фильтрация с помощью инструментов в верхней части страницы</p> <li>Фильтрация с помощью инструментов в верхней части страницы</li>
<p>Сортировка по клику на заголовок таблицы</p> <li>Сортировка по клику на заголовок таблицы</li>
<li>Ctrl + клик по строке откроет схему в новой вкладке</li>
<h2>Отображение статусов</h2> <h2>Отображение статусов</h2>
<p>- <IconPublic className='inline-icon'/> <b>общедоступная</b> отображает схему всем пользователям</p> <p>- <IconPublic className='inline-icon'/> <b>общедоступная</b> отображает схему всем пользователям</p>

View File

@ -1,52 +0,0 @@
import { urls } from '@/app/urls';
import TextURL from '@/components/ui/TextURL';
import { HelpTopic } from '@/models/miscellaneous';
import { external_urls, prefixes } from '@/utils/constants';
import LinkTopic from '../../../components/ui/LinkTopic';
import TopicItem from '../TopicItem';
function HelpMain() {
// prettier-ignore
return (
<div>
<h1>Портал</h1>
<p>Портал позволяет анализировать предметные области, формально записывать системы определений и синтезировать их с помощью математического аппарата <LinkTopic text='Родов структур' topic={HelpTopic.RSLANG}/></p>
<p>Такие системы называются <b>Концептуальными схемами</b> и состоят из отдельных <LinkTopic text='Конституент' topic={HelpTopic.CC_CONSTITUENTA}/>, обладающих уникальными обозначениями и формальными определениями</p>
<br/>
<h2>Разделы Портала</h2>
<li><TextURL text='Библиотека' href={urls.library} /> библиотека концептуальных схем</li>
<li><TextURL text='Справка' href={urls.manuals} /> справочные материалы</li>
<li><TextURL text='Профиль' href={urls.profile} /> данные пользователя и смена пароля</li>
<br/>
<h2>Разделы Справки</h2>
{[
HelpTopic.INTERFACE,
HelpTopic.CONCEPTUAL,
HelpTopic.RSLANG,
HelpTopic.TERM_CONTROL,
HelpTopic.VERSIONS,
HelpTopic.EXTEOR,
HelpTopic.API,
HelpTopic.PRIVACY
].map(topic =>
<TopicItem key={`${prefixes.topic_item}${topic}`} topic={topic} />
)}
<br/>
<h2>Лицензирование и раскрытие информации</h2>
<li>Пользователи Портала сохраняют авторские права на создаваемый ими контент</li>
<li>Политика обработки данных доступна по <LinkTopic text='ссылке' topic={HelpTopic.PRIVACY}/></li>
<li>Портал является проектом с открытым исходным кодом, доступным на <TextURL text='Github' href={external_urls.git_repo}/></li>
<li>Данный сайт использует доменное имя и серверные мощности <TextURL text='Центра Концепт' href={external_urls.concept}/></li>
<br/>
<h2>Поддержка</h2>
<p>Портал разрабатывается <TextURL text='Центром Концепт' href={external_urls.concept}/></p>
<p>Ваши пожелания по доработке, найденные ошибки и иные предложения можно направлять по email: <TextURL href={external_urls.mail_portal} text='portal@acconcept.ru'/></p>
</div>);
}
export default HelpMain;

View File

@ -0,0 +1,82 @@
import { urls } from '@/app/urls';
import { IconLibrary2, IconManuals, IconUser2 } from '@/components/Icons';
import TextURL from '@/components/ui/TextURL';
import { HelpTopic } from '@/models/miscellaneous';
import { external_urls, prefixes } from '@/utils/constants';
import LinkTopic from '../../../components/ui/LinkTopic';
import TopicItem from '../TopicItem';
function HelpPortal() {
return (
<div>
<h1>Портал</h1>
<p>
Портал позволяет анализировать предметные области, формально записывать системы определений и синтезировать их с
помощью математического аппарата <LinkTopic text='Родов структур' topic={HelpTopic.RSLANG} />
</p>
<p>
Такие системы называются <b>Концептуальными схемами</b> и состоят из отдельных{' '}
<LinkTopic text='Конституент' topic={HelpTopic.CC_CONSTITUENTA} />, обладающих уникальными обозначениями и
формальными определениями
</p>
<br />
<h2>Разделы Портала</h2>
<li>
<IconLibrary2 size='1.25rem' className='inline-icon' /> <TextURL text='Библиотека' href={urls.library} />
библиотека концептуальных схем
</li>
<li>
<IconManuals size='1.25rem' className='inline-icon' /> <TextURL text='Справка' href={urls.manuals} />
справочные материалы
</li>
<li>
<IconUser2 size='1.25rem' className='inline-icon' /> <TextURL text='Профиль' href={urls.profile} /> данные
пользователя и смена пароля
</li>
<br />
<h2>Разделы Справки</h2>
{[
HelpTopic.INTERFACE,
HelpTopic.CONCEPTUAL,
HelpTopic.RSLANG,
HelpTopic.TERM_CONTROL,
HelpTopic.VERSIONS,
HelpTopic.EXTEOR,
HelpTopic.API,
HelpTopic.PRIVACY
].map(topic => (
<TopicItem key={`${prefixes.topic_item}${topic}`} topic={topic} />
))}
<br />
<h2>Лицензирование и раскрытие информации</h2>
<li>Пользователи Портала сохраняют авторские права на создаваемый ими контент</li>
<li>
Политика обработки данных доступна по <LinkTopic text='ссылке' topic={HelpTopic.PRIVACY} />
</li>
<li>
Портал является проектом с открытым исходным кодом, доступным на{' '}
<TextURL text='Github' href={external_urls.git_repo} />
</li>
<li>
Данный сайт использует доменное имя и серверные мощности{' '}
<TextURL text='Центра Концепт' href={external_urls.concept} />
</li>
<br />
<h2>Поддержка</h2>
<p>
Портал разрабатывается <TextURL text='Центром Концепт' href={external_urls.concept} />
</p>
<p>
Ваши пожелания по доработке, найденные ошибки и иные предложения можно направлять по email:{' '}
<TextURL href={external_urls.mail_portal} text='portal@acconcept.ru' />
</p>
</div>
);
}
export default HelpPortal;

View File

@ -2,6 +2,7 @@ import { HelpTopic } from '@/models/miscellaneous';
import { import {
IconClone, IconClone,
IconDestroy,
IconDownload, IconDownload,
IconFollow, IconFollow,
IconImmutable, IconImmutable,
@ -11,7 +12,7 @@ import {
} from '../../../components/Icons'; } from '../../../components/Icons';
import LinkTopic from '../../../components/ui/LinkTopic'; import LinkTopic from '../../../components/ui/LinkTopic';
function HelpRSFormMeta() { function HelpRSFormCard() {
// prettier-ignore // prettier-ignore
return ( return (
<div className='dense'> <div className='dense'>
@ -27,8 +28,9 @@ function HelpRSFormMeta() {
<li><IconImmutable className='inline-icon'/> Неизменные схемы редактируют только администраторы</li> <li><IconImmutable className='inline-icon'/> Неизменные схемы редактируют только администраторы</li>
<li><IconClone className='inline-icon'/> Клонировать создать копию схемы</li> <li><IconClone className='inline-icon'/> Клонировать создать копию схемы</li>
<li><IconFollow className='inline-icon'/> Отслеживание схема в персональном списке</li> <li><IconFollow className='inline-icon'/> Отслеживание схема в персональном списке</li>
<li><IconDownload className='inline-icon'/> Загрузить/Выгрузить схему взаимодействие с Экстеор</li> <li><IconDownload className='inline-icon'/> Загрузить/Выгрузить взаимодействие с Экстеор</li>
<li><IconDestroy className='inline-icon icon-red'/> Удалить полностью удаляет схему из базы Портала</li>
</div>); </div>);
} }
export default HelpRSFormMeta; export default HelpRSFormCard;

View File

@ -1,10 +1,97 @@
import {
IconAdmin,
IconAlert,
IconArchive,
IconClone,
IconDestroy,
IconDownload,
IconEdit2,
IconMenu,
IconOwner,
IconReader,
IconShare,
IconUpload
} from '@/components/Icons';
import Divider from '@/components/ui/Divider';
import LinkTopic from '@/components/ui/LinkTopic';
import { HelpTopic } from '@/models/miscellaneous';
function HelpRSFormMenu() { function HelpRSFormMenu() {
// prettier-ignore
return ( return (
<div> <div>
<h1>Меню редактирования концептуальной схемы</h1> <h1>Редактирование схемы</h1>
<p>TBD</p> <p>
</div>); При переходе к отображению отдельной концептуальной схемы сверху появляется меню, содержащее кнопки с
выпадающими меню и ряд вкладок. Вид и количество кнопок зависит от выбранного режима работы.
</p>
<h2>Вкладки</h2>
<li>
<LinkTopic text='Карточка' topic={HelpTopic.UI_RS_CARD} /> редактирование атрибутов схемы и версии
</li>
<li>
<LinkTopic text='Содержание' topic={HelpTopic.UI_RS_LIST} /> работа со списком конституент в табличной форме
</li>
<li>
<LinkTopic text='Редактор' topic={HelpTopic.UI_RS_EDITOR} /> редактирование отдельной{' '}
<LinkTopic text='Конституенты' topic={HelpTopic.CC_CONSTITUENTA} />
</li>
<li>
<LinkTopic text='Граф термов' topic={HelpTopic.UI_GRAPH_TERM} /> графическое представление связей конституент
</li>
<div className='flex my-3'>
<div>
<h2>Меню схемы</h2>
<li>
<IconMenu size='1.25rem' className='inline-icon' /> Меню схемы выпадающее меню с общими функциями
</li>
<li>
<IconShare className='inline-icon' /> Поделиться скопировать ссылку на схему
</li>
<li>
<IconClone className='inline-icon' /> Клонировать создать копию схемы
</li>
<li>
<IconDownload className='inline-icon' /> Выгрузить сохранить в файле формата Экстеор
</li>
<li>
<IconUpload className='inline-icon icon-red' /> Загрузить заменить схему на содержимое файла Экстеор
</li>
<li>
<IconDestroy className='inline-icon icon-red' /> Удалить полностью удаляет схему из базы Портала
</li>
</div>
<Divider vertical margins='mx-3' />
<div className='w-[18rem]'>
<h2>Режимы работы</h2>
<li>
<IconAlert size='1.25rem' className='inline-icon icon-red' /> работа в анонимном режиме. Переход на страницу
логина
</li>
<li>
<IconArchive size='1.25rem' className='inline-icon' /> просмотр архивной версии. Переход к актуальной версии
</li>
<li>
<IconReader size='1.25rem' className='inline-icon' /> режим "только чтение"
</li>
<li>
<IconOwner size='1.25rem' className='inline-icon' /> режим "редактор"
</li>
<li>
<IconAdmin size='1.25rem' className='inline-icon' /> режим "администратор"
</li>
</div>
</div>
<p>
<IconEdit2 size='1.25rem' className='inline-icon' /> операции над концептуальной схемой описаны в{' '}
<LinkTopic text='разделе Экспликация' topic={HelpTopic.RSL_OPERATIONS} />.
</p>
</div>
);
} }
export default HelpRSFormMenu; export default HelpRSFormMenu;

View File

@ -23,13 +23,17 @@ function HelpRSLangInterpret() {
<b>Интерпретируемыми</b> будем считать выражения, которые можно вычислить за полиномиальное время относительно <b>Интерпретируемыми</b> будем считать выражения, которые можно вычислить за полиномиальное время относительно
мощностей интерпретаций глобальных идентификаторов, используемых в этом выражении. По аналогии с{' '} мощностей интерпретаций глобальных идентификаторов, используемых в этом выражении. По аналогии с{' '}
<LinkTopic text='биективной переносимостью' topic={HelpTopic.RSL_CORRECT} /> условия интерпретируемости могут <LinkTopic text='биективной переносимостью' topic={HelpTopic.RSL_CORRECT} /> условия интерпретируемости могут
быть выведены из утверждения {'выражения "Z, (α)" не интерпретируемы'}. быть выведены из утверждения "выражения <code>Z, (α)</code> не интерпретируемы".
</p> </p>
<p> <p>
Также вводится категория выражений, задающих множества, которым можно принадлежность за полиномиальное время, но Также вводится категория выражений, задающих множества, которым можно принадлежность за полиномиальное время, но
нельзя вычислить полный список элемент. Например, {'"Z, D{ξ∈ℬ(X1×X1) | Pr1(ξ)=Pr2(ξ)}"'}. Конституенты, чьи нельзя вычислить полный список элемент.
выражения удовлетворяет этому свойству, называются <b>Неразмерными</b>. Их можно использовать в интерпретируемых <br />
выражениях только в конструкциях, не требующих перебора их элементах. Например, <code>{'D{ξ∈ℬ(X1×X1) | Pr1(ξ)=Pr2(ξ)}'}</code>.
</p>
<p>
Конституенты, чьи выражения удовлетворяет этому свойству, называются <b>Неразмерными</b>. Их можно использовать
в интерпретируемых выражениях только в конструкциях, не требующих перебора их элементах.
</p> </p>
<p> <p>
Конституенты, чьи выражения не позволяют проверить принадлежность за полиномиальное время, называются{' '} Конституенты, чьи выражения не позволяют проверить принадлежность за полиномиальное время, называются{' '}

View File

@ -1,6 +1,15 @@
import { HelpTopic } from '@/models/miscellaneous'; import { HelpTopic } from '@/models/miscellaneous';
import { IconInlineSynthesis, IconTemplates } from '../../../components/Icons'; import {
IconGenerateNames,
IconGenerateStructure,
IconInlineSynthesis,
IconKeepAliasOn,
IconKeepTermOn,
IconReplace,
IconSortList,
IconTemplates
} from '../../../components/Icons';
import LinkTopic from '../../../components/ui/LinkTopic'; import LinkTopic from '../../../components/ui/LinkTopic';
function HelpRSLangOperations() { function HelpRSLangOperations() {
@ -9,6 +18,57 @@ function HelpRSLangOperations() {
<h1>Операции над концептуальными схемами</h1> <h1>Операции над концептуальными схемами</h1>
<p>В данном разделе поясняются различные операции над концептуальными схемами.</p> <p>В данном разделе поясняются различные операции над концептуальными схемами.</p>
<h2>
<IconSortList size='1.25rem' className='inline-icon' /> Упорядочение
</h2>
<p>
Упорядочение списка конституент по следующим правилам
<li>базисные и константные множества объявляются первыми</li>
<li>
конституенты <LinkTopic text='Ядра' topic={HelpTopic.CC_SYSTEM} /> располагаются до остальных
</li>
<li>
<b>топологический порядок</b>: связи вывода от ранее объявленных к производным
</li>
<li>
<LinkTopic text='порожденные' topic={HelpTopic.CC_RELATIONS} /> конституенты следуют сразу за исходной
</li>
<li>максимальное сохранение исходного порядка при выполнении предыдущих правил</li>
</p>
<h2>
<IconGenerateNames size='1.25rem' className='inline-icon' /> Порядковые имена
</h2>
<p>
Генерация имен конституент таким образом, чтобы порядок на индексах соответствовал порядка объявления
конституент в списке. Например, <code>{'Rename({X4, X2, D1, D3}) = {X1, X2, D1, D2}'}</code>
</p>
<h2>
<IconGenerateStructure size='1.25rem' className='inline-icon' /> Порождение структуры
</h2>
<p>
Порождение полной совокупности термов, раскрывающих структуру выбранной конституенты. Операция применима к
терм-функциям, термам и родовым структурам с <LinkTopic text='типизацией' topic={HelpTopic.RSL_TYPES} />{' '}
множество и кортеж.
<br />
<code>{'Generate(S1∈(X1×(X1))) = {Pr1(S1), Pr2(S1), red(Pr2(S1))}'}</code>
</p>
<h2>
<IconReplace size='1.25rem' className='inline-icon' /> Отождествление
</h2>
<p>
Формирование таблицы отождествлений и ее применение к текущей схеме. В результате будет удален ряд конституент и
их вхождения заменены на другие. Возможна настройка какой термин использовать для оставшихся конституент
<li>
<IconKeepAliasOn size='1.25rem' className='inline-icon' /> выбор сохраняемой конституенты
</li>
<li>
<IconKeepTermOn size='1.25rem' className='inline-icon' /> выбор сохраняемого термина
</li>
</p>
<h2> <h2>
<IconTemplates size='1.25rem' className='inline-icon' /> Генерация из шаблона <IconTemplates size='1.25rem' className='inline-icon' /> Генерация из шаблона
</h2> </h2>
@ -16,7 +76,6 @@ function HelpRSLangOperations() {
Данная операция позволяет вставить конституенту из{' '} Данная операция позволяет вставить конституенту из{' '}
<LinkTopic text='шаблона выражения' topic={HelpTopic.RSL_TEMPLATES} />. <LinkTopic text='шаблона выражения' topic={HelpTopic.RSL_TEMPLATES} />.
</p> </p>
<br />
<h2> <h2>
<IconInlineSynthesis size='1.25rem' className='inline-icon' /> Встраивание <IconInlineSynthesis size='1.25rem' className='inline-icon' /> Встраивание

View File

@ -1,4 +1,4 @@
function HelpRSTemplates() { function HelpRSLangTemplates() {
return ( return (
<div> <div>
<h1>Шаблоны</h1> <h1>Шаблоны</h1>
@ -10,19 +10,19 @@ function HelpRSTemplates() {
Источником шаблонов является <b>Банк выражений</b>, содержащий параметризованные понятия и утверждения, Источником шаблонов является <b>Банк выражений</b>, содержащий параметризованные понятия и утверждения,
сгруппированные по разделам сгруппированные по разделам
</p> </p>
<p>Сначала выбирается шаблон выражения (вкладка Шаблон)</p> <li>Сначала выбирается шаблон выражения (вкладка Шаблон)</li>
<p> <li>
Далее для аргументов можно зафиксировать значения, выбрав из конституент текущей схемы или указав выражения Далее для аргументов можно зафиксировать значения, выбрав из конституент текущей схемы или указав выражения
(вкладка Аргументы) (вкладка Аргументы)
</p> </li>
<p>Значения аргументов будут подставлены в выражение, включая корректировку перечня аргументов</p> <li>Значения аргументов будут подставлены в выражение, включая корректировку перечня аргументов</li>
<p>Если значения указаны для всех аргументов, то тип создаваемой конституенты будет автоматически обновлён</p> <li>Если значения указаны для всех аргументов, то тип создаваемой конституенты будет автоматически обновлён</li>
<p>На вкладке Конституента можно скорректировать все атрибуты, создаваемой конституенты</p> <li>На вкладке Конституента можно скорректировать все атрибуты, создаваемой конституенты</li>
<p> <li>
Кнопка <b>Создать</b> инициирует добавление выбранной конституенты в схему Кнопка <b>Создать</b> инициирует добавление выбранной конституенты в схему
</p> </li>
</div> </div>
); );
} }
export default HelpRSTemplates; export default HelpRSLangTemplates;

View File

@ -3,20 +3,20 @@ function HelpRSLangTypes() {
<div> <div>
<h1>Типизация</h1> <h1>Типизация</h1>
<p> <p>
Родоструктурное выражение <b>ξ</b> обладает типизацией (структурой), если выполнено ξH, Родоструктурное выражение <code>ξ</code> обладает типизацией (структурой), если выполнено ξH,
<br /> <br />
где <b>H</b> корректное выражение <b>ступени</b>, задаваемой следующими правилами: где <code>H</code> корректное выражение <b>ступени</b>, задаваемой следующими правилами:
<li> <li>
Xi, Ci ступень, называемая <b>элемент</b>; <code>Xi, Ci</code> ступень, называемая <b>элемент</b>;
</li> </li>
<li> <li>
Z ступень, называемая <b>целое число</b>; Z ступень, называемая <b>целое число</b>;
</li> </li>
<li> <li>
(H1×...×Hn) ступень, называемая <b>кортеж арности n</b>; <code>(H1×...×Hn)</code> ступень, называемая <b>кортеж арности n</b>;
</li> </li>
<li> <li>
(H) ступень, называемая <b>множеством</b>. <code>(H)</code> ступень, называемая <b>множеством</b>.
</li> </li>
</p> </p>
<p>Пустое множество имеет типизацию (R0) множество с произвольной структурой элемента</p> <p>Пустое множество имеет типизацию (R0) множество с произвольной структурой элемента</p>
@ -29,14 +29,14 @@ function HelpRSLangTypes() {
</p> </p>
<p> <p>
Параметризованные выражения (терм-функции, предикат-функции) относятся к типизации <br /> Параметризованные выражения (терм-функции, предикат-функции) относятся к типизации <br />
Hr 🠔 [H1, H2, ... Hi], <code>Hr 🠔 [H1, H2,...Hi]</code>,
<br /> <br />
где Hr типизация результата, H1, ... Hi типизации аргументов где <code>Hr</code> типизация результата, <code>H1,...Hi</code> типизации аргументов
</p> </p>
<p></p> <p></p>
<p> <p>
Шаблонные параметризованные выражения могут содержать обозначения R1, ... Ri, соответствующие произвольным Шаблонные параметризованные выражения могут содержать обозначения <code>R1,...Ri</code>, соответствующие
ступеням, определяемым исходя из типизации аргументов по месту использования выражения. произвольным ступеням, определяемым исходя из типизации аргументов по месту использования выражения.
</p> </p>
</div> </div>
); );

View File

@ -124,6 +124,10 @@ div:not(.dense) > p {
@apply font-semibold; @apply font-semibold;
} }
code {
font-family: var(--font-math);
}
li { li {
list-style-position: inside; list-style-position: inside;
} }