From a85a54651070765d6254287369835d747be1c276 Mon Sep 17 00:00:00 2001 From: "Alex Pooley (@zuedev)" Date: Sat, 25 Jul 2026 17:27:38 +0100 Subject: manager is now using react --- 174bg/manager/src/components/Ledger.jsx | 73 +++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 174bg/manager/src/components/Ledger.jsx (limited to '174bg/manager/src/components/Ledger.jsx') diff --git a/174bg/manager/src/components/Ledger.jsx b/174bg/manager/src/components/Ledger.jsx new file mode 100644 index 0000000..247b343 --- /dev/null +++ b/174bg/manager/src/components/Ledger.jsx @@ -0,0 +1,73 @@ +import { useEffect, useState } from "react"; +import { pb } from "../lib/pocketbase"; + +function memberLabel(record, id) { + const m = record?.expand?.[id]; + return m ? m.RSI_Handle || m.name || m.id : (record?.[id] ?? "—"); +} + +export default function Ledger() { + const [records, setRecords] = useState(null); + const [error, setError] = useState(null); + + useEffect(() => { + let cancelled = false; + pb + .collection("ledger") + .getFullList({ expand: "sender,recipient", sort: "-created", requestKey: null }) + .then((recs) => { + if (!cancelled) setRecords(recs); + }) + .catch((err) => { + console.error("Failed to load ledger:", err); + if (!cancelled) setError(err); + }); + return () => { + cancelled = true; + }; + }, []); + + return ( +
+
+ Ledger +
+ {error && ( +

+ Failed to load ledger: {error?.message ?? String(error)} +

+ )} + {!error && records && records.length === 0 && ( +

No ledger entries.

+ )} + {!error && records && records.length > 0 && ( + + + + + + + + + + + + {records.map((rec) => ( + + + + + + + + ))} + +
DateSenderRecipientUECNote
+ {rec.created ? new Date(rec.created).toLocaleString() : "—"} + {memberLabel(rec, "sender")}{memberLabel(rec, "recipient")} + {Number(rec.uec ?? 0).toLocaleString()} + {rec.note ?? ""}
+ )} +
+ ); +} -- cgit v1.2.3