diff options
| author | jpl | 2017-01-12 10:14:32 +0100 |
|---|---|---|
| committer | jpl | 2017-01-12 10:20:14 +0100 |
| commit | baf8814a32d4012cb83ddf2d5a9333201dd1a365 (patch) | |
| tree | 91d5f69ccffa14ffcf97d0fb553d4f2e7cba5f67 /app/assets/javascripts | |
| parent | d37324f9e80c485ed07623341489223a04e5096c (diff) | |
| download | chouette-core-baf8814a32d4012cb83ddf2d5a9333201dd1a365.tar.bz2 | |
adding fetchSuccess status and behaviour to jp collection
Diffstat (limited to 'app/assets/javascripts')
11 files changed, 196 insertions, 140 deletions
diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js index 6950bce2d..1ad2bb48f 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -7,6 +7,9 @@ const actions = { type: "RECEIVE_ERRORS", json }), + unavailableServer : () => ({ + type: 'UNAVAILABLE_SERVER' + }), goToPreviousPage : (dispatch, pagination) => ({ type: 'GO_TO_PREVIOUS_PAGE', dispatch, @@ -149,32 +152,41 @@ const actions = { let req = new Request(urlJSON, { credentials: 'same-origin', }) + let hasError = false fetch(req) - .then(response => response.json()) - .then((json) => { - let val - for (val of json){ - for (let stop_point of val.route_short_description.stop_points){ - stop_point.checked = false - val.stop_area_short_descriptions.map((element) => { - if(element.stop_area_short_description.id === stop_point.id){ - stop_point.checked = true - } + .then(response => { + if(response.status == 500) { + hasError = true + } + return response.json() + }).then((json) => { + if(hasError == true) { + dispatch(actions.unavailableServer()) + } else { + let val + for (val of json){ + for (let stop_point of val.route_short_description.stop_points){ + stop_point.checked = false + val.stop_area_short_descriptions.map((element) => { + if(element.stop_area_short_description.id === stop_point.id){ + stop_point.checked = true + } + }) + } + journeyPatterns.push({ + name: val.name, + object_id: val.object_id, + published_name: val.published_name, + registration_number: val.registration_number, + stop_points: val.route_short_description.stop_points, + deletable: false }) } - journeyPatterns.push({ - name: val.name, - object_id: val.object_id, - published_name: val.published_name, - registration_number: val.registration_number, - stop_points: val.route_short_description.stop_points, - deletable: false - }) - } - if(journeyPatterns.length != window.journeyPatternsPerPage){ - dispatch(actions.updateTotalCount(journeyPatterns.length - window.journeyPatternsPerPage)) + if(journeyPatterns.length != window.journeyPatternsPerPage){ + dispatch(actions.updateTotalCount(journeyPatterns.length - window.journeyPatternsPerPage)) + } + dispatch(actions.receiveJourneyPatterns(journeyPatterns)) } - dispatch(actions.receiveJourneyPatterns(journeyPatterns)) }) } } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js index b0e812dab..b64ee5f77 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js @@ -16,95 +16,100 @@ class CreateModal extends Component { } render() { - return ( - <div className='pull-right'> - <button - type='button' - className='btn btn-primary btn-sm' - data-toggle='modal' - data-target='#NewJourneyPatternModal' - onClick={this.props.onOpenCreateModal} - > - <span className='fa fa-plus'></span> Ajouter une mission - </button> + if(status.fetchSuccess == true) { + return ( + <div className='pull-right'> + <button + type='button' + className='btn btn-primary btn-sm' + data-toggle='modal' + data-target='#NewJourneyPatternModal' + onClick={this.props.onOpenCreateModal} + > + <span className='fa fa-plus'></span> Ajouter une mission + </button> - <div className={ 'modal fade ' + ((this.props.modal.type == 'create') ? 'in' : '') } id='NewJourneyPatternModal'> - <div className='modal-dialog'> - <div className='modal-content'> - <div className='modal-header clearfix'> - <h4>Ajouter une mission</h4> - </div> + <div className={ 'modal fade ' + ((this.props.modal.type == 'create') ? 'in' : '') } id='NewJourneyPatternModal'> + <div className='modal-dialog'> + <div className='modal-content'> + <div className='modal-header clearfix'> + <h4>Ajouter une mission</h4> + </div> - {(this.props.modal.type == 'create') && ( - <form> - <div className='modal-body'> - <div className='form-group'> - <label className='control-label'>Nom</label> - <input - type='text' - ref='name' - className='form-control' - onKeyDown={(e) => actions.resetValidation(e.currentTarget)} - required - /> - </div> - <div className='row'> - <div className='col-lg-6 col-md-6 col-sm-6 col-xs-6'> + {(this.props.modal.type == 'create') && ( + <form> + <div className='modal-body'> <div className='form-group'> - <label className='control-label'>Nom public</label> + <label className='control-label'>Nom</label> <input type='text' - ref='published_name' + ref='name' className='form-control' onKeyDown={(e) => actions.resetValidation(e.currentTarget)} required - /> + /> </div> - </div> - <div className='col-lg-6 col-md-6 col-sm-6 col-xs-6'> - <div className='form-group'> - <label className='control-label'>N° d'enregistrement</label> - <input - type='text' - ref='registration_number' - className='form-control' - onKeyDown={(e) => actions.resetValidation(e.currentTarget)} - required - /> + <div className='row'> + <div className='col-lg-6 col-md-6 col-sm-6 col-xs-6'> + <div className='form-group'> + <label className='control-label'>Nom public</label> + <input + type='text' + ref='published_name' + className='form-control' + onKeyDown={(e) => actions.resetValidation(e.currentTarget)} + required + /> + </div> + </div> + <div className='col-lg-6 col-md-6 col-sm-6 col-xs-6'> + <div className='form-group'> + <label className='control-label'>N° d'enregistrement</label> + <input + type='text' + ref='registration_number' + className='form-control' + onKeyDown={(e) => actions.resetValidation(e.currentTarget)} + required + /> + </div> + </div> </div> </div> - </div> - </div> - <div className='modal-footer'> - <button - className='btn btn-default' - data-dismiss='modal' - type='button' - onClick={this.props.onModalClose} - > - Annuler - </button> - <button - className='btn btn-danger' - type='button' - onClick={this.handleSubmit.bind(this)} - > - Valider - </button> - </div> - </form> - )} + <div className='modal-footer'> + <button + className='btn btn-default' + data-dismiss='modal' + type='button' + onClick={this.props.onModalClose} + > + Annuler + </button> + <button + className='btn btn-danger' + type='button' + onClick={this.handleSubmit.bind(this)} + > + Valider + </button> + </div> + </form> + )} + </div> + </div> </div> </div> - </div> - </div> - ) + ) + } else { + return false + } } } CreateModal.propTypes = { index: PropTypes.number, - modal: PropTypes.object, + modal: PropTypes.object.isRequired, + status: PropTypes.object.isRequired, onOpenCreateModal: PropTypes.func.isRequired, onModalClose: PropTypes.func.isRequired, onAddJourneyPattern: PropTypes.func.isRequired diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js index 160631697..393919755 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js @@ -7,7 +7,6 @@ class JourneyPatterns extends Component{ constructor(props){ super(props) } - componentDidMount() { this.props.onLoadFirstPage() } @@ -15,6 +14,12 @@ class JourneyPatterns extends Component{ render() { return ( <div className='list-group'> + {(this.props.status.fetchSuccess == false) && ( + <div className="alert alert-danger"> + <strong>Erreur : </strong> + la récupération des missions a rencontré un problème. Rechargez la page pour tenter de corriger le problème + </div> + )} {this.props.journeyPatterns.map((journeyPattern, index) => <JourneyPattern value={ journeyPattern } @@ -30,6 +35,7 @@ class JourneyPatterns extends Component{ JourneyPatterns.propTypes = { journeyPatterns: PropTypes.array.isRequired, + status: PropTypes.object.isRequired, onCheckboxChange: PropTypes.func.isRequired, onLoadFirstPage: PropTypes.func.isRequired, onOpenEditModal: PropTypes.func.isRequired diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/Navigate.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/Navigate.js index 077e8ab0d..43c3af219 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/Navigate.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/Navigate.js @@ -3,42 +3,47 @@ var Component = require('react').Component var PropTypes = require('react').PropTypes var actions = require('../actions') -let Navigate = ({ dispatch, journeyPatterns, pagination }) => { +let Navigate = ({ dispatch, journeyPatterns, pagination, status }) => { let firstPage = 1 let lastPage = Math.ceil(pagination.totalCount / window.journeyPatternsPerPage) - return ( - <form className='btn-group btn-group-sm' onSubmit={e => { - e.preventDefault() - }}> - <button - onClick={e => { - e.preventDefault() - dispatch(actions.checkConfirmModal(e, actions.goToPreviousPage(dispatch, pagination), pagination.stateChanged)) - }} - type="submit" - data-toggle='' - data-target='#ConfirmModal' - className={ (pagination.page == firstPage ? "hidden" : "") + " btn btn-default" }> - <span className="fa fa-chevron-left"></span> - </button> - <button - onClick={e => { + if(status.fetchSuccess == true) { + return ( + <form className='btn-group btn-group-sm' onSubmit={e => { e.preventDefault() - dispatch(actions.checkConfirmModal(e, actions.goToNextPage(dispatch, pagination), pagination.stateChanged)) - }} - type="submit" - data-toggle='' - data-target='#ConfirmModal' - className={ (pagination.page == lastPage ? "hidden" : "") + " btn btn-default" }> - <span className="fa fa-chevron-right"></span> - </button> - </form> - ) + }}> + <button + onClick={e => { + e.preventDefault() + dispatch(actions.checkConfirmModal(e, actions.goToPreviousPage(dispatch, pagination), pagination.stateChanged)) + }} + type="submit" + data-toggle='' + data-target='#ConfirmModal' + className={ (pagination.page == firstPage ? "hidden" : "") + " btn btn-default" }> + <span className="fa fa-chevron-left"></span> + </button> + <button + onClick={e => { + e.preventDefault() + dispatch(actions.checkConfirmModal(e, actions.goToNextPage(dispatch, pagination), pagination.stateChanged)) + }} + type="submit" + data-toggle='' + data-target='#ConfirmModal' + className={ (pagination.page == lastPage ? "hidden" : "") + " btn btn-default" }> + <span className="fa fa-chevron-right"></span> + </button> + </form> + ) + } else { + return false + } } Navigate.propTypes = { journeyPatterns: PropTypes.array.isRequired, + status: PropTypes.object.isRequired, pagination: PropTypes.object.isRequired, dispatch: PropTypes.func.isRequired } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js index eb4499e50..ee13819fd 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js @@ -5,7 +5,8 @@ var CreateModal = require('../components/CreateModal') const mapStateToProps = (state) => { return { modal: state.modal, - journeyPatterns: state.journeyPatterns + journeyPatterns: state.journeyPatterns, + status: state.status } } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js index e1938514a..bc56f62ea 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js @@ -4,7 +4,8 @@ var JourneyPatterns = require('../components/JourneyPatterns') const mapStateToProps = (state) => { return { - journeyPatterns: state.journeyPatterns + journeyPatterns: state.journeyPatterns, + status: state.status } } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js index 42bba6d2e..ef9f8859c 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js @@ -6,6 +6,7 @@ var NavigateComponent = require('../components/Navigate') const mapStateToProps = (state) => { return { journeyPatterns: state.journeyPatterns, + status: state.status, pagination: state.pagination } } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/SaveJourneyPattern.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/SaveJourneyPattern.js index 3de893c39..23198d651 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/SaveJourneyPattern.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/SaveJourneyPattern.js @@ -2,27 +2,32 @@ var React = require('react') var connect = require('react-redux').connect var actions = require('../actions') -let SaveJourneyPattern = ({ dispatch, journeyPatterns, page }) => { - return ( - <form className='clearfix' onSubmit={e => {e.preventDefault()}}> - <button - className='btn btn-danger pull-right' - type='submit' - onClick={e => { - e.preventDefault() - actions.submitJourneyPattern(dispatch, journeyPatterns) - }} - > - Valider - </button> - </form> - ) +let SaveJourneyPattern = ({ dispatch, journeyPatterns, page, status }) => { + if(status.fetchSuccess == true) { + return ( + <form className='clearfix' onSubmit={e => {e.preventDefault()}}> + <button + className='btn btn-danger pull-right' + type='submit' + onClick={e => { + e.preventDefault() + actions.submitJourneyPattern(dispatch, journeyPatterns) + }} + > + Valider + </button> + </form> + ) + } else { + return false + } } const mapStateToProps = (state) => { return { journeyPatterns: state.journeyPatterns, - page: state.pagination.page + page: state.pagination.page, + status: state.status } } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/index.js b/app/assets/javascripts/es6_browserified/journey_patterns/index.js index 13d891630..c9a6f5821 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/index.js @@ -12,6 +12,10 @@ var App = require('./components/App') // var promise = require('redux-promise') var initialState = { + status: { + fetchSuccess: false, + isFetching: false + }, journeyPatterns: [], pagination: { page : 1, diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js index 9e1d15e08..bc97ccb05 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js @@ -1,9 +1,11 @@ var combineReducers = require('redux').combineReducers +var status = require('./status') var journeyPatterns = require('./journeyPatterns') var pagination = require('./pagination') var modal = require('./modal') const journeyPatternsApp = combineReducers({ + status, journeyPatterns, pagination, modal diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/status.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/status.js new file mode 100644 index 000000000..8378c855b --- /dev/null +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/status.js @@ -0,0 +1,14 @@ +var actions = require("../actions") + +const status = (state = {}, action) => { + switch (action.type) { + case 'UNAVAILABLE_SERVER': + return Object.assign({}, state, {fetchSuccess: false}) + case 'RECEIVE_JOURNEY_PATTERNS': + return Object.assign({}, state, {fetchSuccess: true}) + default: + return state + } +} + +module.exports = status |
