diff --git a/pages/columns/groups/@group/+data.ts b/pages/columns/groups/@group/+data.ts index 8c6131157..d7f76f7fe 100644 --- a/pages/columns/groups/@group/+data.ts +++ b/pages/columns/groups/@group/+data.ts @@ -1,17 +1,19 @@ import { pbdbDomain } from "@macrostrat-web/settings"; import { fetchAPIData, fetchAPIRefs } from "~/_utils"; +import { getPrevalentTaxa } from "~/components/lex/data-helper"; export async function data(pageContext) { const col_group_id = parseInt(pageContext.urlParsed.pathname.split("/")[3]); // Await all API calls - const [resData, colData, refs1, refs2] = await Promise.all([ + const [resData, colData, fossilsData, refs1, refs2] = await Promise.all([ fetchAPIData("/defs/groups", { col_group_id }), fetchAPIData("/columns", { col_group_id, response: "long", format: "geojson", }), + fetchAPIData("/fossils", { col_group_id, format: "geojson" }), fetchAPIRefs("/fossils", { col_group_id }), fetchAPIRefs("/columns", { col_group_id }), ]); @@ -20,17 +22,7 @@ export async function data(pageContext) { const refValues2 = Object.values(refs2); const refs = [...refValues1, ...refValues2]; - const cols = colData?.features - ?.map((feature) => feature.properties.col_id) - ?.join(","); - - let taxaData = null; - if (cols) { - const response = await fetch( - `${pbdbDomain}/data1.2/occs/prevalence.json?limit=5&coll_id=${cols}` - ); - taxaData = await response.json(); - } + const taxaData = await getPrevalentTaxa(fossilsData); return { resData: resData[0], colData, taxaData, refs }; } diff --git a/pages/dev/columns-test/groups/@group/+data.ts b/pages/dev/columns-test/groups/@group/+data.ts index 8c6131157..2b82facec 100644 --- a/pages/dev/columns-test/groups/@group/+data.ts +++ b/pages/dev/columns-test/groups/@group/+data.ts @@ -1,17 +1,19 @@ import { pbdbDomain } from "@macrostrat-web/settings"; import { fetchAPIData, fetchAPIRefs } from "~/_utils"; +import { getPrevalentTaxa } from "~/components/lex/data-helper"; export async function data(pageContext) { const col_group_id = parseInt(pageContext.urlParsed.pathname.split("/")[3]); // Await all API calls - const [resData, colData, refs1, refs2] = await Promise.all([ + const [resData, colData, fossilsData,refs1, refs2] = await Promise.all([ fetchAPIData("/defs/groups", { col_group_id }), fetchAPIData("/columns", { col_group_id, response: "long", format: "geojson", }), + fetchAPIData("/fossils", { col_group_id, format: "geojson" }), fetchAPIRefs("/fossils", { col_group_id }), fetchAPIRefs("/columns", { col_group_id }), ]); @@ -20,17 +22,7 @@ export async function data(pageContext) { const refValues2 = Object.values(refs2); const refs = [...refValues1, ...refValues2]; - const cols = colData?.features - ?.map((feature) => feature.properties.col_id) - ?.join(","); - - let taxaData = null; - if (cols) { - const response = await fetch( - `${pbdbDomain}/data1.2/occs/prevalence.json?limit=5&coll_id=${cols}` - ); - taxaData = await response.json(); - } + const taxaData = await getPrevalentTaxa(fossilsData); return { resData: resData[0], colData, taxaData, refs }; } diff --git a/pages/lex/economics/@id/+data.ts b/pages/lex/economics/@id/+data.ts index 1adf6b3a8..568d906d6 100644 --- a/pages/lex/economics/@id/+data.ts +++ b/pages/lex/economics/@id/+data.ts @@ -1,5 +1,6 @@ import { pbdbDomain } from "@macrostrat-web/settings"; import { fetchAPIData, fetchAPIRefs } from "~/_utils"; +import { getPrevalentTaxa } from "~/components/lex/data-helper"; export async function data(pageContext) { const econ_id = parseInt(pageContext.urlParsed.pathname.split("/")[3]); @@ -42,26 +43,7 @@ export async function data(pageContext) { const refValues2 = refs2 ? Object.values(refs2) : []; const refs = [...refValues1, ...refValues2]; - // Build column ID list for PBDB taxa fetch - const cols = colData?.features - ?.map((feature) => feature.properties.col_id) - ?.join(","); - - let taxaData = null; - if (cols) { - try { - const response = await fetch( - `${pbdbDomain}/data1.2/occs/prevalence.json?limit=5&coll_id=${cols}` - ); - if (response.ok) { - taxaData = await response.json(); - } else { - console.warn("PBDB taxa fetch failed with status", response.status); - } - } catch (err) { - console.warn("Error fetching PBDB taxa data:", err); - } - } + const taxaData = await getPrevalentTaxa(fossilsData); return { resData: resData?.[0] ?? null, diff --git a/pages/lex/environments/@id/+data.ts b/pages/lex/environments/@id/+data.ts index d738a2921..245d24cda 100644 --- a/pages/lex/environments/@id/+data.ts +++ b/pages/lex/environments/@id/+data.ts @@ -1,5 +1,6 @@ import { pbdbDomain } from "@macrostrat-web/settings"; import { fetchAPIData, fetchAPIRefs } from "~/_utils"; +import { getPrevalentTaxa } from "~/components/lex/data-helper"; export async function data(pageContext) { const environ_id = parseInt(pageContext.urlParsed.pathname.split("/")[3]); @@ -48,21 +49,7 @@ export async function data(pageContext) { ?.join(","); // Fetch PBDB fossil prevalence data - let taxaData = null; - if (cols) { - try { - const response = await fetch( - `${pbdbDomain}/data1.2/occs/prevalence.json?limit=5&coll_id=${cols}` - ); - if (response.ok) { - taxaData = await response.json(); - } else { - console.warn("PBDB taxa fetch failed with status", response.status); - } - } catch (err) { - console.warn("Error fetching PBDB taxa data:", err); - } - } + const taxaData = await getPrevalentTaxa(fossilsData); return { resData: resData?.[0] ?? null, diff --git a/pages/lex/intervals/@id/+data.ts b/pages/lex/intervals/@id/+data.ts index e50405cc0..43af5f57f 100644 --- a/pages/lex/intervals/@id/+data.ts +++ b/pages/lex/intervals/@id/+data.ts @@ -1,5 +1,6 @@ import { pbdbDomain } from "@macrostrat-web/settings"; import { fetchAPIData, fetchAPIRefs } from "~/_utils"; +import { getPrevalentTaxa } from "~/components/lex/data-helper"; export async function data(pageContext) { const int_id = parseInt(pageContext.urlParsed.pathname.split("/")[3]); @@ -42,27 +43,7 @@ export async function data(pageContext) { const refValues2 = refs2 ? Object.values(refs2) : []; const refs = [...refValues1, ...refValues2]; - // Extract column IDs - const cols = colData?.features - ?.map((feature) => feature.properties.col_id) - ?.join(","); - - // Optional: Fetch PBDB taxa data - let taxaData = null; - if (cols) { - try { - const response = await fetch( - `${pbdbDomain}/data1.2/occs/prevalence.json?limit=5&coll_id=${cols}` - ); - if (response.ok) { - taxaData = await response.json(); - } else { - console.warn("PBDB taxa fetch failed with status", response.status); - } - } catch (err) { - console.warn("Error fetching PBDB taxa data:", err); - } - } + const taxaData = await getPrevalentTaxa(fossilsData); return { resData: resData?.[0] ?? null, diff --git a/pages/lex/lithologies/@id/+Page.client.ts b/pages/lex/lithologies/@id/+Page.client.ts index dc31c8381..1e89c485e 100644 --- a/pages/lex/lithologies/@id/+Page.client.ts +++ b/pages/lex/lithologies/@id/+Page.client.ts @@ -21,7 +21,7 @@ export function Page() { const features = colData?.features || []; const timescales = resData?.timescales || []; - console.log("resData:", resData); + console.log("fossil Data:", fossilsData); const children = [ h(ColumnsTable, { diff --git a/pages/lex/lithologies/@id/+data.ts b/pages/lex/lithologies/@id/+data.ts index 514578b4a..a6fb50445 100644 --- a/pages/lex/lithologies/@id/+data.ts +++ b/pages/lex/lithologies/@id/+data.ts @@ -1,5 +1,6 @@ import { pbdbDomain } from "@macrostrat-web/settings"; import { fetchAPIData, fetchAPIRefs } from "~/_utils"; +import { getPrevalentTaxa } from "~/components/lex/data-helper"; export async function data(pageContext) { const lith_id = parseInt(pageContext.urlParsed.pathname.split("/")[3]); @@ -43,26 +44,7 @@ export async function data(pageContext) { const refValues2 = refs2 ? Object.values(refs2) : []; const refs = [...refValues1, ...refValues2]; - // Extract column IDs to fetch taxa data (PBDB) - const cols = colData?.features - ?.map((feature) => feature.properties.col_id) - ?.join(","); - - let taxaData = null; - if (cols) { - try { - const response = await fetch( - `${pbdbDomain}/data1.2/occs/prevalence.json?limit=5&coll_id=${cols}` - ); - if (response.ok) { - taxaData = await response.json(); - } else { - console.warn("PBDB taxa fetch failed with status", response.status); - } - } catch (err) { - console.warn("Error fetching taxa data from PBDB:", err); - } - } + const taxaData = await getPrevalentTaxa(fossilsData); return { resData: resData?.[0] ?? null, diff --git a/pages/lex/strat-concepts/@id/+data.ts b/pages/lex/strat-concepts/@id/+data.ts index 9efcce4fb..99f2d4629 100644 --- a/pages/lex/strat-concepts/@id/+data.ts +++ b/pages/lex/strat-concepts/@id/+data.ts @@ -1,5 +1,6 @@ import { apiDomain, pbdbDomain } from "@macrostrat-web/settings"; import { fetchAPIData, fetchAPIRefs } from "~/_utils"; +import { getPrevalentTaxa } from "~/components/lex/data-helper"; export async function data(pageContext) { const concept_id = parseInt(pageContext.urlParsed.pathname.split("/")[3]); @@ -21,17 +22,7 @@ export async function data(pageContext) { const refValues2 = refs2 ? Object.values(refs2) : []; const refs = [...refValues1, ...refValues2]; - const cols = colData?.features - ?.map((feature) => feature.properties.col_id) - ?.join(","); - - let taxaData = null; - if (cols) { - const response = await fetch( - `${pbdbDomain}/data1.2/occs/prevalence.json?limit=5&coll_id=${cols}` - ); - taxaData = await response.json(); - } + const taxaData = await getPrevalentTaxa(fossilsData); return { resData: resData[0], refs, fossilsData, colData, taxaData, unitsData }; } diff --git a/pages/lex/strat-names/@id/+data.ts b/pages/lex/strat-names/@id/+data.ts index f9e01e008..87831c23e 100644 --- a/pages/lex/strat-names/@id/+data.ts +++ b/pages/lex/strat-names/@id/+data.ts @@ -1,5 +1,6 @@ import { pbdbDomain } from "@macrostrat-web/settings"; import { fetchAPIData, fetchAPIRefs } from "~/_utils"; +import { getPrevalentTaxa } from "~/components/lex/data-helper"; export async function data(pageContext) { const strat_name_id = parseInt(pageContext.urlParsed.pathname.split("/")[3]); @@ -24,17 +25,7 @@ export async function data(pageContext) { const refValues2 = Object.values(refs2); const refs = [...refValues1, ...refValues2]; - const cols = colData?.features - ?.map((feature) => feature.properties.col_id) - ?.join(","); - - let taxaData = null; - if (cols) { - const response = await fetch( - `${pbdbDomain}/data1.2/occs/prevalence.json?limit=5&coll_id=${cols}` - ); - taxaData = await response.json(); - } + const taxaData = await getPrevalentTaxa(fossilsData); return { resData: resData[0], diff --git a/src/components/lex/data-helper.ts b/src/components/lex/data-helper.ts new file mode 100644 index 000000000..42c31009a --- /dev/null +++ b/src/components/lex/data-helper.ts @@ -0,0 +1,24 @@ +import { pbdbDomain } from "@macrostrat-web/settings"; + +export async function getPrevalentTaxa(fossilsData) { + // Extract cltn IDs to fetch taxa data (PBDB) + const collectionIds = fossilsData?.features + ?.map((feature) => feature.properties.cltn_id) + + let taxaData = null; + if (collectionIds && collectionIds.length > 0) { + try { + const response = await fetch( + `${pbdbDomain}/data1.2/occs/prevalence.json?limit=5&coll_id=${collectionIds.join(",")}` + ); + if (response.ok) { + taxaData = await response.json(); + } else { + console.warn("PBDB taxa fetch failed with status", response.status); + } + } catch (err) { + console.warn("Error fetching taxa data from PBDB:", err); + } + } + return taxaData; +} \ No newline at end of file