Files
Investidor-V2/resources/js/components/investment-map-coverage.tsx
T
2026-11-02 20:31:15 +02:00

97 lines
3.8 KiB
TypeScript

import type {
InvestmentMapArea,
InvestmentMapFeature,
} from './interactive-investment-map';
export default function InvestmentMapCoverage({
points,
areas,
unlocated,
truncated,
}: {
points: InvestmentMapFeature[];
areas: InvestmentMapArea[];
unlocated: number;
truncated: boolean;
}) {
const rows = [
{
label: 'Marcadores de investimento',
records: points.map((point) => point.properties),
},
{ label: 'Áreas e limites', records: areas },
];
return (
<section
className="space-y-2 rounded border p-3"
aria-label="Cobertura dos dados do mapa"
>
<h3 className="font-semibold">Cobertura desta consulta</h3>
{truncated && (
<p role="note">
Resultados limitados pela consulta. Refine os filtros; as
contagens abaixo não representam o total do cadastro.
</p>
)}
<div className="overflow-x-auto">
<table className="w-full text-left text-sm">
<caption className="text-left">
Registos da pesquisa de investimentos para os filtros
actuais, incluindo camadas ocultas. A cobertura dos
limites administrativos adicionais é apresentada em
«Fontes e contexto do mapa».
</caption>
<thead>
<tr>
<th scope="col">Camada</th>
<th scope="col">Registos</th>
<th scope="col">Sem fonte indicada</th>
<th scope="col">Sem data indicada</th>
</tr>
</thead>
<tbody>
{rows.map((row) => (
<tr key={row.label}>
<th scope="row">{row.label}</th>
<td>{row.records.length}</td>
<td>
{
row.records.filter(
(record) =>
!record.source_reference?.trim(),
).length
}
</td>
<td>
{
row.records.filter(
(record) =>
!record.source_date?.trim(),
).length
}
</td>
</tr>
))}
</tbody>
</table>
</div>
<p>
Investimentos com ponto nesta resposta:{' '}
{new Set(points.map((point) => point.properties.id)).size}. Um
investimento pode ter vários marcadores.
</p>
<p>
Investimentos sem ponto público utilizável nesta consulta:{' '}
{unlocated}.
{unlocated > 0 && ' As fichas continuam disponíveis abaixo.'}
</p>
<p className="text-sm">
A indicação de fonte ou data não comprova cobertura completa nem
actualidade. Ausência de registos não significa ausência de
investimento. Esta consulta não mede disponibilidade de
recursos, infra-estruturas ou mão-de-obra.
</p>
</section>
);
}