From 3550e33aaca28c8638301d7acc0ffcec3d010399 Mon Sep 17 00:00:00 2001 From: peoray Date: Tue, 5 Sep 2023 16:01:29 +0100 Subject: [PATCH 1/3] Add multi-select filter in organizations page for Headcount --- .../config/filters/headcount/config.ts | 18 +++++++++--------- .../config/filters/headcount/options.ts | 4 ++++ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/frontend/src/modules/organization/config/filters/headcount/config.ts b/frontend/src/modules/organization/config/filters/headcount/config.ts index 5e951fd13a..d8783c5782 100644 --- a/frontend/src/modules/organization/config/filters/headcount/config.ts +++ b/frontend/src/modules/organization/config/filters/headcount/config.ts @@ -1,25 +1,25 @@ import { FilterConfigType } from '@/shared/modules/filters/types/FilterConfig'; import { - SelectFilterConfig, SelectFilterOptions, - SelectFilterValue, -} from '@/shared/modules/filters/types/filterTypes/SelectFilterConfig'; + MultiSelectFilterConfig, MultiSelectFilterOptions, + MultiSelectFilterValue, +} from '@/shared/modules/filters/types/filterTypes/MultiSelectFilterConfig'; import { itemLabelRendererByType } from '@/shared/modules/filters/config/itemLabelRendererByType'; import options from './options'; -const headcount: SelectFilterConfig = { +const headcount: MultiSelectFilterConfig = { id: 'headcount', label: 'Headcount', iconClass: 'ri-group-2-line', - type: FilterConfigType.SELECT, + type: FilterConfigType.MULTISELECT, options: { options, }, - itemLabelRenderer(value: SelectFilterValue, options: SelectFilterOptions): string { - return itemLabelRendererByType[FilterConfigType.SELECT]('Headcount', value, options); + itemLabelRenderer(value: MultiSelectFilterValue, options: MultiSelectFilterOptions): string { + return itemLabelRendererByType[FilterConfigType.MULTISELECT]('Headcount', value, options); }, - apiFilterRenderer({ value, include }: SelectFilterValue): any[] { + apiFilterRenderer({ value, include }: MultiSelectFilterValue): any[] { const filter = { - size: { eq: value }, + or: value.map((count) => ({ size: count })), }; return [ (include ? filter : { not: filter }), diff --git a/frontend/src/modules/organization/config/filters/headcount/options.ts b/frontend/src/modules/organization/config/filters/headcount/options.ts index 0d8012f190..2034029d86 100644 --- a/frontend/src/modules/organization/config/filters/headcount/options.ts +++ b/frontend/src/modules/organization/config/filters/headcount/options.ts @@ -23,6 +23,10 @@ const options: MultiSelectFilterOptionGroup[] = [ label: '501-1000', value: '501-1000', }, + { + label: '> 1000', + value: '1000-null', + }, ], }, ]; From 912d2b6aa1f2579cad54a4d801e2ce851948684f Mon Sep 17 00:00:00 2001 From: peoray Date: Tue, 5 Sep 2023 16:11:13 +0100 Subject: [PATCH 2/3] Change value for 1000+ range in headcount option --- .../modules/organization/config/filters/headcount/options.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/modules/organization/config/filters/headcount/options.ts b/frontend/src/modules/organization/config/filters/headcount/options.ts index 2034029d86..e76e99e2e9 100644 --- a/frontend/src/modules/organization/config/filters/headcount/options.ts +++ b/frontend/src/modules/organization/config/filters/headcount/options.ts @@ -25,7 +25,7 @@ const options: MultiSelectFilterOptionGroup[] = [ }, { label: '> 1000', - value: '1000-null', + value: '1000+', }, ], }, From db358b1e47c9ae5f6c5a3df80810b265e77d8cd0 Mon Sep 17 00:00:00 2001 From: peoray Date: Thu, 7 Sep 2023 09:41:18 +0100 Subject: [PATCH 3/3] Add more options to headcount filter list --- .../organization/config/filters/headcount/config.ts | 2 +- .../organization/config/filters/headcount/options.ts | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/frontend/src/modules/organization/config/filters/headcount/config.ts b/frontend/src/modules/organization/config/filters/headcount/config.ts index d8783c5782..9a4333de53 100644 --- a/frontend/src/modules/organization/config/filters/headcount/config.ts +++ b/frontend/src/modules/organization/config/filters/headcount/config.ts @@ -19,7 +19,7 @@ const headcount: MultiSelectFilterConfig = { }, apiFilterRenderer({ value, include }: MultiSelectFilterValue): any[] { const filter = { - or: value.map((count) => ({ size: count })), + or: value.map((count) => ({ size: { eq: count } })), }; return [ (include ? filter : { not: filter }), diff --git a/frontend/src/modules/organization/config/filters/headcount/options.ts b/frontend/src/modules/organization/config/filters/headcount/options.ts index e76e99e2e9..b5b4853e9c 100644 --- a/frontend/src/modules/organization/config/filters/headcount/options.ts +++ b/frontend/src/modules/organization/config/filters/headcount/options.ts @@ -24,8 +24,16 @@ const options: MultiSelectFilterOptionGroup[] = [ value: '501-1000', }, { - label: '> 1000', - value: '1000+', + label: '1001-5000', + value: '1001-5001', + }, + { + label: '5001-10000', + value: '5001-10000', + }, + { + label: '> 10000', + value: '10000+', }, ], },