Skip to content

Commit a4e9a83

Browse files
committed
reuse computed barchart tw bins in list samples data request
1 parent 8277c75 commit a4e9a83

File tree

1 file changed

+31
-12
lines changed

1 file changed

+31
-12
lines changed

client/plots/barchart.events.js

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)