Added an SME suitable filter
This commit is contained in:
1 parent
49dd11be56
commit
67e2c96ca7
2 files changed
+19
No files matched your search
@@ -176,6 +176,20 @@ export function FilterPanel(props: Props): JSX.Element {
|
||||
</For>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="m-0 min-w-0 border-0 p-0">
|
||||
<legend class={fieldLabel}>Suitability</legend>
|
||||
<div class="flex flex-wrap gap-1.5">
|
||||
<button
|
||||
type="button"
|
||||
class={toggleChip}
|
||||
aria-pressed={props.filters.smeSuitable}
|
||||
onClick={() => update({ smeSuitable: !props.filters.smeSuitable })}
|
||||
>
|
||||
SME suitable
|
||||
</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<ClassificationPicker
|
||||
|
||||
@@ -16,6 +16,8 @@ export interface OpportunityFilters {
|
||||
marks: ReadonlySet<MarkFilter>;
|
||||
/** Classification ids; empty means every classification. */
|
||||
classificationIds: ReadonlySet<number>;
|
||||
/** Only opportunities suitable for SMEs; false means any. */
|
||||
smeSuitable: boolean;
|
||||
showHidden: boolean;
|
||||
}
|
||||
|
||||
@@ -25,6 +27,7 @@ export const emptyFilters = (): OpportunityFilters => ({
|
||||
statuses: new Set(),
|
||||
marks: new Set(),
|
||||
classificationIds: new Set(),
|
||||
smeSuitable: false,
|
||||
showHidden: false,
|
||||
});
|
||||
|
||||
@@ -35,6 +38,7 @@ export const activeFilterCount = (filters: OpportunityFilters): number =>
|
||||
filters.statuses.size > 0,
|
||||
filters.marks.size > 0,
|
||||
filters.classificationIds.size > 0,
|
||||
filters.smeSuitable,
|
||||
filters.showHidden,
|
||||
].filter(Boolean).length;
|
||||
|
||||
@@ -56,6 +60,7 @@ export function filterOpportunities(
|
||||
if (!filters.showHidden && annotation.hidden) return false;
|
||||
if (query && !opportunity.title.toLocaleLowerCase().includes(query)) return false;
|
||||
if (filters.statuses.size > 0 && !filters.statuses.has(opportunity.status)) return false;
|
||||
if (filters.smeSuitable && !opportunity.sme_suitable) return false;
|
||||
if (filters.marks.size > 0) {
|
||||
const matches =
|
||||
annotation.marks.length === 0
|
||||
|
||||
Reference in new issue
Block a user