From 206ae54dea3b36a0c484f23723b722eb46246880 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl-Gerhard=20Lindesva=CC=88rd?= Date: Tue, 17 Oct 2023 21:47:37 +0200 Subject: [PATCH] gui: work in progress --- apps/web/.eslintrc.cjs | 5 + apps/web/components.json | 16 + apps/web/package.json | 16 + .../web/src/components/ReportFilterPicker.tsx | 124 ++++++ .../report/chart/ReportLineChart.tsx | 90 +++++ .../report/chart/ReportLineChartTooltop.tsx | 54 +++ .../components/report/chart/ReportTable.tsx | 72 ++++ apps/web/src/components/report/reportSlice.ts | 132 +++++++ .../report/sidebar/ReportBreakdownMore.tsx | 48 +++ .../report/sidebar/ReportBreakdowns.tsx | 77 ++++ .../report/sidebar/ReportEventFilters.tsx | 181 +++++++++ .../report/sidebar/ReportEventMore.tsx | 68 ++++ .../report/sidebar/ReportEvents.tsx | 85 +++++ .../report/sidebar/ReportSidebar.tsx | 11 + apps/web/src/components/ui/RenderDots.tsx | 21 ++ apps/web/src/components/ui/badge.tsx | 36 ++ apps/web/src/components/ui/button.tsx | 56 +++ apps/web/src/components/ui/checkbox.tsx | 28 ++ apps/web/src/components/ui/combobox-multi.tsx | 118 ++++++ apps/web/src/components/ui/combobox.tsx | 84 +++++ apps/web/src/components/ui/command.tsx | 153 ++++++++ apps/web/src/components/ui/dialog.tsx | 120 ++++++ apps/web/src/components/ui/dropdown-menu.tsx | 198 ++++++++++ apps/web/src/components/ui/input.tsx | 24 ++ apps/web/src/components/ui/popover.tsx | 29 ++ apps/web/src/components/ui/radio-group.tsx | 32 ++ apps/web/src/hooks/useFormatDateInterval.ts | 27 ++ apps/web/src/pages/_app.tsx | 6 +- apps/web/src/pages/api/sdk/events.ts | 2 +- .../api/sdk/profiles/[profileId]/decrement.ts | 3 +- .../api/sdk/profiles/[profileId]/increment.ts | 3 +- .../api/sdk/profiles/[profileId]/index.ts | 6 +- apps/web/src/pages/api/sdk/profiles/index.ts | 2 +- apps/web/src/pages/api/setup.ts | 4 +- apps/web/src/pages/index.tsx | 123 +++--- apps/web/src/redux/index.ts | 18 + apps/web/src/server/api/root.ts | 2 + apps/web/src/server/api/routers/chartMeta.ts | 352 ++++++++++++++++++ apps/web/src/server/api/routers/example.ts | 4 +- apps/web/src/server/auth.ts | 5 +- apps/web/src/server/exceptions.ts | 12 +- apps/web/src/services/profile.service.ts | 3 +- apps/web/src/styles/globals.css | 73 ++++ apps/web/src/types/index.ts | 13 + apps/web/src/utils/cn.ts | 6 + apps/web/src/utils/date.ts | 0 apps/web/src/utils/object.ts | 16 + apps/web/src/utils/theme.ts | 13 + apps/web/src/utils/validation.ts | 25 ++ apps/web/tailwind.config.js | 100 +++++ apps/web/tailwind.config.ts | 21 +- bun.lockb | Bin 35544 -> 452496 bytes packages/types/index.ts | 3 +- 53 files changed, 2632 insertions(+), 88 deletions(-) create mode 100644 apps/web/components.json create mode 100644 apps/web/src/components/ReportFilterPicker.tsx create mode 100644 apps/web/src/components/report/chart/ReportLineChart.tsx create mode 100644 apps/web/src/components/report/chart/ReportLineChartTooltop.tsx create mode 100644 apps/web/src/components/report/chart/ReportTable.tsx create mode 100644 apps/web/src/components/report/reportSlice.ts create mode 100644 apps/web/src/components/report/sidebar/ReportBreakdownMore.tsx create mode 100644 apps/web/src/components/report/sidebar/ReportBreakdowns.tsx create mode 100644 apps/web/src/components/report/sidebar/ReportEventFilters.tsx create mode 100644 apps/web/src/components/report/sidebar/ReportEventMore.tsx create mode 100644 apps/web/src/components/report/sidebar/ReportEvents.tsx create mode 100644 apps/web/src/components/report/sidebar/ReportSidebar.tsx create mode 100644 apps/web/src/components/ui/RenderDots.tsx create mode 100644 apps/web/src/components/ui/badge.tsx create mode 100644 apps/web/src/components/ui/button.tsx create mode 100644 apps/web/src/components/ui/checkbox.tsx create mode 100644 apps/web/src/components/ui/combobox-multi.tsx create mode 100644 apps/web/src/components/ui/combobox.tsx create mode 100644 apps/web/src/components/ui/command.tsx create mode 100644 apps/web/src/components/ui/dialog.tsx create mode 100644 apps/web/src/components/ui/dropdown-menu.tsx create mode 100644 apps/web/src/components/ui/input.tsx create mode 100644 apps/web/src/components/ui/popover.tsx create mode 100644 apps/web/src/components/ui/radio-group.tsx create mode 100644 apps/web/src/hooks/useFormatDateInterval.ts create mode 100644 apps/web/src/redux/index.ts create mode 100644 apps/web/src/server/api/routers/chartMeta.ts create mode 100644 apps/web/src/types/index.ts create mode 100644 apps/web/src/utils/cn.ts create mode 100644 apps/web/src/utils/date.ts create mode 100644 apps/web/src/utils/object.ts create mode 100644 apps/web/src/utils/theme.ts create mode 100644 apps/web/src/utils/validation.ts create mode 100644 apps/web/tailwind.config.js diff --git a/apps/web/.eslintrc.cjs b/apps/web/.eslintrc.cjs index f15a4d58..41128c0f 100644 --- a/apps/web/.eslintrc.cjs +++ b/apps/web/.eslintrc.cjs @@ -15,6 +15,11 @@ const config = { // Feel free to reconfigure them to your own preference. "@typescript-eslint/array-type": "off", "@typescript-eslint/consistent-type-definitions": "off", + "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-unsafe-assignment": "off", + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/no-unsafe-argument": "off", "@typescript-eslint/consistent-type-imports": [ "warn", diff --git a/apps/web/components.json b/apps/web/components.json new file mode 100644 index 00000000..b25b509f --- /dev/null +++ b/apps/web/components.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "tailwind.config.js", + "css": "src/styles/globals.css", + "baseColor": "slate", + "cssVariables": true + }, + "aliases": { + "components": "@/components", + "utils": "@/utils/cn" + } +} \ No newline at end of file diff --git a/apps/web/package.json b/apps/web/package.json index de4ba97a..8aa78d5f 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -14,6 +14,12 @@ "@mixan/types": "^0.0.2-alpha", "@next-auth/prisma-adapter": "^1.0.7", "@prisma/client": "^5.1.1", + "@radix-ui/react-checkbox": "^1.0.4", + "@radix-ui/react-dialog": "^1.0.5", + "@radix-ui/react-dropdown-menu": "^2.0.6", + "@radix-ui/react-popover": "^1.0.7", + "@radix-ui/react-slot": "^1.0.2", + "@reduxjs/toolkit": "^1.9.7", "@t3-oss/env-nextjs": "^0.7.0", "@tanstack/react-query": "^4.32.6", "@trpc/client": "^10.37.1", @@ -21,18 +27,28 @@ "@trpc/react-query": "^10.37.1", "@trpc/server": "^10.37.1", "bcrypt": "^5.1.1", + "class-variance-authority": "^0.7.0", + "clsx": "^2.0.0", + "cmdk": "^0.2.0", + "lucide-react": "^0.286.0", "next": "^13.5.4", "next-auth": "^4.23.0", + "ramda": "^0.29.1", "random-animal-name": "^0.1.1", "react": "18.2.0", "react-dom": "18.2.0", + "react-redux": "^8.1.3", + "recharts": "^2.8.0", "superjson": "^1.13.1", + "tailwind-merge": "^1.14.0", + "tailwindcss-animate": "^1.0.7", "zod": "^3.22.4" }, "devDependencies": { "@types/bcrypt": "^5.0.0", "@types/eslint": "^8.44.2", "@types/node": "^18.16.0", + "@types/ramda": "^0.29.6", "@types/react": "^18.2.20", "@types/react-dom": "^18.2.7", "@typescript-eslint/eslint-plugin": "^6.3.0", diff --git a/apps/web/src/components/ReportFilterPicker.tsx b/apps/web/src/components/ReportFilterPicker.tsx new file mode 100644 index 00000000..cb6d8ed4 --- /dev/null +++ b/apps/web/src/components/ReportFilterPicker.tsx @@ -0,0 +1,124 @@ +import { + Cloud, + CreditCard, + Github, + Keyboard, + LifeBuoy, + LogOut, + Mail, + MessageSquare, + Plus, + PlusCircle, + Settings, + User, + UserPlus, + Users, +} from "lucide-react" + +import { Button } from "@/components/ui/button" +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuPortal, + DropdownMenuSeparator, + DropdownMenuShortcut, + DropdownMenuSub, + DropdownMenuSubContent, + DropdownMenuSubTrigger, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu" +import { useState } from "react" + +export function ReportFilterPicker() { + const [open, setOpen] = useState(false) + return ( + + + + + + My Account + + + + + Profile + ⇧⌘P + + + + Billing + ⌘B + + + + Settings + ⌘S + + + + Keyboard shortcuts + ⌘K + + + + + + + Team + + + + + Invite users + + + + + + Email + + + + Message + + + + + More... + + + + + + + New Team + ⌘+T + + + + + + GitHub + + + + Support + + + + API + + + + + Log out + ⇧⌘Q + + + + ) +} \ No newline at end of file diff --git a/apps/web/src/components/report/chart/ReportLineChart.tsx b/apps/web/src/components/report/chart/ReportLineChart.tsx new file mode 100644 index 00000000..bf20dc1f --- /dev/null +++ b/apps/web/src/components/report/chart/ReportLineChart.tsx @@ -0,0 +1,90 @@ +import { api } from "@/utils/api"; +import { + CartesianGrid, + Legend, + Line, + LineChart, + Tooltip, + XAxis, + YAxis, +} from "recharts"; +import { ReportLineChartTooltip } from "./ReportLineChartTooltop"; +import { useFormatDateInterval } from "@/hooks/useFormatDateInterval"; +import { + type IChartBreakdown, + type IChartEvent, + type IInterval, +} from "@/types"; +import { getChartColor } from "@/utils/theme"; +import { ReportTable } from "./ReportTable"; + +export function ReportLineChart({ + interval, + startDate, + endDate, + events, + breakdowns, +}: { + interval: IInterval; + startDate: Date; + endDate: Date; + events: IChartEvent[]; + breakdowns: IChartBreakdown[]; +}) { + const chart = api.chartMeta.chart.useQuery( + { + interval, + chartType: "linear", + startDate, + endDate, + events, + breakdowns, + }, + { + enabled: events.length > 0, + }, + ); + + const formatDate = useFormatDateInterval(interval); + + return ( + <> + {chart.isSuccess && chart.data?.series?.[0]?.data && ( + <> + + + + } /> + {/* */} + + { + return formatDate(m); + }} + tickLine={false} + allowDuplicatedCategory={false} + /> + {chart.data?.series.slice(0, 5).map((serie, index) => { + const key = serie.name; + const strokeColor = getChartColor(index) + return ( + + ); + })} + + + + )} + + ); +} diff --git a/apps/web/src/components/report/chart/ReportLineChartTooltop.tsx b/apps/web/src/components/report/chart/ReportLineChartTooltop.tsx new file mode 100644 index 00000000..a45208c8 --- /dev/null +++ b/apps/web/src/components/report/chart/ReportLineChartTooltop.tsx @@ -0,0 +1,54 @@ +import { type IToolTipProps } from "@/types"; + +type ReportLineChartTooltipProps = IToolTipProps<{ + color: string; + value: number; + payload: { + date: Date; + count: number; + label: string; + }; +}> + +export function ReportLineChartTooltip({ + active, + payload, +}: ReportLineChartTooltipProps) { + if (!active || !payload) { + return null; + } + + if (!payload.length) { + return null; + } + + + const limit = 3; + const sorted = payload.slice(0).sort((a, b) => b.value - a.value); + const visible = sorted.slice(0, limit); + const hidden = sorted.slice(limit); + + return ( +
+ {visible.map((item) => { + return ( +
+
+
+
+ {item.payload.label} +
+
{item.payload.count}
+
+
+ ); + })} + {hidden.length > 0 && ( +
and {hidden.length} more...
+ )} +
+ ); +} diff --git a/apps/web/src/components/report/chart/ReportTable.tsx b/apps/web/src/components/report/chart/ReportTable.tsx new file mode 100644 index 00000000..878e6e12 --- /dev/null +++ b/apps/web/src/components/report/chart/ReportTable.tsx @@ -0,0 +1,72 @@ +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"; + +export function ReportTable({ + data, +}: { + data: RouterOutputs["chartMeta"]["chart"]; +}) { + const interval = useSelector((state) => state.report.interval); + const formatDate = useFormatDateInterval(interval); + + return ( +
+ {/* Labels */} +
+
Name
+ {data.series.map((serie, index) => { + const checked = index < 5; + return ( +
+ + {serie.name} +
+ ); + })} +
+ + {/* ScrollView for all values */} +
+ {/* Header */} +
+ {data.series[0]?.data.map((serie, index) => ( +
+ {formatDate(serie.date)} +
+ ))} +
+ + {/* Values */} + {data.series.map((serie, index) => { + return ( +
+ {serie.data.map((item) => { + return ( +
+ {item.count} +
+ ); + })} +
+ ); + })} +
+
+ ); +} diff --git a/apps/web/src/components/report/reportSlice.ts b/apps/web/src/components/report/reportSlice.ts new file mode 100644 index 00000000..43acab8d --- /dev/null +++ b/apps/web/src/components/report/reportSlice.ts @@ -0,0 +1,132 @@ +import { + type IChartBreakdown, + type IChartEvent, + type IInterval, +} from "@/types"; +import { type PayloadAction, createSlice } from "@reduxjs/toolkit"; + +type InitialState = { + events: IChartEvent[]; + breakdowns: IChartBreakdown[]; + interval: IInterval; + startDate: Date; + endDate: Date; +}; + +// First approach: define the initial state using that type +const initialState: InitialState = { + startDate: new Date(Date.now() - 1000 * 60 * 60 * 24 * 7), + endDate: new Date(), + interval: "day", + breakdowns: [ + { + id: "A", + name: "properties.params.title", + }, + ], + events: [ + { + id: "A", + displayName: "screen_view (0)", + name: "screen_view", + filters: [ + { + id: "1", + name: "properties.route", + value: "RecipeDetails", + }, + ], + }, + ], +}; + +const IDS = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"] as const; + +export const reportSlice = createSlice({ + name: "counter", + initialState, + reducers: { + // Events + addEvent: (state, action: PayloadAction>) => { + state.events.push({ + id: IDS[state.events.length]!, + ...action.payload, + }); + }, + removeEvent: ( + state, + action: PayloadAction<{ + id: string; + }>, + ) => { + state.events = state.events.filter( + (event) => event.id !== action.payload.id, + ); + }, + changeEvent: (state, action: PayloadAction) => { + state.events = state.events.map((event) => { + if (event.id === action.payload.id) { + return action.payload; + } + return event; + }); + }, + + // Breakdowns + addBreakdown: ( + state, + action: PayloadAction>, + ) => { + state.breakdowns.push({ + id: IDS[state.breakdowns.length]!, + ...action.payload, + }); + }, + removeBreakdown: ( + state, + action: PayloadAction<{ + id: string; + }>, + ) => { + state.breakdowns = state.breakdowns.filter( + (event) => event.id !== action.payload.id, + ); + }, + changeBreakdown: (state, action: PayloadAction) => { + state.breakdowns = state.breakdowns.map((breakdown) => { + if (breakdown.id === action.payload.id) { + return action.payload; + } + return breakdown; + }); + }, + + // Interval + changeInterval: (state, action: PayloadAction) => { + state.interval = action.payload; + }, + + // Date range + changeStartDate: (state, action: PayloadAction) => { + state.startDate = action.payload; + }, + + // Date range + changeEndDate: (state, action: PayloadAction) => { + state.endDate = action.payload; + }, + }, +}); + +// Action creators are generated for each case reducer function +export const { + addEvent, + removeEvent, + changeEvent, + addBreakdown, + removeBreakdown, + changeBreakdown, + changeInterval, +} = reportSlice.actions; + +export default reportSlice.reducer; diff --git a/apps/web/src/components/report/sidebar/ReportBreakdownMore.tsx b/apps/web/src/components/report/sidebar/ReportBreakdownMore.tsx new file mode 100644 index 00000000..324baaf1 --- /dev/null +++ b/apps/web/src/components/report/sidebar/ReportBreakdownMore.tsx @@ -0,0 +1,48 @@ +import * as React from "react" +import { Filter, MoreHorizontal, Tags, Trash } from "lucide-react" + +import { Button } from "@/components/ui/button" +import { + Command, + CommandEmpty, + CommandGroup, + CommandInput, + CommandItem, + CommandList, +} from "@/components/ui/command" +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuShortcut, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu" + +export type ReportBreakdownMoreProps = { + onClick: (action: 'remove') => void +} + +export function ReportBreakdownMore({ onClick }: ReportBreakdownMoreProps) { + const [open, setOpen] = React.useState(false) + + return ( + + + + + + + onClick('remove')}> + + Delete + ⌘⌫ + + + + + ) +} diff --git a/apps/web/src/components/report/sidebar/ReportBreakdowns.tsx b/apps/web/src/components/report/sidebar/ReportBreakdowns.tsx new file mode 100644 index 00000000..e03e7947 --- /dev/null +++ b/apps/web/src/components/report/sidebar/ReportBreakdowns.tsx @@ -0,0 +1,77 @@ +import { api } from "@/utils/api"; +import { Combobox } from "@/components/ui/combobox"; +import { useDispatch, useSelector } from "@/redux"; +import { addBreakdown, changeBreakdown, removeBreakdown } from "../reportSlice"; +import { type ReportEventMoreProps } from "./ReportEventMore"; +import { type IChartBreakdown } from "@/types"; +import { ReportBreakdownMore } from "./ReportBreakdownMore"; + +export function ReportBreakdowns() { + const selectedBreakdowns = useSelector((state) => state.report.breakdowns); + const dispatch = useDispatch(); + const propertiesQuery = api.chartMeta.properties.useQuery(); + const propertiesCombobox = (propertiesQuery.data ?? []).map((item) => ({ + value: item, + label: item, + })); + + const handleMore = (breakdown: IChartBreakdown) => { + const callback: ReportEventMoreProps["onClick"] = (action) => { + switch (action) { + case "remove": { + return dispatch(removeBreakdown(breakdown)); + } + } + }; + + return callback; + }; + + return ( +
+

Breakdown

+
+ {selectedBreakdowns.map((item, index) => { + return ( +
+
+
+ {index} +
+ { + dispatch( + changeBreakdown({ + ...item, + name: value, + }), + ); + }} + items={propertiesCombobox} + placeholder="Select..." + /> + +
+
+ ); + })} + + {selectedBreakdowns.length === 0 && ( + { + dispatch( + addBreakdown({ + name: value, + }), + ); + }} + items={propertiesCombobox} + placeholder="Select breakdown" + /> + )} +
+
+ ); +} diff --git a/apps/web/src/components/report/sidebar/ReportEventFilters.tsx b/apps/web/src/components/report/sidebar/ReportEventFilters.tsx new file mode 100644 index 00000000..2aac0722 --- /dev/null +++ b/apps/web/src/components/report/sidebar/ReportEventFilters.tsx @@ -0,0 +1,181 @@ +import { api } from "@/utils/api"; +import { type IChartEvent } from "@/types"; +import { + CreditCard, + SlidersHorizontal, + Trash, +} from "lucide-react"; +import { + CommandDialog, + CommandEmpty, + CommandGroup, + CommandInput, + CommandItem, + CommandList, + CommandSeparator, +} from "@/components/ui/command"; +import { type Dispatch } from "react"; +import { RenderDots } from "@/components/ui/RenderDots"; +import { useDispatch } from "@/redux"; +import { changeEvent } from "../reportSlice"; +import { Combobox } from "@/components/ui/combobox"; +import { Button } from "@/components/ui/button"; + +type ReportEventFiltersProps = { + event: IChartEvent; + isCreating: boolean; + setIsCreating: Dispatch; +}; + +export function ReportEventFilters({ + event, + isCreating, + setIsCreating, +}: ReportEventFiltersProps) { + const dispatch = useDispatch(); + const propertiesQuery = api.chartMeta.properties.useQuery( + { + event: event.name, + }, + { + enabled: !!event.name, + }, + ); + + return ( +
+
+ {event.filters.map((filter) => { + return ; + })} + + + + + Such emptyness 🤨 + + {propertiesQuery.data?.map((item) => ( + { + setIsCreating(false); + dispatch( + changeEvent({ + ...event, + filters: [ + ...event.filters, + { + id: (event.filters.length + 1).toString(), + name: item, + value: "", + }, + ], + }), + ); + }} + > + + {item} + + ))} + + + + +
+
+ ); +} + +type FilterProps = { + event: IChartEvent; + filter: IChartEvent["filters"][number]; +}; + +function Filter({ filter, event }: FilterProps) { + const dispatch = useDispatch(); + const potentialValues = api.chartMeta.values.useQuery({ + event: event.name, + property: filter.name, + }); + + const valuesCombobox = + potentialValues.data?.values?.map((item) => ({ + value: item, + label: item, + })) ?? []; + + const removeFilter = () => { + dispatch( + changeEvent({ + ...event, + filters: event.filters.filter((item) => item.id !== filter.id), + }), + ); + }; + + const changeFilter = (value: string) => { + dispatch( + changeEvent({ + ...event, + filters: event.filters.map((item) => { + if (item.id === filter.id) { + return { + ...item, + value, + }; + } + + return item; + }), + }), + ); + }; + + return ( +
+
+
+ +
+ {filter.name} + +
+ {/* { + return fn(filter.value) + // + }} /> */} + + {/* { + dispatch( + changeEvent({ + ...event, + filters: event.filters.map((item) => { + if (item.id === filter.id) { + return { + ...item, + value: e.currentTarget.value, + }; + } + + return item; + }), + }), + ); + }} + /> */} +
+ ); +} diff --git a/apps/web/src/components/report/sidebar/ReportEventMore.tsx b/apps/web/src/components/report/sidebar/ReportEventMore.tsx new file mode 100644 index 00000000..e185ae9a --- /dev/null +++ b/apps/web/src/components/report/sidebar/ReportEventMore.tsx @@ -0,0 +1,68 @@ +import * as React from "react" +import { Filter, MoreHorizontal, Tags, Trash } from "lucide-react" + +import { Button } from "@/components/ui/button" +import { + Command, + CommandEmpty, + CommandGroup, + CommandInput, + CommandItem, + CommandList, +} from "@/components/ui/command" +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuShortcut, + DropdownMenuSub, + DropdownMenuSubContent, + DropdownMenuSubTrigger, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu" + +const labels = [ + "feature", + "bug", + "enhancement", + "documentation", + "design", + "question", + "maintenance", +] + +export type ReportEventMoreProps = { + onClick: (action: 'createFilter' | 'remove') => void +} + +export function ReportEventMore({ onClick }: ReportEventMoreProps) { + const [open, setOpen] = React.useState(false) + + return ( + + + + + + + + onClick('createFilter')}> + + Add filter + + + onClick('remove')}> + + Delete + ⌘⌫ + + + + + ) +} diff --git a/apps/web/src/components/report/sidebar/ReportEvents.tsx b/apps/web/src/components/report/sidebar/ReportEvents.tsx new file mode 100644 index 00000000..fb4971cd --- /dev/null +++ b/apps/web/src/components/report/sidebar/ReportEvents.tsx @@ -0,0 +1,85 @@ +import { api } from "@/utils/api"; +import { Combobox } from "@/components/ui/combobox"; +import { useDispatch, useSelector } from "@/redux"; +import { addEvent, changeEvent, removeEvent } from "../reportSlice"; +import { ReportEventFilters } from "./ReportEventFilters"; +import { useState } from "react"; +import { ReportEventMore, type ReportEventMoreProps } from "./ReportEventMore"; +import { type IChartEvent } from "@/types"; + +export function ReportEvents() { + const [isCreating, setIsCreating] = useState(false); + const selectedEvents = useSelector((state) => state.report.events); + const dispatch = useDispatch(); + const eventsQuery = api.chartMeta.events.useQuery(); + const eventsCombobox = (eventsQuery.data ?? []).map((item) => ({ + value: item.name, + label: item.name, + })); + + const handleMore = (event: IChartEvent) => { + const callback: ReportEventMoreProps["onClick"] = (action) => { + switch (action) { + case "createFilter": { + return setIsCreating(true); + } + case "remove": { + return dispatch(removeEvent(event)); + } + } + }; + + return callback; + }; + + return ( +
+

Events

+
+ {selectedEvents.map((event, index) => { + return ( +
+
+
{index}
+ { + dispatch( + changeEvent({ + ...event, + name: value, + filters: [], + }), + ); + }} + items={eventsCombobox} + placeholder="Select event" + /> + +
+ +
+ ); + })} + + { + dispatch( + addEvent({ + displayName: `${value} (${selectedEvents.length})`, + name: value, + filters: [], + }), + ); + }} + items={eventsCombobox} + placeholder="Select event" + /> +
+
+ ); +} diff --git a/apps/web/src/components/report/sidebar/ReportSidebar.tsx b/apps/web/src/components/report/sidebar/ReportSidebar.tsx new file mode 100644 index 00000000..8575adc2 --- /dev/null +++ b/apps/web/src/components/report/sidebar/ReportSidebar.tsx @@ -0,0 +1,11 @@ +import { ReportEvents } from "./ReportEvents"; +import { ReportBreakdowns } from "./ReportBreakdowns"; + +export function ReportSidebar() { + return ( +
+ + +
+ ); +} diff --git a/apps/web/src/components/ui/RenderDots.tsx b/apps/web/src/components/ui/RenderDots.tsx new file mode 100644 index 00000000..dfa8577c --- /dev/null +++ b/apps/web/src/components/ui/RenderDots.tsx @@ -0,0 +1,21 @@ +import { cn } from "@/utils/cn"; +import { ChevronRight } from "lucide-react"; + +interface RenderDotsProps extends React.HTMLAttributes { + children: string; +} + +export function RenderDots({ children, className, ...props }: RenderDotsProps) { + return ( +
+ {children.split(".").map((str, index) => { + return ( +
+ {index !== 0 && } + {str} +
+ ); + })} +
+ ); +} diff --git a/apps/web/src/components/ui/badge.tsx b/apps/web/src/components/ui/badge.tsx new file mode 100644 index 00000000..47bd6a63 --- /dev/null +++ b/apps/web/src/components/ui/badge.tsx @@ -0,0 +1,36 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/utils/cn" + +const badgeVariants = cva( + "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", + secondary: + "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", + destructive: + "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", + outline: "text-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +export interface BadgeProps + extends React.HTMLAttributes, + VariantProps {} + +function Badge({ className, variant, ...props }: BadgeProps) { + return ( +
+ ) +} + +export { Badge, badgeVariants } diff --git a/apps/web/src/components/ui/button.tsx b/apps/web/src/components/ui/button.tsx new file mode 100644 index 00000000..9c2f5082 --- /dev/null +++ b/apps/web/src/components/ui/button.tsx @@ -0,0 +1,56 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/utils/cn" + +const buttonVariants = cva( + "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground hover:bg-destructive/90", + outline: + "border border-input bg-background hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-10 px-4 py-2", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + icon: "h-10 w-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button" + return ( + + ) + } +) +Button.displayName = "Button" + +export { Button, buttonVariants } diff --git a/apps/web/src/components/ui/checkbox.tsx b/apps/web/src/components/ui/checkbox.tsx new file mode 100644 index 00000000..a1a5ef1e --- /dev/null +++ b/apps/web/src/components/ui/checkbox.tsx @@ -0,0 +1,28 @@ +import * as React from "react" +import * as CheckboxPrimitive from "@radix-ui/react-checkbox" +import { Check } from "lucide-react" + +import { cn } from "@/utils/cn" + +const Checkbox = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + + + +)) +Checkbox.displayName = CheckboxPrimitive.Root.displayName + +export { Checkbox } diff --git a/apps/web/src/components/ui/combobox-multi.tsx b/apps/web/src/components/ui/combobox-multi.tsx new file mode 100644 index 00000000..0d4fdf37 --- /dev/null +++ b/apps/web/src/components/ui/combobox-multi.tsx @@ -0,0 +1,118 @@ +import * as React from "react"; +import { X } from "lucide-react"; + +import { Badge } from "@/components/ui/badge"; +import { + Command, + CommandGroup, + CommandItem, +} from "@/components/ui/command"; +import { Command as CommandPrimitive } from "cmdk"; + +type Framework = Record<"value" | "label", string>; + +type ComboboxMultiProps = { + selected: Framework[]; + setSelected: React.Dispatch>; + items: Framework[]; +} + +export function ComboboxMulti({ items, selected, setSelected, ...props }: ComboboxMultiProps) { + const inputRef = React.useRef(null); + const [open, setOpen] = React.useState(false); + const [inputValue, setInputValue] = React.useState(""); + + const handleUnselect = React.useCallback((framework: Framework) => { + setSelected(prev => prev.filter(s => s.value !== framework.value)); + }, []); + + const handleKeyDown = React.useCallback((e: React.KeyboardEvent) => { + const input = inputRef.current + if (input) { + if (e.key === "Delete" || e.key === "Backspace") { + if (input.value === "") { + setSelected(prev => { + const newSelected = [...prev]; + newSelected.pop(); + return newSelected; + }) + } + } + // This is not a default behaviour of the field + if (e.key === "Escape") { + input.blur(); + } + } + }, []); + + const selectables = items.filter(framework => !selected.includes(framework)); + + return ( + +
+
+ {selected.map((framework) => { + return ( + + {framework.label} + + + ) + })} + {/* Avoid having the "Search" Icon */} + setOpen(false)} + onFocus={() => setOpen(true)} + placeholder="Select frameworks..." + className="ml-2 bg-transparent outline-none placeholder:text-muted-foreground flex-1" + /> +
+
+
+ {open && selectables.length > 0 ? +
+ + {selectables.map((framework) => { + return ( + { + e.preventDefault(); + e.stopPropagation(); + }} + onSelect={(value) => { + setInputValue("") + setSelected(prev => [...prev, framework]) + }} + className={"cursor-pointer"} + > + {framework.label} + + ); + })} + +
+ : null} +
+
+ ) +} \ No newline at end of file diff --git a/apps/web/src/components/ui/combobox.tsx b/apps/web/src/components/ui/combobox.tsx new file mode 100644 index 00000000..f16ff41c --- /dev/null +++ b/apps/web/src/components/ui/combobox.tsx @@ -0,0 +1,84 @@ +import * as React from "react"; +import { Check, ChevronsUpDown } from "lucide-react"; + +import { cn } from "@/utils/cn"; +import { Button } from "@/components/ui/button"; +import { + Command, + CommandEmpty, + CommandGroup, + CommandInput, + CommandItem, +} from "@/components/ui/command"; +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "@/components/ui/popover"; + +type ComboboxProps = { + placeholder: string; + items: Array<{ + value: string; + label: string; + }>; + value: string; + onChange: (value: string) => void; +}; + +export function Combobox({ + placeholder, + items, + value, + onChange, +}: ComboboxProps) { + const [open, setOpen] = React.useState(false); + + function find(value: string) { + return items.find( + (item) => item.value.toLowerCase() === value.toLowerCase(), + ); + } + + return ( + + + + + + + + Nothing selected + + {items.map((item) => ( + { + const value = find(currentValue)?.value ?? ""; + onChange(value); + setOpen(false); + }} + > + + {item.label} + + ))} + + + + + ); +} diff --git a/apps/web/src/components/ui/command.tsx b/apps/web/src/components/ui/command.tsx new file mode 100644 index 00000000..1131b8b7 --- /dev/null +++ b/apps/web/src/components/ui/command.tsx @@ -0,0 +1,153 @@ +import * as React from "react" +import { type DialogProps } from "@radix-ui/react-dialog" +import { Command as CommandPrimitive } from "cmdk" +import { Search } from "lucide-react" + +import { cn } from "@/utils/cn" +import { Dialog, DialogContent } from "@/components/ui/dialog" + +const Command = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +Command.displayName = CommandPrimitive.displayName + +type CommandDialogProps = DialogProps + +const CommandDialog = ({ children, ...props }: CommandDialogProps) => { + return ( + + + + {children} + + + + ) +} + +const CommandInput = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( +
+ + +
+)) + +CommandInput.displayName = CommandPrimitive.Input.displayName + +const CommandList = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) + +CommandList.displayName = CommandPrimitive.List.displayName + +const CommandEmpty = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>((props, ref) => ( + +)) + +CommandEmpty.displayName = CommandPrimitive.Empty.displayName + +const CommandGroup = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) + +CommandGroup.displayName = CommandPrimitive.Group.displayName + +const CommandSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +CommandSeparator.displayName = CommandPrimitive.Separator.displayName + +const CommandItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) + +CommandItem.displayName = CommandPrimitive.Item.displayName + +const CommandShortcut = ({ + className, + ...props +}: React.HTMLAttributes) => { + return ( + + ) +} +CommandShortcut.displayName = "CommandShortcut" + +export { + Command, + CommandDialog, + CommandInput, + CommandList, + CommandEmpty, + CommandGroup, + CommandItem, + CommandShortcut, + CommandSeparator, +} diff --git a/apps/web/src/components/ui/dialog.tsx b/apps/web/src/components/ui/dialog.tsx new file mode 100644 index 00000000..854dc00d --- /dev/null +++ b/apps/web/src/components/ui/dialog.tsx @@ -0,0 +1,120 @@ +import * as React from "react" +import * as DialogPrimitive from "@radix-ui/react-dialog" +import { X } from "lucide-react" + +import { cn } from "@/utils/cn" + +const Dialog = DialogPrimitive.Root + +const DialogTrigger = DialogPrimitive.Trigger + +const DialogPortal = DialogPrimitive.Portal + +const DialogClose = DialogPrimitive.Close + +const DialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogOverlay.displayName = DialogPrimitive.Overlay.displayName + +const DialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)) +DialogContent.displayName = DialogPrimitive.Content.displayName + +const DialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +DialogHeader.displayName = "DialogHeader" + +const DialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +DialogFooter.displayName = "DialogFooter" + +const DialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogTitle.displayName = DialogPrimitive.Title.displayName + +const DialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogDescription.displayName = DialogPrimitive.Description.displayName + +export { + Dialog, + DialogPortal, + DialogOverlay, + DialogClose, + DialogTrigger, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +} diff --git a/apps/web/src/components/ui/dropdown-menu.tsx b/apps/web/src/components/ui/dropdown-menu.tsx new file mode 100644 index 00000000..9db71511 --- /dev/null +++ b/apps/web/src/components/ui/dropdown-menu.tsx @@ -0,0 +1,198 @@ +import * as React from "react" +import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu" +import { Check, ChevronRight, Circle } from "lucide-react" + +import { cn } from "@/utils/cn" + +const DropdownMenu = DropdownMenuPrimitive.Root + +const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger + +const DropdownMenuGroup = DropdownMenuPrimitive.Group + +const DropdownMenuPortal = DropdownMenuPrimitive.Portal + +const DropdownMenuSub = DropdownMenuPrimitive.Sub + +const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup + +const DropdownMenuSubTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, children, ...props }, ref) => ( + + {children} + + +)) +DropdownMenuSubTrigger.displayName = + DropdownMenuPrimitive.SubTrigger.displayName + +const DropdownMenuSubContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DropdownMenuSubContent.displayName = + DropdownMenuPrimitive.SubContent.displayName + +const DropdownMenuContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, sideOffset = 4, ...props }, ref) => ( + + + +)) +DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName + +const DropdownMenuItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, ...props }, ref) => ( + +)) +DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName + +const DropdownMenuCheckboxItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, checked, ...props }, ref) => ( + + + + + + + {children} + +)) +DropdownMenuCheckboxItem.displayName = + DropdownMenuPrimitive.CheckboxItem.displayName + +const DropdownMenuRadioItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + {children} + +)) +DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName + +const DropdownMenuLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, ...props }, ref) => ( + +)) +DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName + +const DropdownMenuSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName + +const DropdownMenuShortcut = ({ + className, + ...props +}: React.HTMLAttributes) => { + return ( + + ) +} +DropdownMenuShortcut.displayName = "DropdownMenuShortcut" + +export { + DropdownMenu, + DropdownMenuTrigger, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuCheckboxItem, + DropdownMenuRadioItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuShortcut, + DropdownMenuGroup, + DropdownMenuPortal, + DropdownMenuSub, + DropdownMenuSubContent, + DropdownMenuSubTrigger, + DropdownMenuRadioGroup, +} diff --git a/apps/web/src/components/ui/input.tsx b/apps/web/src/components/ui/input.tsx new file mode 100644 index 00000000..2fa39d97 --- /dev/null +++ b/apps/web/src/components/ui/input.tsx @@ -0,0 +1,24 @@ +import * as React from "react" + +import { cn } from "@/utils/cn" + +export type InputProps = React.InputHTMLAttributes + +const Input = React.forwardRef( + ({ className, type, ...props }, ref) => { + return ( + + ) + } +) +Input.displayName = "Input" + +export { Input } diff --git a/apps/web/src/components/ui/popover.tsx b/apps/web/src/components/ui/popover.tsx new file mode 100644 index 00000000..1e5cdd97 --- /dev/null +++ b/apps/web/src/components/ui/popover.tsx @@ -0,0 +1,29 @@ +import * as React from "react" +import * as PopoverPrimitive from "@radix-ui/react-popover" + +import { cn } from "@/utils/cn" + +const Popover = PopoverPrimitive.Root + +const PopoverTrigger = PopoverPrimitive.Trigger + +const PopoverContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, align = "center", sideOffset = 4, ...props }, ref) => ( + + + +)) +PopoverContent.displayName = PopoverPrimitive.Content.displayName + +export { Popover, PopoverTrigger, PopoverContent } diff --git a/apps/web/src/components/ui/radio-group.tsx b/apps/web/src/components/ui/radio-group.tsx new file mode 100644 index 00000000..585853ae --- /dev/null +++ b/apps/web/src/components/ui/radio-group.tsx @@ -0,0 +1,32 @@ +import * as React from "react" + +import { cn } from "@/utils/cn" + +export type RadioGroupProps = React.InputHTMLAttributes +export type RadioGroupItemProps = React.InputHTMLAttributes + +const RadioGroup = React.forwardRef( + ({ className, type, ...props }, ref) => { + return ( +
+ ) + } +) + +const RadioGroupItem = React.forwardRef(({className, ...props}, ref) => { + return ( + -
- ); -} diff --git a/apps/web/src/redux/index.ts b/apps/web/src/redux/index.ts new file mode 100644 index 00000000..f0c5d4be --- /dev/null +++ b/apps/web/src/redux/index.ts @@ -0,0 +1,18 @@ +import reportSlice from '@/components/report/reportSlice' +import { configureStore } from '@reduxjs/toolkit' +import { type TypedUseSelectorHook, useDispatch as useBaseDispatch, useSelector as useBaseSelector } from 'react-redux' + +const store = configureStore({ + reducer: { + report: reportSlice + }, +}) + +export type RootState = ReturnType + +export type AppDispatch = typeof store.dispatch +export const useDispatch: () => AppDispatch = useBaseDispatch +export const useSelector: TypedUseSelectorHook = useBaseSelector + + +export default store \ No newline at end of file diff --git a/apps/web/src/server/api/root.ts b/apps/web/src/server/api/root.ts index 0a794406..423e5d52 100644 --- a/apps/web/src/server/api/root.ts +++ b/apps/web/src/server/api/root.ts @@ -1,5 +1,6 @@ import { exampleRouter } from "@/server/api/routers/example"; import { createTRPCRouter } from "@/server/api/trpc"; +import { chartMetaRouter } from "./routers/chartMeta"; /** * This is the primary router for your server. @@ -8,6 +9,7 @@ import { createTRPCRouter } from "@/server/api/trpc"; */ export const appRouter = createTRPCRouter({ example: exampleRouter, + chartMeta: chartMetaRouter }); // export type definition of API diff --git a/apps/web/src/server/api/routers/chartMeta.ts b/apps/web/src/server/api/routers/chartMeta.ts new file mode 100644 index 00000000..c49a7672 --- /dev/null +++ b/apps/web/src/server/api/routers/chartMeta.ts @@ -0,0 +1,352 @@ +import { z } from "zod"; + +import { createTRPCRouter, protectedProcedure } from "@/server/api/trpc"; +import { db } from "@/server/db"; +import { map, path, pipe, sort, uniq } from "ramda"; +import { toDots } from "@/utils/object"; +import { Prisma } from "@prisma/client"; +import { + zChartBreakdowns, + zChartEvents, + zChartType, + zTimeInterval, +} from "@/utils/validation"; +import { type IChartBreakdown, type IChartEvent } from "@/types"; + +type ResultItem = { + label: string | null; + count: number; + date: string; +}; + +function propertyNameToSql(name: string) { + if (name.includes(".")) { + return name + .split(".") + .map((item, index) => (index === 0 ? item : `'${item}'`)) + .join("->"); + } + + return name; +} + +export const config = { + api: { + responseLimit: false, + }, +}; + +async function getChartData({ + chartType, + event, + breakdowns, + interval, + startDate, + endDate, +}: { + chartType: string; + event: IChartEvent; + breakdowns: IChartBreakdown[]; + interval: string; + startDate: Date; + endDate: Date; +}) { + const select = [`count(*)::int as count`]; + const where = []; + const groupBy = []; + const orderBy = []; + + switch (chartType) { + case "bar": { + orderBy.push("count DESC"); + break; + } + case "linear": { + select.push(`date_trunc('${interval}', "createdAt") as date`); + groupBy.push("date"); + orderBy.push("date"); + break; + } + } + + if (event) { + const { name, filters } = event; + where.push(`name = '${name}'`); + if (filters.length > 0) { + filters.forEach((filter) => { + const { name, value } = filter; + if (name.includes(".")) { + where.push(`${propertyNameToSql(name)} = '"${value}"'`); + } else { + where.push(`${name} = '${value}'`); + } + }); + } + } + + if (breakdowns.length) { + const breakdown = breakdowns[0]; + if (breakdown) { + select.push(`${propertyNameToSql(breakdown.name)} as label`); + groupBy.push(`label`); + } + } else { + if (event.name) { + select.push(`'${event.name}' as label`); + } + } + + if (startDate) { + where.push(`"createdAt" >= '${startDate.toISOString()}'`); + } + + if (endDate) { + where.push(`"createdAt" <= '${endDate.toISOString()}'`); + } + + const sql = ` + SELECT ${select.join(", ")} + FROM events + WHERE ${where.join(" AND ")} + GROUP BY ${groupBy.join(", ")} + ORDER BY ${orderBy.join(", ")} + `; + console.log(sql); + + const result = await db.$queryRawUnsafe(sql); + const series = result.reduce( + (acc, item) => { + const label = item.label?.trim() ?? event.displayName; + if (label) { + if (acc[label]) { + acc[label]?.push(item); + } else { + acc[label] = [item]; + } + } + + return { + ...acc, + }; + }, + {} as Record, + ); + + return Object.keys(series).map((key) => { + return { + name: breakdowns.length ? key ?? "break a leg" : event.displayName, + data: fillEmptySpotsInTimeline( + series[key] ?? [], + interval, + startDate, + endDate, + ).map((item) => { + return { + ...item, + label: breakdowns.length ? key ?? "break a leg" : event.displayName, + date: new Date(item.date).toISOString(), + }; + }), + }; + }); +} + +export const chartMetaRouter = createTRPCRouter({ + events: protectedProcedure + // .input(z.object()) + .query(async ({ input }) => { + const events = await db.event.findMany({ + take: 500, + distinct: ["name"], + }); + + return events; + }), + + properties: protectedProcedure + .input(z.object({ event: z.string() }).optional()) + .query(async ({ input }) => { + const events = await db.event.findMany({ + take: 500, + where: { + ...(input?.event + ? { + name: input.event, + } + : {}), + }, + }); + + const properties = events.reduce((acc, event) => { + const properties = event as Record; + const dotNotation = toDots(properties); + return [...acc, ...Object.keys(dotNotation)]; + }, [] as string[]); + + return pipe( + sort((a, b) => a.length - b.length), + uniq, + )(properties); + }), + + values: protectedProcedure + .input(z.object({ event: z.string(), property: z.string() })) + .query(async ({ input }) => { + const events = await db.event.findMany({ + where: { + name: input.event, + properties: { + path: input.property.split(".").slice(1), + not: Prisma.DbNull, + }, + createdAt: { + // Take last 30 days + gte: new Date(new Date().getTime() - 1000 * 60 * 60 * 24 * 30), + }, + }, + }); + + const values = uniq( + map(path(input.property.split(".")), events), + ) as string[]; + + return { + types: uniq( + values.map((value) => + Array.isArray(value) ? "array" : typeof value, + ), + ), + values, + }; + }), + + chart: protectedProcedure + .input( + z.object({ + startDate: z.date().nullish(), + endDate: z.date().nullish(), + chartType: zChartType, + interval: zTimeInterval, + events: zChartEvents, + breakdowns: zChartBreakdowns, + }), + ) + .query( + async ({ + input: { chartType, events, breakdowns, interval, ...input }, + }) => { + const startDate = input.startDate ?? new Date(); + const endDate = input.endDate ?? new Date(); + const series: Awaited> = []; + for (const event of events) { + series.push( + ...(await getChartData({ + chartType, + event, + breakdowns, + interval, + startDate, + endDate, + })), + ); + } + + return { + series: series.sort((a, b) => { + 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; + }), + }; + }, + ), +}); + +function fillEmptySpotsInTimeline( + items: ResultItem[], + interval: string, + startDate: Date, + endDate: Date, +) { + const result = []; + const currentDate = new Date(startDate); + currentDate.setHours(2, 0, 0, 0); + const modifiedEndDate = new Date(endDate); + modifiedEndDate.setHours(2, 0, 0, 0); + + while (currentDate.getTime() <= modifiedEndDate.getTime()) { + const getYear = (date: Date) => date.getFullYear(); + const getMonth = (date: Date) => date.getMonth(); + const getDay = (date: Date) => date.getDate(); + const getHour = (date: Date) => date.getHours(); + const getMinute = (date: Date) => date.getMinutes(); + + const item = items.find((item) => { + const date = new Date(item.date); + + if (interval === "month") { + return ( + getYear(date) === getYear(currentDate) && + getMonth(date) === getMonth(currentDate) + ); + } + if (interval === "day") { + return ( + getYear(date) === getYear(currentDate) && + getMonth(date) === getMonth(currentDate) && + getDay(date) === getDay(currentDate) + ); + } + if (interval === "hour") { + return ( + getYear(date) === getYear(currentDate) && + getMonth(date) === getMonth(currentDate) && + getDay(date) === getDay(currentDate) && + getHour(date) === getHour(currentDate) + ); + } + if (interval === "minute") { + return ( + getYear(date) === getYear(currentDate) && + getMonth(date) === getMonth(currentDate) && + getDay(date) === getDay(currentDate) && + getHour(date) === getHour(currentDate) && + getMinute(date) === getMinute(currentDate) + ); + } + }); + + if (item) { + result.push(item); + } else { + result.push({ + date: currentDate.toISOString(), + count: 0, + label: null, + }); + } + + switch (interval) { + case "day": { + currentDate.setDate(currentDate.getDate() + 1); + break; + } + case "hour": { + currentDate.setHours(currentDate.getHours() + 1); + break; + } + case "minute": { + currentDate.setMinutes(currentDate.getMinutes() + 1); + break; + } + case "month": { + currentDate.setMonth(currentDate.getMonth() + 1); + break; + } + } + } + + return sort(function (a, b) { + return new Date(a.date).getTime() - new Date(b.date).getTime(); + }, result); +} diff --git a/apps/web/src/server/api/routers/example.ts b/apps/web/src/server/api/routers/example.ts index 8d0d4637..b07caa76 100644 --- a/apps/web/src/server/api/routers/example.ts +++ b/apps/web/src/server/api/routers/example.ts @@ -15,8 +15,8 @@ export const exampleRouter = createTRPCRouter({ }; }), - getAll: publicProcedure.query(({ ctx }) => { - return ctx.db.example.findMany(); + getAll: publicProcedure.query(() => { + return [] }), getSecretMessage: protectedProcedure.query(() => { diff --git a/apps/web/src/server/auth.ts b/apps/web/src/server/auth.ts index 73eef929..f8f3bf94 100644 --- a/apps/web/src/server/auth.ts +++ b/apps/web/src/server/auth.ts @@ -1,5 +1,4 @@ -import { PrismaAdapter } from "@next-auth/prisma-adapter"; -import { NextApiRequest, type GetServerSidePropsContext } from "next"; +import { type NextApiRequest, type GetServerSidePropsContext } from "next"; import { getServerSession, type DefaultSession, @@ -39,7 +38,7 @@ declare module "next-auth" { */ export const authOptions: NextAuthOptions = { callbacks: { - session: ({ session, user, token }) => ({ + session: ({ session, token }) => ({ ...session, user: { ...session.user, diff --git a/apps/web/src/server/exceptions.ts b/apps/web/src/server/exceptions.ts index 62e39ae0..f622d43c 100644 --- a/apps/web/src/server/exceptions.ts +++ b/apps/web/src/server/exceptions.ts @@ -1,8 +1,8 @@ import { - MixanIssue, - MixanErrorResponse + type MixanIssue, + type MixanErrorResponse } from '@mixan/types' -import { NextApiResponse } from 'next' +import { type NextApiResponse } from 'next' export class HttpError extends Error { public status: number @@ -13,7 +13,7 @@ export class HttpError extends Error { super(message instanceof Error ? message.message : message) this.status = status this.message = message instanceof Error ? message.message : message - this.issues = issues || [] + this.issues = issues ?? [] } toJson(): MixanErrorResponse { @@ -31,7 +31,7 @@ export function createIssues(arr: Array) { throw new HttpError(400, 'Issues', arr) } -export function createError(status = 500, error: unknown | Error | string) { +export function createError(status = 500, error: unknown) { if(error instanceof Error || typeof error === 'string') { return new HttpError(status, error) } @@ -39,7 +39,7 @@ export function createError(status = 500, error: unknown | Error | string) { return new HttpError(500, 'Unexpected error occured') } -export function handleError(res: NextApiResponse, error: Error | HttpError | unknown) { +export function handleError(res: NextApiResponse, error: unknown) { if(error instanceof HttpError) { return res.status(error.status).json(error.toJson()) } diff --git a/apps/web/src/services/profile.service.ts b/apps/web/src/services/profile.service.ts index 637fc97f..73046980 100644 --- a/apps/web/src/services/profile.service.ts +++ b/apps/web/src/services/profile.service.ts @@ -25,7 +25,7 @@ export async function tickProfileProperty({ } const properties = ( - typeof profile.properties === 'object' ? profile.properties || {} : {} + typeof profile.properties === 'object' ? profile.properties ?? {} : {} ) as Record const value = name in properties ? properties[name] : 0 @@ -34,6 +34,7 @@ export async function tickProfileProperty({ } if (typeof tick !== 'number') { + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions throw new HttpError(400, `Value is not a number ${tick} (${typeof tick})`) } diff --git a/apps/web/src/styles/globals.css b/apps/web/src/styles/globals.css index b5c61c95..6a757250 100644 --- a/apps/web/src/styles/globals.css +++ b/apps/web/src/styles/globals.css @@ -1,3 +1,76 @@ @tailwind base; @tailwind components; @tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 222.2 84% 4.9%; + + --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; + } + body { + @apply bg-background text-foreground; + } +} \ No newline at end of file diff --git a/apps/web/src/types/index.ts b/apps/web/src/types/index.ts new file mode 100644 index 00000000..882187dd --- /dev/null +++ b/apps/web/src/types/index.ts @@ -0,0 +1,13 @@ +import { type zTimeInterval, type zChartBreakdown, type zChartEvent } from "@/utils/validation"; +import { type TooltipProps } from "recharts"; +import { type z } from "zod"; + +export type IChartEvent = z.infer +export type IChartEventFilter = IChartEvent['filters'][number] +export type IChartBreakdown = z.infer +export type IInterval = z.infer + + +export type IToolTipProps = Omit, 'payload'> & { + payload?: Array +} \ No newline at end of file diff --git a/apps/web/src/utils/cn.ts b/apps/web/src/utils/cn.ts new file mode 100644 index 00000000..a7dc3a13 --- /dev/null +++ b/apps/web/src/utils/cn.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} \ No newline at end of file diff --git a/apps/web/src/utils/date.ts b/apps/web/src/utils/date.ts new file mode 100644 index 00000000..e69de29b diff --git a/apps/web/src/utils/object.ts b/apps/web/src/utils/object.ts new file mode 100644 index 00000000..e90efb75 --- /dev/null +++ b/apps/web/src/utils/object.ts @@ -0,0 +1,16 @@ + +export function toDots(obj: Record, path = ''): Record { + return Object.entries(obj).reduce((acc, [key, value]) => { + if(typeof value === 'object' && value !== null) { + return { + ...acc, + ...toDots(value as Record, `${path}${key}.`) + } + } + + return { + ...acc, + [`${path}${key}`]: value, + } + }, {}) +} \ No newline at end of file diff --git a/apps/web/src/utils/theme.ts b/apps/web/src/utils/theme.ts new file mode 100644 index 00000000..9e3b3b28 --- /dev/null +++ b/apps/web/src/utils/theme.ts @@ -0,0 +1,13 @@ +import resolveConfig from "tailwindcss/resolveConfig"; +import tailwinConfig from "../../tailwind.config.js"; +const config = resolveConfig(tailwinConfig); + +export const theme = config.theme as any; + +export function getChartColor(index: number): string { + const chartColors: string[] = Object.keys(theme?.colors ?? {}) + .filter((key) => key.startsWith("chart-")) + .map((key) => theme.colors[key] as string); + + return chartColors[index % chartColors.length]!; +} diff --git a/apps/web/src/utils/validation.ts b/apps/web/src/utils/validation.ts new file mode 100644 index 00000000..cb14885e --- /dev/null +++ b/apps/web/src/utils/validation.ts @@ -0,0 +1,25 @@ +import { z } from "zod"; + +export const zChartEvent = z.object({ + id: z.string(), + name: z.string(), + displayName: z.string(), + filters: z.array( + z.object({ + id: z.string(), + name: z.string(), + value: z.string(), + }), + ), +}); +export const zChartBreakdown = z.object({ + id: z.string(), + name: z.string(), +}); + +export const zChartEvents = z.array(zChartEvent); +export const zChartBreakdowns = z.array(zChartBreakdown); + +export const zChartType = z.enum(["bar", "linear"]); + +export const zTimeInterval = z.enum(["day", "hour", "month"]); diff --git a/apps/web/tailwind.config.js b/apps/web/tailwind.config.js new file mode 100644 index 00000000..477dd324 --- /dev/null +++ b/apps/web/tailwind.config.js @@ -0,0 +1,100 @@ +const colors = [ + "#7856ff", + "#ff7557", + "#7fe1d8", + "#f8bc3c", + "#b3596e", + "#72bef4", + "#ffb27a", + "#0f7ea0", + "#3ba974", + "#febbb2", + "#cb80dc", + "#5cb7af", +]; + +/** @type {import('tailwindcss').Config} */ +module.exports = { + safelist: [ + ...colors.map((color) => `chart-${color}`), + ], + darkMode: ["class"], + content: [ + "./pages/**/*.{ts,tsx}", + "./components/**/*.{ts,tsx}", + "./app/**/*.{ts,tsx}", + "./src/**/*.{ts,tsx}", + ], + theme: { + container: { + center: true, + padding: "2rem", + screens: { + "2xl": "1400px", + }, + }, + extend: { + colors: { + border: "hsl(var(--border))", + input: "hsl(var(--input))", + ring: "hsl(var(--ring))", + background: "hsl(var(--background))", + foreground: "hsl(var(--foreground))", + primary: { + DEFAULT: "hsl(var(--primary))", + foreground: "hsl(var(--primary-foreground))", + }, + secondary: { + DEFAULT: "hsl(var(--secondary))", + foreground: "hsl(var(--secondary-foreground))", + }, + destructive: { + DEFAULT: "hsl(var(--destructive))", + foreground: "hsl(var(--destructive-foreground))", + }, + muted: { + DEFAULT: "hsl(var(--muted))", + foreground: "hsl(var(--muted-foreground))", + }, + accent: { + DEFAULT: "hsl(var(--accent))", + foreground: "hsl(var(--accent-foreground))", + }, + popover: { + DEFAULT: "hsl(var(--popover))", + foreground: "hsl(var(--popover-foreground))", + }, + card: { + DEFAULT: "hsl(var(--card))", + foreground: "hsl(var(--card-foreground))", + }, + ...colors.reduce((acc, color, index) => { + return { + ...acc, + [`chart-${index}`]: color, + }; + }, {}), + }, + borderRadius: { + lg: "var(--radius)", + md: "calc(var(--radius) - 2px)", + sm: "calc(var(--radius) - 4px)", + }, + keyframes: { + "accordion-down": { + from: { height: 0 }, + to: { height: "var(--radix-accordion-content-height)" }, + }, + "accordion-up": { + from: { height: "var(--radix-accordion-content-height)" }, + to: { height: 0 }, + }, + }, + animation: { + "accordion-down": "accordion-down 0.2s ease-out", + "accordion-up": "accordion-up 0.2s ease-out", + }, + }, + }, + plugins: [require("tailwindcss-animate")], +}; diff --git a/apps/web/tailwind.config.ts b/apps/web/tailwind.config.ts index d4d3fa29..cc45ec94 100644 --- a/apps/web/tailwind.config.ts +++ b/apps/web/tailwind.config.ts @@ -3,7 +3,26 @@ import { type Config } from "tailwindcss"; export default { content: ["./src/**/*.{js,ts,jsx,tsx}"], theme: { - extend: {}, + extend: { + colors: { + 'chart-0': '', + 'chart-1': '', + 'chart-2': '', + 'chart-3': '', + 'chart-4': '', + 'chart-5': '', + 'chart-6': '', + 'chart-7': '', + 'chart-8': '', + 'chart-9': '', + 'chart-10': '', + 'chart-11': '', + 'chart-12': '', + 'chart-13': '', + 'chart-14': '', + 'chart-15': '', + } + }, }, plugins: [], } satisfies Config; diff --git a/bun.lockb b/bun.lockb index 17fe77a800f4959a274dd2038bd2356b603994a9..54c4f369b4a7983f348144a477b54f32f01cd937 100755 GIT binary patch literal 452496 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�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 literal 35544 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 diff --git a/packages/types/index.ts b/packages/types/index.ts index 43fb84f2..3aa2ab48 100644 --- a/packages/types/index.ts +++ b/packages/types/index.ts @@ -63,7 +63,8 @@ export type MixanErrorResponse = { status: 'error' code: number message: string - issues: Array + issues?: Array + stack?: string } export type MixanResponse = {