+
+
+
+
+
+
{isLoading && (
Loading Listens
@@ -63,7 +87,7 @@ export const ReportListens: React.FC = () => {
)}
{report.length > 0 && (
-
+
)}
@@ -82,41 +106,113 @@ const ReportGraph: React.FC<{
date: getTime(date),
}));
+ const ReportTooltip: React.FC
= ({
+ active,
+ payload,
+ label,
+ }) => {
+ if (!active || payload === undefined) {
+ return null;
+ }
+
+ const [{ value: listens }] = payload;
+ const date = format(
+ label as number,
+ dateFormatFromTimeFrame(options.timeFrame)
+ );
+
+ return (
+
+
{date}
+
+ Listens: {listens}
+
+
+ );
+ };
+
return (
-
-
-
-
-
-
-
-
-
- format(date, "P")}
- />
-
- [value, "Listens"]} />
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ format(date, shortDateFormatFromTimeFrame(options.timeFrame))
+ }
+ />
+
+
+
+
+
+
);
};
+
+const shortDateFormatFromTimeFrame = (
+ timeFrame: "day" | "week" | "month" | "year"
+): string => {
+ const FORMAT_DAY = "P";
+ const FORMAT_WEEK = "'Week' w yyyy";
+ const FORMAT_MONTH = "LLL yyyy";
+ const FORMAT_YEAR = "yyyy";
+ const FORMAT_DEFAULT = FORMAT_DAY;
+
+ switch (timeFrame) {
+ case "day":
+ return FORMAT_DAY;
+ case "week":
+ return FORMAT_WEEK;
+ case "month":
+ return FORMAT_MONTH;
+ case "year":
+ return FORMAT_YEAR;
+ default:
+ return FORMAT_DEFAULT;
+ }
+};
+
+const dateFormatFromTimeFrame = (
+ timeFrame: "day" | "week" | "month" | "year"
+): string => {
+ const FORMAT_DAY = "PPPP";
+ const FORMAT_WEEK = "'Week starting on' PPPP";
+ const FORMAT_MONTH = "LLLL yyyy";
+ const FORMAT_YEAR = "yyyy";
+ const FORMAT_DEFAULT = FORMAT_DAY;
+
+ switch (timeFrame) {
+ case "day":
+ return FORMAT_DAY;
+ case "week":
+ return FORMAT_WEEK;
+ case "month":
+ return FORMAT_MONTH;
+ case "year":
+ return FORMAT_YEAR;
+ default:
+ return FORMAT_DEFAULT;
+ }
+};