@@ -15,9 +15,17 @@
15 let selectedShipIndex: number;
15 let selectedShipIndex: number;
16 let page: number = 0;
16 let page: number = 0;
17 let pageSize: number = 50;
17 let pageSize: number = 50;
18+ let totalPages, firstItemOnPage;
18 let searchStatus: ('init' | 'prog' | 'done' | 'fail') = 'init';
19 let searchStatus: ('init' | 'prog' | 'done' | 'fail') = 'init';
19 let notification: string = null;
20 let notification: string = null;
25+ timer = setTimeout(() => {
20− $: { searchedContacts.search(query) }
26+ searchedContacts.search(query);
21 $: searchedPointsP = searchPoints(search);
29 $: searchedPointsP = searchPoints(search);
23 searchStatus = 'prog';
31 searchStatus = 'prog';
@@ -56,8 +64,15 @@
56 selectedShipIndex = null;
64 selectedShipIndex = null;
59− $: totalPages = Math.ceil(combinedSearchResults.length / pageSize);
68+ totalPages = Math.ceil(combinedSearchResults.length / pageSize);
60− $: firstItemOnPage = page * pageSize
69+ firstItemOnPage = page * pageSize;
70+ if (firstItemOnPage >= combinedSearchResults.length) {
71+ page = totalPages - 1;
72+ } else if (firstItemOnPage < 0) {
61 $: pageResults = combinedSearchResults.slice(firstItemOnPage, (page + 1) * pageSize);
76 $: pageResults = combinedSearchResults.slice(firstItemOnPage, (page + 1) * pageSize);
62 $: itemRangeText = pageResults.length == combinedSearchResults.length ? 'all' :
77 $: itemRangeText = pageResults.length == combinedSearchResults.length ? 'all' :
63 `${firstItemOnPage + 1}-${firstItemOnPage + pageResults.length}`;
78 `${firstItemOnPage + 1}-${firstItemOnPage + pageResults.length}`;
@@ -96,5 +111,14 @@
96 ships={pageResults}
111 ships={pageResults}
97 linkToShips differentiateContacts
112 linkToShips differentiateContacts
114+ {#if pageResults.length >= 5}
115+ <SearchResultsNavButtons {page} {pageSize} {totalPages}
116+ on:updatePage={({ detail }) => page = detail.page}
118+ <p class="px-4 py-8 text-center">
119+ Showing {itemRangeText} of {combinedSearchResults.length} results
121+ </SearchResultsNavButtons>