From 3368a9112f3e358d8de90753b0988bc67331e3d2 Mon Sep 17 00:00:00 2001 From: csawatzky Date: Fri, 23 May 2025 16:13:39 -0600 Subject: [PATCH] adding load more functionality to the devices and teams mobile tables --- src/pages/Devices.tsx | 36 ++++++++++++++++++++++++++++++++++++ src/teams/TeamList.tsx | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) diff --git a/src/pages/Devices.tsx b/src/pages/Devices.tsx index faf2f6d..77fe11d 100644 --- a/src/pages/Devices.tsx +++ b/src/pages/Devices.tsx @@ -26,6 +26,7 @@ import StatusPlenum from "common/StatusPlenum"; import StatusSen5x from "common/StatusSen5x"; import StatusDust from "common/StatusDust"; import StatusGas from "common/StatusGas"; +import { cloneDeep } from "lodash"; const useStyles = makeStyles((theme: Theme) => { return ({ @@ -751,6 +752,41 @@ export default function Devices() { orderBy={orderBy} setOrderBy={setOrderBy} endTitleElement={preferencesButton} + loadMore={()=>{ + let currentRows = cloneDeep(devices) + deviceAPI.list( + limit, + currentRows.length, + order, + orderBy, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + getKeys(), + getTypes(), + fieldContains, + search, + as + ).then(resp => { + let newDevices: Device[] = [] + resp.data.devices.forEach(device => { + if (device.status?.plenum?.temperature) setHasPlenums(true) + if (device.status?.sen5x?.temperature) setHasSen5x(true) + if (device.status?.o2) setHasO2(true) + if (device.status?.co) setHasCo(true) + if (device.status?.co2) setHasCo2(true) + if (device.status?.no2) setHasNo2(true) + newDevices.push(Device.create(device)) + }) + setDevices(currentRows.concat(newDevices)) + }).catch(err => { + + }) + }} /> { + let current = cloneDeep(teams) + setLoading(true); + let newTeamPerms: Map = new Map(); + let newTeamPrefs: Map = new Map(); + let viewAs: string | undefined = as + if (as === team.key()) { + viewAs = undefined + } + teamAPI + .listTeams(limit, current.length, undefined, "name", undefined, undefined, " ", search) + .then(resp => { + setTotal(resp.data.total ? resp.data.total : 0); + let newTeams: Team[] = [] + resp.data.teams.forEach(team => { + let u = viewAs ? viewAs : user.id(); + let t = Team.create(team) + if (team.settings && u !== "") { + userAPI + .getUser(u, teamScope(team.settings.key)) + .then(resp => { + newTeamPerms.set(t.key(), resp.permissions) + newTeamPrefs.set(t.key(), resp.preferences) + t.preferences = cloneDeep(resp.preferences) + t.permissions = cloneDeep(resp.permissions) + }).catch(() => { + snackbar.error("Error loading teams.") + }) + .finally(() => { + setTeamPerms(newTeamPerms); + setTeamPrefs(newTeamPrefs); + }); + } + newTeams.push(t) + }); + setTeams(current.concat(newTeams)); + }) + .finally(() => { + setLoading(false); + }); + }} />