Skip to content

Commit 0572063

Browse files
committed
Changes after review. Separate fetching data in child component
1 parent f35a23c commit 0572063

2 files changed

Lines changed: 51 additions & 23 deletions

File tree

web/src/components/datasets/DatasetColumnLineage.tsx

Lines changed: 47 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,47 @@
11
// SPDX-License-Identifier: Apache-2.0
22

3+
import React, { FunctionComponent, useEffect } from 'react'
4+
import * as Redux from 'redux'
35
import { Box, Button } from '@material-ui/core'
46
import MqEmpty from '../core/empty/MqEmpty'
57
import MqJson from '../core/code/MqJson'
68
import MqText from '../core/text/MqText'
7-
import React, { FunctionComponent } from 'react'
9+
import { bindActionCreators } from 'redux'
10+
import { connect } from 'react-redux'
11+
import { Dataset } from '../../types/api'
12+
import { fetchDataset, resetDataset } from '../../store/actionCreators'
813
import { fileSize } from '../../helpers'
914
import { LineageDataset } from '../lineage/types'
1015
import { saveAs } from 'file-saver'
16+
import { IState } from '../../store/reducers'
1117

1218
interface DatasetColumnLineageProps {
13-
columnLineage: object
1419
lineageDataset: LineageDataset
1520
}
1621

17-
const DatasetColumnLineage: FunctionComponent<DatasetColumnLineageProps> = props => {
18-
const { columnLineage, lineageDataset } = props
22+
interface StateProps {
23+
dataset: Dataset
24+
}
25+
26+
interface DispatchProps {
27+
fetchDataset: typeof fetchDataset
28+
resetDataset: typeof resetDataset
29+
}
30+
31+
type IProps = DatasetColumnLineageProps & DispatchProps & StateProps
32+
33+
const DatasetColumnLineage: FunctionComponent<IProps> = props => {
34+
const { dataset, lineageDataset, fetchDataset, resetDataset } = props
35+
const columnLineage = dataset.columnLineage
36+
37+
useEffect(() => {
38+
fetchDataset(lineageDataset.namespace, lineageDataset.name)
39+
}, [lineageDataset.name])
40+
41+
// unmounting
42+
useEffect(() => () => {
43+
resetDataset()
44+
}, [])
1945

2046
const handleDownloadPayload = (data: object) => {
2147
const title = `${lineageDataset.name}-${lineageDataset.namespace}-columnLineage`
@@ -63,4 +89,20 @@ const DatasetColumnLineage: FunctionComponent<DatasetColumnLineageProps> = props
6389
)
6490
}
6591

66-
export default DatasetColumnLineage
92+
const mapStateToProps = (state: IState) => ({
93+
dataset: state.dataset.result,
94+
})
95+
96+
const mapDispatchToProps = (dispatch: Redux.Dispatch) =>
97+
bindActionCreators(
98+
{
99+
fetchDataset: fetchDataset,
100+
resetDataset: resetDataset
101+
},
102+
dispatch
103+
)
104+
105+
export default connect(
106+
mapStateToProps,
107+
mapDispatchToProps
108+
)(DatasetColumnLineage)

web/src/components/datasets/DatasetDetailPage.tsx

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
// SPDX-License-Identifier: Apache-2.0
22

33
import React, { ChangeEvent, FunctionComponent, SetStateAction, useEffect } from 'react'
4-
54
import * as Redux from 'redux'
65
import { Box, Chip, Tab, Tabs } from '@material-ui/core'
7-
import { Dataset, DatasetVersion } from '../../types/api'
6+
import { DatasetVersion } from '../../types/api'
87
import { IState } from '../../store/reducers'
98
import {
109
Theme as ITheme,
@@ -53,9 +52,7 @@ const styles = ({ spacing }: ITheme) => {
5352
interface StateProps {
5453
lineageDataset: LineageDataset
5554
versions: DatasetVersion[]
56-
dataset: Dataset
5755
versionsLoading: boolean
58-
isDatasetInit: boolean
5956
}
6057

6158
interface DispatchProps {
@@ -95,13 +92,6 @@ const DatasetDetailPage: FunctionComponent<IProps> = props => {
9592
setTab(newValue)
9693
}
9794

98-
const handleFetchDataset = () => {
99-
if(!props.isDatasetInit) {
100-
fetchDataset(props.lineageDataset.namespace, props.lineageDataset.name)
101-
}
102-
return true
103-
}
104-
10595
if (versionsLoading) {
10696
return (
10797
<Box display={'flex'} justifyContent={'center'}>
@@ -168,19 +158,15 @@ const DatasetDetailPage: FunctionComponent<IProps> = props => {
168158
/>
169159
)}
170160
{tab === 1 && <DatasetVersions versions={props.versions} />}
171-
{tab === 2 && handleFetchDataset() && (
172-
<DatasetColumnLineage lineageDataset={props.lineageDataset} columnLineage={props.dataset.columnLineage} />
173-
)}
161+
{tab === 2 && <DatasetColumnLineage lineageDataset={props.lineageDataset} />}
174162
</Box>
175163
)
176164
}
177165

178166
const mapStateToProps = (state: IState) => ({
179167
datasets: state.datasets.result,
180168
versions: state.datasetVersions.result.versions,
181-
dataset: state.dataset.result,
182-
versionsLoading: state.datasetVersions.isLoading,
183-
isDatasetInit: state.dataset.init,
169+
versionsLoading: state.datasetVersions.isLoading
184170
})
185171

186172
const mapDispatchToProps = (dispatch: Redux.Dispatch) =>
@@ -197,4 +183,4 @@ const mapDispatchToProps = (dispatch: Redux.Dispatch) =>
197183
export default connect(
198184
mapStateToProps,
199185
mapDispatchToProps
200-
)(withStyles(styles)(DatasetDetailPage))
186+
)(withStyles(styles)(DatasetDetailPage))

0 commit comments

Comments
 (0)