diff --git a/dashboard-server/gorgias-server/._package-lock.json b/dashboard-server/gorgias-server/._package-lock.json new file mode 100644 index 0000000..84512ab Binary files /dev/null and b/dashboard-server/gorgias-server/._package-lock.json differ diff --git a/dashboard-server/gorgias-server/._package.json b/dashboard-server/gorgias-server/._package.json new file mode 100644 index 0000000..84512ab Binary files /dev/null and b/dashboard-server/gorgias-server/._package.json differ diff --git a/dashboard-server/gorgias-server/._routes b/dashboard-server/gorgias-server/._routes new file mode 100644 index 0000000..84512ab Binary files /dev/null and b/dashboard-server/gorgias-server/._routes differ diff --git a/dashboard-server/gorgias-server/._services b/dashboard-server/gorgias-server/._services new file mode 100644 index 0000000..84512ab Binary files /dev/null and b/dashboard-server/gorgias-server/._services differ diff --git a/dashboard/src/components/dashboard/GorgiasOverview.jsx b/dashboard/src/components/dashboard/GorgiasOverview.jsx index 614eb75..63a39e6 100644 --- a/dashboard/src/components/dashboard/GorgiasOverview.jsx +++ b/dashboard/src/components/dashboard/GorgiasOverview.jsx @@ -24,14 +24,17 @@ import { Mail, Send, Loader2, + ArrowUp, + ArrowDown, } from "lucide-react"; import axios from "axios"; const TIME_RANGES = { - 7: "Last 7 Days", - 14: "Last 14 Days", - 30: "Last 30 Days", - 90: "Last 90 Days", + "today": "Today", + "7": "Last 7 Days", + "14": "Last 14 Days", + "30": "Last 30 Days", + "90": "Last 90 Days", }; const formatDuration = (seconds) => { @@ -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 ( -
- {typeof value === "number" - ? value.toLocaleString() + suffix - : value} -
-- {formatDelta(delta)} -
+{title}
+ {loading ? ( ++ {typeof value === "number" + ? value.toLocaleString() + suffix + : value} +
+ {delta !== undefined && delta !== 0 && ( +