66 * LICENSE file in the root directory of this source tree.
77 */
88const React = require ( 'react' ) ;
9+
910const { wizardHanlders} = require ( '../../misc/wizard/enhancers' ) ;
1011const loadingState = require ( '../../misc/enhancers/loadingState' ) ( ( { loading, data} ) => loading || ! data , { width : 500 , height : 200 } ) ;
1112
12- const Wizard = wizardHanlders ( require ( '../../misc/wizard/WizardContainer' ) ) ;
1313const ChartType = require ( './wizard/chart/ChartType' ) ;
1414const wfsChartOptions = require ( './wizard/chart/wfsChartOptions' ) ;
1515const ChartOptions = wfsChartOptions ( require ( './wizard/chart/ChartOptions' ) ) ;
@@ -19,7 +19,7 @@ const wpsChart = require('../enhancers/wpsChart');
1919const dependenciesToFilter = require ( '../enhancers/dependenciesToFilter' ) ;
2020const emptyChartState = require ( '../enhancers/emptyChartState' ) ;
2121const errorChartState = require ( '../enhancers/errorChartState' ) ;
22- const { compose} = require ( 'recompose' ) ;
22+ const { compose, lifecycle } = require ( 'recompose' ) ;
2323const enhanchePreview = compose (
2424 dependenciesToFilter ,
2525 wpsChart ,
@@ -38,9 +38,14 @@ const sampleProps = {
3838
3939const isChartOptionsValid = ( options = { } ) => options . aggregateFunction && options . aggregationAttribute && options . groupByAttributes ;
4040
41- const renderPreview = ( { data = { } , layer, dependencies= { } } ) => isChartOptionsValid ( data . options )
41+ const Wizard = wizardHanlders ( require ( '../../misc/wizard/WizardContainer' ) ) ;
42+
43+
44+ const renderPreview = ( { data = { } , layer, dependencies= { } , setValid = ( ) => { } } ) => isChartOptionsValid ( data . options )
4245 ? ( < PreviewChart
4346 key = "preview-chart"
47+ onLoad = { ( ) => setValid ( true ) }
48+ onLoadError = { ( ) => setValid ( false ) }
4449 isAnimationActive = { false }
4550 dependencies = { dependencies }
4651 { ...sampleProps }
@@ -61,15 +66,19 @@ const renderPreview = ({data = {}, layer, dependencies={}}) => isChartOptionsVal
6166 autoColorOptions = { data . autoColorOptions }
6267 legend = { data . legend } /> ) ;
6368
64-
65- module . exports = ( { onChange = ( ) => { } , onFinish = ( ) => { } , setPage= ( ) => { } , data = { } , layer = { } , step= 0 , types, featureTypeProperties, dependencies} ) =>
69+ const enhanceWizard = compose ( lifecycle ( {
70+ componentWillReceiveProps : ( { data = { } , valid, setValid = ( ) => { } } = { } ) => {
71+ if ( valid && ! isChartOptionsValid ( data . options ) ) {
72+ setValid ( false ) ;
73+ }
74+ } } )
75+ ) ;
76+ module . exports = enhanceWizard ( ( { onChange = ( ) => { } , onFinish = ( ) => { } , setPage= ( ) => { } , setValid, data = { } , layer = { } , step= 0 , types, featureTypeProperties, dependencies} ) =>
6677 ( < Wizard
6778 step = { step }
6879 setPage = { setPage }
69- onFinish = { ( ) => {
70- onFinish ( { layer : data . layer || layer , url : layer . url , ...data } ) ;
71- } }
72- isStepValid = { n => n === 1 ? isChartOptionsValid ( data . options ) : true } skipButtonsOnSteps = { [ 0 ] } >
80+ onFinish = { onFinish }
81+ isStepValid = { n => n === 1 ? isChartOptionsValid ( data . options ) : true } hideButtons >
7382 < ChartType
7483 key = "type"
7584 type = { data . type }
@@ -83,13 +92,13 @@ module.exports = ({onChange = () => {}, onFinish = () => {}, setPage= () => {},
8392 data = { data }
8493 onChange = { onChange }
8594 layer = { data . layer || layer }
86- sampleChart = { renderPreview ( { data, layer : data . layer || layer , dependencies} ) }
95+ sampleChart = { renderPreview ( { data, layer : data . layer || layer , dependencies, setValid : v => setValid ( v && isChartOptionsValid ( data . options ) ) } ) }
8796 />
8897 < WidgetOptions
8998 key = "widget-options"
9099 data = { data }
91100 onChange = { onChange }
92101 layer = { data . layer || layer }
93- sampleChart = { renderPreview ( { data, layer : data . layer || layer } ) }
102+ sampleChart = { renderPreview ( { data, layer : data . layer || layer , dependencies , setValid : v => setValid ( v && isChartOptionsValid ( data . options ) ) } ) }
94103 />
95- </ Wizard > ) ;
104+ </ Wizard > ) ) ;
0 commit comments