From af359a01348e7761a173001ec91a62bf14eba5b7 Mon Sep 17 00:00:00 2001 From: Julia Dai Date: Wed, 1 Oct 2025 17:09:15 +0200 Subject: [PATCH 1/3] vf-324 Add (in)active schools tab --- app/routes/dashboard.skoler._index.tsx | 14 +++++++++++++- app/routes/dashboard.tsx | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/routes/dashboard.skoler._index.tsx b/app/routes/dashboard.skoler._index.tsx index 7d59303..306d79d 100644 --- a/app/routes/dashboard.skoler._index.tsx +++ b/app/routes/dashboard.skoler._index.tsx @@ -1,8 +1,20 @@ +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; + // biome-ignore lint/style/noDefaultExport: Route Modules require default export https://reactrouter.com/start/framework/route-module export default function Skoler() { return ( <> -

Skoler

+
+

Skoler

+ + + Aktive skoler + Inaktive skoler + + Active + Inactive + +
); } diff --git a/app/routes/dashboard.tsx b/app/routes/dashboard.tsx index 74ff5b7..a0a5869 100644 --- a/app/routes/dashboard.tsx +++ b/app/routes/dashboard.tsx @@ -141,7 +141,7 @@ const mainLinks = [ }, { title: "Tidligere Assistenter", - url: href("/dashboard/tidligereassistenter"), + url: "/dashboard/tidligereassistenter", }, { title: "Intervjufordeling", From 741170da5e0e84fbed7e64f531194e0d0ec774b6 Mon Sep 17 00:00:00 2001 From: Julia Dai Date: Wed, 8 Oct 2025 17:27:45 +0200 Subject: [PATCH 2/3] vf-324 Create school table --- app/components/data-table.tsx | 4 +- app/mock/api/data-skoler.ts | 123 +++++++++++++++++++++++++ app/routes/dashboard.skoler._index.tsx | 86 +++++++++++++++-- app/routes/dashboard.sokere._index.tsx | 2 +- 4 files changed, 205 insertions(+), 10 deletions(-) create mode 100644 app/mock/api/data-skoler.ts diff --git a/app/components/data-table.tsx b/app/components/data-table.tsx index 95a9aa6..ccc92b8 100644 --- a/app/components/data-table.tsx +++ b/app/components/data-table.tsx @@ -109,7 +109,7 @@ export function DataTable({ ? null : flexRender( header.column.columnDef.header, - header.getContext(), + header.getContext() )} ); @@ -128,7 +128,7 @@ export function DataTable({ {flexRender( cell.column.columnDef.cell, - cell.getContext(), + cell.getContext() )} ))} diff --git a/app/mock/api/data-skoler.ts b/app/mock/api/data-skoler.ts new file mode 100644 index 0000000..cafa076 --- /dev/null +++ b/app/mock/api/data-skoler.ts @@ -0,0 +1,123 @@ +type School = { + name: string, + contact: string, + phone: string, + email: string, + language: string +} + +export function getActiveSchools(): Array { + return [ + { + name: "Blussvoll", + contact: "John Doe", + phone: "988 01 888", + email: "john.doe@ou.trondheim.kommune.no", + language: "Norsk" + }, + { + name: "Birrale", + contact: "John Doe", + phone: "988 01 888", + email: "john.doe@birrale.no", + language: "Internasjonal" + }, + { + name: "Charlottenlund", + contact: "John Doe", + phone: "988 01 888", + email: "john.doe@ou.trondheim.kommune.no", + language: "Norsk" + }, + { + name: "Markaplassen", + contact: "John Doe", + phone: "988 01 888", + email: "john.doe@ou.trondheim.kommune.no", + language: "Norwegian" + }, + { + name: "Nidaros idrettsungdomsskole", + contact: "John Doe", + phone: "988 01 888", + email: "john.doe@ou.trondheim.kommune.no", + language: "Norwegian" + }, + { + name: "Rosenborg", + contact: "John Doe", + phone: "988 01 888", + email: "john.doe@ou.trondheim.kommune.no", + language: "Norwegian" + }, + { + name: "Ugla", + contact: "John Doe", + phone: "988 01 888", + email: "john.doe@ou.trondheim.kommune.no", + language: "Norwegian" + }, + { + name: "Trondheim idrettsungdomsskole", + contact: "John Doe", + phone: "988 01 888", + email: "john.doe@ou.trondheim.kommune.no", + language: "Norwegian" + }, + { + name: "Sunnland", + contact: "John Doe", + phone: "988 01 888", + email: "john.doe@ou.trondheim.kommune.no", + language: "Norwegian" + }, + { + name: "Lade", + contact: "John Doe", + phone: "988 01 888", + email: "john.doe@ou.trondheim.kommune.no", + language: "Norwegian" + }, + { + name: "Sjetne", + contact: "John Doe", + phone: "988 01 888", + email: "john.doe@ou.trondheim.kommune.no", + language: "Norwegian" + }, + { + name: "Hoeggen", + contact: "John Doe", + phone: "988 01 888", + email: "john.doe@ou.trondheim.kommune.no", + language: "Norwegian" + } + ]; +} + +export function getInactiveSchools(): Array { + return ([ + { + name: "Åsheim", + contact: "John Doe", + phone: "988 01 888", + email: "john.doe@ou.trondheim.kommune.no", + language: "Norsk" + }, + { + name: "Blussvoll", + contact: "John Doe", + phone: "988 01 888", + email: "john.doe@ou.trondheim.kommune.no", + language: "Norsk" + }, + { + name: "Flatåsen", + contact: "John Doe", + phone: "988 01 888", + email: "john.doe@ou.trondheim.kommune.no", + language: "Norsk" + } + + ]) +} diff --git a/app/routes/dashboard.skoler._index.tsx b/app/routes/dashboard.skoler._index.tsx index 306d79d..4283cba 100644 --- a/app/routes/dashboard.skoler._index.tsx +++ b/app/routes/dashboard.skoler._index.tsx @@ -1,18 +1,90 @@ +import { DataTable } from "@/components/data-table"; +import { Checkbox } from "@/components/ui/checkbox"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; +import { ColumnDef } from "@tanstack/react-table"; +import { getActiveSchools, getInactiveSchools } from "../mock/api/data-skoler"; + +export type School = { + name: string; + contact: string; + phone: string; + email: string; + language: string; +}; + +export const columns: Array> = [ + { + id: "select", + header: ({ table }) => ( + table.toggleAllPageRowsSelected(!!value)} + aria-label="Select all" + /> + ), + cell: ({ row }) => ( + row.toggleSelected(!!value)} + aria-label="Select row" + /> + ), + enableSorting: false, + enableHiding: false, + }, + { + accessorKey: "name", + header: "Skole", + }, + { + accessorKey: "contact", + header: "Kontaktperson", + }, + { + accessorKey: "phone", + header: "Telefon", + }, + { + accessorKey: "email", + header: "E-post", + }, + { + accessorKey: "language", + header: "Språk", + }, +]; // biome-ignore lint/style/noDefaultExport: Route Modules require default export https://reactrouter.com/start/framework/route-module export default function Skoler() { + const activeSchools = getActiveSchools(); + const inactiveSchools = getInactiveSchools(); + return ( <>

Skoler

- - - Aktive skoler - Inaktive skoler - - Active - Inactive + +
+ + Aktive skoler + Inaktive skoler + +
+ + + + + +
diff --git a/app/routes/dashboard.sokere._index.tsx b/app/routes/dashboard.sokere._index.tsx index 8689b45..95cbcfb 100644 --- a/app/routes/dashboard.sokere._index.tsx +++ b/app/routes/dashboard.sokere._index.tsx @@ -39,7 +39,7 @@ export const columns: Array> = [ }, { accessorKey: "name", - header: "Navn", + header: "Skole", }, { accessorKey: "tlf", From d61f90401b515db23844ede6f0113c5f7123ffc0 Mon Sep 17 00:00:00 2001 From: Julia Dai Date: Mon, 13 Oct 2025 17:53:55 +0200 Subject: [PATCH 3/3] vf-324 Make school table responsive --- app/mock/api/data-skoler.ts | 18 ++++++++-------- app/routes/dashboard.skoler._index.tsx | 29 ++++++++++++++------------ app/routes/dashboard.tsx | 9 +++++--- 3 files changed, 31 insertions(+), 25 deletions(-) diff --git a/app/mock/api/data-skoler.ts b/app/mock/api/data-skoler.ts index cafa076..6749663 100644 --- a/app/mock/api/data-skoler.ts +++ b/app/mock/api/data-skoler.ts @@ -34,63 +34,63 @@ export function getActiveSchools(): Array { contact: "John Doe", phone: "988 01 888", email: "john.doe@ou.trondheim.kommune.no", - language: "Norwegian" + language: "Norsk" }, { name: "Nidaros idrettsungdomsskole", contact: "John Doe", phone: "988 01 888", email: "john.doe@ou.trondheim.kommune.no", - language: "Norwegian" + language: "Norsk" }, { name: "Rosenborg", contact: "John Doe", phone: "988 01 888", email: "john.doe@ou.trondheim.kommune.no", - language: "Norwegian" + language: "Norsk" }, { name: "Ugla", contact: "John Doe", phone: "988 01 888", email: "john.doe@ou.trondheim.kommune.no", - language: "Norwegian" + language: "Norsk" }, { name: "Trondheim idrettsungdomsskole", contact: "John Doe", phone: "988 01 888", email: "john.doe@ou.trondheim.kommune.no", - language: "Norwegian" + language: "Norsk" }, { name: "Sunnland", contact: "John Doe", phone: "988 01 888", email: "john.doe@ou.trondheim.kommune.no", - language: "Norwegian" + language: "Norsk" }, { name: "Lade", contact: "John Doe", phone: "988 01 888", email: "john.doe@ou.trondheim.kommune.no", - language: "Norwegian" + language: "Norsk" }, { name: "Sjetne", contact: "John Doe", phone: "988 01 888", email: "john.doe@ou.trondheim.kommune.no", - language: "Norwegian" + language: "Norsk" }, { name: "Hoeggen", contact: "John Doe", phone: "988 01 888", email: "john.doe@ou.trondheim.kommune.no", - language: "Norwegian" + language: "Norsk" } ]; } diff --git a/app/routes/dashboard.skoler._index.tsx b/app/routes/dashboard.skoler._index.tsx index 4283cba..449231e 100644 --- a/app/routes/dashboard.skoler._index.tsx +++ b/app/routes/dashboard.skoler._index.tsx @@ -64,26 +64,29 @@ export default function Skoler() { return ( <> -
+

Skoler

- +
- + Aktive skoler Inaktive skoler
- - + + +
+ +
- - + + +
+ +
diff --git a/app/routes/dashboard.tsx b/app/routes/dashboard.tsx index a0a5869..5e3fdd2 100644 --- a/app/routes/dashboard.tsx +++ b/app/routes/dashboard.tsx @@ -398,7 +398,7 @@ function Breadcrumbs() { to={`/${fullPath}`} className={cn( isEnd ? "text-black" : "text-gray-500", - "hover:text-black", + "hover:text-black" )} prefetch="intent" > @@ -497,7 +497,7 @@ export default function Layout() { - +
@@ -505,7 +505,10 @@ export default function Layout() {
- + +
+ +
);