diff --git a/src/components/characterization-results/RawResultTable.vue b/src/components/characterization-results/RawResultTable.vue new file mode 100644 index 00000000..1a96aabd --- /dev/null +++ b/src/components/characterization-results/RawResultTable.vue @@ -0,0 +1,195 @@ + + + + + + diff --git a/src/components/characterization/CharacterizationPerAnalysisView.vue b/src/components/characterization/CharacterizationPerAnalysisView.vue index 37bad1bb..7ebc161f 100644 --- a/src/components/characterization/CharacterizationPerAnalysisView.vue +++ b/src/components/characterization/CharacterizationPerAnalysisView.vue @@ -17,8 +17,16 @@ :rows="g.rows" :cohorts="g.cohorts" /> +
{{ tv('common.noData', 'No rows match the current filter.') }} @@ -31,6 +39,7 @@ import { computed } from 'vue' import { useI18n } from '@/composables/useI18n' import PrevalenceTable from '@/components/characterization-results/PrevalenceTable.vue' import DistributionTable from '@/components/characterization-results/DistributionTable.vue' +import RawResultTable from '@/components/characterization-results/RawResultTable.vue' import { DEFAULT_STRATA_KEY } from '@/utils/characterization-result-mapper' import type { DistributionStat, LinkedCohort, PrevalenceStat, @@ -39,6 +48,7 @@ import type { const props = defineProps<{ prevalence: PrevalenceStat[] distribution: DistributionStat[] + unmapped?: Record[] cohorts: LinkedCohort[] threshold: number selectedAnalysisIds: number[] @@ -108,6 +118,28 @@ const distributionGroups = computed[]>(() => { } return Array.from(groups.values()) }) + +interface RawGroup { analysisId: number; analysisName: string; rows: Record[] } + +const unmappedGroups = computed(() => { + const groups = new Map() + for (const row of props.unmapped ?? []) { + const analysisId = typeof row.analysisId === 'number' ? row.analysisId : -1 + if (!passesAnalysis(analysisId)) continue + const domainId = typeof row.domainId === 'string' ? row.domainId : undefined + if (!passesDomain(domainId)) continue + let g = groups.get(analysisId) + if (!g) { + const analysisName = typeof row.analysisName === 'string' && row.analysisName + ? row.analysisName + : `Analysis ${analysisId}` + g = { analysisId, analysisName, rows: [] } + groups.set(analysisId, g) + } + g.rows.push(row) + } + return Array.from(groups.values()) +})