Skip to content

Commit 9ec766a

Browse files
authored
Merge pull request #57 from omics-datascience/fix/kaplanMeier
Fix/kaplan meier
2 parents 90f757a + 8ea943a commit 9ec766a

File tree

4 files changed

+37
-29
lines changed

4 files changed

+37
-29
lines changed

src/frontend/static/frontend/src/components/biomarkers/biomarker-details-modal/stat-validations/result/StatisticalValidationResultKaplanMeier.tsx

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { useCallback, useEffect, useRef, useState } from 'react'
22
import ky from 'ky'
3-
import { Button, Form, Grid, Header, Icon, Modal, Statistic } from 'semantic-ui-react'
3+
import { Button, Form, Grid, Header, Icon, Modal, Statistic, GridColumn } from 'semantic-ui-react'
44
import { alertGeneralError, listToDropdownOptions } from '../../../../../utils/util_functions'
55
import { StatisticalValidationForTable, KaplanMeierResultData, FitnessFunction } from '../../../types'
66
import { KaplanMeier } from '../../../../pipeline/experiment-result/gene-gem-details/survival-analysis/KaplanMeierUtils'
@@ -188,10 +188,10 @@ export const StatisticalValidationResultKaplanMeier = (props: StatisticalValidat
188188
return (
189189
<Grid>
190190
<Grid.Row columns={2} divided textAlign='center'>
191-
<Grid.Column textAlign='center' width={11}>
191+
<GridColumn textAlign='center' mobile={16} tablet={16} computer={12}>
192192
{getKaplanMeierPanel()}
193-
</Grid.Column>
194-
<Grid.Column textAlign='center' width={5}>
193+
</GridColumn>
194+
<GridColumn textAlign='center' mobile={16} tablet={16} computer={4}>
195195
{/* Clustering metrics. */}
196196
<InfoPopup
197197
content='This metrics are computed using Cox-Regression'
@@ -273,7 +273,7 @@ export const StatisticalValidationResultKaplanMeier = (props: StatisticalValidat
273273
</Modal.Actions>
274274
</Modal>
275275
}
276-
</Grid.Column>
276+
</GridColumn>
277277
</Grid.Row>
278278
</Grid>
279279
)

src/frontend/static/frontend/src/components/biomarkers/biomarker-details-modal/stat-validations/result/StatisticalValidationResultModal.tsx

+19-21
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { useState } from 'react'
22
import { ActiveStatValidationsItemMenu, StatisticalValidationForTable } from '../../../types'
33
import { StatisticalValidationMenu } from '../StatisticalValidationMenu'
44
import { StatisticalValidationResultMetrics } from './StatisticalValidationResultMetrics'
5-
import { Grid, Segment } from 'semantic-ui-react'
5+
import { Grid, Segment, GridColumn } from 'semantic-ui-react'
66
import { StatisticalValidationResultBestFeatures } from './StatisticalValidationResultBestFeatures'
77
import { StatisticalValidationResultHeatMap } from './StatisticalValidationResultHeatMap'
88
import { StatisticalValidationResultKaplanMeier } from './StatisticalValidationResultKaplanMeier'
@@ -41,27 +41,25 @@ export const StatisticalValidationResultModal = (props: StatisticalValidationRes
4141

4242
return (
4343
<>
44-
<Grid>
45-
<Grid.Row columns={2} stretched>
46-
<Grid.Column width={4}>
47-
<Segment>
48-
<StatisticalValidationResultMetrics selectedStatisticalValidation={props.selectedStatisticalValidation} />
49-
</Segment>
50-
</Grid.Column>
51-
<Grid.Column width={12} textAlign='center'>
52-
<Segment>
53-
{/* Menu */}
54-
<StatisticalValidationMenu
55-
activeItem={activeItem}
56-
setActiveItem={setActiveItem}
57-
selectedStatisticalValidation={props.selectedStatisticalValidation}
58-
/>
44+
<Grid stretched>
45+
<GridColumn mobile={16} tablet={16} computer={4}>
46+
<Segment>
47+
<StatisticalValidationResultMetrics selectedStatisticalValidation={props.selectedStatisticalValidation} />
48+
</Segment>
49+
</GridColumn>
50+
<GridColumn mobile={16} tablet={16} computer={12}>
51+
<Segment>
52+
{/* Menu */}
53+
<StatisticalValidationMenu
54+
activeItem={activeItem}
55+
setActiveItem={setActiveItem}
56+
selectedStatisticalValidation={props.selectedStatisticalValidation}
57+
/>
5958

60-
{/* Selected menu option */}
61-
{getSelectedComponent()}
62-
</Segment>
63-
</Grid.Column>
64-
</Grid.Row>
59+
{/* Selected menu option */}
60+
{getSelectedComponent()}
61+
</Segment>
62+
</GridColumn>
6563
</Grid>
6664
</>
6765
)

src/frontend/static/frontend/src/components/pipeline/experiment-result/gene-gem-details/survival-analysis/KaplanMeierUtils.tsx

+10-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React from 'react'
22
import * as d3 from 'd3'
33
import { Nullable } from '../../../../../utils/interfaces'
4-
4+
import './kaplanMeier.css'
55
/** Needed structure for KaplanMeier chart */
66
type KaplanMeierSample = {
77
time: number,
@@ -174,7 +174,14 @@ const YAxis = (props: AxisProps) => {
174174
className='axis axis-y'
175175
transform={`translate(${props.left}, ${props.top})`}
176176
>
177-
<g dangerouslySetInnerHTML={d3Utils.createAxisMarkup(yAxis, props.width, props.height)}></g>
177+
{
178+
/**
179+
* g tag generate the dom structure of <g> <g> <text> ... </g> </g>
180+
* The idea es usign the first g wrapp the inside g tag and text to move it a few px to prevents being overwrite by Y axis.
181+
* If the Dom change in the future, open the navigator inspect then verify the Dom and fix the new structure.
182+
*/
183+
}
184+
<g className='g-wrapper' dangerouslySetInnerHTML={d3Utils.createAxisMarkup(yAxis, props.width, props.height)}></g>
178185
<text
179186
dy="1.50em"
180187
style={{ textAnchor: 'middle' }}
@@ -388,7 +395,7 @@ class KaplanMeier extends React.Component<KaplanMeierProps, KaplanMeierState> {
388395
const colors = d3.scaleOrdinal(d3.schemeCategory10).range()
389396
const yDomain = [1, 0]
390397

391-
const seriesWidth = this.props.width - 64
398+
const seriesWidth = this.props.width
392399
const seriesHeight = this.props.height - 64
393400

394401
return (
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.g-wrapper> g > text {
2+
transform: translateX(-20px); /* Prevents Y axis overwrite text */
3+
}

0 commit comments

Comments
 (0)