@@ -595,9 +595,23 @@ export async function listSamples(arg, seriesId, dataId, chartId) {
595595
596596 // query sample data
597597 const { event, self, terms, tvslst, geneVariant, tip } = arg
598+ const { term0, term, term2 } = self . config
599+ const _terms = structuredClone ( terms )
600+ for ( const tw of _terms ) {
601+ const i = tw . $id === term0 ?. $id ? 0 : tw . $id === term2 ?. $id ? 2 : 1
602+ if ( ! self . bins [ i ] . length ) continue
603+ // reuse already computed bins so that the assigned bin labels
604+ // from '/termdb/barchart' response will be consistent with '/termdb?for=matrix'
605+ tw . q = {
606+ mode : 'discrete' ,
607+ type : 'custom-bin' ,
608+ lst : self . bins [ i ]
609+ }
610+ }
611+
598612 const uiLabels = self . app . vocabApi . termdbConfig . uiLabels
599613 const opts = {
600- terms,
614+ terms : _terms ,
601615 filter : filterJoin ( [ self . state . termfilter . filter , tvslst ] ) ,
602616 filter0 : self . state . termfilter . filter0 ,
603617 isSummary : true
@@ -661,7 +675,8 @@ export async function listSamples(arg, seriesId, dataId, chartId) {
661675 const value = label || t2entry . value
662676 row . push ( { value : t2entry . key === dataId ? value : t2entry . key } )
663677 }
664- if ( t2entry . key !== dataId ) notRendered = true
678+ // if the series/bar label is clicked, the ovelay/dataId will not be provided for listSamples
679+ if ( dataId && t2entry . key !== dataId ) notRendered = true
665680 }
666681 // for now, duplicating if block for term2 and term0
667682 // TODO: use dom/summary/ListSamples.ts
@@ -683,7 +698,7 @@ export async function listSamples(arg, seriesId, dataId, chartId) {
683698 const value = label || t0entry . value
684699 row . push ( { value : t0entry . key === chartId ? value : t0entry . key } )
685700 }
686- if ( t0entry . key !== chartId ) notRendered = true
701+ if ( chartId && t0entry . key !== chartId ) notRendered = true
687702 }
688703
689704 if ( notRendered && row . length ) {
@@ -732,15 +747,19 @@ export async function listSamples(arg, seriesId, dataId, chartId) {
732747 return a [ 0 ] . value < b [ 0 ] . value ? - 1 : 1
733748 } )
734749
735- await renderTable ( {
736- rows : rows . filter ( r => ! notRenderedVals . has ( r ) ) ,
737- columns,
738- div : div . append ( 'div' ) ,
739- showLines : true ,
740- maxHeight : '40vh' ,
741- resize : true ,
742- dataTestId : 'sjpp-listsampletable'
743- } )
750+ const renderedRows = rows . filter ( r => ! notRenderedVals . has ( r ) )
751+
752+ if ( renderedRows . length ) {
753+ await renderTable ( {
754+ rows : renderedRows ,
755+ columns,
756+ div : div . append ( 'div' ) ,
757+ showLines : true ,
758+ maxHeight : '40vh' ,
759+ resize : true ,
760+ dataTestId : 'sjpp-listsampletable'
761+ } )
762+ }
744763
745764 if ( notRenderedVals . size ) {
746765 // TODO: do not hardcode, make this dataset specific
0 commit comments