Needs work filter
This commit is contained in:
parent
4ce1592207
commit
91b4e77c2e
@ -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);
|
const hasChecked = filters.find((f) => f.checked);
|
||||||
|
|
||||||
if (!hasChecked) {
|
if (!hasChecked) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
let filterMatched = false;
|
|
||||||
|
let filterMatched = matchAll;
|
||||||
for (const filter of filters) {
|
for (const filter of filters) {
|
||||||
if (filter.checked && validate(entity, filter)) {
|
if (filter.checked) {
|
||||||
filterMatched = true;
|
if (matchAll) {
|
||||||
break;
|
filterMatched = filterMatched && validate(entity, filter);
|
||||||
|
} else {
|
||||||
|
filterMatched = filterMatched || validate(entity, filter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return filterMatched;
|
return filterMatched;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,13 +68,13 @@ export const addedDateChecker = (pw: ProjectWrapper, filter: FilterModel) =>
|
|||||||
|
|
||||||
export function getFilteredEntities(
|
export function getFilteredEntities(
|
||||||
entities: any[],
|
entities: any[],
|
||||||
filters: { values: FilterModel[]; checker: Function }[]
|
filters: { values: FilterModel[]; checker: Function; matchAll?: boolean }[]
|
||||||
) {
|
) {
|
||||||
const filteredEntities = [];
|
const filteredEntities = [];
|
||||||
for (const entity of entities) {
|
for (const entity of entities) {
|
||||||
let add = true;
|
let add = true;
|
||||||
for (const filter of filters) {
|
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) {
|
if (add) {
|
||||||
filteredEntities.push(entity);
|
filteredEntities.push(entity);
|
||||||
|
|||||||
@ -62,7 +62,7 @@
|
|||||||
<span class="all-caps-label">
|
<span class="all-caps-label">
|
||||||
{{
|
{{
|
||||||
'project-listing.table-header.title'
|
'project-listing.table-header.title'
|
||||||
| translate: { length: appStateService.allProjects?.length || 0 }
|
| translate: { length: displayedProjects.length || 0 }
|
||||||
}}
|
}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -80,8 +80,7 @@
|
|||||||
<span class="all-caps-label">
|
<span class="all-caps-label">
|
||||||
{{
|
{{
|
||||||
'project-overview.table-header.title'
|
'project-overview.table-header.title'
|
||||||
| translate
|
| translate: { length: displayedFiles.length || 0 }
|
||||||
: { length: appStateService.activeProject?.files.length || 0 }
|
|
||||||
}}
|
}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -333,7 +333,7 @@ export class ProjectOverviewScreenComponent implements OnInit, OnDestroy {
|
|||||||
{ values: this.statusFilters, checker: keyChecker('status') },
|
{ values: this.statusFilters, checker: keyChecker('status') },
|
||||||
{ values: this.peopleFilters, checker: keyChecker('currentReviewer') },
|
{ values: this.peopleFilters, checker: keyChecker('currentReviewer') },
|
||||||
{ values: this.addedDateFilters, checker: fileAddedFilterChecker },
|
{ values: this.addedDateFilters, checker: fileAddedFilterChecker },
|
||||||
{ values: this.needsWorkFilters, checker: annotationFilterChecker }
|
{ values: this.needsWorkFilters, checker: annotationFilterChecker, matchAll: true }
|
||||||
];
|
];
|
||||||
this.displayedFiles = getFilteredEntities(
|
this.displayedFiles = getFilteredEntities(
|
||||||
this.appStateService.activeProject.files,
|
this.appStateService.activeProject.files,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user