aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Haddad2017-06-15 15:28:11 +0200
committerThomas Haddad2017-06-15 15:30:12 +0200
commit1e38848dc427f7fe5bd5b0079c2fb9b1d491dca2 (patch)
treed2b83f8375675d92acc5b9d6a26291e3343b565e
parentd6c3eb405a77a32fb11397b985053d239adbf933 (diff)
downloadchouette-core-1e38848dc427f7fe5bd5b0079c2fb9b1d491dca2.tar.bz2
Refs #3784 @3h: Add condition check before validating timetable
Signed-off-by: Thomas Shawarma Haddad <thomas.haddad@af83.com>
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/actions/index.js11
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/components/ErrorModal.js39
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/components/Navigate.js6
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/components/SaveTimetable.js7
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/containers/App.js2
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/containers/ErrorModal.js21
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/containers/SaveTimetable.js12
-rw-r--r--app/assets/javascripts/es6_browserified/time_tables/reducers/modal.js3
8 files changed, 94 insertions, 7 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 0a6e7e1dc..951664129 100644
--- a/app/assets/javascripts/es6_browserified/time_tables/actions/index.js
+++ b/app/assets/javascripts/es6_browserified/time_tables/actions/index.js
@@ -122,6 +122,9 @@ const actions = {
type : 'OPEN_CONFIRM_MODAL',
callback
}),
+ showErrorModal: () => ({
+ type: 'OPEN_ERROR_MODAL'
+ }),
closeModal : () => ({
type : 'CLOSE_MODAL'
}),
@@ -185,9 +188,13 @@ const actions = {
return improvedCM
},
- checkConfirmModal: (event, callback, stateChanged,dispatch) => {
+ checkConfirmModal: (event, callback, stateChanged, dispatch, metas, timetable) => {
if(stateChanged === true){
- return actions.openConfirmModal(callback)
+ if(timetable.time_table_periods.length == 0 && _.some(metas.day_types)){
+ return actions.showErrorModal()
+ }else{
+ return actions.openConfirmModal(callback)
+ }
}else{
dispatch(actions.fetchingApi())
return callback
diff --git a/app/assets/javascripts/es6_browserified/time_tables/components/ErrorModal.js b/app/assets/javascripts/es6_browserified/time_tables/components/ErrorModal.js
new file mode 100644
index 000000000..31ed256ea
--- /dev/null
+++ b/app/assets/javascripts/es6_browserified/time_tables/components/ErrorModal.js
@@ -0,0 +1,39 @@
+var React = require('react')
+var Component = require('react').Component
+var PropTypes = require('react').PropTypes
+
+const ErrorModal = ({dispatch, modal, onModalClose}) => (
+ <div className={ 'modal fade ' + ((modal.type == 'error') ? 'in' : '') } id='ErrorModal'>
+ <div className='modal-container'>
+ <div className='modal-dialog'>
+ <div className='modal-content'>
+ <div className='modal-header'>
+ <h4 className='modal-title'>Erreur</h4>
+ </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>
+ </div>
+ </div>
+ <div className='modal-footer'>
+ <button
+ className='btn btn-link'
+ data-dismiss='modal'
+ type='button'
+ onClick= {() => {onModalClose()}}
+ >
+ Retour
+ </button>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+)
+
+ErrorModal.propTypes = {
+ modal: PropTypes.object.isRequired,
+ onModalClose: PropTypes.func.isRequired
+}
+
+module.exports = ErrorModal
diff --git a/app/assets/javascripts/es6_browserified/time_tables/components/Navigate.js b/app/assets/javascripts/es6_browserified/time_tables/components/Navigate.js
index 74ca36ea6..6a3690cb0 100644
--- a/app/assets/javascripts/es6_browserified/time_tables/components/Navigate.js
+++ b/app/assets/javascripts/es6_browserified/time_tables/components/Navigate.js
@@ -39,7 +39,7 @@ let Navigate = ({ dispatch, metas, timetable, pagination, status, filters}) => {
value={month}
onClick={e => {
e.preventDefault()
- dispatch(actions.checkConfirmModal(e, actions.changePage(dispatch, e.currentTarget.value), pagination.stateChanged, dispatch))
+ dispatch(actions.checkConfirmModal(e, actions.changePage(dispatch, e.currentTarget.value), pagination.stateChanged, dispatch, metas, timetable))
}}
>
{actions.monthName(month) + ' ' + new Date(month).getFullYear()}
@@ -56,7 +56,7 @@ let Navigate = ({ dispatch, metas, timetable, pagination, status, filters}) => {
<button
onClick={e => {
e.preventDefault()
- dispatch(actions.checkConfirmModal(e, actions.goToPreviousPage(dispatch, pagination), pagination.stateChanged, dispatch))
+ dispatch(actions.checkConfirmModal(e, actions.goToPreviousPage(dispatch, pagination), pagination.stateChanged, dispatch, metas, timetable))
}}
type='button'
data-target='#ConfirmModal'
@@ -66,7 +66,7 @@ let Navigate = ({ dispatch, metas, timetable, pagination, status, filters}) => {
<button
onClick={e => {
e.preventDefault()
- dispatch(actions.checkConfirmModal(e, actions.goToNextPage(dispatch, pagination), pagination.stateChanged, dispatch))
+ dispatch(actions.checkConfirmModal(e, actions.goToNextPage(dispatch, pagination), pagination.stateChanged, dispatch, metas, timetable))
}}
type='button'
data-target='#ConfirmModal'
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 24c91f282..e8c0aa3ba 100644
--- a/app/assets/javascripts/es6_browserified/time_tables/components/SaveTimetable.js
+++ b/app/assets/javascripts/es6_browserified/time_tables/components/SaveTimetable.js
@@ -2,6 +2,7 @@ var React = require('react')
var Component = require('react').Component
var PropTypes = require('react').PropTypes
var actions = require('../actions')
+var _ = require('lodash')
class SaveTimetable extends Component{
constructor(props){
@@ -18,7 +19,11 @@ class SaveTimetable extends Component{
type='button'
onClick={e => {
e.preventDefault()
- actions.submitTimetable(this.props.dispatch, this.props.timetable, this.props.metas)
+ if(this.props.timetable.time_table_periods.length == 0 && _.some(this.props.metas.day_types)){
+ this.props.onShowErrorModal()
+ }else{
+ actions.submitTimetable(this.props.getDispatch(), this.props.timetable, this.props.metas)
+ }
}}
>
Valider
diff --git a/app/assets/javascripts/es6_browserified/time_tables/containers/App.js b/app/assets/javascripts/es6_browserified/time_tables/containers/App.js
index 7c75377ea..02f0ddbd8 100644
--- a/app/assets/javascripts/es6_browserified/time_tables/containers/App.js
+++ b/app/assets/javascripts/es6_browserified/time_tables/containers/App.js
@@ -8,6 +8,7 @@ var Navigate = require('./Navigate')
var PeriodForm = require('./PeriodForm')
var SaveTimetable = require('./SaveTimetable')
var ConfirmModal = require('./ConfirmModal')
+var ErrorModal = require('./ErrorModal')
class App extends Component {
componentDidMount(){
@@ -24,6 +25,7 @@ class App extends Component {
<PeriodForm />
<SaveTimetable />
<ConfirmModal />
+ <ErrorModal />
</div>
</div>
)
diff --git a/app/assets/javascripts/es6_browserified/time_tables/containers/ErrorModal.js b/app/assets/javascripts/es6_browserified/time_tables/containers/ErrorModal.js
new file mode 100644
index 000000000..16a7d45dd
--- /dev/null
+++ b/app/assets/javascripts/es6_browserified/time_tables/containers/ErrorModal.js
@@ -0,0 +1,21 @@
+var actions = require('../actions')
+var connect = require('react-redux').connect
+var ErrorModal = require('../components/ErrorModal')
+
+const mapStateToProps = (state) => {
+ return {
+ modal: state.modal
+ }
+}
+
+const mapDispatchToProps = (dispatch) => {
+ return {
+ onModalClose: () =>{
+ dispatch(actions.closeModal())
+ }
+ }
+}
+
+const ErrorModalContainer = connect(mapStateToProps, mapDispatchToProps)(ErrorModal)
+
+module.exports = ErrorModalContainer
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 7d2684dde..b5539e7d8 100644
--- a/app/assets/javascripts/es6_browserified/time_tables/containers/SaveTimetable.js
+++ b/app/assets/javascripts/es6_browserified/time_tables/containers/SaveTimetable.js
@@ -11,6 +11,16 @@ const mapStateToProps = (state) => {
}
}
-const SaveTimetable = connect(mapStateToProps)(SaveTimetableComponent)
+const mapDispatchToProps = (dispatch) => {
+ return {
+ onShowErrorModal: () => {
+ dispatch(actions.showErrorModal())
+ },
+ getDispatch: () => {
+ return dispatch
+ }
+ }
+}
+const SaveTimetable = connect(mapStateToProps, mapDispatchToProps)(SaveTimetableComponent)
module.exports = SaveTimetable
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 56486a105..69f7b206e 100644
--- a/app/assets/javascripts/es6_browserified/time_tables/reducers/modal.js
+++ b/app/assets/javascripts/es6_browserified/time_tables/reducers/modal.js
@@ -19,6 +19,9 @@ const modal = (state = {}, action) => {
callback: action.callback,
}
})
+ case 'OPEN_ERROR_MODAL':
+ $('#ErrorModal').modal('show')
+ return _.assign({}, state, {type: 'error'})
case 'CLOSE_PERIOD_FORM':
newModalProps = _.assign({}, state.modalProps, {active: false})
return _.assign({}, state, {modalProps: newModalProps})