7cdea66fa2
- 31 eTerra layer catalog (terenuri, cladiri, documentatii, administrativ) - Incremental sync engine (OBJECTID comparison, only downloads new features) - PostGIS-ready Prisma schema (GisFeature, GisSyncRun, GisUat models) - 7 API routes (/api/eterra/login, count, sync, features, layers/summary, progress, sync-status) - Full UI with 3 tabs (Sincronizare, Parcele, Istoric) - Env var auth (ETERRA_USERNAME / ETERRA_PASSWORD) - Real-time sync progress tracking with polling
287 lines
6.7 KiB
TypeScript
287 lines
6.7 KiB
TypeScript
/**
|
|
* eTerra layer catalog — all known layers grouped by category.
|
|
*/
|
|
|
|
import type { LayerConfig } from "./eterra-client";
|
|
|
|
export type LayerCategory =
|
|
| "terenuri"
|
|
| "documentatii"
|
|
| "cladiri"
|
|
| "administrativ";
|
|
|
|
export type LayerCatalogItem = LayerConfig & {
|
|
label: string;
|
|
category: LayerCategory;
|
|
};
|
|
|
|
export const LAYER_CATEGORY_LABELS: Record<LayerCategory, string> = {
|
|
terenuri: "Terenuri",
|
|
documentatii: "Documentații",
|
|
cladiri: "Clădiri",
|
|
administrativ: "Administrativ",
|
|
};
|
|
|
|
export const LAYER_CATALOG: LayerCatalogItem[] = [
|
|
// ── Terenuri ──
|
|
{
|
|
id: "TERENURI_ACTIVE",
|
|
name: "TERENURI_ACTIVE",
|
|
label: "Terenuri active",
|
|
category: "terenuri",
|
|
endpoint: "aut",
|
|
whereTemplate: "{{adminField}}={{siruta}} AND IS_ACTIVE=1",
|
|
},
|
|
{
|
|
id: "TERENURI_NEINREGISTRATE",
|
|
name: "TERENURI_NEINREGISTRATE",
|
|
label: "Terenuri neînregistrate",
|
|
category: "terenuri",
|
|
endpoint: "aut",
|
|
},
|
|
{
|
|
id: "TERENURI_IN_LUCRU",
|
|
name: "TERENURI_IN_LUCRU",
|
|
label: "Terenuri în lucru",
|
|
category: "terenuri",
|
|
endpoint: "aut",
|
|
},
|
|
{
|
|
id: "TERENURI_RECEPTIONATE",
|
|
name: "TERENURI_RECEPTIONATE",
|
|
label: "Terenuri recepționate",
|
|
category: "terenuri",
|
|
endpoint: "aut",
|
|
},
|
|
{
|
|
id: "TERENURI_RESPINSE",
|
|
name: "TERENURI_RESPINSE",
|
|
label: "Terenuri respinse",
|
|
category: "terenuri",
|
|
endpoint: "aut",
|
|
},
|
|
{
|
|
id: "TERENURI_PE_CERERE",
|
|
name: "TERENURI_PE_CERERE",
|
|
label: "Terenuri pe cerere",
|
|
category: "terenuri",
|
|
endpoint: "aut",
|
|
},
|
|
{
|
|
id: "CADGEN_LAND_ACTIVE",
|
|
name: "CADGEN_LAND_ACTIVE",
|
|
label: "Cadgen land active",
|
|
category: "terenuri",
|
|
endpoint: "aut",
|
|
},
|
|
|
|
// ── Clădiri ──
|
|
{
|
|
id: "CLADIRI_ACTIVE",
|
|
name: "CLADIRI_ACTIVE",
|
|
label: "Clădiri active",
|
|
category: "cladiri",
|
|
endpoint: "aut",
|
|
},
|
|
{
|
|
id: "CLADIRI_RECEPTIONATE",
|
|
name: "CLADIRI_RECEPTIONATE",
|
|
label: "Clădiri recepționate",
|
|
category: "cladiri",
|
|
endpoint: "aut",
|
|
},
|
|
{
|
|
id: "CLADIRI_RESPINSE",
|
|
name: "CLADIRI_RESPINSE",
|
|
label: "Clădiri respinse",
|
|
category: "cladiri",
|
|
endpoint: "aut",
|
|
},
|
|
{
|
|
id: "CLADIRI_PE_CERERE",
|
|
name: "CLADIRI_PE_CERERE",
|
|
label: "Clădiri pe cerere",
|
|
category: "cladiri",
|
|
endpoint: "aut",
|
|
},
|
|
{
|
|
id: "CLADIRI_IN_LUCRU",
|
|
name: "CLADIRI_IN_LUCRU",
|
|
label: "Clădiri în lucru",
|
|
category: "cladiri",
|
|
endpoint: "aut",
|
|
},
|
|
{
|
|
id: "CLADIRI_NEINREGISTRATE",
|
|
name: "CLADIRI_NEINREGISTRATE",
|
|
label: "Clădiri neînregistrate",
|
|
category: "cladiri",
|
|
endpoint: "aut",
|
|
},
|
|
{
|
|
id: "CADGEN_BUILDING_ACTIVE",
|
|
name: "CADGEN_BUILDING_ACTIVE",
|
|
label: "Cadgen building active",
|
|
category: "cladiri",
|
|
endpoint: "aut",
|
|
},
|
|
|
|
// ── Documentații ──
|
|
{
|
|
id: "EXPERTIZA_CLADIRI_ACTIVE_DYNAMIC",
|
|
name: "EXPERTIZA_CLADIRI_ACTIVE_DYNAMIC",
|
|
label: "Expertiză clădiri active",
|
|
category: "documentatii",
|
|
endpoint: "aut",
|
|
spatialFilter: true,
|
|
subLayerId: 0,
|
|
},
|
|
{
|
|
id: "EXPERTIZA_CLADIRI_INACTIVE_DYNAMIC",
|
|
name: "EXPERTIZA_CLADIRI_INACTIVE_DYNAMIC",
|
|
label: "Expertiză clădiri inactive",
|
|
category: "documentatii",
|
|
endpoint: "aut",
|
|
spatialFilter: true,
|
|
subLayerId: 0,
|
|
},
|
|
{
|
|
id: "EXPERTIZA_TERENURI_ACTIVE_DYNAMIC",
|
|
name: "EXPERTIZA_TERENURI_ACTIVE_DYNAMIC",
|
|
label: "Expertiză terenuri active",
|
|
category: "documentatii",
|
|
endpoint: "aut",
|
|
spatialFilter: true,
|
|
subLayerId: 0,
|
|
},
|
|
{
|
|
id: "EXPERTIZA_TERENURI_INACTIVE_DYNAMIC",
|
|
name: "EXPERTIZA_TERENURI_INACTIVE_DYNAMIC",
|
|
label: "Expertiză terenuri inactive",
|
|
category: "documentatii",
|
|
endpoint: "aut",
|
|
spatialFilter: true,
|
|
subLayerId: 0,
|
|
},
|
|
{
|
|
id: "EXPERTIZA_JUDICIARA_ADMISE_DYNAMIC",
|
|
name: "EXPERTIZA_JUDICIARA_ADMISE_DYNAMIC",
|
|
label: "Expertiză judiciară admise",
|
|
category: "documentatii",
|
|
endpoint: "aut",
|
|
spatialFilter: true,
|
|
subLayerId: 0,
|
|
},
|
|
{
|
|
id: "EXPERTIZA_JUDICIARA_RESPINSE_DYNAMIC",
|
|
name: "EXPERTIZA_JUDICIARA_RESPINSE_DYNAMIC",
|
|
label: "Expertiză judiciară respinse",
|
|
category: "documentatii",
|
|
endpoint: "aut",
|
|
spatialFilter: true,
|
|
subLayerId: 0,
|
|
},
|
|
{
|
|
id: "EXPERTIZA_JUDICIARA_NEINREGISTRATE_DYNAMIC",
|
|
name: "EXPERTIZA_JUDICIARA_NEINREGISTRATE_DYNAMIC",
|
|
label: "Expertiză judiciară neînreg.",
|
|
category: "documentatii",
|
|
endpoint: "aut",
|
|
spatialFilter: true,
|
|
subLayerId: 0,
|
|
},
|
|
{
|
|
id: "ZONE_INTERES_ACTIVE_DYNAMIC",
|
|
name: "ZONE_INTERES_ACTIVE_DYNAMIC",
|
|
label: "Zone interes active",
|
|
category: "documentatii",
|
|
endpoint: "aut",
|
|
spatialFilter: true,
|
|
subLayerId: 0,
|
|
},
|
|
{
|
|
id: "ZONE_INTERES_INACTIVE_DYNAMIC",
|
|
name: "ZONE_INTERES_INACTIVE_DYNAMIC",
|
|
label: "Zone interes inactive",
|
|
category: "documentatii",
|
|
endpoint: "aut",
|
|
spatialFilter: true,
|
|
subLayerId: 0,
|
|
},
|
|
{
|
|
id: "ZONE_INTERES_PROPUSE_DYNAMIC",
|
|
name: "ZONE_INTERES_PROPUSE_DYNAMIC",
|
|
label: "Zone interes propuse",
|
|
category: "documentatii",
|
|
endpoint: "aut",
|
|
spatialFilter: true,
|
|
subLayerId: 0,
|
|
},
|
|
{
|
|
id: "RECEPTII_TEHNICE_ADMISE_DYNAMIC",
|
|
name: "RECEPTII_TEHNICE_ADMISE_DYNAMIC",
|
|
label: "Recepții tehnice admise",
|
|
category: "documentatii",
|
|
endpoint: "aut",
|
|
spatialFilter: true,
|
|
subLayerId: 0,
|
|
},
|
|
{
|
|
id: "RECEPTII_TEHNICE_RESPINSE_DYNAMIC",
|
|
name: "RECEPTII_TEHNICE_RESPINSE_DYNAMIC",
|
|
label: "Recepții tehnice respinse",
|
|
category: "documentatii",
|
|
endpoint: "aut",
|
|
spatialFilter: true,
|
|
subLayerId: 0,
|
|
},
|
|
{
|
|
id: "RECEPTII_TEHNICE_NEINREGISTRATE_DYNAMIC",
|
|
name: "RECEPTII_TEHNICE_NEINREGISTRATE_DYNAMIC",
|
|
label: "Recepții tehnice neînreg.",
|
|
category: "documentatii",
|
|
endpoint: "aut",
|
|
spatialFilter: true,
|
|
subLayerId: 0,
|
|
},
|
|
|
|
// ── Administrativ ──
|
|
{
|
|
id: "LIMITE_UAT",
|
|
name: "LIMITE_UAT",
|
|
label: "Limite UAT",
|
|
category: "administrativ",
|
|
endpoint: "all",
|
|
},
|
|
{
|
|
id: "LIMITE_INTRAV_DYNAMIC",
|
|
name: "LIMITE_INTRAV_DYNAMIC",
|
|
label: "Limite intravilan",
|
|
category: "administrativ",
|
|
endpoint: "aut",
|
|
spatialFilter: true,
|
|
subLayerId: 0,
|
|
},
|
|
{
|
|
id: "SPECIAL_AREAS_ACTIVE_DYNAMIC",
|
|
name: "SPECIAL_AREAS_ACTIVE_DYNAMIC",
|
|
label: "Arii speciale active",
|
|
category: "administrativ",
|
|
endpoint: "aut",
|
|
spatialFilter: true,
|
|
subLayerId: 0,
|
|
},
|
|
{
|
|
id: "SPECIAL_AREAS_INACTIVE_DYNAMIC",
|
|
name: "SPECIAL_AREAS_INACTIVE_DYNAMIC",
|
|
label: "Arii speciale inactive",
|
|
category: "administrativ",
|
|
endpoint: "aut",
|
|
spatialFilter: true,
|
|
subLayerId: 0,
|
|
},
|
|
];
|
|
|
|
export const findLayerById = (id?: string) =>
|
|
LAYER_CATALOG.find((l) => l.id === id);
|