|
2 | 2 | const contentEl = document.getElementById('content') |
3 | 3 | const formEl = document.getElementById('filterform') |
4 | 4 | const queryEl = document.getElementById('query') |
| 5 | + const dataEl = document.querySelector('[data-b]') |
| 6 | + |
| 7 | + const page = JSON.parse(dataEl.dataset.b) |
5 | 8 |
|
6 | 9 | async function request(data) { |
7 | 10 | const res = await fetch('', { |
|
11 | 14 | credentials: 'include' |
12 | 15 | }) |
13 | 16 |
|
14 | | - const text = await res.text() |
15 | | - return JSON.parse(text) |
| 17 | + return await res.json() |
16 | 18 | } |
17 | 19 |
|
18 | 20 | async function deleteEntry(id) { |
|
144 | 146 | return false |
145 | 147 | } |
146 | 148 |
|
147 | | - document.location.href = '?filter=' + encodeURIComponent(query) |
| 149 | + document.location.href = `?${new URLSearchParams({ filter: query })}` |
148 | 150 |
|
149 | 151 | return false |
150 | 152 | }) |
151 | 153 |
|
152 | 154 | let loadingMore = false |
153 | | - let ifStep = window.infiniteScrolling |
| 155 | + let ifStep = page.infiniteScrolling |
154 | 156 | let ifSkip = ifStep |
155 | 157 |
|
156 | 158 | async function loadMore() { |
|
160 | 162 |
|
161 | 163 | loadingMore = true |
162 | 164 |
|
163 | | - const url = |
164 | | - `?filter=${encodeURIComponent(window.filter)}` + |
165 | | - `&format=html&count=${ifStep}&skip=${ifSkip}` |
| 165 | + const url = `?${new URLSearchParams({ |
| 166 | + filter: page.filter, |
| 167 | + format: 'html', |
| 168 | + count: ifStep, |
| 169 | + skip: ifSkip, |
| 170 | + })}` |
166 | 171 | const res = await fetch(url, { credentials: 'include' }) |
167 | 172 | const text = await res.text() |
168 | 173 |
|
|
175 | 180 | loadingMore = false |
176 | 181 | } |
177 | 182 |
|
178 | | - if (window.infiniteScrolling) { |
| 183 | + window.addEventListener('load', () => { |
| 184 | + queryEl.value = page.add || page.filter |
| 185 | + |
| 186 | + /* Place cursor at end of query text. |
| 187 | + * https://stackoverflow.com/a/10576409 */ |
| 188 | + queryEl.addEventListener('focus', e => { |
| 189 | + setTimeout(() => { queryEl.selectionStart = queryEl.selectionEnd = 10000 }, 0) |
| 190 | + }) |
| 191 | + |
| 192 | + queryEl.focus() |
| 193 | + |
| 194 | + if (page.add) { |
| 195 | + /* Remove query string from URL */ |
| 196 | + history.replaceState({}, null, window.location.pathname) |
| 197 | + } |
| 198 | + }) |
| 199 | + |
| 200 | + if (page.infiniteScrolling) { |
179 | 201 | window.addEventListener('scroll', e => { |
180 | 202 | const offset = |
181 | 203 | document.body.offsetHeight - (window.pageYOffset + window.innerHeight) |
|
0 commit comments