11// SPDX-License-Identifier: Apache-2.0
22
3+ import React , { FunctionComponent , useEffect } from 'react'
4+ import * as Redux from 'redux'
35import { Box , Button } from '@material-ui/core'
46import MqEmpty from '../core/empty/MqEmpty'
57import MqJson from '../core/code/MqJson'
68import 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'
813import { fileSize } from '../../helpers'
914import { LineageDataset } from '../lineage/types'
1015import { saveAs } from 'file-saver'
16+ import { IState } from '../../store/reducers'
1117
1218interface 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 )
0 commit comments