Skip to content

Commit afcf5ce

Browse files
committed
Update DataTable template
1 parent f9e9700 commit afcf5ce

File tree

1 file changed

+37
-19
lines changed

1 file changed

+37
-19
lines changed

src/components/DataTable/DataTable.vue

Lines changed: 37 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -59,27 +59,39 @@
5959
</template>
6060

6161
<!-- data columns -->
62-
<template #item.signal1.analysis.study.uuid="{item}"><StudyLabel :study="item.signal1.analysis.study.uuid" abbrev/></template>
63-
<template #item.signal1.analysis.trait.uuid="{item}"><TraitLabel :trait="item.signal1.analysis.trait" :key="item.signal1.analysis.trait"/></template>
64-
<template #item.signal1.analysis.analysis_type="{item}">{{ item.signal1.analysis.analysis_type }}</template>
65-
<template #item.signal2.analysis.study.uuid="{item}"><StudyLabel :study="item.signal2.analysis.study.uuid" abbrev/></template>
66-
<template #item.signal2.analysis.trait.uuid="{item}"><TraitLabel :trait="item.signal2.analysis.trait" :key="item.signal2.analysis.trait"/></template>
67-
<template #item.signal2.analysis.trait.biomarker_type="{item}">{{ item.signal2.analysis.trait.biomarker_type.replace("-expression", "") }}</template>
68-
<template #item.signal2.analysis.trait.gene.ens_id="{item}"><EnsgLabel :trait="item.signal2.analysis.trait" /></template>
69-
<template #item.signal2.analysis.tissue="{item}">{{ item.signal2.analysis.tissue }}</template>
70-
<template #item.signal1.lead_variant.vid="{item}"><VariantLabel :variant="item.signal1.lead_variant.vid" :showSplotch="true" /></template>
71-
<template #item.signal2.lead_variant.vid="{item}"><VariantLabel :variant="item.signal2.lead_variant.vid" :showSplotch="true" /></template>
72-
<template #item.signal1.neg_log_p="{item}">{{ (+item.signal1.neg_log_p).toFixed(2) }}</template>
73-
<template #item.signal2.neg_log_p="{item}">{{ (+item.signal2.neg_log_p).toFixed(2) }}</template>
74-
<template #item.coloc_h3="{item}">{{ item.coloc_h3.toFixed(2) }}</template>
75-
<template #item.coloc_h4="{item}">{{ item.coloc_h4.toFixed(2) }}</template>
76-
<template #item.r2="{item}">{{ item.r2.toFixed(2) }}</template>
62+
<template #item.signal1.analysis.study.uuid="{item}"><StudyLabel :study="item.signal1?.analysis?.study?.uuid ?? ''" abbrev/></template>
63+
<template #item.signal1.analysis.trait.uuid="{item}"><TraitLabel :trait="item.signal1?.analysis?.trait"/></template>
64+
<template #item.signal1.analysis.analysis_type="{item}">
65+
{{ item.signal1?.analysis?.analysis_type ?? '' }}
66+
<div v-if="item.signal1?.analysis?.trait?.biomarker_type && item.signal1?.analysis?.trait?.biomarker_type !== 'phenotype'">
67+
<span>({{ item.signal1?.analysis?.trait?.biomarker_type.replace("-expression", "") }})</span>
68+
</div>
69+
</template>
70+
<template #item.signal1.analysis.trait.gene.ens_id="{item}"><EnsgLabel :trait="item.signal1?.analysis?.trait ?? ''" /></template>
71+
<template #item.signal1.analysis.tissue="{item}">{{ item.signal1?.analysis?.tissue ?? '' }}</template>
72+
<template #item.signal2.analysis.study.uuid="{item}"><StudyLabel :study="item.signal2?.analysis?.study?.uuid ?? ''" abbrev/></template>
73+
<template #item.signal2.analysis.trait.uuid="{item}"><TraitLabel :trait="item.signal2?.analysis?.trait"/></template>
74+
<template #item.signal2.analysis.analysis_type="{item}">
75+
{{ item.signal2?.analysis?.analysis_type ?? '' }}
76+
<div v-if="item.signal2?.analysis?.trait?.biomarker_type && item.signal2?.analysis?.trait?.biomarker_type !== 'phenotype'">
77+
<span>({{ item.signal2?.analysis?.trait?.biomarker_type.replace("-expression", "") }})</span>
78+
</div>
79+
</template>
80+
<template #item.signal2.analysis.trait.gene.ens_id="{item}"><EnsgLabel :trait="item.signal2?.analysis?.trait ?? ''" /></template>
81+
<template #item.signal2.analysis.tissue="{item}">{{ item.signal2?.analysis?.tissue ?? '' }}</template>
82+
<template #item.signal1.lead_variant.vid="{item}"><VariantLabel :variant="item.signal1?.lead_variant?.vid ?? ''" :showSplotch="true" /></template>
83+
<template #item.signal2.lead_variant.vid="{item}"><VariantLabel :variant="item.signal2?.lead_variant?.vid ?? ''" :showSplotch="true" /></template>
84+
<template #item.signal1.neg_log_p="{item}">{{ safeToFixed(item.signal1?.neg_log_p, 2) }}</template>
85+
<template #item.signal2.neg_log_p="{item}">{{ safeToFixed(item.signal2?.neg_log_p, 2) }}</template>
86+
<template #item.coloc_h3="{item}">{{ safeToFixed(item.coloc_h3, 2) }}</template>
87+
<template #item.coloc_h4="{item}">{{ safeToFixed(item.coloc_h4, 2) }}</template>
88+
<template #item.r2="{item}">{{ safeToFixed(item.r2, 2) }}</template>
7789
<template #item.n_coloc_between_traits="{item}">{{ item.n_coloc_between_traits }}</template>
7890
<template #item.cross_signal.effect="{item}"><ConcordanceLabel :item="item"/></template>
79-
<template #item.signal1.effect_marg="{item}">{{ item.signal1.effect_marg.toFixed(2) }}</template>
80-
<template #item.signal2.effect_marg="{item}">{{ item.signal2.effect_marg.toFixed(2) }}</template>
81-
<template #item.signal1.effect_cond="{item}">{{ item.signal1.effect_cond.toFixed(2) }}</template>
82-
<template #item.signal2.effect_cond="{item}">{{ item.signal2.effect_cond.toFixed(2) }}</template>
91+
<template #item.signal1.effect_marg="{item}">{{ safeToFixed(item.signal1.effect_marg, 2) }}</template>
92+
<template #item.signal2.effect_marg="{item}">{{ safeToFixed(item.signal2.effect_marg, 2) }}</template>
93+
<template #item.signal1.effect_cond="{item}">{{ safeToFixed(item.signal1.effect_cond, 2) }}</template>
94+
<template #item.signal2.effect_cond="{item}">{{ safeToFixed(item.signal2.effect_cond, 2) }}</template>
8395
<template #item.marg_cond_flip="{item}">{{ +item.marg_cond_flip }}</template>
8496

8597
<template #footer.prepend>
@@ -215,6 +227,12 @@ const onTogglePlot = async (colocID, signal, slot) => {
215227
// *** Utility functions *******************************************************
216228
const clearExpandedRow = () => appStore.dataTable.expandedRow.length = 0
217229
230+
const safeToFixed = (val, digits) => {
231+
val = parseFloat(val)
232+
if (val == null || Number.isNaN(val)) return ''
233+
return (val).toFixed(digits)
234+
}
235+
218236
// this works by scheduling a timeout for *after* the current event loop tick
219237
const loadDataDebounced = async () => {
220238
clearTimeout(debounceTimer) // cancel pending call, if any

0 commit comments

Comments
 (0)