Needs work filter

This commit is contained in:
Adina Țeudan 2020-11-06 00:30:09 +02:00
parent 4ce1592207
commit 91b4e77c2e
4 changed files with 21 additions and 11 deletions

View File

@ -16,18 +16,29 @@ export function handleCheckedValue(filter: FilterModel) {
}
}
export function checkFilter(entity: any, filters: FilterModel[], validate: Function) {
export function checkFilter(
entity: any,
filters: FilterModel[],
validate: Function,
matchAll: boolean = false
) {
const hasChecked = filters.find((f) => f.checked);
if (!hasChecked) {
return true;
}
let filterMatched = false;
let filterMatched = matchAll;
for (const filter of filters) {
if (filter.checked && validate(entity, filter)) {
filterMatched = true;
break;
if (filter.checked) {
if (matchAll) {
filterMatched = filterMatched && validate(entity, filter);
} else {
filterMatched = filterMatched || validate(entity, filter);
}
}
}
return filterMatched;
}
@ -57,13 +68,13 @@ export const addedDateChecker = (pw: ProjectWrapper, filter: FilterModel) =>
export function getFilteredEntities(
entities: any[],
filters: { values: FilterModel[]; checker: Function }[]
filters: { values: FilterModel[]; checker: Function; matchAll?: boolean }[]
) {
const filteredEntities = [];
for (const entity of entities) {
let add = true;
for (const filter of filters) {
add = add && checkFilter(entity, filter.values, filter.checker);
add = add && checkFilter(entity, filter.values, filter.checker, filter.matchAll);
}
if (add) {
filteredEntities.push(entity);

View File

@ -62,7 +62,7 @@
<span class="all-caps-label">
{{
'project-listing.table-header.title'
| translate: { length: appStateService.allProjects?.length || 0 }
| translate: { length: displayedProjects.length || 0 }
}}
</span>
</div>

View File

@ -80,8 +80,7 @@
<span class="all-caps-label">
{{
'project-overview.table-header.title'
| translate
: { length: appStateService.activeProject?.files.length || 0 }
| translate: { length: displayedFiles.length || 0 }
}}
</span>
</div>

View File

@ -333,7 +333,7 @@ export class ProjectOverviewScreenComponent implements OnInit, OnDestroy {
{ values: this.statusFilters, checker: keyChecker('status') },
{ values: this.peopleFilters, checker: keyChecker('currentReviewer') },
{ values: this.addedDateFilters, checker: fileAddedFilterChecker },
{ values: this.needsWorkFilters, checker: annotationFilterChecker }
{ values: this.needsWorkFilters, checker: annotationFilterChecker, matchAll: true }
];
this.displayedFiles = getFilteredEntities(
this.appStateService.activeProject.files,