feat: support parcel sub-number search

This commit is contained in:
2026-07-22 07:54:33 +01:00
parent c60840e4c1
commit 1e25cfc575
+14 -2
View File
@@ -170,7 +170,7 @@ async function searchParcela(event) {
typeNames: PARCEL_LAYER_NAME,
outputFormat: "application/json",
srsName: "EPSG:3857",
CQL_FILTER: `cod_parcela = '${escapeCqlLiteral(parcelNumber)}'`,
CQL_FILTER: buildParcelSearchFilter(parcelNumber),
});
const response = await fetch(`${API_WMS}?${params}`);
@@ -198,7 +198,7 @@ async function searchParcela(event) {
updateParcelSearchStatus(
features.length === 1
? `Found parcel ${parcelNumber}.`
: `Found ${features.length} parcels numbered ${parcelNumber}.`,
: `Found ${features.length} parcels matching ${parcelNumber}.`,
"success",
);
} catch (error) {
@@ -207,6 +207,18 @@ async function searchParcela(event) {
}
}
function buildParcelSearchFilter(parcelNumber) {
const escapedParcelNumber = escapeCqlLiteral(parcelNumber);
// Whole parcel numbers identify a group: 278 includes sub-parcels such as
// 278.1 and 278.2. A supplied sub-parcel number remains an exact lookup.
if (/^\d+$/.test(parcelNumber)) {
return `(cod_parcela = '${escapedParcelNumber}' OR cod_parcela LIKE '${escapedParcelNumber}.%')`;
}
return `cod_parcela = '${escapedParcelNumber}'`;
}
async function loadLayers() {
updateStatus("Loading WMS layers...");