From 9d4ae7974cfa610cf3aa37915e813b6b3abab047 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laur=C3=A9line=20Gu=C3=A9rin?= Date: Tue, 9 Aug 2022 14:26:11 +0200 Subject: [PATCH] wcs: add pagination for list of cards (#68037) --- combo/apps/wcs/forms.py | 1 + combo/apps/wcs/models.py | 2 +- combo/public/static/js/combo.public.js | 79 ++++++++++++------- combo/public/templates/combo/pagination.html | 3 +- combo/public/templates/combo/placeholder.html | 3 + combo/public/templatetags/combo.py | 1 + tests/test_wcs.py | 9 +++ 7 files changed, 67 insertions(+), 31 deletions(-) diff --git a/combo/apps/wcs/forms.py b/combo/apps/wcs/forms.py index 408d1904..1813086a 100644 --- a/combo/apps/wcs/forms.py +++ b/combo/apps/wcs/forms.py @@ -86,6 +86,7 @@ class WcsCardInfoCellForm(forms.ModelForm): 'carddef_reference', 'related_card_path', 'card_ids', + 'limit', 'only_for_user', 'custom_schema', ) diff --git a/combo/apps/wcs/models.py b/combo/apps/wcs/models.py index 43f054df..13d4ab8a 100644 --- a/combo/apps/wcs/models.py +++ b/combo/apps/wcs/models.py @@ -1384,7 +1384,7 @@ class WcsCardInfosCell(CardMixin, CellBase): @property def css_class_names(self): - return '%s card' % super().css_class_names + return '%s card %s' % (super().css_class_names, self.get_reference()) def get_cell_extra_context(self, context): extra_context = super().get_cell_extra_context(context) diff --git a/combo/public/static/js/combo.public.js b/combo/public/static/js/combo.public.js index d489f379..0a4952db 100644 --- a/combo/public/static/js/combo.public.js +++ b/combo/public/static/js/combo.public.js @@ -355,48 +355,71 @@ $(function() { return false; }); - // pagination in cells with list of items - $(document).on('combo:cell-loaded', function(ev, cell) { - var $pagination = $(cell).find('.cell-items-pagination'); - if ($pagination.length == 0) return; - var page_index = 0; + function pagination_update_page(items, max_page_index, step, paginate_by, $pagination, focus_first_item) { + var page_index = $pagination.data('page_index') + step; + if (page_index == 0) { + $pagination.find('.cell-items-pagination-prev').prop('disabled', true); + } else { + $pagination.find('.cell-items-pagination-prev').prop('disabled', null); + } + if (page_index == max_page_index - 1) { + $pagination.find('.cell-items-pagination-next').prop('disabled', true); + } else { + $pagination.find('.cell-items-pagination-next').prop('disabled', null); + } + start_item = paginate_by * page_index; + items.hide(); + items.slice(start_item, start_item + paginate_by).show(); + $pagination.data('page_index', page_index); + if (focus_first_item) { + $pagination.parent().focus(); + } + }; + + function paginate($pagination, items, must_focus) { + $pagination.data('page_index', 0); var paginate_by = parseInt($pagination.data('paginate-by')); - // Get all
  • inside the same div as us, ignoring whether they are part of - // different