diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/base-task-filters-cloud.component.ts b/lib/process-services-cloud/src/lib/task/task-filters/components/base-task-filters-cloud.component.ts
index 35fab24993..22e3678864 100644
--- a/lib/process-services-cloud/src/lib/task/task-filters/components/base-task-filters-cloud.component.ts
+++ b/lib/process-services-cloud/src/lib/task/task-filters/components/base-task-filters-cloud.component.ts
@@ -15,8 +15,8 @@
* limitations under the License.
*/
-import { EventEmitter, Input, Output, OnDestroy, Directive } from '@angular/core';
-import { Observable, Subject } from 'rxjs';
+import { Directive, EventEmitter, Input, OnDestroy, Output } from '@angular/core';
+import { Subject } from 'rxjs';
import { FilterParamsModel } from '../models/filter-cloud.model';
@Directive()
@@ -45,7 +45,7 @@ export abstract class BaseTaskFiltersCloudComponent implements OnDestroy {
@Output()
error: EventEmitter
= new EventEmitter();
- counters$: { [key: string]: Observable } = {};
+ counters: { [key: string]: number } = {};
updatedCountersSet = new Set();
protected onDestroy$ = new Subject();
diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.spec.ts
index 38bfba8694..322f67eb1a 100644
--- a/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.spec.ts
+++ b/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.spec.ts
@@ -283,8 +283,8 @@ describe('TaskFiltersCloudComponent', () => {
const updatedFilterCounters = fixture.debugElement.queryAll(By.css('span.adf-active'));
expect(updatedFilterCounters.length).toBe(1);
- expect(Object.keys(component.counters$).length).toBe(1);
- expect(component.counters$['fake-involved-tasks']).toBeDefined();
+ expect(Object.keys(component.counters).length).toBe(3);
+ expect(component.counters['fake-involved-tasks']).toBeDefined();
});
it('should not update filter counter when notifications are disabled from app.config.json', fakeAsync(() => {
diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.ts b/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.ts
index 97c34a5fbd..b8062d510f 100644
--- a/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.ts
+++ b/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.ts
@@ -87,6 +87,7 @@ export class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent imp
(res) => {
this.resetFilter();
this.filters = res || [];
+ this.initFilterCounters();
this.selectFilterAndEmit(this.filterParam);
this.updateFilterCounters();
this.success.emit(res);
@@ -97,17 +98,39 @@ export class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent imp
);
}
- updateFilterCounters() {
+ /**
+ * Initialize counter collection for filters
+ */
+ initFilterCounters(): void {
+ this.filters.forEach((filter) => (this.counters[filter.key] = 0));
+ }
+
+ /**
+ * Iterate over filters and update counters
+ */
+ updateFilterCounters(): void {
this.filters.forEach((filter: TaskFilterCloudModel) => this.updateFilterCounter(filter));
}
- updateFilterCounter(filter: TaskFilterCloudModel) {
+ /**
+ * Get current value for filter and check if value has changed
+ * @param filter filter
+ */
+ updateFilterCounter(filter: TaskFilterCloudModel): void {
if (filter?.showCounter) {
- this.counters$[filter.key] = this.taskFilterCloudService.getTaskFilterCounter(filter).pipe(
- tap((filterCounter) => {
- this.checkIfFilterValuesHasBeenUpdated(filter.key, filterCounter);
- })
- );
+ this.taskFilterCloudService
+ .getTaskFilterCounter(filter)
+ .pipe(
+ tap((filterCounter) => {
+ this.checkIfFilterValuesHasBeenUpdated(filter.key, filterCounter);
+ })
+ )
+ .subscribe((data) => {
+ this.counters = {
+ ...this.counters,
+ [filter.key]: data
+ };
+ });
}
}