Dev #113

Merged
ashan_rusiru merged 3 commits from Dev into production 2026-10-15 00:44:49 +05:30
Showing only changes of commit eb274e62c4 - Show all commits
+14 -19
View File
@@ -41,11 +41,6 @@ function isoDate(d: Date) {
return d.toISOString().slice(0, 10)
}
// Shown only when the last TREND_DAYS days have no real ledger activity, so the
// chart isn't a flat zero line before there's any real movement to plot.
const SAMPLE_TREND_IN = [42, 58, 35, 70, 64, 30, 20, 85, 46, 55, 38, 62, 48, 72]
const SAMPLE_TREND_OUT = [30, 40, 45, 38, 50, 22, 15, 60, 33, 47, 28, 44, 36, 58]
export default function DashboardPage() {
const { activeBranchId, branchingEnabled } = useAuth()
@@ -98,13 +93,9 @@ export default function DashboardPage() {
const labels = days.map((d) => new Date(d).toLocaleDateString(undefined, { day: "numeric", month: "short" }))
if (!trend || trend.length === 0) {
return { labels, inData: SAMPLE_TREND_IN, outData: SAMPLE_TREND_OUT }
}
const inByDay = new Map(days.map((d) => [d, 0]))
const outByDay = new Map(days.map((d) => [d, 0]))
for (const entry of trend) {
for (const entry of trend ?? []) {
const day = entry.createdAt.slice(0, 10)
const bucket = entry.direction === "In" ? inByDay : outByDay
if (bucket.has(day)) bucket.set(day, (bucket.get(day) ?? 0) + entry.qtyBase)
@@ -213,15 +204,19 @@ export default function DashboardPage() {
</div>
{loaded ? (
<div className="h-64 sm:h-72">
<LineChart
labels={movementTrend.labels}
datasets={[
{ label: "In", data: movementTrend.inData, borderColor: "#22c55e", backgroundColor: "rgba(34, 197, 94, 0.12)" },
{ label: "Out", data: movementTrend.outData, borderColor: "#ef4444", backgroundColor: "rgba(239, 68, 68, 0.12)" },
]}
/>
</div>
movementTrend.inData.some((v) => v > 0) || movementTrend.outData.some((v) => v > 0) ? (
<div className="h-64 sm:h-72">
<LineChart
labels={movementTrend.labels}
datasets={[
{ label: "In", data: movementTrend.inData, borderColor: "#22c55e", backgroundColor: "rgba(34, 197, 94, 0.12)" },
{ label: "Out", data: movementTrend.outData, borderColor: "#ef4444", backgroundColor: "rgba(239, 68, 68, 0.12)" },
]}
/>
</div>
) : (
<p className="py-6 text-center text-sm text-muted-foreground">No stock movement in the last {TREND_DAYS} days.</p>
)
) : (
!error && <Skeleton className="h-64 rounded-lg sm:h-72" />
)}