| ... |
... |
@@ -39,6 +39,8 @@ |
| 39 |
39 |
this.filterUrl = new URL(`${document.location.origin}/rest/v1/collabs?search=&offset=0&orderField=title&order=asc&limit=10000&favorite=false&roles=`); |
| 40 |
40 |
this.results = []; |
| 41 |
41 |
this.resultsCache = []; |
|
42 |
+ this.offset = 0; |
|
43 |
+ this.nb = 10; |
| 42 |
42 |
} |
| 43 |
43 |
firstUpdated() { |
| 44 |
44 |
this.renderRoot.getElementById('searchInput').focus(); |
| ... |
... |
@@ -56,25 +56,35 @@ |
| 56 |
56 |
setSearchText(e) { |
| 57 |
57 |
this.searchText = e.target.value; |
| 58 |
58 |
} |
|
61 |
+ setOffset(e) { |
|
62 |
+ this.offset = e.target.value; |
|
63 |
+ } |
|
64 |
+ setNb(e) { |
|
65 |
+ this.nb = e.target.value; |
|
66 |
+ } |
| 59 |
59 |
handleSearch(textSearch) { |
|
68 |
+ console.log(textSearch); |
| 60 |
60 |
if(this.searchText !== "" || textSearch) { |
| 61 |
|
- if(this.searchText !== this.prevSearchText) { |
|
70 |
+ // if(this.searchText !== this.prevSearchText) { |
| 62 |
62 |
this.clearResults(); |
| 63 |
63 |
this.prevSearchText = this.searchText; |
| 64 |
64 |
this.fetchWikiSearch().then(results => { |
| 65 |
|
- this.resultsCache = results; |
|
74 |
+ console.log('results', results); |
|
75 |
+ //this.resultsCache = results; |
| 66 |
66 |
if(this.hasActiveFilters()) { |
| 67 |
67 |
this.fetchFilterSearch().then(this.filterResults); |
| 68 |
68 |
} else { |
| 69 |
|
- this.results = results; |
|
79 |
+ this.results = results ? results : []; |
| 70 |
70 |
} |
| 71 |
71 |
}) |
| 72 |
|
- } else if (this.searchText === this.prevSearchText && this.hasActiveFilters()) { |
|
82 |
+ /*} else if (this.searchText === this.prevSearchText && this.hasActiveFilters()) { |
| 73 |
73 |
this.fetchFilterSearch().then(this.filterResults) |
| 74 |
74 |
} else { |
| 75 |
75 |
this.results = this.resultsCache; |
| 76 |
76 |
} |
|
87 |
+ */ |
| 77 |
77 |
} else { |
|
89 |
+ this.results = []; |
| 78 |
78 |
this.clearResults(); |
| 79 |
79 |
console.log("no search text, should return filter search results if any"); |
| 80 |
80 |
this.fetchFilterSearch().then(collabs => { |
| ... |
... |
@@ -88,7 +88,7 @@ |
| 88 |
88 |
} |
| 89 |
89 |
fetchWikiSearch() { |
| 90 |
90 |
// request should be built from component, not from "external" dependency. Leave it here like this for POC. |
| 91 |
|
- return handleXWikiSearch(this.searchText); |
|
103 |
+ return handleXWikiSearch(this.searchText, this.offset, this.nb); |
| 92 |
92 |
} |
| 93 |
93 |
fetchFilterSearch() { |
| 94 |
94 |
return new Promise((resolve) => { |
| ... |
... |
@@ -120,6 +120,8 @@ |
| 120 |
120 |
<div> |
| 121 |
121 |
<div> |
| 122 |
122 |
<input id="searchInput" @change="${this.setSearchText}" type="text" placeholder="Search..." @keypress="${this.handleKeyPress}" /> |
|
135 |
+ <input @change="${this.setNb}"" type="text" value="${this.nb}" /> |
|
136 |
+ <input @change="${this.setOffset}"" type="text" value="${this.offset}" /> |
| 123 |
123 |
<button @click="${() => this.handleSearch(true)}">Search</button> |
| 124 |
124 |
</div> |
| 125 |
125 |
<div> |
| ... |
... |
@@ -141,7 +141,7 @@ |
| 141 |
141 |
} |
| 142 |
142 |
customElements.define('clb-unified-search', UnifiedSearch); |
| 143 |
143 |
|
| 144 |
|
- function handleXWikiSearch(searchString) { |
|
158 |
+ function handleXWikiSearch(searchString, offset, nb) { |
| 145 |
145 |
return new Promise((resolve) => { |
| 146 |
146 |
require(['jquery'], function($) { |
| 147 |
147 |
const solrServiceURL = new XWiki.Document('SuggestSolrService', 'XWiki').getURL('get'); |
| ... |
... |
@@ -149,8 +149,8 @@ |
| 149 |
149 |
$.get(solrServiceURL, { |
| 150 |
150 |
outputSyntax: 'plain', |
| 151 |
151 |
media: 'json', |
| 152 |
|
- nb:100, |
| 153 |
|
- offset:10, |
|
166 |
+ nb: nb, |
|
167 |
+ offset: offset, |
| 154 |
154 |
query: [ |
| 155 |
155 |
'q="__INPUT__"~100', |
| 156 |
156 |
'fq=type:DOCUMENT', |