@@ -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