@@ -13,15 +13,16 @@ import MapObservations from './MapObservations';
13
13
import MapDosing from './MapDosing' ;
14
14
import PreviewData from './PreviewData' ;
15
15
import { RootState } from "../../app/store" ;
16
- import {
17
- DatasetRead ,
18
- useDatasetListQuery ,
19
- useDatasetCreateMutation ,
20
- useDatasetCsvUpdateMutation ,
21
- } from '../../app/backendApi' ;
16
+ import { DatasetRead , useDatasetCsvUpdateMutation } from '../../app/backendApi' ;
17
+ import Stratification from './Stratification' ;
18
+ import useDataset from '../../hooks/useDataset' ;
22
19
23
- const stepLabels = [ 'Upload Data' , 'Map Dosing' , 'Map Observations' , 'Preview Dataset' ] ;
24
- const stepComponents = [ LoadData , MapDosing , MapObservations , PreviewData ] ;
20
+ interface IStepper {
21
+ onFinish : ( ) => void
22
+ }
23
+
24
+ const stepLabels = [ 'Upload Data' , 'Map Dosing' , 'Map Observations' , 'Stratification' , 'Preview Dataset' ] ;
25
+ const stepComponents = [ LoadData , MapDosing , MapObservations , Stratification , PreviewData ] ;
25
26
26
27
type Row = { [ key : string ] : string } ;
27
28
type Data = Row [ ] ;
@@ -40,8 +41,7 @@ export type StepperState = {
40
41
setAmountUnit : ( amountUnit : string ) => void ;
41
42
}
42
43
43
- const LoadDataStepper : FC = ( ) => {
44
- const [ dataset , setDataset ] = useState < null | DatasetRead > ( null ) ;
44
+ const LoadDataStepper : FC < IStepper > = ( { onFinish } ) => {
45
45
const [ data , setData ] = useState < Data > ( [ ] ) ;
46
46
const [ fields , setFields ] = useState < string [ ] > ( [ ] ) ;
47
47
const [ normalisedFields , setNormalisedFields ] = useState < string [ ] > ( [ ] ) ;
@@ -50,18 +50,10 @@ const LoadDataStepper: FC = () => {
50
50
const selectedProject = useSelector (
51
51
( state : RootState ) => state . main . selectedProject ,
52
52
) ;
53
- const selectedProjectOrZero = selectedProject || 0 ;
54
- const { data : datasets = [ ] , isLoading : isDatasetLoading } = useDatasetListQuery (
55
- { projectId : selectedProjectOrZero } ,
56
- { skip : ! selectedProject } ,
57
- ) ;
58
- const [
59
- createDataset
60
- ] = useDatasetCreateMutation ( ) ;
61
53
const [
62
- updateDataset
54
+ updateDatasetCsv
63
55
] = useDatasetCsvUpdateMutation ( ) ;
64
-
56
+ const { dataset , updateDataset } = useDataset ( selectedProject ) ;
65
57
66
58
const state = {
67
59
fields,
@@ -80,43 +72,26 @@ const LoadDataStepper: FC = () => {
80
72
const StepComponent = stepComponents [ stepState . activeStep ] ;
81
73
const isFinished = stepState . activeStep === stepLabels . length ;
82
74
83
- useEffect ( function onDataLoad ( ) {
84
- async function addDataset ( ) {
85
- let [ dataset ] = datasets ;
86
- if ( ! dataset ) {
87
- const response = await createDataset ( {
88
- dataset : {
89
- name : 'New Dataset' ,
90
- project : selectedProjectOrZero ,
91
- }
92
- } ) ;
93
- if ( 'data' in response && response . data ) {
94
- dataset = response . data ;
95
- }
96
- }
97
- console . log ( { dataset} ) ;
98
- setDataset ( dataset ) ;
99
- }
100
- if ( ! isDatasetLoading ) {
101
- addDataset ( ) ;
102
- }
103
- } , [ datasets , createDataset , isDatasetLoading ] ) ;
104
-
105
75
useEffect ( function onFinished ( ) {
106
76
if ( isFinished && dataset ?. id ) {
107
77
try {
108
78
const csv = Papa . unparse ( data ) ;
109
- updateDataset ( {
79
+ updateDatasetCsv ( {
110
80
id : dataset . id ,
111
81
datasetCsv : {
112
82
csv
113
83
}
114
84
} )
85
+ . unwrap ( )
86
+ . then ( data => {
87
+ updateDataset ( data as unknown as DatasetRead ) ;
88
+ onFinish ( ) ;
89
+ } ) ;
115
90
} catch ( e ) {
116
91
console . error ( e ) ;
117
92
}
118
93
}
119
- } , [ isFinished , updateDataset , dataset ?. id , data ] )
94
+ } , [ isFinished , onFinish , updateDatasetCsv , updateDataset , dataset ?. id , data ] )
120
95
121
96
const handleNext = ( ) => {
122
97
setStepState ( ( prevActiveStep ) => ( {
0 commit comments