From ed7ed2ab2430c53def4baac420a1cce0da5ed378 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl-Gerhard=20Lindesva=CC=88rd?= Date: Fri, 27 Oct 2023 20:37:08 +0200 Subject: [PATCH] add bar chart support and other fixes --- README.md | 2 +- apps/web/src/components/ColorSquare.tsx | 17 ++ .../src/components/report/ReportChartType.tsx | 33 +++ .../src/components/report/ReportDateRange.tsx | 53 ++--- .../components/report/chart/ChartProvider.tsx | 47 +++++ .../report/chart/ReportBarChart.tsx | 191 ++++++++++++++++++ .../report/chart/ReportLineChart.tsx | 143 ++++++------- ...Tooltop.tsx => ReportLineChartTooltip.tsx} | 3 + .../components/report/chart/ReportTable.tsx | 4 +- .../web/src/components/report/chart/index.tsx | 64 ++++++ apps/web/src/components/report/reportSlice.ts | 38 ++-- .../report/sidebar/ReportBreakdowns.tsx | 5 +- .../report/sidebar/ReportEventFilters.tsx | 5 +- .../report/sidebar/ReportEvents.tsx | 5 +- apps/web/src/modals/AddClient.tsx | 2 - .../[organization]/[project]/[dashboard].tsx | 12 +- .../pages/[organization]/reports/index.tsx | 8 +- apps/web/src/pages/_app.tsx | 2 - apps/web/src/server/api/routers/chart.ts | 108 ++++++---- apps/web/src/server/api/routers/report.ts | 39 +++- apps/web/src/server/db.ts | 2 +- apps/web/src/styles/globals.css | 114 +++++++++-- apps/web/src/types/index.ts | 9 +- apps/web/src/utils/constants.ts | 23 ++- apps/web/src/utils/validation.ts | 10 +- bun.lockb | Bin 508288 -> 491792 bytes 26 files changed, 713 insertions(+), 226 deletions(-) create mode 100644 apps/web/src/components/ColorSquare.tsx create mode 100644 apps/web/src/components/report/ReportChartType.tsx create mode 100644 apps/web/src/components/report/chart/ChartProvider.tsx create mode 100644 apps/web/src/components/report/chart/ReportBarChart.tsx rename apps/web/src/components/report/chart/{ReportLineChartTooltop.tsx => ReportLineChartTooltip.tsx} (92%) create mode 100644 apps/web/src/components/report/chart/index.tsx diff --git a/README.md b/README.md index 42e78242..54b94978 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Mixan is a simple analytics tool for logging events on web and react-native. My * [ ] Drag n Drop reports on dashboard * [ ] Manage dashboards * [ ] Support more chart types - * [ ] Bar + * [X] Bar * [ ] Pie * [ ] Area * [ ] Support funnels diff --git a/apps/web/src/components/ColorSquare.tsx b/apps/web/src/components/ColorSquare.tsx new file mode 100644 index 00000000..a111123c --- /dev/null +++ b/apps/web/src/components/ColorSquare.tsx @@ -0,0 +1,17 @@ +import { type HtmlProps } from "@/types"; +import { cn } from "@/utils/cn"; + +type ColorSquareProps = HtmlProps; + +export function ColorSquare({ children, className }: ColorSquareProps) { + return ( +
+ {children} +
+ ); +} diff --git a/apps/web/src/components/report/ReportChartType.tsx b/apps/web/src/components/report/ReportChartType.tsx new file mode 100644 index 00000000..1cee23ee --- /dev/null +++ b/apps/web/src/components/report/ReportChartType.tsx @@ -0,0 +1,33 @@ +import { useDispatch, useSelector } from "@/redux"; +import { RadioGroup, RadioGroupItem } from "../ui/radio-group"; +import { + changeChartType, + changeDateRanges, + changeInterval, +} from "./reportSlice"; +import { Combobox } from "../ui/combobox"; +import { type IChartType } from "@/types"; +import { chartTypes } from "@/utils/constants"; + +export function ReportChartType() { + const dispatch = useDispatch(); + const type = useSelector((state) => state.report.chartType); + + return ( + <> +
+ { + dispatch(changeChartType(value as IChartType)); + }} + value={type} + items={Object.entries(chartTypes).map(([key, value]) => ({ + label: value, + value: key, + }))} + /> +
+ + ); +} diff --git a/apps/web/src/components/report/ReportDateRange.tsx b/apps/web/src/components/report/ReportDateRange.tsx index cf96683c..fc038042 100644 --- a/apps/web/src/components/report/ReportDateRange.tsx +++ b/apps/web/src/components/report/ReportDateRange.tsx @@ -7,13 +7,14 @@ import { type IInterval } from "@/types"; export function ReportDateRange() { const dispatch = useDispatch(); const interval = useSelector((state) => state.report.interval); - + const chartType = useSelector((state) => state.report.chartType); + return ( <> { - dispatch(changeDateRanges('today')); + dispatch(changeDateRanges("today")); }} > Today @@ -68,29 +69,31 @@ export function ReportDateRange() { 1 year -
- { - dispatch(changeInterval(value as IInterval)); - }} - value={interval} - items={[ - { - label: "Hour", - value: "hour", - }, - { - label: "Day", - value: "day", - }, - { - label: "Month", - value: "month", - }, - ]} - > -
+ {chartType === "linear" && ( +
+ { + dispatch(changeInterval(value as IInterval)); + }} + value={interval} + items={[ + { + label: "Hour", + value: "hour", + }, + { + label: "Day", + value: "day", + }, + { + label: "Month", + value: "month", + }, + ]} + /> +
+ )} ); } diff --git a/apps/web/src/components/report/chart/ChartProvider.tsx b/apps/web/src/components/report/chart/ChartProvider.tsx new file mode 100644 index 00000000..917b59af --- /dev/null +++ b/apps/web/src/components/report/chart/ChartProvider.tsx @@ -0,0 +1,47 @@ +import { pick } from "ramda"; +import { createContext, memo, useContext, useMemo } from "react"; + +type ChartContextType = { + editMode: boolean; +}; + +type ChartProviderProps = { + children: React.ReactNode; +} & ChartContextType; + +const ChartContext = createContext({ + editMode: false, +}); + +export function ChartProvider({ children, editMode }: ChartProviderProps) { + return ( + ({ + editMode, + }), + [editMode], + )} + > + {children} + + ); +} + +export function withChartProivder(WrappedComponent: React.FC) { + const WithChartProvider = (props: ComponentProps & ChartContextType) => { + return ( + + + + ) + } + + WithChartProvider.displayName = `WithChartProvider(${WrappedComponent.displayName ?? WrappedComponent.name ?? 'Component'})` + + return memo(WithChartProvider) +} + +export function useChartContext() { + return useContext(ChartContext); +} \ No newline at end of file diff --git a/apps/web/src/components/report/chart/ReportBarChart.tsx b/apps/web/src/components/report/chart/ReportBarChart.tsx new file mode 100644 index 00000000..3986e1d9 --- /dev/null +++ b/apps/web/src/components/report/chart/ReportBarChart.tsx @@ -0,0 +1,191 @@ +import { ColorSquare } from "@/components/ColorSquare"; +import { type IChartData } from "@/types"; +import { type RouterOutputs } from "@/utils/api"; +import { getChartColor } from "@/utils/theme"; +import { + useReactTable, + getCoreRowModel, + flexRender, + createColumnHelper, + getSortedRowModel, + type SortingState, +} from "@tanstack/react-table"; +import { memo, useEffect, useMemo, useState } from "react"; +import { useElementSize } from "usehooks-ts"; +import { useChartContext } from "./ChartProvider"; +import { ChevronDown, ChevronUp } from "lucide-react"; +import { cn } from "@/utils/cn"; + +const columnHelper = + createColumnHelper(); + +type ReportBarChartProps = { + data: IChartData; +}; + +export function ReportBarChart({ data }: ReportBarChartProps) { + const { editMode } = useChartContext(); + const [ref, { width }] = useElementSize(); + const [sorting, setSorting] = useState([]); + const table = useReactTable({ + data: useMemo( + () => (editMode ? data.series : data.series.slice(0, 20)), + [editMode, data], + ), + columns: useMemo(() => { + return [ + columnHelper.accessor((row) => row.name, { + id: "label", + header: () => "Label", + cell(info) { + return ( +
+ {info.row.original.event.id} + {info.getValue()} +
+ ); + }, + footer: (info) => info.column.id, + size: width ? width * 0.3 : undefined, + }), + columnHelper.accessor((row) => row.totalCount, { + id: "totalCount", + cell: (info) => ( +
{info.getValue()}
+ ), + header: () => "Count", + footer: (info) => info.column.id, + size: width ? width * 0.1 : undefined, + enableSorting: true, + }), + columnHelper.accessor((row) => row.totalCount, { + id: "graph", + cell: (info) => ( +
+ ), + header: () => "Graph", + footer: (info) => info.column.id, + size: width ? width * 0.6 : undefined, + }), + ]; + }, [width]), + columnResizeMode: "onChange", + state: { + sorting, + }, + getCoreRowModel: getCoreRowModel(), + onSortingChange: setSorting, + getSortedRowModel: getSortedRowModel(), + debugTable: true, + debugHeaders: true, + debugColumns: true, + }); + return ( +
+ {editMode && ( +
+ {data.events.map((event) => { + return ( +
+
+ {event.id} {event.name} +
+
+ {new Intl.NumberFormat("en-IN", { + maximumSignificantDigits: 20, + }).format(event.count)} +
+
+ ); + })} +
+ )} +
+ + + {table.getHeaderGroups().map((headerGroup) => ( + + {headerGroup.headers.map((header) => ( + + ))} + + ))} + + + {table.getRowModel().rows.map((row) => ( + + {row.getVisibleCells().map((cell) => ( + + ))} + + ))} + +
+
+ {flexRender( + header.column.columnDef.header, + header.getContext(), + )} + {{ + asc: , + desc: , + }[header.column.getIsSorted() as string] ?? null} +
+
+
+ {flexRender(cell.column.columnDef.cell, cell.getContext())} +
+
+
+ ); +} diff --git a/apps/web/src/components/report/chart/ReportLineChart.tsx b/apps/web/src/components/report/chart/ReportLineChart.tsx index dcd49ce0..77fd4296 100644 --- a/apps/web/src/components/report/chart/ReportLineChart.tsx +++ b/apps/web/src/components/report/chart/ReportLineChart.tsx @@ -1,4 +1,3 @@ -import { api } from "@/utils/api"; import { CartesianGrid, Line, @@ -7,114 +6,86 @@ import { XAxis, YAxis, } from "recharts"; -import { ReportLineChartTooltip } from "./ReportLineChartTooltop"; +import { ReportLineChartTooltip } from "./ReportLineChartTooltip"; import { useFormatDateInterval } from "@/hooks/useFormatDateInterval"; -import { type IChartInput } from "@/types"; +import { type IChartData, type IInterval } from "@/types"; import { getChartColor } from "@/utils/theme"; import { ReportTable } from "./ReportTable"; import { useEffect, useRef, useState } from "react"; import { AutoSizer } from "@/components/AutoSizer"; +import { useChartContext } from "./ChartProvider"; -type ReportLineChartProps = IChartInput & { - showTable?: boolean; +type ReportLineChartProps = { + data: IChartData; + interval: IInterval; }; -export function ReportLineChart({ - interval, - startDate, - endDate, - events, - breakdowns, - showTable, - chartType, - name, -}: ReportLineChartProps) { +export function ReportLineChart({ interval, data }: ReportLineChartProps) { + const { editMode } = useChartContext(); const [visibleSeries, setVisibleSeries] = useState([]); - - const hasEmptyFilters = events.some((event) => event.filters.some((filter) => filter.value.length === 0)); - - const chart = api.chart.chart.useQuery( - { - interval, - chartType, - startDate, - endDate, - events, - breakdowns, - name, - }, - { - enabled: events.length > 0 && !hasEmptyFilters, - }, - ); - const formatDate = useFormatDateInterval(interval); const ref = useRef(false); useEffect(() => { - if (!ref.current && chart.data) { + if (!ref.current && data) { const max = 20; setVisibleSeries( - chart.data?.series?.slice(0, max).map((serie) => serie.name) ?? [], + data?.series?.slice(0, max).map((serie) => serie.name) ?? [], ); // ref.current = true; } - }, [chart.data]); + }, [data]); return ( <> - {chart.isSuccess && chart.data?.series?.[0]?.data && ( - <> - - {({ width }) => ( - - - } /> - - { - return formatDate(m); - }} - tickLine={false} - allowDuplicatedCategory={false} - /> - {chart.data?.series - .filter((serie) => { - return visibleSeries.includes(serie.name); - }) - .map((serie) => { - const realIndex = chart.data?.series.findIndex( - (item) => item.name === serie.name, - ); - const key = serie.name; - const strokeColor = getChartColor(realIndex); - return ( - - ); - })} - - )} - - {showTable && ( - + {({ width }) => ( + + + } /> + + { + return formatDate(m); + }} + tickLine={false} + allowDuplicatedCategory={false} /> - )} - + {data?.series + .filter((serie) => { + return visibleSeries.includes(serie.name); + }) + .map((serie) => { + const realIndex = data?.series.findIndex( + (item) => item.name === serie.name, + ); + const key = serie.name; + const strokeColor = getChartColor(realIndex); + return ( + + ); + })} + + )} + + {editMode && ( + )} ); diff --git a/apps/web/src/components/report/chart/ReportLineChartTooltop.tsx b/apps/web/src/components/report/chart/ReportLineChartTooltip.tsx similarity index 92% rename from apps/web/src/components/report/chart/ReportLineChartTooltop.tsx rename to apps/web/src/components/report/chart/ReportLineChartTooltip.tsx index 3fa06eae..c9d7d8cf 100644 --- a/apps/web/src/components/report/chart/ReportLineChartTooltop.tsx +++ b/apps/web/src/components/report/chart/ReportLineChartTooltip.tsx @@ -1,5 +1,6 @@ import { useMappings } from "@/hooks/useMappings"; import { type IToolTipProps } from "@/types"; +import { formatDate } from "@/utils/date"; type ReportLineChartTooltipProps = IToolTipProps<{ color: string; @@ -29,9 +30,11 @@ export function ReportLineChartTooltip({ const sorted = payload.slice(0).sort((a, b) => b.value - a.value); const visible = sorted.slice(0, limit); const hidden = sorted.slice(limit); + const first = visible[0]!; return (
+ {formatDate(new Date(first.payload.date))} {visible.map((item) => { return (
diff --git a/apps/web/src/components/report/chart/ReportTable.tsx b/apps/web/src/components/report/chart/ReportTable.tsx index fc43f589..91f0de29 100644 --- a/apps/web/src/components/report/chart/ReportTable.tsx +++ b/apps/web/src/components/report/chart/ReportTable.tsx @@ -1,15 +1,15 @@ import * as React from "react"; -import { type RouterOutputs } from "@/utils/api"; import { useFormatDateInterval } from "@/hooks/useFormatDateInterval"; import { useSelector } from "@/redux"; import { Checkbox } from "@/components/ui/checkbox"; import { getChartColor } from "@/utils/theme"; import { cn } from "@/utils/cn"; import { useMappings } from "@/hooks/useMappings"; +import { type IChartData } from "@/types"; type ReportTableProps = { - data: RouterOutputs["chart"]["chart"]; + data: IChartData; visibleSeries: string[]; setVisibleSeries: React.Dispatch>; }; diff --git a/apps/web/src/components/report/chart/index.tsx b/apps/web/src/components/report/chart/index.tsx new file mode 100644 index 00000000..a8233505 --- /dev/null +++ b/apps/web/src/components/report/chart/index.tsx @@ -0,0 +1,64 @@ +import { api } from "@/utils/api"; +import { type IChartInput } from "@/types"; +import { ReportBarChart } from "./ReportBarChart"; +import { ReportLineChart } from "./ReportLineChart"; +import { withChartProivder } from "./ChartProvider"; + +type ReportLineChartProps = IChartInput + +export const Chart = withChartProivder(({ + interval, + startDate, + endDate, + events, + breakdowns, + chartType, + name, +}: ReportLineChartProps) => { + const hasEmptyFilters = events.some((event) => event.filters.some((filter) => filter.value.length === 0)); + const chart = api.chart.chart.useQuery( + { + interval, + chartType, + startDate, + endDate, + events, + breakdowns, + name, + }, + { + keepPreviousData: true, + enabled: events.length > 0 && !hasEmptyFilters, + }, + ); + + const anyData = Boolean(chart.data?.series?.[0]?.data) + + if(chart.isFetching && !anyData) { + return (

Loading...

) + } + + if(chart.isError) { + return (

Error

) + } + + if(!chart.isSuccess) { + return (

Loading...

) + } + + + if(!anyData) { + return (

No data

) + } + + if(chartType === 'bar') { + return + } + + if(chartType === 'linear') { + return + } + + + return

Chart type "{chartType}" is not supported yet.

+}) diff --git a/apps/web/src/components/report/reportSlice.ts b/apps/web/src/components/report/reportSlice.ts index 8e0438be..3948bdf1 100644 --- a/apps/web/src/components/report/reportSlice.ts +++ b/apps/web/src/components/report/reportSlice.ts @@ -3,7 +3,9 @@ import { type IChartBreakdown, type IChartEvent, type IInterval, + type IChartType, } from "@/types"; +import { alphabetIds } from "@/utils/constants"; import { getDaysOldDate } from "@/utils/date"; import { type PayloadAction, createSlice } from "@reduxjs/toolkit"; @@ -13,15 +15,13 @@ type InitialState = IChartInput; const initialState: InitialState = { name: "screen_view", chartType: "linear", - startDate: getDaysOldDate(7), - endDate: new Date(), + startDate: getDaysOldDate(7).toISOString(), + endDate: new Date().toISOString(), interval: "day", breakdowns: [], events: [], }; -const IDS = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"] as const; - export const reportSlice = createSlice({ name: "counter", initialState, @@ -29,13 +29,13 @@ export const reportSlice = createSlice({ reset() { return initialState }, - setReport(state, action: PayloadAction) { - return action.payload + setReport(state, action: PayloadAction) { + return action.payload }, // Events addEvent: (state, action: PayloadAction>) => { state.events.push({ - id: IDS[state.events.length]!, + id: alphabetIds[state.events.length]!, ...action.payload, }); }, @@ -64,7 +64,7 @@ export const reportSlice = createSlice({ action: PayloadAction>, ) => { state.breakdowns.push({ - id: IDS[state.breakdowns.length]!, + id: alphabetIds[state.breakdowns.length]!, ...action.payload, }); }, @@ -91,28 +91,35 @@ export const reportSlice = createSlice({ changeInterval: (state, action: PayloadAction) => { state.interval = action.payload; }, + + // Chart type + changeChartType: (state, action: PayloadAction) => { + state.chartType = action.payload; + }, // Date range - changeStartDate: (state, action: PayloadAction) => { + changeStartDate: (state, action: PayloadAction) => { state.startDate = action.payload; }, // Date range - changeEndDate: (state, action: PayloadAction) => { + changeEndDate: (state, action: PayloadAction) => { state.endDate = action.payload; }, changeDateRanges: (state, action: PayloadAction) => { if(action.payload === 'today') { - state.startDate = new Date(); - state.endDate = new Date(); - state.startDate.setHours(0,0,0,0) + const startDate = new Date() + startDate.setHours(0,0,0,0) + + state.startDate = startDate.toISOString(); + state.endDate = new Date().toISOString(); state.interval = 'hour' return state } - state.startDate = getDaysOldDate(action.payload); - state.endDate = new Date(); + state.startDate = getDaysOldDate(action.payload).toISOString(); + state.endDate = new Date().toISOString() if (action.payload === 1) { state.interval = "hour"; @@ -137,6 +144,7 @@ export const { changeBreakdown, changeInterval, changeDateRanges, + changeChartType, } = reportSlice.actions; export default reportSlice.reducer; diff --git a/apps/web/src/components/report/sidebar/ReportBreakdowns.tsx b/apps/web/src/components/report/sidebar/ReportBreakdowns.tsx index ecc80a82..6aeb9398 100644 --- a/apps/web/src/components/report/sidebar/ReportBreakdowns.tsx +++ b/apps/web/src/components/report/sidebar/ReportBreakdowns.tsx @@ -6,6 +6,7 @@ import { type ReportEventMoreProps } from "./ReportEventMore"; import { type IChartBreakdown } from "@/types"; import { ReportBreakdownMore } from "./ReportBreakdownMore"; import { RenderDots } from "@/components/ui/RenderDots"; +import { ColorSquare } from "@/components/ColorSquare"; export function ReportBreakdowns() { const selectedBreakdowns = useSelector((state) => state.report.breakdowns); @@ -36,9 +37,9 @@ export function ReportBreakdowns() { return (
-
+ {index} -
+ { diff --git a/apps/web/src/components/report/sidebar/ReportEventFilters.tsx b/apps/web/src/components/report/sidebar/ReportEventFilters.tsx index 24d70e45..a487ef8f 100644 --- a/apps/web/src/components/report/sidebar/ReportEventFilters.tsx +++ b/apps/web/src/components/report/sidebar/ReportEventFilters.tsx @@ -23,6 +23,7 @@ import { ComboboxMulti } from "@/components/ui/combobox-multi"; import { Dropdown } from "@/components/Dropdown"; import { operators } from "@/utils/constants"; import { useMappings } from "@/hooks/useMappings"; +import { ColorSquare } from "@/components/ColorSquare"; type ReportEventFiltersProps = { event: IChartEvent; @@ -163,9 +164,9 @@ function Filter({ filter, event }: FilterProps) { className="px-4 py-2 shadow-[inset_6px_0_0] shadow-slate-200 first:border-t" >
-
+ -
+
{filter.name}
diff --git a/apps/web/src/components/report/sidebar/ReportEvents.tsx b/apps/web/src/components/report/sidebar/ReportEvents.tsx index 6b0b5a35..f8e72ca7 100644 --- a/apps/web/src/components/report/sidebar/ReportEvents.tsx +++ b/apps/web/src/components/report/sidebar/ReportEvents.tsx @@ -8,6 +8,7 @@ import { ReportEventMore, type ReportEventMoreProps } from "./ReportEventMore"; import { type IChartEvent } from "@/types"; import { Filter, GanttChart, Users } from "lucide-react"; import { Dropdown } from "@/components/Dropdown"; +import { ColorSquare } from "@/components/ColorSquare"; export function ReportEvents() { const [isCreating, setIsCreating] = useState(false); @@ -42,9 +43,9 @@ export function ReportEvents() { return (
-
+ {event.id} -
+ { diff --git a/apps/web/src/modals/AddClient.tsx b/apps/web/src/modals/AddClient.tsx index 508e9281..cdb43608 100644 --- a/apps/web/src/modals/AddClient.tsx +++ b/apps/web/src/modals/AddClient.tsx @@ -123,8 +123,6 @@ export default function CreateProject() { { - console.log("wtf?", value); - field.onChange(value); }} items={ diff --git a/apps/web/src/pages/[organization]/[project]/[dashboard].tsx b/apps/web/src/pages/[organization]/[project]/[dashboard].tsx index b1da1c45..8134ed69 100644 --- a/apps/web/src/pages/[organization]/[project]/[dashboard].tsx +++ b/apps/web/src/pages/[organization]/[project]/[dashboard].tsx @@ -1,12 +1,12 @@ -import { ReportLineChart } from "@/components/report/chart/ReportLineChart"; import { MainLayout } from "@/components/layouts/MainLayout"; import { Container } from "@/components/Container"; import { api } from "@/utils/api"; import Link from "next/link"; import { PageTitle } from "@/components/PageTitle"; import { useOrganizationParams } from "@/hooks/useOrganizationParams"; -import { Suspense } from "react"; +import { Suspense, useMemo } from "react"; import { createServerSideProps } from "@/server/getServerSideProps"; +import { Chart } from "@/components/report/chart"; export const getServerSideProps = createServerSideProps() @@ -19,7 +19,9 @@ export default function Dashboard() { }); const dashboard = query.data?.dashboard ?? null; - const reports = query.data?.reports ?? []; + const reports = useMemo(() => { + return query.data?.reports ?? []; + }, [query]) return ( @@ -38,8 +40,8 @@ export default function Dashboard() { > {report.name} -
- +
+
))} diff --git a/apps/web/src/pages/[organization]/reports/index.tsx b/apps/web/src/pages/[organization]/reports/index.tsx index 5ccfc1df..85a6b6c7 100644 --- a/apps/web/src/pages/[organization]/reports/index.tsx +++ b/apps/web/src/pages/[organization]/reports/index.tsx @@ -1,5 +1,5 @@ import { ReportSidebar } from "@/components/report/sidebar/ReportSidebar"; -import { ReportLineChart } from "@/components/report/chart/ReportLineChart"; +import { Chart } from "@/components/report/chart"; import { useDispatch, useSelector } from "@/redux"; import { MainLayout } from "@/components/layouts/MainLayout"; import { ReportDateRange } from "@/components/report/ReportDateRange"; @@ -9,6 +9,7 @@ import { useReportId } from "@/components/report/hooks/useReportId"; import { api } from "@/utils/api"; import { useRouterBeforeLeave } from "@/hooks/useRouterBeforeLeave"; import { createServerSideProps } from "@/server/getServerSideProps"; +import { ReportChartType } from "@/components/report/ReportChartType"; export const getServerSideProps = createServerSideProps() @@ -27,7 +28,7 @@ export default function Page() { // Set report if reportId exists useEffect(() => { - if(reportId && reportQuery.data) { + if(reportId && reportQuery.data) { dispatch(setReport(reportQuery.data)) } }, [reportId, reportQuery.data, dispatch]) @@ -40,9 +41,10 @@ export default function Page() {
+
- +
); diff --git a/apps/web/src/pages/_app.tsx b/apps/web/src/pages/_app.tsx index ee870249..53c41514 100644 --- a/apps/web/src/pages/_app.tsx +++ b/apps/web/src/pages/_app.tsx @@ -27,8 +27,6 @@ const MixanApp: AppType<{ session: Session | null }> = ({ Component, pageProps: { session, ...pageProps }, }) => { - console.log('session',session); - return (
diff --git a/apps/web/src/server/api/routers/chart.ts b/apps/web/src/server/api/routers/chart.ts index ee5fe441..8d6638bc 100644 --- a/apps/web/src/server/api/routers/chart.ts +++ b/apps/web/src/server/api/routers/chart.ts @@ -1,7 +1,7 @@ import { z } from "zod"; import { createTRPCRouter, protectedProcedure } from "@/server/api/trpc"; import { db } from "@/server/db"; -import { pipe, sort, uniq } from "ramda"; +import { last, pipe, sort, uniq } from "ramda"; import { toDots } from "@/utils/object"; import { zChartInput } from "@/utils/validation"; import { type IChartInput, type IChartEvent } from "@/types"; @@ -13,15 +13,14 @@ export const config = { }; export const chartRouter = createTRPCRouter({ - events: protectedProcedure - .query(async () => { - const events = await db.event.findMany({ - take: 500, - distinct: ["name"], - }); + events: protectedProcedure.query(async () => { + const events = await db.event.findMany({ + take: 500, + distinct: ["name"], + }); - return events; - }), + return events; + }), properties: protectedProcedure .input(z.object({ event: z.string() }).optional()) @@ -106,12 +105,37 @@ export const chartRouter = createTRPCRouter({ ); } - return { - series: series.sort((a, b) => { + const sorted = [...series].sort((a, b) => { + if (input.chartType === "linear") { const sumA = a.data.reduce((acc, item) => acc + item.count, 0); const sumB = b.data.reduce((acc, item) => acc + item.count, 0); return sumB - sumA; - }), + } else { + return b.totalCount - a.totalCount; + } + }); + + const meta = { + highest: sorted[0]?.totalCount ?? 0, + lowest: last(sorted)?.totalCount ?? 0, + }; + + return { + events: Object.entries(series.reduce((acc, item) => { + if(acc[item.event.id]) { + acc[item.event.id] += item.totalCount; + } else { + acc[item.event.id] = item.totalCount; + } + return acc + }, {} as Record)).map(([id, count]) => ({ + count, + ...events.find((event) => event.id === id)!, + })), + series: sorted.map((item) => ({ + ...item, + meta, + })), }; }), }); @@ -169,7 +193,7 @@ async function getChartData({ endDate, }: { event: IChartEvent; -} & Omit) { +} & Omit) { const select = []; const where = []; const groupBy = []; @@ -259,30 +283,34 @@ async function getChartData({ } if (startDate) { - where.push(`"createdAt" >= '${startDate.toISOString()}'`); + where.push(`"createdAt" >= '${startDate}'`); } if (endDate) { - where.push(`"createdAt" <= '${endDate.toISOString()}'`); + where.push(`"createdAt" <= '${endDate}'`); } - const sql = ` - SELECT ${select.join(", ")} - FROM events - WHERE ${where.join(" AND ")} - GROUP BY ${groupBy.join(", ")} - ORDER BY ${orderBy.join(", ")} - `; + const sql = [ + `SELECT ${select.join(", ")}`, + `FROM events`, + `WHERE ${where.join(" AND ")}`, + ]; - const result = await db.$queryRawUnsafe(sql); + if (groupBy.length) { + sql.push(`GROUP BY ${groupBy.join(", ")}`); + } + if (orderBy.length) { + sql.push(`ORDER BY ${orderBy.join(", ")}`); + } + + const result = await db.$queryRawUnsafe(sql.join("\n")); // group by sql label const series = result.reduce( (acc, item) => { // item.label can be null when using breakdowns on a property // that doesn't exist on all events - // fallback on event legend - const label = item.label?.trim() ?? getEventLegend(event); + const label = item.label?.trim() ?? event.id; if (label) { if (acc[label]) { acc[label]?.push(item); @@ -301,18 +329,26 @@ async function getChartData({ return Object.keys(series).map((key) => { const legend = breakdowns.length ? key : getEventLegend(event); const data = series[key] ?? []; + return { name: legend, + event: { + id: event.id, + name: event.name, + }, totalCount: getTotalCount(data), - data: fillEmptySpotsInTimeline(data, interval, startDate, endDate).map( - (item) => { - return { - label: legend, - count: item.count, - date: new Date(item.date).toISOString(), - }; - }, - ), + data: + chartType === "linear" + ? fillEmptySpotsInTimeline(data, interval, startDate, endDate).map( + (item) => { + return { + label: legend, + count: item.count, + date: new Date(item.date).toISOString(), + }; + }, + ) + : [], }; }); } @@ -320,8 +356,8 @@ async function getChartData({ function fillEmptySpotsInTimeline( items: ResultItem[], interval: string, - startDate: Date, - endDate: Date, + startDate: string, + endDate: string, ) { const result = []; const clonedStartDate = new Date(startDate); diff --git a/apps/web/src/server/api/routers/report.ts b/apps/web/src/server/api/routers/report.ts index 2dae9378..594a7e40 100644 --- a/apps/web/src/server/api/routers/report.ts +++ b/apps/web/src/server/api/routers/report.ts @@ -8,21 +8,42 @@ import { type IChartInput, type IChartBreakdown, type IChartEvent, + type IChartEventFilter, } from "@/types"; import { type Report as DbReport } from "@prisma/client"; import { getProjectBySlug } from "@/server/services/project.service"; import { getDashboardBySlug } from "@/server/services/dashboard.service"; +import { alphabetIds } from "@/utils/constants"; -function transform(report: DbReport): IChartInput & { id: string } { +function transformFilter(filter: Partial, index: number): IChartEventFilter { + return { + id: filter.id ?? alphabetIds[index]!, + name: filter.name ?? 'Unknown Filter', + operator: filter.operator ?? 'is', + value: typeof filter.value === 'string' ? [filter.value] : filter.value ?? [], + } +} + +function transformEvent(event: Partial, index: number): IChartEvent { + return { + segment: event.segment ?? 'event', + filters: (event.filters ?? []).map(transformFilter), + id: event.id ?? alphabetIds[index]!, + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + name: event.name || 'Untitled', + } +} + +function transformReport(report: DbReport): IChartInput & { id: string } { return { id: report.id, - events: report.events as IChartEvent[], + events: (report.events as IChartEvent[]).map(transformEvent), breakdowns: report.breakdowns as IChartBreakdown[], - startDate: getDaysOldDate(report.range), - endDate: new Date(), + startDate: getDaysOldDate(report.range).toISOString(), + endDate: new Date().toISOString(), chartType: report.chart_type, interval: report.interval, - name: report.name, + name: report.name || 'Untitled', }; } @@ -40,7 +61,7 @@ export const reportRouter = createTRPCRouter({ id, }, }) - .then(transform); + .then(transformReport); }), list: protectedProcedure .input( @@ -60,7 +81,7 @@ export const reportRouter = createTRPCRouter({ }); return { - reports: reports.map(transform), + reports: reports.map(transformReport), dashboard, } }), @@ -82,7 +103,7 @@ export const reportRouter = createTRPCRouter({ interval: report.interval, breakdowns: report.breakdowns, chart_type: report.chartType, - range: dateDifferanceInDays(report.endDate, report.startDate), + range: dateDifferanceInDays(new Date(report.endDate), new Date(report.startDate)), }, }); }), @@ -108,7 +129,7 @@ export const reportRouter = createTRPCRouter({ interval: report.interval, breakdowns: report.breakdowns, chart_type: report.chartType, - range: dateDifferanceInDays(report.endDate, report.startDate), + range: dateDifferanceInDays(new Date(report.endDate), new Date(report.startDate)), }, }); }), diff --git a/apps/web/src/server/db.ts b/apps/web/src/server/db.ts index 47fa369c..ebdfa0e4 100644 --- a/apps/web/src/server/db.ts +++ b/apps/web/src/server/db.ts @@ -10,7 +10,7 @@ export const db = globalForPrisma.prisma ?? new PrismaClient({ log: - env.NODE_ENV === "development" ? ["query", "error", "warn"] : ["error"], + ['error'] }); if (env.NODE_ENV !== "production") globalForPrisma.prisma = db; diff --git a/apps/web/src/styles/globals.css b/apps/web/src/styles/globals.css index c5b39331..94225f1d 100644 --- a/apps/web/src/styles/globals.css +++ b/apps/web/src/styles/globals.css @@ -1,7 +1,7 @@ @tailwind base; @tailwind components; @tailwind utilities; - + @layer base { :root { --background: 0 0% 100%; @@ -9,63 +9,63 @@ --card: 0 0% 100%; --card-foreground: 222.2 84% 4.9%; - + --popover: 0 0% 100%; --popover-foreground: 222.2 84% 4.9%; - + --primary: 222.2 47.4% 11.2%; --primary-foreground: 210 40% 98%; - + --secondary: 210 40% 96.1%; --secondary-foreground: 222.2 47.4% 11.2%; - + --muted: 210 40% 96.1%; --muted-foreground: 215.4 16.3% 46.9%; - + --accent: 210 40% 96.1%; --accent-foreground: 222.2 47.4% 11.2%; - + --destructive: 0 84.2% 60.2%; --destructive-foreground: 210 40% 98%; --border: 214.3 31.8% 91.4%; --input: 214.3 31.8% 91.4%; --ring: 222.2 84% 4.9%; - + --radius: 0.5rem; } - + .dark { --background: 222.2 84% 4.9%; --foreground: 210 40% 98%; - + --card: 222.2 84% 4.9%; --card-foreground: 210 40% 98%; - + --popover: 222.2 84% 4.9%; --popover-foreground: 210 40% 98%; - + --primary: 210 40% 98%; --primary-foreground: 222.2 47.4% 11.2%; - + --secondary: 217.2 32.6% 17.5%; --secondary-foreground: 210 40% 98%; - + --muted: 217.2 32.6% 17.5%; --muted-foreground: 215 20.2% 65.1%; - + --accent: 217.2 32.6% 17.5%; --accent-foreground: 210 40% 98%; - + --destructive: 0 62.8% 30.6%; --destructive-foreground: 210 40% 98%; - + --border: 217.2 32.6% 17.5%; --input: 217.2 32.6% 17.5%; --ring: 212.7 26.8% 83.9%; } } - + @layer base { * { @apply border-border; @@ -81,12 +81,86 @@ .h2 { @apply text-xl font-medium; } - + .h3 { @apply text-lg font-medium; } - + .h4 { @apply font-medium; } + + .ellipsis { + @apply overflow-hidden text-ellipsis whitespace-nowrap; + } + + .shine { + background-repeat: no-repeat; + background-position: + -120px -120px, + 0 0; + background-image: linear-gradient( + 0 0, + rgba(255, 255, 255, 0.2) 0%, + rgba(255, 255, 255, 0.2) 37%, + rgba(255, 255, 255, 0.8) 45%, + rgba(255, 255, 255, 0) 50% + ); + background-size: + 250% 250%, + 100% 100%; + transition: background-position 0s ease; + } + + .shine:hover { + background-position: + 0 0, + 0 0; + transition-duration: 0.5s; + } +} + +table { + @apply w-fit border border-border; +} + +table.mini { + @apply text-xs; +} + +th, +td { + @apply border border-border px-4 py-2; +} + +th { + /* relative is for resizing */ + @apply relative text-left font-medium; +} + +.resizer { + position: absolute; + right: 0; + top: 0; + height: 100%; + width: 5px; + background: rgba(0, 0, 0, 0.1); + cursor: col-resize; + user-select: none; + touch-action: none; +} + +.resizer.isResizing { + @apply bg-black; + opacity: 1; +} + +@media (hover: hover) { + .resizer { + opacity: 0; + } + + *:hover > .resizer { + opacity: 1; + } } diff --git a/apps/web/src/types/index.ts b/apps/web/src/types/index.ts index c9a11c16..31d15340 100644 --- a/apps/web/src/types/index.ts +++ b/apps/web/src/types/index.ts @@ -1,4 +1,5 @@ -import { type zTimeInterval, type zChartBreakdown, type zChartEvent, type zChartInput } from "@/utils/validation"; +import { type RouterOutputs } from "@/utils/api"; +import { type zTimeInterval, type zChartBreakdown, type zChartEvent, type zChartInput, type zChartType } from "@/utils/validation"; import { type Client, type Project } from "@prisma/client"; import { type TooltipProps } from "recharts"; import { type z } from "zod"; @@ -11,14 +12,14 @@ export type IChartEventFilter = IChartEvent['filters'][number] export type IChartEventFilterValue = IChartEvent['filters'][number]['value'][number] export type IChartBreakdown = z.infer export type IInterval = z.infer - +export type IChartType = z.infer +export type IChartData = RouterOutputs["chart"]["chart"]; export type IToolTipProps = Omit, 'payload'> & { payload?: Array } - export type IProject = Project export type IClientWithProject = Client & { project: IProject -} \ No newline at end of file +} diff --git a/apps/web/src/utils/constants.ts b/apps/web/src/utils/constants.ts index 525e45a4..53a7ab56 100644 --- a/apps/web/src/utils/constants.ts +++ b/apps/web/src/utils/constants.ts @@ -1,7 +1,22 @@ - export const operators = { is: "Is", isNot: "Is not", - contains: 'Contains', - doesNotContain: 'Not contains', -} \ No newline at end of file + contains: "Contains", + doesNotContain: "Not contains", +}; + +export const chartTypes = { + linear: "Linear", + bar: "Bar", + pie: "Pie", + metric: "Metric", + area: "Area", +}; + +export const intervals = { + day: "Day", + hour: "Hour", + month: "Month", +}; + +export const alphabetIds = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"] as const; \ No newline at end of file diff --git a/apps/web/src/utils/validation.ts b/apps/web/src/utils/validation.ts index 59192e9d..401b0984 100644 --- a/apps/web/src/utils/validation.ts +++ b/apps/web/src/utils/validation.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { operators } from "./constants"; +import { operators, chartTypes, intervals } from "./constants"; function objectToZodEnums ( obj: Record ): [ K, ...K[] ] { const [ firstKey, ...otherKeys ] = Object.keys( obj ) as K[] @@ -33,14 +33,14 @@ export const zChartBreakdown = z.object({ export const zChartEvents = z.array(zChartEvent); export const zChartBreakdowns = z.array(zChartBreakdown); -export const zChartType = z.enum(["linear", "bar", "pie", "metric", "area"]); +export const zChartType = z.enum(objectToZodEnums(chartTypes)); -export const zTimeInterval = z.enum(["day", "hour", "month"]); +export const zTimeInterval = z.enum(objectToZodEnums(intervals)); export const zChartInput = z.object({ name: z.string(), - startDate: z.date(), - endDate: z.date(), + startDate: z.string(), + endDate: z.string(), chartType: zChartType, interval: zTimeInterval, events: zChartEvents, diff --git a/bun.lockb b/bun.lockb index 4a11c745cb7c08a6f17d3b57f665e668272d7d90..b2bea5c7c3b02df1ecbe5deaece3e9208bdbc8ca 100755 GIT binary patch delta 110807 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 delta 120965 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 V9PKxm;Z3UVu6PzCeb-#m{}0c|Im-Y5