aboutsummaryrefslogtreecommitdiffstats
path: root/app/assets/javascripts
diff options
context:
space:
mode:
authorjpl2017-01-12 10:14:32 +0100
committerjpl2017-01-12 10:20:14 +0100
commitbaf8814a32d4012cb83ddf2d5a9333201dd1a365 (patch)
tree91d5f69ccffa14ffcf97d0fb553d4f2e7cba5f67 /app/assets/javascripts
parentd37324f9e80c485ed07623341489223a04e5096c (diff)
downloadchouette-core-baf8814a32d4012cb83ddf2d5a9333201dd1a365.tar.bz2
adding fetchSuccess status and behaviour to jp collection
Diffstat (limited to 'app/assets/javascripts')
-rw-r--r--app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js56
-rw-r--r--app/assets/javascripts/es6_browserified/journey_patterns/components/CreateModal.js147
-rw-r--r--app/assets/javascripts/es6_browserified/journey_patterns/components/JourneyPatterns.js8
-rw-r--r--app/assets/javascripts/es6_browserified/journey_patterns/components/Navigate.js61
-rw-r--r--app/assets/javascripts/es6_browserified/journey_patterns/containers/AddJourneyPattern.js3
-rw-r--r--app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js3
-rw-r--r--app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js1
-rw-r--r--app/assets/javascripts/es6_browserified/journey_patterns/containers/SaveJourneyPattern.js37
-rw-r--r--app/assets/javascripts/es6_browserified/journey_patterns/index.js4
-rw-r--r--app/assets/javascripts/es6_browserified/journey_patterns/reducers/index.js2
-rw-r--r--app/assets/javascripts/es6_browserified/journey_patterns/reducers/status.js14
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