aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcedricnjanga2017-08-03 12:12:49 +0200
committercedricnjanga2017-08-16 09:28:48 +0200
commitc4f73cc09571aa2b24c4fb4d305523a2c4292738 (patch)
treeb421ace192b2872d7508676d8518a457e31ccc84
parent8fcb78a249f5584a9a79f8cf2f0eef0bf80b4d37 (diff)
downloadchouette-core-c4f73cc09571aa2b24c4fb4d305523a2c4292738.tar.bz2
Refs #4226 Validation on TT with day types but no periods
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/actions/index.js8
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/components/ErrorModal.js6
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/components/SaveTimetable.js10
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/containers/ErrorModal.js1
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/containers/SaveTimetable.js4
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/index.js14
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/reducers/modal.js6
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})