@@ -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
@@ -732,15 +746,19 @@ export async function listSamples(arg, seriesId, dataId, chartId) {
732746 return a [ 0 ] . value < b [ 0 ] . value ? - 1 : 1
733747 } )
734748
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- } )
749+ const renderedRows = rows . filter ( r => ! notRenderedVals . has ( r ) )
750+
751+ if ( renderedRows . length ) {
752+ await renderTable ( {
753+ rows : renderedRows ,
754+ columns,
755+ div : div . append ( 'div' ) ,
756+ showLines : true ,
757+ maxHeight : '40vh' ,
758+ resize : true ,
759+ dataTestId : 'sjpp-listsampletable'
760+ } )
761+ }
744762
745763 if ( notRenderedVals . size ) {
746764 // TODO: do not hardcode, make this dataset specific
0 commit comments