import { SearchableSelect } from '../components/SearchableSelect'; import { useEffect, useMemo, useState } from 'react'; import { Link } from 'react-router'; import { Alert, LoadingBlock, errorMessage } from '../components/Feedback'; import { Icon } from '../components/Icon'; import { AssetCenterTabs } from '../features/assets/AssetCenterTabs'; import { DhMap } from '../features/map/DhMap'; import { assetStatusClass, assetStatusLabel, ASSET_STATUSES, } from '../features/assets/assetPresentation'; import { getMapAssets, listAssetTypes } from '../lib/api'; import type { AssetGeometryType, AssetInformationStatus, AssetType, MapAssetFeatureCollection, } from '../lib/api'; import { formatDate } from '../lib/format'; const emptyCollection: MapAssetFeatureCollection = { type: 'FeatureCollection', features: [], meta: { count: 0, truncated: false }, }; export function MapPage() { const [types, setTypes] = useState([]); const [data, setData] = useState(emptyCollection); const [typeId, setTypeId] = useState(''); const [status, setStatus] = useState(''); const [geometryType, setGeometryType] = useState(''); const [selectedId, setSelectedId] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(''); useEffect(() => { listAssetTypes().then(setTypes).catch(() => undefined); }, []); useEffect(() => { setLoading(true); setError(''); getMapAssets({ typeId, status, geometryType }) .then((result) => { setData(result); setSelectedId((current) => result.features.some((item) => item.id === current) ? current : null); }) .catch((requestError) => setError(errorMessage(requestError))) .finally(() => setLoading(false)); }, [typeId, status, geometryType]); const selected = useMemo( () => data.features.find((feature) => feature.id === selectedId) ?? null, [data, selectedId], ); return
INVENTARIOS

Mapa de inventarios

Vista territorial de las ubicaciones registradas.

{data.meta.count} geometría{data.meta.count === 1 ? '' : 's'}
{error && {error}} {data.meta.truncated && Se muestran los primeros 5000 registros. Aplicá filtros para reducir el resultado.}
{loading &&
}{!loading && data.features.length === 0 &&
No hay geometrías para mostrarAgregá una ubicación desde el detalle de un registro.
}
; }