reduce API calls by filtering in widget.js

This commit is contained in:
vhsdream
2024-10-07 19:41:35 -04:00
parent f12e5dfb8a
commit fec330cde4
4 changed files with 37 additions and 32 deletions

View File

@@ -8,16 +8,25 @@ const widget = {
mappings: {
projects: {
endpoint: "projects",
map: (data) => ({
projects: jsonArrayFilter(data, (item) => !item.isArchived).length,
}),
},
tasks: {
endpoint: "tasks/all",
// TODO: use filter (and other params?) to allow customizing fields/blocks
params: ["filter"],
params: ["filter", "sort_by"],
map: (data) => ({
tasks: jsonArrayFilter(data, (item) => !item.done).length,
tasks7d: jsonArrayFilter(
data,
(item) =>
new Date(item.due_date).valueOf() > 978307168000 &&
new Date(item.due_date).valueOf() <= new Date(Date.now() + 640800000).valueOf(),
).length,
inProgress: jsonArrayFilter(data, (item) => !item.done && item.percent_done > 0 && item.percent_done < 1)
.length,
overdue: jsonArrayFilter(
data,
(item) =>
new Date(item.due_date).valueOf() > 978307168000 &&
new Date(item.due_date).valueOf() <= new Date(Date.now()),
).length,
}),
},
},