From e9f7678b9003e9493064b166dbe13268c0313725 Mon Sep 17 00:00:00 2001 From: Fred KISSIE Date: Fri, 28 Aug 2026 22:00:06 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20List=20of=20orgs,=20with=20all=20co?= =?UTF-8?q?lumns?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/routers/org/adminListOrgs.ts | 9 ++++- src/app/admin/organizations/page.tsx | 14 +------ src/components/OrgsTable.tsx | 60 ++++++++++++++++++---------- 3 files changed, 49 insertions(+), 34 deletions(-) diff --git a/server/routers/org/adminListOrgs.ts b/server/routers/org/adminListOrgs.ts index 61a9e525d..d17757211 100644 --- a/server/routers/org/adminListOrgs.ts +++ b/server/routers/org/adminListOrgs.ts @@ -64,10 +64,16 @@ export type AdminOrgRow = { orgId: string; name: string; subnet: string | null; + utilitySubnet: string | null; createdAt: string | null; userCount: number; siteCount: number; resourceCount: number; + owner: { + userId: string; + name: string | null; + username: string; + } | null; }; export type AdminListOrgsResponse = PaginatedResponse<{ @@ -172,6 +178,7 @@ export async function adminListOrgs( orgId: orgs.orgId, name: orgs.name, subnet: orgs.subnet, + utilitySubnet: orgs.utilitySubnet, createdAt: orgs.createdAt, userCount: sql`( SELECT COUNT(*) @@ -189,7 +196,7 @@ export async function adminListOrgs( WHERE ${resources.orgId} = ${orgIdRef} )`.as("resourceCount"), owner: { - id: users.userId, + userId: users.userId, name: users.name, username: users.username } diff --git a/src/app/admin/organizations/page.tsx b/src/app/admin/organizations/page.tsx index f01cc3636..0f0619096 100644 --- a/src/app/admin/organizations/page.tsx +++ b/src/app/admin/organizations/page.tsx @@ -1,5 +1,5 @@ import SettingsSectionTitle from "@app/components/SettingsSectionTitle"; -import OrgsTable, { type OrgRow } from "@app/components/OrgsTable"; +import OrgsTable from "@app/components/OrgsTable"; import { internal } from "@app/lib/api"; import { authCookieHeader } from "@app/lib/api/cookies"; import type { AdminListOrgsResponse } from "@server/routers/org"; @@ -39,16 +39,6 @@ export default async function OrganizationsPage(props: OrganizationsPageProps) { const t = await getTranslations(); - const orgRows: OrgRow[] = orgs.map((org) => ({ - orgId: org.orgId, - name: org.name, - subnet: org.subnet, - createdAt: org.createdAt, - userCount: org.userCount, - siteCount: org.siteCount, - resourceCount: org.resourceCount - })); - return ( <> []>(() => { + const columns = useMemo[]>(() => { return [ { accessorKey: "name", @@ -124,6 +108,31 @@ export default function OrgsTable({ ); } }, + { + accessorKey: "owner", + friendlyName: t("accessRoleOwner"), + header: () => ( + {t("accessRoleOwner")} + ), + cell: ({ row }) => { + const owner = row.original.owner; + return owner ? ( + + ) : ( + - + ); + } + }, { accessorKey: "orgId", friendlyName: t("orgId"), @@ -135,6 +144,14 @@ export default function OrgsTable({ header: () => {t("subnet")}, cell: ({ row }) => {row.original.subnet || "-"} }, + { + accessorKey: "utilitySubnet", + friendlyName: t("utilitySubnet"), + header: () => {t("utilitySubnet")}, + cell: ({ row }) => ( + {row.original.utilitySubnet || "-"} + ) + }, { accessorKey: "userCount", friendlyName: t("users"), @@ -218,6 +235,7 @@ export default function OrgsTable({ rowCount={rowCount} columnVisibility={{ subnet: false, + utilitySubnet: false, orgId: false }} enableColumnVisibility