Load all assets at once (no pagination), add server-side disney_park filter

This commit is contained in:
2026-05-22 17:59:33 -04:00
parent 95b5bd26eb
commit 7394d44caf
2 changed files with 8 additions and 10 deletions
+5 -1
View File
@@ -928,8 +928,9 @@ def list_assets(
customer_id: Optional[int] = Query(None), customer_id: Optional[int] = Query(None),
location_id: Optional[int] = Query(None), location_id: Optional[int] = Query(None),
assigned_to: Optional[int] = Query(None), assigned_to: Optional[int] = Query(None),
disney_park: Optional[str] = Query(None),
q: Optional[str] = Query(None), q: Optional[str] = Query(None),
limit: int = Query(100, ge=1, le=1000), limit: int = Query(100, ge=1, le=2000),
offset: int = Query(0, ge=0), offset: int = Query(0, ge=0),
): ):
conn = get_db() conn = get_db()
@@ -945,6 +946,9 @@ def list_assets(
if make: if make:
conditions.append("make = ?") conditions.append("make = ?")
params.append(make) params.append(make)
if disney_park:
conditions.append("disney_park = ?")
params.append(disney_park)
if model: if model:
conditions.append("model = ?") conditions.append("model = ?")
params.append(model) params.append(model)
+3 -9
View File
@@ -3021,7 +3021,7 @@
// ── Filter state ────────────────────────────────────────────────────── // ── Filter state ──────────────────────────────────────────────────────
let assetFilters = { category: null, status: null, make: null, disney_park: null, q: '' }; let assetFilters = { category: null, status: null, make: null, disney_park: null, q: '' };
let assetOffset = 0; let assetOffset = 0;
const ASSET_PAGE_SIZE = 100; const ASSET_PAGE_SIZE = 2000;
let assetTotal = 0; let assetTotal = 0;
let assetDebounce = null; let assetDebounce = null;
let cachedAssets = []; let cachedAssets = [];
@@ -3060,6 +3060,7 @@
if (assetFilters.category) params.set('category', assetFilters.category); if (assetFilters.category) params.set('category', assetFilters.category);
if (assetFilters.status) params.set('status', assetFilters.status); if (assetFilters.status) params.set('status', assetFilters.status);
if (assetFilters.make) params.set('make', assetFilters.make); if (assetFilters.make) params.set('make', assetFilters.make);
if (assetFilters.disney_park) params.set('disney_park', assetFilters.disney_park);
if (assetFilters.q) params.set('q', assetFilters.q); if (assetFilters.q) params.set('q', assetFilters.q);
if (assetFilters.assigned_to) params.set('assigned_to', assetFilters.assigned_to); if (assetFilters.assigned_to) params.set('assigned_to', assetFilters.assigned_to);
params.set('limit', String(ASSET_PAGE_SIZE)); params.set('limit', String(ASSET_PAGE_SIZE));
@@ -3069,14 +3070,7 @@
var result = await api('/api/assets?' + params.toString(), {_returnMeta: true}); var result = await api('/api/assets?' + params.toString(), {_returnMeta: true});
var assets = result.data; var assets = result.data;
assetTotal = parseInt(result.headers.get('X-Total-Count')) || assets.length; assetTotal = parseInt(result.headers.get('X-Total-Count')) || assets.length;
// Client-side filter fallback if server doesn't support assigned_to renderAssetList(assets);
var filtered = assetFilters.assigned_to
? assets.filter(function(a) { return a.assigned_to === assetFilters.assigned_to; })
: assets;
filtered = assetFilters.disney_park
? filtered.filter(function(a) { return a.disney_park === assetFilters.disney_park; })
: filtered;
renderAssetList(filtered);
renderFilterPills(assets); renderFilterPills(assets);
renderPagination(); renderPagination();
} catch (e) { } catch (e) {