mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 04:50:36 +03:00
Improve mobile size UI
This commit is contained in:
parent
24d5d723d4
commit
48d9eea153
|
@ -19,7 +19,7 @@ function HelpButton({ topic, ...restProps }: HelpButtonProps) {
|
|||
<BiInfoCircle size='1.25rem' className='clr-text-primary' />
|
||||
<Tooltip clickable anchorSelect={`#help-${topic}`} layer='z-modal-tooltip' {...restProps}>
|
||||
<div className='relative' onClick={event => event.stopPropagation()}>
|
||||
<div className='absolute right-0 text-sm top-[0.4rem]'>
|
||||
<div className='absolute right-0 text-sm top-[0.4rem] clr-input'>
|
||||
<TextURL text='Справка...' href={`/manuals?topic=${topic}`} />
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -8,16 +8,15 @@ function HelpConstituenta() {
|
|||
<h1>Редактор конституент</h1>
|
||||
<p><b>Сохранить изменения</b>: Ctrl + S или клик по кнопке Сохранить</p>
|
||||
<p className='mt-1'><b>Формальное определение</b></p>
|
||||
<p>- Ctrl + Пробел после ввода первой буквы дополняет до незанятого имени</p>
|
||||
<p>- Ctrl + Пробел дополняет до незанятого имени</p>
|
||||
<p>- специальные конструкции вводятся с помощью кнопок снизу</p>
|
||||
<p className='mt-1'><b>Термин и Определение</b>: Ctrl + Пробел открывает диалог редактирования отсылок<br/>Перед открытием диалога переместите текстовый курсор на заменяемое слово или ссылку</p>
|
||||
<p className='mt-1'><b>Список конституент справа</b>: обратите внимание на настройки фильтрации</p>
|
||||
<p className='mt-1'><b>Термин и Определение</b></p>
|
||||
<p>- Ctrl + Пробел открывает редактирование отсылок</p>
|
||||
<p className='mt-1'><b>Список конституент справа</b></p>
|
||||
<p>- первая настройка - атрибуты конституенты</p>
|
||||
<p>- вторая настройка - принцип отбора конституент по графу термов</p>
|
||||
<p>- текущая конституента выделена цветом</p>
|
||||
<p>- двойной клик / Alt + клик - выбор редактируемой конституенты</p>
|
||||
<p>- при наведении на имя конституенты отображаются ее атрибуты</p>
|
||||
<p>- столбец "Описание" содержит один из непустых текстовых атрибутов</p>
|
||||
<p>- вторая настройка - отбор по графу термов</p>
|
||||
<p>- текущая конституента выделена цветом строки</p>
|
||||
<p>- при наведении на имя конституенты отображаются атрибуты</p>
|
||||
|
||||
<Divider margins='my-2' />
|
||||
|
||||
|
|
|
@ -5,22 +5,21 @@ function HelpLibrary() {
|
|||
// prettier-ignore
|
||||
return (
|
||||
<div>
|
||||
<h1>Библиотека концептуальных схем</h1>
|
||||
<p>В библиотеки собраны различные концептуальные схемы.</p>
|
||||
<p>Группировка и классификации схем на данный момент не проводится.</p>
|
||||
<p>На текущем этапе происходит наполнение Библиотеки концептуальными схемами.</p>
|
||||
<p>Поиск осуществляется с помощью инструментов в верхней части страницы.</p>
|
||||
<h1>Библиотека схем</h1>
|
||||
<p>В библиотеки собраны концептуальные схемы - системы понятий, используемые в теории и практике концептуального проектирования систем организационного управления</p>
|
||||
<p>Фильтрация с помощью инструментов в верхней части страницы</p>
|
||||
<p>Сортировка по клику на заголовок таблицы</p>
|
||||
<div className='flex items-center gap-2'>
|
||||
<FiBell size='1rem'/>
|
||||
<p>Аттрибут <b>отслеживаемая</b> обозначает отслеживание схемы.</p>
|
||||
</div>
|
||||
<p><b>отслеживаемая</b> обозначает отслеживание схемы</p>
|
||||
p</div>
|
||||
<div className='flex items-center gap-2'>
|
||||
<BiShareAlt size='1rem'/>
|
||||
<p>Аттрибут <b>общедоступная</b> делает схему видимой в разделе библиотека.</p>
|
||||
<p><b>общедоступная</b> отображает схему всем пользователям</p>
|
||||
</div>
|
||||
<div className='flex items-center gap-2'>
|
||||
<BiCheckShield size='1rem'/>
|
||||
<p>Аттрибут <b>неизменная</b> выделяет стандартные схемы.</p>
|
||||
<p><b>неизменная</b> выделяет стандартные схемы</p>
|
||||
</div>
|
||||
</div>);
|
||||
}
|
||||
|
|
|
@ -6,17 +6,17 @@ function HelpMain() {
|
|||
return (
|
||||
<div>
|
||||
<h1>Портал</h1>
|
||||
<p className=''>Портал позволяет анализировать предметные области, формально записывать системы определений (концептуальные схемы) и синтезировать их с помощью математического аппарата родов структур.</p>
|
||||
<p>Портал позволяет анализировать предметные области, формально записывать системы определений и синтезировать их с помощью математического аппарата родов структур.</p>
|
||||
<p className='mt-4 mb-1 text-center'><b>Основные разделы</b></p>
|
||||
<li><TextURL text='Библиотека' href='/library' /> - библиотека концептуальных схем. Доступны сортировка, поиск и фильтрация</li>
|
||||
<li><TextURL text='Библиотека' href='/library' /> - библиотека концептуальных схем</li>
|
||||
<li><TextURL text='Профиль' href='/profile' /> - данные пользователя и смена пароля</li>
|
||||
|
||||
<p className='mt-4 mb-1 text-center'><b>Навигация</b></p>
|
||||
<p>Навигационную панель можно скрыть/отобразить с помощью кнопки в правом верхнем углу.</p>
|
||||
<p>В меню пользователя (правый верхний угол) доступно редактирование данных пользователя и изменение цветовой темы.</p>
|
||||
<p>Навигационную панель можно скрыть с помощью кнопки в правом верхнем углу</p>
|
||||
<p>В меню пользователя (правый верхний угол) доступно редактирование данных пользователя и изменение цветовой темы</p>
|
||||
|
||||
<p className='mt-4 mb-1 text-center'><b>Поддержка</b></p>
|
||||
<p>Портал разрабатывается <TextURL text='Центром Концепт' href={urls.concept}/> и является проектом с открытым исходным кодом, доступным на <TextURL text='Github' href={urls.git_repo}/>.</p>
|
||||
<p>Портал разрабатывается <TextURL text='Центром Концепт' href={urls.concept}/> и является проектом с открытым исходным кодом, доступным на <TextURL text='Github' href={urls.git_repo}/></p>
|
||||
<p>Ваши пожелания по доработке, найденные ошибки и иные предложения можно направлять по email: <TextURL href={urls.mail_portal} text='portal@acconcept.ru'/></p>
|
||||
</div>);
|
||||
}
|
||||
|
|
|
@ -5,11 +5,11 @@ function HelpRSFormMeta() {
|
|||
<h1>Паспорт схемы</h1>
|
||||
<p><b>Сохранить изменения</b>: Ctrl + S или клик по кнопке Сохранить</p>
|
||||
<p><b>Владелец</b> - пользователь, обладающий правом редактирования</p>
|
||||
<p>Для <b>общедоступных</b> схем владельцем может стать любой пользователь</p>
|
||||
<p>Для <b>неизменных</b> схем правом редактирования обладают только администраторы</p>
|
||||
<p><b>Клонировать</b> - создать копию схемы для дальнейшего редактирования</p>
|
||||
<p><b>Отслеживание</b> - возможность видеть схему в Библиотеке и использовать фильтры</p>
|
||||
<p><b>Загрузить/Выгрузить схему</b> - взаимодействие с Экстеор через файлы формата TRS</p>
|
||||
<p><b>Общедоступные</b> схемы доступы для всех</p>
|
||||
<p><b>Неизменные</b> схемы редактируют только администраторы</p>
|
||||
<p><b>Клонировать</b> - создать копию схемы под своим именем</p>
|
||||
<p><b>Отслеживание</b> - отображение схемы в персональном списке</p>
|
||||
<p><b>Загрузить/Выгрузить схему</b> - взаимодействие с Экстеор</p>
|
||||
</div>);
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import Divider from '@/components/ui/Divider';
|
|||
function HelpTermGraph() {
|
||||
// prettier-ignore
|
||||
return (
|
||||
<div className='flex max-w-[80rem]'>
|
||||
<div className='flex max-w-[80rem] min-w-[45rem]'>
|
||||
<div>
|
||||
<h1>Настройка графа</h1>
|
||||
<p><b>Цвет</b> - выбор правила покраски узлов</p>
|
||||
|
@ -21,9 +21,9 @@ function HelpTermGraph() {
|
|||
<Divider vertical margins='mx-3' />
|
||||
|
||||
<div>
|
||||
<h1>Горячие клавиши</h1>
|
||||
<p><b>Клик на конституенту</b> - выделение, включая скрытые конституенты</p>
|
||||
<p><b>Двойной клик</b> - редактирование конституенты</p>
|
||||
<h1>Клавиши</h1>
|
||||
<p><b>Клик на конституенту</b> - выделение</p>
|
||||
<p><b>Клик на выделенную</b> - редактирование</p>
|
||||
<p><b>Delete</b> - удалить выбранные</p>
|
||||
<br />
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ function Tooltip({
|
|||
opacity={0.97}
|
||||
className={clsx('overflow-hidden', 'border shadow-md', layer, className)}
|
||||
classNameArrow={layer}
|
||||
style={{ ...{ paddingTop: '2px', paddingBottom: '2px' }, ...style }}
|
||||
style={{ ...{ paddingTop: '2px', paddingBottom: '2px', overflowX: 'auto', overflowY: 'auto' }, ...style }}
|
||||
variant={darkMode ? 'dark' : 'light'}
|
||||
place={place}
|
||||
{...restProps}
|
||||
|
|
|
@ -47,8 +47,8 @@ function SearchPanel({ total, filtered, query, setQuery, strategy, setFilter }:
|
|||
<div
|
||||
className={clsx(
|
||||
'sticky top-0', // prettier: split lines
|
||||
'w-full max-h-[2.2rem]',
|
||||
'sm:pr-40 flex',
|
||||
'w-full h-[2.2rem]',
|
||||
'sm:pr-[12rem] flex',
|
||||
'border-b',
|
||||
'text-sm',
|
||||
'clr-input'
|
||||
|
@ -67,10 +67,8 @@ function SearchPanel({ total, filtered, query, setQuery, strategy, setFilter }:
|
|||
{filtered} из {total}
|
||||
</span>
|
||||
</div>
|
||||
<div className={clsx('flex-grow', 'flex gap-1 justify-center items-center')}>
|
||||
<SearchBar noBorder className='min-w-[10rem]' value={query} onChange={handleChangeQuery} />
|
||||
<PickerStrategy value={strategy} onChange={handleChangeStrategy} />
|
||||
</div>
|
||||
<PickerStrategy value={strategy} onChange={handleChangeStrategy} />
|
||||
<SearchBar noBorder className='mx-auto min-w-[10rem]' value={query} onChange={handleChangeQuery} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -108,7 +108,7 @@ function ViewLibrary({ items, resetQuery: cleanQuery }: ViewLibraryProps) {
|
|||
|
||||
return (
|
||||
<>
|
||||
<div className='sticky top-[2.3rem] w-full'>
|
||||
<div className='sticky top-[2.3rem]'>
|
||||
<div
|
||||
className={clsx(
|
||||
'z-pop', // prettier: split lines
|
||||
|
@ -117,7 +117,7 @@ function ViewLibrary({ items, resetQuery: cleanQuery }: ViewLibraryProps) {
|
|||
'flex gap-1'
|
||||
)}
|
||||
>
|
||||
<HelpButton topic={HelpTopic.LIBRARY} className='max-w-[35rem]' offset={5} place='right-start' />
|
||||
<HelpButton topic={HelpTopic.LIBRARY} className='max-w-[30rem] text-sm' offset={5} place='right-start' />
|
||||
</div>
|
||||
</div>
|
||||
<DataTable
|
||||
|
|
|
@ -122,7 +122,7 @@ function RSTable({ items, selected, setSelected, onEdit, onCreateNew }: RSTableP
|
|||
<DataTable
|
||||
dense
|
||||
noFooter
|
||||
className={clsx('min-h-[20rem]', 'overflow-y-auto', 'text-sm', 'select-none')}
|
||||
className={clsx('min-h-[16rem]', 'overflow-y-auto', 'text-sm', 'select-none')}
|
||||
style={{ maxHeight: tableHeight }}
|
||||
data={items ?? []}
|
||||
columns={columns}
|
||||
|
@ -136,7 +136,7 @@ function RSTable({ items, selected, setSelected, onEdit, onCreateNew }: RSTableP
|
|||
rowSelection={selected}
|
||||
onRowSelectionChange={setSelected}
|
||||
noDataComponent={
|
||||
<FlexColumn className='p-3 items-center'>
|
||||
<FlexColumn className='items-center p-3'>
|
||||
<p>Список пуст</p>
|
||||
<p className='cursor-pointer clr-text-primary hover:underline' onClick={() => onCreateNew()}>
|
||||
Создать новую конституенту
|
||||
|
|
|
@ -78,7 +78,7 @@ function GraphToolbar({
|
|||
disabled={!isMutable || nothingSelected}
|
||||
onClick={onDelete}
|
||||
/>
|
||||
<HelpButton topic={HelpTopic.GRAPH_TERM} className='max-w-[calc(100vw-20rem)]' offset={4} />
|
||||
<HelpButton topic={HelpTopic.GRAPH_TERM} className='max-w-[calc(100vw-4rem)]' offset={4} />
|
||||
</Overlay>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -9,6 +9,15 @@
|
|||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
html,
|
||||
body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
html {
|
||||
hanging-punctuation: first last;
|
||||
color-scheme: dark light;
|
||||
|
|
|
@ -315,10 +315,10 @@ export function describeExpressionStatus(status: ExpressionStatus): string {
|
|||
switch (status) {
|
||||
case ExpressionStatus.VERIFIED: return 'выражение корректно и вычислимо';
|
||||
case ExpressionStatus.INCORRECT: return 'ошибка в выражении';
|
||||
case ExpressionStatus.INCALCULABLE: return 'нельзя использовать для вычисления интерпретации';
|
||||
case ExpressionStatus.PROPERTY: return 'только для проверки принадлежности';
|
||||
case ExpressionStatus.INCALCULABLE: return 'интерпретация не вычисляется';
|
||||
case ExpressionStatus.PROPERTY: return 'только проверка принадлежности';
|
||||
case ExpressionStatus.UNKNOWN: return 'требует проверки выражения';
|
||||
case ExpressionStatus.UNDEFINED: return 'произошла ошибка при проверке выражения';
|
||||
case ExpressionStatus.UNDEFINED: return 'произошла ошибка при проверке';
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -411,10 +411,10 @@ export function labelCstClass(target: CstClass): string {
|
|||
export function describeCstClass(target: CstClass): string {
|
||||
// prettier-ignore
|
||||
switch (target) {
|
||||
case CstClass.BASIC: return 'неопределяемое понятие, требует конвенции';
|
||||
case CstClass.DERIVED: return 'выводимое понятие, задаваемое определением';
|
||||
case CstClass.STATEMENT: return 'утверждение формальной логики';
|
||||
case CstClass.TEMPLATE: return 'параметризованный шаблон определения';
|
||||
case CstClass.BASIC: return 'неопределяемое понятие';
|
||||
case CstClass.DERIVED: return 'определяемое понятие';
|
||||
case CstClass.STATEMENT: return 'логическое утверждение';
|
||||
case CstClass.TEMPLATE: return 'шаблон определения';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user