|
1 | 1 | import { html } from './common.js'; |
2 | 2 | import { |
3 | 3 | createAuthorsSection, |
4 | | - createReleasesSection, |
5 | 4 | createDetailsSection, |
| 5 | + createReleasesSection, |
6 | 6 | getScoreClass |
7 | 7 | } from './paper.js'; |
8 | 8 |
|
@@ -30,6 +30,22 @@ async function fetchWorksets(offset = 0, size = 100) { |
30 | 30 | return await response.json(); |
31 | 31 | } |
32 | 32 |
|
| 33 | +async function fetchCollection(offset = 0, limit = 100) { |
| 34 | + const queryParams = new URLSearchParams({ |
| 35 | + offset: offset.toString(), |
| 36 | + limit: limit.toString(), |
| 37 | + }); |
| 38 | + |
| 39 | + const url = `/api/v1/search?${queryParams.toString()}`; |
| 40 | + const response = await fetch(url); |
| 41 | + |
| 42 | + if (!response.ok) { |
| 43 | + throw new Error(`HTTP ${response.status}: ${response.statusText}`); |
| 44 | + } |
| 45 | + |
| 46 | + return await response.json(); |
| 47 | +} |
| 48 | + |
33 | 49 | function createInfoValue(value) { |
34 | 50 | if (value === null || value === undefined) { |
35 | 51 | return html`<span class="info-null">null</span>`; |
@@ -105,11 +121,11 @@ function createWorksetPaperElement(paper) { |
105 | 121 | `; |
106 | 122 | } |
107 | 123 |
|
108 | | -function createWorksetElement(scoredWorkset, index) { |
109 | | - // scoredWorkset is Scored[PaperWorkingSet] |
| 124 | +function createWorksetElement(scoredWorksetOrPaper, index) { |
| 125 | + // scoredWorkset is Scored[PaperWorkingSet] or Paper |
110 | 126 | // It has: { score: float, value: PaperWorkingSet } |
111 | | - const score = scoredWorkset.score; |
112 | | - const workset = scoredWorkset.value; |
| 127 | + const score = scoredWorksetOrPaper.score; |
| 128 | + const workset = scoredWorksetOrPaper.value ?? { current: scoredWorksetOrPaper, collected: [scoredWorksetOrPaper] }; |
113 | 129 | const current = workset.current; |
114 | 130 | const collected = workset.collected || []; |
115 | 131 |
|
@@ -340,3 +356,15 @@ export async function displayWorksets() { |
340 | 356 | displayError(error); |
341 | 357 | } |
342 | 358 | } |
| 359 | + |
| 360 | +export async function displayCollection() { |
| 361 | + displayLoading(); |
| 362 | + |
| 363 | + try { |
| 364 | + const data = await fetchCollection(); |
| 365 | + renderWorksets(data); |
| 366 | + } catch (error) { |
| 367 | + console.error('Failed to load collection:', error); |
| 368 | + displayError(error); |
| 369 | + } |
| 370 | +} |
0 commit comments