@@ -10,6 +10,8 @@ import SelectProjectTemplate from './SelectProjectTemplate'
1010import SelectProjectType from './SelectProjectType'
1111import IncompleteProjectConfirmation from './IncompleteProjectConfirmation'
1212import FillProjectDetails from './FillProjectDetails'
13+ import ProjectSubmitted from './ProjectSubmitted'
14+
1315import update from 'react-addons-update'
1416import { LS_INCOMPLETE_PROJECT , PROJECT_REF_CODE_MAX_LENGTH } from '../../../config/constants'
1517import './ProjectWizard.scss'
@@ -19,6 +21,7 @@ const WZ_STEP_SELECT_PROJ_TYPE = 1
1921const WZ_STEP_SELECT_PROJ_TEMPLATE = 2
2022const WZ_STEP_FILL_PROJ_DETAILS = 3
2123const WZ_STEP_ERROR_CREATING_PROJ = 4
24+ const WZ_STEP_PROJECT_SUBMITTED = 5
2225
2326class ProjectWizard extends Component {
2427
@@ -46,19 +49,32 @@ class ProjectWizard extends Component {
4649 }
4750
4851 componentDidMount ( ) {
49- const { onStepChange, projectTemplates } = this . props
52+ const { onStepChange, projectTemplates, createdProject } = this . props
5053 const params = this . props . match . params
5154
5255 // load incomplete project from local storage
5356 const incompleteProjectStr = window . localStorage . getItem ( LS_INCOMPLETE_PROJECT )
54- if ( incompleteProjectStr ) {
57+
58+ if ( ( params && params . project === 'submitted' ) || createdProject ) {
59+ const wizardStep = WZ_STEP_PROJECT_SUBMITTED
60+ const updateQuery = { }
61+ this . setState ( {
62+ project : update ( this . state . project , updateQuery ) ,
63+ dirtyProject : update ( this . state . dirtyProject , updateQuery ) ,
64+ wizardStep,
65+ isProjectDirty : false
66+ } , ( ) => {
67+ typeof onStepChange === 'function' && onStepChange ( this . state . wizardStep , this . state . project )
68+ } )
69+ } else if ( incompleteProjectStr ) {
5570 const incompleteProject = JSON . parse ( incompleteProjectStr )
5671 const incompleteProjectTemplateId = _ . get ( incompleteProject , 'templateId' )
5772 const incompleteProjectTemplate = _ . find ( projectTemplates , pt => pt . id === incompleteProjectTemplateId )
5873 let wizardStep = WZ_STEP_INCOMP_PROJ_CONF
5974 let updateQuery = { }
6075 if ( incompleteProjectTemplate && params && params . project ) {
6176 const projectTemplate = getProjectTemplateByAlias ( projectTemplates , params . project )
77+
6278 if ( projectTemplate ) {
6379 // load project details page directly
6480 if ( projectTemplate . key === incompleteProjectTemplate . key ) {
@@ -71,6 +87,7 @@ class ProjectWizard extends Component {
7187 }
7288 }
7389 }
90+
7491 this . setState ( {
7592 project : update ( this . state . project , updateQuery ) ,
7693 dirtyProject : update ( this . state . dirtyProject , updateQuery ) ,
@@ -109,7 +126,7 @@ class ProjectWizard extends Component {
109126 }
110127
111128 componentWillReceiveProps ( nextProps ) {
112- const { onStepChange } = nextProps
129+ const { onStepChange, createdProject } = nextProps
113130 const params = nextProps . match . params
114131 const type = _ . get ( nextProps . project , 'type' , null )
115132 const projectTemplateId = _ . get ( nextProps . project , 'templateId' , null )
@@ -123,6 +140,9 @@ class ProjectWizard extends Component {
123140 updateQuery [ 'details' ] = { $set : { } }
124141 wizardStep = WZ_STEP_SELECT_PROJ_TYPE
125142 }
143+ if ( createdProject ) {
144+ wizardStep = WZ_STEP_PROJECT_SUBMITTED
145+ }
126146 // if wizard step deduced above and stored in state are not the same, update the state
127147 if ( wizardStep && this . state . wizardStep !== wizardStep ) {
128148 this . setState ( {
@@ -155,8 +175,11 @@ class ProjectWizard extends Component {
155175 if ( ! urlAlias ) return
156176
157177 const projectType = getProjectTypeByAlias ( projectTypes , urlAlias )
158- // first try the path param to be a project type
159- if ( projectType ) {
178+ // first try the path param to be a final step
179+ if ( projectType === 'submitted' ) {
180+ return WZ_STEP_PROJECT_SUBMITTED
181+ } if ( projectType ) {
182+ // try the path param to be a project type
160183 updateQuery [ 'type' ] = { $set : projectType . key }
161184 return WZ_STEP_SELECT_PROJ_TEMPLATE
162185 } else {
@@ -403,8 +426,9 @@ class ProjectWizard extends Component {
403426 }
404427
405428 render ( ) {
406- const { processing, showModal, userRoles, projectTemplates, projectTypes } = this . props
429+ const { processing, showModal, userRoles, projectTemplates, projectTypes, projectId , match } = this . props
407430 const { project, dirtyProject, wizardStep } = this . state
431+ const params = match . params
408432
409433 return (
410434 < Wizard
@@ -413,7 +437,7 @@ class ProjectWizard extends Component {
413437 onCancel = { this . handleWizardCancel }
414438 onStepChange = { this . handleStepChange }
415439 step = { wizardStep }
416- shouldRenderBackButton = { ( step ) => step > 1 }
440+ shouldRenderBackButton = { ( step ) => step > 1 && step !== 5 }
417441 >
418442 < IncompleteProjectConfirmation
419443 loadIncompleteProject = { this . loadIncompleteProject }
@@ -443,6 +467,14 @@ class ProjectWizard extends Component {
443467 userRoles = { userRoles }
444468 onBackClick = { ( ) => this . handleStepChange ( wizardStep - 1 ) }
445469 />
470+ < div />
471+ < ProjectSubmitted
472+ project = { project }
473+ projectTemplates = { projectTemplates }
474+ dirtyProject = { dirtyProject }
475+ params = { params }
476+ projectId = { projectId }
477+ />
446478 </ Wizard >
447479 )
448480 }
@@ -497,7 +529,8 @@ ProjectWizard.Steps = {
497529 WZ_STEP_SELECT_PROJ_TYPE ,
498530 WZ_STEP_SELECT_PROJ_TEMPLATE ,
499531 WZ_STEP_FILL_PROJ_DETAILS ,
500- WZ_STEP_ERROR_CREATING_PROJ
532+ WZ_STEP_ERROR_CREATING_PROJ ,
533+ WZ_STEP_PROJECT_SUBMITTED
501534}
502535
503536export default withRouter ( ProjectWizard )
0 commit comments