diff options
| author | Thomas Haddad | 2016-12-13 17:00:35 +0100 |
|---|---|---|
| committer | Thomas Haddad | 2016-12-13 17:01:36 +0100 |
| commit | 48477aec36203c518548ac2f0455530c2515baa2 (patch) | |
| tree | c15b7341694d5ddf49a2713981f8ed9e014dce70 /app | |
| parent | 2113edeba7a1339370e04ef02111ca145add43b4 (diff) | |
| download | chouette-core-48477aec36203c518548ac2f0455530c2515baa2.tar.bz2 | |
Add paginate for journey_patterns Refs #2205
Signed-off-by: Thomas Shawarma Haddad <thomas.haddad@af83.com>
Diffstat (limited to 'app')
7 files changed, 68 insertions, 31 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 a03b64b10..620890b9f 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/actions/index.js @@ -7,17 +7,46 @@ const actions = { type: 'LOAD_FIRST_PAGE', dispatch }), - goToPreviousPage : () => ({ - type: 'GO_TO_PREVIOUS_PAGE' + goToPreviousPage : (dispatch, currentPage) => { + return { + type: 'GO_TO_PREVIOUS_PAGE', + dispatch, + currentPage, + nextPage : false + } + }, + goToNextPage : (dispatch, currentPage) => ({ + type: 'GO_TO_NEXT_PAGE', + dispatch, + currentPage, + nextPage : true }), - goToNextPage : () => ({ - type: 'GO_TO_NEXT_PAGE' - }), - fetchJourneyPatterns : (dispatch) => { + fetchJourneyPatterns : (dispatch, currentPage, nextPage) => { + if(currentPage == undefined){ + currentPage = 1 + } let journeyPatterns = [] - let urlJSON = window.location.pathname + '.json' + let page + switch (nextPage) { + case true: + page = currentPage + 1 + break + case false: + if(currentPage > 1){ + page = currentPage - 1 + } + break + default: + page = currentPage + break + } + let str = ".json" + if(page > 1){ + str = '.json?page=' + page.toString() + } + let urlJSON = window.location.pathname + str let req = new Request(urlJSON, { - credentials: 'same-origin' + credentials: 'same-origin', }); fetch(req) .then(response => response.json()) diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js index 067167a4d..5be1869a9 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/JourneyPatternList.js @@ -32,21 +32,11 @@ class JourneyPatternList extends Component{ const mapStateToProps = (state) => { return { - journeyPatterns: state.journeyPatterns + journeyPatterns: state.journeyPatterns, + page: state.pagination } } -// const mapDispatchToProps = (dispatch) => { -// return { -// onPreviousClick: (index) =>{ -// dispatch(actions.fetchNextPage(index)) -// }, -// onNextClick: (index) =>{ -// dispatch(actions.fetchPreviousPage(index)) -// } -// } -// } - JourneyPatternList.propTypes = { dispatch: PropTypes.func.isRequired, journeyPatterns: PropTypes.array.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 feaa73ba3..c9d804bc4 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/containers/Navigate.js @@ -11,7 +11,7 @@ let Navigate = ({ dispatch, journeyPatterns, page }) => { <button onClick={e => { e.preventDefault() - dispatch(actions.goToNextPage()) + dispatch(actions.goToNextPage(dispatch, page)) }} type="submit" className="btn btn-primary btn-xs pull-right"> @@ -20,7 +20,7 @@ let Navigate = ({ dispatch, journeyPatterns, page }) => { <button onClick={e => { e.preventDefault() - dispatch(actions.goToPreviousPage()) + dispatch(actions.goToPreviousPage(dispatch, page)) }} type="submit" className="btn btn-primary btn-xs pull-right"> @@ -30,6 +30,14 @@ let Navigate = ({ dispatch, journeyPatterns, page }) => { </div> ) } -Navigate = connect()(Navigate) + +const mapStateToProps = (state) => { + return { + journeyPatterns: state.journeyPatterns, + page: state.pagination + } +} + +Navigate = connect(mapStateToProps)(Navigate) 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 4590d1013..2c2128ee0 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/index.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/index.js @@ -13,7 +13,7 @@ var promise = require('redux-promise') var initialState = { journeyPatterns: [], - pagination: 0 + pagination: 1 } const loggerMiddleware = createLogger() diff --git a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journey_patterns.js b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journey_patterns.js index 8ef6b07d8..129746575 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journey_patterns.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/journey_patterns.js @@ -7,12 +7,15 @@ const journeyPatterns = (state = {}, action) => { case 'LOAD_FIRST_PAGE': actions.fetchJourneyPatterns(action.dispatch) case 'GO_TO_PREVIOUS_PAGE': - if(state.page >= 0){ - actions.fetchJourneyPatterns() + if(action.currentPage > 1){ + actions.fetchJourneyPatterns(action.dispatch, action.currentPage, action.nextPage) } return state case 'GO_TO_NEXT_PAGE': - actions.fetchJourneyPatterns() + if (window.journeyPatternLength - (action.currentPage * 12) > 0){ + actions.fetchJourneyPatterns(action.dispatch, action.currentPage, action.nextPage) + } + return state default: 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 09f003fbd..0103fe248 100644 --- a/app/assets/javascripts/es6_browserified/journey_patterns/reducers/pagination.js +++ b/app/assets/javascripts/es6_browserified/journey_patterns/reducers/pagination.js @@ -1,9 +1,15 @@ const pagination = (state = 0, action) => { switch (action.type) { case 'GO_TO_PREVIOUS_PAGE': - return state - 1 + if (action.currentPage > 1){ + return state - 1 + } + return state case 'GO_TO_NEXT_PAGE': - return state + 1 + if (window.journeyPatternLength - (action.currentPage * 12) > 0){ + return state + 1 + } + return state default: return state } diff --git a/app/views/journey_patterns_collections/show.html.slim b/app/views/journey_patterns_collections/show.html.slim index d38129d5c..bb4d3f0c6 100644 --- a/app/views/journey_patterns_collections/show.html.slim +++ b/app/views/journey_patterns_collections/show.html.slim @@ -1,3 +1,4 @@ -#journey_patterns -= @journey_patterns.total_entries() +#journey_patterns data += javascript_tag do + | window.journeyPatternLength = #{@journey_patterns.total_entries()} = javascript_include_tag 'es6_browserified/journey_patterns/index.js' |
