mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 13:00:39 +03:00
Improve help UI + minor fixes
This commit is contained in:
parent
0487324514
commit
62e30d474b
|
@ -101,7 +101,7 @@ class RSForm:
|
|||
cst.save()
|
||||
|
||||
def get_max_index(self, cst_type: CstType) -> int:
|
||||
''' Get maximum alias index for specific CstType '''
|
||||
''' Get maximum alias index for specific CstType. '''
|
||||
result: int = 0
|
||||
items = Constituenta.objects \
|
||||
.filter(schema=self.item, cst_type=cst_type) \
|
||||
|
|
|
@ -40,6 +40,7 @@ def inline_synthesis(request: Request):
|
|||
index = next(i for (i, cst) in enumerate(items) if cst == replacement)
|
||||
replacement = new_items[index]
|
||||
schema.substitute(original, replacement, substitution['transfer_term'])
|
||||
|
||||
schema.restore_order()
|
||||
return Response(
|
||||
status=c.HTTP_200_OK,
|
||||
|
|
68
rsconcept/frontend/package-lock.json
generated
68
rsconcept/frontend/package-lock.json
generated
|
@ -9,7 +9,7 @@
|
|||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"@lezer/lr": "^1.4.0",
|
||||
"@tanstack/react-table": "^8.17.0",
|
||||
"@tanstack/react-table": "^8.17.3",
|
||||
"@uiw/codemirror-themes": "^4.22.0",
|
||||
"@uiw/react-codemirror": "^4.22.0",
|
||||
"axios": "^1.6.8",
|
||||
|
@ -34,7 +34,7 @@
|
|||
"devDependencies": {
|
||||
"@lezer/generator": "^1.7.0",
|
||||
"@types/jest": "^29.5.12",
|
||||
"@types/node": "^20.12.11",
|
||||
"@types/node": "^20.12.12",
|
||||
"@types/react": "^18.3.2",
|
||||
"@types/react-dom": "^18.3.0",
|
||||
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
||||
|
@ -646,9 +646,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@codemirror/lint": {
|
||||
"version": "6.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.7.0.tgz",
|
||||
"integrity": "sha512-LTLOL2nT41ADNSCCCCw8Q/UmdAFzB23OUYSjsHTdsVaH0XEo+orhuqbDNWzrzodm14w6FOxqxpmy4LF8Lixqjw==",
|
||||
"version": "6.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.7.1.tgz",
|
||||
"integrity": "sha512-rELba6QJD20/bNXWP/cKTGLrwVEcpa2ViwULCV03ONcY1Je85++7sczVRUlnE4TJMjatx3IJTz6HX4NXi+moXw==",
|
||||
"dependencies": {
|
||||
"@codemirror/state": "^6.0.0",
|
||||
"@codemirror/view": "^6.0.0",
|
||||
|
@ -1306,9 +1306,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@floating-ui/core": {
|
||||
"version": "1.6.1",
|
||||
"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.1.tgz",
|
||||
"integrity": "sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A==",
|
||||
"version": "1.6.2",
|
||||
"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.2.tgz",
|
||||
"integrity": "sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==",
|
||||
"dependencies": {
|
||||
"@floating-ui/utils": "^0.2.0"
|
||||
}
|
||||
|
@ -2655,11 +2655,11 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@tanstack/react-table": {
|
||||
"version": "8.17.0",
|
||||
"resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.17.0.tgz",
|
||||
"integrity": "sha512-LSJxTDzlKGs8EN7/UHB1l3yLR9HUIxoHFkTbTjHaUUGL4kgYZFYhsQsdDJSIykG86qpIA/6gSWmtwNfy5Iprhw==",
|
||||
"version": "8.17.3",
|
||||
"resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.17.3.tgz",
|
||||
"integrity": "sha512-5gwg5SvPD3lNAXPuJJz1fOCEZYk9/GeBFH3w/hCgnfyszOIzwkwgp5I7Q4MJtn0WECp84b5STQUDdmvGi8m3nA==",
|
||||
"dependencies": {
|
||||
"@tanstack/table-core": "8.16.0"
|
||||
"@tanstack/table-core": "8.17.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
|
@ -2674,9 +2674,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@tanstack/table-core": {
|
||||
"version": "8.16.0",
|
||||
"resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.16.0.tgz",
|
||||
"integrity": "sha512-dCG8vQGk4js5v88/k83tTedWOwjGnIyONrKpHpfmSJB8jwFHl8GSu1sBBxbtACVAPtAQgwNxl0rw1d3RqRM1Tg==",
|
||||
"version": "8.17.3",
|
||||
"resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.17.3.tgz",
|
||||
"integrity": "sha512-mPBodDGVL+fl6d90wUREepHa/7lhsghg2A3vFpakEhrhtbIlgNAZiMr7ccTgak5qbHqF14Fwy+W1yFWQt+WmYQ==",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
|
@ -2732,9 +2732,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@types/draco3d": {
|
||||
"version": "1.4.9",
|
||||
"resolved": "https://registry.npmjs.org/@types/draco3d/-/draco3d-1.4.9.tgz",
|
||||
"integrity": "sha512-4MMUjMQb4yA5fJ4osXx+QxGHt0/ZSy4spT6jL1HM7Tn8OJEC35siqdnpOo+HxPhYjqEFumKfGVF9hJfdyKBIBA=="
|
||||
"version": "1.4.10",
|
||||
"resolved": "https://registry.npmjs.org/@types/draco3d/-/draco3d-1.4.10.tgz",
|
||||
"integrity": "sha512-AX22jp8Y7wwaBgAixaSvkoG4M/+PlAcm3Qs4OW8yT9DM4xUpWKeFhLueTAyZF39pviAdcDdeJoACapiAceqNcw=="
|
||||
},
|
||||
"node_modules/@types/graceful-fs": {
|
||||
"version": "4.1.9",
|
||||
|
@ -2795,9 +2795,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "20.12.11",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.11.tgz",
|
||||
"integrity": "sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==",
|
||||
"version": "20.12.12",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz",
|
||||
"integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"undici-types": "~5.26.4"
|
||||
|
@ -3771,9 +3771,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/caniuse-lite": {
|
||||
"version": "1.0.30001617",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001617.tgz",
|
||||
"integrity": "sha512-mLyjzNI9I+Pix8zwcrpxEbGlfqOkF9kM3ptzmKNw5tizSyYwMe+nGLTqMK9cO+0E+Bh6TsBxNAaHWEM8xwSsmA==",
|
||||
"version": "1.0.30001618",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001618.tgz",
|
||||
"integrity": "sha512-p407+D1tIkDvsEAPS22lJxLQQaG8OTBEqo0KhzfABGk0TU4juBNDSfH0hyAp/HRyx+M8L17z/ltyhxh27FTfQg==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
|
@ -4500,9 +4500,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.4.763",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.763.tgz",
|
||||
"integrity": "sha512-k4J8NrtJ9QrvHLRo8Q18OncqBCB7tIUyqxRcJnlonQ0ioHKYB988GcDFF3ZePmnb8eHEopDs/wPHR/iGAFgoUQ=="
|
||||
"version": "1.4.769",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.769.tgz",
|
||||
"integrity": "sha512-bZu7p623NEA2rHTc9K1vykl57ektSPQYFFqQir8BOYf6EKOB+yIsbFB9Kpm7Cgt6tsLr9sRkqfqSZUw7LP1XxQ=="
|
||||
},
|
||||
"node_modules/ellipsize": {
|
||||
"version": "0.5.1",
|
||||
|
@ -8292,9 +8292,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/picocolors": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
|
||||
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
|
||||
"integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew=="
|
||||
},
|
||||
"node_modules/picomatch": {
|
||||
"version": "2.3.1",
|
||||
|
@ -10001,9 +10001,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/update-browserslist-db": {
|
||||
"version": "1.0.15",
|
||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.15.tgz",
|
||||
"integrity": "sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==",
|
||||
"version": "1.0.16",
|
||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz",
|
||||
"integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
|
@ -10020,7 +10020,7 @@
|
|||
],
|
||||
"dependencies": {
|
||||
"escalade": "^3.1.2",
|
||||
"picocolors": "^1.0.0"
|
||||
"picocolors": "^1.0.1"
|
||||
},
|
||||
"bin": {
|
||||
"update-browserslist-db": "cli.js"
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@lezer/lr": "^1.4.0",
|
||||
"@tanstack/react-table": "^8.17.0",
|
||||
"@tanstack/react-table": "^8.17.3",
|
||||
"@uiw/codemirror-themes": "^4.22.0",
|
||||
"@uiw/react-codemirror": "^4.22.0",
|
||||
"axios": "^1.6.8",
|
||||
|
@ -38,7 +38,7 @@
|
|||
"devDependencies": {
|
||||
"@lezer/generator": "^1.7.0",
|
||||
"@types/jest": "^29.5.12",
|
||||
"@types/node": "^20.12.11",
|
||||
"@types/node": "^20.12.12",
|
||||
"@types/react": "^18.3.2",
|
||||
"@types/react-dom": "^18.3.0",
|
||||
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
||||
|
|
|
@ -9,7 +9,7 @@ function Logo() {
|
|||
|
||||
return (
|
||||
<img
|
||||
alt='Логотип КонцептПортал'
|
||||
alt=''
|
||||
className={clsx('max-h-[1.6rem] w-fit')}
|
||||
src={size.isSmall ? '/logo_sign.svg' : !darkMode ? '/logo_full.svg' : '/logo_full_dark.svg'}
|
||||
/>
|
||||
|
|
|
@ -15,7 +15,6 @@ import HelpMain from '../man/HelpMain';
|
|||
import HelpPrivacy from '../man/HelpPrivacy';
|
||||
import HelpRSFormItems from '../man/HelpRSFormItems';
|
||||
import HelpRSFormMeta from '../man/HelpRSFormMeta';
|
||||
import HelpRSFormUI from '../man/HelpRSFormUI';
|
||||
import HelpRSLang from '../man/HelpRSLang';
|
||||
import HelpRSLangCorrect from '../man/HelpRSLangCorrect';
|
||||
import HelpRSLangInterpret from '../man/HelpRSLangInterpret';
|
||||
|
@ -35,10 +34,9 @@ function InfoTopic({ topic }: InfoTopicProps) {
|
|||
|
||||
if (topic === HelpTopic.INTERFACE) return <HelpInterface />;
|
||||
if (topic === HelpTopic.UI_LIBRARY) return <HelpLibrary />;
|
||||
if (topic === HelpTopic.UI_RSFORM) return <HelpRSFormUI />;
|
||||
if (topic === HelpTopic.UI_RSFORM_CARD) return <HelpRSFormMeta />;
|
||||
if (topic === HelpTopic.UI_RSFORM_LIST) return <HelpRSFormItems />;
|
||||
if (topic === HelpTopic.UI_RSFORM_EDITOR) return <HelpCstEditor />;
|
||||
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 />;
|
||||
|
|
|
@ -1,9 +1,15 @@
|
|||
import { HelpTopic } from '@/models/miscellaneous';
|
||||
|
||||
import Subtopics from './Subtopics';
|
||||
|
||||
function HelpConceptSystem() {
|
||||
// prettier-ignore
|
||||
return (
|
||||
<div>
|
||||
<h1>Концептуализация</h1>
|
||||
<p>TBD</p>
|
||||
|
||||
<Subtopics headTopic={HelpTopic.CONCEPTUAL} />
|
||||
</div>);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import { urls } from '@/app/urls';
|
||||
import { HelpTopic } from '@/models/miscellaneous';
|
||||
|
||||
import TextURL from '../ui/TextURL';
|
||||
import LinkTopic from '../ui/LinkTopic';
|
||||
|
||||
function HelpCstAttributes() {
|
||||
// prettier-ignore
|
||||
|
@ -9,7 +8,7 @@ function HelpCstAttributes() {
|
|||
<div className='dense'>
|
||||
<h1>Атрибуты конституенты</h1>
|
||||
<p><b>Термин</b> может быть присвоен любой конституенте. Он используется в других Терминах и в Текстовых определениях</p>
|
||||
<p><b>Формальное определение</b> строится с помощью формального аппарата <TextURL text='родоструктурной экспликации' href={urls.help_topic(HelpTopic.RSLANG)}/></p>
|
||||
<p><b>Формальное определение</b> строится с помощью формального аппарата <LinkTopic text='родоструктурной экспликации' topic={HelpTopic.RSLANG}/></p>
|
||||
<p><b>Типизация</b> вычисляется автоматически на основе Формального определения и отражает структуру элементов множества, задаваемого этим определением</p>
|
||||
<p><b>Текстовое определение</b> предоставляется для конституент, имеющих Формальное определение или Область определения. Это текстовая интерпретация формального определения и строится из связующих слов, терминов теории множеств и отсылок на термины ранее введенных конституент</p>
|
||||
<p><b>Конвенция</b> – это соглашение о соотнесении неопределенного понятия с сущностями в предметной области</p>
|
||||
|
|
|
@ -1,9 +1,21 @@
|
|||
import { HelpTopic } from '@/models/miscellaneous';
|
||||
|
||||
import Subtopics from './Subtopics';
|
||||
|
||||
function HelpInterface() {
|
||||
// prettier-ignore
|
||||
return (
|
||||
<div>
|
||||
<h1>Пользовательский интерфейс</h1>
|
||||
<p>TBD</p>
|
||||
|
||||
<p>Общие принципы построения интерфейса</p>
|
||||
|
||||
<h2>Навигация и настройки</h2>
|
||||
<li>Навигационную панель можно скрыть с помощью кнопки в правом верхнем углу</li>
|
||||
<li>В меню пользователя доступен ряд настроек и управление активным профилем</li>
|
||||
<br/>
|
||||
|
||||
<Subtopics headTopic={HelpTopic.INTERFACE} />
|
||||
</div>);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,31 +1,44 @@
|
|||
import { urls } from '@/app/urls';
|
||||
import TextURL from '@/components/ui/TextURL';
|
||||
import { HelpTopic } from '@/models/miscellaneous';
|
||||
import { external_urls } from '@/utils/constants';
|
||||
import { external_urls, prefixes } from '@/utils/constants';
|
||||
|
||||
import LinkTopic from '../ui/LinkTopic';
|
||||
import TopicItem from './TopicItem';
|
||||
|
||||
function HelpMain() {
|
||||
// prettier-ignore
|
||||
return (
|
||||
<div>
|
||||
<h1>Портал</h1>
|
||||
<p>Портал позволяет анализировать предметные области, формально записывать системы определений и синтезировать их с помощью математического <TextURL text='аппарата родов структур' href={urls.help_topic(HelpTopic.RSLANG)}/></p>
|
||||
<p>Такие системы называются <b>Концептуальными схемами</b> и состоят из отдельных <TextURL text='Конституент' href={urls.help_topic(HelpTopic.CC_CONSTITUENTA)}/>, обладающих уникальными обозначениями и формальными определениями</p>
|
||||
<p>Портал позволяет анализировать предметные области, формально записывать системы определений и синтезировать их с помощью математического аппарата <LinkTopic text='Родов структур' topic={HelpTopic.RSLANG}/></p>
|
||||
<p>Такие системы называются <b>Концептуальными схемами</b> и состоят из отдельных <LinkTopic text='Конституент' topic={HelpTopic.CC_CONSTITUENTA}/>, обладающих уникальными обозначениями и формальными определениями</p>
|
||||
<br/>
|
||||
|
||||
<h2>Основные разделы</h2>
|
||||
<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>
|
||||
<li>Навигационную панель можно скрыть с помощью кнопки в правом верхнем углу</li>
|
||||
<li>В меню пользователя доступен ряд настроек и управление активным профилем</li>
|
||||
<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>Политика обработки данных доступна по <TextURL text='ссылке' href={urls.help_topic(HelpTopic.PRIVACY)} /></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/>
|
||||
|
|
|
@ -1,17 +1,16 @@
|
|||
import { urls } from '@/app/urls';
|
||||
import InfoCstStatus from '@/components/info/InfoCstStatus';
|
||||
import Divider from '@/components/ui/Divider';
|
||||
import { HelpTopic } from '@/models/miscellaneous';
|
||||
|
||||
import { IconAlias, IconMoveDown, IconMoveUp } from '../Icons';
|
||||
import TextURL from '../ui/TextURL';
|
||||
import LinkTopic from '../ui/LinkTopic';
|
||||
|
||||
function HelpRSFormItems() {
|
||||
// prettier-ignore
|
||||
return (
|
||||
<div className='dense'>
|
||||
<h1>Список конституент</h1>
|
||||
<p><IconAlias className='inline-icon'/>Конституенты обладают уникальным <TextURL text='Именем' href={urls.help_topic(HelpTopic.CC_CONSTITUENTA)}/></p>
|
||||
<p><IconAlias className='inline-icon'/>Конституенты обладают уникальным <LinkTopic text='Именем' topic={HelpTopic.CC_CONSTITUENTA}/></p>
|
||||
<p><IconMoveUp className='inline-icon'/><IconMoveDown className='inline-icon'/> Список поддерживает выделение и перемещение </p>
|
||||
|
||||
<h2>Управление списком</h2>
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
import { urls } from '@/app/urls';
|
||||
import { HelpTopic } from '@/models/miscellaneous';
|
||||
|
||||
import { IconClone, IconDownload, IconFollow, IconImmutable, IconOwner, IconPublic, IconSave } from '../Icons';
|
||||
import TextURL from '../ui/TextURL';
|
||||
import LinkTopic from '../ui/LinkTopic';
|
||||
|
||||
function HelpRSFormMeta() {
|
||||
// prettier-ignore
|
||||
|
@ -11,7 +10,7 @@ function HelpRSFormMeta() {
|
|||
<h1>Карточка схемы</h1>
|
||||
|
||||
<p>Карточка схемы содержит общую информацию и статистику схемы</p>
|
||||
<p>Карточка схемы позволяет управлять атрибутами схемы и ее <TextURL text='версиями' href={urls.help_topic(HelpTopic.VERSIONS)}/></p>
|
||||
<p>Карточка схемы позволяет управлять атрибутами схемы и ее <LinkTopic text='версиями' topic={HelpTopic.VERSIONS}/></p>
|
||||
|
||||
<h2>Управление</h2>
|
||||
<li><IconSave className='inline-icon'/> сохранить изменения: Ctrl + S</li>
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
function HelpRSFormUI() {
|
||||
// prettier-ignore
|
||||
return (
|
||||
<div>
|
||||
<h1>Интерфейс Концептуальной схемы</h1>
|
||||
<p>TBD</p>
|
||||
</div>);
|
||||
}
|
||||
|
||||
export default HelpRSFormUI;
|
|
@ -2,8 +2,11 @@ import { useMemo } from 'react';
|
|||
|
||||
import EmbedYoutube from '@/components/ui/EmbedYoutube';
|
||||
import useWindowSize from '@/hooks/useWindowSize';
|
||||
import { HelpTopic } from '@/models/miscellaneous';
|
||||
import { external_urls, youtube } from '@/utils/constants';
|
||||
|
||||
import Subtopics from './Subtopics';
|
||||
|
||||
function HelpRSLang() {
|
||||
const windowSize = useWindowSize();
|
||||
|
||||
|
@ -20,7 +23,6 @@ function HelpRSLang() {
|
|||
<div className='dense'>
|
||||
<h1>Родоструктурная экспликация концептуальных схем</h1>
|
||||
<p>Формальная запись (<i>экспликация</i>) концептуальных схем осуществляется с помощью языка родов структур.</p>
|
||||
<p>Данный математический аппарат основан на аксиоматической теории множеств Цермелло-Френкеля и аппарате родов структур Н.Бурбаки.</p>
|
||||
<br />
|
||||
<p>Для ознакомления с основами родов структур можно использовать следующие материалы:</p>
|
||||
<p>1. <a className='underline' href={external_urls.intro_video}>Видео: Краткое введение в мат. аппарат</a></p>
|
||||
|
@ -28,10 +30,13 @@ function HelpRSLang() {
|
|||
<p>3. <a className='underline' href={external_urls.full_course}>Видео: лекции для 4 курса (второй семестр 2022-23 год)</a></p>
|
||||
</div>
|
||||
<div className='justify-center w-full'>
|
||||
<EmbedYoutube
|
||||
videoID={youtube.intro}
|
||||
pxHeight={videoHeight}
|
||||
/>
|
||||
<EmbedYoutube
|
||||
videoID={youtube.intro}
|
||||
pxHeight={videoHeight}
|
||||
/>
|
||||
</div>
|
||||
<div className='dense'>
|
||||
<Subtopics headTopic={HelpTopic.RSLANG} />
|
||||
</div>
|
||||
</div>);
|
||||
}
|
||||
|
|
23
rsconcept/frontend/src/components/man/Subtopics.tsx
Normal file
23
rsconcept/frontend/src/components/man/Subtopics.tsx
Normal file
|
@ -0,0 +1,23 @@
|
|||
import { HelpTopic, topicParent } from '@/models/miscellaneous';
|
||||
import { prefixes } from '@/utils/constants';
|
||||
|
||||
import TopicItem from './TopicItem';
|
||||
|
||||
interface SubtopicsProps {
|
||||
headTopic: HelpTopic;
|
||||
}
|
||||
|
||||
function Subtopics({ headTopic }: SubtopicsProps) {
|
||||
return (
|
||||
<>
|
||||
<h2>Содержание раздела</h2>
|
||||
{Object.values(HelpTopic)
|
||||
.filter(topic => topic !== headTopic && topicParent.get(topic) === headTopic)
|
||||
.map(topic => (
|
||||
<TopicItem key={`${prefixes.topic_item}${topic}`} topic={topic} />
|
||||
))}
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export default Subtopics;
|
18
rsconcept/frontend/src/components/man/TopicItem.tsx
Normal file
18
rsconcept/frontend/src/components/man/TopicItem.tsx
Normal file
|
@ -0,0 +1,18 @@
|
|||
import { HelpTopic } from '@/models/miscellaneous';
|
||||
import { describeHelpTopic, labelHelpTopic } from '@/utils/labels';
|
||||
|
||||
import LinkTopic from '../ui/LinkTopic';
|
||||
|
||||
interface TopicItemProps {
|
||||
topic: HelpTopic;
|
||||
}
|
||||
|
||||
function TopicItem({ topic }: TopicItemProps) {
|
||||
return (
|
||||
<li>
|
||||
<LinkTopic text={labelHelpTopic(topic)} topic={topic} /> – {describeHelpTopic(topic)}
|
||||
</li>
|
||||
);
|
||||
}
|
||||
|
||||
export default TopicItem;
|
15
rsconcept/frontend/src/components/ui/LinkTopic.tsx
Normal file
15
rsconcept/frontend/src/components/ui/LinkTopic.tsx
Normal file
|
@ -0,0 +1,15 @@
|
|||
import { urls } from '@/app/urls';
|
||||
import { HelpTopic } from '@/models/miscellaneous';
|
||||
|
||||
import TextURL from './TextURL';
|
||||
|
||||
interface TextURLProps {
|
||||
text: string;
|
||||
topic: HelpTopic;
|
||||
}
|
||||
|
||||
function LinkTopic({ text, topic }: TextURLProps) {
|
||||
return <TextURL text={text} href={urls.help_topic(topic)} />;
|
||||
}
|
||||
|
||||
export default LinkTopic;
|
|
@ -46,10 +46,9 @@ export enum HelpTopic {
|
|||
|
||||
INTERFACE = 'user-interface',
|
||||
UI_LIBRARY = 'ui-library',
|
||||
UI_RSFORM = 'ui-rsform',
|
||||
UI_RSFORM_CARD = 'ui-rsform-card',
|
||||
UI_RSFORM_LIST = 'ui-rsform-list',
|
||||
UI_RSFORM_EDITOR = 'ui-rsform-editor',
|
||||
UI_RS_CARD = 'ui-rsform-card',
|
||||
UI_RS_LIST = 'ui-rsform-list',
|
||||
UI_RS_EDITOR = 'ui-rsform-editor',
|
||||
UI_GRAPH_TERM = 'ui-rsform-graph',
|
||||
UI_CST_STATUS = 'ui-rsform-cst-status',
|
||||
UI_CST_CLASS = 'ui-rsform-cst-class',
|
||||
|
@ -81,13 +80,12 @@ export const topicParent: Map<HelpTopic, HelpTopic> = new Map([
|
|||
|
||||
[HelpTopic.INTERFACE, HelpTopic.INTERFACE],
|
||||
[HelpTopic.UI_LIBRARY, HelpTopic.INTERFACE],
|
||||
[HelpTopic.UI_RSFORM, HelpTopic.INTERFACE],
|
||||
[HelpTopic.UI_RSFORM_CARD, HelpTopic.UI_RSFORM],
|
||||
[HelpTopic.UI_RSFORM_LIST, HelpTopic.UI_RSFORM],
|
||||
[HelpTopic.UI_RSFORM_EDITOR, HelpTopic.UI_RSFORM],
|
||||
[HelpTopic.UI_GRAPH_TERM, HelpTopic.UI_RSFORM],
|
||||
[HelpTopic.UI_CST_STATUS, HelpTopic.UI_RSFORM],
|
||||
[HelpTopic.UI_CST_CLASS, HelpTopic.UI_RSFORM],
|
||||
[HelpTopic.UI_RS_CARD, HelpTopic.INTERFACE],
|
||||
[HelpTopic.UI_RS_LIST, HelpTopic.INTERFACE],
|
||||
[HelpTopic.UI_RS_EDITOR, HelpTopic.INTERFACE],
|
||||
[HelpTopic.UI_GRAPH_TERM, HelpTopic.INTERFACE],
|
||||
[HelpTopic.UI_CST_STATUS, HelpTopic.INTERFACE],
|
||||
[HelpTopic.UI_CST_CLASS, HelpTopic.INTERFACE],
|
||||
|
||||
[HelpTopic.CONCEPTUAL, HelpTopic.CONCEPTUAL],
|
||||
[HelpTopic.CC_SYSTEM, HelpTopic.CONCEPTUAL],
|
||||
|
@ -111,7 +109,7 @@ export const topicParent: Map<HelpTopic, HelpTopic> = new Map([
|
|||
/**
|
||||
* Topics that can be folded.
|
||||
*/
|
||||
export const foldableTopics = [HelpTopic.INTERFACE, HelpTopic.UI_RSFORM, HelpTopic.RSLANG, HelpTopic.CONCEPTUAL];
|
||||
export const foldableTopics = [HelpTopic.INTERFACE, HelpTopic.RSLANG, HelpTopic.CONCEPTUAL];
|
||||
|
||||
/**
|
||||
* Represents {@link IConstituenta} matching mode.
|
||||
|
|
|
@ -10,7 +10,7 @@ import MiniButton from '@/components/ui/MiniButton';
|
|||
import Overlay from '@/components/ui/Overlay';
|
||||
import { foldableTopics, HelpTopic, topicParent } from '@/models/miscellaneous';
|
||||
import { animateSideAppear } from '@/styling/animations';
|
||||
import { prefixes } from '@/utils/constants';
|
||||
import { globals, prefixes } from '@/utils/constants';
|
||||
import { describeHelpTopic, labelHelpTopic } from '@/utils/labels';
|
||||
|
||||
interface TopicsTreeProps {
|
||||
|
@ -49,7 +49,8 @@ function TopicsTree({ activeTopic, topicFolded, onChangeTopic, onFoldTopic }: To
|
|||
'cursor-pointer',
|
||||
activeTopic === topic && 'clr-selected'
|
||||
)}
|
||||
title={describeHelpTopic(topic)}
|
||||
data-tooltip-id={globals.tooltip}
|
||||
data-tooltip-content={describeHelpTopic(topic)}
|
||||
onClick={() => onChangeTopic(topic)}
|
||||
initial={{ ...animateSideAppear.initial }}
|
||||
animate={{ ...animateSideAppear.animate }}
|
||||
|
@ -66,7 +67,7 @@ function TopicsTree({ activeTopic, topicFolded, onChangeTopic, onFoldTopic }: To
|
|||
/>
|
||||
</Overlay>
|
||||
) : null}
|
||||
{labelHelpTopic(topic)}
|
||||
{topicParent.get(topic) === topic ? labelHelpTopic(topic) : `- ${labelHelpTopic(topic).toLowerCase()}`}
|
||||
</motion.div>
|
||||
);
|
||||
})}
|
||||
|
|
|
@ -74,7 +74,7 @@ function ConstituentaToolbar({
|
|||
disabled={disabled || modified}
|
||||
onClick={onMoveDown}
|
||||
/>
|
||||
<BadgeHelp topic={HelpTopic.UI_RSFORM_EDITOR} offset={4} />
|
||||
<BadgeHelp topic={HelpTopic.UI_RS_EDITOR} offset={4} />
|
||||
</Overlay>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -81,7 +81,7 @@ function RSFormToolbar({ modified, anonymous, subscribed, claimable, onSubmit, o
|
|||
onClick={onDestroy}
|
||||
/>
|
||||
) : null}
|
||||
<BadgeHelp topic={HelpTopic.UI_RSFORM_CARD} offset={4} className='max-w-[32rem]' />
|
||||
<BadgeHelp topic={HelpTopic.UI_RS_CARD} offset={4} className='max-w-[32rem]' />
|
||||
</Overlay>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -68,7 +68,7 @@ function RSListToolbar() {
|
|||
disabled={controller.isProcessing || controller.nothingSelected}
|
||||
onClick={controller.deleteCst}
|
||||
/>
|
||||
<BadgeHelp topic={HelpTopic.UI_RSFORM_LIST} offset={5} />
|
||||
<BadgeHelp topic={HelpTopic.UI_RS_LIST} offset={5} />
|
||||
</Overlay>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -137,6 +137,7 @@ export const prefixes = {
|
|||
csttype_list: 'csttype_',
|
||||
library_filters_list: 'library_filters_list_',
|
||||
topic_list: 'topic_list_',
|
||||
topic_item: 'topic_item_',
|
||||
library_list: 'library_list_',
|
||||
wordform_list: 'wordform_list_',
|
||||
rsedit_btn: 'rsedit_btn_',
|
||||
|
|
|
@ -361,26 +361,25 @@ export function labelHelpTopic(topic: HelpTopic): string {
|
|||
case HelpTopic.MAIN: return 'Портал';
|
||||
|
||||
case HelpTopic.INTERFACE: return 'Интерфейс';
|
||||
case HelpTopic.UI_LIBRARY: return '- библиотека';
|
||||
case HelpTopic.UI_RSFORM: return '- концептуальная схема';
|
||||
case HelpTopic.UI_RSFORM_CARD: return '= карточка схемы';
|
||||
case HelpTopic.UI_RSFORM_LIST: return '= список конституент';
|
||||
case HelpTopic.UI_RSFORM_EDITOR: return '= редактор конституенты';
|
||||
case HelpTopic.UI_GRAPH_TERM: return '= граф термов';
|
||||
case HelpTopic.UI_CST_STATUS: return '= статус конституенты';
|
||||
case HelpTopic.UI_CST_CLASS: return '= класс конституенты';
|
||||
case HelpTopic.UI_LIBRARY: return 'Библиотека';
|
||||
case HelpTopic.UI_RS_CARD: return 'Карточка схемы';
|
||||
case HelpTopic.UI_RS_LIST: return 'Список конституент';
|
||||
case HelpTopic.UI_RS_EDITOR: return 'Редактор конституенты';
|
||||
case HelpTopic.UI_GRAPH_TERM: return 'Граф термов';
|
||||
case HelpTopic.UI_CST_STATUS: return 'Статус конституенты';
|
||||
case HelpTopic.UI_CST_CLASS: return 'Класс конституенты';
|
||||
|
||||
case HelpTopic.CONCEPTUAL: return 'Концептуализация';
|
||||
case HelpTopic.CC_SYSTEM: return '- система определений';
|
||||
case HelpTopic.CC_CONSTITUENTA: return '- конституента';
|
||||
case HelpTopic.CC_RELATIONS: return '- связи понятий';
|
||||
case HelpTopic.CC_SYSTEM: return 'Система определений';
|
||||
case HelpTopic.CC_CONSTITUENTA: return 'Конституента';
|
||||
case HelpTopic.CC_RELATIONS: return 'Связи понятий';
|
||||
|
||||
case HelpTopic.RSLANG: return 'Экспликация';
|
||||
case HelpTopic.RSL_TYPES: return '- типизация';
|
||||
case HelpTopic.RSL_CORRECT: return '- переносимость';
|
||||
case HelpTopic.RSL_INTERPRET: return '- интерпретируемость';
|
||||
case HelpTopic.RSL_TEMPLATES: return '- шаблоны выражений';
|
||||
case HelpTopic.RSL_OPERATIONS: return '- операции';
|
||||
case HelpTopic.RSL_TYPES: return 'Типизация';
|
||||
case HelpTopic.RSL_CORRECT: return 'Переносимость';
|
||||
case HelpTopic.RSL_INTERPRET: return 'Интерпретируемость';
|
||||
case HelpTopic.RSL_TEMPLATES: return 'Шаблоны выражений';
|
||||
case HelpTopic.RSL_OPERATIONS: return 'Операции';
|
||||
|
||||
case HelpTopic.TERM_CONTROL: return 'Терминологизация';
|
||||
case HelpTopic.VERSIONS: return 'Версионирование';
|
||||
|
@ -396,35 +395,34 @@ export function labelHelpTopic(topic: HelpTopic): string {
|
|||
export function describeHelpTopic(topic: HelpTopic): string {
|
||||
// prettier-ignore
|
||||
switch (topic) {
|
||||
case HelpTopic.MAIN: return 'Общая справка по порталу';
|
||||
case HelpTopic.MAIN: return 'общая справка по порталу';
|
||||
|
||||
case HelpTopic.INTERFACE: return 'Описание интерфейса пользователя';
|
||||
case HelpTopic.UI_LIBRARY: return 'Интерфейс Библиотеки схем';
|
||||
case HelpTopic.UI_RSFORM: return 'Просмотр и редактирование концептуальной схемы';
|
||||
case HelpTopic.UI_RSFORM_CARD: return 'Интерфейс Карточки схемы';
|
||||
case HelpTopic.UI_RSFORM_LIST: return 'Интерфейс Списка конституент';
|
||||
case HelpTopic.UI_RSFORM_EDITOR: return 'Интерфейс редактирования конституенты';
|
||||
case HelpTopic.UI_GRAPH_TERM: return 'Интерфейс графа термов';
|
||||
case HelpTopic.UI_CST_STATUS: return 'Нотация отображения статуса конституенты';
|
||||
case HelpTopic.UI_CST_CLASS: return 'Нотация отображения класса конституенты';
|
||||
case HelpTopic.INTERFACE: return 'описание интерфейса пользователя';
|
||||
case HelpTopic.UI_LIBRARY: return 'интерфейс Библиотеки схем';
|
||||
case HelpTopic.UI_RS_CARD: return 'интерфейс Карточки схемы';
|
||||
case HelpTopic.UI_RS_LIST: return 'интерфейс Списка конституент';
|
||||
case HelpTopic.UI_RS_EDITOR: return 'интерфейс редактирования конституенты';
|
||||
case HelpTopic.UI_GRAPH_TERM: return 'интерфейс графа термов';
|
||||
case HelpTopic.UI_CST_STATUS: return 'нотация отображения статуса конституенты';
|
||||
case HelpTopic.UI_CST_CLASS: return 'нотация отображения класса конституенты';
|
||||
|
||||
case HelpTopic.CONCEPTUAL: return 'Основы концептуализации и концептуального мышления';
|
||||
case HelpTopic.CC_SYSTEM: return 'Концептуальная схема как система понятий';
|
||||
case HelpTopic.CC_CONSTITUENTA: return 'Понятия конституенты и ее атрибутов';
|
||||
case HelpTopic.CC_RELATIONS: return 'Отношения между конституентами';
|
||||
case HelpTopic.CONCEPTUAL: return 'основы концептуализации и концептуального мышления';
|
||||
case HelpTopic.CC_SYSTEM: return 'концептуальная схема как система понятий';
|
||||
case HelpTopic.CC_CONSTITUENTA: return 'понятия конституенты и ее атрибутов';
|
||||
case HelpTopic.CC_RELATIONS: return 'отношения между конституентами';
|
||||
|
||||
case HelpTopic.RSLANG: return 'Справка по языку родов структур и экспликации';
|
||||
case HelpTopic.RSL_TYPES: return 'Система типов в родоструктурной экспликации';
|
||||
case HelpTopic.RSL_CORRECT: return 'Корректность и переносимость определений';
|
||||
case HelpTopic.RSL_INTERPRET: return 'Интерпретация формальных определений';
|
||||
case HelpTopic.RSL_TEMPLATES: return 'Работа с шаблонными выражениями';
|
||||
case HelpTopic.RSL_OPERATIONS: return 'Операции над концептуальными схемами';
|
||||
case HelpTopic.RSLANG: return 'справка по языку родов структур и экспликации';
|
||||
case HelpTopic.RSL_TYPES: return 'система типов в родоструктурной экспликации';
|
||||
case HelpTopic.RSL_CORRECT: return 'корректность и переносимость определений';
|
||||
case HelpTopic.RSL_INTERPRET: return 'интерпретация формальных определений';
|
||||
case HelpTopic.RSL_TEMPLATES: return 'работа с шаблонными выражениями';
|
||||
case HelpTopic.RSL_OPERATIONS: return 'операции над концептуальными схемами';
|
||||
|
||||
case HelpTopic.TERM_CONTROL: return 'Справка по контролю терминов и текстовым отсылкам';
|
||||
case HelpTopic.VERSIONS: return 'Справка по управлению версиями схем';
|
||||
case HelpTopic.EXTEOR: return 'Справка по программе для экспликации "Экстеор" для Windows';
|
||||
case HelpTopic.API: return 'Интерфейс для разработчиков';
|
||||
case HelpTopic.PRIVACY: return 'Политика обработки персональных данных';
|
||||
case HelpTopic.TERM_CONTROL: return 'справка по контролю терминов и текстовым отсылкам';
|
||||
case HelpTopic.VERSIONS: return 'справка по управлению версиями схем';
|
||||
case HelpTopic.EXTEOR: return 'справка по программе для экспликации "Экстеор" для Windows';
|
||||
case HelpTopic.API: return 'интерфейс для разработчиков';
|
||||
case HelpTopic.PRIVACY: return 'политика обработки персональных данных';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user