filtradas = {
const q = busca.trim().toLowerCase();
return filtra_grupo(cobertura, grupo)
.filter(d => situacoes.includes(d.situacao))
.filter(d => uf === "Todas" || d.ufs_lista.includes(uf))
.filter(d => familia === "Todas" || d.familia === familia)
.filter(d => !extras.includes("só endêmicas do Brasil") || d.endemica)
.filter(d => !extras.includes("só ameaçadas (CR, EN, VU)") || d.ameacada)
.filter(d => !q || `${d.especie} ${d.familia} ${d.ordem}`.toLowerCase().includes(q))
.sort((a, b) => d3.ascending(a.prioridade, b.prioridade) ||
d3.ascending(a.ano_descricao ?? 9999, b.ano_descricao ?? 9999) ||
d3.ascending(a.especie, b.especie));
}
Espécies
{
const tab = Inputs.table(filtradas, {
columns: ["especie", "adocao", "situacao", "grupo_rotulo", "familia", "ano_descricao",
"categoria_ameaca", "endemica", "n_bold", "n_genbank", "ufs", "observacao"],
header: {especie: "Espécie", situacao: "Situação", grupo_rotulo: "Grupo", familia: "Família",
ano_descricao: "Descrita em", categoria_ameaca: "Ameaça", endemica: "Endêmica",
n_bold: "BOLD", n_genbank: "GenBank", ufs: "UFs", observacao: "Observação",
adocao: ""},
format: {
especie: d => htl.html`<em>${d}</em>`,
situacao: selo_situacao,
ano_descricao: d => d ? String(d) : "",
endemica: d => d ? "sim" : "",
n_bold: (d, i, dados) => htl.html`<a href="https://portal.boldsystems.org/result?query=${encodeURIComponent(dados[i].especie)}[tax]" target="_blank" title="Abrir no BOLD">${fmtn(d)}</a>`,
n_genbank: (d, i, dados) => d == null ? "pendente" :
htl.html`<a href="https://www.ncbi.nlm.nih.gov/nuccore/?term=${encodeURIComponent('"' + dados[i].especie + '"[Organism]')}" target="_blank" title="Abrir no GenBank">${fmtn(d)}</a>`,
ufs: d => d ? String(d).replaceAll(";", " ") : "sem dado",
observacao: d => htl.html`<span class="nota-pequena">${d ?? ""}</span>`,
adocao: (d, i, dados) => d
? htl.html`<span class="selo">${d}</span>`
: htl.html`<a class="btn-adote" href="${link_adote(dados[i].especie)}" target="_blank">adotar</a>`
},
width: {especie: 210, observacao: 380, ufs: 160},
rows: 30, layout: "fixed", select: false
});
return htl.html`<div><p><strong>${fmtn(filtradas.length)}</strong> espécies com estes filtros.</p>${tab}</div>`;
}