From 691caf9c9ba8be238af5d593f6af1eef256616d0 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Wed, 25 Jul 2018 15:33:09 -0400 Subject: [PATCH] LP#1775466 Catalog paging and format repairs Signed-off-by: Bill Erickson --- Open-ILS/src/eg2/src/app/share/util/pager.ts | 23 ++++++++++++++++++++++ .../staff/catalog/result/pagination.component.html | 2 +- .../staff/catalog/result/pagination.component.ts | 12 ++++++++++- .../app/staff/catalog/result/record.component.html | 2 +- 4 files changed, 36 insertions(+), 3 deletions(-) diff --git a/Open-ILS/src/eg2/src/app/share/util/pager.ts b/Open-ILS/src/eg2/src/app/share/util/pager.ts index b352fdb030..8926b179c6 100644 --- a/Open-ILS/src/eg2/src/app/share/util/pager.ts +++ b/Open-ILS/src/eg2/src/app/share/util/pager.ts @@ -72,6 +72,29 @@ export class Pager { return pages; } + // Returns a list of pages numbers with @pivot at the center + // or as close to center as possible. + // @pivot is 1-based for consistency with page numbers. + // pageRange(25, 10) => [21,22,...29,30] + pageRange(pivot: number, size: number): number[] { + + const diff = Math.floor(size / 2); + let start = pivot <= diff ? 1 : pivot - diff + 1; + + const pcount = this.pageCount(); + + if (start + size > pcount) { + start = pcount - size + 1; + if (start < 1) { start = 1 }; + } + + if (start + size > pcount) { + size = pcount; + } + + return this.pageList().slice(start - 1, start - 1 + size); + } + pageList(): number[] { const list = []; for (let i = 1; i <= this.pageCount(); i++) { diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/result/pagination.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/result/pagination.component.html index 55b63dd0d9..7cdda006e2 100644 --- a/Open-ILS/src/eg2/src/app/staff/catalog/result/pagination.component.html +++ b/Open-ILS/src/eg2/src/app/staff/catalog/result/pagination.component.html @@ -13,7 +13,7 @@ unnecessary given we have to track paging externally anyway.
  • {{page}} (current) diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/result/pagination.component.ts b/Open-ILS/src/eg2/src/app/staff/catalog/result/pagination.component.ts index 3522bf5f25..15214b52c7 100644 --- a/Open-ILS/src/eg2/src/app/staff/catalog/result/pagination.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/catalog/result/pagination.component.ts @@ -12,15 +12,25 @@ export class ResultPaginationComponent implements OnInit { searchContext: CatalogSearchContext; + // Maximum number of jump-to-page buttons displayed. + @Input() numPages: number; + constructor( private cat: CatalogService, private staffCat: StaffCatalogService - ) {} + ) { + this.numPages = 10; + } ngOnInit() { this.searchContext = this.staffCat.searchContext; } + currentPageList(): number[] { + const pgr = this.searchContext.pager; + return pgr.pageRange(pgr.currentPage(), this.numPages); + } + nextPage(): void { this.searchContext.pager.increment(); this.staffCat.search(); diff --git a/Open-ILS/src/eg2/src/app/staff/catalog/result/record.component.html b/Open-ILS/src/eg2/src/app/staff/catalog/result/record.component.html index c30f46f7db..54ad3db0ee 100644 --- a/Open-ILS/src/eg2/src/app/staff/catalog/result/record.component.html +++ b/Open-ILS/src/eg2/src/app/staff/catalog/result/record.component.html @@ -40,7 +40,7 @@
    - + {{iconFormatLabel(summary.attributes.icon_format[0])}} -- 2.11.0