mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 04:50:36 +03:00
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
import { useMemo } from 'react';
|
||
|
||
import { ExpressionStatus, type IConstituenta, IExpressionParse,inferStatus, ParsingStatus } from '../../../utils/models';
|
||
import { mapStatusInfo } from '../../../utils/staticUI';
|
||
|
||
interface StatusBarProps {
|
||
isModified?: boolean
|
||
parseData?: IExpressionParse
|
||
constituenta?: IConstituenta
|
||
}
|
||
|
||
function StatusBar({ isModified, constituenta, parseData }: StatusBarProps) {
|
||
const status = useMemo(() => {
|
||
if (isModified) {
|
||
return ExpressionStatus.UNKNOWN;
|
||
}
|
||
if (parseData) {
|
||
const parse = parseData.parseResult ? ParsingStatus.VERIFIED : ParsingStatus.INCORRECT;
|
||
return inferStatus(parse, parseData.valueClass);
|
||
}
|
||
return inferStatus(constituenta?.parse?.status, constituenta?.parse?.valueClass);
|
||
}, [isModified, constituenta, parseData]);
|
||
|
||
const data = mapStatusInfo.get(status)!;
|
||
return (
|
||
<div title={data.tooltip}
|
||
className={`text-sm h-[1.6rem] w-[10rem] font-semibold inline-flex border items-center justify-center align-middle ${data.color}`}>
|
||
Статус: [ {data.text} ]
|
||
</div>
|
||
)
|
||
}
|
||
|
||
export default StatusBar;
|