optigami / src /components /InfoBadges.js
sissississi's picture
go-back (#6)
e9b7141
function BoolVal({ value }) {
if (value === null || value === undefined) {
return <span className="info-val dim"></span>;
}
return (
<span className={`info-val ${value ? 'bool-true' : 'bool-false'}`}>
{value ? 'TRUE' : 'FALSE'}
</span>
);
}
function NumVal({ value, decimals = 0 }) {
if (value === null || value === undefined) {
return <span className="info-val dim"></span>;
}
return <span className="info-val">{decimals > 0 ? Number(value).toFixed(decimals) : value}</span>;
}
export default function InfoBadges({ metrics, paperState, targetDef }) {
const format = metrics?.format;
const anchored = metrics?.anchored;
const novelty = metrics?.novelty;
const completion = metrics?.completion;
const regression = metrics?.regression;
const efficiency = metrics?.efficiency;
return (
<div className="info-badges">
<div className="info-row">
<span className="info-key">format</span>
<BoolVal value={format != null ? format === 1.0 : null} />
</div>
<div className="info-row">
<span className="info-key">anchored</span>
<NumVal value={anchored} decimals={2} />
</div>
<div className="info-row">
<span className="info-key">novelty</span>
<NumVal value={novelty} decimals={2} />
</div>
<div className="info-row">
<span className="info-key">completion</span>
<NumVal value={completion} decimals={1} />
</div>
<div className="info-row">
<span className="info-key">regression</span>
<NumVal value={regression} decimals={3} />
</div>
<div className="info-row">
<span className="info-key">efficiency</span>
<NumVal value={efficiency} decimals={3} />
</div>
{targetDef && (
<>
<div className="info-row">
<span className="info-key">level</span>
<span className="info-val">LVL {targetDef.level}</span>
</div>
<div className="info-row">
<span className="info-key">creases</span>
<span className="info-val">{targetDef.n_creases}</span>
</div>
<div className="info-row">
<span className="info-key">task</span>
<span className="info-val" style={{ fontSize: '10px', textAlign: 'right', maxWidth: '140px', wordBreak: 'break-word' }}>
{(targetDef.name || '').replace(/_/g, ' ').toUpperCase()}
</span>
</div>
</>
)}
</div>
);
}