|
177 | 177 |
|
178 | 178 | const convErrorType = (x) => x === 'error' ? 'danger' : x; |
179 | 179 |
|
| 180 | + //============================================== Page State |
| 181 | + let collapsedGroups = new Set(); |
| 182 | + try { |
| 183 | + const storedCollapsedGroups = window.localStorage.resourcesPageCollapsedGroups; |
| 184 | + if (storedCollapsedGroups) { |
| 185 | + const parsedCollapsedGroups = JSON.parse(storedCollapsedGroups); |
| 186 | + if (Array.isArray(parsedCollapsedGroups)) { |
| 187 | + collapsedGroups = new Set(parsedCollapsedGroups); |
| 188 | + } else { |
| 189 | + throw new Error('Invalid storedCollapsedGroups'); |
| 190 | + } |
| 191 | + } else { |
| 192 | + window.localStorage.resourcesPageCollapsedGroups = '[]'; |
| 193 | + } |
| 194 | + } catch (error) { |
| 195 | + console.warn('Error parsing storedCollapsedGroups:', error); |
| 196 | + window.localStorage.resourcesPageCollapsedGroups = '[]'; |
| 197 | + } |
| 198 | + const saveCollapsedGroups = () => { |
| 199 | + window.localStorage.resourcesPageCollapsedGroups = JSON.stringify([...collapsedGroups.values()]); |
| 200 | + } |
| 201 | + |
| 202 | +
|
| 203 | + $('#defResCheckbox').click(() => { |
| 204 | + window.localStorage.resourcesPageShowDefault = document.getElementById('defResCheckbox').checked; |
| 205 | + refreshResourceList(); |
| 206 | + }); |
| 207 | +
|
| 208 | + $('#stoppedResCheckbox').click(() => { |
| 209 | + window.localStorage.resourcesPageShowStopped = document.getElementById('stoppedResCheckbox').checked; |
| 210 | + refreshResourceList(); |
| 211 | + }); |
| 212 | +
|
180 | 213 |
|
181 | 214 | //============================================== Refresh List |
182 | 215 | $('#btnRefresh').click(() => { |
|
231 | 264 | //============================================== Search function |
232 | 265 | function findResource() { |
233 | 266 | const inputEl = document.getElementById("resourceInput"); |
| 267 | + localStorage.setItem("resourcesPageFilter", inputEl.value ?? ''); |
234 | 268 | const filter = inputEl.value.toUpperCase(); |
235 | 269 |
|
236 | 270 | resGroupsJS.forEach(folder => { |
|
254 | 288 | } |
255 | 289 | } |
256 | 290 |
|
257 | | - //============================================== Hide defaults |
258 | | - $('#defResCheckbox').click(() => { |
259 | | - window.localStorage.resourcesPageShowDefault = document.getElementById('defResCheckbox').checked; |
260 | | - refreshResourceList(); |
261 | | - }); |
262 | | -
|
263 | | - $('#stoppedResCheckbox').click(() => { |
264 | | - window.localStorage.resourcesPageShowStopped = document.getElementById('stoppedResCheckbox').checked; |
265 | | - refreshResourceList(); |
266 | | - }); |
267 | | -
|
268 | 291 | //============================================== Expand/Collapse All |
269 | 292 | let isExpandButton = false; |
270 | 293 | const btnExpandCollapse = document.getElementById('btnExpandCollapse'); |
|
282 | 305 | }); |
283 | 306 | if (expandedCount === resGroupsJS.length) { |
284 | 307 | isExpandButton = false; |
285 | | - btnExpandCollapse.innerHTML = '<i class="icon-size-actual"/> Collapse All'; |
| 308 | + btnExpandCollapse.innerHTML = '<i class="icon-size-actual"></i> Collapse All'; |
286 | 309 | } else { |
287 | 310 | isExpandButton = true; |
288 | | - btnExpandCollapse.innerHTML = '<i class="icon-size-fullscreen"/> Expand All'; |
| 311 | + btnExpandCollapse.innerHTML = '<i class="icon-size-fullscreen"></i> Expand All'; |
289 | 312 | } |
290 | 313 | } |
291 | 314 | $('#btnExpandCollapse').click(() => { |
|
341 | 364 | } |
342 | 365 | }); |
343 | 366 |
|
| 367 | + const card = $(`#resList-card-${folder.divName}`); |
344 | 368 | if (folder.resources.length === hidden) { |
345 | | - $(`#resList-card-${folder.divName}`).hide(); |
| 369 | + card.hide(); |
346 | 370 | } else { |
347 | | - $(`#resList-card-${folder.divName}`).show(); |
| 371 | + card.show(); |
| 372 | + } |
| 373 | + if (collapsedGroups.has(folder.divName)) { |
| 374 | + toggleResGroup(card[0], false, false); |
| 375 | + } else { |
| 376 | + toggleResGroup(card[0], false, true); |
348 | 377 | } |
349 | 378 | }); |
350 | 379 | } |
|
356 | 385 | if (show === undefined) { |
357 | 386 | show = tbody.classList.contains('collapse'); |
358 | 387 | } |
| 388 | + const groupDivName = groupCardElement.id.split('-').pop(); |
359 | 389 | if (show) { |
360 | 390 | tbody.classList.remove('collapse'); |
361 | 391 | icon.classList.remove('icon-arrow-down'); |
362 | 392 | icon.classList.add('icon-arrow-up'); |
363 | 393 | if (single) { |
364 | 394 | groupCardElement.scrollIntoView({ behavior: 'smooth', block: 'start' }); |
365 | 395 | } |
| 396 | + collapsedGroups.delete(groupDivName); |
366 | 397 | } else { |
367 | 398 | tbody.classList.add('collapse'); |
368 | 399 | icon.classList.add('icon-arrow-down'); |
369 | 400 | icon.classList.remove('icon-arrow-up'); |
| 401 | + collapsedGroups.add(groupDivName); |
370 | 402 | } |
| 403 | + saveCollapsedGroups(); |
371 | 404 | } |
372 | 405 |
|
373 | 406 | $(() => { |
|
376 | 409 | } else { |
377 | 410 | window.localStorage.resourcesPageShowDefault = false; |
378 | 411 | } |
| 412 | + let hasFilter = false; |
| 413 | + if (typeof window.localStorage.resourcesPageFilter === 'string' && window.localStorage.resourcesPageFilter.length) { |
| 414 | + document.getElementById("resourceInput").value = window.localStorage.resourcesPageFilter; |
| 415 | + hasFilter = true; |
| 416 | + } |
379 | 417 |
|
380 | 418 | document.getElementById('stoppedResCheckbox').checked = window.localStorage.resourcesPageShowStopped === 'true'; |
381 | 419 |
|
|
391 | 429 |
|
392 | 430 | refreshResourceList(); |
393 | 431 | updateExpandCollapseBtn(); |
| 432 | + if(hasFilter){ |
| 433 | + findResource(); |
| 434 | + } |
394 | 435 | }); |
395 | 436 | </script> |
0 commit comments