[ADF-2854] Fix demoshell task/process filter and routing (#3360)

* Fix demoshell task/process filter and routing

* Use the correct js api model

* Fix unit test
This commit is contained in:
Maurizio Vitale
2018-05-23 13:14:27 +01:00
committed by Eugenio Romano
parent 5c97fd99de
commit ecd7c85de5
7 changed files with 72 additions and 64 deletions

View File

@@ -1,6 +1,6 @@
<div class="menu-container">
<mat-list class="adf-menu-list">
<mat-list-item (click)="selectFilter(filter)" *ngFor="let filter of filters"
<mat-list-item (click)="selectFilterAndEmit(filter)" *ngFor="let filter of filters"
class="adf-filters__entry" [class.active]="currentFilter === filter">
<mat-icon *ngIf="hasIcon" matListIcon class="adf-filters__entry-icon">assignment</mat-icon>
<span matLine [attr.data-automation-id]="filter.name + '_filter'">{{filter.name}}</span>

View File

@@ -266,7 +266,7 @@ describe('TaskFiltersComponent', () => {
done();
});
component.selectFilter(currentFilter);
component.selectFilterAndEmit(currentFilter);
});
it('should reload filters by appId on binding changes', () => {
@@ -283,35 +283,32 @@ describe('TaskFiltersComponent', () => {
spyOn(component, 'getFiltersByAppId').and.stub();
const appId = null;
let change = new SimpleChange(null, appId, true);
let change = new SimpleChange(undefined, appId, true);
component.ngOnChanges({ 'appId': change });
expect(component.getFiltersByAppId).toHaveBeenCalledWith(appId);
});
it('should change current filter when filterParam (id) changes', (done) => {
it('should change current filter when filterParam (id) changes', async() => {
component.filters = fakeGlobalFilter;
component.currentFilter = null;
component.filterClick.subscribe((filter: FilterRepresentationModel) => {
expect(filter).toEqual(fakeGlobalFilter[0]);
expect(component.currentFilter).toEqual(filter);
done();
fixture.whenStable().then(() => {
expect(component.currentFilter.id).toEqual(fakeGlobalFilter[2].id);
});
const change = new SimpleChange(null, {id : fakeGlobalFilter[0].id}, true);
const change = new SimpleChange(null, {id : fakeGlobalFilter[2].id}, true);
component.ngOnChanges({ 'filterParam': change });
});
it('should change current filter when filterParam (name) changes', (done) => {
it('should change current filter when filterParam (name) changes', async() => {
component.filters = fakeGlobalFilter;
component.currentFilter = null;
component.filterClick.subscribe((filter: FilterRepresentationModel) => {
expect(filter).toEqual(fakeGlobalFilter[0]);
expect(component.currentFilter).toEqual(filter);
done();
fixture.whenStable().then(() => {
expect(component.currentFilter.name).toEqual(fakeGlobalFilter[2].name);
});
const change = new SimpleChange(null, {name : fakeGlobalFilter[0].name}, true);
const change = new SimpleChange(null, {name : fakeGlobalFilter[2].name}, true);
component.ngOnChanges({ 'filterParam': change });
});
@@ -337,7 +334,7 @@ describe('TaskFiltersComponent', () => {
it('should load default list when appid is null', () => {
spyOn(component, 'getFiltersByAppId').and.stub();
let change = new SimpleChange(null, null, true);
let change = new SimpleChange(undefined, null, true);
component.ngOnChanges({ 'appId': change });
expect(component.getFiltersByAppId).toHaveBeenCalled();

View File

@@ -78,15 +78,13 @@ export class TaskFiltersComponent implements OnInit, OnChanges {
ngOnChanges(changes: SimpleChanges) {
const appName = changes['appName'];
const appId = changes['appId'];
const filter = changes['filterParam'];
if (appName && appName.currentValue) {
this.getFiltersByAppName(appName.currentValue);
} else if (appId) {
} else if (appId && appId.currentValue !== appId.previousValue) {
this.getFiltersByAppId(appId.currentValue);
}
const filterParam = changes['filterParam'];
if (filterParam && filterParam.currentValue) {
this.selectFilter(filterParam.currentValue);
} else if (filter && filter.currentValue !== filter.previousValue) {
this.selectFilter(filter.currentValue);
}
}
@@ -111,7 +109,7 @@ export class TaskFiltersComponent implements OnInit, OnChanges {
} else {
this.resetFilter();
this.filters = res;
this.selectTaskFilter(this.filterParam, this.filters);
this.selectFilter(this.filterParam);
this.success.emit(res);
}
},
@@ -144,7 +142,7 @@ export class TaskFiltersComponent implements OnInit, OnChanges {
(resDefault: FilterRepresentationModel[]) => {
this.resetFilter();
this.filters = resDefault;
this.selectTaskFilter(this.filterParam, this.filters);
this.selectFilter(this.filterParam);
this.success.emit(resDefault);
},
(errDefault: any) => {
@@ -157,15 +155,23 @@ export class TaskFiltersComponent implements OnInit, OnChanges {
* Pass the selected filter as next
* @param filter
*/
public selectFilter(newFilter: FilterRepresentationModel) {
public selectFilter(newFilter: FilterParamsModel) {
if (newFilter) {
this.currentFilter = this.filters.find(filter =>
this.currentFilter = this.filters.find( (filter, index) =>
newFilter.index === index ||
newFilter.id === filter.id ||
(newFilter.name &&
(newFilter.name.toLocaleLowerCase() === filter.name.toLocaleLowerCase())
));
this.filterClick.emit(this.currentFilter);
}
if (!this.currentFilter) {
this.selectDefaultTaskFilter();
}
}
public selectFilterAndEmit(newFilter: FilterParamsModel) {
this.selectFilter(newFilter);
this.filterClick.emit(this.currentFilter);
}
/**
@@ -183,36 +189,17 @@ export class TaskFiltersComponent implements OnInit, OnChanges {
},
() => {
if (filteredFilterList.length > 0) {
this.selectTaskFilter(new FilterParamsModel({name: 'My Tasks'}), filteredFilterList);
this.selectFilter(filteredFilterList[0]);
this.filterClick.emit(this.currentFilter);
}
});
}
/**
* Select the first filter of a list if present
* @param filterParam
* @param filteredFilterList
*/
public selectTaskFilter(filterParam: FilterParamsModel, filteredFilterList: FilterRepresentationModel[]) {
let findTaskFilter;
if (filterParam) {
filteredFilterList.filter((taskFilter: FilterRepresentationModel, index) => {
if (filterParam.name && filterParam.name.toLowerCase() === taskFilter.name.toLowerCase() ||
filterParam.id === taskFilter.id.toString() ||
filterParam.index === index) {
findTaskFilter = taskFilter;
}
});
}
findTaskFilter ? this.currentFilter = findTaskFilter : this.selectDefaultTaskFilter(filteredFilterList);
}
/**
* Select as default task filter the first in the list
* @param filteredFilterList
*/
public selectDefaultTaskFilter(filteredFilterList: FilterRepresentationModel[]) {
public selectDefaultTaskFilter() {
if (!this.isFilterListEmpty()) {
this.currentFilter = this.filters[0];
}

View File

@@ -44,7 +44,7 @@ export class AppDefinitionRepresentationModel {
}
export class FilterParamsModel {
id: string;
id: number;
name: string;
index: number;