diff options
| author | cedricnjanga | 2017-08-03 12:12:49 +0200 |
|---|---|---|
| committer | cedricnjanga | 2017-08-16 09:28:48 +0200 |
| commit | c4f73cc09571aa2b24c4fb4d305523a2c4292738 (patch) | |
| tree | b421ace192b2872d7508676d8518a457e31ccc84 | |
| parent | 8fcb78a249f5584a9a79f8cf2f0eef0bf80b4d37 (diff) | |
| download | chouette-core-c4f73cc09571aa2b24c4fb4d305523a2c4292738.tar.bz2 | |
Refs #4226 Validation on TT with day types but no periods
7 files changed, 33 insertions, 16 deletions
diff --git a/app/assets/javascripts/es6_browserified/time_tables/actions/index.js b/app/assets/javascripts/es6_browserified/time_tables/actions/index.js index 951664129..05b042109 100644 --- a/app/assets/javascripts/es6_browserified/time_tables/actions/index.js +++ b/app/assets/javascripts/es6_browserified/time_tables/actions/index.js @@ -96,6 +96,9 @@ const actions = { closePeriodForm: () => ({ type: 'CLOSE_PERIOD_FORM' }), + resetModalErrors: () => ({ + type: 'RESET_MODAL_ERRORS' + }), updatePeriodForm: (val, group, selectType) => ({ type: 'UPDATE_PERIOD_FORM', val, @@ -122,8 +125,9 @@ const actions = { type : 'OPEN_CONFIRM_MODAL', callback }), - showErrorModal: () => ({ - type: 'OPEN_ERROR_MODAL' + showErrorModal: (error) => ({ + type: 'OPEN_ERROR_MODAL', + error }), closeModal : () => ({ type : 'CLOSE_MODAL' diff --git a/app/assets/javascripts/es6_browserified/time_tables/components/ErrorModal.js b/app/assets/javascripts/es6_browserified/time_tables/components/ErrorModal.js index 31ed256ea..bc85d8cd6 100644 --- a/app/assets/javascripts/es6_browserified/time_tables/components/ErrorModal.js +++ b/app/assets/javascripts/es6_browserified/time_tables/components/ErrorModal.js @@ -2,6 +2,10 @@ var React = require('react') var Component = require('react').Component var PropTypes = require('react').PropTypes +const withoutPeriodsWithDaysTypes = "Un calendrier d'application ne peut pas avoir de journée(s) d'application sans période(s)." +const withPeriodsWithoutDayTypes = "Un calendrier d'application ne peut pas avoir de période(s) sans journée(s) d'application." + + const ErrorModal = ({dispatch, modal, onModalClose}) => ( <div className={ 'modal fade ' + ((modal.type == 'error') ? 'in' : '') } id='ErrorModal'> <div className='modal-container'> @@ -12,7 +16,7 @@ const ErrorModal = ({dispatch, modal, onModalClose}) => ( </div> <div className='modal-body'> <div className='mt-md mb-md'> - <p>Un calendrier d'application ne peut pas avoir de journée(s) d'application sans période(s).</p> + <p>{(modal.modalProps.error == "withoutPeriodsWithDaysTypes") ? withoutPeriodsWithDaysTypes : withPeriodsWithoutDayTypes}</p> </div> </div> <div className='modal-footer'> diff --git a/app/assets/javascripts/es6_browserified/time_tables/components/SaveTimetable.js b/app/assets/javascripts/es6_browserified/time_tables/components/SaveTimetable.js index e8c0aa3ba..428243788 100644 --- a/app/assets/javascripts/es6_browserified/time_tables/components/SaveTimetable.js +++ b/app/assets/javascripts/es6_browserified/time_tables/components/SaveTimetable.js @@ -10,6 +10,10 @@ class SaveTimetable extends Component{ } render() { + const withoutPeriodsWithDaysTypes = _.reject(this.props.timetable.time_table_periods, 'deleted').length == 0 && _.some(this.props.metas.day_types) + const withPeriodsWithoutDayTypes = _.reject(this.props.timetable.time_table_periods, 'deleted').length > 0 && _.every(this.props.metas.day_types, dt => dt == false) + const errorKey = withoutPeriodsWithDaysTypes ? "withoutPeriodsWithDaysTypes" : "withPeriodsWithoutDayTypes" + return ( <div className='row mt-md'> <div className='col-lg-12 text-right'> @@ -19,9 +23,9 @@ class SaveTimetable extends Component{ type='button' onClick={e => { e.preventDefault() - if(this.props.timetable.time_table_periods.length == 0 && _.some(this.props.metas.day_types)){ - this.props.onShowErrorModal() - }else{ + if (withoutPeriodsWithDaysTypes || withPeriodsWithoutDayTypes) { + this.props.onShowErrorModal(errorKey) + } else { actions.submitTimetable(this.props.getDispatch(), this.props.timetable, this.props.metas) } }} diff --git a/app/assets/javascripts/es6_browserified/time_tables/containers/ErrorModal.js b/app/assets/javascripts/es6_browserified/time_tables/containers/ErrorModal.js index 16a7d45dd..e0b2c1240 100644 --- a/app/assets/javascripts/es6_browserified/time_tables/containers/ErrorModal.js +++ b/app/assets/javascripts/es6_browserified/time_tables/containers/ErrorModal.js @@ -12,6 +12,7 @@ const mapDispatchToProps = (dispatch) => { return { onModalClose: () =>{ dispatch(actions.closeModal()) + dispatch(actions.resetModalErrors()) } } } diff --git a/app/assets/javascripts/es6_browserified/time_tables/containers/SaveTimetable.js b/app/assets/javascripts/es6_browserified/time_tables/containers/SaveTimetable.js index b5539e7d8..6287da15b 100644 --- a/app/assets/javascripts/es6_browserified/time_tables/containers/SaveTimetable.js +++ b/app/assets/javascripts/es6_browserified/time_tables/containers/SaveTimetable.js @@ -13,8 +13,8 @@ const mapStateToProps = (state) => { const mapDispatchToProps = (dispatch) => { return { - onShowErrorModal: () => { - dispatch(actions.showErrorModal()) + onShowErrorModal: (errorKey) => { + dispatch(actions.showErrorModal(errorKey)) }, getDispatch: () => { return dispatch diff --git a/app/assets/javascripts/es6_browserified/time_tables/index.js b/app/assets/javascripts/es6_browserified/time_tables/index.js index 01f8c428e..4a36b6f92 100644 --- a/app/assets/javascripts/es6_browserified/time_tables/index.js +++ b/app/assets/javascripts/es6_browserified/time_tables/index.js @@ -6,10 +6,10 @@ var timeTablesApp = require('./reducers') var App = require('./containers/App') // logger, DO NOT REMOVE -// var applyMiddleware = require('redux').applyMiddleware -// var createLogger = require('redux-logger') -// var thunkMiddleware = require('redux-thunk').default -// var promise = require('redux-promise') +var applyMiddleware = require('redux').applyMiddleware +var createLogger = require('redux-logger') +var thunkMiddleware = require('redux-thunk').default +var promise = require('redux-promise') var initialState = { status: { @@ -57,12 +57,12 @@ var initialState = { confirmModal: {} } } -// const loggerMiddleware = createLogger() +const loggerMiddleware = createLogger() let store = createStore( timeTablesApp, - initialState - // applyMiddleware(thunkMiddleware, promise, loggerMiddleware) + initialState, + applyMiddleware(thunkMiddleware, promise, loggerMiddleware) ) render( diff --git a/app/assets/javascripts/es6_browserified/time_tables/reducers/modal.js b/app/assets/javascripts/es6_browserified/time_tables/reducers/modal.js index 69f7b206e..3a4a10c64 100644 --- a/app/assets/javascripts/es6_browserified/time_tables/reducers/modal.js +++ b/app/assets/javascripts/es6_browserified/time_tables/reducers/modal.js @@ -21,7 +21,11 @@ const modal = (state = {}, action) => { }) case 'OPEN_ERROR_MODAL': $('#ErrorModal').modal('show') - return _.assign({}, state, {type: 'error'}) + newModalProps = _.assign({}, state.modalProps, {error: action.error}) + return _.assign({}, state, {type: 'error'}, {modalProps: newModalProps}) + case 'RESET_MODAL_ERRORS': + newModalProps = _.assign({}, state.modalProps, {error: ''}) + return _.assign({}, state, {type: ''}, {modalProps: newModalProps}) case 'CLOSE_PERIOD_FORM': newModalProps = _.assign({}, state.modalProps, {active: false}) return _.assign({}, state, {modalProps: newModalProps}) |
