2024-06-07 20:17:03 +03:00
|
|
|
|
import clsx from 'clsx';
|
|
|
|
|
|
2025-01-28 23:23:03 +03:00
|
|
|
|
import { IconChild } from '@/components/Icons';
|
|
|
|
|
import { CProps } from '@/components/props';
|
2024-06-07 20:17:03 +03:00
|
|
|
|
|
2025-02-11 20:56:11 +03:00
|
|
|
|
import { labelCstTypification } from '../labels';
|
2025-02-10 01:32:16 +03:00
|
|
|
|
import { IConstituenta } from '../models/rsform';
|
|
|
|
|
import { isBasicConcept } from '../models/rsformAPI';
|
|
|
|
|
|
2024-06-07 20:17:03 +03:00
|
|
|
|
interface InfoConstituentaProps extends CProps.Div {
|
|
|
|
|
data: IConstituenta;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function InfoConstituenta({ data, className, ...restProps }: InfoConstituentaProps) {
|
|
|
|
|
return (
|
2024-08-30 20:18:04 +03:00
|
|
|
|
<div className={clsx('dense min-w-[15rem] break-words', className)} {...restProps}>
|
2024-10-17 15:44:53 +03:00
|
|
|
|
<h2 className='cursor-default' title={data.is_inherited ? ' наследник' : undefined}>
|
2024-08-03 11:30:47 +03:00
|
|
|
|
{data.alias}
|
2024-10-17 15:44:53 +03:00
|
|
|
|
{data.is_inherited ? (
|
|
|
|
|
<IconChild size='1rem' className='inline-icon translate-y-[-0.1rem] translate-x-[0.125rem]' />
|
|
|
|
|
) : null}
|
2024-08-01 00:35:49 +03:00
|
|
|
|
</h2>
|
2024-06-07 20:17:03 +03:00
|
|
|
|
{data.term_resolved ? (
|
|
|
|
|
<p>
|
|
|
|
|
<b>Термин: </b>
|
|
|
|
|
{data.term_resolved || data.term_raw}
|
|
|
|
|
</p>
|
|
|
|
|
) : null}
|
2024-08-19 10:55:52 +03:00
|
|
|
|
<p className='break-all'>
|
2024-06-07 20:17:03 +03:00
|
|
|
|
<b>Типизация: </b>
|
2024-08-19 19:15:21 +03:00
|
|
|
|
<span className='font-math'>{labelCstTypification(data)}</span>
|
2024-06-07 20:17:03 +03:00
|
|
|
|
</p>
|
|
|
|
|
{data.definition_formal ? (
|
2024-08-30 20:18:04 +03:00
|
|
|
|
<p className='break-all'>
|
2024-06-07 20:17:03 +03:00
|
|
|
|
<b>Выражение: </b>
|
2024-08-19 19:15:21 +03:00
|
|
|
|
<span className='font-math'>{data.definition_formal}</span>
|
2024-06-07 20:17:03 +03:00
|
|
|
|
</p>
|
|
|
|
|
) : null}
|
|
|
|
|
{data.definition_resolved ? (
|
|
|
|
|
<p>
|
|
|
|
|
<b>Определение: </b>
|
|
|
|
|
{data.definition_resolved}
|
|
|
|
|
</p>
|
|
|
|
|
) : null}
|
2024-09-14 15:14:48 +03:00
|
|
|
|
{data.spawner_alias ? (
|
2024-06-07 20:17:03 +03:00
|
|
|
|
<p>
|
|
|
|
|
<b>Основание: </b>
|
2024-09-14 15:14:48 +03:00
|
|
|
|
{data.spawner_alias}
|
2024-06-07 20:17:03 +03:00
|
|
|
|
</p>
|
|
|
|
|
) : null}
|
2024-09-14 15:14:48 +03:00
|
|
|
|
{data.spawn_alias.length > 0 ? (
|
2024-06-07 20:17:03 +03:00
|
|
|
|
<p>
|
|
|
|
|
<b>Порождает: </b>
|
2024-09-14 15:14:48 +03:00
|
|
|
|
{data.spawn_alias.join(', ')}
|
2024-06-07 20:17:03 +03:00
|
|
|
|
</p>
|
|
|
|
|
) : null}
|
|
|
|
|
{data.convention ? (
|
|
|
|
|
<p>
|
|
|
|
|
<b>{isBasicConcept(data.cst_type) ? 'Конвенция' : 'Комментарий'}: </b>
|
|
|
|
|
{data.convention}
|
|
|
|
|
</p>
|
|
|
|
|
) : null}
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default InfoConstituenta;
|