From 4bc54f67fe38053965a16d900052727ad680341d Mon Sep 17 00:00:00 2001 From: enlineawork Date: Tue, 8 Sep 2026 20:05:04 -0300 Subject: [PATCH] fix(web): show only real inventory instances --- web-v2/src/pages/AssetsPage.tsx | 100 ++++++++++++++++++++------------ 1 file changed, 64 insertions(+), 36 deletions(-) diff --git a/web-v2/src/pages/AssetsPage.tsx b/web-v2/src/pages/AssetsPage.tsx index e4eeeb3..b33cfdc 100644 --- a/web-v2/src/pages/AssetsPage.tsx +++ b/web-v2/src/pages/AssetsPage.tsx @@ -15,14 +15,15 @@ import { ASSET_OPERATIONAL_STATUSES, ASSET_STATUSES, } from '../features/assets/assetPresentation'; -import { listAssets, listAssetTree, listAssetTypes } from '../lib/api'; +import { listAssetTypes } from '../lib/api'; import type { AssetInformationStatus, - AssetListItem, AssetOperationalStatus, AssetType, PageMeta, } from '../lib/api'; +import { listRealInventory } from '../lib/inventoryBrowserApi'; +import type { InventoryListItem, InventoryQuery } from '../lib/inventoryBrowserApi'; import { formatDate } from '../lib/format'; const quickViews = [ @@ -35,7 +36,7 @@ const quickViews = [ export function AssetsPage() { const [urlParams, setUrlParams] = useSearchParams(); const operationalContext = useOperationalContext(); - const [assets, setAssets] = useState([]); + const [assets, setAssets] = useState([]); const [types, setTypes] = useState([]); const [meta, setMeta] = useState({ page: 1, pageSize: 25, total: 0, totalPages: 0 }); const [loading, setLoading] = useState(true); @@ -59,25 +60,39 @@ export function AssetsPage() { const effectiveOperationalStatus = quick === 'out' ? 'OUT_OF_SERVICE' as AssetOperationalStatus : operationalStatus; useEffect(() => { - listAssetTypes().then(setTypes).catch(() => undefined); + listAssetTypes().then((data) => setTypes(data.filter((type) => ['instalacion','subinstalacion'].includes(type.code.toLowerCase())))).catch(() => undefined); }, []); useEffect(() => { if (view !== 'list') return; - setLoading(true); setError(''); - listAssets({ - page, pageSize: 25, search, typeId, status, + setLoading(true); + setError(''); + listRealInventory({ + page, + pageSize: 25, + search, + typeId, + status, operationalStatus: effectiveOperationalStatus, - operationalAreaId, operatorCompanyId, needsValidation, hasGeometry, + operationalAreaId, + operatorCompanyId, + needsValidation, + hasGeometry, }) .then((response) => { setAssets(response.data); setMeta(response.meta); }) .catch((requestError) => setError(errorMessage(requestError))) .finally(() => setLoading(false)); }, [view, page, search, typeId, status, effectiveOperationalStatus, operationalAreaId, operatorCompanyId, needsValidation, hasGeometry]); - const filters: Parameters[0] = useMemo(() => ({ - search, typeId, status, operationalStatus: effectiveOperationalStatus, - operationalAreaId, operatorCompanyId, needsValidation, hasGeometry, + const filters: InventoryQuery = useMemo(() => ({ + search, + typeId, + status, + operationalStatus: effectiveOperationalStatus, + operationalAreaId, + operatorCompanyId, + needsValidation, + hasGeometry, }), [search, typeId, status, effectiveOperationalStatus, operationalAreaId, operatorCompanyId, needsValidation, hasGeometry]); const update = (changes: Record) => { @@ -91,18 +106,25 @@ export function AssetsPage() { const clearFilters = () => { const next = new URLSearchParams(); if (view === 'list') next.set('view', 'list'); - ['section', 'companyId', 'parentId'].forEach((key) => { - const value = urlParams.get(key); - if (value) next.set(key, value); - }); - setDraftSearch(''); setUrlParams(next); + const parentId=urlParams.get('parentId'); + if (parentId) next.set('parentId',parentId); + setDraftSearch(''); + setUrlParams(next); + }; + const setPage = (value: number) => { + const next = new URLSearchParams(urlParams); + value > 1 ? next.set('page', String(value)) : next.delete('page'); + setUrlParams(next); }; - const setPage = (value: number) => { const next = new URLSearchParams(urlParams); value > 1 ? next.set('page', String(value)) : next.delete('page'); setUrlParams(next); }; const advancedActive = Boolean(typeId || status || rawOperationalStatus); return
-
INVENTARIOS

Inventarios

Consultá y administrá el inventario operativo de cada empresa desde un solo lugar.

+
+ INVENTARIOS +

Inventarios

+

Instancias reales registradas en campo, organizadas por Área → Yacimiento → Instalación → Subinstalación.

+
Nuevo registro
@@ -111,15 +133,15 @@ export function AssetsPage() {
- setDraftSearch(event.target.value)} placeholder="Buscar registro, código o identificación…" /> + setDraftSearch(event.target.value)} placeholder="Buscar Inventario, código o identificación…" />
{quickViews.map((item) => )} - + {view === 'list' && }
- {(advancedOpen || advancedActive) &&
- + {view === 'list' && (advancedOpen || advancedActive) &&
+ @@ -127,19 +149,25 @@ export function AssetsPage() {
{error && {error}} - {view === 'hierarchy' ? : loading ? : assets.length === 0 ? :
-
{meta.total} registro{meta.total === 1 ? '' : 's'}Página {meta.page} de {Math.max(meta.totalPages, 1)}
-
- {assets.map((asset) => - - - - - - - )} -
RegistroTipoÁrea / OperadoraEstadoActualizado
{asset.name}{asset.code}{asset.parent ? ` · en ${asset.parent.name}` : ''}
{asset.type.name}{asset.operationalArea || asset.operatorCompany ? {asset.operationalArea?.name ?? 'Sin área'}{asset.operatorCompany?.name ?? 'Sin operadora'} : Sin contexto}
{assetStatusLabel(asset.informationStatus)}{assetOperationalStatusLabel(asset.operationalStatus)}
{formatDate(asset.updatedAt)}
-
{meta.total ? `${(page - 1) * meta.pageSize + 1}–${Math.min(page * meta.pageSize, meta.total)} de ${meta.total}` : '0 resultados'}
-
} + {view === 'hierarchy' + ? + : loading + ? + : assets.length === 0 + ? + :
+
{meta.total} instancia{meta.total === 1 ? '' : 's'} real{meta.total === 1 ? '' : 'es'}Página {meta.page} de {Math.max(meta.totalPages, 1)}
+
+ {assets.map((asset) => + + + + + + + )} +
InventarioNivelÁrea / Operadora vigenteEstadoActualizado
{asset.name}{asset.code}{asset.parent ? ` · en ${asset.parent.name}` : ''}
{asset.type.name}{asset.operationalArea ? {asset.operationalArea.name}{asset.operatorCompany?.name ?? 'Sin operadora vigente'} : Sin Área}
{assetStatusLabel(asset.informationStatus)}{assetOperationalStatusLabel(asset.operationalStatus)}
{formatDate(asset.updatedAt)}
+
{meta.total ? `${(page - 1) * meta.pageSize + 1}–${Math.min(page * meta.pageSize, meta.total)} de ${meta.total}` : '0 resultados'}
+
}
; }