diff options
| author | Thomas Haddad | 2017-01-11 12:09:31 +0100 |
|---|---|---|
| committer | Thomas Haddad | 2017-01-11 12:10:13 +0100 |
| commit | 221300caac758edf7cdb34ec26f41952a2401728 (patch) | |
| tree | f7d72303ee4eb942577bab5d38ffee30470514c5 | |
| parent | ac64a2c779174a7ecd125d761364cbe9b4e9e30a (diff) | |
| download | chouette-core-221300caac758edf7cdb34ec26f41952a2401728.tar.bz2 | |
Add update journey patterns length after submitting correct values
Signed-off-by: Thomas Shawarma Haddad <thomas.haddad@af83.com>
9 files changed, 37 insertions, 11 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 1819ee742..24fd37a34 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -17,10 +17,12 @@ const actions = { currentPage, nextPage : false }), - goToNextPage : (dispatch, currentPage) => ({ + goToNextPage : (dispatch, currentPage, totalCount, perPage) => ({ type: 'GO_TO_NEXT_PAGE', dispatch, currentPage, + totalCount, + perPage, nextPage : true }), updateCheckboxValue : (e, index) => ({ @@ -67,6 +69,10 @@ const actions = { type: 'SAVE_PAGE', dispatch }), + updateTotalCount: (diff) =>({ + type: 'UPDATE_TOTAL_COUNT', + diff + }), submitJourneyPattern : (dispatch, state, next) => { let urlJSON = window.location.pathname + ".json" let req = new Request(urlJSON, { @@ -147,6 +153,9 @@ const actions = { deletable: false }) } + if(journeyPatterns.length != window.journeyPatternsPerPage){ + dispatch(actions.updateTotalCount(journeyPatterns.length - window.journeyPatternsPerPage)) + } dispatch(actions.receiveJourneyPatterns(journeyPatterns)) }) } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/components/Navigate.js b/app/assets/javascripts/es6_browserified/journey_patterns/components/Navigate.js index 3c771417d..826781890 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/components/Navigate.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/components/Navigate.js @@ -3,9 +3,9 @@ var Component = require('react').Component var PropTypes = require('react').PropTypes var actions = require('../actions') -let Navigate = ({ dispatch, journeyPatterns, page, length, stateChanged }) => { +let Navigate = ({ dispatch, journeyPatterns, page, stateChanged, totalCount, perPage }) => { let firstPage = 1 - let lastPage = Math.ceil(length / 12) + let lastPage = Math.ceil(totalCount / window.journeyPatternsPerPage) return ( <form className='btn-group btn-group-sm' onSubmit={e => { @@ -25,7 +25,7 @@ let Navigate = ({ dispatch, journeyPatterns, page, length, stateChanged }) => { <button onClick={e => { e.preventDefault() - dispatch(actions.checkConfirmModal(e, actions.goToNextPage(dispatch, page), stateChanged)) + dispatch(actions.checkConfirmModal(e, actions.goToNextPage(dispatch, page, totalCount, perPage), stateChanged)) }} type="submit" data-toggle='' @@ -39,9 +39,10 @@ let Navigate = ({ dispatch, journeyPatterns, page, length, stateChanged }) => { Navigate.propTypes = { page: PropTypes.number.isRequired, - length: PropTypes.number.isRequired, + totalCount: PropTypes.number.isRequired, stateChanged: PropTypes.bool.isRequired, journeyPatterns: PropTypes.array.isRequired, + perPage: PropTypes.number.isRequired, dispatch: PropTypes.func.isRequired } 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 d324e6064..a5e29ccc3 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js @@ -7,7 +7,8 @@ const mapStateToProps = (state) => { return { journeyPatterns: state.journeyPatterns, page: state.pagination.page, - length: state.pagination.totalCount, + totalCount: state.pagination.totalCount, + perPage: state.pagination.perPage, stateChanged: state.pagination.stateChanged } } diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/index.js b/app/assets/javascripts/es6_browserified/journey_patterns/index.js index 47d6dc31f..13d891630 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/index.js @@ -16,6 +16,7 @@ var initialState = { pagination: { page : 1, totalCount: window.journeyPatternLength, + perPage: window.journeyPatternsPerPage, stateChanged: false }, modal: { 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 8dd1a46e6..985725ade 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journeyPatterns.js @@ -45,7 +45,7 @@ const journeyPatterns = (state = [], action) => { return state case 'GO_TO_NEXT_PAGE': $('#ConfirmModal').modal('hide') - if (window.journeyPatternLength - (action.currentPage * 12) > 0){ + if (action.totalCount - (action.currentPage * window.journeyPatternsPerPage) > 0){ actions.fetchJourneyPatterns(action.dispatch, action.currentPage, action.nextPage) } return state 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 3ac5ba7c0..02ccdea1f 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/pagination.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/pagination.js @@ -9,7 +9,7 @@ const pagination = (state = {}, action) => { } return state case 'GO_TO_NEXT_PAGE': - if (state.totalCount - (action.currentPage * 12) > 0){ + if (state.totalCount - (action.currentPage * action.perPage) > 0){ toggleOnConfirmModal() return Object.assign({}, state, {page : action.currentPage + 1, stateChanged: false}) } @@ -19,6 +19,8 @@ const pagination = (state = {}, action) => { case 'SAVE_MODAL': toggleOnConfirmModal('modal') return Object.assign({}, state, {stateChanged: true}) + case 'UPDATE_TOTAL_COUNT': + return Object.assign({}, state, {totalCount : state.totalCount - action.diff }) default: return state } diff --git a/app/views/journey_patterns_collections/show.html.slim b/app/views/journey_patterns_collections/show.html.slim index 7b6f7ae7a..10ac476a5 100644 --- a/app/views/journey_patterns_collections/show.html.slim +++ b/app/views/journey_patterns_collections/show.html.slim @@ -1,4 +1,5 @@ #journey_patterns = javascript_tag do - | window.journeyPatternLength = #{@journey_patterns.total_entries()} + | window.journeyPatternLength = #{@journey_patterns.total_entries()}; + | window.journeyPatternsPerPage = 12 = javascript_include_tag 'es6_browserified/journey_patterns/index.js' diff --git a/spec/javascripts/journey_patterns/actions_spec.js b/spec/javascripts/journey_patterns/actions_spec.js index 03198c2c4..736a4326a 100644 --- a/spec/javascripts/journey_patterns/actions_spec.js +++ b/spec/javascripts/journey_patterns/actions_spec.js @@ -26,13 +26,17 @@ describe('when landing on page', () => { describe('when next navigation button is clicked', () => { it('should create an action to go to next page', () => { const nextPage = true + const totalCount = 25 + const perPage = 12 const expectedAction = { type: 'GO_TO_NEXT_PAGE', dispatch, currentPage, + totalCount, + perPage, nextPage } - expect(actions.goToNextPage(dispatch, currentPage)).toEqual(expectedAction) + expect(actions.goToNextPage(dispatch, currentPage, totalCount, perPage)).toEqual(expectedAction) }) }) describe('when clicking on a journey pattern checkbox', () => { diff --git a/spec/javascripts/journey_patterns/reducers/pagination_spec.js b/spec/javascripts/journey_patterns/reducers/pagination_spec.js index 1c8011fca..430db4b64 100644 --- a/spec/javascripts/journey_patterns/reducers/pagination_spec.js +++ b/spec/javascripts/journey_patterns/reducers/pagination_spec.js @@ -1,7 +1,11 @@ var reducer = require('es6_browserified/journey_patterns/reducers/pagination') + +const totalCount = 25 +const perPage = 12 let state = { page : 2, - totalCount : 25 + totalCount : totalCount, + stateChanged: false } let currentPage = 2 const dispatch = function(){} @@ -20,6 +24,8 @@ describe('pagination reducer, given parameters allowing page change', () => { type: 'GO_TO_NEXT_PAGE', dispatch, currentPage, + totalCount, + perPage, nextPage : true }) ).toEqual(Object.assign({}, state, {page : state.page + 1, stateChanged: false})) @@ -70,6 +76,7 @@ describe('pagination reducer, given parameters not allowing to go to next page', type: 'GO_TO_NEXT_PAGE', dispatch, currentPage, + totalCount, nextPage : false }) ).toEqual(state) |
