mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 04:50:36 +03:00
Improve help UI and refactor naming
This commit is contained in:
parent
31bbf0ab84
commit
7664d9bda7
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
|
@ -139,10 +139,13 @@
|
||||||
"конституенте",
|
"конституенте",
|
||||||
"конституенту",
|
"конституенту",
|
||||||
"конституенты",
|
"конституенты",
|
||||||
|
"Кучкаров",
|
||||||
|
"Кучкарова",
|
||||||
"неинтерпретируемый",
|
"неинтерпретируемый",
|
||||||
"неитерируемого",
|
"неитерируемого",
|
||||||
"пересинтез",
|
"пересинтез",
|
||||||
"Родоструктурная",
|
"Родоструктурная",
|
||||||
|
"родоструктурного",
|
||||||
"Родоструктурное",
|
"Родоструктурное",
|
||||||
"родоструктурной",
|
"родоструктурной",
|
||||||
"родоструктурном",
|
"родоструктурном",
|
||||||
|
|
1223
rsconcept/frontend/package-lock.json
generated
1223
rsconcept/frontend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
|
@ -14,8 +14,8 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@lezer/lr": "^1.4.0",
|
"@lezer/lr": "^1.4.0",
|
||||||
"@tanstack/react-table": "^8.17.3",
|
"@tanstack/react-table": "^8.17.3",
|
||||||
"@uiw/codemirror-themes": "^4.22.0",
|
"@uiw/codemirror-themes": "^4.22.1",
|
||||||
"@uiw/react-codemirror": "^4.22.0",
|
"@uiw/react-codemirror": "^4.22.1",
|
||||||
"axios": "^1.6.8",
|
"axios": "^1.6.8",
|
||||||
"clsx": "^2.1.1",
|
"clsx": "^2.1.1",
|
||||||
"framer-motion": "^10.18.0",
|
"framer-motion": "^10.18.0",
|
||||||
|
|
|
@ -5,13 +5,13 @@ import { IConstituenta } from '@/models/rsform';
|
||||||
import { isMockCst } from '@/models/rsformAPI';
|
import { isMockCst } from '@/models/rsformAPI';
|
||||||
import { colorFgCstStatus, IColorTheme } from '@/styling/color';
|
import { colorFgCstStatus, IColorTheme } from '@/styling/color';
|
||||||
|
|
||||||
interface ConstituentaBadgeProps {
|
interface BadgeConstituentaProps {
|
||||||
prefixID?: string;
|
prefixID?: string;
|
||||||
value: IConstituenta;
|
value: IConstituenta;
|
||||||
theme: IColorTheme;
|
theme: IColorTheme;
|
||||||
}
|
}
|
||||||
|
|
||||||
function ConstituentaBadge({ value, prefixID, theme }: ConstituentaBadgeProps) {
|
function BadgeConstituenta({ value, prefixID, theme }: BadgeConstituentaProps) {
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
id={`${prefixID}${value.alias}`}
|
id={`${prefixID}${value.alias}`}
|
||||||
|
@ -33,4 +33,4 @@ function ConstituentaBadge({ value, prefixID, theme }: ConstituentaBadgeProps) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default ConstituentaBadge;
|
export default BadgeConstituenta;
|
|
@ -5,11 +5,11 @@ import { GramData } from '@/models/language';
|
||||||
import { colorFgGrammeme } from '@/styling/color';
|
import { colorFgGrammeme } from '@/styling/color';
|
||||||
import { labelGrammeme } from '@/utils/labels';
|
import { labelGrammeme } from '@/utils/labels';
|
||||||
|
|
||||||
interface GrammemeBadgeProps {
|
interface BadgeGrammemeProps {
|
||||||
grammeme: GramData;
|
grammeme: GramData;
|
||||||
}
|
}
|
||||||
|
|
||||||
function GrammemeBadge({ grammeme }: GrammemeBadgeProps) {
|
function BadgeGrammeme({ grammeme }: BadgeGrammemeProps) {
|
||||||
const { colors } = useConceptOptions();
|
const { colors } = useConceptOptions();
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
|
@ -30,4 +30,4 @@ function GrammemeBadge({ grammeme }: GrammemeBadgeProps) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default GrammemeBadge;
|
export default BadgeGrammeme;
|
|
@ -4,8 +4,8 @@ import { useConceptOptions } from '@/context/OptionsContext';
|
||||||
import { HelpTopic } from '@/models/miscellaneous';
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
|
|
||||||
import { IconHelp } from '../Icons';
|
import { IconHelp } from '../Icons';
|
||||||
import InfoTopic from '../info/InfoTopic';
|
|
||||||
import { CProps } from '../props';
|
import { CProps } from '../props';
|
||||||
|
import TopicPage from '../../pages/ManualsPage/TopicPage';
|
||||||
|
|
||||||
interface BadgeHelpProps extends CProps.Styling {
|
interface BadgeHelpProps extends CProps.Styling {
|
||||||
topic: HelpTopic;
|
topic: HelpTopic;
|
||||||
|
@ -28,7 +28,7 @@ function BadgeHelp({ topic, ...restProps }: BadgeHelpProps) {
|
||||||
<TextURL text='Справка...' href={`/manuals?topic=${topic}`} />
|
<TextURL text='Справка...' href={`/manuals?topic=${topic}`} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<InfoTopic topic={topic} />
|
<TopicPage topic={topic} />
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
|
@ -1,20 +1,20 @@
|
||||||
import { IWordForm } from '@/models/language';
|
import { IWordForm } from '@/models/language';
|
||||||
|
|
||||||
import GrammemeBadge from './GrammemeBadge';
|
import BadgeGrammeme from './BadgeGrammeme';
|
||||||
|
|
||||||
interface WordFormBadgeProps {
|
interface BadgeWordFormProps {
|
||||||
keyPrefix?: string;
|
keyPrefix?: string;
|
||||||
form: IWordForm;
|
form: IWordForm;
|
||||||
}
|
}
|
||||||
|
|
||||||
function WordFormBadge({ keyPrefix, form }: WordFormBadgeProps) {
|
function BadgeWordForm({ keyPrefix, form }: BadgeWordFormProps) {
|
||||||
return (
|
return (
|
||||||
<div className='flex flex-wrap justify-start gap-1 select-none'>
|
<div className='flex flex-wrap justify-start gap-1 select-none'>
|
||||||
{form.grams.map(gram => (
|
{form.grams.map(gram => (
|
||||||
<GrammemeBadge key={`${keyPrefix}-${gram}`} grammeme={gram} />
|
<BadgeGrammeme key={`${keyPrefix}-${gram}`} grammeme={gram} />
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default WordFormBadge;
|
export default BadgeWordForm;
|
|
@ -1,64 +0,0 @@
|
||||||
import { HelpTopic } from '@/models/miscellaneous';
|
|
||||||
|
|
||||||
import HelpAPI from '../man/HelpAPI';
|
|
||||||
import HelpConcept from '../man/HelpConcept';
|
|
||||||
import HelpConceptRelations from '../man/HelpConceptRelations';
|
|
||||||
import HelpConceptSystem from '../man/HelpConceptSystem';
|
|
||||||
import HelpCstAttributes from '../man/HelpCstAttributes';
|
|
||||||
import HelpCstClass from '../man/HelpCstClass';
|
|
||||||
import HelpCstEditor from '../man/HelpCstEditor';
|
|
||||||
import HelpCstStatus from '../man/HelpCstStatus';
|
|
||||||
import HelpExteor from '../man/HelpExteor';
|
|
||||||
import HelpInterface from '../man/HelpInterface';
|
|
||||||
import HelpLibrary from '../man/HelpLibrary';
|
|
||||||
import HelpMain from '../man/HelpMain';
|
|
||||||
import HelpPrivacy from '../man/HelpPrivacy';
|
|
||||||
import HelpRSFormItems from '../man/HelpRSFormItems';
|
|
||||||
import HelpRSFormMeta from '../man/HelpRSFormMeta';
|
|
||||||
import HelpRSLang from '../man/HelpRSLang';
|
|
||||||
import HelpRSLangCorrect from '../man/HelpRSLangCorrect';
|
|
||||||
import HelpRSLangInterpret from '../man/HelpRSLangInterpret';
|
|
||||||
import HelpRSLangOperations from '../man/HelpRSLangOperations';
|
|
||||||
import HelpRSLangTypes from '../man/HelpRSLangTypes';
|
|
||||||
import HelpRSTemplates from '../man/HelpRSTemplates';
|
|
||||||
import HelpTermGraph from '../man/HelpTermGraph';
|
|
||||||
import HelpTerminologyControl from '../man/HelpTerminologyControl';
|
|
||||||
import HelpVersions from '../man/HelpVersions';
|
|
||||||
|
|
||||||
interface InfoTopicProps {
|
|
||||||
topic: HelpTopic;
|
|
||||||
}
|
|
||||||
|
|
||||||
function InfoTopic({ topic }: InfoTopicProps) {
|
|
||||||
if (topic === HelpTopic.MAIN) return <HelpMain />;
|
|
||||||
|
|
||||||
if (topic === HelpTopic.INTERFACE) return <HelpInterface />;
|
|
||||||
if (topic === HelpTopic.UI_LIBRARY) return <HelpLibrary />;
|
|
||||||
if (topic === HelpTopic.UI_RS_CARD) return <HelpRSFormMeta />;
|
|
||||||
if (topic === HelpTopic.UI_RS_LIST) return <HelpRSFormItems />;
|
|
||||||
if (topic === HelpTopic.UI_RS_EDITOR) return <HelpCstEditor />;
|
|
||||||
if (topic === HelpTopic.UI_GRAPH_TERM) return <HelpTermGraph />;
|
|
||||||
if (topic === HelpTopic.UI_CST_STATUS) return <HelpCstStatus />;
|
|
||||||
if (topic === HelpTopic.UI_CST_CLASS) return <HelpCstClass />;
|
|
||||||
|
|
||||||
if (topic === HelpTopic.CONCEPTUAL) return <HelpConcept />;
|
|
||||||
if (topic === HelpTopic.CC_SYSTEM) return <HelpConceptSystem />;
|
|
||||||
if (topic === HelpTopic.CC_CONSTITUENTA) return <HelpCstAttributes />;
|
|
||||||
if (topic === HelpTopic.CC_RELATIONS) return <HelpConceptRelations />;
|
|
||||||
|
|
||||||
if (topic === HelpTopic.RSLANG) return <HelpRSLang />;
|
|
||||||
if (topic === HelpTopic.RSL_TYPES) return <HelpRSLangTypes />;
|
|
||||||
if (topic === HelpTopic.RSL_CORRECT) return <HelpRSLangCorrect />;
|
|
||||||
if (topic === HelpTopic.RSL_INTERPRET) return <HelpRSLangInterpret />;
|
|
||||||
if (topic === HelpTopic.RSL_TEMPLATES) return <HelpRSTemplates />;
|
|
||||||
if (topic === HelpTopic.RSL_OPERATIONS) return <HelpRSLangOperations />;
|
|
||||||
|
|
||||||
if (topic === HelpTopic.TERM_CONTROL) return <HelpTerminologyControl />;
|
|
||||||
if (topic === HelpTopic.VERSIONS) return <HelpVersions />;
|
|
||||||
if (topic === HelpTopic.EXTEOR) return <HelpExteor />;
|
|
||||||
if (topic === HelpTopic.API) return <HelpAPI />;
|
|
||||||
if (topic === HelpTopic.PRIVACY) return <HelpPrivacy />;
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default InfoTopic;
|
|
|
@ -1,19 +0,0 @@
|
||||||
import { HelpTopic } from '@/models/miscellaneous';
|
|
||||||
|
|
||||||
import Subtopics from './Subtopics';
|
|
||||||
|
|
||||||
function HelpConceptSystem() {
|
|
||||||
// prettier-ignore
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
<h1>Концептуализация</h1>
|
|
||||||
<p>Сложные предметные области требуют применения специальных подходов к их пониманию и описанию. <b>Системный подход</b> заключается в установлении границы системы, выделении отдельных подсистем и установления связей между ними. Подсистемы описываются раздельно. Далее их описания синтезируются с учетом установленных связей. Таким образом формируется описания системы в целом через описания ее частей</p>
|
|
||||||
<p><b>Концептуализация</b> заключается в дедуктивном построении концептуальных схем (систем определений), описывающих содержательные отношения в рамках каждой подсистемы. Концептуальные схемы могут быть синтезированы для получения общей системы определений в выбранной предметной области.</p>
|
|
||||||
<p>Концептуализация применяется в условиях поставленной задачи в рамках предметной области. Решаемая прикладная проблема позволяет определить границы концептуализации и разумно распределить ресурсы.</p>
|
|
||||||
<p>в ходе многократной концептуализации и решения с помощью построенных концептуальных схем прикладных задач формируется навык <b>Концептуального мышления</b>. Это особый способ мышления, при котором строго контролируются используемые определения и предположения, в которых происходит описание предметного содержания.</p>
|
|
||||||
|
|
||||||
<Subtopics headTopic={HelpTopic.CONCEPTUAL} />
|
|
||||||
</div>);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default HelpConceptSystem;
|
|
|
@ -1,10 +0,0 @@
|
||||||
function HelpConceptSystem() {
|
|
||||||
// prettier-ignore
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
<h1>Концептуальная схема – Система определений</h1>
|
|
||||||
<p>TBD</p>
|
|
||||||
</div>);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default HelpConceptSystem;
|
|
|
@ -1,29 +0,0 @@
|
||||||
import { HelpTopic } from '@/models/miscellaneous';
|
|
||||||
|
|
||||||
import LinkTopic from '../ui/LinkTopic';
|
|
||||||
|
|
||||||
function HelpCstAttributes() {
|
|
||||||
// prettier-ignore
|
|
||||||
return (
|
|
||||||
<div className='dense'>
|
|
||||||
<h1>Атрибуты конституенты</h1>
|
|
||||||
<p><b>Термин</b> может быть присвоен любой конституенте. Он используется в других Терминах и в Текстовых определениях</p>
|
|
||||||
<p><b>Формальное определение</b> строится с помощью формального аппарата <LinkTopic text='родоструктурной экспликации' topic={HelpTopic.RSLANG}/></p>
|
|
||||||
<p><b>Типизация</b> вычисляется автоматически на основе Формального определения и отражает структуру элементов множества, задаваемого этим определением</p>
|
|
||||||
<p><b>Текстовое определение</b> предоставляется для конституент, имеющих Формальное определение или Область определения. Это текстовая интерпретация формального определения и строится из связующих слов, терминов теории множеств и отсылок на термины ранее введенных конституент</p>
|
|
||||||
<p><b>Конвенция</b> – это соглашение о соотнесении неопределенного понятия с сущностями в предметной области</p>
|
|
||||||
<p><b>Комментарий</b> может быть добавлен к любому производному понятию для хранения дополнительной информации</p>
|
|
||||||
|
|
||||||
<h2>Неопределяемые понятия</h2>
|
|
||||||
<p><b>X1, C1</b> – Базисные множества и Константные множества не обладают сложной структурой и определяются Конвенцией. Элементы Константных множеств участвуют в арифметических операциях и порядковых предикатах наряду с мощностями множеств</p>
|
|
||||||
<p><b>S1 :∈ ℬ(X1)</b> – Родовые структуры задаются совокупностью Области определения, Конвенции и набора Аксиом, а также Термином. Согласно Конвенции элементы родовой структуры заполняются из Области определения так, чтобы Аксиомы были выполнены. Родовая структура может быть как множеством, так и элементом или кортежем</p>
|
|
||||||
<p><b>A1 :== ∀(α,β)∈S1 (β,α)∈S1</b> – Аксиомы задаются логическим Формальным определением и по необходимости Конвенцией</p>
|
|
||||||
<h2>Производные понятия</h2>
|
|
||||||
<p><b>D1 :== Pr1(S1)</b> – Термы задаются типизированным Формальным определением</p>
|
|
||||||
<p><b>T1 :== Pr1(S1)=Pr2(S1)</b> – Теоремы определяются логическим Формальным определением</p>
|
|
||||||
<p><b>F1 :== [σ∈ℬ(X1×X1)] Pr1(σ)\Pr2(σ)</b><br />Терм-функции определяются параметризованным типизированным Формальным определением</p>
|
|
||||||
<p><b>P1 :== [σ∈ℬ(X1×X1)] card(Pr1(σ)) = card(σ)</b><br />Предикат-функции определяются параметризованным логическим Формальным определением</p>
|
|
||||||
</div>);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default HelpCstAttributes;
|
|
|
@ -1,23 +0,0 @@
|
||||||
import { HelpTopic } from '@/models/miscellaneous';
|
|
||||||
|
|
||||||
import { IconTemplates } from '../Icons';
|
|
||||||
import LinkTopic from '../ui/LinkTopic';
|
|
||||||
|
|
||||||
function HelpRSLangOperations() {
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
<h1>Операции над концептуальными схемами</h1>
|
|
||||||
<p>В данном разделе поясняются различные операции над концептуальными схемами</p>
|
|
||||||
|
|
||||||
<h2>
|
|
||||||
<IconTemplates size='1.25rem' className='inline-icon' /> Генерация из шаблона
|
|
||||||
</h2>
|
|
||||||
<p>
|
|
||||||
Данная операция позволяет вставить конституенту из{' '}
|
|
||||||
<LinkTopic text='шаблона выражения' topic={HelpTopic.RSL_TEMPLATES} />.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default HelpRSLangOperations;
|
|
|
@ -1,17 +0,0 @@
|
||||||
function HelpRSTemplates() {
|
|
||||||
// prettier-ignore
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
<h1>Шаблоны</h1>
|
|
||||||
<p>Портал предоставляет быстрый доступ к часто используемым выражениям с помощью функции создания конституенты из шаблона</p>
|
|
||||||
<p>Источником шаблонов является <b>Банк выражений</b>, содержащий параметризованные понятия и утверждения, сгруппированные по разделам</p>
|
|
||||||
<p>Сначала выбирается шаблон выражения (вкладка Шаблон)</p>
|
|
||||||
<p>Далее для аргументов можно зафиксировать значения, выбрав из конституент текущей схемы или указав выражения (вкладка Аргументы)</p>
|
|
||||||
<p>Значения аргументов будут подставлены в выражение, включая корректировку перечня аргументов</p>
|
|
||||||
<p>Если значения указаны для всех аргументов, то тип создаваемой конституенты будет автоматически обновлён</p>
|
|
||||||
<p>На вкладке Конституента можно скорректировать все атрибуты, создаваемой конституенты</p>
|
|
||||||
<p>Кнопка <b>Создать</b> инициирует добавление выбранной конституенты в схему</p>
|
|
||||||
</div>);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default HelpRSTemplates;
|
|
|
@ -1,29 +0,0 @@
|
||||||
import Divider from '@/components/ui/Divider';
|
|
||||||
|
|
||||||
import { IconDestroy, IconEdit, IconReset } from '../Icons';
|
|
||||||
|
|
||||||
function HelpTermGraph() {
|
|
||||||
// prettier-ignore
|
|
||||||
return (
|
|
||||||
<div className='flex'>
|
|
||||||
<div className='dense min-w-[18rem]'>
|
|
||||||
<h1>Настройка графа</h1>
|
|
||||||
<li>Цвет – правила покраски</li>
|
|
||||||
<li>Граф – модель расположения</li>
|
|
||||||
<li>Размер – модель размера</li>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<Divider vertical margins='mx-3' />
|
|
||||||
|
|
||||||
<div className='dense min-w-[18rem]'>
|
|
||||||
<h1>Управление</h1>
|
|
||||||
<li>Клик на конституенту – выделение</li>
|
|
||||||
<li>Ctrl + клик – выбор фокус-конституенты</li>
|
|
||||||
<li><IconReset className='inline-icon'/> Esc – сбросить выделение</li>
|
|
||||||
<li><IconEdit className='inline-icon'/>Двойной клик – редактирование</li>
|
|
||||||
<li><IconDestroy className='inline-icon'/> Delete – удалить выбранные</li>
|
|
||||||
</div>
|
|
||||||
</div>);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default HelpTermGraph;
|
|
|
@ -1,16 +0,0 @@
|
||||||
function HelpTerminologyControl() {
|
|
||||||
// prettier-ignore
|
|
||||||
return (
|
|
||||||
<div className='flex flex-col gap-2'>
|
|
||||||
<h1>Терминологизация</h1>
|
|
||||||
<p>Портал позволяет контролировать употребление терминов, привязанных к сущностям в концептуальных схемах.</p>
|
|
||||||
<p>Для этого используется механизм текстовых отсылок: <i>использование термина</i> и <i>связывание слов.</i></p>
|
|
||||||
<p>При отсылке к термину указывается параметры словоформы так, обеспечивающие корректное согласование слов.</p>
|
|
||||||
<p><b>Граммема</b> – минимальная единица грамматической информами, например род, число, падеж.</p>
|
|
||||||
<p><b>Словоформа</b> – грамматическая форма словосочетания, которая может меняться в зависимости от его грамматических характеристик.</p>
|
|
||||||
<p><b>Лексема</b> – все грамматические формы и словосочетания, связанные с данным словосочетанием.</p>
|
|
||||||
<p>При работе со словосочетаниями определяется основное слово, которое определяет набор граммем и используется для согласования с другими словами в предложении.</p>
|
|
||||||
</div>);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default HelpTerminologyControl;
|
|
|
@ -1,13 +0,0 @@
|
||||||
function HelpVersions() {
|
|
||||||
// prettier-ignore
|
|
||||||
return (
|
|
||||||
<div className='text-justify'>
|
|
||||||
<h1>Версионирование схем</h1>
|
|
||||||
<p>Версионирование позволяет сохранить текущее состояние схемы под определенным именем (версией) и использовать ссылку на него для совместной работы. После создания версии ее содержание изменить нельзя</p>
|
|
||||||
<p>Владелец обладает правом редактирования названий и создания новых версий</p>
|
|
||||||
<p>Управление версиями происходит в Карточке схемы</p>
|
|
||||||
<p>Функция Поделиться включает версию в ссылку</p>
|
|
||||||
</div>);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default HelpVersions;
|
|
|
@ -11,10 +11,10 @@ import { matchConstituenta } from '@/models/rsformAPI';
|
||||||
import { prefixes } from '@/utils/constants';
|
import { prefixes } from '@/utils/constants';
|
||||||
import { describeConstituenta } from '@/utils/labels';
|
import { describeConstituenta } from '@/utils/labels';
|
||||||
|
|
||||||
import ConstituentaBadge from '../info/ConstituentaBadge';
|
import BadgeConstituenta from '../info/BadgeConstituenta';
|
||||||
import FlexColumn from '../ui/FlexColumn';
|
import FlexColumn from '../ui/FlexColumn';
|
||||||
|
|
||||||
interface ConstituentaPickerProps {
|
interface PickConstituentaProps {
|
||||||
id?: string;
|
id?: string;
|
||||||
prefixID: string;
|
prefixID: string;
|
||||||
data?: IConstituenta[];
|
data?: IConstituenta[];
|
||||||
|
@ -31,7 +31,7 @@ interface ConstituentaPickerProps {
|
||||||
|
|
||||||
const columnHelper = createColumnHelper<IConstituenta>();
|
const columnHelper = createColumnHelper<IConstituenta>();
|
||||||
|
|
||||||
function ConstituentaPicker({
|
function PickConstituenta({
|
||||||
id,
|
id,
|
||||||
data,
|
data,
|
||||||
value,
|
value,
|
||||||
|
@ -42,7 +42,7 @@ function ConstituentaPicker({
|
||||||
matchFunc = (cst, filter) => matchConstituenta(cst, filter, CstMatchMode.ALL),
|
matchFunc = (cst, filter) => matchConstituenta(cst, filter, CstMatchMode.ALL),
|
||||||
onBeginFilter,
|
onBeginFilter,
|
||||||
onSelectValue
|
onSelectValue
|
||||||
}: ConstituentaPickerProps) {
|
}: PickConstituentaProps) {
|
||||||
const { colors } = useConceptOptions();
|
const { colors } = useConceptOptions();
|
||||||
const [filteredData, setFilteredData] = useState<IConstituenta[]>([]);
|
const [filteredData, setFilteredData] = useState<IConstituenta[]>([]);
|
||||||
const [filterText, setFilterText] = useState(initialFilter);
|
const [filterText, setFilterText] = useState(initialFilter);
|
||||||
|
@ -67,7 +67,7 @@ function ConstituentaPicker({
|
||||||
size: 65,
|
size: 65,
|
||||||
minSize: 65,
|
minSize: 65,
|
||||||
maxSize: 65,
|
maxSize: 65,
|
||||||
cell: props => <ConstituentaBadge theme={colors} value={props.row.original} prefixID={prefixID} />
|
cell: props => <BadgeConstituenta theme={colors} value={props.row.original} prefixID={prefixID} />
|
||||||
}),
|
}),
|
||||||
columnHelper.accessor(cst => describeFunc(cst), {
|
columnHelper.accessor(cst => describeFunc(cst), {
|
||||||
id: 'description'
|
id: 'description'
|
||||||
|
@ -117,4 +117,4 @@ function ConstituentaPicker({
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default ConstituentaPicker;
|
export default PickConstituenta;
|
|
@ -9,11 +9,11 @@ import { ConstituentaID, IConstituenta, IRSForm } from '@/models/rsform';
|
||||||
import { isBasicConcept } from '@/models/rsformAPI';
|
import { isBasicConcept } from '@/models/rsformAPI';
|
||||||
import { describeConstituenta } from '@/utils/labels';
|
import { describeConstituenta } from '@/utils/labels';
|
||||||
|
|
||||||
import ConstituentaBadge from '../info/ConstituentaBadge';
|
import BadgeConstituenta from '../info/BadgeConstituenta';
|
||||||
import FlexColumn from '../ui/FlexColumn';
|
import FlexColumn from '../ui/FlexColumn';
|
||||||
import GraphSelectionToolbar from './GraphSelectionToolbar';
|
import GraphSelectionToolbar from './GraphSelectionToolbar';
|
||||||
|
|
||||||
interface ConstituentaMultiPickerProps {
|
interface PickMultiConstituentaProps {
|
||||||
id?: string;
|
id?: string;
|
||||||
schema?: IRSForm;
|
schema?: IRSForm;
|
||||||
prefixID: string;
|
prefixID: string;
|
||||||
|
@ -25,7 +25,7 @@ interface ConstituentaMultiPickerProps {
|
||||||
|
|
||||||
const columnHelper = createColumnHelper<IConstituenta>();
|
const columnHelper = createColumnHelper<IConstituenta>();
|
||||||
|
|
||||||
function ConstituentaMultiPicker({ id, schema, prefixID, rows, selected, setSelected }: ConstituentaMultiPickerProps) {
|
function PickMultiConstituenta({ id, schema, prefixID, rows, selected, setSelected }: PickMultiConstituentaProps) {
|
||||||
const { colors } = useConceptOptions();
|
const { colors } = useConceptOptions();
|
||||||
const [rowSelection, setRowSelection] = useState<RowSelectionState>({});
|
const [rowSelection, setRowSelection] = useState<RowSelectionState>({});
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ function ConstituentaMultiPicker({ id, schema, prefixID, rows, selected, setSele
|
||||||
id: 'alias',
|
id: 'alias',
|
||||||
header: 'Имя',
|
header: 'Имя',
|
||||||
size: 65,
|
size: 65,
|
||||||
cell: props => <ConstituentaBadge theme={colors} value={props.row.original} prefixID={prefixID} />
|
cell: props => <BadgeConstituenta theme={colors} value={props.row.original} prefixID={prefixID} />
|
||||||
}),
|
}),
|
||||||
columnHelper.accessor(cst => describeConstituenta(cst), {
|
columnHelper.accessor(cst => describeConstituenta(cst), {
|
||||||
id: 'description',
|
id: 'description',
|
||||||
|
@ -111,4 +111,4 @@ function ConstituentaMultiPicker({ id, schema, prefixID, rows, selected, setSele
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default ConstituentaMultiPicker;
|
export default PickMultiConstituenta;
|
|
@ -10,7 +10,7 @@ import { ILibraryFilter } from '@/models/miscellaneous';
|
||||||
|
|
||||||
import FlexColumn from '../ui/FlexColumn';
|
import FlexColumn from '../ui/FlexColumn';
|
||||||
|
|
||||||
interface SchemaPickerProps {
|
interface PickSchemaProps {
|
||||||
id?: string;
|
id?: string;
|
||||||
initialFilter?: string;
|
initialFilter?: string;
|
||||||
rows?: number;
|
rows?: number;
|
||||||
|
@ -21,7 +21,7 @@ interface SchemaPickerProps {
|
||||||
|
|
||||||
const columnHelper = createColumnHelper<ILibraryItem>();
|
const columnHelper = createColumnHelper<ILibraryItem>();
|
||||||
|
|
||||||
function SchemaPicker({ id, initialFilter = '', rows = 4, value, onSelectValue }: SchemaPickerProps) {
|
function PickSchema({ id, initialFilter = '', rows = 4, value, onSelectValue }: PickSchemaProps) {
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
const { colors } = useConceptOptions();
|
const { colors } = useConceptOptions();
|
||||||
|
|
||||||
|
@ -114,4 +114,4 @@ function SchemaPicker({ id, initialFilter = '', rows = 4, value, onSelectValue }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default SchemaPicker;
|
export default PickSchema;
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
import { useCallback, useMemo, useState } from 'react';
|
import { useCallback, useMemo, useState } from 'react';
|
||||||
|
|
||||||
import ConstituentaBadge from '@/components/info/ConstituentaBadge';
|
import BadgeConstituenta from '@/components/info/BadgeConstituenta';
|
||||||
import ConstituentaSelector from '@/components/select/ConstituentaSelector';
|
import SelectConstituenta from '@/components/select/SelectConstituenta';
|
||||||
import DataTable, { createColumnHelper } from '@/components/ui/DataTable';
|
import DataTable, { createColumnHelper } from '@/components/ui/DataTable';
|
||||||
import Label from '@/components/ui/Label';
|
import Label from '@/components/ui/Label';
|
||||||
import MiniButton from '@/components/ui/MiniButton';
|
import MiniButton from '@/components/ui/MiniButton';
|
||||||
|
@ -24,7 +24,7 @@ import {
|
||||||
IconReplace
|
IconReplace
|
||||||
} from '../Icons';
|
} from '../Icons';
|
||||||
|
|
||||||
interface SubstitutionsPickerProps {
|
interface PickSubstitutionsProps {
|
||||||
prefixID: string;
|
prefixID: string;
|
||||||
rows?: number;
|
rows?: number;
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ function SubstitutionIcon({ item }: { item: ISubstitution }) {
|
||||||
|
|
||||||
const columnHelper = createColumnHelper<ISubstitution>();
|
const columnHelper = createColumnHelper<ISubstitution>();
|
||||||
|
|
||||||
function SubstitutionsPicker({
|
function PickSubstitutions({
|
||||||
items,
|
items,
|
||||||
schema1,
|
schema1,
|
||||||
schema2,
|
schema2,
|
||||||
|
@ -64,7 +64,7 @@ function SubstitutionsPicker({
|
||||||
rows,
|
rows,
|
||||||
setItems,
|
setItems,
|
||||||
prefixID
|
prefixID
|
||||||
}: SubstitutionsPickerProps) {
|
}: PickSubstitutionsProps) {
|
||||||
const { colors } = useConceptOptions();
|
const { colors } = useConceptOptions();
|
||||||
|
|
||||||
const [leftCst, setLeftCst] = useState<IConstituenta | undefined>(undefined);
|
const [leftCst, setLeftCst] = useState<IConstituenta | undefined>(undefined);
|
||||||
|
@ -123,7 +123,7 @@ function SubstitutionsPicker({
|
||||||
header: 'Имя',
|
header: 'Имя',
|
||||||
size: 65,
|
size: 65,
|
||||||
cell: props => (
|
cell: props => (
|
||||||
<ConstituentaBadge theme={colors} value={props.row.original.leftCst} prefixID={`${prefixID}_1_`} />
|
<BadgeConstituenta theme={colors} value={props.row.original.leftCst} prefixID={`${prefixID}_1_`} />
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
columnHelper.display({
|
columnHelper.display({
|
||||||
|
@ -137,7 +137,7 @@ function SubstitutionsPicker({
|
||||||
header: 'Имя',
|
header: 'Имя',
|
||||||
size: 65,
|
size: 65,
|
||||||
cell: props => (
|
cell: props => (
|
||||||
<ConstituentaBadge theme={colors} value={props.row.original.rightCst} prefixID={`${prefixID}_2_`} />
|
<BadgeConstituenta theme={colors} value={props.row.original.rightCst} prefixID={`${prefixID}_2_`} />
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
columnHelper.accessor(item => describeConstituenta(item.rightCst), {
|
columnHelper.accessor(item => describeConstituenta(item.rightCst), {
|
||||||
|
@ -194,7 +194,7 @@ function SubstitutionsPicker({
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ConstituentaSelector
|
<SelectConstituenta
|
||||||
items={schema1?.items.filter(cst => !filter1 || filter1(cst))}
|
items={schema1?.items.filter(cst => !filter1 || filter1(cst))}
|
||||||
value={leftCst}
|
value={leftCst}
|
||||||
onSelectValue={setLeftCst}
|
onSelectValue={setLeftCst}
|
||||||
|
@ -240,7 +240,7 @@ function SubstitutionsPicker({
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ConstituentaSelector
|
<SelectConstituenta
|
||||||
items={schema2?.items.filter(cst => !filter2 || filter2(cst))}
|
items={schema2?.items.filter(cst => !filter2 || filter2(cst))}
|
||||||
value={rightCst}
|
value={rightCst}
|
||||||
onSelectValue={setRightCst}
|
onSelectValue={setRightCst}
|
||||||
|
@ -269,4 +269,4 @@ function SubstitutionsPicker({
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default SubstitutionsPicker;
|
export default PickSubstitutions;
|
|
@ -11,13 +11,13 @@ import { describeConstituenta, describeConstituentaTerm } from '@/utils/labels';
|
||||||
import { CProps } from '../props';
|
import { CProps } from '../props';
|
||||||
import SelectSingle from '../ui/SelectSingle';
|
import SelectSingle from '../ui/SelectSingle';
|
||||||
|
|
||||||
interface ConstituentaSelectorProps extends CProps.Styling {
|
interface SelectConstituentaProps extends CProps.Styling {
|
||||||
items?: IConstituenta[];
|
items?: IConstituenta[];
|
||||||
value?: IConstituenta;
|
value?: IConstituenta;
|
||||||
onSelectValue: (newValue?: IConstituenta) => void;
|
onSelectValue: (newValue?: IConstituenta) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
function ConstituentaSelector({ className, items, value, onSelectValue, ...restProps }: ConstituentaSelectorProps) {
|
function SelectConstituenta({ className, items, value, onSelectValue, ...restProps }: SelectConstituentaProps) {
|
||||||
const options = useMemo(() => {
|
const options = useMemo(() => {
|
||||||
return (
|
return (
|
||||||
items?.map(cst => ({
|
items?.map(cst => ({
|
||||||
|
@ -48,4 +48,4 @@ function ConstituentaSelector({ className, items, value, onSelectValue, ...restP
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default ConstituentaSelector;
|
export default SelectConstituenta;
|
|
@ -9,14 +9,14 @@ import { labelVersion } from '@/utils/labels';
|
||||||
import { CProps } from '../props';
|
import { CProps } from '../props';
|
||||||
import SelectSingle from '../ui/SelectSingle';
|
import SelectSingle from '../ui/SelectSingle';
|
||||||
|
|
||||||
interface VersionSelectorProps extends CProps.Styling {
|
interface SelectVersionProps extends CProps.Styling {
|
||||||
id?: string;
|
id?: string;
|
||||||
items?: IVersionInfo[];
|
items?: IVersionInfo[];
|
||||||
value?: number;
|
value?: number;
|
||||||
onSelectValue: (newValue?: number) => void;
|
onSelectValue: (newValue?: number) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
function VersionSelector({ id, className, items, value, onSelectValue, ...restProps }: VersionSelectorProps) {
|
function SelectVersion({ id, className, items, value, onSelectValue, ...restProps }: SelectVersionProps) {
|
||||||
const options = useMemo(() => {
|
const options = useMemo(() => {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
|
@ -46,4 +46,4 @@ function VersionSelector({ id, className, items, value, onSelectValue, ...restPr
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default VersionSelector;
|
export default SelectVersion;
|
|
@ -6,7 +6,7 @@ import { useCallback, useEffect, useMemo, useState } from 'react';
|
||||||
|
|
||||||
import { IconAccept, IconRemove, IconReset } from '@/components/Icons';
|
import { IconAccept, IconRemove, IconReset } from '@/components/Icons';
|
||||||
import RSInput from '@/components/RSInput';
|
import RSInput from '@/components/RSInput';
|
||||||
import ConstituentaPicker from '@/components/select/ConstituentaPicker';
|
import PickConstituenta from '@/components/select/PickConstituenta';
|
||||||
import DataTable, { IConditionalStyle } from '@/components/ui/DataTable';
|
import DataTable, { IConditionalStyle } from '@/components/ui/DataTable';
|
||||||
import MiniButton from '@/components/ui/MiniButton';
|
import MiniButton from '@/components/ui/MiniButton';
|
||||||
import AnimateFade from '@/components/wrap/AnimateFade';
|
import AnimateFade from '@/components/wrap/AnimateFade';
|
||||||
|
@ -204,7 +204,7 @@ function ArgumentsTab({ state, schema, partialUpdate }: ArgumentsTabProps) {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ConstituentaPicker
|
<PickConstituenta
|
||||||
id='dlg_argument_picker'
|
id='dlg_argument_picker'
|
||||||
value={selectedCst}
|
value={selectedCst}
|
||||||
data={schema?.items}
|
data={schema?.items}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import clsx from 'clsx';
|
||||||
import { useLayoutEffect, useMemo, useState } from 'react';
|
import { useLayoutEffect, useMemo, useState } from 'react';
|
||||||
import { TabList, TabPanel, Tabs } from 'react-tabs';
|
import { TabList, TabPanel, Tabs } from 'react-tabs';
|
||||||
|
|
||||||
import BadgeHelp from '@/components/man/BadgeHelp';
|
import BadgeHelp from '@/components/info/BadgeHelp';
|
||||||
import Modal, { ModalProps } from '@/components/ui/Modal';
|
import Modal, { ModalProps } from '@/components/ui/Modal';
|
||||||
import Overlay from '@/components/ui/Overlay';
|
import Overlay from '@/components/ui/Overlay';
|
||||||
import TabLabel from '@/components/ui/TabLabel';
|
import TabLabel from '@/components/ui/TabLabel';
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
import { Dispatch, useEffect, useMemo, useState } from 'react';
|
import { Dispatch, useEffect, useMemo, useState } from 'react';
|
||||||
|
|
||||||
import RSInput from '@/components/RSInput';
|
import RSInput from '@/components/RSInput';
|
||||||
import ConstituentaPicker from '@/components/select/ConstituentaPicker';
|
import PickConstituenta from '@/components/select/PickConstituenta';
|
||||||
import SelectSingle from '@/components/ui/SelectSingle';
|
import SelectSingle from '@/components/ui/SelectSingle';
|
||||||
import TextArea from '@/components/ui/TextArea';
|
import TextArea from '@/components/ui/TextArea';
|
||||||
import AnimateFade from '@/components/wrap/AnimateFade';
|
import AnimateFade from '@/components/wrap/AnimateFade';
|
||||||
|
@ -116,7 +116,7 @@ function TemplateTab({ state, partialUpdate }: TemplateTabProps) {
|
||||||
onChange={data => partialUpdate({ templateID: data ? data.value : undefined })}
|
onChange={data => partialUpdate({ templateID: data ? data.value : undefined })}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<ConstituentaPicker
|
<PickConstituenta
|
||||||
id='dlg_template_picker'
|
id='dlg_template_picker'
|
||||||
value={state.prototype}
|
value={state.prototype}
|
||||||
data={filteredData}
|
data={filteredData}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
import { AnimatePresence } from 'framer-motion';
|
import { AnimatePresence } from 'framer-motion';
|
||||||
import { useLayoutEffect, useMemo, useState } from 'react';
|
import { useLayoutEffect, useMemo, useState } from 'react';
|
||||||
|
|
||||||
import BadgeHelp from '@/components/man/BadgeHelp';
|
import BadgeHelp from '@/components/info/BadgeHelp';
|
||||||
import RSInput from '@/components/RSInput';
|
import RSInput from '@/components/RSInput';
|
||||||
import SelectSingle from '@/components/ui/SelectSingle';
|
import SelectSingle from '@/components/ui/SelectSingle';
|
||||||
import TextArea from '@/components/ui/TextArea';
|
import TextArea from '@/components/ui/TextArea';
|
||||||
|
|
|
@ -4,7 +4,7 @@ import clsx from 'clsx';
|
||||||
import { useMemo, useState } from 'react';
|
import { useMemo, useState } from 'react';
|
||||||
import { TabList, TabPanel, Tabs } from 'react-tabs';
|
import { TabList, TabPanel, Tabs } from 'react-tabs';
|
||||||
|
|
||||||
import BadgeHelp from '@/components/man/BadgeHelp';
|
import BadgeHelp from '@/components/info/BadgeHelp';
|
||||||
import Modal from '@/components/ui/Modal';
|
import Modal from '@/components/ui/Modal';
|
||||||
import Overlay from '@/components/ui/Overlay';
|
import Overlay from '@/components/ui/Overlay';
|
||||||
import TabLabel from '@/components/ui/TabLabel';
|
import TabLabel from '@/components/ui/TabLabel';
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
import { useEffect, useLayoutEffect, useState } from 'react';
|
import { useEffect, useLayoutEffect, useState } from 'react';
|
||||||
|
|
||||||
import ConstituentaPicker from '@/components/select/ConstituentaPicker';
|
import PickConstituenta from '@/components/select/PickConstituenta';
|
||||||
import SelectGrammeme from '@/components/select/SelectGrammeme';
|
import SelectGrammeme from '@/components/select/SelectGrammeme';
|
||||||
import Label from '@/components/ui/Label';
|
import Label from '@/components/ui/Label';
|
||||||
import TextInput from '@/components/ui/TextInput';
|
import TextInput from '@/components/ui/TextInput';
|
||||||
|
@ -60,7 +60,7 @@ function EntityTab({ initial, schema, setIsValid, setReference }: EntityTabProps
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<AnimateFade className='cc-column'>
|
<AnimateFade className='cc-column'>
|
||||||
<ConstituentaPicker
|
<PickConstituenta
|
||||||
id='dlg_reference_entity_picker'
|
id='dlg_reference_entity_picker'
|
||||||
initialFilter={initial.text}
|
initialFilter={initial.text}
|
||||||
value={selectedCst}
|
value={selectedCst}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import clsx from 'clsx';
|
||||||
import { useLayoutEffect, useState } from 'react';
|
import { useLayoutEffect, useState } from 'react';
|
||||||
|
|
||||||
import { IconAccept, IconMoveDown, IconMoveLeft, IconMoveRight, IconRemove } from '@/components/Icons';
|
import { IconAccept, IconMoveDown, IconMoveLeft, IconMoveRight, IconRemove } from '@/components/Icons';
|
||||||
import BadgeHelp from '@/components/man/BadgeHelp';
|
import BadgeHelp from '@/components/info/BadgeHelp';
|
||||||
import SelectGrammeme from '@/components/select/SelectGrammeme';
|
import SelectGrammeme from '@/components/select/SelectGrammeme';
|
||||||
import Label from '@/components/ui/Label';
|
import Label from '@/components/ui/Label';
|
||||||
import MiniButton from '@/components/ui/MiniButton';
|
import MiniButton from '@/components/ui/MiniButton';
|
||||||
|
|
|
@ -4,7 +4,7 @@ import clsx from 'clsx';
|
||||||
import { useCallback, useMemo } from 'react';
|
import { useCallback, useMemo } from 'react';
|
||||||
|
|
||||||
import { IconRemove } from '@/components/Icons';
|
import { IconRemove } from '@/components/Icons';
|
||||||
import WordFormBadge from '@/components/info/WordFormBadge';
|
import BadgeWordForm from '@/components/info/BadgeWordForm';
|
||||||
import DataTable, { createColumnHelper } from '@/components/ui/DataTable';
|
import DataTable, { createColumnHelper } from '@/components/ui/DataTable';
|
||||||
import MiniButton from '@/components/ui/MiniButton';
|
import MiniButton from '@/components/ui/MiniButton';
|
||||||
import { IWordForm } from '@/models/language';
|
import { IWordForm } from '@/models/language';
|
||||||
|
@ -45,7 +45,7 @@ function WordFormsTable({ forms, setForms, onFormSelect }: WordFormsTableProps)
|
||||||
columnHelper.accessor('grams', {
|
columnHelper.accessor('grams', {
|
||||||
id: 'grams',
|
id: 'grams',
|
||||||
maxSize: 150,
|
maxSize: 150,
|
||||||
cell: props => <WordFormBadge keyPrefix={props.cell.id} form={props.row.original} />
|
cell: props => <BadgeWordForm keyPrefix={props.cell.id} form={props.row.original} />
|
||||||
}),
|
}),
|
||||||
columnHelper.display({
|
columnHelper.display({
|
||||||
id: 'actions',
|
id: 'actions',
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import { ErrorData } from '@/components/info/InfoError';
|
import { ErrorData } from '@/components/info/InfoError';
|
||||||
import ConstituentaMultiPicker from '@/components/select/ConstituentaMultiPicker';
|
import PickMultiConstituenta from '@/components/select/PickMultiConstituenta';
|
||||||
import DataLoader from '@/components/wrap/DataLoader';
|
import DataLoader from '@/components/wrap/DataLoader';
|
||||||
import { ConstituentaID, IRSForm } from '@/models/rsform';
|
import { ConstituentaID, IRSForm } from '@/models/rsform';
|
||||||
import { prefixes } from '@/utils/constants';
|
import { prefixes } from '@/utils/constants';
|
||||||
|
@ -17,7 +17,7 @@ interface ConstituentsTabProps {
|
||||||
function ConstituentsTab({ schema, error, loading, selected, setSelected }: ConstituentsTabProps) {
|
function ConstituentsTab({ schema, error, loading, selected, setSelected }: ConstituentsTabProps) {
|
||||||
return (
|
return (
|
||||||
<DataLoader id='dlg-constituents-tab' isLoading={loading} error={error} hasNoData={!schema}>
|
<DataLoader id='dlg-constituents-tab' isLoading={loading} error={error} hasNoData={!schema}>
|
||||||
<ConstituentaMultiPicker
|
<PickMultiConstituenta
|
||||||
schema={schema}
|
schema={schema}
|
||||||
rows={14}
|
rows={14}
|
||||||
prefixID={prefixes.cst_inline_synth_list}
|
prefixID={prefixes.cst_inline_synth_list}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
import SchemaPicker from '@/components/select/SchemaPicker';
|
import PickSchema from '@/components/select/PickSchema';
|
||||||
import TextInput from '@/components/ui/TextInput';
|
import TextInput from '@/components/ui/TextInput';
|
||||||
import AnimateFade from '@/components/wrap/AnimateFade';
|
import AnimateFade from '@/components/wrap/AnimateFade';
|
||||||
import { useLibrary } from '@/context/LibraryContext';
|
import { useLibrary } from '@/context/LibraryContext';
|
||||||
|
@ -31,7 +31,7 @@ function SchemaTab({ selected, setSelected }: SchemaTabProps) {
|
||||||
dense
|
dense
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<SchemaPicker
|
<PickSchema
|
||||||
id='dlg_schema_picker' // prettier: split lines
|
id='dlg_schema_picker' // prettier: split lines
|
||||||
rows={15}
|
rows={15}
|
||||||
value={selected}
|
value={selected}
|
||||||
|
|
|
@ -5,7 +5,7 @@ import DataLoader from '@/components/wrap/DataLoader';
|
||||||
import { ConstituentaID, IRSForm, ISubstitution } from '@/models/rsform';
|
import { ConstituentaID, IRSForm, ISubstitution } from '@/models/rsform';
|
||||||
import { prefixes } from '@/utils/constants';
|
import { prefixes } from '@/utils/constants';
|
||||||
|
|
||||||
import SubstitutionsPicker from '../../components/select/SubstitutionsPicker';
|
import PickSubstitutions from '../../components/select/PickSubstitutions';
|
||||||
|
|
||||||
interface SubstitutionsTabProps {
|
interface SubstitutionsTabProps {
|
||||||
receiver?: IRSForm;
|
receiver?: IRSForm;
|
||||||
|
@ -32,7 +32,7 @@ function SubstitutionsTab({
|
||||||
}: SubstitutionsTabProps) {
|
}: SubstitutionsTabProps) {
|
||||||
return (
|
return (
|
||||||
<DataLoader id='dlg-substitutions-tab' className='cc-column' isLoading={loading} error={error} hasNoData={!source}>
|
<DataLoader id='dlg-substitutions-tab' className='cc-column' isLoading={loading} error={error} hasNoData={!source}>
|
||||||
<SubstitutionsPicker
|
<PickSubstitutions
|
||||||
items={substitutions}
|
items={substitutions}
|
||||||
setItems={setSubstitutions}
|
setItems={setSubstitutions}
|
||||||
rows={10}
|
rows={10}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import { useLayoutEffect, useState } from 'react';
|
import { useLayoutEffect, useState } from 'react';
|
||||||
|
|
||||||
import BadgeHelp from '@/components/man/BadgeHelp';
|
import BadgeHelp from '@/components/info/BadgeHelp';
|
||||||
import Modal, { ModalProps } from '@/components/ui/Modal';
|
import Modal, { ModalProps } from '@/components/ui/Modal';
|
||||||
import SelectSingle from '@/components/ui/SelectSingle';
|
import SelectSingle from '@/components/ui/SelectSingle';
|
||||||
import TextInput from '@/components/ui/TextInput';
|
import TextInput from '@/components/ui/TextInput';
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import { useMemo, useState } from 'react';
|
import { useMemo, useState } from 'react';
|
||||||
|
|
||||||
import SubstitutionsPicker from '@/components/select/SubstitutionsPicker';
|
import PickSubstitutions from '@/components/select/PickSubstitutions';
|
||||||
import Modal, { ModalProps } from '@/components/ui/Modal';
|
import Modal, { ModalProps } from '@/components/ui/Modal';
|
||||||
import { useRSForm } from '@/context/RSFormContext';
|
import { useRSForm } from '@/context/RSFormContext';
|
||||||
import { ICstSubstituteData, ISubstitution } from '@/models/rsform';
|
import { ICstSubstituteData, ISubstitution } from '@/models/rsform';
|
||||||
|
@ -41,7 +41,7 @@ function DlgSubstituteCst({ hideWindow, onSubstitute }: DlgSubstituteCstProps) {
|
||||||
onSubmit={handleSubmit}
|
onSubmit={handleSubmit}
|
||||||
className={clsx('w-[40rem]', 'px-6 pb-3')}
|
className={clsx('w-[40rem]', 'px-6 pb-3')}
|
||||||
>
|
>
|
||||||
<SubstitutionsPicker
|
<PickSubstitutions
|
||||||
items={substitutions}
|
items={substitutions}
|
||||||
setItems={setSubstitutions}
|
setItems={setSubstitutions}
|
||||||
rows={6}
|
rows={6}
|
||||||
|
|
|
@ -46,10 +46,12 @@ export enum HelpTopic {
|
||||||
|
|
||||||
INTERFACE = 'user-interface',
|
INTERFACE = 'user-interface',
|
||||||
UI_LIBRARY = 'ui-library',
|
UI_LIBRARY = 'ui-library',
|
||||||
|
UI_RS_MENU = 'ui-rsform-menu',
|
||||||
UI_RS_CARD = 'ui-rsform-card',
|
UI_RS_CARD = 'ui-rsform-card',
|
||||||
UI_RS_LIST = 'ui-rsform-list',
|
UI_RS_LIST = 'ui-rsform-list',
|
||||||
UI_RS_EDITOR = 'ui-rsform-editor',
|
UI_RS_EDITOR = 'ui-rsform-editor',
|
||||||
UI_GRAPH_TERM = 'ui-rsform-graph',
|
UI_GRAPH_TERM = 'ui-graph-term',
|
||||||
|
UI_FORMULA_TREE = 'ui-formula-tree',
|
||||||
UI_CST_STATUS = 'ui-rsform-cst-status',
|
UI_CST_STATUS = 'ui-rsform-cst-status',
|
||||||
UI_CST_CLASS = 'ui-rsform-cst-class',
|
UI_CST_CLASS = 'ui-rsform-cst-class',
|
||||||
|
|
||||||
|
@ -57,6 +59,7 @@ export enum HelpTopic {
|
||||||
CC_SYSTEM = 'rslang-rsform',
|
CC_SYSTEM = 'rslang-rsform',
|
||||||
CC_CONSTITUENTA = 'rslang-cst',
|
CC_CONSTITUENTA = 'rslang-cst',
|
||||||
CC_RELATIONS = 'rslang-relations',
|
CC_RELATIONS = 'rslang-relations',
|
||||||
|
CC_SYNTHESIS = 'rslang-synthesis',
|
||||||
|
|
||||||
RSLANG = 'rslang',
|
RSLANG = 'rslang',
|
||||||
RSL_TYPES = 'rslang-types',
|
RSL_TYPES = 'rslang-types',
|
||||||
|
@ -80,10 +83,12 @@ export const topicParent: Map<HelpTopic, HelpTopic> = new Map([
|
||||||
|
|
||||||
[HelpTopic.INTERFACE, HelpTopic.INTERFACE],
|
[HelpTopic.INTERFACE, HelpTopic.INTERFACE],
|
||||||
[HelpTopic.UI_LIBRARY, HelpTopic.INTERFACE],
|
[HelpTopic.UI_LIBRARY, HelpTopic.INTERFACE],
|
||||||
|
[HelpTopic.UI_RS_MENU, HelpTopic.INTERFACE],
|
||||||
[HelpTopic.UI_RS_CARD, HelpTopic.INTERFACE],
|
[HelpTopic.UI_RS_CARD, HelpTopic.INTERFACE],
|
||||||
[HelpTopic.UI_RS_LIST, HelpTopic.INTERFACE],
|
[HelpTopic.UI_RS_LIST, HelpTopic.INTERFACE],
|
||||||
[HelpTopic.UI_RS_EDITOR, HelpTopic.INTERFACE],
|
[HelpTopic.UI_RS_EDITOR, HelpTopic.INTERFACE],
|
||||||
[HelpTopic.UI_GRAPH_TERM, HelpTopic.INTERFACE],
|
[HelpTopic.UI_GRAPH_TERM, HelpTopic.INTERFACE],
|
||||||
|
[HelpTopic.UI_FORMULA_TREE, HelpTopic.INTERFACE],
|
||||||
[HelpTopic.UI_CST_STATUS, HelpTopic.INTERFACE],
|
[HelpTopic.UI_CST_STATUS, HelpTopic.INTERFACE],
|
||||||
[HelpTopic.UI_CST_CLASS, HelpTopic.INTERFACE],
|
[HelpTopic.UI_CST_CLASS, HelpTopic.INTERFACE],
|
||||||
|
|
||||||
|
@ -91,6 +96,7 @@ export const topicParent: Map<HelpTopic, HelpTopic> = new Map([
|
||||||
[HelpTopic.CC_SYSTEM, HelpTopic.CONCEPTUAL],
|
[HelpTopic.CC_SYSTEM, HelpTopic.CONCEPTUAL],
|
||||||
[HelpTopic.CC_CONSTITUENTA, HelpTopic.CONCEPTUAL],
|
[HelpTopic.CC_CONSTITUENTA, HelpTopic.CONCEPTUAL],
|
||||||
[HelpTopic.CC_RELATIONS, HelpTopic.CONCEPTUAL],
|
[HelpTopic.CC_RELATIONS, HelpTopic.CONCEPTUAL],
|
||||||
|
[HelpTopic.CC_SYNTHESIS, HelpTopic.CONCEPTUAL],
|
||||||
|
|
||||||
[HelpTopic.RSLANG, HelpTopic.RSLANG],
|
[HelpTopic.RSLANG, HelpTopic.RSLANG],
|
||||||
[HelpTopic.RSL_TYPES, HelpTopic.RSLANG],
|
[HelpTopic.RSL_TYPES, HelpTopic.RSLANG],
|
||||||
|
|
|
@ -5,7 +5,7 @@ import { useLayoutEffect, useMemo, useState } from 'react';
|
||||||
import { useIntl } from 'react-intl';
|
import { useIntl } from 'react-intl';
|
||||||
|
|
||||||
import { urls } from '@/app/urls';
|
import { urls } from '@/app/urls';
|
||||||
import BadgeHelp from '@/components/man/BadgeHelp';
|
import BadgeHelp from '@/components/info/BadgeHelp';
|
||||||
import { CProps } from '@/components/props';
|
import { CProps } from '@/components/props';
|
||||||
import DataTable, { createColumnHelper, VisibilityState } from '@/components/ui/DataTable';
|
import DataTable, { createColumnHelper, VisibilityState } from '@/components/ui/DataTable';
|
||||||
import FlexColumn from '@/components/ui/FlexColumn';
|
import FlexColumn from '@/components/ui/FlexColumn';
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { HelpTopic } from '@/models/miscellaneous';
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
import { describeHelpTopic, labelHelpTopic } from '@/utils/labels';
|
import { describeHelpTopic, labelHelpTopic } from '@/utils/labels';
|
||||||
|
|
||||||
import LinkTopic from '../ui/LinkTopic';
|
import LinkTopic from '../../components/ui/LinkTopic';
|
||||||
|
|
||||||
interface TopicItemProps {
|
interface TopicItemProps {
|
||||||
topic: HelpTopic;
|
topic: HelpTopic;
|
70
rsconcept/frontend/src/pages/ManualsPage/TopicPage.tsx
Normal file
70
rsconcept/frontend/src/pages/ManualsPage/TopicPage.tsx
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
|
|
||||||
|
import HelpAPI from './items/HelpAPI';
|
||||||
|
import HelpConcept from './items/HelpConcept';
|
||||||
|
import HelpConceptRelations from './items/HelpConceptRelations';
|
||||||
|
import HelpConceptSynthesis from './items/HelpConceptSynthesis';
|
||||||
|
import HelpConceptSystem from './items/HelpConceptSystem';
|
||||||
|
import HelpCstAttributes from './items/HelpCstAttributes';
|
||||||
|
import HelpCstClass from './items/HelpCstClass';
|
||||||
|
import HelpCstEditor from './items/HelpCstEditor';
|
||||||
|
import HelpCstStatus from './items/HelpCstStatus';
|
||||||
|
import HelpExteor from './items/HelpExteor';
|
||||||
|
import HelpFormulaTree from './items/HelpFormulaTree';
|
||||||
|
import HelpInterface from './items/HelpInterface';
|
||||||
|
import HelpLibrary from './items/HelpLibrary';
|
||||||
|
import HelpMain from './items/HelpMain';
|
||||||
|
import HelpPrivacy from './items/HelpPrivacy';
|
||||||
|
import HelpRSFormItems from './items/HelpRSFormItems';
|
||||||
|
import HelpRSFormMenu from './items/HelpRSFormMenu';
|
||||||
|
import HelpRSFormMeta from './items/HelpRSFormMeta';
|
||||||
|
import HelpRSLang from './items/HelpRSLang';
|
||||||
|
import HelpRSLangCorrect from './items/HelpRSLangCorrect';
|
||||||
|
import HelpRSLangInterpret from './items/HelpRSLangInterpret';
|
||||||
|
import HelpRSLangOperations from './items/HelpRSLangOperations';
|
||||||
|
import HelpRSLangTypes from './items/HelpRSLangTypes';
|
||||||
|
import HelpRSTemplates from './items/HelpRSTemplates';
|
||||||
|
import HelpTermGraph from './items/HelpTermGraph';
|
||||||
|
import HelpTerminologyControl from './items/HelpTerminologyControl';
|
||||||
|
import HelpVersions from './items/HelpVersions';
|
||||||
|
|
||||||
|
interface TopicPageProps {
|
||||||
|
topic: HelpTopic;
|
||||||
|
}
|
||||||
|
|
||||||
|
function TopicPage({ topic }: TopicPageProps) {
|
||||||
|
if (topic === HelpTopic.MAIN) return <HelpMain />;
|
||||||
|
|
||||||
|
if (topic === HelpTopic.INTERFACE) return <HelpInterface />;
|
||||||
|
if (topic === HelpTopic.UI_LIBRARY) return <HelpLibrary />;
|
||||||
|
if (topic === HelpTopic.UI_RS_MENU) return <HelpRSFormMenu />;
|
||||||
|
if (topic === HelpTopic.UI_RS_CARD) return <HelpRSFormMeta />;
|
||||||
|
if (topic === HelpTopic.UI_RS_LIST) return <HelpRSFormItems />;
|
||||||
|
if (topic === HelpTopic.UI_RS_EDITOR) return <HelpCstEditor />;
|
||||||
|
if (topic === HelpTopic.UI_GRAPH_TERM) return <HelpTermGraph />;
|
||||||
|
if (topic === HelpTopic.UI_FORMULA_TREE) return <HelpFormulaTree />;
|
||||||
|
if (topic === HelpTopic.UI_CST_STATUS) return <HelpCstStatus />;
|
||||||
|
if (topic === HelpTopic.UI_CST_CLASS) return <HelpCstClass />;
|
||||||
|
|
||||||
|
if (topic === HelpTopic.CONCEPTUAL) return <HelpConcept />;
|
||||||
|
if (topic === HelpTopic.CC_SYSTEM) return <HelpConceptSystem />;
|
||||||
|
if (topic === HelpTopic.CC_CONSTITUENTA) return <HelpCstAttributes />;
|
||||||
|
if (topic === HelpTopic.CC_RELATIONS) return <HelpConceptRelations />;
|
||||||
|
if (topic === HelpTopic.CC_SYNTHESIS) return <HelpConceptSynthesis />;
|
||||||
|
|
||||||
|
if (topic === HelpTopic.RSLANG) return <HelpRSLang />;
|
||||||
|
if (topic === HelpTopic.RSL_TYPES) return <HelpRSLangTypes />;
|
||||||
|
if (topic === HelpTopic.RSL_CORRECT) return <HelpRSLangCorrect />;
|
||||||
|
if (topic === HelpTopic.RSL_INTERPRET) return <HelpRSLangInterpret />;
|
||||||
|
if (topic === HelpTopic.RSL_OPERATIONS) return <HelpRSLangOperations />;
|
||||||
|
if (topic === HelpTopic.RSL_TEMPLATES) return <HelpRSTemplates />;
|
||||||
|
|
||||||
|
if (topic === HelpTopic.TERM_CONTROL) return <HelpTerminologyControl />;
|
||||||
|
if (topic === HelpTopic.VERSIONS) return <HelpVersions />;
|
||||||
|
if (topic === HelpTopic.EXTEOR) return <HelpExteor />;
|
||||||
|
if (topic === HelpTopic.API) return <HelpAPI />;
|
||||||
|
if (topic === HelpTopic.PRIVACY) return <HelpPrivacy />;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default TopicPage;
|
|
@ -1,4 +1,4 @@
|
||||||
import InfoTopic from '@/components/info/InfoTopic';
|
import TopicPage from '@/pages/ManualsPage/TopicPage';
|
||||||
import AnimateFade from '@/components/wrap/AnimateFade';
|
import AnimateFade from '@/components/wrap/AnimateFade';
|
||||||
import { HelpTopic } from '@/models/miscellaneous';
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ interface ViewTopicProps {
|
||||||
function ViewTopic({ topic }: ViewTopicProps) {
|
function ViewTopic({ topic }: ViewTopicProps) {
|
||||||
return (
|
return (
|
||||||
<AnimateFade key={topic} className='py-2 pl-6 pr-3 mx-auto'>
|
<AnimateFade key={topic} className='py-2 pl-6 pr-3 mx-auto'>
|
||||||
<InfoTopic topic={topic} />
|
<TopicPage topic={topic} />
|
||||||
</AnimateFade>
|
</AnimateFade>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
import TextURL from '@/components/ui/TextURL';
|
||||||
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
|
import { external_urls } from '@/utils/constants';
|
||||||
|
|
||||||
|
import Subtopics from '../Subtopics';
|
||||||
|
|
||||||
|
function HelpConceptSystem() {
|
||||||
|
return (
|
||||||
|
<div className='text-justify'>
|
||||||
|
<h1>Концептуализация</h1>
|
||||||
|
<p>
|
||||||
|
Сложные предметные области требуют применения специальных подходов к их пониманию и описанию.{' '}
|
||||||
|
<b>Системный подход</b> заключается в установлении границы системы, выделении отдельных подсистем и установления
|
||||||
|
связей между ними. Подсистемы описываются раздельно. Далее их описания синтезируются с учетом установленных
|
||||||
|
связей. Таким образом формируется описания системы в целом через описания ее частей
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<b>Концептуализация</b> заключается в дедуктивном построении концептуальных схем (систем определений),
|
||||||
|
описывающих содержательные отношения в рамках каждой подсистемы. Концептуальные схемы могут быть синтезированы
|
||||||
|
для получения общей системы определений в выбранной предметной области.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Концептуализация применяется в условиях поставленной задачи в рамках предметной области. Решаемая прикладная
|
||||||
|
проблема позволяет определить границы концептуализации и разумно распределить ресурсы.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
В ходе многократной концептуализации и решения с помощью построенных концептуальных схем прикладных задач
|
||||||
|
формируется навык <b>Концептуального мышления</b>. Это особый способ мышления, при котором строго контролируются
|
||||||
|
используемые определения и предположения, в которых происходит описание предметного содержания.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Более подробно Концептуализация описана в{' '}
|
||||||
|
<TextURL text='сборнике лекций Кучкарова З.А.' href={external_urls.zak_lectures} />
|
||||||
|
<br />
|
||||||
|
Методы концептуального анализа и синтеза в теоретическом исследовании и проектировании социально-экономических
|
||||||
|
систем : Учебное пособие. / З.А. Кучкаров. — М: Концепт, 2008. — 3-е издание, дополненное и исправленное.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<Subtopics headTopic={HelpTopic.CONCEPTUAL} />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HelpConceptSystem;
|
|
@ -0,0 +1,10 @@
|
||||||
|
function HelpConceptSynthesis() {
|
||||||
|
// prettier-ignore
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>Синтез концептуальных схем</h1>
|
||||||
|
<p>TBD.</p>
|
||||||
|
</div>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HelpConceptSynthesis;
|
|
@ -0,0 +1,15 @@
|
||||||
|
function HelpConceptSystem() {
|
||||||
|
// prettier-ignore
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>Концептуальная схема – Система определений</h1>
|
||||||
|
<p>Теория и модель предметной области</p>
|
||||||
|
<li>Базовые и неопределяемые</li>
|
||||||
|
<li>Неопределяемые и производные</li>
|
||||||
|
<li>Утверждения и определения</li>
|
||||||
|
<li>Ядро</li>
|
||||||
|
<li>Разворачивание термов</li>
|
||||||
|
</div>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HelpConceptSystem;
|
|
@ -0,0 +1,69 @@
|
||||||
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
|
|
||||||
|
import LinkTopic from '../../../components/ui/LinkTopic';
|
||||||
|
|
||||||
|
function HelpCstAttributes() {
|
||||||
|
return (
|
||||||
|
<div className='dense'>
|
||||||
|
<h1>Атрибуты конституенты</h1>
|
||||||
|
<p>
|
||||||
|
<b>Термин</b> может быть присвоен любой конституенте. Он используется в других Терминах и в Текстовых
|
||||||
|
определениях
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<b>Формальное определение</b> строится с помощью формального аппарата{' '}
|
||||||
|
<LinkTopic text='родоструктурной экспликации' topic={HelpTopic.RSLANG} />
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<b>Типизация</b> вычисляется автоматически на основе Формального определения и отражает структуру элементов
|
||||||
|
множества, задаваемого этим определением
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<b>Текстовое определение</b> предоставляется для конституент, имеющих Формальное определение или Область
|
||||||
|
определения. Это текстовая интерпретация формального определения и строится из связующих слов, терминов теории
|
||||||
|
множеств и отсылок на термины ранее введенных конституент
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<b>Конвенция</b> – это соглашение о соотнесении неопределенного понятия с сущностями в предметной области
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<b>Комментарий</b> может быть добавлен к любому производному понятию для хранения дополнительной информации
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Неопределяемые понятия</h2>
|
||||||
|
<p>
|
||||||
|
<b>X1, C1</b> – Базисные множества и Константные множества не обладают сложной структурой и определяются
|
||||||
|
Конвенцией. Элементы Константных множеств участвуют в арифметических операциях и порядковых предикатах наряду с
|
||||||
|
мощностями множеств
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<b>S1 :∈ ℬ(X1)</b> – Родовые структуры задаются совокупностью Области определения, Конвенции и набора Аксиом, а
|
||||||
|
также Термином. Согласно Конвенции элементы родовой структуры заполняются из Области определения так, чтобы
|
||||||
|
Аксиомы были выполнены. Родовая структура может быть как множеством, так и элементом или кортежем
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<b>A1 :== ∀(α,β)∈S1 (β,α)∈S1</b> – Аксиомы задаются логическим Формальным определением и по необходимости
|
||||||
|
Конвенцией
|
||||||
|
</p>
|
||||||
|
<h2>Производные понятия</h2>
|
||||||
|
<p>
|
||||||
|
<b>D1 :== Pr1(S1)</b> – Термы задаются типизированным Формальным определением
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<b>T1 :== Pr1(S1)=Pr2(S1)</b> – Теоремы определяются логическим Формальным определением
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<b>F1 :== [σ∈ℬ(X1×X1)] Pr1(σ)\Pr2(σ)</b>
|
||||||
|
<br />
|
||||||
|
Терм-функции определяются параметризованным типизированным Формальным определением
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<b>P1 :== [σ∈ℬ(X1×X1)] card(Pr1(σ)) = card(σ)</b>
|
||||||
|
<br />
|
||||||
|
Предикат-функции определяются параметризованным логическим Формальным определением
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HelpCstAttributes;
|
|
@ -1,6 +1,14 @@
|
||||||
import { useConceptOptions } from '@/context/OptionsContext';
|
import { useConceptOptions } from '@/context/OptionsContext';
|
||||||
|
|
||||||
import { IconControls, IconEdit, IconList, IconSave, IconStatusOK, IconText, IconTree } from '../Icons';
|
import {
|
||||||
|
IconControls,
|
||||||
|
IconEdit,
|
||||||
|
IconList,
|
||||||
|
IconSave,
|
||||||
|
IconStatusOK,
|
||||||
|
IconText,
|
||||||
|
IconTree
|
||||||
|
} from '../../../components/Icons';
|
||||||
|
|
||||||
function HelpCstEditor() {
|
function HelpCstEditor() {
|
||||||
const { colors } = useConceptOptions();
|
const { colors } = useConceptOptions();
|
|
@ -0,0 +1,10 @@
|
||||||
|
function HelpFormulaTree() {
|
||||||
|
// prettier-ignore
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>Дерево разбора родоструктурного выражения</h1>
|
||||||
|
<p>TBD.</p>
|
||||||
|
</div>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HelpFormulaTree;
|
|
@ -1,6 +1,6 @@
|
||||||
import { HelpTopic } from '@/models/miscellaneous';
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
|
|
||||||
import Subtopics from './Subtopics';
|
import Subtopics from '../Subtopics';
|
||||||
|
|
||||||
function HelpInterface() {
|
function HelpInterface() {
|
||||||
// prettier-ignore
|
// prettier-ignore
|
|
@ -1,4 +1,4 @@
|
||||||
import { IconImmutable, IconPublic } from '../Icons';
|
import { IconImmutable, IconPublic } from '../../../components/Icons';
|
||||||
|
|
||||||
function HelpLibrary() {
|
function HelpLibrary() {
|
||||||
// prettier-ignore
|
// prettier-ignore
|
|
@ -3,8 +3,8 @@ import TextURL from '@/components/ui/TextURL';
|
||||||
import { HelpTopic } from '@/models/miscellaneous';
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
import { external_urls, prefixes } from '@/utils/constants';
|
import { external_urls, prefixes } from '@/utils/constants';
|
||||||
|
|
||||||
import LinkTopic from '../ui/LinkTopic';
|
import LinkTopic from '../../../components/ui/LinkTopic';
|
||||||
import TopicItem from './TopicItem';
|
import TopicItem from '../TopicItem';
|
||||||
|
|
||||||
function HelpMain() {
|
function HelpMain() {
|
||||||
// prettier-ignore
|
// prettier-ignore
|
|
@ -2,8 +2,8 @@ import InfoCstStatus from '@/components/info/InfoCstStatus';
|
||||||
import Divider from '@/components/ui/Divider';
|
import Divider from '@/components/ui/Divider';
|
||||||
import { HelpTopic } from '@/models/miscellaneous';
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
|
|
||||||
import { IconAlias, IconMoveDown, IconMoveUp } from '../Icons';
|
import { IconAlias, IconMoveDown, IconMoveUp } from '../../../components/Icons';
|
||||||
import LinkTopic from '../ui/LinkTopic';
|
import LinkTopic from '../../../components/ui/LinkTopic';
|
||||||
|
|
||||||
function HelpRSFormItems() {
|
function HelpRSFormItems() {
|
||||||
// prettier-ignore
|
// prettier-ignore
|
|
@ -0,0 +1,10 @@
|
||||||
|
function HelpRSFormMenu() {
|
||||||
|
// prettier-ignore
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>Меню редактирования концептуальной схемы</h1>
|
||||||
|
<p>TBD</p>
|
||||||
|
</div>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HelpRSFormMenu;
|
|
@ -1,7 +1,15 @@
|
||||||
import { HelpTopic } from '@/models/miscellaneous';
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
|
|
||||||
import { IconClone, IconDownload, IconFollow, IconImmutable, IconOwner, IconPublic, IconSave } from '../Icons';
|
import {
|
||||||
import LinkTopic from '../ui/LinkTopic';
|
IconClone,
|
||||||
|
IconDownload,
|
||||||
|
IconFollow,
|
||||||
|
IconImmutable,
|
||||||
|
IconOwner,
|
||||||
|
IconPublic,
|
||||||
|
IconSave
|
||||||
|
} from '../../../components/Icons';
|
||||||
|
import LinkTopic from '../../../components/ui/LinkTopic';
|
||||||
|
|
||||||
function HelpRSFormMeta() {
|
function HelpRSFormMeta() {
|
||||||
// prettier-ignore
|
// prettier-ignore
|
|
@ -5,7 +5,7 @@ import useWindowSize from '@/hooks/useWindowSize';
|
||||||
import { HelpTopic } from '@/models/miscellaneous';
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
import { external_urls, youtube } from '@/utils/constants';
|
import { external_urls, youtube } from '@/utils/constants';
|
||||||
|
|
||||||
import Subtopics from './Subtopics';
|
import Subtopics from '../Subtopics';
|
||||||
|
|
||||||
function HelpRSLang() {
|
function HelpRSLang() {
|
||||||
const windowSize = useWindowSize();
|
const windowSize = useWindowSize();
|
|
@ -1,6 +1,6 @@
|
||||||
import { HelpTopic } from '@/models/miscellaneous';
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
|
|
||||||
import LinkTopic from '../ui/LinkTopic';
|
import LinkTopic from '../../../components/ui/LinkTopic';
|
||||||
|
|
||||||
function HelpRSLangCorrect() {
|
function HelpRSLangCorrect() {
|
||||||
return (
|
return (
|
|
@ -1,6 +1,6 @@
|
||||||
import { HelpTopic } from '@/models/miscellaneous';
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
|
|
||||||
import LinkTopic from '../ui/LinkTopic';
|
import LinkTopic from '../../../components/ui/LinkTopic';
|
||||||
|
|
||||||
function HelpRSLangInterpret() {
|
function HelpRSLangInterpret() {
|
||||||
return (
|
return (
|
|
@ -0,0 +1,33 @@
|
||||||
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
|
|
||||||
|
import { IconInlineSynthesis, IconTemplates } from '../../../components/Icons';
|
||||||
|
import LinkTopic from '../../../components/ui/LinkTopic';
|
||||||
|
|
||||||
|
function HelpRSLangOperations() {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>Операции над концептуальными схемами</h1>
|
||||||
|
<p>В данном разделе поясняются различные операции над концептуальными схемами.</p>
|
||||||
|
|
||||||
|
<h2>
|
||||||
|
<IconTemplates size='1.25rem' className='inline-icon' /> Генерация из шаблона
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
Данная операция позволяет вставить конституенту из{' '}
|
||||||
|
<LinkTopic text='шаблона выражения' topic={HelpTopic.RSL_TEMPLATES} />.
|
||||||
|
</p>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<h2>
|
||||||
|
<IconInlineSynthesis size='1.25rem' className='inline-icon' /> Встраивание
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
Реализация операции синтеза концептуальных схем в рамках одной концептуальной схемы. Операции заключается в
|
||||||
|
копировании выбранного подмножества конституент из схемы-источника в текущую схему. Также задается Таблица
|
||||||
|
отождествлений, позволяющая связать добавляемые конституенты с текущей схемой.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HelpRSLangOperations;
|
|
@ -0,0 +1,28 @@
|
||||||
|
function HelpRSTemplates() {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>Шаблоны</h1>
|
||||||
|
<p>
|
||||||
|
Портал предоставляет быстрый доступ к часто используемым выражениям с помощью функции создания конституенты из
|
||||||
|
шаблона
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Источником шаблонов является <b>Банк выражений</b>, содержащий параметризованные понятия и утверждения,
|
||||||
|
сгруппированные по разделам
|
||||||
|
</p>
|
||||||
|
<p>Сначала выбирается шаблон выражения (вкладка Шаблон)</p>
|
||||||
|
<p>
|
||||||
|
Далее для аргументов можно зафиксировать значения, выбрав из конституент текущей схемы или указав выражения
|
||||||
|
(вкладка Аргументы)
|
||||||
|
</p>
|
||||||
|
<p>Значения аргументов будут подставлены в выражение, включая корректировку перечня аргументов</p>
|
||||||
|
<p>Если значения указаны для всех аргументов, то тип создаваемой конституенты будет автоматически обновлён</p>
|
||||||
|
<p>На вкладке Конституента можно скорректировать все атрибуты, создаваемой конституенты</p>
|
||||||
|
<p>
|
||||||
|
Кнопка <b>Создать</b> инициирует добавление выбранной конституенты в схему
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HelpRSTemplates;
|
|
@ -0,0 +1,79 @@
|
||||||
|
import Divider from '@/components/ui/Divider';
|
||||||
|
import LinkTopic from '@/components/ui/LinkTopic';
|
||||||
|
import { useConceptOptions } from '@/context/OptionsContext';
|
||||||
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
|
|
||||||
|
import {
|
||||||
|
IconClustering,
|
||||||
|
IconDestroy,
|
||||||
|
IconEdit,
|
||||||
|
IconFilter,
|
||||||
|
IconFitImage,
|
||||||
|
IconGraphCollapse,
|
||||||
|
IconGraphCore,
|
||||||
|
IconGraphExpand,
|
||||||
|
IconGraphInputs,
|
||||||
|
IconGraphMaximize,
|
||||||
|
IconGraphOutputs,
|
||||||
|
IconImage,
|
||||||
|
IconNewItem,
|
||||||
|
IconReset,
|
||||||
|
IconRotate3D,
|
||||||
|
IconText
|
||||||
|
} from '../../../components/Icons';
|
||||||
|
|
||||||
|
function HelpTermGraph() {
|
||||||
|
const { colors } = useConceptOptions();
|
||||||
|
// prettier-ignore
|
||||||
|
return (
|
||||||
|
<div className='flex flex-col'>
|
||||||
|
<div className='flex'>
|
||||||
|
<div className='dense w-[14rem]'>
|
||||||
|
<h1>Настройка графа</h1>
|
||||||
|
<li>Цвет – покраска узлов</li>
|
||||||
|
<li>Граф – расположение</li>
|
||||||
|
<li>Размер – размер узлов</li>
|
||||||
|
<li><IconText className='inline-icon'/> Отображение текста</li>
|
||||||
|
<li><IconClustering className='inline-icon'/> Скрыть порожденные</li>
|
||||||
|
<li><IconRotate3D className='inline-icon'/> Вращение 3D</li>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Divider vertical margins='mx-3 mt-3' />
|
||||||
|
|
||||||
|
<div className='dense w-[21rem]'>
|
||||||
|
<h1>Изменение узлов</h1>
|
||||||
|
<li>Клик на конституенту – выделение</li>
|
||||||
|
<li>Ctrl + клик – выбор <span style={{ color: colors.fgPurple }}>фокус-конституенты</span></li>
|
||||||
|
<li><IconReset className='inline-icon'/> Esc – сбросить выделение</li>
|
||||||
|
<li><IconEdit className='inline-icon'/> Двойной клик – редактирование</li>
|
||||||
|
<li><IconDestroy className='inline-icon'/> Delete – удалить выбранные</li>
|
||||||
|
<li><IconNewItem className='inline-icon'/> Новая со ссылками на выделенные</li>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Divider margins='my-3' />
|
||||||
|
|
||||||
|
<div className='flex mb-3'>
|
||||||
|
<div className='dense w-[14rem]'>
|
||||||
|
<h1>Общие</h1>
|
||||||
|
<li><IconFilter className='inline-icon'/> Открыть настройки</li>
|
||||||
|
<li><IconFitImage className='inline-icon'/> Вписать граф в экран</li>
|
||||||
|
<li><IconImage className='inline-icon'/> Сохранить в формат PNG</li>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Divider vertical margins='mx-3' />
|
||||||
|
|
||||||
|
<div className='dense w-[21rem]'>
|
||||||
|
<h1>Выделение</h1>
|
||||||
|
<li><IconGraphCollapse className='inline-icon'/> все влияющие</li>
|
||||||
|
<li><IconGraphExpand className='inline-icon'/> все зависимые</li>
|
||||||
|
<li><IconGraphMaximize className='inline-icon'/> зависимые только от выделенных</li>
|
||||||
|
<li><IconGraphInputs className='inline-icon'/> входящие напрямую</li>
|
||||||
|
<li><IconGraphOutputs className='inline-icon'/> исходящие напрямую</li>
|
||||||
|
<li><IconGraphCore className='inline-icon'/> выделить <LinkTopic text='Ядро' topic={HelpTopic.CC_SYSTEM} /></li>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HelpTermGraph;
|
|
@ -0,0 +1,28 @@
|
||||||
|
function HelpTerminologyControl() {
|
||||||
|
return (
|
||||||
|
<div className='flex flex-col gap-2'>
|
||||||
|
<h1>Терминологизация</h1>
|
||||||
|
<p>Портал позволяет контролировать употребление терминов, привязанных к сущностям в концептуальных схемах.</p>
|
||||||
|
<p>
|
||||||
|
Для этого используется механизм текстовых отсылок: <i>использование термина</i> и <i>связывание слов.</i>
|
||||||
|
</p>
|
||||||
|
<p>При отсылке к термину указывается параметры словоформы так, обеспечивающие корректное согласование слов.</p>
|
||||||
|
<p>
|
||||||
|
<b>Граммема</b> – минимальная единица грамматической информами, например род, число, падеж.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<b>Словоформа</b> – грамматическая форма словосочетания, которая может меняться в зависимости от его
|
||||||
|
грамматических характеристик.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<b>Лексема</b> – все грамматические формы и словосочетания, связанные с данным словосочетанием.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
При работе со словосочетаниями определяется основное слово, которое определяет набор граммем и используется для
|
||||||
|
согласования с другими словами в предложении.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HelpTerminologyControl;
|
|
@ -0,0 +1,16 @@
|
||||||
|
function HelpVersions() {
|
||||||
|
return (
|
||||||
|
<div className='text-justify'>
|
||||||
|
<h1>Версионирование схем</h1>
|
||||||
|
<p>
|
||||||
|
Версионирование позволяет сохранить текущее состояние схемы под определенным именем (версией) и использовать
|
||||||
|
ссылку на него для совместной работы. После создания версии ее содержание изменить нельзя
|
||||||
|
</p>
|
||||||
|
<p>Владелец обладает правом редактирования названий и создания новых версий</p>
|
||||||
|
<p>Управление версиями происходит в Карточке схемы</p>
|
||||||
|
<p>Функция Поделиться включает версию в ссылку</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HelpVersions;
|
|
@ -1,5 +1,5 @@
|
||||||
import { IconClone, IconDestroy, IconMoveDown, IconMoveUp, IconNewItem, IconReset, IconSave } from '@/components/Icons';
|
import { IconClone, IconDestroy, IconMoveDown, IconMoveUp, IconNewItem, IconReset, IconSave } from '@/components/Icons';
|
||||||
import BadgeHelp from '@/components/man/BadgeHelp';
|
import BadgeHelp from '@/components/info/BadgeHelp';
|
||||||
import MiniButton from '@/components/ui/MiniButton';
|
import MiniButton from '@/components/ui/MiniButton';
|
||||||
import Overlay from '@/components/ui/Overlay';
|
import Overlay from '@/components/ui/Overlay';
|
||||||
import { HelpTopic } from '@/models/miscellaneous';
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
|
|
|
@ -6,7 +6,7 @@ import { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';
|
||||||
import { toast } from 'react-toastify';
|
import { toast } from 'react-toastify';
|
||||||
|
|
||||||
import { IconControls, IconList, IconListOff, IconText, IconTextOff, IconTree } from '@/components/Icons';
|
import { IconControls, IconList, IconListOff, IconText, IconTextOff, IconTree } from '@/components/Icons';
|
||||||
import BadgeHelp from '@/components/man/BadgeHelp';
|
import BadgeHelp from '@/components/info/BadgeHelp';
|
||||||
import RSInput from '@/components/RSInput';
|
import RSInput from '@/components/RSInput';
|
||||||
import { RSTextWrapper } from '@/components/RSInput/textEditing';
|
import { RSTextWrapper } from '@/components/RSInput/textEditing';
|
||||||
import MiniButton from '@/components/ui/MiniButton';
|
import MiniButton from '@/components/ui/MiniButton';
|
||||||
|
|
|
@ -5,8 +5,8 @@ import { useEffect, useLayoutEffect, useState } from 'react';
|
||||||
import { toast } from 'react-toastify';
|
import { toast } from 'react-toastify';
|
||||||
|
|
||||||
import { IconList, IconNewItem, IconSave } from '@/components/Icons';
|
import { IconList, IconNewItem, IconSave } from '@/components/Icons';
|
||||||
import BadgeHelp from '@/components/man/BadgeHelp';
|
import BadgeHelp from '@/components/info/BadgeHelp';
|
||||||
import VersionSelector from '@/components/select/VersionSelector';
|
import SelectVersion from '@/components/select/SelectVersion';
|
||||||
import Checkbox from '@/components/ui/Checkbox';
|
import Checkbox from '@/components/ui/Checkbox';
|
||||||
import Label from '@/components/ui/Label';
|
import Label from '@/components/ui/Label';
|
||||||
import MiniButton from '@/components/ui/MiniButton';
|
import MiniButton from '@/components/ui/MiniButton';
|
||||||
|
@ -136,7 +136,7 @@ function FormRSForm({ id, isModified, setIsModified }: FormRSFormProps) {
|
||||||
<BadgeHelp topic={HelpTopic.VERSIONS} className='max-w-[30rem]' offset={4} />
|
<BadgeHelp topic={HelpTopic.VERSIONS} className='max-w-[30rem]' offset={4} />
|
||||||
</Overlay>
|
</Overlay>
|
||||||
<Label text='Версия' className='mb-2' />
|
<Label text='Версия' className='mb-2' />
|
||||||
<VersionSelector
|
<SelectVersion
|
||||||
id='schema_version'
|
id='schema_version'
|
||||||
value={schema?.version} // prettier: split lines
|
value={schema?.version} // prettier: split lines
|
||||||
items={schema?.versions}
|
items={schema?.versions}
|
||||||
|
|
|
@ -11,7 +11,7 @@ import {
|
||||||
IconSave,
|
IconSave,
|
||||||
IconShare
|
IconShare
|
||||||
} from '@/components/Icons';
|
} from '@/components/Icons';
|
||||||
import BadgeHelp from '@/components/man/BadgeHelp';
|
import BadgeHelp from '@/components/info/BadgeHelp';
|
||||||
import MiniButton from '@/components/ui/MiniButton';
|
import MiniButton from '@/components/ui/MiniButton';
|
||||||
import Overlay from '@/components/ui/Overlay';
|
import Overlay from '@/components/ui/Overlay';
|
||||||
import { HelpTopic } from '@/models/miscellaneous';
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { IconClone, IconDestroy, IconMoveDown, IconMoveUp, IconNewItem, IconOpenList } from '@/components/Icons';
|
import { IconClone, IconDestroy, IconMoveDown, IconMoveUp, IconNewItem, IconOpenList } from '@/components/Icons';
|
||||||
import BadgeHelp from '@/components/man/BadgeHelp';
|
import BadgeHelp from '@/components/info/BadgeHelp';
|
||||||
import Dropdown from '@/components/ui/Dropdown';
|
import Dropdown from '@/components/ui/Dropdown';
|
||||||
import DropdownButton from '@/components/ui/DropdownButton';
|
import DropdownButton from '@/components/ui/DropdownButton';
|
||||||
import MiniButton from '@/components/ui/MiniButton';
|
import MiniButton from '@/components/ui/MiniButton';
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import { useCallback, useLayoutEffect, useMemo, useState } from 'react';
|
import { useCallback, useLayoutEffect, useMemo, useState } from 'react';
|
||||||
|
|
||||||
import ConstituentaBadge from '@/components/info/ConstituentaBadge';
|
import BadgeConstituenta from '@/components/info/BadgeConstituenta';
|
||||||
import { CProps } from '@/components/props';
|
import { CProps } from '@/components/props';
|
||||||
import DataTable, { createColumnHelper, RowSelectionState, VisibilityState } from '@/components/ui/DataTable';
|
import DataTable, { createColumnHelper, RowSelectionState, VisibilityState } from '@/components/ui/DataTable';
|
||||||
import FlexColumn from '@/components/ui/FlexColumn';
|
import FlexColumn from '@/components/ui/FlexColumn';
|
||||||
|
@ -71,7 +71,7 @@ function RSTable({ items, maxHeight, enableSelection, selected, setSelected, onE
|
||||||
size: 65,
|
size: 65,
|
||||||
minSize: 65,
|
minSize: 65,
|
||||||
maxSize: 65,
|
maxSize: 65,
|
||||||
cell: props => <ConstituentaBadge theme={colors} value={props.row.original} prefixID={prefixes.cst_list} />
|
cell: props => <BadgeConstituenta theme={colors} value={props.row.original} prefixID={prefixes.cst_list} />
|
||||||
}),
|
}),
|
||||||
columnHelper.accessor(cst => labelCstTypification(cst), {
|
columnHelper.accessor(cst => labelCstTypification(cst), {
|
||||||
id: 'type',
|
id: 'type',
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import BadgeHelp from '@/components/man/BadgeHelp';
|
import BadgeHelp from '@/components/info/BadgeHelp';
|
||||||
import { GraphLayout } from '@/components/ui/GraphUI';
|
import { GraphLayout } from '@/components/ui/GraphUI';
|
||||||
import Overlay from '@/components/ui/Overlay';
|
import Overlay from '@/components/ui/Overlay';
|
||||||
import SelectSingle from '@/components/ui/SelectSingle';
|
import SelectSingle from '@/components/ui/SelectSingle';
|
||||||
|
|
|
@ -10,7 +10,7 @@ import {
|
||||||
IconText,
|
IconText,
|
||||||
IconTextOff
|
IconTextOff
|
||||||
} from '@/components/Icons';
|
} from '@/components/Icons';
|
||||||
import BadgeHelp from '@/components/man/BadgeHelp';
|
import BadgeHelp from '@/components/info/BadgeHelp';
|
||||||
import MiniButton from '@/components/ui/MiniButton';
|
import MiniButton from '@/components/ui/MiniButton';
|
||||||
import { HelpTopic } from '@/models/miscellaneous';
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import { useCallback, useLayoutEffect, useMemo, useState } from 'react';
|
import { useCallback, useLayoutEffect, useMemo, useState } from 'react';
|
||||||
|
|
||||||
import ConstituentaBadge from '@/components/info/ConstituentaBadge';
|
import BadgeConstituenta from '@/components/info/BadgeConstituenta';
|
||||||
import DataTable, { createColumnHelper, IConditionalStyle, VisibilityState } from '@/components/ui/DataTable';
|
import DataTable, { createColumnHelper, IConditionalStyle, VisibilityState } from '@/components/ui/DataTable';
|
||||||
import { useConceptOptions } from '@/context/OptionsContext';
|
import { useConceptOptions } from '@/context/OptionsContext';
|
||||||
import useWindowSize from '@/hooks/useWindowSize';
|
import useWindowSize from '@/hooks/useWindowSize';
|
||||||
|
@ -57,7 +57,7 @@ function ConstituentsTable({ items, activeID, onOpenEdit, maxHeight, denseThresh
|
||||||
minSize: 65,
|
minSize: 65,
|
||||||
footer: undefined,
|
footer: undefined,
|
||||||
cell: props => (
|
cell: props => (
|
||||||
<ConstituentaBadge theme={colors} value={props.row.original} prefixID={prefixes.cst_side_table} />
|
<BadgeConstituenta theme={colors} value={props.row.original} prefixID={prefixes.cst_side_table} />
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
columnHelper.accessor(cst => describeConstituenta(cst), {
|
columnHelper.accessor(cst => describeConstituenta(cst), {
|
||||||
|
|
|
@ -72,6 +72,8 @@ export const external_urls = {
|
||||||
ponomarev: 'https://inponomarev.ru/textbook',
|
ponomarev: 'https://inponomarev.ru/textbook',
|
||||||
intro_video: 'https://www.youtube.com/watch?v=0Ty9mu9sOJo',
|
intro_video: 'https://www.youtube.com/watch?v=0Ty9mu9sOJo',
|
||||||
full_course: 'https://www.youtube.com/playlist?list=PLGe_JiAwpqu1C70ruQmCm_OWTWU3KJwDo',
|
full_course: 'https://www.youtube.com/playlist?list=PLGe_JiAwpqu1C70ruQmCm_OWTWU3KJwDo',
|
||||||
|
zak_lectures:
|
||||||
|
'https://www.acconcept.ru/product/metody-konceptualnogo-analiza-i-sinteza-v-teoreticheskom-issledovanii-i-proektirovanii-socialno-jekonomicheskih-sistem-3-e-izdanie/',
|
||||||
|
|
||||||
git_repo: 'https://github.com/IRBorisov/ConceptPortal',
|
git_repo: 'https://github.com/IRBorisov/ConceptPortal',
|
||||||
mail_portal: 'mailto:portal@acconcept.ru',
|
mail_portal: 'mailto:portal@acconcept.ru',
|
||||||
|
|
|
@ -362,10 +362,12 @@ export function labelHelpTopic(topic: HelpTopic): string {
|
||||||
|
|
||||||
case HelpTopic.INTERFACE: return 'Интерфейс';
|
case HelpTopic.INTERFACE: return 'Интерфейс';
|
||||||
case HelpTopic.UI_LIBRARY: return 'Библиотека';
|
case HelpTopic.UI_LIBRARY: return 'Библиотека';
|
||||||
|
case HelpTopic.UI_RS_MENU: return 'Меню схемы';
|
||||||
case HelpTopic.UI_RS_CARD: return 'Карточка схемы';
|
case HelpTopic.UI_RS_CARD: return 'Карточка схемы';
|
||||||
case HelpTopic.UI_RS_LIST: return 'Список конституент';
|
case HelpTopic.UI_RS_LIST: return 'Список конституент';
|
||||||
case HelpTopic.UI_RS_EDITOR: return 'Редактор конституенты';
|
case HelpTopic.UI_RS_EDITOR: return 'Редактор конституенты';
|
||||||
case HelpTopic.UI_GRAPH_TERM: return 'Граф термов';
|
case HelpTopic.UI_GRAPH_TERM: return 'Граф термов';
|
||||||
|
case HelpTopic.UI_FORMULA_TREE: return 'Дерево разбора';
|
||||||
case HelpTopic.UI_CST_STATUS: return 'Статус конституенты';
|
case HelpTopic.UI_CST_STATUS: return 'Статус конституенты';
|
||||||
case HelpTopic.UI_CST_CLASS: return 'Класс конституенты';
|
case HelpTopic.UI_CST_CLASS: return 'Класс конституенты';
|
||||||
|
|
||||||
|
@ -373,6 +375,7 @@ export function labelHelpTopic(topic: HelpTopic): string {
|
||||||
case HelpTopic.CC_SYSTEM: return 'Система определений';
|
case HelpTopic.CC_SYSTEM: return 'Система определений';
|
||||||
case HelpTopic.CC_CONSTITUENTA: return 'Конституента';
|
case HelpTopic.CC_CONSTITUENTA: return 'Конституента';
|
||||||
case HelpTopic.CC_RELATIONS: return 'Связи понятий';
|
case HelpTopic.CC_RELATIONS: return 'Связи понятий';
|
||||||
|
case HelpTopic.CC_SYNTHESIS: return 'Синтез схем';
|
||||||
|
|
||||||
case HelpTopic.RSLANG: return 'Экспликация';
|
case HelpTopic.RSLANG: return 'Экспликация';
|
||||||
case HelpTopic.RSL_TYPES: return 'Типизация';
|
case HelpTopic.RSL_TYPES: return 'Типизация';
|
||||||
|
@ -399,10 +402,12 @@ export function describeHelpTopic(topic: HelpTopic): string {
|
||||||
|
|
||||||
case HelpTopic.INTERFACE: return 'описание интерфейса пользователя';
|
case HelpTopic.INTERFACE: return 'описание интерфейса пользователя';
|
||||||
case HelpTopic.UI_LIBRARY: return 'интерфейс Библиотеки схем';
|
case HelpTopic.UI_LIBRARY: return 'интерфейс Библиотеки схем';
|
||||||
|
case HelpTopic.UI_RS_MENU: return 'меню редактирования схемы';
|
||||||
case HelpTopic.UI_RS_CARD: return 'интерфейс Карточки схемы';
|
case HelpTopic.UI_RS_CARD: return 'интерфейс Карточки схемы';
|
||||||
case HelpTopic.UI_RS_LIST: return 'интерфейс Списка конституент';
|
case HelpTopic.UI_RS_LIST: return 'интерфейс Списка конституент';
|
||||||
case HelpTopic.UI_RS_EDITOR: return 'интерфейс редактирования конституенты';
|
case HelpTopic.UI_RS_EDITOR: return 'интерфейс редактирования конституенты';
|
||||||
case HelpTopic.UI_GRAPH_TERM: return 'интерфейс графа термов';
|
case HelpTopic.UI_GRAPH_TERM: return 'интерфейс графа термов';
|
||||||
|
case HelpTopic.UI_FORMULA_TREE: return 'интерфейс дерева разбора родоструктурного выражения';
|
||||||
case HelpTopic.UI_CST_STATUS: return 'нотация отображения статуса конституенты';
|
case HelpTopic.UI_CST_STATUS: return 'нотация отображения статуса конституенты';
|
||||||
case HelpTopic.UI_CST_CLASS: return 'нотация отображения класса конституенты';
|
case HelpTopic.UI_CST_CLASS: return 'нотация отображения класса конституенты';
|
||||||
|
|
||||||
|
@ -410,6 +415,7 @@ export function describeHelpTopic(topic: HelpTopic): string {
|
||||||
case HelpTopic.CC_SYSTEM: return 'концептуальная схема как система понятий';
|
case HelpTopic.CC_SYSTEM: return 'концептуальная схема как система понятий';
|
||||||
case HelpTopic.CC_CONSTITUENTA: return 'понятия конституенты и ее атрибутов';
|
case HelpTopic.CC_CONSTITUENTA: return 'понятия конституенты и ее атрибутов';
|
||||||
case HelpTopic.CC_RELATIONS: return 'отношения между конституентами';
|
case HelpTopic.CC_RELATIONS: return 'отношения между конституентами';
|
||||||
|
case HelpTopic.CC_SYNTHESIS: return 'операция синтеза концептуальных схем';
|
||||||
|
|
||||||
case HelpTopic.RSLANG: return 'справка по языку родов структур и экспликации';
|
case HelpTopic.RSLANG: return 'справка по языку родов структур и экспликации';
|
||||||
case HelpTopic.RSL_TYPES: return 'система типов в родоструктурной экспликации';
|
case HelpTopic.RSL_TYPES: return 'система типов в родоструктурной экспликации';
|
||||||
|
|
Loading…
Reference in New Issue
Block a user