Skip to content

Commit 9bd4755

Browse files
committed
Fix sample metadata query for Cesium demo
1 parent 14bd560 commit 9bd4755

1 file changed

Lines changed: 16 additions & 9 deletions

File tree

tutorials/parquet_cesium.qmd

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ async function samplesAtLocation(rowid) {
265265
FROM nodes
266266
WHERE row_id IN (SELECT o1 FROM concept_edges)
267267
), keyword_text AS (
268-
SELECT ce.s, string_agg(DISTINCT cl.label, ', ') AS keywords
268+
SELECT ce.s, LIST(DISTINCT cl.label) AS keywords
269269
FROM concept_edges ce
270270
JOIN concept_labels cl ON ce.o1 = cl.row_id
271271
WHERE ce.p = 'keywords'
@@ -300,12 +300,18 @@ async function samplesAtLocation(rowid) {
300300
LEFT JOIN sampling_sites ss ON sl.event_row_id = ss.event_row_id
301301
LEFT JOIN site_nodes snl ON ss.site_row_id = snl.row_id
302302
GROUP BY sn.pid, sn.label, sn.description, sn.thumbnail_url, kt.keywords, en.project, en.label, snl.label
303-
ORDER BY sn.label
303+
ORDER BY coalesce(sn.label, sn.pid)
304304
LIMIT 6;
305305
`;
306-
const result = await db.query(query, [rowid]);
307-
const rows = result?.toArray ? result.toArray() : result;
308-
return Array.isArray(rows) ? rows : [];
306+
try {
307+
const result = await db.query(query, [rowid]);
308+
const rows = result?.toArray ? result.toArray() : result;
309+
console.log(`Samples retrieved for location ${rowid}:`, rows);
310+
return Array.isArray(rows) ? rows : [];
311+
} catch (error) {
312+
console.error('Failed to load sample data for location', rowid, error);
313+
return [];
314+
}
309315
}
310316
311317
// Use a viewof pattern to create a reactive clickedPointId
@@ -395,10 +401,11 @@ html`<section id="sampleDetails">
395401
const typeParts = [sample.sample_object_type, sample.material_category].filter(Boolean);
396402
const collectionParts = [sample.project, sample.site_label, sample.event_label].filter(Boolean);
397403
const context = sample.context_category;
398-
const keywords = typeof sample.keywords === 'string'
399-
? sample.keywords.split(', ').filter(Boolean)
400-
: Array.isArray(sample.keywords)
401-
? sample.keywords.filter(Boolean)
404+
const keywordData = sample.keywords;
405+
const keywords = Array.isArray(keywordData)
406+
? keywordData.filter(Boolean)
407+
: typeof keywordData === 'string'
408+
? keywordData.split(',').map(d => d.trim()).filter(Boolean)
402409
: [];
403410
return html`<article class="sample-card">
404411
<h3><a href="${sampleLink}" target="_blank" rel="noopener">${displayLabel}</a></h3>

0 commit comments

Comments
 (0)