Skip to content

Commit 347b93e

Browse files
authored
fix(frontend): refine documents table filters and enhance source URI display (#678)
1 parent 4818529 commit 347b93e

File tree

2 files changed

+31
-14
lines changed

2 files changed

+31
-14
lines changed

frontend/app/src/components/documents/documents-table-filters.tsx

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,11 @@ export function DocumentsTableFilters ({ knowledgeBaseId, table, onFilterChange
4848
<FormControl>
4949
<Input
5050
name={field.name}
51-
className="h-8 text-sm w-[500px]"
51+
className="h-8 text-sm w-[300px]"
5252
onBlur={field.handleBlur}
5353
onChange={ev => field.handleChange(ev.target.value)}
5454
value={field.state.value ?? ''}
55-
placeholder="Search name or source..."
55+
placeholder="Search documents"
5656
onKeyDown={(e) => {
5757
if (e.key === 'Enter') {
5858
e.preventDefault();
@@ -89,14 +89,14 @@ export function DocumentsTableFilters ({ knowledgeBaseId, table, onFilterChange
8989
</div>
9090

9191
{/* Bottom row - Filters */}
92-
<div className="flex items-center gap-2">
92+
<div className="flex items-center gap-2 flex-wrap">
9393

9494
<FormField
9595
name="mime_type"
9696
render={(field) => (
9797
<FormItem>
9898
<Select value={field.state.value ?? ''} name={field.name} onValueChange={field.handleChange}>
99-
<SelectTrigger className="h-8 text-sm font-normal hover:bg-accent min-w-[120px]" onBlur={field.handleBlur}>
99+
<SelectTrigger className="h-8 text-sm font-normal hover:bg-accent" onBlur={field.handleBlur}>
100100
<SelectValue placeholder="Document Type" />
101101
</SelectTrigger>
102102
<SelectContent>
@@ -116,7 +116,7 @@ export function DocumentsTableFilters ({ knowledgeBaseId, table, onFilterChange
116116
render={(field) => (
117117
<FormItem>
118118
<Select value={field.state.value ?? ''} name={field.name} onValueChange={field.handleChange}>
119-
<SelectTrigger className="h-8 text-sm font-normal hover:bg-accent min-w-[120px]" onBlur={field.handleBlur}>
119+
<SelectTrigger className="h-8 text-sm font-normal hover:bg-accent" onBlur={field.handleBlur}>
120120
<SelectValue placeholder="Index Status" />
121121
</SelectTrigger>
122122
<SelectContent>
@@ -139,7 +139,6 @@ export function DocumentsTableFilters ({ knowledgeBaseId, table, onFilterChange
139139
value={field.state.value ? { from: field.state.value[0], to: field.state.value[1] } : undefined}
140140
onChange={(range) => field.handleChange(range ? [range.from, range.to] : undefined)}
141141
placeholder="Created Time"
142-
className="w-[180px]"
143142
size="sm"
144143
/>
145144
</FormItem>
@@ -154,7 +153,6 @@ export function DocumentsTableFilters ({ knowledgeBaseId, table, onFilterChange
154153
value={field.state.value ? { from: field.state.value[0], to: field.state.value[1] } : undefined}
155154
onChange={(range) => field.handleChange(range ? [range.from, range.to] : undefined)}
156155
placeholder="Updated Time"
157-
className="w-[180px]"
158156
size="sm"
159157
/>
160158
</FormItem>
@@ -169,7 +167,6 @@ export function DocumentsTableFilters ({ knowledgeBaseId, table, onFilterChange
169167
value={field.state.value ? { from: field.state.value[0], to: field.state.value[1] } : undefined}
170168
onChange={(range) => field.handleChange(range ? [range.from, range.to] : undefined)}
171169
placeholder="Last Modified Time"
172-
className="w-[180px]"
173170
size="sm"
174171
/>
175172
</FormItem>

frontend/app/src/components/documents/documents-table.tsx

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,39 @@ import { DataTableRemote } from '@/components/data-table-remote';
1111
import { DocumentPreviewDialog } from '@/components/document-viewer';
1212
import { DocumentsTableFilters } from '@/components/documents/documents-table-filters';
1313
import { getErrorMessage } from '@/lib/errors';
14-
import type { ColumnDef } from '@tanstack/react-table';
14+
import type { CellContext, ColumnDef } from '@tanstack/react-table';
1515
import { createColumnHelper } from '@tanstack/table-core';
16-
import { TrashIcon, UploadIcon, BlocksIcon, WrenchIcon, DownloadIcon } from 'lucide-react';
16+
import { TrashIcon, UploadIcon, BlocksIcon, WrenchIcon, DownloadIcon, FileDownIcon } from 'lucide-react';
1717
import { useMemo, useState } from 'react';
1818
import { toast } from 'sonner';
1919
import { Input } from '@/components/ui/input';
2020
import { Button } from '@/components/ui/button';
21+
import { parseHref } from '@/components/chat/utils';
2122

2223
const helper = createColumnHelper<Document>();
2324

25+
const truncateUrl = (url: string, maxLength: number = 30): string => {
26+
if (!url || url.length <= maxLength) return url;
27+
const start = url.substring(0, maxLength / 2);
28+
const end = url.substring(url.length - maxLength / 2);
29+
return `${start}...${end}`;
30+
};
31+
32+
const href = (cell: CellContext<Document, string>) => {
33+
const url = cell.getValue();
34+
if (/^https?:\/\//.test(url)) {
35+
return <a className="underline" href={url} target="_blank">{url}</a>;
36+
} else if (url.startsWith('uploads/')) {
37+
return (
38+
<a className="underline" {...parseHref(cell.row.original)}>
39+
<FileDownIcon className="inline-flex size-4 mr-1 stroke-1" />
40+
{truncateUrl(url)}
41+
</a>
42+
);
43+
} else {
44+
return <span title={url}>{truncateUrl(url)}</span>;
45+
}
46+
};
2447

2548

2649
const getColumns = (kbId: number) => [
@@ -38,10 +61,7 @@ const getColumns = (kbId: number) => [
3861
}),
3962
helper.accessor('source_uri', {
4063
header: "SOURCE URI",
41-
cell: link({
42-
icon: <DownloadIcon className="size-3" />,
43-
truncate: true,
44-
}),
64+
cell: href,
4565
}),
4666
helper.accessor('data_source', { header: "DATA SOURCE", cell: ctx => <DatasourceCell {...ctx.getValue()} /> }),
4767
helper.accessor('updated_at', { header: "LAST UPDATED", cell: datetime }),

0 commit comments

Comments
 (0)