on main help sign in
fixing some bugs and doing some cleanup
e9137b1John Hyde
desk/app/astrolabe.hoon+7−5
@@ -254,7 +254,7 @@
254 (switch-words result)
254 (switch-words result)
255 =. result (to-p result)
255 =. result (to-p result)
256 (put:((on @ @) gte) agg result ~)
256 (put:((on @ @) gte) agg result ~)
257− ~& "returning {<~(wyt by agg.res)>} of {<count.res>} results"
257+ :: ~& "returning {<~(wyt by agg.res)>} of {<count.res>} results"
258 res
258 res
259++ search-opoints
259++ search-opoints
260 |= [=search-text expand-search=?]
260 |= [=search-text expand-search=?]
@@ -263,14 +263,16 @@
263 ?: expand-search
263 ?: expand-search
264 (search-text-to-fulls search-text)
264 (search-text-to-fulls search-text)
265 ~[(search-text-to-full search-text)]
265 ~[(search-text-to-full search-text)]
266− ~& (turn search-fulls |=(=search-full search-syls.search-full))
266+ :: ~& (turn search-fulls |=(=search-full search-syls.search-full))
267 =/ mr-searches (maybe-reverse-searches search-fulls 2.820)
267 =/ mr-searches (maybe-reverse-searches search-fulls 2.820)
268− ~& (turn mr-searches |=(=mr-search pain.mr-search))
268+ :: ~& (turn mr-searches |=(=mr-search pain.mr-search))
269+ :: ~& mr-searches
269 ?~ mr-searches ~|(%search-predicted-too-broad !!)
270 ?~ mr-searches ~|(%search-predicted-too-broad !!)
270− =/ results
271+ =/ res
271 %+ roll `(list mr-search)`mr-searches
272 %+ roll `(list mr-search)`mr-searches
272 run-mr-search
273 run-mr-search
274+ ~& "search for {<search-text>} returning {<~(wyt by agg.res)>} of {<count.res>} results"
273− (turn ~(tap in agg.results) head)
275+ (turn ~(tap in agg.res) head)
274::
276::
275++ sponsor-chain
277++ sponsor-chain
276 |= [=ship =unpoint]
278 |= [=ship =unpoint]
desk/lib/search.hoon+2−1
@@ -221,7 +221,8 @@
221 :: =? cand =(cand ~)
221 :: =? cand =(cand ~)
222 :: `(lest @)`~[0]
222 :: `(lest @)`~[0]
223 ?~ cand
223 ?~ cand
224− ?& (syl-equals i.search 0)
224+ :: ?& (syl-equals i.search 0)
225+ ?& (syl-matches i.search 0)
225 $(search t.search)
226 $(search t.search)
226 ==
227 ==
227 :: =/ nncand ^- (lest @)
228 :: =/ nncand ^- (lest @)
ui/src/components/SearchResults.svelte+27−3
@@ -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;
21+
22+ let timer;
23+ $: {
24+ clearTimeout(timer);
25+ timer = setTimeout(() => {
20− $: { searchedContacts.search(query) }
26+ searchedContacts.search(query);
27+ }, 1000);
28+ }
21 $: searchedPointsP = searchPoints(search);
29 $: searchedPointsP = searchPoints(search);
22 $: {
30 $: {
23 searchStatus = 'prog';
31 searchStatus = 'prog';
@@ -56,8 +64,15 @@
56 selectedShipIndex = null;
64 selectedShipIndex = null;
57 }
65 }
58 }
66 }
67+ $: {
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) {
73+ page = 0;
74+ }
75+ }
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
98 />
113 />
114+ {#if pageResults.length >= 5}
115+ <SearchResultsNavButtons {page} {pageSize} {totalPages}
116+ on:updatePage={({ detail }) => page = detail.page}
117+ >
118+ <p class="px-4 py-8 text-center">
119+ Showing {itemRangeText} of {combinedSearchResults.length} results
120+ </p>
121+ </SearchResultsNavButtons>
122+ {/if}
99 </div>
123 </div>
100{/if}
124{/if}
ui/src/lib/id.ts+5−1
@@ -455,7 +455,11 @@ function convertSearchTextToRegex(str: string, { checkStart = false, checkEnd =
455 if (checkEnd) {
455 if (checkEnd) {
456 str = str + '$';
456 str = str + '$';
457 }
457 }
458+ try {
458− return new RegExp(str);
459+ return new RegExp(str);
460+ } catch {
461+ return /a^/; // matches nothing
462+ }
459}
463}
460
464
461function expandAbbreviatedId(patp: string): string {
465function expandAbbreviatedId(patp: string): string {