Skip to content

Commit 72d7028

Browse files
authored
Merge pull request #720 from trycompai/main
[comp] Production Deploy
2 parents 60ff4e8 + 640780d commit 72d7028

File tree

27 files changed

+158
-167
lines changed

27 files changed

+158
-167
lines changed

apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/controls/[controlId]/components/PoliciesTable.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,13 @@ export function PoliciesTable({
124124
onChange={(e) => setSearchTerm(e.target.value)}
125125
className="max-w-sm"
126126
/>
127-
<div className="ml-auto">
127+
{/* <div className="ml-auto">
128128
<DataTableSortList
129129
table={table.table}
130130
align="end"
131131
tableId="policiesTable"
132132
/>
133-
</div>
133+
</div> */}
134134
</div>
135135
<DataTable
136136
table={table.table}

apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/controls/[controlId]/components/RequirementsTable.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ interface RequirementsTableProps {
113113
// No default sorting to avoid type issues
114114
},
115115
tableId: "r",
116+
clearOnDefault: true,
116117
});
117118

118119
return (
@@ -133,13 +134,13 @@ interface RequirementsTableProps {
133134
onChange={(e) => setSearchTerm(e.target.value)}
134135
className="max-w-sm"
135136
/>
136-
<div className="ml-auto">
137+
{/* <div className="ml-auto">
137138
<DataTableSortList
138139
table={table.table}
139140
align="end"
140141
tableId="r"
141142
/>
142-
</div>
143+
</div> */}
143144
</div>
144145
<DataTable
145146
table={table.table}

apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/controls/[controlId]/components/TasksTable.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,13 @@ export function TasksTable({ tasks, orgId, controlId }: TasksTableProps) {
130130
onChange={(e) => setSearchTerm(e.target.value)}
131131
className="max-w-sm"
132132
/>
133-
<div className="ml-auto">
133+
{/* <div className="ml-auto">
134134
<DataTableSortList
135135
table={table.table}
136136
align="end"
137137
tableId="t"
138138
/>
139-
</div>
139+
</div> */}
140140
</div>
141141
<DataTable
142142
table={table.table}

apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/controls/components/controls-table-columns.tsx

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,17 @@ export function getControlColumns(): ColumnDef<ControlWithRelations>[] {
3030
variant: "text",
3131
},
3232
enableColumnFilter: true,
33+
filterFn: (row, id, value) => {
34+
return value.length === 0
35+
? true
36+
: String(row.getValue(id))
37+
.toLowerCase()
38+
.includes(String(value).toLowerCase());
39+
},
3340
},
3441
{
3542
id: "status",
36-
accessorKey: "status",
43+
accessorKey: "",
3744
header: ({ column }) => (
3845
<DataTableColumnHeader column={column} title="Status" />
3946
),
@@ -46,12 +53,13 @@ export function getControlColumns(): ColumnDef<ControlWithRelations>[] {
4653
meta: {
4754
label: "Status",
4855
placeholder: "Search status...",
49-
variant: "select",
56+
variant: "text",
5057
},
58+
enableSorting: false,
5159
},
5260
{
5361
id: "mappedRequirements",
54-
accessorKey: "mappedRequirements",
62+
accessorKey: "requirementsMapped",
5563
header: ({ column }) => (
5664
<DataTableColumnHeader
5765
column={column}
@@ -72,8 +80,7 @@ export function getControlColumns(): ColumnDef<ControlWithRelations>[] {
7280
variant="secondary"
7381
className="text-xs"
7482
>
75-
{frameworkName}:{" "}
76-
{req.requirementId}
83+
{req.requirement.name}
7784
</Badge>
7885
);
7986
})
@@ -83,11 +90,6 @@ export function getControlColumns(): ColumnDef<ControlWithRelations>[] {
8390
</div>
8491
);
8592
},
86-
meta: {
87-
label: "Linked Requirements",
88-
placeholder: "Search Linked Requirements...",
89-
variant: "text",
90-
},
9193
},
9294
];
9395
}

apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/controls/components/controls-table.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,17 @@ export function ControlsTable({ promises }: ControlsTableProps) {
1919
const [{ data, pageCount }] = React.use(promises);
2020
const { orgId } = useParams();
2121
const columns = React.useMemo(() => getControlColumns(), []);
22+
const [filteredData, setFilteredData] = React.useState<ControlWithRelations[]>(data);
2223

24+
// For client-side filtering, we don't need to apply server-side filtering
2325
const { table } = useDataTable({
24-
data,
26+
data: filteredData,
2527
columns,
2628
pageCount,
2729
initialState: {
2830
sorting: [{ id: "name", desc: true }],
29-
columnPinning: { right: ["actions"] },
3031
},
31-
getRowId: (originalRow: ControlWithRelations) => originalRow.id,
32+
getRowId: (row) => row.id,
3233
shallow: false,
3334
clearOnDefault: true,
3435
});
@@ -41,7 +42,7 @@ export function ControlsTable({ promises }: ControlsTableProps) {
4142
rowClickBasePath={`/${orgId}/controls`}
4243
>
4344
<DataTableToolbar table={table}>
44-
<DataTableSortList table={table} align="end" />
45+
{/* <DataTableSortList table={table} align="end" /> */}
4546
</DataTableToolbar>
4647
</DataTable>
4748
<CreatePolicySheet />

apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/controls/data/queries.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@ const controlInclude = {
2222
framework: true,
2323
},
2424
},
25+
requirement: {
26+
select: {
27+
name: true,
28+
identifier: true,
29+
},
30+
},
2531
},
2632
},
2733
} satisfies Prisma.ControlInclude;

apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/controls/data/validations.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import * as z from "zod";
1111

1212
export const searchParamsCache = createSearchParamsCache({
1313
page: parseAsInteger.withDefault(1),
14-
perPage: parseAsInteger.withDefault(10),
14+
perPage: parseAsInteger.withDefault(50),
1515
sort: getSortingStateParser<Control>().withDefault([
1616
{ id: "name", desc: true },
1717
]),

apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/frameworks/[frameworkInstanceId]/components/FrameworkRequirements.tsx

Lines changed: 17 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@
22

33
import { DataTable } from "@/components/data-table/data-table";
44
import { DataTableColumnHeader } from "@/components/data-table/data-table-column-header";
5-
import { DataTableSortList } from "@/components/data-table/data-table-sort-list";
5+
import { DataTableToolbar } from "@/components/data-table/data-table-toolbar";
66
import { useDataTable } from "@/hooks/use-data-table";
77
import { useI18n } from "@/locales/client";
8+
import type { FrameworkEditorRequirement } from "@comp/db/types";
89
import { Card, CardContent, CardHeader, CardTitle } from "@comp/ui/card";
9-
import { Input } from "@comp/ui/input";
1010
import { ColumnDef } from "@tanstack/react-table";
1111
import { useParams } from "next/navigation";
12-
import { useMemo, useState } from "react";
12+
import { useMemo } from "react";
1313
import type { FrameworkInstanceWithControls } from "../../types";
14-
import type { FrameworkEditorRequirement } from "@comp/db/types";
1514

1615
interface RequirementItem extends FrameworkEditorRequirement {
1716
mappedControlsCount: number;
@@ -29,7 +28,6 @@ export function FrameworkRequirements({
2928
orgId: string;
3029
frameworkInstanceId: string;
3130
}>();
32-
const [searchTerm, setSearchTerm] = useState("");
3331

3432
const items = useMemo(() => {
3533
return requirementDefinitions.map((def) => {
@@ -60,7 +58,12 @@ export function FrameworkRequirements({
6058
size: 200,
6159
minSize: 150,
6260
maxSize: 250,
63-
enableResizing: true,
61+
meta: {
62+
label: "Requirement Name",
63+
placeholder: "Search...",
64+
variant: "text",
65+
},
66+
enableColumnFilter: true,
6467
},
6568
{
6669
accessorKey: "description",
@@ -104,22 +107,8 @@ export function FrameworkRequirements({
104107
[t],
105108
);
106109

107-
const filteredRequirements = useMemo(() => {
108-
if (!items?.length) return [];
109-
if (!searchTerm.trim()) return items;
110-
111-
const searchLower = searchTerm.toLowerCase();
112-
return items.filter(
113-
(requirement) =>
114-
(requirement.id?.toLowerCase() || "").includes(searchLower) ||
115-
(requirement.name?.toLowerCase() || "").includes(searchLower) ||
116-
(requirement.description?.toLowerCase() || "").includes(searchLower) ||
117-
(requirement.identifier?.toLowerCase() || "").includes(searchLower)
118-
);
119-
}, [items, searchTerm]);
120-
121110
const table = useDataTable({
122-
data: filteredRequirements,
111+
data: items,
123112
columns,
124113
pageCount: 1,
125114
shallow: false,
@@ -129,6 +118,7 @@ export function FrameworkRequirements({
129118
},
130119
});
131120

121+
132122
if (!items?.length) {
133123
return null;
134124
}
@@ -138,28 +128,19 @@ export function FrameworkRequirements({
138128
<CardHeader>
139129
<CardTitle>
140130
{t("frameworks.requirements.requirements")} (
141-
{filteredRequirements.length})
131+
{table.table.getFilteredRowModel().rows.length})
142132
</CardTitle>
143133
</CardHeader>
144134
<CardContent>
145-
<div className="flex items-center mb-4">
146-
<Input
147-
placeholder={t(
148-
"frameworks.requirements.search.universal_placeholder",
149-
)}
150-
value={searchTerm}
151-
onChange={(e) => setSearchTerm(e.target.value)}
152-
className="max-w-sm"
153-
/>
154-
<div className="ml-auto">
155-
<DataTableSortList table={table.table} align="end" />
156-
</div>
157-
</div>
158135
<DataTable
159136
table={table.table}
160137
rowClickBasePath={`/${orgId}/frameworks/${frameworkInstanceId}/requirements/`}
161138
getRowId={(row) => row.id}
162-
/>
139+
>
140+
<DataTableToolbar table={table.table}>
141+
{/* <DataTableSortList table={table.table} align="end" /> */}
142+
</DataTableToolbar>
143+
</DataTable>
163144
</CardContent>
164145
</Card>
165146
);

apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/frameworks/[frameworkInstanceId]/requirements/[requirementKey]/components/table/RequirementControlsTable.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,9 @@ export function RequirementControlsTable({
100100
onChange={(e) => setSearchTerm(e.target.value)}
101101
className="max-w-sm"
102102
/>
103-
<div className="ml-auto">
103+
{/* <div className="ml-auto">
104104
<DataTableSortList table={table.table} />
105-
</div>
105+
</div> */}
106106
</div>
107107
<DataTable
108108
table={table.table}

apps/app/src/app/[locale]/(app)/(dashboard)/[orgId]/policies/all/components/policies-table.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export function PoliciesTable({ promises }: PoliciesTableProps) {
4646
sheet="create-policy-sheet"
4747
action="Create Policy"
4848
>
49-
<DataTableSortList table={table} align="end" />
49+
{/* <DataTableSortList table={table} align="end" /> */}
5050
</DataTableToolbar>
5151
</DataTable>
5252
<CreatePolicySheet />

0 commit comments

Comments
 (0)