This is an automated email from the ASF dual-hosted git repository.
rfellows pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push:
new 15a56a1902 NIFI-13378: Adds Version State as filterable option in
Process Groups tab in Summary (#8945)
15a56a1902 is described below
commit 15a56a19026c093b7b838c04613195a77e90efdb
Author: sujkm <[email protected]>
AuthorDate: Mon Jun 10 18:22:26 2024 -0400
NIFI-13378: Adds Version State as filterable option in Process Groups tab
in Summary (#8945)
* NIFI-13378: Adds Version State as filterable option in Process Groups tab
in Summary
* updated value of selections to enum values
This closes #8945
---
.../summary-table-filter.component.html | 15 ++++
.../summary-table-filter.component.ts | 87 ++++++++++++++++++++--
.../process-group-status-table.component.html | 1 +
.../process-group-status-table.component.ts | 9 ++-
4 files changed, 106 insertions(+), 6 deletions(-)
diff --git
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/summary/ui/common/summary-table-filter/summary-table-filter.component.html
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/summary/ui/common/summary-table-filter/summary-table-filter.component.html
index bec08f9269..e2538407ae 100644
---
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/summary/ui/common/summary-table-filter/summary-table-filter.component.html
+++
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/summary/ui/common/summary-table-filter/summary-table-filter.component.html
@@ -50,6 +50,21 @@
</mat-form-field>
</div>
}
+ @if (includeVersionedFlowStateFilter) {
+ <div>
+ <mat-form-field subscriptSizing="dynamic">
+ <mat-label>Version State</mat-label>
+ <mat-select
formControlName="filterVersionedFlowState">
+ <mat-option value="All">All States</mat-option>
+ <mat-option value="UP_TO_DATE">Up to
date</mat-option>
+ <mat-option value="LOCALLY_MODIFIED">Locally
modified</mat-option>
+ <mat-option value="STALE">Stale</mat-option>
+ <mat-option
value="LOCALLY_MODIFIED_AND_STALE">Locally modified and stale</mat-option>
+ <mat-option value="SYNC_FAILURE">Sync
failure</mat-option>
+ </mat-select>
+ </mat-form-field>
+ </div>
+ }
@if (includePrimaryNodeOnlyFilter) {
<div>
<mat-checkbox color="primary"
formControlName="primaryOnly"></mat-checkbox>
diff --git
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/summary/ui/common/summary-table-filter/summary-table-filter.component.ts
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/summary/ui/common/summary-table-filter/summary-table-filter.component.ts
index f09115e6ad..2eae944f60 100644
---
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/summary/ui/common/summary-table-filter/summary-table-filter.component.ts
+++
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/summary/ui/common/summary-table-filter/summary-table-filter.component.ts
@@ -30,6 +30,7 @@ export interface SummaryTableFilterArgs {
filterTerm: string;
filterColumn: string;
filterStatus?: string;
+ filterVersionedFlowState?: string;
primaryOnly?: boolean;
clusterNode?: NodeSearchResult;
}
@@ -69,6 +70,7 @@ export class SummaryTableFilter implements AfterViewInit {
@Input() includeStatusFilter = false;
@Input() includePrimaryNodeOnlyFilter = false;
+ @Input() includeVersionedFlowStateFilter = false;
@Input() set selectedNode(node: NodeSearchResult | null) {
const n: NodeSearchResult = node ? (node.id !== 'All' ? node :
this.allNodes) : this.allNodes;
@@ -137,6 +139,12 @@ export class SummaryTableFilter implements AfterViewInit {
}
}
+ @Input() set filterVersionedFlowState(state: string) {
+ if (this.includeVersionedFlowStateFilter) {
+ this.filterForm.get('filterVersionedFlowState')?.value(state);
+ }
+ }
+
@Input() set filteredCount(count: number) {
this._filteredCount = count;
}
@@ -158,6 +166,7 @@ export class SummaryTableFilter implements AfterViewInit {
filterTerm: '',
filterColumn: this._initialFilterColumn || 'name',
filterStatus: 'All',
+ filterVersionedFlowState: 'All',
primaryOnly: false,
clusterNode: this.allNodes
});
@@ -170,9 +179,18 @@ export class SummaryTableFilter implements AfterViewInit {
.subscribe((filterTerm: string) => {
const filterColumn =
this.filterForm.get('filterColumn')?.value;
const filterStatus =
this.filterForm.get('filterStatus')?.value;
+ const filterVersionedFlowState =
this.filterForm.get('filterVersionedFlowState')?.value;
const primaryOnly = this.filterForm.get('primaryOnly')?.value;
const clusterNode = this.filterForm.get('clusterNode')?.value;
- this.applyFilter(filterTerm, filterColumn, filterStatus,
primaryOnly, clusterNode, 'filterTerm');
+ this.applyFilter(
+ filterTerm,
+ filterColumn,
+ filterStatus,
+ filterVersionedFlowState,
+ primaryOnly,
+ clusterNode,
+ 'filterTerm'
+ );
});
this.filterForm
@@ -181,20 +199,58 @@ export class SummaryTableFilter implements AfterViewInit {
.subscribe((filterColumn: string) => {
const filterTerm = this.filterForm.get('filterTerm')?.value;
const filterStatus =
this.filterForm.get('filterStatus')?.value;
+ const filterVersionedFlowState =
this.filterForm.get('filterVersionedFlowState')?.value;
const primaryOnly = this.filterForm.get('primaryOnly')?.value;
const clusterNode = this.filterForm.get('clusterNode')?.value;
- this.applyFilter(filterTerm, filterColumn, filterStatus,
primaryOnly, clusterNode, 'filterColumn');
+ this.applyFilter(
+ filterTerm,
+ filterColumn,
+ filterStatus,
+ filterVersionedFlowState,
+ primaryOnly,
+ clusterNode,
+ 'filterColumn'
+ );
});
this.filterForm
.get('filterStatus')
?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((filterStatus: string) => {
+ const filterTerm = this.filterForm.get('filterTerm')?.value;
+ const filterVersionedFlowState =
this.filterForm.get('filterVersionedFlowState')?.value;
+ const filterColumn =
this.filterForm.get('filterColumn')?.value;
+ const primaryOnly = this.filterForm.get('primaryOnly')?.value;
+ const clusterNode = this.filterForm.get('clusterNode')?.value;
+ this.applyFilter(
+ filterTerm,
+ filterColumn,
+ filterStatus,
+ filterVersionedFlowState,
+ primaryOnly,
+ clusterNode,
+ 'filterStatus'
+ );
+ });
+
+ this.filterForm
+ .get('filterVersionedFlowState')
+ ?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef))
+ .subscribe((filterVersionedFlowState: string) => {
const filterTerm = this.filterForm.get('filterTerm')?.value;
const filterColumn =
this.filterForm.get('filterColumn')?.value;
+ const filterStatus =
this.filterForm.get('filterStatus')?.value;
const primaryOnly = this.filterForm.get('primaryOnly')?.value;
const clusterNode = this.filterForm.get('clusterNode')?.value;
- this.applyFilter(filterTerm, filterColumn, filterStatus,
primaryOnly, clusterNode, 'filterStatus');
+ this.applyFilter(
+ filterTerm,
+ filterColumn,
+ filterStatus,
+ filterVersionedFlowState,
+ primaryOnly,
+ clusterNode,
+ 'filterVersionedFlowState'
+ );
});
this.filterForm
@@ -204,8 +260,17 @@ export class SummaryTableFilter implements AfterViewInit {
const filterTerm = this.filterForm.get('filterTerm')?.value;
const filterColumn =
this.filterForm.get('filterColumn')?.value;
const filterStatus =
this.filterForm.get('filterStatus')?.value;
+ const filterVersionedFlowState =
this.filterForm.get('filterVersionedFlowState')?.value;
const clusterNode = this.filterForm.get('clusterNode')?.value;
- this.applyFilter(filterTerm, filterColumn, filterStatus,
primaryOnly, clusterNode, 'primaryOnly');
+ this.applyFilter(
+ filterTerm,
+ filterColumn,
+ filterStatus,
+ filterVersionedFlowState,
+ primaryOnly,
+ clusterNode,
+ 'primaryOnly'
+ );
});
this.filterForm
@@ -217,8 +282,17 @@ export class SummaryTableFilter implements AfterViewInit {
const filterTerm =
this.filterForm.get('filterTerm')?.value;
const filterColumn =
this.filterForm.get('filterColumn')?.value;
const filterStatus =
this.filterForm.get('filterStatus')?.value;
+ const filterVersionedFlowState =
this.filterForm.get('filterVersionedFlowState')?.value;
const primaryOnly =
this.filterForm.get('primaryOnly')?.value;
- this.applyFilter(filterTerm, filterColumn, filterStatus,
primaryOnly, clusterNode, 'clusterNode');
+ this.applyFilter(
+ filterTerm,
+ filterColumn,
+ filterStatus,
+ filterVersionedFlowState,
+ primaryOnly,
+ clusterNode,
+ 'clusterNode'
+ );
}
});
}
@@ -227,6 +301,7 @@ export class SummaryTableFilter implements AfterViewInit {
filterTerm: string,
filterColumn: string,
filterStatus: string,
+ filterVersionedFlowState: string,
primaryOnly: boolean,
clusterNode: NodeSearchResult,
changedField: string
@@ -234,6 +309,7 @@ export class SummaryTableFilter implements AfterViewInit {
this.filterChanged.next({
filterColumn,
filterStatus,
+ filterVersionedFlowState,
filterTerm,
primaryOnly,
clusterNode,
@@ -242,6 +318,7 @@ export class SummaryTableFilter implements AfterViewInit {
this.showFilterMatchedLabel =
filterTerm?.length > 0 ||
filterStatus !== 'All' ||
+ filterVersionedFlowState !== 'All' ||
primaryOnly ||
(clusterNode ? clusterNode.id !== 'All' : false);
}
diff --git
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/summary/ui/process-group-status-listing/process-group-status-table/process-group-status-table.component.html
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/summary/ui/process-group-status-listing/process-group-status-table/process-group-status-table.component.html
index b2d402fb5d..85ab844c6f 100644
---
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/summary/ui/process-group-status-listing/process-group-status-table/process-group-status-table.component.html
+++
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/summary/ui/process-group-status-listing/process-group-status-table/process-group-status-table.component.html
@@ -24,6 +24,7 @@
[totalCount]="totalCount"
[filterableColumns]="filterableColumns"
[includeStatusFilter]="false"
+ [includeVersionedFlowStateFilter]="true"
[includePrimaryNodeOnlyFilter]="false"
[clusterNodes]="clusterNodes"
[selectedNode]="selectedClusterNode"
diff --git
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/summary/ui/process-group-status-listing/process-group-status-table/process-group-status-table.component.ts
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/summary/ui/process-group-status-listing/process-group-status-table/process-group-status-table.component.ts
index 5e58909b68..e593e9a470 100644
---
a/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/summary/ui/process-group-status-listing/process-group-status-table/process-group-status-table.component.ts
+++
b/nifi-frontend/src/main/frontend/apps/nifi/src/app/pages/summary/ui/process-group-status-listing/process-group-status-table/process-group-status-table.component.ts
@@ -83,7 +83,14 @@ export class ProcessGroupStatusTable extends
ComponentStatusTable<ProcessGroupSt
@Input() rootProcessGroup!: ProcessGroupStatusSnapshot;
override filterPredicate(data: ProcessGroupStatusSnapshotEntity, filter:
string): boolean {
- const { filterTerm, filterColumn } = JSON.parse(filter);
+ const { filterTerm, filterColumn, filterVersionedFlowState } =
JSON.parse(filter);
+ const matchOnVersionedFlowState: boolean = filterVersionedFlowState
!== 'All';
+
+ if (matchOnVersionedFlowState) {
+ if (data.processGroupStatusSnapshot.versionedFlowState !==
filterVersionedFlowState) {
+ return false;
+ }
+ }
if (filterTerm === '') {
return true;