|
| 1 | +// eslint-disable-next-line import/no-extraneous-dependencies |
| 2 | +import { ColDef, ColGroupDef } from '@ag-grid-community/core'; |
| 3 | +import { createGeneRelatedValueGetter } from '@/views/ReportView/components/StructuralVariants/columnDefs'; |
| 4 | +import { actionsColDef } from '@/utils/actionsColumnDef'; |
| 5 | + |
| 6 | +const collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' }); |
| 7 | + |
| 8 | +const smallMutationsColumnDefs: ColDef[] = [{ |
| 9 | + headerName: 'Gene', |
| 10 | + field: 'gene.name', |
| 11 | + cellRenderer: 'GeneCellRenderer', |
| 12 | + cellRendererParams: { link: true }, |
| 13 | +}, |
| 14 | +{ |
| 15 | + headerName: 'Protein Change', |
| 16 | + field: 'proteinChange', |
| 17 | +}, |
| 18 | +{ |
| 19 | + headerName: 'Transcript', |
| 20 | + field: 'transcript', |
| 21 | +}, |
| 22 | +{ |
| 23 | + headerName: 'Location', |
| 24 | + field: 'location', |
| 25 | + valueGetter: ({ data }) => data.chromosome && `${data.chromosome}:${data.startPosition}${data.endPosition && data.startPosition !== data.endPosition |
| 26 | + ? `-${data.endPosition}` |
| 27 | + : '' |
| 28 | + }`, |
| 29 | +}, |
| 30 | +{ |
| 31 | + headerName: 'Zygosity', |
| 32 | + field: 'zygosity', |
| 33 | +}, |
| 34 | +{ |
| 35 | + headerName: 'VAF %', |
| 36 | + colId: 'tumourAltCount/tumourDepth', |
| 37 | + field: 'tumourAltCount/tumourDepth', |
| 38 | + valueGetter: ({ |
| 39 | + data: { |
| 40 | + tumourAltCount, tumourDepth, rnaAltCount, rnaDepth, |
| 41 | + }, |
| 42 | + }) => { |
| 43 | + if ((tumourAltCount && tumourDepth) || (tumourAltCount === 0 || tumourDepth === 0)) { |
| 44 | + return ((tumourAltCount / tumourDepth) * 100).toFixed(0); |
| 45 | + } |
| 46 | + if ((rnaAltCount && rnaDepth) || (rnaAltCount === 0 || rnaDepth === 0)) { |
| 47 | + return 'N/A (RNA)'; |
| 48 | + } |
| 49 | + return ''; |
| 50 | + }, |
| 51 | + comparator: collator.compare, |
| 52 | +}, |
| 53 | +{ |
| 54 | + ...actionsColDef, |
| 55 | +}]; |
| 56 | + |
| 57 | +const copyNumberColumnDefs: ColDef[] = [{ |
| 58 | + headerName: 'Gene', |
| 59 | + cellRenderer: 'GeneCellRenderer', |
| 60 | + cellRendererParams: { link: true }, |
| 61 | + field: 'gene.name', |
| 62 | +}, |
| 63 | +{ |
| 64 | + headerName: 'Copy Change', |
| 65 | + field: 'copyChange', |
| 66 | + valueFormatter: (params) => { |
| 67 | + if (params.value === null || params.value === undefined) return ''; |
| 68 | + |
| 69 | + const num = Number(params.value); |
| 70 | + |
| 71 | + // If the number is greater than zero, prepend the "+" sign |
| 72 | + if (num > 0) { |
| 73 | + return `+${num}`; |
| 74 | + } |
| 75 | + // Zero or negative numbers will naturally format with their own sign or nothing |
| 76 | + return num.toString(); |
| 77 | + }, |
| 78 | +}, |
| 79 | +{ |
| 80 | + headerName: 'CNV State', |
| 81 | + field: 'cnvState', |
| 82 | +}, |
| 83 | +{ |
| 84 | + headerName: 'Chr:band', |
| 85 | + field: 'chromosomeBand', |
| 86 | +}, |
| 87 | +{ |
| 88 | + ...actionsColDef, |
| 89 | +}]; |
| 90 | + |
| 91 | +const structuralVariantsColumnDefs: ColDef[] = [{ |
| 92 | + headerName: 'Genes 5`::3`', |
| 93 | + colId: 'genes', |
| 94 | + cellRenderer: 'GeneCellRenderer', |
| 95 | + cellRendererParams: { link: true }, |
| 96 | + valueGetter: createGeneRelatedValueGetter('name', ' :: '), |
| 97 | +}, |
| 98 | +{ |
| 99 | + headerName: 'Exons 5`/3`', |
| 100 | + colId: 'exons', |
| 101 | + valueGetter: (params) => (params.data.exon1 && params.data.exon2 |
| 102 | + ? `${params.data.exon1}:${params.data.exon2}` |
| 103 | + : (params.data.exon1 || params.data.exon2)), |
| 104 | +}, |
| 105 | +{ |
| 106 | + headerName: 'Breakpoint', |
| 107 | + colId: 'breakpoint', |
| 108 | + field: 'breakpoint', |
| 109 | +}, |
| 110 | +{ |
| 111 | + headerName: 'Event Type', |
| 112 | + colId: 'eventType', |
| 113 | + field: 'eventType', |
| 114 | +}, |
| 115 | +{ |
| 116 | + headerName: 'Sample', |
| 117 | + colId: 'detectedIn', |
| 118 | + field: 'detectedIn', |
| 119 | +}, |
| 120 | +{ |
| 121 | + headerName: 'Cytogenic Description', |
| 122 | + colId: 'conventionalName', |
| 123 | + field: 'conventionalName', |
| 124 | +}, |
| 125 | +{ |
| 126 | + ...actionsColDef, |
| 127 | +}]; |
| 128 | + |
| 129 | +const expressionColumnDefs: Array<ColDef | ColGroupDef> = [{ |
| 130 | + headerName: 'Gene', |
| 131 | + field: 'gene.name', |
| 132 | + cellRenderer: 'GeneCellRenderer', |
| 133 | + cellRendererParams: { link: true }, |
| 134 | +}, |
| 135 | +{ |
| 136 | + headerName: 'Expression Class', |
| 137 | + field: 'expressionState', |
| 138 | +}, |
| 139 | +{ |
| 140 | + headerName: 'Disease', |
| 141 | + children: [ |
| 142 | + { headerName: 'Perc', field: 'diseasePercentile' }, |
| 143 | + { headerName: 'Z-Score', field: 'diseaseZScore' }, |
| 144 | + ], |
| 145 | +}, |
| 146 | +{ |
| 147 | + ...actionsColDef, |
| 148 | +}]; |
| 149 | + |
| 150 | +export { |
| 151 | + smallMutationsColumnDefs, |
| 152 | + copyNumberColumnDefs, |
| 153 | + expressionColumnDefs, |
| 154 | + structuralVariantsColumnDefs, |
| 155 | +}; |
0 commit comments