diff options
| author | Thomas Haddad | 2017-04-24 11:57:31 +0200 |
|---|---|---|
| committer | Thomas Haddad | 2017-04-24 11:58:06 +0200 |
| commit | c96e59ad35eff48cec7c077d4ecf3a6d2d161556 (patch) | |
| tree | 6aa07c9f113691cbb9c5c1b01117f2608a47f559 /app/assets/javascripts | |
| parent | 208c82b3a2a716e7481afedef429088ec5898c33 (diff) | |
| download | chouette-core-c96e59ad35eff48cec7c077d4ecf3a6d2d161556.tar.bz2 | |
Refs #3151: add VALIDATE_PERIOD_FORM (w/o error handler yet)
Signed-off-by: Thomas Shawarma Haddad <thomas.haddad@af83.com>
Diffstat (limited to 'app/assets/javascripts')
6 files changed, 46 insertions, 10 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 a9fbb94cf..d83612211 100644 --- a/app/assets/javascripts/es6_browserified/time_tables/actions/index.js +++ b/app/assets/javascripts/es6_browserified/time_tables/actions/index.js @@ -85,6 +85,10 @@ const actions = { group, selectType }), + validatePeriodForm: (modalProps) => ({ + type: 'VALIDATE_PERIOD_FORM', + modalProps + }), includeDateInPeriod: (index, day, dayTypes) => ({ type: 'INCLUDE_DATE_IN_PERIOD', index, @@ -162,6 +166,9 @@ const actions = { return callback } }, + formatDate: (props) => { + return props.year + '-' + props.month + '-' + props.day + }, fetchTimeTables: (dispatch, nextPage) => { let urlJSON = window.location.pathname.split('/', 5).join('/') // console.log(nextPage) diff --git a/app/assets/javascripts/es6_browserified/time_tables/components/PeriodForm.js b/app/assets/javascripts/es6_browserified/time_tables/components/PeriodForm.js index 274429af8..c46fb2c18 100644 --- a/app/assets/javascripts/es6_browserified/time_tables/components/PeriodForm.js +++ b/app/assets/javascripts/es6_browserified/time_tables/components/PeriodForm.js @@ -31,7 +31,7 @@ const makeYearsOptions = (yearSelected) => { return arr } -const PeriodForm = ({modal, timetable, onOpenAddPeriodForm, onClosePeriodForm, onUpdatePeriodForm}) => ( +const PeriodForm = ({modal, timetable, onOpenAddPeriodForm, onClosePeriodForm, onUpdatePeriodForm, onValidatePeriodForm}) => ( <div> {modal.modalProps.active && <div className="form-group date filter_menu-item"> @@ -65,7 +65,11 @@ const PeriodForm = ({modal, timetable, onOpenAddPeriodForm, onClosePeriodForm, o > Annuler </button> - <button>Valider</button> + <button + onClick={() => onValidatePeriodForm(modal.modalProps)} + > + Valider + </button> </div> </div> } @@ -84,6 +88,7 @@ PeriodForm.propTypes = { onOpenAddPeriodForm: PropTypes.func.isRequired, onClosePeriodForm: PropTypes.func.isRequired, onUpdatePeriodForm: PropTypes.func.isRequired, + onValidatePeriodForm: PropTypes.func.isRequired, timetable: PropTypes.object.isRequired } 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 0a785c680..68ee5beef 100644 --- a/app/assets/javascripts/es6_browserified/time_tables/containers/PeriodForm.js +++ b/app/assets/javascripts/es6_browserified/time_tables/containers/PeriodForm.js @@ -19,6 +19,9 @@ const mapDispatchToProps = (dispatch) => { }, onUpdatePeriodForm: (val, group, selectType) => { dispatch(actions.updatePeriodForm(val, group, selectType)) + }, + onValidatePeriodForm: (props) => { + dispatch(actions.validatePeriodForm(props)) } } } diff --git a/app/assets/javascripts/es6_browserified/time_tables/index.js b/app/assets/javascripts/es6_browserified/time_tables/index.js index 69b7fdd7c..c78df5f1e 100644 --- a/app/assets/javascripts/es6_browserified/time_tables/index.js +++ b/app/assets/javascripts/es6_browserified/time_tables/index.js @@ -48,7 +48,9 @@ var initialState = { day: '01', month: '01', year: String(new Date().getFullYear()) - } + }, + index: false, + errors: [] }, confirmModal: {} } 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 e9c0c2fb9..58466fa70 100644 --- a/app/assets/javascripts/es6_browserified/time_tables/reducers/modal.js +++ b/app/assets/javascripts/es6_browserified/time_tables/reducers/modal.js @@ -1,15 +1,15 @@ var _ = require('lodash') let newModalProps = {} +let emptyDate = { + begin: '01', + month: '01', + year: String(new Date().getFullYear()) +} const modal = (state = {}, action) => { switch (action.type) { case 'CLOSE_PERIOD_FORM': - let emptyDate = { - begin: '', - month: '', - year: '' - } - newModalProps = _.assign({}, state.modalProps, {active: false, begin: emptyDate, end: emptyDate, index: false}) + newModalProps = _.assign({}, state.modalProps, {active: false}) return _.assign({}, state, {modalProps: newModalProps}) case 'OPEN_EDIT_PERIOD_FORM': let period_start = action.period.period_start.split('-') @@ -28,12 +28,15 @@ const modal = (state = {}, action) => { newModalProps.index = action.index return _.assign({}, state, {modalProps: newModalProps}) case 'OPEN_ADD_PERIOD_FORM': - newModalProps = _.assign({}, state.modalProps, {active: true}) + newModalProps = _.assign({}, state.modalProps, {active: true, begin: emptyDate, end: emptyDate, index: false, errors: []}) return _.assign({}, state, {modalProps: newModalProps}) case 'UPDATE_PERIOD_FORM': newModalProps = JSON.parse(JSON.stringify(state.modalProps)) newModalProps[action.group][action.selectType] = action.val return _.assign({}, state, {modalProps: newModalProps}) + case 'VALIDATE_PERIOD_FORM': + newModalProps = _.assign({}, state.modalProps, {active: false}) + 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 b052b5fcc..dc13684fb 100644 --- a/app/assets/javascripts/es6_browserified/time_tables/reducers/timetable.js +++ b/app/assets/javascripts/es6_browserified/time_tables/reducers/timetable.js @@ -55,6 +55,22 @@ const timetable = (state = {}, action) => { }) newState = _.assign({}, state, {current_month: newCMe}) return _.assign({}, newState, {current_month: actions.updateSynthesis(newState, action.dayTypes)}) + case 'VALIDATE_PERIOD_FORM': + let period_start = actions.formatDate(action.modalProps.begin) + let period_end = actions.formatDate(action.modalProps.end) + let newPeriods = JSON.parse(JSON.stringify(state.time_table_periods)) + if (action.modalProps.index !== false){ + newPeriods[action.modalProps.index].period_start = period_start + newPeriods[action.modalProps.index].period_end = period_end + }else{ + let newPeriod = { + period_start: period_start, + period_end: period_end + } + newPeriods.push(newPeriod) + } + return _.assign({}, state, {time_table_periods: newPeriods}) + default: return state } |
