@@ -16,10 +16,12 @@ import { UserService } from "~/lib/service/api/userService";
16
16
import { RouteHandle } from "~/lib/service/routeHandles" ;
17
17
import { RouteQueryParams , RouteService } from "~/lib/service/routeService" ;
18
18
import { timeSince } from "~/lib/utils" ;
19
+ import { filterByCreatedRange } from "~/lib/utils/filter" ;
19
20
20
21
import {
21
22
DataTable ,
22
23
DataTableFilter ,
24
+ DataTableTimeFilter ,
23
25
useRowNavigate ,
24
26
} from "~/components/composed/DataTable" ;
25
27
import { Filters } from "~/components/composed/Filters" ;
@@ -61,7 +63,8 @@ export default function TaskRuns() {
61
63
? value
62
64
: $path ( "/chat-threads/:id" , { id : value . id } )
63
65
) ;
64
- const { agentId, userId } = useLoaderData < typeof clientLoader > ( ) ;
66
+ const { agentId, userId, createdStart, createdEnd } =
67
+ useLoaderData < typeof clientLoader > ( ) ;
65
68
66
69
const getThreads = useSWR ( ...ThreadsService . getThreads . swr ( { } ) ) ;
67
70
const getAgents = useSWR ( ...AgentService . getAgents . swr ( { } ) ) ;
@@ -86,8 +89,16 @@ export default function TaskRuns() {
86
89
) ;
87
90
}
88
91
92
+ if ( createdStart ) {
93
+ filteredThreads = filterByCreatedRange (
94
+ filteredThreads ,
95
+ createdStart ,
96
+ createdEnd
97
+ ) ;
98
+ }
99
+
89
100
return filteredThreads ;
90
- } , [ getThreads . data , agentId , userId ] ) ;
101
+ } , [ getThreads . data , agentId , userId , createdStart , createdEnd ] ) ;
91
102
92
103
const agentMap = useMemo (
93
104
( ) => new Map ( getAgents . data ?. map ( ( agent ) => [ agent . id , agent ] ) ) ,
@@ -160,6 +171,8 @@ export default function TaskRuns() {
160
171
$path ( "/chat-threads" , {
161
172
agentId : value ,
162
173
...( userId && { userId } ) ,
174
+ ...( createdStart && { createdStart } ) ,
175
+ ...( createdEnd && { createdEnd } ) ,
163
176
} )
164
177
) ;
165
178
} }
@@ -183,6 +196,8 @@ export default function TaskRuns() {
183
196
$path ( "/chat-threads" , {
184
197
userId : value ,
185
198
...( agentId && { agentId } ) ,
199
+ ...( createdStart && { createdStart } ) ,
200
+ ...( createdEnd && { createdEnd } ) ,
186
201
} )
187
202
) ;
188
203
} }
@@ -191,7 +206,26 @@ export default function TaskRuns() {
191
206
} ) ,
192
207
columnHelper . accessor ( "created" , {
193
208
id : "created" ,
194
- header : "Created" ,
209
+ header : ( { column } ) => (
210
+ < DataTableTimeFilter
211
+ key = { column . id }
212
+ field = "Created"
213
+ dateRange = { {
214
+ from : createdStart ? new Date ( createdStart ) : undefined ,
215
+ to : createdEnd ? new Date ( createdEnd ) : undefined ,
216
+ } }
217
+ onSelect = { ( range ) => {
218
+ navigate . internal (
219
+ $path ( "/chat-threads" , {
220
+ createdStart : range . from ?. toDateString ( ) ,
221
+ createdEnd : range . to ?. toDateString ( ) ,
222
+ ...( agentId && { agentId } ) ,
223
+ ...( userId && { userId } ) ,
224
+ } )
225
+ ) ;
226
+ } }
227
+ />
228
+ ) ,
195
229
cell : ( info ) => (
196
230
< p > { timeSince ( new Date ( info . row . original . created ) ) } ago</ p >
197
231
) ,
0 commit comments