From 6cab3314e3fa3c0e85c463a5c5733bdec3e4654c Mon Sep 17 00:00:00 2001 From: Matt Date: Fri, 27 Dec 2024 21:13:34 -0500 Subject: [PATCH] Fix cards layout/style, add today period --- .../gorgias-server/._package-lock.json | Bin 0 -> 4096 bytes .../gorgias-server/._package.json | Bin 0 -> 4096 bytes dashboard-server/gorgias-server/._routes | Bin 0 -> 4096 bytes dashboard-server/gorgias-server/._services | Bin 0 -> 4096 bytes .../components/dashboard/GorgiasOverview.jsx | 326 +++++++++++------- 5 files changed, 197 insertions(+), 129 deletions(-) create mode 100644 dashboard-server/gorgias-server/._package-lock.json create mode 100644 dashboard-server/gorgias-server/._package.json create mode 100644 dashboard-server/gorgias-server/._routes create mode 100644 dashboard-server/gorgias-server/._services diff --git a/dashboard-server/gorgias-server/._package-lock.json b/dashboard-server/gorgias-server/._package-lock.json new file mode 100644 index 0000000000000000000000000000000000000000..84512abe7afdedcd515e9e38b31b6c0a56fe9b12 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$tk?#Ef?J3N)(cE67#ZwePO7sAx)wBAMO$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$tk?#Ef?J3N)(cE67#ZwePO7sAx)wBAMO$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$tk?#Ef?J3N)(cE67#ZwePO7sAx)wBAMO$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$tk?#Ef?J3N)(cE67#ZwePO7sAx)wBAMO { @@ -41,12 +44,33 @@ const formatDuration = (seconds) => { }; const getDateRange = (days) => { - const end = new Date(); - end.setUTCHours(23, 59, 59, 999); + // Create date in Eastern Time + const now = new Date(); + const easternTime = new Date( + now.toLocaleString("en-US", { timeZone: "America/New_York" }) + ); - const start = new Date(); - start.setDate(start.getDate() - days); - start.setUTCHours(0, 0, 0, 0); + if (days === "today") { + // For today, set the range to be the current day in Eastern Time + const start = new Date(easternTime); + start.setHours(0, 0, 0, 0); + + const end = new Date(easternTime); + end.setHours(23, 59, 59, 999); + + return { + start_datetime: start.toISOString(), + end_datetime: end.toISOString() + }; + } + + // For other periods, calculate from end of previous day + const end = new Date(easternTime); + end.setHours(23, 59, 59, 999); + + const start = new Date(easternTime); + start.setDate(start.getDate() - Number(days)); + start.setHours(0, 0, 0, 0); return { start_datetime: start.toISOString(), @@ -75,48 +99,52 @@ const MetricCard = ({ const formatDelta = (d) => { if (d === undefined || d === null) return null; if (d === 0) return "0"; - return (d > 0 ? "+" : "") + d + suffix; + return Math.abs(d) + suffix; }; - const colorMapping = { - blue: "bg-blue-50 dark:bg-blue-900/20 border-blue-100 dark:border-blue-800/50 text-blue-600 dark:text-blue-400", - green: "bg-green-50 dark:bg-green-900/20 border-green-100 dark:border-green-800/50 text-green-600 dark:text-green-400", - purple: "bg-purple-50 dark:bg-purple-900/20 border-purple-100 dark:border-purple-800/50 text-purple-600 dark:text-purple-400", - indigo: "bg-indigo-50 dark:bg-indigo-900/20 border-indigo-100 dark:border-indigo-800/50 text-indigo-600 dark:text-indigo-400", - orange: "bg-orange-50 dark:bg-orange-900/20 border-orange-100 dark:border-orange-800/50 text-orange-600 dark:text-orange-400", - teal: "bg-teal-50 dark:bg-teal-900/20 border-teal-100 dark:border-teal-800/50 text-teal-600 dark:text-teal-400", - cyan: "bg-cyan-50 dark:bg-cyan-900/20 border-cyan-100 dark:border-cyan-800/50 text-cyan-600 dark:text-cyan-400", - }; - - const baseColors = colorMapping[colorClass]; - return ( -
-

- {title} -

-
- {loading ? ( - - ) : ( - <> -
- {Icon && } -

- {typeof value === "number" - ? value.toLocaleString() + suffix - : value} -

-
- {delta !== undefined && ( -

- {formatDelta(delta)} -

+ + +
+
+

{title}

+ {loading ? ( + + ) : ( +
+

+ {typeof value === "number" + ? value.toLocaleString() + suffix + : value} +

+ {delta !== undefined && delta !== 0 && ( +
+ {delta > 0 ? ( + + ) : ( + + )} + + {formatDelta(delta)} + +
+ )} +
)} - - )} -
-
+
+ {Icon && ( + + )} +
+ + ); }; @@ -130,7 +158,7 @@ const TableSkeleton = () => ( ); const GorgiasOverview = () => { - const [timeRange, setTimeRange] = useState(7); + const [timeRange, setTimeRange] = useState("7"); const [data, setData] = useState({}); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); @@ -263,8 +291,8 @@ const GorgiasOverview = () => {