diff options
| author | Thomas Haddad | 2017-01-10 17:23:58 +0100 |
|---|---|---|
| committer | Thomas Haddad | 2017-01-10 17:25:27 +0100 |
| commit | 1ed5294c5227c2f8d24cb78c71a87f8f4d58f1b9 (patch) | |
| tree | c48fb6f1e8738b05ab74e4145e2df159e689eaa4 /app/assets/javascripts | |
| parent | 60bd5e945f959c080b3c478b0495dc39466ca80f (diff) | |
| download | chouette-core-1ed5294c5227c2f8d24cb78c71a87f8f4d58f1b9.tar.bz2 | |
Refs #2205: Fix confirm modal being opened only when journey patterns state changed
Signed-off-by: Thomas Shawarma Haddad <thomas.haddad@af83.com>
Diffstat (limited to 'app/assets/javascripts')
8 files changed, 86 insertions, 45 deletions
diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js index a294e69ba..1819ee742 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -28,10 +28,16 @@ const actions = { id : e.currentTarget.id, index }), - openConfirmModal : (accept, cancel) => ({ + checkConfirmModal : (event, callback, stateChanged) => { + if(stateChanged === true){ + return actions.openConfirmModal(callback) + }else{ + return callback + } + }, + openConfirmModal : (callback) => ({ type : 'OPEN_CONFIRM_MODAL', - accept, - cancel + callback }), openEditModal : (index, journeyPattern) => ({ type : 'EDIT_JOURNEYPATTERN_MODAL', diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/ConfirmModal.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/ConfirmModal.js index 86bbe3acb..d9fbf07f8 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/ConfirmModal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/ConfirmModal.js @@ -14,7 +14,7 @@ const ConfirmModal = ({dispatch, modal, onModalAccept, onModalCancel, journeyPat className='btn btn-default' data-dismiss='modal' type='button' - onClick= {() => {onModalCancel(modal.confirmModal.cancel)}} + onClick= {() => {onModalCancel(modal.confirmModal.callback)}} > Ne pas enregistrer </button> @@ -22,7 +22,7 @@ const ConfirmModal = ({dispatch, modal, onModalAccept, onModalCancel, journeyPat className='btn btn-danger' data-dismiss='modal' type='button' - onClick = {() => {onModalAccept(modal.confirmModal.accept, journeyPatterns)}} + onClick = {() => {onModalAccept(modal.confirmModal.callback, journeyPatterns)}} > Enregistrer </button> diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/Navigate.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/Navigate.js new file mode 100644 index 000000000..3c771417d --- /dev/null +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/Navigate.js @@ -0,0 +1,48 @@ +var React = require('react') +var Component = require('react').Component +var PropTypes = require('react').PropTypes +var actions = require('../actions') + +let Navigate = ({ dispatch, journeyPatterns, page, length, stateChanged }) => { + let firstPage = 1 + let lastPage = Math.ceil(length / 12) + + return ( + <form className='btn-group btn-group-sm' onSubmit={e => { + e.preventDefault() + }}> + <button + onClick={e => { + e.preventDefault() + dispatch(actions.checkConfirmModal(e, actions.goToPreviousPage(dispatch, page), stateChanged)) + }} + type="submit" + data-toggle='' + data-target='#ConfirmModal' + className={ (page == firstPage ? "hidden" : "") + " btn btn-default" }> + <span className="fa fa-chevron-left"></span> + </button> + <button + onClick={e => { + e.preventDefault() + dispatch(actions.checkConfirmModal(e, actions.goToNextPage(dispatch, page), stateChanged)) + }} + type="submit" + data-toggle='' + data-target='#ConfirmModal' + className={ (page == lastPage ? "hidden" : "") + " btn btn-default" }> + <span className="fa fa-chevron-right"></span> + </button> + </form> + ) +} + +Navigate.propTypes = { + page: PropTypes.number.isRequired, + length: PropTypes.number.isRequired, + stateChanged: PropTypes.bool.isRequired, + journeyPatterns: PropTypes.array.isRequired, + dispatch: PropTypes.func.isRequired +} + +module.exports = Navigate diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js index 1c9f7113f..d324e6064 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js @@ -1,49 +1,18 @@ var React = require('react') var connect = require('react-redux').connect var actions = require('../actions') +var NavigateComponent = require('../components/Navigate') -let Navigate = ({ dispatch, journeyPatterns, page, length, onOpenConfirmModal }) => { - let firstPage = 1 - let lastPage = Math.ceil(length / 12) - - return ( - <form className='btn-group btn-group-sm' onSubmit={e => { - e.preventDefault() - }}> - <button - onClick={e => { - e.preventDefault() - dispatch(actions.openConfirmModal(actions.goToPreviousPage(dispatch, page), actions.goToPreviousPage(dispatch, page))) - }} - type="submit" - data-toggle='modal' - data-target='#ConfirmModal' - className={ (page == firstPage ? "hidden" : "") + " btn btn-default" }> - <span className="fa fa-chevron-left"></span> - </button> - <button - onClick={e => { - e.preventDefault() - dispatch(actions.openConfirmModal(actions.goToNextPage(dispatch, page), actions.goToNextPage(dispatch, page))) - }} - type="submit" - data-toggle='modal' - data-target='#ConfirmModal' - className={ (page == lastPage ? "hidden" : "") + " btn btn-default" }> - <span className="fa fa-chevron-right"></span> - </button> - </form> - ) -} const mapStateToProps = (state) => { return { journeyPatterns: state.journeyPatterns, page: state.pagination.page, length: state.pagination.totalCount, - confirmModalActions: state.modal.confirmActions + stateChanged: state.pagination.stateChanged } } -Navigate = connect(mapStateToProps)(Navigate) + +const Navigate = connect(mapStateToProps)(NavigateComponent) module.exports = Navigate diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/index.js b/app/assets/javascripts/es6_browserified/journey_patterns/index.js index 449cd3202..47d6dc31f 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/index.js @@ -15,7 +15,8 @@ var initialState = { journeyPatterns: [], pagination: { page : 1, - totalCount: window.journeyPatternLength + totalCount: window.journeyPatternLength, + stateChanged: false }, modal: { type: '', diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js index 9215f801b..8dd1a46e6 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js @@ -38,11 +38,13 @@ const journeyPatterns = (state = [], action) => { case 'LOAD_FIRST_PAGE': actions.fetchJourneyPatterns(action.dispatch) case 'GO_TO_PREVIOUS_PAGE': + $('#ConfirmModal').modal('hide') if(action.currentPage > 1){ actions.fetchJourneyPatterns(action.dispatch, action.currentPage, action.nextPage) } return state case 'GO_TO_NEXT_PAGE': + $('#ConfirmModal').modal('hide') if (window.journeyPatternLength - (action.currentPage * 12) > 0){ actions.fetchJourneyPatterns(action.dispatch, action.currentPage, action.nextPage) } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js index 85df48954..cb274d767 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/modal.js @@ -1,11 +1,11 @@ const modal = (state = {}, action) => { switch (action.type) { case 'OPEN_CONFIRM_MODAL': + $('#ConfirmModal').modal('show') return Object.assign({}, state, { type: 'confirm', confirmModal: { - accept: action.accept, - cancel: action.cancel + callback: action.callback, } }) case 'EDIT_JOURNEYPATTERN_MODAL': diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/pagination.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/pagination.js index a17e9f292..3ac5ba7c0 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/pagination.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/pagination.js @@ -1,18 +1,33 @@ const pagination = (state = {}, action) => { switch (action.type) { + case 'RECEIVE_JOURNEY_PATTERNS': + return Object.assign({}, state, {stateChanged: false}) case 'GO_TO_PREVIOUS_PAGE': if (action.currentPage > 1){ - return Object.assign({}, state, {page : action.currentPage - 1}) + toggleOnConfirmModal() + return Object.assign({}, state, {page : action.currentPage - 1, stateChanged: false}) } return state case 'GO_TO_NEXT_PAGE': if (state.totalCount - (action.currentPage * 12) > 0){ - return Object.assign({}, state, {page : action.currentPage + 1}) + toggleOnConfirmModal() + return Object.assign({}, state, {page : action.currentPage + 1, stateChanged: false}) } return state + case 'UPDATE_CHECKBOX_VALUE': + case 'ADD_JOURNEYPATTERN': + case 'SAVE_MODAL': + toggleOnConfirmModal('modal') + return Object.assign({}, state, {stateChanged: true}) default: return state } } +const toggleOnConfirmModal = (arg = '') =>{ + $('.confirm').each(function(){ + $(this).data('toggle','') + }) +} + module.exports = pagination |
