mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-12 17:04:57 +00:00
[AAE-25268] emit filter key when it's value increased or decreased (#10186)
* [AAE-25268] emit filter key when it's value increased or decreased * [AAE-25268] simplified if
This commit is contained in:
parent
6b6c680b4e
commit
cf9f4cc681
@ -45,10 +45,6 @@ export abstract class BaseTaskFiltersCloudComponent implements OnDestroy {
|
|||||||
@Output()
|
@Output()
|
||||||
error: EventEmitter<any> = new EventEmitter<any>();
|
error: EventEmitter<any> = new EventEmitter<any>();
|
||||||
|
|
||||||
/** Emitted when filter is updated. */
|
|
||||||
@Output()
|
|
||||||
updatedFilter: EventEmitter<string> = new EventEmitter<string>();
|
|
||||||
|
|
||||||
counters$: { [key: string]: Observable<number> } = {};
|
counters$: { [key: string]: Observable<number> } = {};
|
||||||
updatedCounters: string[] = [];
|
updatedCounters: string[] = [];
|
||||||
|
|
||||||
@ -66,7 +62,6 @@ export abstract class BaseTaskFiltersCloudComponent implements OnDestroy {
|
|||||||
addToUpdatedCounters(filterKey: string) {
|
addToUpdatedCounters(filterKey: string) {
|
||||||
if (!this.updatedCounters.includes(filterKey)) {
|
if (!this.updatedCounters.includes(filterKey)) {
|
||||||
this.updatedCounters.push(filterKey);
|
this.updatedCounters.push(filterKey);
|
||||||
this.updatedFilter.emit(filterKey);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ import { TaskFiltersCloudComponent } from './task-filters-cloud.component';
|
|||||||
import { By } from '@angular/platform-browser';
|
import { By } from '@angular/platform-browser';
|
||||||
import { ProcessServiceCloudTestingModule } from '../../../testing/process-service-cloud.testing.module';
|
import { ProcessServiceCloudTestingModule } from '../../../testing/process-service-cloud.testing.module';
|
||||||
import { TaskFiltersCloudModule } from '../task-filters-cloud.module';
|
import { TaskFiltersCloudModule } from '../task-filters-cloud.module';
|
||||||
import { fakeGlobalFilter, defaultTaskFiltersMock, taskNotifications, fakeFilter, fakeFilterNotification } from '../mock/task-filters-cloud.mock';
|
import { fakeGlobalFilter, defaultTaskFiltersMock, taskNotifications } from '../mock/task-filters-cloud.mock';
|
||||||
|
|
||||||
describe('TaskFiltersCloudComponent', () => {
|
describe('TaskFiltersCloudComponent', () => {
|
||||||
let taskFilterService: TaskFilterCloudService;
|
let taskFilterService: TaskFilterCloudService;
|
||||||
@ -329,34 +329,60 @@ describe('TaskFiltersCloudComponent', () => {
|
|||||||
expect(getTaskFilterCounterSpy).toHaveBeenCalledWith(fakeGlobalFilter[0]);
|
expect(getTaskFilterCounterSpy).toHaveBeenCalledWith(fakeGlobalFilter[0]);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should emit filter key when counter is updated', (done) => {
|
it('should not emit filter key when filter counter is set for first time', () => {
|
||||||
component.appName = 'my-app-1';
|
component.currentFiltersValues = {};
|
||||||
component.showIcons = true;
|
const fakeFilterKey = 'testKey';
|
||||||
const testKey = 'my-tasks';
|
const fakeFilterValue = 10;
|
||||||
component.updatedCounters = [];
|
const updatedFilterSpy = spyOn(component.updatedFilter, 'emit');
|
||||||
|
component.checkIfFilterValuesHasBeenUpdated(fakeFilterKey, fakeFilterValue);
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
expect(component.currentFiltersValues).not.toEqual({});
|
||||||
|
expect(component.currentFiltersValues[fakeFilterKey]).toBe(fakeFilterValue);
|
||||||
|
expect(updatedFilterSpy).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not emit filter key when filter counter has not changd', () => {
|
||||||
|
component.currentFiltersValues = {};
|
||||||
|
const fakeFilterKey = 'testKey';
|
||||||
|
const fakeFilterValue = 10;
|
||||||
|
const updatedFilterSpy = spyOn(component.updatedFilter, 'emit');
|
||||||
|
component.checkIfFilterValuesHasBeenUpdated(fakeFilterKey, fakeFilterValue);
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
expect(component.currentFiltersValues).not.toEqual({});
|
||||||
|
expect(component.currentFiltersValues[fakeFilterKey]).toBe(fakeFilterValue);
|
||||||
|
|
||||||
|
component.checkIfFilterValuesHasBeenUpdated(fakeFilterKey, fakeFilterValue);
|
||||||
|
expect(component.currentFiltersValues[fakeFilterKey]).toBe(fakeFilterValue);
|
||||||
|
expect(updatedFilterSpy).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should emit filter key when filter counter is increased', (done) => {
|
||||||
|
component.currentFiltersValues = {};
|
||||||
|
const fakeFilterKey = 'testKey';
|
||||||
|
component.checkIfFilterValuesHasBeenUpdated(fakeFilterKey, 10);
|
||||||
|
|
||||||
component.updatedFilter.pipe(first()).subscribe((updatedFilter: string) => {
|
component.updatedFilter.pipe(first()).subscribe((updatedFilter: string) => {
|
||||||
expect(updatedFilter).toBe(testKey);
|
expect(updatedFilter).toBe(fakeFilterKey);
|
||||||
|
expect(component.currentFiltersValues[fakeFilterKey]).toBe(20);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
component.checkIfFilterValuesHasBeenUpdated(fakeFilterKey, 20);
|
||||||
component.addToUpdatedCounters(testKey);
|
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should emit filter key when filter counter is checked', (done) => {
|
it('should emit filter key when filter counter is decreased', (done) => {
|
||||||
component.appName = 'my-app-1';
|
component.currentFiltersValues = {};
|
||||||
component.showIcons = true;
|
const fakeFilterKey = 'testKey';
|
||||||
component.filters = [fakeFilter];
|
component.checkIfFilterValuesHasBeenUpdated(fakeFilterKey, 10);
|
||||||
fixture.detectChanges();
|
|
||||||
|
|
||||||
component.updatedFilter.pipe(first()).subscribe((updatedFilter: string) => {
|
component.updatedFilter.pipe(first()).subscribe((updatedFilter: string) => {
|
||||||
expect(updatedFilter).not.toBe(fakeFilter.key);
|
expect(updatedFilter).toBe(fakeFilterKey);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
component.checkFilterCounter(fakeFilterNotification);
|
component.checkIfFilterValuesHasBeenUpdated(fakeFilterKey, 5);
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ import { Observable } from 'rxjs';
|
|||||||
import { TaskFilterCloudService } from '../services/task-filter-cloud.service';
|
import { TaskFilterCloudService } from '../services/task-filter-cloud.service';
|
||||||
import { TaskFilterCloudModel, FilterParamsModel } from '../models/filter-cloud.model';
|
import { TaskFilterCloudModel, FilterParamsModel } from '../models/filter-cloud.model';
|
||||||
import { AppConfigService, TranslationService } from '@alfresco/adf-core';
|
import { AppConfigService, TranslationService } from '@alfresco/adf-core';
|
||||||
import { debounceTime, takeUntil } from 'rxjs/operators';
|
import { debounceTime, takeUntil, tap } from 'rxjs/operators';
|
||||||
import { BaseTaskFiltersCloudComponent } from './base-task-filters-cloud.component';
|
import { BaseTaskFiltersCloudComponent } from './base-task-filters-cloud.component';
|
||||||
import { TaskDetailsCloudModel } from '../../start-task/models/task-details-cloud.model';
|
import { TaskDetailsCloudModel } from '../../start-task/models/task-details-cloud.model';
|
||||||
import { TaskCloudEngineEvent } from '../../../models/engine-event-cloud.model';
|
import { TaskCloudEngineEvent } from '../../../models/engine-event-cloud.model';
|
||||||
@ -44,10 +44,15 @@ export class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent imp
|
|||||||
@Output()
|
@Output()
|
||||||
filterCounterUpdated: EventEmitter<TaskCloudEngineEvent[]> = new EventEmitter<TaskCloudEngineEvent[]>();
|
filterCounterUpdated: EventEmitter<TaskCloudEngineEvent[]> = new EventEmitter<TaskCloudEngineEvent[]>();
|
||||||
|
|
||||||
|
/** Emitted when filter is updated. */
|
||||||
|
@Output()
|
||||||
|
updatedFilter: EventEmitter<string> = new EventEmitter<string>();
|
||||||
|
|
||||||
filters$: Observable<TaskFilterCloudModel[]>;
|
filters$: Observable<TaskFilterCloudModel[]>;
|
||||||
filters: TaskFilterCloudModel[] = [];
|
filters: TaskFilterCloudModel[] = [];
|
||||||
currentFilter: TaskFilterCloudModel;
|
currentFilter: TaskFilterCloudModel;
|
||||||
enableNotifications: boolean;
|
enableNotifications: boolean;
|
||||||
|
currentFiltersValues = {};
|
||||||
|
|
||||||
private readonly taskFilterCloudService = inject(TaskFilterCloudService);
|
private readonly taskFilterCloudService = inject(TaskFilterCloudService);
|
||||||
private readonly translationService = inject(TranslationService);
|
private readonly translationService = inject(TranslationService);
|
||||||
@ -97,7 +102,11 @@ export class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent imp
|
|||||||
|
|
||||||
updateFilterCounter(filter: TaskFilterCloudModel) {
|
updateFilterCounter(filter: TaskFilterCloudModel) {
|
||||||
if (filter?.showCounter) {
|
if (filter?.showCounter) {
|
||||||
this.counters$[filter.key] = this.taskFilterCloudService.getTaskFilterCounter(filter);
|
this.counters$[filter.key] = this.taskFilterCloudService.getTaskFilterCounter(filter).pipe(
|
||||||
|
tap((filterCounter) => {
|
||||||
|
this.checkIfFilterValuesHasBeenUpdated(filter.key, filterCounter);
|
||||||
|
})
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,7 +130,6 @@ export class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent imp
|
|||||||
this.filters.map((filter) => {
|
this.filters.map((filter) => {
|
||||||
if (this.isFilterPresent(filter, filterNotification)) {
|
if (this.isFilterPresent(filter, filterNotification)) {
|
||||||
this.addToUpdatedCounters(filter.key);
|
this.addToUpdatedCounters(filter.key);
|
||||||
this.updatedFilter.emit(filter.key);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -204,4 +212,15 @@ export class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent imp
|
|||||||
this.filters = [];
|
this.filters = [];
|
||||||
this.currentFilter = undefined;
|
this.currentFilter = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
checkIfFilterValuesHasBeenUpdated(filterKey: string, filterValue: number) {
|
||||||
|
if (!this.currentFiltersValues[filterKey]) {
|
||||||
|
this.currentFiltersValues[filterKey] = filterValue;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.currentFiltersValues[filterKey] !== filterValue) {
|
||||||
|
this.currentFiltersValues[filterKey] = filterValue;
|
||||||
|
this.updatedFilter.emit(filterKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user