spb/cancerindex
Public
TypeScript 97.2%
SQL 1.5%
CSS 0.6%
JavaScript 0.5%
1/**2 * Completeness dots: one dot per data domain, filled when the entity has ≥1 record in it.3 * Domains: taxonomy, epidemiology, survival, genomics, evidence, drugs, trials, literature.4 */5export const COMPLETENESS_DOMAINS = ['taxonomy', 'epidemiology', 'survival', 'genomics', 'evidence', 'drugs', 'trials', 'literature'] as const;67export function CompletenessDots({ filled, className = '' }: { filled: Record<string, boolean | number>; className?: string }) {8 const on = COMPLETENESS_DOMAINS.filter((d) => Boolean(filled[d]));9 return (10 <span className={`ci-dots ${className}`} role="img" aria-label={`Data completeness: ${on.length} of ${COMPLETENESS_DOMAINS.length} domains — ${on.join(', ') || 'none'}`} title={COMPLETENESS_DOMAINS.map((d) => `${filled[d] ? '●' : '○'} ${d}`).join(' ')}>11 {COMPLETENESS_DOMAINS.map((d) => (12 <span key={d} className={`ci-dot ${filled[d] ? 'on' : ''}`} />13 ))}14 </span>15 );16}17