From f6c526ca7f0e351d076b59f82a97d98ada8f4469 Mon Sep 17 00:00:00 2001 From: Jon Herron Date: Wed, 16 Nov 2022 10:50:47 -0500 Subject: [PATCH 1/7] Set date filters from response --- src/components/ProcessInstanceListTable.tsx | 35 +++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/components/ProcessInstanceListTable.tsx b/src/components/ProcessInstanceListTable.tsx index ceb0e99..ec2397c 100644 --- a/src/components/ProcessInstanceListTable.tsx +++ b/src/components/ProcessInstanceListTable.tsx @@ -62,6 +62,7 @@ export default function ProcessInstanceListTable({ const [processInstances, setProcessInstances] = useState([]); const [reportMetadata, setReportMetadata] = useState({}); const [pagination, setPagination] = useState(null); + const [processInstanceFilters, setProcessInstanceFilters] = useState({}); const oneHourInSeconds = 3600; const oneMonthInSeconds = oneHourInSeconds * 24 * 30; @@ -108,6 +109,7 @@ export default function ProcessInstanceListTable({ setProcessInstances(processInstancesFromApi); setReportMetadata(result.report_metadata); setPagination(result.pagination); + setProcessInstanceFilters(result.filters); } function getProcessInstances() { // eslint-disable-next-line prefer-const @@ -212,6 +214,39 @@ export default function ProcessInstanceListTable({ perPageOptions, ]); + useEffect(() => { + console.log(processInstanceFilters); + const filters = processInstanceFilters as any; + Object.keys(parametersToAlwaysFilterBy).forEach((paramName: string) => { + // @ts-expect-error TS(7053) FIXME: + const functionToCall = parametersToAlwaysFilterBy[paramName]; + const paramValue = filters[paramName]; + if (paramValue) { + const dateString = convertSecondsToFormattedDate(paramValue as any); + functionToCall(dateString); + setShowFilterOptions(true); + } + }); + + Object.keys(parametersToGetFromSearchParams).forEach( + (paramName: string) => { + if ( + paramName === 'process_model_identifier' && + processModelFullIdentifier + ) { + // queryParamString += `&process_model_identifier=${processModelFullIdentifier}`; + } else if (filters[paramName]) { + // @ts-expect-error TS(7053) FIXME: + const functionToCall = parametersToGetFromSearchParams[paramName]; + if (functionToCall !== null) { + functionToCall(searchParams.get(paramName) || ''); + } + setShowFilterOptions(true); + } + } + ); + }, [processInstanceFilters]); + // does the comparison, but also returns false if either argument // is not truthy and therefore not comparable. const isTrueComparison = (param1: any, operation: any, param2: any) => { From 8714a0ae2e32464a583169e3f669c34eb01e8b10 Mon Sep 17 00:00:00 2001 From: Jon Herron Date: Wed, 16 Nov 2022 11:45:34 -0500 Subject: [PATCH 2/7] Set status from filters --- src/components/ProcessInstanceListTable.tsx | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/components/ProcessInstanceListTable.tsx b/src/components/ProcessInstanceListTable.tsx index ec2397c..d5a28bf 100644 --- a/src/components/ProcessInstanceListTable.tsx +++ b/src/components/ProcessInstanceListTable.tsx @@ -235,12 +235,18 @@ export default function ProcessInstanceListTable({ processModelFullIdentifier ) { // queryParamString += `&process_model_identifier=${processModelFullIdentifier}`; - } else if (filters[paramName]) { - // @ts-expect-error TS(7053) FIXME: - const functionToCall = parametersToGetFromSearchParams[paramName]; - if (functionToCall !== null) { - functionToCall(searchParams.get(paramName) || ''); - } + } else if ( + paramName === 'process_status' && + typeof filters.process_status === 'string' + ) { + const processStatusSelectedArray: string[] = []; + PROCESS_STATUSES.forEach((processStatusOption: any) => { + const regex = new RegExp(`\\b${processStatusOption}\\b`); + if (filters.process_status.match(regex)) { + processStatusSelectedArray.push(processStatusOption); + } + }); + setProcessStatusSelection(processStatusSelectedArray); setShowFilterOptions(true); } } From f390f82be38df1a36ed99214793be645163db727 Mon Sep 17 00:00:00 2001 From: Jon Herron Date: Wed, 16 Nov 2022 13:51:24 -0500 Subject: [PATCH 3/7] Set process model from filter --- src/components/ProcessInstanceListTable.tsx | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/components/ProcessInstanceListTable.tsx b/src/components/ProcessInstanceListTable.tsx index d5a28bf..543b9a4 100644 --- a/src/components/ProcessInstanceListTable.tsx +++ b/src/components/ProcessInstanceListTable.tsx @@ -215,7 +215,6 @@ export default function ProcessInstanceListTable({ ]); useEffect(() => { - console.log(processInstanceFilters); const filters = processInstanceFilters as any; Object.keys(parametersToAlwaysFilterBy).forEach((paramName: string) => { // @ts-expect-error TS(7053) FIXME: @@ -232,9 +231,13 @@ export default function ProcessInstanceListTable({ (paramName: string) => { if ( paramName === 'process_model_identifier' && - processModelFullIdentifier + typeof filters.process_model_identifier === 'string' ) { - // queryParamString += `&process_model_identifier=${processModelFullIdentifier}`; + processModelAvailableItems.forEach((item: any) => { + if (item.id === filters.process_model_identifier) { + setProcessModelSelection(item); + } + }); } else if ( paramName === 'process_status' && typeof filters.process_status === 'string' @@ -251,7 +254,12 @@ export default function ProcessInstanceListTable({ } } ); - }, [processInstanceFilters]); + }, [ + processInstanceFilters, + parametersToAlwaysFilterBy, + parametersToGetFromSearchParams, + processModelAvailableItems, + ]); // does the comparison, but also returns false if either argument // is not truthy and therefore not comparable. From 035ab5600b8901cad28dd53c43cbfb98855a45b5 Mon Sep 17 00:00:00 2001 From: Jon Herron Date: Wed, 16 Nov 2022 15:02:33 -0500 Subject: [PATCH 4/7] Add flag to indicate if user filtered --- src/components/ProcessInstanceListTable.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/components/ProcessInstanceListTable.tsx b/src/components/ProcessInstanceListTable.tsx index 543b9a4..8f482a5 100644 --- a/src/components/ProcessInstanceListTable.tsx +++ b/src/components/ProcessInstanceListTable.tsx @@ -125,6 +125,11 @@ export default function ProcessInstanceListTable({ } let queryParamString = `per_page=${perPage}&page=${page}`; + const userAppliedFilter = searchParams.get('user_filter'); + if (userAppliedFilter) { + queryParamString += `&user_filter=${userAppliedFilter}`; + } + Object.keys(parametersToAlwaysFilterBy).forEach((paramName: string) => { // @ts-expect-error TS(7053) FIXME: const functionToCall = parametersToAlwaysFilterBy[paramName]; @@ -286,7 +291,7 @@ export default function ProcessInstanceListTable({ undefined, paginationQueryParamPrefix ); - let queryParamString = `per_page=${perPage}&page=${page}`; + let queryParamString = `per_page=${perPage}&page=${page}&user_filter=true`; const startFromSeconds = convertDateStringToSeconds(startFrom); const endFromSeconds = convertDateStringToSeconds(endFrom); @@ -338,6 +343,7 @@ export default function ProcessInstanceListTable({ } setErrorMessage(null); + console.log(queryParamString); navigate(`/admin/process-instances?${queryParamString}`); }; From c7e4feab1941f82414ea8f16a83621d82713a20b Mon Sep 17 00:00:00 2001 From: Jon Herron Date: Wed, 16 Nov 2022 16:25:19 -0500 Subject: [PATCH 5/7] Clear/remove filter works --- src/components/ProcessInstanceListTable.tsx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/components/ProcessInstanceListTable.tsx b/src/components/ProcessInstanceListTable.tsx index 8f482a5..b77f4fb 100644 --- a/src/components/ProcessInstanceListTable.tsx +++ b/src/components/ProcessInstanceListTable.tsx @@ -225,6 +225,7 @@ export default function ProcessInstanceListTable({ // @ts-expect-error TS(7053) FIXME: const functionToCall = parametersToAlwaysFilterBy[paramName]; const paramValue = filters[paramName]; + functionToCall(''); if (paramValue) { const dateString = convertSecondsToFormattedDate(paramValue as any); functionToCall(dateString); @@ -234,20 +235,19 @@ export default function ProcessInstanceListTable({ Object.keys(parametersToGetFromSearchParams).forEach( (paramName: string) => { - if ( - paramName === 'process_model_identifier' && - typeof filters.process_model_identifier === 'string' - ) { + if (paramName === 'process_model_identifier') { + setProcessModelSelection(null); processModelAvailableItems.forEach((item: any) => { if (item.id === filters.process_model_identifier) { setProcessModelSelection(item); } }); - } else if ( - paramName === 'process_status' && - typeof filters.process_status === 'string' - ) { + } else if (paramName === 'process_status') { const processStatusSelectedArray: string[] = []; + setProcessStatusSelection(processStatusSelectedArray); + if (!filters.process_status) { + return; + } PROCESS_STATUSES.forEach((processStatusOption: any) => { const regex = new RegExp(`\\b${processStatusOption}\\b`); if (filters.process_status.match(regex)) { From e0af333d30a429b33b2e456b118162be12fd76f1 Mon Sep 17 00:00:00 2001 From: Jon Herron Date: Wed, 16 Nov 2022 16:31:58 -0500 Subject: [PATCH 6/7] lint --- src/components/ProcessInstanceListTable.tsx | 42 +++++++++------------ 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/src/components/ProcessInstanceListTable.tsx b/src/components/ProcessInstanceListTable.tsx index b77f4fb..217b042 100644 --- a/src/components/ProcessInstanceListTable.tsx +++ b/src/components/ProcessInstanceListTable.tsx @@ -233,32 +233,24 @@ export default function ProcessInstanceListTable({ } }); - Object.keys(parametersToGetFromSearchParams).forEach( - (paramName: string) => { - if (paramName === 'process_model_identifier') { - setProcessModelSelection(null); - processModelAvailableItems.forEach((item: any) => { - if (item.id === filters.process_model_identifier) { - setProcessModelSelection(item); - } - }); - } else if (paramName === 'process_status') { - const processStatusSelectedArray: string[] = []; - setProcessStatusSelection(processStatusSelectedArray); - if (!filters.process_status) { - return; - } - PROCESS_STATUSES.forEach((processStatusOption: any) => { - const regex = new RegExp(`\\b${processStatusOption}\\b`); - if (filters.process_status.match(regex)) { - processStatusSelectedArray.push(processStatusOption); - } - }); - setProcessStatusSelection(processStatusSelectedArray); - setShowFilterOptions(true); - } + setProcessModelSelection(null); + processModelAvailableItems.forEach((item: any) => { + if (item.id === filters.process_model_identifier) { + setProcessModelSelection(item); } - ); + }); + + const processStatusSelectedArray: string[] = []; + if (filters.process_status) { + PROCESS_STATUSES.forEach((processStatusOption: any) => { + const regex = new RegExp(`\\b${processStatusOption}\\b`); + if (filters.process_status.match(regex)) { + processStatusSelectedArray.push(processStatusOption); + } + }); + setShowFilterOptions(true); + } + setProcessStatusSelection(processStatusSelectedArray); }, [ processInstanceFilters, parametersToAlwaysFilterBy, From cc52a5577b01c3c6ab7b36fe6682bbcd21342f59 Mon Sep 17 00:00:00 2001 From: Jon Herron Date: Wed, 16 Nov 2022 16:40:35 -0500 Subject: [PATCH 7/7] Pre-pr cleanup --- src/components/ProcessInstanceListTable.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/ProcessInstanceListTable.tsx b/src/components/ProcessInstanceListTable.tsx index 217b042..11ba5d6 100644 --- a/src/components/ProcessInstanceListTable.tsx +++ b/src/components/ProcessInstanceListTable.tsx @@ -335,7 +335,6 @@ export default function ProcessInstanceListTable({ } setErrorMessage(null); - console.log(queryParamString); navigate(`/admin/process-instances?${queryParamString}`); };