diff options
| author | cedricnjanga | 2017-08-28 18:07:46 +0200 |
|---|---|---|
| committer | cedricnjanga | 2017-08-28 18:18:51 +0200 |
| commit | 24fdf8c88330a4851b7f17000da9fbe365e54dfd (patch) | |
| tree | e6c4b493859dff36ea0e3b9e5b4067d19dfa260c /app/assets | |
| parent | 559dfcd5473cd106ef98826f19df22e2cbb2a4c5 (diff) | |
| download | chouette-core-24fdf8c88330a4851b7f17000da9fbe365e54dfd.tar.bz2 | |
Timetable validate form update
Diffstat (limited to 'app/assets')
5 files changed, 36 insertions, 43 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 61667f5ab..02ece1654 100644 --- a/app/assets/javascripts/es6_browserified/time_tables/actions/index.js +++ b/app/assets/javascripts/es6_browserified/time_tables/actions/index.js @@ -105,12 +105,13 @@ const actions = { group, selectType }), - validatePeriodForm: (modalProps, timeTablePeriods, metas, timetableInDates) => ({ + validatePeriodForm: (modalProps, timeTablePeriods, metas, timetableInDates, error) => ({ type: 'VALIDATE_PERIOD_FORM', modalProps, timeTablePeriods, metas, - timetableInDates + timetableInDates, + error }), includeDateInPeriod: (index, dayTypes, date) => ({ type: 'INCLUDE_DATE_IN_PERIOD', @@ -209,16 +210,20 @@ const actions = { formatDate: (props) => { return props.year + '-' + props.month + '-' + props.day }, - checkErrorsInPeriods: (start, end, index, periods, days) => { + checkErrorsInPeriods: (start, end, index, periods) => { let error = '' start = new Date(start) end = new Date(end) - _.each(periods, (period, i) => { - if(index !== i && !period.deleted){ - if((new Date(period.period_start) <= start && new Date(period.period_end) >= start) || (new Date(period.period_start) <= end && new Date(period.period_end) >= end) || (start >= new Date(period.period_start) && end <= new Date(period.period_end)) || (start <= new Date(period.period_start) && end >= new Date(period.period_end))) - error = 'Les périodes ne peuvent pas se chevaucher' + + for (let i = 0; i < periods.length; i++) { + let period = periods[i] + if (index !== i && !period.deleted) { + if (new Date(period.period_start) <= end && new Date(period.period_end) >= start) { + error = 'Les périodes ne peuvent pas se chevaucher' + break + } } - }) + } return error }, checkErrorsInDates: (start, end, in_days) => { @@ -226,11 +231,12 @@ const actions = { start = new Date(start) end = new Date(end) - _.each(in_days, ({date}) => { - if (start <= new Date(date) && end >= new Date(date)) { + for (let day of in_days) { + if (start <= new Date(day.date) && end >= new Date(day.date)) { error = 'Une période ne peut chevaucher une date dans un calendrier' + break } - }) + } return error }, fetchTimeTables: (dispatch, nextPage) => { diff --git a/app/assets/javascripts/es6_browserified/time_tables/containers/PeriodForm.js b/app/assets/javascripts/es6_browserified/time_tables/containers/PeriodForm.js index 723a4a7fb..951a09741 100644 --- a/app/assets/javascripts/es6_browserified/time_tables/containers/PeriodForm.js +++ b/app/assets/javascripts/es6_browserified/time_tables/containers/PeriodForm.js @@ -28,7 +28,13 @@ const mapDispatchToProps = (dispatch) => { dispatch(actions.updatePeriodForm(val, group, 'day')) }, onValidatePeriodForm: (modalProps, timeTablePeriods, metas, timetableInDates) => { - dispatch(actions.validatePeriodForm(modalProps, timeTablePeriods, metas, timetableInDates)) + let period_start = actions.formatDate(modalProps.begin) + let period_end = actions.formatDate(modalProps.end) + let error = '' + if (new Date(period_end) <= new Date(period_start)) error = 'La date de départ doit être antérieure à la date de fin' + if (error == '') error = actions.checkErrorsInPeriods(period_start, period_end, modalProps.index, timeTablePeriods) + if (error == '') error = actions.checkErrorsInDates(period_start, period_end, timetableInDates) + dispatch(actions.validatePeriodForm(modalProps, timeTablePeriods, metas, timetableInDates, error)) } } } diff --git a/app/assets/javascripts/es6_browserified/time_tables/index.js b/app/assets/javascripts/es6_browserified/time_tables/index.js index a91747991..9873f5532 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: { @@ -58,12 +58,12 @@ var initialState = { confirmModal: {} } } -// const loggerMiddleware = createLogger() +const loggerMiddleware = createLogger() let store = createStore( timeTablesApp, initialState, - // applyMiddleware(thunkMiddleware, promise, loggerMiddleware) + 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 3fe4e43a2..652b42449 100644 --- a/app/assets/javascripts/es6_browserified/time_tables/reducers/modal.js +++ b/app/assets/javascripts/es6_browserified/time_tables/reducers/modal.js @@ -54,21 +54,9 @@ const modal = (state = {}, action) => { newModalProps[action.group][action.selectType] = action.val return _.assign({}, state, {modalProps: newModalProps}) case 'VALIDATE_PERIOD_FORM': - period_start = actions.formatDate(action.modalProps.begin) - period_end = actions.formatDate(action.modalProps.end) - newModalProps = _.assign({}, state.modalProps) - - if(new Date(period_end) <= new Date(period_start)){ - newModalProps.error = 'La date de départ doit être antérieure à la date de fin' - return _.assign({}, state, {modalProps: newModalProps}) - } - - let newPeriods = JSON.parse(JSON.stringify(action.timeTablePeriods)) - let newDays = JSON.parse(JSON.stringify(action.timetableInDates)) - let error = actions.checkErrorsInPeriods(period_start, period_end, action.modalProps.index, newPeriods) - if (error == '') error = actions.checkErrorsInDates(period_start, period_end, newDays) - newModalProps.error = error - newModalProps.active = (error == '') ? false : true + newModalProps = JSON.parse(JSON.stringify(state.modalProps)) + newModalProps.error = action.error + newModalProps.active = (newModalProps.error == '') ? false : true return _.assign({}, state, {modalProps: newModalProps}) default: return state diff --git a/app/assets/javascripts/es6_browserified/time_tables/reducers/timetable.js b/app/assets/javascripts/es6_browserified/time_tables/reducers/timetable.js index 84d90d53c..390bdffb0 100644 --- a/app/assets/javascripts/es6_browserified/time_tables/reducers/timetable.js +++ b/app/assets/javascripts/es6_browserified/time_tables/reducers/timetable.js @@ -73,19 +73,13 @@ const timetable = (state = {}, action) => { case 'UPDATE_CURRENT_MONTH_FROM_DAYTYPES': return _.assign({}, state, {current_month: actions.updateSynthesis(state, action.dayTypes)}) case 'VALIDATE_PERIOD_FORM': + if (action.error != '') return state + let period_start = actions.formatDate(action.modalProps.begin) let period_end = actions.formatDate(action.modalProps.end) - if(new Date(period_end) <= new Date(period_start)){ - return state - } + let newPeriods = JSON.parse(JSON.stringify(action.timeTablePeriods)) - let newDays = JSON.parse(JSON.stringify(action.timetableInDates)) - let error = actions.checkErrorsInPeriods(period_start, period_end, action.modalProps.index, newPeriods) - if (error == '') error = actions.checkErrorsInDates(period_start, period_end, newDays) - if(error != ''){ - return state - } if (action.modalProps.index !== false){ newPeriods[action.modalProps.index].period_start = period_start newPeriods[action.modalProps.index].period_end = period_end @@ -98,7 +92,6 @@ const timetable = (state = {}, action) => { } newState =_.assign({}, state, {time_table_periods: newPeriods}) return _.assign({}, newState, {current_month: actions.updateSynthesis(newState, action.metas.day_types)}) - default: return state } |
