import { SampleTreatmentRow, SampleTreatmentFilter, PatientTreatmentFilter, PatientTreatmentRow, } from 'cbioportal-ts-api-client'; import { ChartMeta } from 'pages/studyView/StudyViewUtils'; import styles from 'pages/studyView/table/tables.module.scss'; import React from 'react'; export type Treatment = | SampleTreatmentRow | SampleTreatmentFilter | PatientTreatmentRow | PatientTreatmentFilter; export function treatmentComparisonGroupName( cell: Treatment, ignoreTime?: boolean ) { if ( (cell as SampleTreatmentFilter | SampleTreatmentRow).time !== undefined && !ignoreTime ) { const castCell = cell as SampleTreatmentFilter | SampleTreatmentRow; return `${castCell.time}-${castCell.treatment}`; } else { return cell.treatment; } } export function treatmentUniqueKey(cell: Treatment, ignoreTime?: boolean) { if ( (cell as SampleTreatmentFilter | SampleTreatmentRow).time !== undefined && !ignoreTime ) { const castCell = cell as SampleTreatmentFilter | SampleTreatmentRow; return castCell.treatment + '::' + castCell.time; } else { return cell.treatment; } } export function toTreatmentFilter( uniqueKey: string, meta: ChartMeta ): SampleTreatmentFilter | PatientTreatmentFilter { if (meta.uniqueKey.startsWith('SAMPLE')) { return toSampleTreatmentFilter(uniqueKey); } else { return toPatientTreatmentFilter(uniqueKey); } } function toSampleTreatmentFilter(uniqueKey: string): SampleTreatmentFilter { const split = uniqueKey.split('::'); return { treatment: split[0], time: split[1] as 'Pre' | 'Post', }; } function toPatientTreatmentFilter(uniqueKey: string): PatientTreatmentFilter { const split = uniqueKey.split('::'); return { treatment: split[0], }; } export enum TreatmentTableType { SAMPLE = 'SAMPLE_TREATMENTS', PATIENT = 'PATIENT_TREATMENTS', } export const TreatmentGenericColumnHeader = class GenericColumnHeader extends React.Component< { margin: number; headerName: string }, {} > { render() { return (