@@ -15,10 +15,11 @@ import {
1515// --- Column Definitions ---
1616const ALL_COLUMNS = [
1717 { key : 'title' , label : 'Resource' , sticky : true , minWidth : '240px' } ,
18- { key : 'organizations' , label : 'Organization' , minWidth : '200px' } ,
18+ { key : 'organizations' , label : 'Organization' , minWidth : '220px' } ,
19+ { key : 'rorId' , label : 'ROR ID' , minWidth : '130px' } ,
1920 { key : 'origin' , label : 'HQ Location' , minWidth : '140px' } ,
2021 { key : 'entityCategory' , label : 'Sector' , minWidth : '120px' } ,
21- { key : 'entitySubType' , label : 'Entity Type' , minWidth : '140px ' } ,
22+ { key : 'entitySubType' , label : 'Entity Type' , minWidth : '160px ' } ,
2223 { key : 'dataTypes' , label : 'Data Types' , minWidth : '180px' } ,
2324 { key : 'compensationType' , label : 'Compensation' , minWidth : '130px' } ,
2425 { key : 'countries' , label : 'Available In' , minWidth : '160px' } ,
@@ -44,6 +45,8 @@ function getNestedValue(resource, key) {
4445 return ( resource . compatibleSources || [ ] ) . join ( ', ' ) ;
4546 case 'citations' :
4647 return ( resource . citations || [ ] ) . length ;
48+ case 'rorId' :
49+ return ( resource . organizations || [ ] ) . map ( o => o . rorId ) . filter ( Boolean ) . join ( ', ' ) ;
4750 default :
4851 return resource [ key ] || '' ;
4952 }
@@ -507,9 +510,33 @@ export default function ExplorePage() {
507510 ) }
508511 </ div >
509512 ) : col . key === 'organizations' ? (
510- < span className = "text-slate-600 text-xs" >
511- { ( resource . organizations || [ ] ) . map ( o => o . name ) . join ( ', ' ) || '—' }
512- </ span >
513+ < div className = "flex flex-col gap-1" >
514+ { ( resource . organizations || [ ] ) . map ( ( o , idx ) => (
515+ < div key = { idx } className = "flex items-center gap-1.5 whitespace-nowrap overflow-hidden" >
516+ < span className = "text-slate-600 text-xs truncate" > { o . name } </ span >
517+ { o . rorId && (
518+ < a
519+ href = { o . rorId }
520+ target = "_blank"
521+ rel = "noopener noreferrer"
522+ title = "View on ROR"
523+ className = "text-[9px] text-blue-500 hover:text-blue-700 bg-blue-50 px-1 py-0 rounded border border-blue-100 uppercase font-bold"
524+ >
525+ ROR
526+ </ a >
527+ ) }
528+ </ div >
529+ ) ) }
530+ { ( ! resource . organizations || resource . organizations . length === 0 ) && '—' }
531+ </ div >
532+ ) : col . key === 'rorId' ? (
533+ < div className = "flex flex-col gap-1" >
534+ { ( resource . organizations || [ ] ) . map ( ( o , idx ) => o . rorId ? (
535+ < a key = { idx } href = { o . rorId } target = "_blank" rel = "noopener noreferrer" className = "text-[10px] font-mono text-blue-600 hover:underline" >
536+ { o . rorId . split ( '/' ) . pop ( ) }
537+ </ a >
538+ ) : null ) }
539+ </ div >
513540 ) : col . key === 'origin' ? (
514541 < span className = "inline-flex items-center gap-1.5 text-xs text-slate-600" >
515542 { resource . originCode && (
@@ -538,7 +565,18 @@ export default function ExplorePage() {
538565 { resource . entityCategory || '—' }
539566 </ span >
540567 ) : col . key === 'entitySubType' ? (
541- < span className = "text-xs text-slate-500" > { resource . entitySubType || '—' } </ span >
568+ < div className = "flex flex-col gap-1" >
569+ < span className = "text-xs text-slate-500" > { resource . entitySubType || '—' } </ span >
570+ { resource . organizations ?. some ( o => o . rorTypes ) && (
571+ < div className = "flex flex-wrap gap-1" >
572+ { Array . from ( new Set ( resource . organizations . flatMap ( o => o . rorTypes || [ ] ) ) ) . map ( t => (
573+ < span key = { t } className = "text-[9px] bg-indigo-50 text-indigo-600 border border-indigo-100 px-1 py-0 rounded font-medium" >
574+ { t . charAt ( 0 ) . toUpperCase ( ) + t . slice ( 1 ) }
575+ </ span >
576+ ) ) }
577+ </ div >
578+ ) }
579+ </ div >
542580 ) : col . key === 'dataTypes' ? (
543581 < div className = "flex flex-wrap gap-1" >
544582 { ( resource . dataTypes || [ ] ) . map ( d => (
0 commit comments