mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 13:00:39 +03:00
M: Improve RSForm stats UI
This commit is contained in:
parent
6d710cb55f
commit
e0189a2d26
|
@ -95,7 +95,8 @@ export { RiShieldKeyholeLine as IconPrivate } from 'react-icons/ri';
|
||||||
export { BiBug as IconStatusError } from 'react-icons/bi';
|
export { BiBug as IconStatusError } from 'react-icons/bi';
|
||||||
export { BiCheckCircle as IconStatusOK } from 'react-icons/bi';
|
export { BiCheckCircle as IconStatusOK } from 'react-icons/bi';
|
||||||
export { BiHelpCircle as IconStatusUnknown } from 'react-icons/bi';
|
export { BiHelpCircle as IconStatusUnknown } from 'react-icons/bi';
|
||||||
export { BiPauseCircle as IconStatusIncalculable } from 'react-icons/bi';
|
export { BiStopCircle as IconStatusIncalculable } from 'react-icons/bi';
|
||||||
|
export { BiPauseCircle as IconStatusProperty } from 'react-icons/bi';
|
||||||
export { LuPower as IconKeepAliasOn } from 'react-icons/lu';
|
export { LuPower as IconKeepAliasOn } from 'react-icons/lu';
|
||||||
export { LuPowerOff as IconKeepAliasOff } from 'react-icons/lu';
|
export { LuPowerOff as IconKeepAliasOff } from 'react-icons/lu';
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ function IconValue({
|
||||||
}: IconValueProps) {
|
}: IconValueProps) {
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={clsx('flex items-center', { 'justify-between gap-6 text-right': !dense, 'gap-2': dense }, className)}
|
className={clsx('flex items-center', { 'justify-between gap-6 text-right': !dense, 'gap-1': dense }, className)}
|
||||||
{...restProps}
|
{...restProps}
|
||||||
>
|
>
|
||||||
<MiniButton
|
<MiniButton
|
||||||
|
|
|
@ -1,4 +1,17 @@
|
||||||
import { IconChild, IconPredecessor, IconRSForm } from '@/components/Icons';
|
import {
|
||||||
|
IconChild,
|
||||||
|
IconGraphCollapse,
|
||||||
|
IconGraphExpand,
|
||||||
|
IconGraphInputs,
|
||||||
|
IconGraphOutputs,
|
||||||
|
IconPredecessor,
|
||||||
|
IconRSForm,
|
||||||
|
IconStatusError,
|
||||||
|
IconStatusIncalculable,
|
||||||
|
IconStatusOK,
|
||||||
|
IconStatusProperty,
|
||||||
|
IconStatusUnknown
|
||||||
|
} from '@/components/Icons';
|
||||||
import LinkTopic from '@/components/ui/LinkTopic';
|
import LinkTopic from '@/components/ui/LinkTopic';
|
||||||
import { HelpTopic } from '@/models/miscellaneous';
|
import { HelpTopic } from '@/models/miscellaneous';
|
||||||
|
|
||||||
|
@ -28,6 +41,15 @@ function HelpThesaurus() {
|
||||||
Родоструктурная экспликация КС – экспликация КС с помощью{' '}
|
Родоструктурная экспликация КС – экспликация КС с помощью{' '}
|
||||||
<LinkTopic text='аппарата родов структур' topic={HelpTopic.RSLANG} />.
|
<LinkTopic text='аппарата родов структур' topic={HelpTopic.RSLANG} />.
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
Граф термов – ориентированный граф, узлами которого являются конституенты КС, а связи задаются на основе
|
||||||
|
вхождения имени конституенты в определение другой конституенты.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Ядро концептуальной схемы – совокупность базовых понятий, аксиом и промежуточных производных понятий,
|
||||||
|
необходимых для формирования выражений аксиом. Остальные конституенты относят к Телу концептуальной схемы.
|
||||||
|
</p>
|
||||||
|
|
||||||
<h2>Конституента</h2>
|
<h2>Конституента</h2>
|
||||||
<p>
|
<p>
|
||||||
|
@ -37,13 +59,73 @@ function HelpThesaurus() {
|
||||||
являются Термин, Конвенция, Типизация (Структура), Формальное определение, Текстовое определение, Комментарий.
|
являются Термин, Конвенция, Типизация (Структура), Формальное определение, Текстовое определение, Комментарий.
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
По <b>наличию формального определения в рамках КС</b> выделены:
|
По <b>характеру формального определения в рамках КС</b> выделены классы:
|
||||||
<li>
|
<li>
|
||||||
базовое понятие (<i>неопределяемое понятие</i>) не имеет определения и задано конвенцией и аксиомами;
|
базовое понятие (<i>неопределяемое понятие</i>) не имеет определения и задано конвенцией и аксиомами;
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
производное понятие (<i>выводимое понятие</i>) имеет определение.
|
производное понятие (<i>выводимое понятие</i>) имеет определение.
|
||||||
</li>
|
</li>
|
||||||
|
<li>утверждение определяется через логическое выражение.</li>
|
||||||
|
<li>шаблон определения содержит несвязанный параметр в определении.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
По <b>назначению</b> выделены типы конституент:
|
||||||
|
<li>
|
||||||
|
базисное множество (X#) представляет неопределяемое понятие, представленное структурой множества, чьи элементы
|
||||||
|
различимы и не сравнимы с элементами других базисных множеств;
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
константное множество (C#) представляет неопределяемое понятие, моделируемое термом теории множеств, который
|
||||||
|
поддерживает ряд формальных операций над его элементами;
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
родовая структура (S#) представляет неопределяемое понятие, имеющее определенную структуру, построенную на
|
||||||
|
базисных множествах и константных множеств. Содержание родовой структуры формируется{' '}
|
||||||
|
<LinkTopic text='отношением типизации' topic={HelpTopic.RSL_TYPES} />, аксиомами и конвенцией;
|
||||||
|
</li>
|
||||||
|
<li>терм (D#) представляет выводимое понятие через формальное определение;</li>
|
||||||
|
<li>
|
||||||
|
аксиома (A#) представляет утверждение, ограничивающее неопределяемые понятия и выводимые термы. Интерпретация
|
||||||
|
аксиомы должна быть истинна и является критерием корректности интерпретации КС в целом;
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
теорема (T#) представляет ценное для предметной утверждение, значение которого может быть как истинным так и
|
||||||
|
ложным;
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
терм-функция (F#) представляет выводимое понятие (возможно параметризованное), имеющее характер
|
||||||
|
функционального отношения между набором аргументов и результатом;
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
предикат-функция (P#) представляет выводимое понятие (возможно параметризованное), имеющее характер
|
||||||
|
логического выражения, проверяющее заданные аргументы на соответствие некоторому условию;
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
По <b>графу термов</b> выделены:
|
||||||
|
<li>
|
||||||
|
<IconGraphOutputs size='1rem' className='inline-icon' />
|
||||||
|
потребители данной конституенты – конституенты, определения которых используют данную конституенту
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<IconGraphInputs size='1rem' className='inline-icon' />
|
||||||
|
поставщики данной конституенты – конституенты, имена которых используются в определении данной конституенты
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<IconGraphExpand size='1rem' className='inline-icon' />
|
||||||
|
зависимые от данной конституенты – потребители данной конституенты напрямую или по цепочке
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<IconGraphCollapse size='1rem' className='inline-icon' />
|
||||||
|
влияющие на данную конституенту – поставщики данной конституенты напрямую или по цепочке
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
@ -63,6 +145,30 @@ function HelpThesaurus() {
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
Для характеристики <b>корректности определения</b> введены статусы конституент:
|
||||||
|
<li>
|
||||||
|
<IconStatusUnknown size='1rem' className='inline-icon' /> не проверено – требуется проверка формального
|
||||||
|
определения (промежуточный статус);
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<IconStatusOK size='1rem' className='inline-icon' /> корректно – формальное определение корректно;
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<IconStatusError size='1rem' className='inline-icon' /> ошибочно – ошибка в формальном определении;
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<IconStatusProperty size='1rem' className='inline-icon' /> неразмерное – формальное определение задает
|
||||||
|
невычислимое множество, для которого возможно вычислить предикат проверки принадлежности;
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<IconStatusIncalculable size='1rem' className='inline-icon' /> невычислимо – формальное определение невозможно
|
||||||
|
интерпретировать напрямую;
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
Для описания <b>отождествления</b> введены:
|
Для описания <b>отождествления</b> введены:
|
||||||
<li>отождествляемые конституенты – конституенты, состоящие в отождествлении;</li>
|
<li>отождествляемые конституенты – конституенты, состоящие в отождествлении;</li>
|
||||||
|
@ -81,32 +187,16 @@ function HelpThesaurus() {
|
||||||
<IconChild size='1rem' className='inline-icon' /> наследованная конституента – конституента, перенесенная из
|
<IconChild size='1rem' className='inline-icon' /> наследованная конституента – конституента, перенесенная из
|
||||||
другой КС в рамках операции синтеза;
|
другой КС в рамках операции синтеза;
|
||||||
</li>
|
</li>
|
||||||
<li>собственная конституента – конституента, не являющаяся наследником других конституент;</li>
|
<li>
|
||||||
|
<IconPredecessor size='1rem' className='inline-icon' /> собственная конституента – конституента, не являющаяся
|
||||||
|
наследником других конституент;
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<IconPredecessor size='1rem' className='inline-icon' /> исходная конституента для данной конституенты –
|
<IconPredecessor size='1rem' className='inline-icon' /> исходная конституента для данной конституенты –
|
||||||
собственная конституента, прямым или опосредованным наследником которой является данная конституента.
|
собственная конституента, прямым или опосредованным наследником которой является данная конституента.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<br />
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
По <b>назначению</b> выделены:
|
|
||||||
<li>
|
|
||||||
базисное множество (X1) задает неопределяемое понятие, представленное структурой множества, чьи элементы
|
|
||||||
различимы и не сравнимы с элементами других базисных множеств;
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
константное множество (C1) задает неопределяемое понятие, моделируемое термом теории множеств, который
|
|
||||||
поддерживает ряд формальных операций над его элементами;
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
родовая структура (S1) задает неопределяемое понятие, имеющее определенную структуру, построенную на базисных
|
|
||||||
множествах и константных множеств. Содержание родовой структуры формируется{' '}
|
|
||||||
<LinkTopic text='отношением типизации' topic={HelpTopic.RSL_TYPES} />, аксиомами и конвенцией;
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2>Операционная схема синтеза</h2>
|
<h2>Операционная схема синтеза</h2>
|
||||||
<p>Раздел в разработке...</p>
|
<p>Раздел в разработке...</p>
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,13 @@
|
||||||
|
import {
|
||||||
|
IconChild,
|
||||||
|
IconPredecessor,
|
||||||
|
IconStatusError,
|
||||||
|
IconStatusIncalculable,
|
||||||
|
IconStatusOK,
|
||||||
|
IconStatusProperty
|
||||||
|
} from '@/components/Icons';
|
||||||
import Divider from '@/components/ui/Divider';
|
import Divider from '@/components/ui/Divider';
|
||||||
|
import IconValue from '@/components/ui/IconValue';
|
||||||
import LabeledValue from '@/components/ui/LabeledValue';
|
import LabeledValue from '@/components/ui/LabeledValue';
|
||||||
import { type IRSFormStats } from '@/models/rsform';
|
import { type IRSFormStats } from '@/models/rsform';
|
||||||
|
|
||||||
|
@ -11,49 +20,120 @@ function RSFormStats({ stats }: RSFormStatsProps) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<div className='flex flex-col sm:gap-1 sm:ml-6 sm:mt-8 sm:w-[16rem]'>
|
<div className='flex flex-col sm:gap-1 sm:ml-6 sm:mt-8 sm:w-[14rem]'>
|
||||||
<Divider margins='my-2' className='sm:hidden' />
|
<Divider margins='my-2' className='sm:hidden' />
|
||||||
|
|
||||||
<LabeledValue id='count_all' label='Всего конституент' text={stats.count_all} />
|
<LabeledValue id='count_all' label='Всего конституент' text={stats.count_all} />
|
||||||
{stats.count_inherited !== 0 ? (
|
<div className='grid grid-cols-4 gap-1'>
|
||||||
<LabeledValue id='count_inherited' label='Наследованные' text={stats.count_inherited} />
|
<IconValue
|
||||||
) : null}
|
id='count_owned'
|
||||||
<LabeledValue id='count_errors' label='Некорректные' text={stats.count_errors} />
|
dense
|
||||||
{stats.count_property !== 0 ? (
|
icon={<IconPredecessor size='1.25rem' className='clr-text-primary' />}
|
||||||
<LabeledValue id='count_property' label='Неразмерные' text={stats.count_property} />
|
value={stats.count_all - stats.count_inherited}
|
||||||
) : null}
|
title='Собственные'
|
||||||
{stats.count_incalculable !== 0 ? (
|
/>
|
||||||
<LabeledValue id='count_incalculable' label='Невычислимые' text={stats.count_incalculable} />
|
<IconValue
|
||||||
) : null}
|
id='count_inherited'
|
||||||
|
dense
|
||||||
|
icon={<IconChild size='1.25rem' className='clr-text-primary' />}
|
||||||
|
value={stats.count_inherited}
|
||||||
|
title='Наследованные'
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className='grid grid-cols-4 gap-1'>
|
||||||
|
<IconValue
|
||||||
|
id='count_ok'
|
||||||
|
dense
|
||||||
|
icon={<IconStatusOK size='1.25rem' className='clr-text-green' />}
|
||||||
|
value={stats.count_all - stats.count_errors - stats.count_property - stats.count_incalculable}
|
||||||
|
title='Корректные'
|
||||||
|
/>
|
||||||
|
<IconValue
|
||||||
|
id='count_property'
|
||||||
|
dense
|
||||||
|
icon={<IconStatusProperty size='1.25rem' className='clr-text-primary' />}
|
||||||
|
value={stats.count_errors}
|
||||||
|
title='Неразмерные'
|
||||||
|
/>
|
||||||
|
<IconValue
|
||||||
|
id='count_incalculable'
|
||||||
|
dense
|
||||||
|
icon={<IconStatusIncalculable size='1.25rem' className='clr-text-red' />}
|
||||||
|
value={stats.count_incalculable}
|
||||||
|
title='Невычислимые'
|
||||||
|
/>
|
||||||
|
<IconValue
|
||||||
|
id='count_errors'
|
||||||
|
dense
|
||||||
|
icon={<IconStatusError size='1.25rem' className='clr-text-red' />}
|
||||||
|
value={stats.count_errors}
|
||||||
|
title='Некорректные'
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className='grid grid-cols-4 gap-1'>
|
||||||
|
<IconValue
|
||||||
|
id='count_base'
|
||||||
|
dense
|
||||||
|
icon={<span className='font-math clr-text-default'>X#</span>}
|
||||||
|
value={stats.count_base}
|
||||||
|
title='Базисные множества'
|
||||||
|
/>
|
||||||
|
<IconValue
|
||||||
|
id='count_constant'
|
||||||
|
dense
|
||||||
|
icon={<span className='font-math clr-text-default'>C#</span>}
|
||||||
|
value={stats.count_constant}
|
||||||
|
title='Константные множества'
|
||||||
|
/>
|
||||||
|
<IconValue
|
||||||
|
id='count_structured'
|
||||||
|
dense
|
||||||
|
icon={<span className='font-math clr-text-default'>S#</span>}
|
||||||
|
value={stats.count_structured}
|
||||||
|
title='Родовые структуры'
|
||||||
|
/>
|
||||||
|
<IconValue
|
||||||
|
id='count_axiom'
|
||||||
|
dense
|
||||||
|
icon={<span className='font-math clr-text-default'>A#</span>}
|
||||||
|
value={stats.count_axiom}
|
||||||
|
title='Аксиомы'
|
||||||
|
/>
|
||||||
|
<IconValue
|
||||||
|
id='count_term'
|
||||||
|
dense
|
||||||
|
icon={<span className='font-math clr-text-default'>D#</span>}
|
||||||
|
value={stats.count_term}
|
||||||
|
title='Термы'
|
||||||
|
/>
|
||||||
|
<IconValue
|
||||||
|
id='count_function'
|
||||||
|
dense
|
||||||
|
icon={<span className='font-math clr-text-default'>F#</span>}
|
||||||
|
value={stats.count_function}
|
||||||
|
title='Терм-функции'
|
||||||
|
/>
|
||||||
|
<IconValue
|
||||||
|
id='count_predicate'
|
||||||
|
dense
|
||||||
|
icon={<span className='font-math clr-text-default'>P#</span>}
|
||||||
|
value={stats.count_predicate}
|
||||||
|
title='Предикат-функции'
|
||||||
|
/>
|
||||||
|
<IconValue
|
||||||
|
id='count_theorem'
|
||||||
|
dense
|
||||||
|
icon={<span className='font-math clr-text-default'>T#</span>}
|
||||||
|
value={stats.count_theorem}
|
||||||
|
title='Теоремы'
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
<Divider margins='my-2' />
|
<Divider margins='my-2' />
|
||||||
|
|
||||||
<LabeledValue id='count_text_term' label='Термины' text={stats.count_text_term} />
|
<LabeledValue id='count_text_term' label='Термины' text={stats.count_text_term} />
|
||||||
<LabeledValue id='count_definition' label='Определения' text={stats.count_definition} />
|
<LabeledValue id='count_definition' label='Определения' text={stats.count_definition} />
|
||||||
<LabeledValue id='count_convention' label='Конвенции' text={stats.count_convention} />
|
<LabeledValue id='count_convention' label='Конвенции' text={stats.count_convention} />
|
||||||
|
|
||||||
<Divider margins='my-2' />
|
|
||||||
|
|
||||||
{stats.count_base !== 0 ? (
|
|
||||||
<LabeledValue id='count_base' label='Базисные множества ' text={stats.count_base} />
|
|
||||||
) : null}
|
|
||||||
{stats.count_constant !== 0 ? (
|
|
||||||
<LabeledValue id='count_constant' label='Константные множества ' text={stats.count_constant} />
|
|
||||||
) : null}
|
|
||||||
{stats.count_structured !== 0 ? (
|
|
||||||
<LabeledValue id='count_structured' label='Родовые структуры ' text={stats.count_structured} />
|
|
||||||
) : null}
|
|
||||||
{stats.count_axiom !== 0 ? <LabeledValue id='count_axiom' label='Аксиомы ' text={stats.count_axiom} /> : null}
|
|
||||||
{stats.count_term !== 0 ? <LabeledValue id='count_term' label='Термы ' text={stats.count_term} /> : null}
|
|
||||||
{stats.count_function !== 0 ? (
|
|
||||||
<LabeledValue id='count_function' label='Терм-функции ' text={stats.count_function} />
|
|
||||||
) : null}
|
|
||||||
{stats.count_predicate !== 0 ? (
|
|
||||||
<LabeledValue id='count_predicate' label='Предикат-функции ' text={stats.count_predicate} />
|
|
||||||
) : null}
|
|
||||||
{stats.count_theorem !== 0 ? (
|
|
||||||
<LabeledValue id='count_theorem' label='Теоремы ' text={stats.count_theorem} />
|
|
||||||
) : null}
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -134,7 +134,7 @@ div:not(.dense) > p {
|
||||||
}
|
}
|
||||||
|
|
||||||
li::marker {
|
li::marker {
|
||||||
content: '– ';
|
content: '–\2009';
|
||||||
}
|
}
|
||||||
|
|
||||||
.border {
|
.border {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user