@@ -26,6 +26,7 @@ import { USE_MODELSEED_API } from '@/lib/api/config';
2626import AuthGuard from '@/components/auth/AuthGuard' ;
2727import DataControlHeader from '@/components/layout/DataControlHeader' ;
2828import ExportModal from '@/components/ui/ExportModal' ;
29+ import { useToolbarGridFiltering } from '@/lib/hooks/useToolbarGridFiltering' ;
2930
3031/* ---------- types ---------- */
3132
@@ -322,6 +323,19 @@ function MyJobsContent() {
322323 } ,
323324 ] , [ handleRefreshJob ] ) ;
324325
326+ const handleFiltersApplied = useCallback ( ( ) => {
327+ setPagination ( ( prev ) => ( { ...prev , page : 0 } ) ) ;
328+ } , [ ] ) ;
329+
330+ const {
331+ filteredRows,
332+ handleFilterModelChange,
333+ handleToolbarApplyFilterModel,
334+ } = useToolbarGridFiltering < JobRow > ( {
335+ rows : jobRows ,
336+ onFilterApplied : handleFiltersApplied ,
337+ } ) ;
338+
325339 const exportColumns = useMemo ( ( ) => [
326340 { field : 'id' , headerName : 'Job ID' , defaultSelected : true } ,
327341 { field : 'task' , headerName : 'Task' , defaultSelected : true } ,
@@ -394,7 +408,7 @@ function MyJobsContent() {
394408 ) }
395409
396410 < DataGrid < JobRow >
397- rows = { jobRows }
411+ rows = { filteredRows }
398412 columns = { columns }
399413 pageSizeOptions = { [ 10 , 25 , 50 , 100 ] }
400414 paginationModel = { pagination }
@@ -406,9 +420,16 @@ function MyJobsContent() {
406420 sortModel : [ { field : 'submitted' , sort : 'desc' } ] ,
407421 } ,
408422 } }
423+ filterMode = "server"
424+ onFilterModelChange = { handleFilterModelChange }
409425 showToolbar
410426 slots = { { toolbar : DataControlHeader } }
411- slotProps = { { toolbar : { showQuickFilter : true } } }
427+ slotProps = { {
428+ toolbar : {
429+ showQuickFilter : true ,
430+ onApplyFilterModel : handleToolbarApplyFilterModel ,
431+ } ,
432+ } }
412433 hideFooter
413434 disableRowSelectionOnClick
414435 getRowId = { ( row ) => row . id }
0 commit comments