mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[ACA-3080] Remove selecting first filter by default when no defaults … (#5619)
* [ACA-3080] Remove selecting first filter by default when no defaults are provided * [ACA-3080] Fix demo shell, emit when filter is selected * [ACA-3080] Align demo shell * [ACA-3080] Align task filters demo shell, emit when task filter selected
This commit is contained in:
@@ -63,15 +63,11 @@ export class CloudFiltersDemoComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onTaskFilterSelected(filter) {
|
onTaskFilterSelected(filter) {
|
||||||
this.cloudLayoutService.setCurrentTaskFilterParam({id: filter && filter.id ? filter.id : ''});
|
this.router.navigate([`/cloud/${this.appName}/tasks/`], { queryParams: filter });
|
||||||
const currentFilter = Object.assign({}, filter);
|
|
||||||
this.router.navigate([`/cloud/${this.appName}/tasks/`], { queryParams: currentFilter });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onProcessFilterSelected(filter) {
|
onProcessFilterSelected(filter) {
|
||||||
this.cloudLayoutService.setCurrentProcessFilterParam({id: filter && filter.id ? filter.id : ''});
|
this.router.navigate([`/cloud/${this.appName}/processes/`], { queryParams: filter });
|
||||||
const currentFilter = Object.assign({}, filter);
|
|
||||||
this.router.navigate([`/cloud/${this.appName}/processes/`], { queryParams: currentFilter });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onTaskFilterOpen(): boolean {
|
onTaskFilterOpen(): boolean {
|
||||||
|
@@ -37,6 +37,7 @@ import { Pagination } from '@alfresco/js-api';
|
|||||||
export class ProcessesCloudDemoComponent implements OnInit, OnDestroy {
|
export class ProcessesCloudDemoComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
public static ACTION_SAVE_AS = 'saveAs';
|
public static ACTION_SAVE_AS = 'saveAs';
|
||||||
|
public static ACTION_DELETE = 'delete';
|
||||||
static PROCESS_FILTER_PROPERTY_KEYS = 'adf-edit-process-filter';
|
static PROCESS_FILTER_PROPERTY_KEYS = 'adf-edit-process-filter';
|
||||||
|
|
||||||
@ViewChild('processCloud')
|
@ViewChild('processCloud')
|
||||||
@@ -140,7 +141,12 @@ export class ProcessesCloudDemoComponent implements OnInit, OnDestroy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onProcessFilterAction(filterAction: any) {
|
onProcessFilterAction(filterAction: any) {
|
||||||
|
if (filterAction.actionType === ProcessesCloudDemoComponent.ACTION_DELETE) {
|
||||||
|
this.cloudLayoutService.setCurrentProcessFilterParam({ index: 0 });
|
||||||
|
} else {
|
||||||
this.cloudLayoutService.setCurrentProcessFilterParam({ id: filterAction.filter.id });
|
this.cloudLayoutService.setCurrentProcessFilterParam({ id: filterAction.filter.id });
|
||||||
|
}
|
||||||
|
|
||||||
if (filterAction.actionType === ProcessesCloudDemoComponent.ACTION_SAVE_AS) {
|
if (filterAction.actionType === ProcessesCloudDemoComponent.ACTION_SAVE_AS) {
|
||||||
this.router.navigate([`/cloud/${this.appName}/processes/`], { queryParams: filterAction.filter });
|
this.router.navigate([`/cloud/${this.appName}/processes/`], { queryParams: filterAction.filter });
|
||||||
}
|
}
|
||||||
|
@@ -30,6 +30,7 @@ import { takeUntil } from 'rxjs/operators';
|
|||||||
export class TasksCloudDemoComponent implements OnInit, OnDestroy {
|
export class TasksCloudDemoComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
public static ACTION_SAVE_AS = 'saveAs';
|
public static ACTION_SAVE_AS = 'saveAs';
|
||||||
|
public static ACTION_DELETE = 'delete';
|
||||||
static TASK_FILTER_PROPERTY_KEYS = 'adf-edit-task-filter';
|
static TASK_FILTER_PROPERTY_KEYS = 'adf-edit-task-filter';
|
||||||
|
|
||||||
@ViewChild('taskCloud')
|
@ViewChild('taskCloud')
|
||||||
@@ -133,7 +134,13 @@ export class TasksCloudDemoComponent implements OnInit, OnDestroy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onTaskFilterAction(filterAction: any) {
|
onTaskFilterAction(filterAction: any) {
|
||||||
|
|
||||||
|
if (filterAction.actionType === TasksCloudDemoComponent.ACTION_DELETE) {
|
||||||
|
this.cloudLayoutService.setCurrentTaskFilterParam({ index: 0 });
|
||||||
|
} else {
|
||||||
this.cloudLayoutService.setCurrentTaskFilterParam({ id: filterAction.filter.id });
|
this.cloudLayoutService.setCurrentTaskFilterParam({ id: filterAction.filter.id });
|
||||||
|
}
|
||||||
|
|
||||||
if (filterAction.actionType === TasksCloudDemoComponent.ACTION_SAVE_AS) {
|
if (filterAction.actionType === TasksCloudDemoComponent.ACTION_SAVE_AS) {
|
||||||
this.router.navigate([`/cloud/${this.appName}/tasks/`], { queryParams: filterAction.filter });
|
this.router.navigate([`/cloud/${this.appName}/tasks/`], { queryParams: filterAction.filter });
|
||||||
}
|
}
|
||||||
|
@@ -25,7 +25,7 @@ Lists all available process filters and allows to select a filter.
|
|||||||
| Name | Type | Default value | Description |
|
| Name | Type | Default value | Description |
|
||||||
| ---- | ---- | ------------- | ----------- |
|
| ---- | ---- | ------------- | ----------- |
|
||||||
| appName | `string` | "" | (required) The application name |
|
| appName | `string` | "" | (required) The application name |
|
||||||
| filterParam | [`FilterParamsModel`](../../../lib/process-services/src/lib/task-list/models/filter.model.ts) | | (optional) The filter to be selected by default |
|
| filterParam | [`FilterParamsModel`](../../../lib/process-services/src/lib/task-list/models/filter.model.ts) | | (optional) The filter to be selected by default. If there is no match no filter is selected by default. |
|
||||||
| showIcons | `boolean` | false | (optional) Toggles showing an icon by the side of each filter |
|
| showIcons | `boolean` | false | (optional) Toggles showing an icon by the side of each filter |
|
||||||
|
|
||||||
### Events
|
### Events
|
||||||
|
@@ -22,7 +22,7 @@ Shows all available filters.
|
|||||||
| Name | Type | Default value | Description |
|
| Name | Type | Default value | Description |
|
||||||
| ---- | ---- | ------------- | ----------- |
|
| ---- | ---- | ------------- | ----------- |
|
||||||
| appName | `string` | "" | Display filters available to the current user for the application with the specified name. |
|
| appName | `string` | "" | Display filters available to the current user for the application with the specified name. |
|
||||||
| filterParam | [`FilterParamsModel`](../../../lib/process-services/src/lib/task-list/models/filter.model.ts) | | Parameters to use for the task filter cloud. If there is no match then the default filter (the first one in the list) is selected. |
|
| filterParam | [`FilterParamsModel`](../../../lib/process-services/src/lib/task-list/models/filter.model.ts) | | Parameters to use for the task filter cloud. If there is no match no filter is selected by default. |
|
||||||
| showIcons | `boolean` | false | Toggles display of the filter's icons. |
|
| showIcons | `boolean` | false | Toggles display of the filter's icons. |
|
||||||
|
|
||||||
### Events
|
### Events
|
||||||
|
@@ -36,7 +36,7 @@ Collection of criteria used to filter process instances, which may be customized
|
|||||||
| ---- | ---- | ------------- | ----------- |
|
| ---- | ---- | ------------- | ----------- |
|
||||||
| appId | `number` | | Display filters available to the current user for the application with the specified ID. |
|
| appId | `number` | | Display filters available to the current user for the application with the specified ID. |
|
||||||
| appName | `string` | | Display filters available to the current user for the application with the specified name. |
|
| appName | `string` | | Display filters available to the current user for the application with the specified name. |
|
||||||
| filterParam | [`FilterProcessRepresentationModel`](../../../lib/process-services/src/lib/process-list/models/filter-process.model.ts) | | The parameters to filter the task filter. If there is no match then the default one (ie, the first filter in the list) is selected. |
|
| filterParam | [`FilterProcessRepresentationModel`](../../../lib/process-services/src/lib/process-list/models/filter-process.model.ts) | | The parameters to filter the task filter. If there is no match no filter is selected by default. |
|
||||||
| showIcon | `boolean` | true | Toggle to show or hide the filter's icon. |
|
| showIcon | `boolean` | true | Toggle to show or hide the filter's icon. |
|
||||||
|
|
||||||
### Events
|
### Events
|
||||||
|
@@ -23,7 +23,7 @@ Shows all available filters.
|
|||||||
| ---- | ---- | ------------- | ----------- |
|
| ---- | ---- | ------------- | ----------- |
|
||||||
| appId | `number` | | Display filters available to the current user for the application with the specified ID. |
|
| appId | `number` | | Display filters available to the current user for the application with the specified ID. |
|
||||||
| appName | `string` | | Display filters available to the current user for the application with the specified name. |
|
| appName | `string` | | Display filters available to the current user for the application with the specified name. |
|
||||||
| filterParam | [`FilterParamsModel`](../../../lib/process-services/src/lib/task-list/models/filter.model.ts) | | Parameters to use for the task filter. If there is no match then the default filter (the first one the list) is selected. |
|
| filterParam | [`FilterParamsModel`](../../../lib/process-services/src/lib/task-list/models/filter.model.ts) | | Parameters to use for the task filter. If there is no match no filter is selected by default. |
|
||||||
| showIcon | `boolean` | | Toggles display of the filter's icon. |
|
| showIcon | `boolean` | | Toggles display of the filter's icon. |
|
||||||
|
|
||||||
### Events
|
### Events
|
||||||
|
@@ -223,26 +223,6 @@ describe('ProcessFiltersCloudComponent', () => {
|
|||||||
component.ngOnChanges({ 'appName': change });
|
component.ngOnChanges({ 'appName': change });
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should select the default filter if filter input does not exist', (done) => {
|
|
||||||
spyOn(processFilterService, 'getProcessFilters').and.returnValue(fakeGlobalFilterObservable);
|
|
||||||
|
|
||||||
component.filterParam = new FilterParamsModel({ name: 'UnexistableFilter' });
|
|
||||||
|
|
||||||
const appName = 'my-app-1';
|
|
||||||
const change = new SimpleChange(null, appName, true);
|
|
||||||
|
|
||||||
fixture.detectChanges();
|
|
||||||
|
|
||||||
component.filterClick.subscribe((res) => {
|
|
||||||
expect(res).toBeDefined();
|
|
||||||
expect(component.currentFilter).toBeDefined();
|
|
||||||
expect(component.currentFilter.name).toEqual('FakeAllProcesses');
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
|
|
||||||
component.ngOnChanges({ 'appName': change });
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should select the filter based on the input by index param', (done) => {
|
it('should select the filter based on the input by index param', (done) => {
|
||||||
spyOn(processFilterService, 'getProcessFilters').and.returnValue(fakeGlobalFilterObservable);
|
spyOn(processFilterService, 'getProcessFilters').and.returnValue(fakeGlobalFilterObservable);
|
||||||
|
|
||||||
|
@@ -78,7 +78,7 @@ export class ProcessFiltersCloudComponent implements OnInit, OnChanges, OnDestro
|
|||||||
if (appName && appName.currentValue) {
|
if (appName && appName.currentValue) {
|
||||||
this.getFilters(appName.currentValue);
|
this.getFilters(appName.currentValue);
|
||||||
} else if (filter && filter.currentValue !== filter.previousValue) {
|
} else if (filter && filter.currentValue !== filter.previousValue) {
|
||||||
this.selectFilter(filter.currentValue);
|
this.selectFilterAndEmit(filter.currentValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,9 +113,6 @@ export class ProcessFiltersCloudComponent implements OnInit, OnChanges, OnDestro
|
|||||||
paramFilter.index === index;
|
paramFilter.index === index;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (!this.currentFilter) {
|
|
||||||
this.selectDefaultProcessFilter();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -67,21 +67,6 @@ describe('TaskFiltersCloudComponent', () => {
|
|||||||
taskFilterService = TestBed.get(TaskFilterCloudService);
|
taskFilterService = TestBed.get(TaskFilterCloudService);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should the first element active', async(() => {
|
|
||||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(fakeGlobalFilterObservable);
|
|
||||||
const change = new SimpleChange(undefined, 'my-app-1', true);
|
|
||||||
component.ngOnChanges({'appName': change});
|
|
||||||
fixture.detectChanges();
|
|
||||||
component.showIcons = true;
|
|
||||||
|
|
||||||
fixture.whenStable().then(() => {
|
|
||||||
fixture.detectChanges();
|
|
||||||
const activeElement = fixture.debugElement.nativeElement.querySelector('.adf-active span');
|
|
||||||
expect(activeElement).toBeDefined();
|
|
||||||
expect(activeElement.innerText).toEqual(fakeGlobalFilter[0].name);
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
|
|
||||||
it('should attach specific icon for each filter if hasIcon is true', async(() => {
|
it('should attach specific icon for each filter if hasIcon is true', async(() => {
|
||||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(fakeGlobalFilterObservable);
|
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(fakeGlobalFilterObservable);
|
||||||
const change = new SimpleChange(undefined, 'my-app-1', true);
|
const change = new SimpleChange(undefined, 'my-app-1', true);
|
||||||
|
@@ -76,7 +76,7 @@ export class TaskFiltersCloudComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
if (appName && appName.currentValue !== appName.previousValue) {
|
if (appName && appName.currentValue !== appName.previousValue) {
|
||||||
this.getFilters(appName.currentValue);
|
this.getFilters(appName.currentValue);
|
||||||
} else if (filter && filter.currentValue !== filter.previousValue) {
|
} else if (filter && filter.currentValue !== filter.previousValue) {
|
||||||
this.selectFilter(filter.currentValue);
|
this.selectFilterAndEmit(filter.currentValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,9 +114,6 @@ export class TaskFiltersCloudComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
(paramFilter.name.toLocaleLowerCase() === this.translationService.instant(filter.name).toLocaleLowerCase())
|
(paramFilter.name.toLocaleLowerCase() === this.translationService.instant(filter.name).toLocaleLowerCase())
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
if (!this.currentFilter) {
|
|
||||||
this.selectDefaultTaskFilter();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public selectFilterAndEmit(newParamFilter: FilterParamsModel) {
|
public selectFilterAndEmit(newParamFilter: FilterParamsModel) {
|
||||||
|
@@ -119,6 +119,7 @@ describe('ProcessFiltersComponent', () => {
|
|||||||
|
|
||||||
it('should emit an event when a filter is selected', (done) => {
|
it('should emit an event when a filter is selected', (done) => {
|
||||||
spyOn(processFilterService, 'getProcessFilters').and.returnValue(from(fakeGlobalFilterPromise));
|
spyOn(processFilterService, 'getProcessFilters').and.returnValue(from(fakeGlobalFilterPromise));
|
||||||
|
filterList.filterParam = new FilterProcessRepresentationModel({ id: 10 });
|
||||||
const appId = '1';
|
const appId = '1';
|
||||||
const change = new SimpleChange(null, appId, true);
|
const change = new SimpleChange(null, appId, true);
|
||||||
filterList.ngOnChanges({ 'appId': change });
|
filterList.ngOnChanges({ 'appId': change });
|
||||||
@@ -278,26 +279,6 @@ describe('ProcessFiltersComponent', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should select first filter if filterParam is empty', (done) => {
|
|
||||||
spyOn(processFilterService, 'getProcessFilters').and.returnValue(from(fakeGlobalFilterPromise));
|
|
||||||
|
|
||||||
filterList.filterParam = new FilterProcessRepresentationModel({});
|
|
||||||
|
|
||||||
const appId = 1;
|
|
||||||
const change = new SimpleChange(null, appId, true);
|
|
||||||
|
|
||||||
filterList.ngOnChanges({ 'appId': change });
|
|
||||||
|
|
||||||
fixture.whenStable().then(() => {
|
|
||||||
fixture.detectChanges();
|
|
||||||
expect(filterList.filters).toBeDefined();
|
|
||||||
expect(filterList.filters.length).toEqual(3);
|
|
||||||
expect(filterList.currentFilter).toBeDefined();
|
|
||||||
expect(filterList.currentFilter.name).toEqual('FakeInvolvedTasks');
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should attach specific icon for each filter if hasIcon is true', (done) => {
|
it('should attach specific icon for each filter if hasIcon is true', (done) => {
|
||||||
spyOn(processFilterService, 'getProcessFilters').and.returnValue(from(fakeGlobalFilterPromise));
|
spyOn(processFilterService, 'getProcessFilters').and.returnValue(from(fakeGlobalFilterPromise));
|
||||||
filterList.showIcon = true;
|
filterList.showIcon = true;
|
||||||
|
@@ -164,9 +164,6 @@ export class ProcessFiltersComponent implements OnInit, OnChanges {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (this.isCurrentFilterEmpty()) {
|
|
||||||
this.selectDefaultTaskFilter();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -208,10 +205,6 @@ export class ProcessFiltersComponent implements OnInit, OnChanges {
|
|||||||
this.currentFilter = undefined;
|
this.currentFilter = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
private isCurrentFilterEmpty(): boolean {
|
|
||||||
return this.currentFilter === undefined || null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return current filter icon
|
* Return current filter icon
|
||||||
*/
|
*/
|
||||||
|
@@ -144,23 +144,6 @@ describe('TaskFiltersComponent', () => {
|
|||||||
component.ngOnInit();
|
component.ngOnInit();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should select the first filter as default', (done) => {
|
|
||||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(from(fakeGlobalFilterPromise));
|
|
||||||
|
|
||||||
const appId = '1';
|
|
||||||
const change = new SimpleChange(null, appId, true);
|
|
||||||
|
|
||||||
fixture.detectChanges();
|
|
||||||
component.ngOnChanges({ 'appId': change });
|
|
||||||
|
|
||||||
component.success.subscribe((res) => {
|
|
||||||
expect(res).toBeDefined();
|
|
||||||
expect(component.currentFilter).toBeDefined();
|
|
||||||
expect(component.currentFilter.name).toEqual('FakeInvolvedTasks');
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should be able to fetch and select the default if the input filter is not valid', (done) => {
|
it('should be able to fetch and select the default if the input filter is not valid', (done) => {
|
||||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(from(fakeGlobalEmptyFilterPromise));
|
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(from(fakeGlobalEmptyFilterPromise));
|
||||||
spyOn(component, 'createFiltersByAppId').and.stub();
|
spyOn(component, 'createFiltersByAppId').and.stub();
|
||||||
@@ -194,25 +177,6 @@ describe('TaskFiltersComponent', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should select the default task filter if filter input does not exist', (done) => {
|
|
||||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(from(fakeGlobalFilterPromise));
|
|
||||||
|
|
||||||
component.filterParam = new FilterParamsModel({ name: 'UnexistableFilter' });
|
|
||||||
|
|
||||||
const appId = '1';
|
|
||||||
const change = new SimpleChange(null, appId, true);
|
|
||||||
|
|
||||||
fixture.detectChanges();
|
|
||||||
component.ngOnChanges({ 'appId': change });
|
|
||||||
|
|
||||||
component.success.subscribe((res) => {
|
|
||||||
expect(res).toBeDefined();
|
|
||||||
expect(component.currentFilter).toBeDefined();
|
|
||||||
expect(component.currentFilter.name).toEqual('FakeInvolvedTasks');
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should select the task filter based on the input by index param', (done) => {
|
it('should select the task filter based on the input by index param', (done) => {
|
||||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(from(fakeGlobalFilterPromise));
|
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(from(fakeGlobalFilterPromise));
|
||||||
|
|
||||||
|
@@ -166,9 +166,6 @@ export class TaskFiltersComponent implements OnInit, OnChanges {
|
|||||||
(newFilter.name.toLocaleLowerCase() === filter.name.toLocaleLowerCase())
|
(newFilter.name.toLocaleLowerCase() === filter.name.toLocaleLowerCase())
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
if (!this.currentFilter) {
|
|
||||||
this.selectDefaultTaskFilter();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public selectFilterAndEmit(newFilter: FilterParamsModel) {
|
public selectFilterAndEmit(newFilter: FilterParamsModel) {
|
||||||
|
Reference in New Issue
Block a user