feat(web): add licenses column

This commit is contained in:
Collin Barrett 2025-06-26 17:56:52 -05:00
parent 6b76ce5e50
commit a6da2b44a1
2 changed files with 22 additions and 4 deletions

View file

@ -1,13 +1,24 @@
"use client";
import { FilterList } from "@/services/get-filterlists";
import { createColumnHelper } from "@tanstack/react-table";
import { FilterListsTableMeta } from ".";
const columnHelper = createColumnHelper<FilterList>();
export const columns = [
columnHelper.accessor("name", {
columnHelper.accessor((row) => row.name, {
header: "Name",
}),
columnHelper.accessor("description", {
columnHelper.accessor((row) => row.description, {
header: "Description",
}),
columnHelper.accessor((row) => row.licenseId, {
header: "License",
cell: (info) => {
const meta = info.table.options.meta as FilterListsTableMeta;
const license = meta.licenses.find((l) => l.id === info.getValue());
return license?.name;
},
}),
];

View file

@ -6,8 +6,9 @@ import {
getCoreRowModel,
getPaginationRowModel,
flexRender,
AccessorKeyColumnDef,
TableMeta,
} from "@tanstack/react-table";
import { columns } from "./columns";
import {
Table,
TableBody,
@ -27,8 +28,12 @@ import { Software } from "@/services/get-software";
import { Syntax } from "@/services/get-syntaxes";
import { Tag } from "@/services/get-tags";
export interface FilterListsTableMeta extends TableMeta<FilterList> {
licenses: License[];
}
interface FilterListTableProps {
columns: AccessorKeyColumnDef<FilterList, string>[];
columns: typeof columns;
initialFilterLists: FilterList[];
languages: Language[];
licenses: License[];
@ -41,6 +46,7 @@ interface FilterListTableProps {
export function FilterListTable({
columns,
initialFilterLists,
licenses,
}: FilterListTableProps) {
const [data, setData] = useState<FilterList[]>(initialFilterLists);
const [loading, setLoading] = useState(true);
@ -61,6 +67,7 @@ export function FilterListTable({
columns,
getCoreRowModel: getCoreRowModel(),
getPaginationRowModel: getPaginationRowModel(),
meta: { licenses: licenses } as FilterListsTableMeta,
});
return (