From 678153c864d36fb7fc0d593a8f08b1c1fb7b7388 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Delattre?= Date: Wed, 18 Jan 2017 23:52:00 +0100 Subject: [PATCH] Handle pagination in movie list view --- src/public/js/components/list/posters.js | 24 ++++++++++++++++++++---- src/public/js/components/movies/list.js | 1 + 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/public/js/components/list/posters.js b/src/public/js/components/list/posters.js index 2514a56..64faf12 100644 --- a/src/public/js/components/list/posters.js +++ b/src/public/js/components/list/posters.js @@ -13,11 +13,27 @@ export default function ListPosters(props) { extract: (el) => el.title }); elmts = filtered.map((el) => el.original); - } + } else { + // Get the page number if defined + let page = 1; + let perPage = props.perPage; + if (props.params && props.params.page) { + page = parseInt(props.params.page); + } - // Limit the number of results - if (elmts.length > props.perPage) { - elmts = elmts.slice(0, props.perPage); + let from = 0; + let to = perPage - 1; + if (page > 1) { + from = ((page - 1) * perPage) - 1; + to = from + perPage; + } + + // Limit the number of results + if ((from + perPage) > elmts.length) { + elmts = elmts.slice(from); + } else { + elmts = elmts.slice(from, to); + } } return ( diff --git a/src/public/js/components/movies/list.js b/src/public/js/components/movies/list.js index 2467689..a2aa0f2 100644 --- a/src/public/js/components/movies/list.js +++ b/src/public/js/components/movies/list.js @@ -100,6 +100,7 @@ export default class MovieList extends React.Component { filter={this.props.movieStore.filter} perPage={this.props.movieStore.perPage} onClick={this.props.selectMovie} + params={this.props.params} /> {selectedMovie &&