From 57d4c1852792a4b5488d73cc361ecedcfa40597f Mon Sep 17 00:00:00 2001 From: Ryan Pandya Date: Sat, 7 Dec 2024 15:45:00 -0800 Subject: [PATCH] Fix some bugs --- apps/web/app/dashboard/metrics/page.tsx | 2 +- apps/web/components/dashboard/days/DayMetrics.tsx | 4 +++- .../components/dashboard/hours/EditableHour.tsx | 2 +- .../dashboard/metrics/AddMetricDialog.tsx | 8 ++++++-- .../{categories => metrics}/MetricsView.tsx | 9 +++++++-- ...rgeous_sasquatch.sql => 0000_moaning_thor.sql} | 3 +-- packages/db/migrations/meta/0000_snapshot.json | 15 +++------------ packages/db/migrations/meta/_journal.json | 4 ++-- packages/db/schema.ts | 2 +- 9 files changed, 25 insertions(+), 24 deletions(-) rename apps/web/components/dashboard/{categories => metrics}/MetricsView.tsx (90%) rename packages/db/migrations/{0000_gorgeous_sasquatch.sql => 0000_moaning_thor.sql} (97%) diff --git a/apps/web/app/dashboard/metrics/page.tsx b/apps/web/app/dashboard/metrics/page.tsx index fe20cf8..c992fcf 100644 --- a/apps/web/app/dashboard/metrics/page.tsx +++ b/apps/web/app/dashboard/metrics/page.tsx @@ -1,4 +1,4 @@ -import MetricsView from "@/components/dashboard/categories/MetricsView"; +import MetricsView from "@/components/dashboard/metrics/MetricsView"; export default async function MetricsPage() { return ( diff --git a/apps/web/components/dashboard/days/DayMetrics.tsx b/apps/web/components/dashboard/days/DayMetrics.tsx index 9c02fa4..bcadb11 100644 --- a/apps/web/components/dashboard/days/DayMetrics.tsx +++ b/apps/web/components/dashboard/days/DayMetrics.tsx @@ -12,6 +12,8 @@ export function DayMetrics({ const [day, setDay] = useState(initialDay); return ( - + +   + ); }; diff --git a/apps/web/components/dashboard/hours/EditableHour.tsx b/apps/web/components/dashboard/hours/EditableHour.tsx index ac32c0e..c4d119c 100644 --- a/apps/web/components/dashboard/hours/EditableHour.tsx +++ b/apps/web/components/dashboard/hours/EditableHour.tsx @@ -163,7 +163,7 @@ export default function EditableHour({
{ decrementCount({ metricId: m.metricId, hourId: hour.id }); }}> - +
) )} diff --git a/apps/web/components/dashboard/metrics/AddMetricDialog.tsx b/apps/web/components/dashboard/metrics/AddMetricDialog.tsx index ed0411a..7ae706e 100644 --- a/apps/web/components/dashboard/metrics/AddMetricDialog.tsx +++ b/apps/web/components/dashboard/metrics/AddMetricDialog.tsx @@ -37,6 +37,7 @@ import { Textarea } from "@/components/ui/textarea"; import { zMetricSchema } from "@lifetracker/shared/types/metrics"; import { Icon, } from "@/components/ui/icon"; import { icons } from "lucide-react"; +import { titleCase } from "title-case"; type CreateMetricSchema = z.infer; export default function AddMetricDialog({ @@ -50,7 +51,10 @@ export default function AddMetricDialog({ const [isOpen, onOpenChange] = useState(false); const form = useForm({ resolver: zodResolver(zMetricSchema), - defaultValues: initialMetric + defaultValues: { + ...initialMetric, + type: "count" + }, }); const handleSuccess = (message: string) => { toast({ @@ -113,7 +117,7 @@ export default function AddMetricDialog({ {children} - Track a New Metric + Track a New {titleCase(form.watch("type"))} Metric
mutate(val))}> diff --git a/apps/web/components/dashboard/categories/MetricsView.tsx b/apps/web/components/dashboard/metrics/MetricsView.tsx similarity index 90% rename from apps/web/components/dashboard/categories/MetricsView.tsx rename to apps/web/components/dashboard/metrics/MetricsView.tsx index c1083ba..7ef60fb 100644 --- a/apps/web/components/dashboard/categories/MetricsView.tsx +++ b/apps/web/components/dashboard/metrics/MetricsView.tsx @@ -15,9 +15,11 @@ import { toast } from "@/components/ui/use-toast"; import { api } from "@/lib/trpc"; import { Pencil, Trash, FilePlus, Palette } from "lucide-react"; import { useSession } from "next-auth/react"; -import AddMetricDialog from "../metrics/AddMetricDialog"; +import AddMetricDialog from "./AddMetricDialog"; import Link from "next/link"; import { ZMetric } from "@lifetracker/shared/types/metrics"; +import { titleCase } from "title-case"; +import { Icon } from "@/components/ui/icon"; export default function MetricsView() { const { data: metrics } = api.metrics.list.useQuery(); @@ -44,7 +46,10 @@ export default function MetricsView() { {metrics.map((m) => ( - {m.name} + + + {m.name} + {m.unit} {m.type} {m.description} diff --git a/packages/db/migrations/0000_gorgeous_sasquatch.sql b/packages/db/migrations/0000_moaning_thor.sql similarity index 97% rename from packages/db/migrations/0000_gorgeous_sasquatch.sql rename to packages/db/migrations/0000_moaning_thor.sql index 9a88fc9..0509cc9 100644 --- a/packages/db/migrations/0000_gorgeous_sasquatch.sql +++ b/packages/db/migrations/0000_moaning_thor.sql @@ -97,7 +97,7 @@ CREATE TABLE `metric` ( `type` text NOT NULL, `unit` text, `goal` real, - `icon` text, + `icon` text NOT NULL, `createdAt` integer NOT NULL, FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade ); @@ -133,6 +133,5 @@ CREATE UNIQUE INDEX `category_userId_code_unique` ON `category` (`userId`,`code` CREATE UNIQUE INDEX `color_userId_name_unique` ON `color` (`userId`,`name`);--> statement-breakpoint CREATE UNIQUE INDEX `day_date_unique` ON `day` (`date`);--> statement-breakpoint CREATE UNIQUE INDEX `hour_dayId_time_unique` ON `hour` (`dayId`,`time`);--> statement-breakpoint -CREATE UNIQUE INDEX `measurement_dayId_metricId_unique` ON `measurement` (`dayId`,`metricId`);--> statement-breakpoint CREATE UNIQUE INDEX `metric_userId_name_unique` ON `metric` (`userId`,`name`);--> statement-breakpoint CREATE UNIQUE INDEX `user_email_unique` ON `user` (`email`); \ No newline at end of file diff --git a/packages/db/migrations/meta/0000_snapshot.json b/packages/db/migrations/meta/0000_snapshot.json index 051e9ce..f2bf3a2 100644 --- a/packages/db/migrations/meta/0000_snapshot.json +++ b/packages/db/migrations/meta/0000_snapshot.json @@ -1,7 +1,7 @@ { "version": "6", "dialect": "sqlite", - "id": "31bbb29b-e786-4716-9c91-c9d2217be582", + "id": "9a832735-dcfa-42cc-ad15-6be5b898a160", "prevId": "00000000-0000-0000-0000-000000000000", "tables": { "account": { @@ -630,16 +630,7 @@ "autoincrement": false } }, - "indexes": { - "measurement_dayId_metricId_unique": { - "name": "measurement_dayId_metricId_unique", - "columns": [ - "dayId", - "metricId" - ], - "isUnique": true - } - }, + "indexes": {}, "foreignKeys": { "measurement_hourId_hour_id_fk": { "name": "measurement_hourId_hour_id_fk", @@ -753,7 +744,7 @@ "name": "icon", "type": "text", "primaryKey": false, - "notNull": false, + "notNull": true, "autoincrement": false }, "createdAt": { diff --git a/packages/db/migrations/meta/_journal.json b/packages/db/migrations/meta/_journal.json index 926b871..a772e87 100644 --- a/packages/db/migrations/meta/_journal.json +++ b/packages/db/migrations/meta/_journal.json @@ -5,8 +5,8 @@ { "idx": 0, "version": "6", - "when": 1733533929464, - "tag": "0000_gorgeous_sasquatch", + "when": 1733614471710, + "tag": "0000_moaning_thor", "breakpoints": true } ] diff --git a/packages/db/schema.ts b/packages/db/schema.ts index ec2c0ff..e1ad64c 100644 --- a/packages/db/schema.ts +++ b/packages/db/schema.ts @@ -158,7 +158,7 @@ export const measurements = sqliteTable("measurement", { value: text("value").notNull(), }, (m) => ({ - uniq: unique().on(m.dayId, m.metricId) + // uniq: unique().on(m.dayId, m.metricId) }), );