aboutsummaryrefslogtreecommitdiffstats
path: root/app/assets
diff options
context:
space:
mode:
authorcedricnjanga2017-08-28 18:07:46 +0200
committercedricnjanga2017-08-28 18:18:51 +0200
commit24fdf8c88330a4851b7f17000da9fbe365e54dfd (patch)
treee6c4b493859dff36ea0e3b9e5b4067d19dfa260c /app/assets
parent559dfcd5473cd106ef98826f19df22e2cbb2a4c5 (diff)
downloadchouette-core-24fdf8c88330a4851b7f17000da9fbe365e54dfd.tar.bz2
Timetable validate form update
Diffstat (limited to 'app/assets')
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/actions/index.js28
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/containers/PeriodForm.js8
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/index.js12
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/reducers/modal.js18
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/reducers/timetable.js13
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
}