@@ -23,10 +23,10 @@ import {
2323} from "@tanstack/react-table" ;
2424
2525import { useApplicationId } from "../../hooks/application" ;
26- import { FilterToolbar } from "../shared/FilterToolbar" ;
2726import { InternalFilter } from "../../types/Filter" ;
2827import { Job , SearchBody } from "../../types" ;
2928import { JobDataTable } from "./JobDataTable" ;
29+ import { JobSearchBar } from "./JobSearchBar" ;
3030
3131/**
3232 * Build the Job Monitor application
@@ -98,7 +98,7 @@ export default function JobMonitor() {
9898 // Save the state of the app in local storage
9999 useEffect ( ( ) => {
100100 const state = {
101- filters : [ ...filters . filter ( ( filter ) => filter . isApplied ) ] ,
101+ filters : [ ...filters ] ,
102102 columnVisibility : { ...columnVisibility } ,
103103 columnPinning : {
104104 left : [ ...( columnPinning . left || [ ] ) ] ,
@@ -123,15 +123,10 @@ export default function JobMonitor() {
123123
124124 // Handle the application of filters
125125 const handleApplyFilters = ( ) => {
126- // Switch the applied state of the filters
127- setFilters ( ( filters ) =>
128- filters . map ( ( filter ) => ( { ...filter , isApplied : true } ) ) ,
129- ) ;
130-
131126 setSearchBody ( ( prev ) => ( {
132127 ...prev ,
133128 search : filters . map ( ( { parameter, operator, value, values } ) => ( {
134- parameter,
129+ parameter : fromHumanReadableText ( parameter ) ,
135130 operator,
136131 value,
137132 values,
@@ -143,18 +138,6 @@ export default function JobMonitor() {
143138 } ) ) ;
144139 } ;
145140
146- const handleRemoveAllFilters = useCallback ( ( ) => {
147- setSearchBody ( ( prevState ) => ( {
148- ...prevState ,
149- search : [ ] ,
150- } ) ) ;
151- setPagination ( ( prevState ) => ( {
152- ...prevState ,
153- pageIndex : 0 ,
154- } ) ) ;
155- setFilters ( [ ] ) ;
156- } , [ setFilters ] ) ;
157-
158141 // Status colors
159142 const statusColors : Record < string , string > = useMemo (
160143 ( ) => ( {
@@ -300,12 +283,11 @@ export default function JobMonitor() {
300283 overflow : "hidden" ,
301284 } }
302285 >
303- < FilterToolbar
304- columns = { columns }
286+ < JobSearchBar
305287 filters = { filters }
306288 setFilters = { setFilters }
289+ searchBody = { searchBody }
307290 handleApplyFilters = { handleApplyFilters }
308- handleClearFilters = { handleRemoveAllFilters }
309291 />
310292 < JobDataTable
311293 searchBody = { searchBody }
@@ -370,3 +352,41 @@ export function validateAndConvertState(state: string): [string, boolean] {
370352
371353 return [ JSON . stringify ( newState ) , true ] ;
372354}
355+
356+ /**
357+ * Converts a human-readable job attribute name to its internal name.
358+ * @param name - The human-readable name of the job attribute
359+ * @returns The corresponding internal name of the job attribute
360+ */
361+ export function fromHumanReadableText ( name : string ) : string {
362+ switch ( name ) {
363+ case "ID" :
364+ return "JobID" ;
365+ case "Minor Status" :
366+ return "MinorStatus" ;
367+ case "Application Status" :
368+ return "ApplicationStatus" ;
369+ case "Name" :
370+ return "JobName" ;
371+ case "Job Group" :
372+ return "JobGroup" ;
373+ case "Type" :
374+ return "JobType" ;
375+ case "Last Update Time" :
376+ return "LastUpdateTime" ;
377+ case "Last Sign of Life" :
378+ return "HeartBeatTime" ;
379+ case "Submission Time" :
380+ return "SubmissionTime" ;
381+ case "Owner Group" :
382+ return "OwnerGroup" ;
383+ case "Start Execution Time" :
384+ return "StartExecTime" ;
385+ case "End Execution Time" :
386+ return "EndExecTime" ;
387+ case "User Priority" :
388+ return "UserPriority" ;
389+ default :
390+ return name ; // Return the original name if no match found
391+ }
392+ }
0 commit comments