mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 13:00:39 +03:00
UI changes
This commit is contained in:
parent
631cf61d17
commit
153194c581
|
@ -18,7 +18,7 @@ import UserProfilePage from './pages/UserProfilePage';
|
||||||
function Root() {
|
function Root() {
|
||||||
const { noNavigation, noFooter, viewportHeight, mainHeight } = useConceptTheme();
|
const { noNavigation, noFooter, viewportHeight, mainHeight } = useConceptTheme();
|
||||||
return (
|
return (
|
||||||
<div className='antialiased clr-app'>
|
<div className='w-screen antialiased clr-app'>
|
||||||
<Navigation />
|
<Navigation />
|
||||||
<ToasterThemed
|
<ToasterThemed
|
||||||
className='mt-[4rem] text-sm'
|
className='mt-[4rem] text-sm'
|
||||||
|
@ -26,11 +26,11 @@ function Root() {
|
||||||
draggable={false}
|
draggable={false}
|
||||||
pauseOnFocusLoss={false}
|
pauseOnFocusLoss={false}
|
||||||
/>
|
/>
|
||||||
<div className='overflow-auto' style={{maxHeight: viewportHeight}}>
|
<div className='w-full overflow-auto' style={{maxHeight: viewportHeight}}>
|
||||||
<main className='h-full' style={{minHeight: mainHeight}}>
|
<main className='w-full h-full' style={{minHeight: mainHeight}}>
|
||||||
<Outlet />
|
<Outlet />
|
||||||
</main>
|
</main>
|
||||||
{!noNavigation && !noFooter && <Footer />}
|
{!noNavigation && !noFooter && <Footer />}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
@ -4,7 +4,7 @@ import { urls } from '../utils/constants';
|
||||||
|
|
||||||
function Footer() {
|
function Footer() {
|
||||||
return (
|
return (
|
||||||
<footer className='z-50 px-4 pt-2 pb-4 text-sm border-t-2 border-white select-none whitespace-nowrap clr-footer'>
|
<footer className='z-50 px-4 pt-2 pb-4 text-sm select-none whitespace-nowrap clr-footer'>
|
||||||
<div className='justify-center w-full mx-auto'>
|
<div className='justify-center w-full mx-auto'>
|
||||||
<div className='mb-2 text-center'>
|
<div className='mb-2 text-center'>
|
||||||
<Link className='mx-2 hover:underline' to='/library' tabIndex={-1}>Библиотека</Link>
|
<Link className='mx-2 hover:underline' to='/library' tabIndex={-1}>Библиотека</Link>
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { EducationIcon, EyeIcon, GroupIcon } from '../Icons';
|
||||||
|
|
||||||
function HelpLibrary() {
|
function HelpLibrary() {
|
||||||
return (
|
return (
|
||||||
<div className=''>
|
<div className='w-full'>
|
||||||
<h1>Библиотека концептуальных схем</h1>
|
<h1>Библиотека концептуальных схем</h1>
|
||||||
<p>В библиотеки собраны различные концептуальные схемы.</p>
|
<p>В библиотеки собраны различные концептуальные схемы.</p>
|
||||||
<p>Группировка и классификации схем на данный момент не проводится.</p>
|
<p>Группировка и классификации схем на данный момент не проводится.</p>
|
||||||
|
@ -18,7 +18,7 @@ function HelpLibrary() {
|
||||||
</div>
|
</div>
|
||||||
<div className='flex items-center gap-2'>
|
<div className='flex items-center gap-2'>
|
||||||
<EducationIcon size={4}/>
|
<EducationIcon size={4}/>
|
||||||
<p>Аттрибут <b>библиотечная</b> выделяет неизменяемые стандартные схемы.</p>
|
<p>Аттрибут <b>неизменяемая</b> выделяет неизменяемые стандартные схемы.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
@ -4,19 +4,19 @@ import TextURL from '../Common/TextURL';
|
||||||
|
|
||||||
function HelpMain() {
|
function HelpMain() {
|
||||||
return (
|
return (
|
||||||
<div className='w-full lg:text-justify'>
|
<div className='w-full'>
|
||||||
<h1>Портал</h1>
|
<h1>Портал</h1>
|
||||||
<p className='lg:text-left indent-6'>Портал позволяет анализировать предметные области, формально записывать системы определений (концептуальные схемы) и синтезировать их с помощью математического аппарата родов структур.</p>
|
<p className='lg:text-left indent-10'>Портал позволяет анализировать предметные области, формально записывать системы определений (концептуальные схемы) и синтезировать их с помощью математического аппарата родов структур.</p>
|
||||||
<p className='lg:text-left indent-6'>Навигация по порталу осуществляется верхнюю панель или ссылки в "подвале" страницы. Их можно скрыть с помощью кнопки в правом верхнем углу</p>
|
<p className='lg:text-left indent-10'>Навигация по порталу осуществляется верхнюю панель или ссылки в "подвале" страницы. Их можно скрыть с помощью кнопки в правом верхнем углу</p>
|
||||||
<p className='lg:text-left indent-6'>В меню пользователя (правый верхний угол) редактирование данных пользователя и изменение цветовой темы.</p>
|
<p className='lg:text-left indent-10'>В меню пользователя (правый верхний угол) редактирование данных пользователя и изменение цветовой темы.</p>
|
||||||
<p className='mt-4 mb-1 text-center'><b>Основные разделы</b></p>
|
<p className='mt-4 mb-1 text-center'><b>Основные разделы</b></p>
|
||||||
<li><TextURL text='Библиотека' href='/library' /> - все схемы доступные пользователю</li>
|
<li className='lg:text-left indent-5'><TextURL text='Библиотека' href='/library' /> - все схемы доступные пользователю</li>
|
||||||
<li><TextURL text='Общие схемы' href={`/library?filter=${LibraryFilterStrategy.COMMON}`} /> - общедоступные схемы и инструменты поиска и навигации по ним</li>
|
<li className='lg:text-left indent-5'><TextURL text='Общие схемы' href={`/library?filter=${LibraryFilterStrategy.COMMON}`} /> - общедоступные схемы и инструменты поиска и навигации по ним</li>
|
||||||
<li><TextURL text='Мои схемы' href={`/library?filter=${LibraryFilterStrategy.PERSONAL}`} /> - отслеживаемые и редактируемые схемы. Основной рабочий раздел</li>
|
<li className='lg:text-left indent-5'><TextURL text='Мои схемы' href={`/library?filter=${LibraryFilterStrategy.PERSONAL}`} /> - отслеживаемые и редактируемые схемы. Основной рабочий раздел</li>
|
||||||
<li><TextURL text='Профиль' href='/profile' /> - данные пользователя и смена пароля</li>
|
<li className='lg:text-left indent-5'><TextURL text='Профиль' href='/profile' /> - данные пользователя и смена пароля</li>
|
||||||
<p className='mt-4 mb-1 text-center'><b>Поддержка</b></p>
|
<p className='mt-4 mb-1 text-center'><b>Поддержка</b></p>
|
||||||
<p className='lg:text-left indent-6'>Портал разрабатывается <TextURL text='Центром Концепт' href={urls.concept}/> и является проектом с открытым исходным кодом, доступным на <TextURL text='Github' href={urls.gitrepo}/>.</p>
|
<p className='lg:text-left indent-10'>Портал разрабатывается <TextURL text='Центром Концепт' href={urls.concept}/> и является проектом с открытым исходным кодом, доступным на <TextURL text='Github' href={urls.gitrepo}/>.</p>
|
||||||
<p className='lg:text-left indent-6'>Ждём Ваши пожелания по доработке, найденные ошибки и иные предложения по адресу <TextURL href={urls.mailportal} text='portal@acconcept.ru'/></p>
|
<p className='lg:text-left indent-10'>Ждём Ваши пожелания по доработке, найденные ошибки и иные предложения по адресу <TextURL href={urls.mailportal} text='portal@acconcept.ru'/></p>
|
||||||
<p></p>
|
<p></p>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
function HelpRSFormMeta() {
|
function HelpRSFormMeta() {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<h1>Концептуальная схема</h1>
|
<h1>Паспорт схемы</h1>
|
||||||
<p><b>Владелец</b> - пользователь, обладающий правом редактирования</p>
|
<p><b>Владелец</b> - пользователь, обладающий правом редактирования</p>
|
||||||
<p>Для <b>общедоступных</b> схем владельцем может стать любой пользователь</p>
|
<p>Для <b>общедоступных</b> схем владельцем может стать любой пользователь</p>
|
||||||
<p>Для <b>библиотечных</b> схем правом редактирования обладают только администраторы</p>
|
<p>Для <b>библиотечных</b> схем правом редактирования обладают только администраторы</p>
|
||||||
|
|
|
@ -20,7 +20,7 @@ function HelpRSLang() {
|
||||||
<div className='flex flex-col w-full gap-4'>
|
<div className='flex flex-col w-full gap-4'>
|
||||||
<div>
|
<div>
|
||||||
<h1>Язык родов структур</h1>
|
<h1>Язык родов структур</h1>
|
||||||
<p>Формальная запись (<u>экспликация</u>) концептуальных схем осуществляется с помощью языка родов структур.</p>
|
<p>Формальная запись (<i>экспликация</i>) концептуальных схем осуществляется с помощью языка родов структур.</p>
|
||||||
<p>Данный математический аппарат основан на аксиоматической теории множеств Цермелло-Френкеля и аппарате родов структур Н.Бурбаки.</p>
|
<p>Данный математический аппарат основан на аксиоматической теории множеств Цермелло-Френкеля и аппарате родов структур Н.Бурбаки.</p>
|
||||||
<p>Для ознакомления с основами родов структур можно использовать следующие материалы:</p>
|
<p>Для ознакомления с основами родов структур можно использовать следующие материалы:</p>
|
||||||
<ul>
|
<ul>
|
||||||
|
|
|
@ -4,7 +4,7 @@ import InfoCstStatus from './InfoCstStatus';
|
||||||
|
|
||||||
function HelpTermGraph() {
|
function HelpTermGraph() {
|
||||||
return (
|
return (
|
||||||
<div className='flex text-sm'>
|
<div className='flex'>
|
||||||
<div>
|
<div>
|
||||||
<h1>Настройка графа</h1>
|
<h1>Настройка графа</h1>
|
||||||
<p><b>Цвет</b> - выбор правила покраски узлов</p>
|
<p><b>Цвет</b> - выбор правила покраски узлов</p>
|
||||||
|
@ -20,7 +20,7 @@ function HelpTermGraph() {
|
||||||
<div>
|
<div>
|
||||||
<h1>Горячие клавиши</h1>
|
<h1>Горячие клавиши</h1>
|
||||||
<p><b>Клик на конституенту</b> - выделение, включая скрытые конституенты</p>
|
<p><b>Клик на конституенту</b> - выделение, включая скрытые конституенты</p>
|
||||||
<p><b>Довйной клик</b> - редактирование конституенты</p>
|
<p><b>Двойной клик</b> - редактирование конституенты</p>
|
||||||
<p><b>Delete</b> - удалить выбранные</p>
|
<p><b>Delete</b> - удалить выбранные</p>
|
||||||
|
|
||||||
<Divider margins='mt-2' />
|
<Divider margins='mt-2' />
|
||||||
|
|
|
@ -17,7 +17,7 @@ function InfoCstClass({ title }: InfoCstClassProps) {
|
||||||
return (
|
return (
|
||||||
<p key={`${prefixes.cst_status_list}${index}`}>
|
<p key={`${prefixes.cst_status_list}${index}`}>
|
||||||
<span
|
<span
|
||||||
className='px-1 inline-block font-semibold min-w-[6.5rem] text-center borde'
|
className='px-1 inline-block font-semibold min-w-[7rem] text-center border'
|
||||||
style={{backgroundColor: getCstClassColor(cstClass, colors)}}
|
style={{backgroundColor: getCstClassColor(cstClass, colors)}}
|
||||||
|
|
||||||
>
|
>
|
||||||
|
|
|
@ -17,7 +17,7 @@ function InfoCstStatus({ title }: InfoCstStatusProps) {
|
||||||
return (
|
return (
|
||||||
<p key={`${prefixes.cst_status_list}${index}`}>
|
<p key={`${prefixes.cst_status_list}${index}`}>
|
||||||
<span
|
<span
|
||||||
className='px-1 inline-block font-semibold min-w-[4rem] text-center border'
|
className='px-1 inline-block font-semibold min-w-[5rem] text-center border'
|
||||||
style={{backgroundColor: getCstStatusColor(status, colors)}}
|
style={{backgroundColor: getCstStatusColor(status, colors)}}
|
||||||
>
|
>
|
||||||
{info.text}
|
{info.text}
|
||||||
|
|
|
@ -27,11 +27,11 @@
|
||||||
|
|
||||||
@layer components {
|
@layer components {
|
||||||
:root {
|
:root {
|
||||||
@apply bg-gray-50
|
@apply bg-gray-50;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark {
|
.dark {
|
||||||
@apply text-zinc-200 bg-gray-800
|
@apply text-zinc-200 bg-[#181818]
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
|
@ -63,7 +63,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.clr-modal {
|
.clr-modal {
|
||||||
@apply bg-gray-300 dark:bg-gray-800
|
@apply bg-gray-300 dark:bg-[#272727]
|
||||||
}
|
}
|
||||||
|
|
||||||
.clr-nav {
|
.clr-nav {
|
||||||
|
@ -71,7 +71,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.clr-input {
|
.clr-input {
|
||||||
@apply dark:bg-[#070b12] bg-white disabled:bg-[#c6c6c6] dark:disabled:bg-[#181818]
|
@apply dark:bg-[#181818] bg-white disabled:bg-[#c6c6c6] dark:disabled:bg-[#181818]
|
||||||
}
|
}
|
||||||
|
|
||||||
.clr-footer {
|
.clr-footer {
|
||||||
|
@ -79,11 +79,11 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.clr-card {
|
.clr-card {
|
||||||
@apply bg-gray-50 dark:bg-gray-600
|
@apply bg-gray-50 dark:bg-[#272727]
|
||||||
}
|
}
|
||||||
|
|
||||||
.clr-tab {
|
.clr-tab {
|
||||||
@apply clr-border text-gray-600 dark:text-zinc-200 hover:bg-gray-300 dark:hover:bg-gray-400
|
@apply clr-border text-gray-700 dark:text-zinc-200 hover:bg-blue-200 dark:hover:bg-[#EA580C]
|
||||||
}
|
}
|
||||||
|
|
||||||
.clr-hover {
|
.clr-hover {
|
||||||
|
@ -106,7 +106,7 @@
|
||||||
@apply text-white bg-blue-400 hover:bg-blue-600 dark:bg-blue-600 dark:hover:bg-blue-400 dark:text-black disabled:bg-gray-400 dark:disabled:bg-gray-600
|
@apply text-white bg-blue-400 hover:bg-blue-600 dark:bg-blue-600 dark:hover:bg-blue-400 dark:text-black disabled:bg-gray-400 dark:disabled:bg-gray-600
|
||||||
}
|
}
|
||||||
.clr-btn-default {
|
.clr-btn-default {
|
||||||
@apply bg-[#f0f2f7] hover:bg-gray-300 dark:bg-gray-600 dark:hover:bg-gray-400 text-btn
|
@apply bg-[#f0f2f7] hover:bg-gray-300 dark:bg-[#434343] dark:hover:bg-[#606060] text-btn
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Transparent button */
|
/* Transparent button */
|
||||||
|
@ -115,7 +115,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.clr-checkbox {
|
.clr-checkbox {
|
||||||
@apply bg-white dark:bg-gray-900 checked:bg-blue-700 dark:checked:bg-orange-500
|
@apply bg-white dark:bg-[#181818] checked:bg-blue-700 dark:checked:bg-orange-500
|
||||||
}
|
}
|
||||||
|
|
||||||
.clr-input-red {
|
.clr-input-red {
|
||||||
|
|
|
@ -43,9 +43,9 @@ function ViewLibrary({ items, cleanQuery }: ViewLibraryProps) {
|
||||||
className='flex items-center justify-start gap-1'
|
className='flex items-center justify-start gap-1'
|
||||||
id={`${prefixes.library_list}${item.id}`}
|
id={`${prefixes.library_list}${item.id}`}
|
||||||
>
|
>
|
||||||
{user && user.subscriptions.includes(item.id) && <EyeIcon size={3}/>}
|
{user && user.subscriptions.includes(item.id) && <p title="Отслеживаемая"><EyeIcon size={3}/></p>}
|
||||||
{item.is_common && <GroupIcon size={3}/>}
|
{item.is_common && <p title="Общедоступная"><GroupIcon size={3}/></p>}
|
||||||
{item.is_canonical && <EducationIcon size={3}/>}
|
{item.is_canonical && <p title="Неизменяемая"><EducationIcon size={3}/></p>}
|
||||||
</div>
|
</div>
|
||||||
</>);
|
</>);
|
||||||
},
|
},
|
||||||
|
|
|
@ -15,7 +15,7 @@ function TopicsList({ activeTopic, onChangeTopic }: TopicsListProps) {
|
||||||
([topic, info], index) => {
|
([topic, info], index) => {
|
||||||
return (
|
return (
|
||||||
<div key={`${prefixes.topic_list}${index}`}
|
<div key={`${prefixes.topic_list}${index}`}
|
||||||
className={`px-3 py-1 border-y cursor-pointer clr-hover clr-border ${activeTopic === topic ? 'font-semibold underline' : ''}`}
|
className={`px-3 py-1 border-y cursor-pointer hover:bg-blue-200 dark:hover:bg-[#EA580C] clr-border ${activeTopic === topic ? 'font-bold bg-blue-200 dark:bg-[#EA580C] ' : ''}`}
|
||||||
title={info.tooltip}
|
title={info.tooltip}
|
||||||
onClick={() => onChangeTopic(topic)}
|
onClick={() => onChangeTopic(topic)}
|
||||||
>
|
>
|
||||||
|
|
|
@ -15,7 +15,7 @@ interface ViewTopicProps {
|
||||||
|
|
||||||
function ViewTopic({ topic }: ViewTopicProps) {
|
function ViewTopic({ topic }: ViewTopicProps) {
|
||||||
return (
|
return (
|
||||||
<div className='px-2 py-2'>
|
<div className='w-full px-2 py-2'>
|
||||||
{topic === HelpTopic.MAIN && <HelpMain />}
|
{topic === HelpTopic.MAIN && <HelpMain />}
|
||||||
{topic === HelpTopic.RSLANG && <HelpRSLang />}
|
{topic === HelpTopic.RSLANG && <HelpRSLang />}
|
||||||
{topic === HelpTopic.LIBRARY && <HelpLibrary />}
|
{topic === HelpTopic.LIBRARY && <HelpLibrary />}
|
||||||
|
|
|
@ -138,7 +138,7 @@ function EditorRSForm({ onDestroy, onClaim, onShare, onDownload }: EditorRSFormP
|
||||||
disabled={!isEditable}
|
disabled={!isEditable}
|
||||||
onChange={event => setCommon(event.target.checked)}
|
onChange={event => setCommon(event.target.checked)}
|
||||||
/>
|
/>
|
||||||
<Checkbox id='canonical' label='Библиотечная схема'
|
<Checkbox id='canonical' label='Неизменяемая схема'
|
||||||
widthClass='w-fit'
|
widthClass='w-fit'
|
||||||
value={canonical}
|
value={canonical}
|
||||||
tooltip='Только администраторы могут присваивать схемам библиотечный статус'
|
tooltip='Только администраторы могут присваивать схемам библиотечный статус'
|
||||||
|
|
|
@ -293,7 +293,7 @@ function RSTabs() {
|
||||||
selectedIndex={activeTab}
|
selectedIndex={activeTab}
|
||||||
onSelect={onSelectTab}
|
onSelect={onSelectTab}
|
||||||
defaultFocus={true}
|
defaultFocus={true}
|
||||||
selectedTabClassName='font-bold'
|
selectedTabClassName='font-bold bg-blue-200 dark:bg-[#EA580C]'
|
||||||
>
|
>
|
||||||
<TabList className='flex items-start pl-2 border-b border-r-2 select-none w-fit clr-bg-pop clr-border'>
|
<TabList className='flex items-start pl-2 border-b border-r-2 select-none w-fit clr-bg-pop clr-border'>
|
||||||
<RSTabsMenu
|
<RSTabsMenu
|
||||||
|
|
|
@ -43,15 +43,15 @@ export const lightT: IColorTheme = {
|
||||||
export const darkT: IColorTheme = {
|
export const darkT: IColorTheme = {
|
||||||
red: '#bf0d00',
|
red: '#bf0d00',
|
||||||
green: '#2b8000',
|
green: '#2b8000',
|
||||||
blue: '#394bbf',
|
blue: '#bf0d00',
|
||||||
teal: '#0099bf',
|
teal: '#0099bf',
|
||||||
orange: '#964600',
|
orange: '#964600',
|
||||||
|
|
||||||
text: '#e4e4e7',
|
text: '#e4e4e7',
|
||||||
|
|
||||||
input: '#070b12',
|
input: '#181818',
|
||||||
inputDisabled: '#374151', // bg-gray-700
|
inputDisabled: '#272727', // bg-gray-700
|
||||||
selection: '#8c6000',
|
selection: '#394bbf',
|
||||||
selectionError: '#592b2b'
|
selectionError: '#592b2b'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -361,23 +361,23 @@ export const mapTopicInfo: Map<HelpTopic, IDescriptor> = new Map([
|
||||||
tooltip: 'Справка по языку родов структур и экспликации'
|
tooltip: 'Справка по языку родов структур и экспликации'
|
||||||
}],
|
}],
|
||||||
[ HelpTopic.LIBRARY, {
|
[ HelpTopic.LIBRARY, {
|
||||||
text: 'Библиотека',
|
text: 'Библиотека:',
|
||||||
tooltip: 'Интерфейс работы с библиотекой схем'
|
tooltip: 'Интерфейс работы с библиотекой схем'
|
||||||
}],
|
}],
|
||||||
[ HelpTopic.RSFORM, {
|
[ HelpTopic.RSFORM, {
|
||||||
text: 'Концептуальная схема',
|
text: '- паспорт схемы',
|
||||||
tooltip: 'Интерфейс работы с описанием схемы'
|
tooltip: 'Интерфейс работы с описанием схемы'
|
||||||
}],
|
}],
|
||||||
[ HelpTopic.CSTLIST, {
|
[ HelpTopic.CSTLIST, {
|
||||||
text: 'Список конституент',
|
text: '- список конституент',
|
||||||
tooltip: 'Интерфейс работы со списком конституент'
|
tooltip: 'Интерфейс работы со списком конституент'
|
||||||
}],
|
}],
|
||||||
[ HelpTopic.CONSTITUENTA, {
|
[ HelpTopic.CONSTITUENTA, {
|
||||||
text: 'Конституента',
|
text: '- конституента',
|
||||||
tooltip: 'Интерфейс редактирования конституенты'
|
tooltip: 'Интерфейс редактирования конституенты'
|
||||||
}],
|
}],
|
||||||
[ HelpTopic.GRAPH_TERM, {
|
[ HelpTopic.GRAPH_TERM, {
|
||||||
text: 'Граф термов',
|
text: '- граф термов',
|
||||||
tooltip: 'Интерфейс работ с графом термов схемы'
|
tooltip: 'Интерфейс работ с графом термов схемы'
|
||||||
}],
|
}],
|
||||||
[ HelpTopic.EXTEOR, {
|
[ HelpTopic.EXTEOR, {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user