Skip to content

[NAE-2048] Apply saved filter of advanced search in caseRef field #274

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: release/6.5.0
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,8 @@ export class FilterExtractionService {
return this.extractCompleteFilterFromData(dataSection.slice(taskRefIndex.dataGroupIndex + 1), activatedRoute);
}

public extractCompleteFilterFromData(dataSection?: Array<DataGroup>, activatedRoute?: ActivatedRoute, fieldId: string = UserFilterConstants.FILTER_FIELD_ID): Filter | undefined {
public extractCompleteFilterFromData(dataSection?: Array<DataGroup>, activatedRoute?: ActivatedRoute, filterData?: Filter,
fieldId: string = UserFilterConstants.FILTER_FIELD_ID): Filter | undefined {
if (!dataSection) {
if (!activatedRoute) {
throw new Error('ActivatedRoute not provided.');
Expand All @@ -86,7 +87,11 @@ export class FilterExtractionService {
throw new Error('Filter segment could not be extracted from filter field');
}

const parentFilter = this.extractCompleteFilterFromData(dataSection.slice(filterIndex.dataGroupIndex + 1), activatedRoute);
if (!!filterData) {
filterSegment = filterSegment.merge(filterData, MergeOperator.AND);
}

const parentFilter = this.extractCompleteFilterFromData(dataSection.slice(filterIndex.dataGroupIndex + 1), activatedRoute, filterData);

if (parentFilter !== undefined && parentFilter.type === filterSegment.type) {
return filterSegment.merge(parentFilter, MergeOperator.AND);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,14 @@ export class SearchService implements OnDestroy {
}
}

/**
* Loads whole new filter and search cases/tasks based on this filter
* @param newFilter whole new filter that should be used for search
*/
public updateWithFullFilter(newFilter: Filter): void {
this._activeFilter.next(newFilter);
}

/**
* @returns `undefined` if the predicate tree contains no complete query.
* Otherwise returns the serialized form of the completed queries in the predicate tree.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,21 @@
import {BaseFilter} from '../search/models/base-filter';
import {NAE_NAVIGATION_ITEM_TASK_DATA} from '../navigation/model/filter-case-injection-token';
import {DataGroup} from '../resources/interface/data-groups';
import {FilterExtractionService} from '../navigation/utility/filter-extraction.service';
import {ActivatedRoute} from '@angular/router';
import {Filter} from '../filter/models/filter';

/**
* Converts an {@link NAE_NAVIGATION_ITEM_TASK_DATA} injection token into {@link NAE_BASE_FILTER}
* @param extractionService
* @param activatedRoute
* @param navigationItemTaskData a navigation item task containing the aggregated data representing a navigation item
* @param filterData filter data to be used and combined in view
*/
export function navigationItemTaskFilterFactory(extractionService: FilterExtractionService,
activatedRoute?: ActivatedRoute,
navigationItemTaskData?: Array<DataGroup>): BaseFilter {
navigationItemTaskData?: Array<DataGroup>,
filterData?: Filter): BaseFilter {
return {
filter: extractionService.extractCompleteFilterFromData(navigationItemTaskData, activatedRoute)
filter: extractionService.extractCompleteFilterFromData(navigationItemTaskData, activatedRoute, filterData)
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import {ActivatedRoute} from '@angular/router';
export function filterCaseTabbedDataFilterFactory(extractionService: FilterExtractionService,
tabData: InjectedTabbedCaseViewDataWithNavigationItemTaskData,
activatedRoute: ActivatedRoute): BaseFilter {
return navigationItemTaskFilterFactory(extractionService, activatedRoute, tabData.navigationItemTaskData);
return navigationItemTaskFilterFactory(extractionService, activatedRoute, tabData.navigationItemTaskData, tabData.loadFilter);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<div class="case-view-search-container">
<div fxLayout="row" fxLayoutAlign="space-between">
<div fxLayoutAlign="start center" fxFlex *ngIf="search">
<nc-search class="search-width" [disabled]="disabled()" [additionalFilterData]="additionalFilterData"></nc-search>
<nc-search class="search-width" [disabled]="disabled()" [additionalFilterData]="additionalFilterData" (filterLoaded)="loadFilter($event)"></nc-search>
</div>
<div fxLayoutAlign="end center" *ngIf="createCase">
<nc-create-case-button [disabled]="disabled()" [newCaseCreationConfig]="newCaseCreationConfig" (caseCreatedEvent)="createdCase($event)"></nc-create-case-button>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,32 @@ import {
AbstractCaseViewComponent,
AllowedNetsService,
AllowedNetsServiceFactory,
BaseFilter,
Case,
CaseRefField,
CaseViewService,
CategoryFactory,
DATA_FIELD_PORTAL_DATA,
DataFieldPortalData,
defaultCaseSearchCategoriesFactory,
EnumerationField,
Filter,
FilterType,
MergeOperator,
MultichoiceField,
NAE_BASE_FILTER,
NAE_CASE_REF_CREATE_CASE,
NAE_CASE_REF_SEARCH,
CaseRefField,
NAE_SEARCH_CATEGORIES,
NAE_TAB_DATA,
NAE_VIEW_ID_SEGMENT,
OverflowService,
SavedFilterMetadata,
SearchMode,
SearchService,
SimpleFilter,
TaskSetDataRequestFields,
ViewIdService, DATA_FIELD_PORTAL_DATA, DataFieldPortalData, MultichoiceField, EnumerationField
ViewIdService
} from '@netgrif/components-core';
import {HeaderComponent} from '../../../../../header/header.component'
import {DefaultTabbedTaskViewComponent} from '../../tabbed/default-tabbed-task-view/default-tabbed-task-view.component';
Expand Down Expand Up @@ -58,8 +67,12 @@ export class DefaultCaseRefListViewComponent extends AbstractCaseViewComponent i
public search: boolean;
public createCase: boolean;

private initFilter: Filter;

constructor(caseViewService: CaseViewService,
protected searchService: SearchService,
@Optional() overflowService: OverflowService,
@Optional() @Inject(NAE_BASE_FILTER) protected _baseFilter: BaseFilter,
@Optional() @Inject(NAE_TAB_DATA) protected _injectedTabData: InjectedTabbedTaskViewDataWithNavigationItemTaskData,
@Optional() @Inject(DATA_FIELD_PORTAL_DATA) protected _dataFieldPortalData: DataFieldPortalData<MultichoiceField | CaseRefField | EnumerationField>,
@Optional() @Inject(NAE_CASE_REF_CREATE_CASE) protected _caseRefCreateCase: boolean = false,
Expand All @@ -70,6 +83,16 @@ export class DefaultCaseRefListViewComponent extends AbstractCaseViewComponent i
});
this.search = !!_caseRefSearch;
this.createCase = !!_caseRefCreateCase;
if (!this._baseFilter || !this._baseFilter.filter) {
return;
}
if (this._baseFilter.filter instanceof Filter) {
this.initFilter = this._baseFilter.filter
} else {
this._baseFilter.filter.subscribe(observableFilter => {
this.initFilter = observableFilter;
});
}
}

ngAfterViewInit(): void {
Expand Down Expand Up @@ -120,4 +143,8 @@ export class DefaultCaseRefListViewComponent extends AbstractCaseViewComponent i
createdCase(caze: Case) {
this.handleCaseClick(caze);
}

loadFilter(filterData: SavedFilterMetadata) {
this.searchService.updateWithFullFilter(this.initFilter.merge(filterData.filter, MergeOperator.AND));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ export class DefaultTabbedCaseViewComponent extends AbstractTabbedCaseViewCompon
},
canBeClosed: true,
tabContentComponent: DefaultTabbedCaseViewComponent,
injectedObject: {...this._injectedTabData, filterCase: filterData.filterCase},
injectedObject: {...this._injectedTabData, loadFilter: filterData.filter},
order: this._injectedTabData.tabViewOrder,
parentUniqueId: this._injectedTabData.tabUniqueId
}, this._autoswitchToTaskTab, this._openExistingTab);
Expand Down
Loading