Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
0fe3fbe
fix: make dropdown menus scrollable
imdeaconu Sep 6, 2024
4ca1a44
fix: truncate overflowing table columns
imdeaconu Sep 6, 2024
921aa13
Merge branch 'commitglobal:main' into main
imdeaconu Sep 6, 2024
e5a2869
Merge branch 'commitglobal:main' into main
imdeaconu Sep 6, 2024
7866a67
Merge branch 'commitglobal:main' into main
imdeaconu Sep 9, 2024
f6f7929
fix: add new columns and make default column size larger
imdeaconu Sep 9, 2024
9ea6c42
Merge branch 'commitglobal:main' into main
imdeaconu Sep 10, 2024
1bd449d
Merge branch 'commitglobal:main' into main
imdeaconu Sep 11, 2024
c9874d1
Squashed commit of the following:
imdeaconu Sep 11, 2024
b7715f3
Merge branch 'commitglobal:main' into main
imdeaconu Sep 12, 2024
0facf65
Squashed commit of the following:
imdeaconu Sep 13, 2024
67f681d
chore: remove unused import
imdeaconu Sep 13, 2024
8d73252
chore: delete duplicated / unused classes
imdeaconu Sep 16, 2024
63b21b9
Merge branch 'commitglobal:main' into main
imdeaconu Sep 17, 2024
ddfc4ea
Merge branch 'main' into enhance-tables
imdeaconu Sep 17, 2024
d3154ed
WIP: start creating new filters
imdeaconu Sep 18, 2024
1892e6e
Merge branch 'commitglobal:main' into main
imdeaconu Sep 18, 2024
abb7c01
feature: add searching to MonitoringObserversTagFilter
imdeaconu Sep 19, 2024
9d0b8ae
Merge branch 'commitglobal:main' into main
imdeaconu Sep 20, 2024
c9fcd3e
chore: update config files
imdeaconu Sep 20, 2024
333ba49
Revert "[NGO Admin] Rewrite the tag selector component (#675)"
imdeaconu Sep 23, 2024
580b68e
Merge branch 'main' of https://github.com/commitglobal/votemonitor
imdeaconu Sep 23, 2024
10eecdf
Merge branch 'main' into enhance-tables
imdeaconu Sep 23, 2024
ae88993
revert to old filtering system and add questions answered dropdown
imdeaconu Sep 23, 2024
4e52b22
add has notes
imdeaconu Sep 23, 2024
1bc663d
disable filtering by curent tags
imdeaconu Sep 24, 2024
d6e5368
add filters
imdeaconu Sep 24, 2024
e2f3e1c
Cleanup, improve performance of ps select
idormenco Sep 25, 2024
a132b1c
Update locations-levels.ts
idormenco Sep 25, 2024
32d2c56
Feature/citizen reports guides (#686)
idormenco Sep 25, 2024
fbb67a3
fix build, and tag selector
idormenco Sep 25, 2024
a9dda6e
Feature/citizen reports guides (#686)
idormenco Sep 25, 2024
5210d67
Feature/citizen reports guides (#686) (#2)
imdeaconu Sep 25, 2024
29e575f
Merge branch 'commitglobal:main' into enhance-tables
imdeaconu Sep 25, 2024
d0da4c0
update MOTagsSelect to work with form submissions
imdeaconu Sep 26, 2024
0df6e40
update BinarySelect to take boolean values
imdeaconu Sep 26, 2024
c2515a1
add form submissions filters
imdeaconu Sep 26, 2024
7588909
redo filtering for Form submissions
imdeaconu Sep 26, 2024
0a60c3c
Merge branch 'main' of https://github.com/commitglobal/votemonitor in…
imdeaconu Sep 26, 2024
a9c74d7
Merge branch 'commitglobal-main-et' into enhance-tables
imdeaconu Sep 26, 2024
6f0f9de
Merge branch 'enhance-tables' of https://github.com/imdeaconu/votemon…
imdeaconu Sep 26, 2024
8f0e959
hide language column
imdeaconu Sep 26, 2024
f465efa
misc changes
imdeaconu Sep 26, 2024
8b9a363
Update column-defs.tsx
idormenco Sep 30, 2024
e6ee134
Update column-visibility-options.tsx
idormenco Sep 30, 2024
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 @@ -34,6 +34,7 @@ export default function ElectionEventDashboard(): ReactElement {
}
const { data: electionEvent } = useElectionRoundDetails(currentElectionRoundId);


return (
<Layout title={electionEvent?.title ?? ''} breadcrumbs={<></>} backButton={<></>}>
<Tabs defaultValue='event-details' value={currentTab} onValueChange={handleTabChange}>
Expand Down
12 changes: 12 additions & 0 deletions web/src/features/filtering/components/ActiveFilters.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,18 @@ const FILTER_LABELS = new Map<string, string>([
[FILTER_KEY.MonitoringObserverStatus, FILTER_LABEL.MonitoringObserverStatus],
[FILTER_KEY.MonitoringObserverTags, FILTER_LABEL.MonitoringObserverTags],
[FILTER_KEY.FormTypeFilter, FILTER_LABEL.FormTypeFilter],
[FILTER_KEY.HasFlaggedAnswers, FILTER_LABEL.HasFlaggedAnswers],
[FILTER_KEY.FollowUpStatus, FILTER_LABEL.FollowUpStatus],
[FILTER_KEY.HasNotes, FILTER_LABEL.HasNotes],
[FILTER_KEY.MediaFiles, FILTER_LABEL.MediaFiles],
[FILTER_KEY.QuestionsAnswered, FILTER_LABEL.QuestionsAnswered],
[FILTER_KEY.LocationL1, FILTER_LABEL.LocationL1],
[FILTER_KEY.LocationL2, FILTER_LABEL.LocationL2],
[FILTER_KEY.LocationL3, FILTER_LABEL.LocationL3],
[FILTER_KEY.LocationL4, FILTER_LABEL.LocationL4],
[FILTER_KEY.LocationL5, FILTER_LABEL.LocationL5],
[FILTER_KEY.FormSubmissionsMonitoringObserverTags, FILTER_LABEL.FormSubmissionsMonitoringObserverTags],
[FILTER_KEY.PollingStationNumber, FILTER_LABEL.PollingStationNumber],
]);

const ActiveFilter: FC<ActiveFilterProps> = ({ filterId, value, isArray }) => {
Expand Down
4 changes: 2 additions & 2 deletions web/src/features/filtering/components/SelectFilter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ interface BinarySelectFilterProps extends Omit<SelectFilterProps, 'options'> {}

export const BinarySelectFilter: FC<BinarySelectFilterProps> = (props) => {
const options: SelectFilterOption[] = [
{ value: 'Yes', label: 'Yes' },
{ value: 'No', label: 'No' },
{ value: 'true', label: 'Yes' },
{ value: 'false', label: 'No' },
];

return <SelectFilter options={options} {...props} />;
Expand Down
24 changes: 24 additions & 0 deletions web/src/features/filtering/filtering-enums.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,35 @@ export const enum FILTER_KEY {
MonitoringObserverStatus = 'monitoringObserverStatus',
MonitoringObserverTags = 'tags',
FormTypeFilter = 'formTypeFilter',
HasFlaggedAnswers = 'hasFlaggedAnswers',
FollowUpStatus = 'followUpStatus',
HasNotes = 'hasNotes',
MediaFiles = 'hasAttachments',
QuestionsAnswered = 'questionsAnswered',
LocationL1 = 'level1Filter',
LocationL2 = 'level2Filter',
LocationL3 = 'level3Filter',
LocationL4 = 'level4Filter',
LocationL5 = 'level5Filter',
PollingStationNumber = 'pollingStationNumberFilter',
FormSubmissionsMonitoringObserverTags = 'tagsFilter',
ViewBy = 'viewBy',
}

export const enum FILTER_LABEL {
MonitoringObserverStatus = 'Observer status',
MonitoringObserverTags = 'Tags',
FormTypeFilter = 'Form type',
HasFlaggedAnswers = 'Flagged answers',
FollowUpStatus = 'Follow-up status',
HasNotes = 'Question notes',
QuestionsAnswered = 'Questions answered',
LocationL1 = 'Location - L1',
LocationL2 = 'Location - L2',
LocationL3 = 'Location - L3',
LocationL4 = 'Location - L4',
LocationL5 = 'Location - L5',
PollingStationNumber = 'Polling station number',
FormSubmissionsMonitoringObserverTags = 'Observer tags',
MediaFiles = 'Has attachments',
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,26 @@ import { FILTER_KEY } from '@/features/filtering/filtering-enums';
import { useFilteringContainer } from '@/features/filtering/hooks/useFilteringContainer';
import { useMonitoringObserversTags } from '@/hooks/tags-queries';

import { FC, useEffect } from 'react';
import { FC } from 'react';

interface MonitoringObserverTagsSelectProps {
isFilteringFormSubmissions?: boolean;
}

export const MonitoringObserverTagsSelect: FC<MonitoringObserverTagsSelectProps> = ({ isFilteringFormSubmissions }) => {
const COMPONENT_FILTER_KEY = isFilteringFormSubmissions
? FILTER_KEY.FormSubmissionsMonitoringObserverTags
: FILTER_KEY.MonitoringObserverTags;

export const MonitoringObserverTagsSelect: FC = () => {
const currentElectionRoundId = useCurrentElectionRoundStore((s) => s.currentElectionRoundId);
const { data: tags } = useMonitoringObserversTags(currentElectionRoundId);
const { queryParams, navigateHandler } = useFilteringContainer();
const currentTags = (queryParams as any)?.[FILTER_KEY.MonitoringObserverTags] ?? [];
const currentTags = (queryParams as any)?.[COMPONENT_FILTER_KEY] ?? [];

const toggleTagsFilter = (tags: string[]) => {
return navigateHandler({ [FILTER_KEY.MonitoringObserverTags]: tags });
return navigateHandler({ [COMPONENT_FILTER_KEY]: tags });
};

useEffect(() => {}, [currentTags]);

return (
<MultiSelectDropdown
options={tags?.map((tag) => ({ label: tag, value: tag })) ?? []}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ export function FormSubmissionsByEntryTable({ searchText }: FormSubmissionsByEnt
['questionsAnswered', debouncedSearch.questionsAnswered],
['hasNotes', debouncedSearch.hasNotes],
['hasAttachments', debouncedSearch.hasAttachments],
['tagsFilter', debouncedSearch.tagsFilter],
].filter(([_, value]) => value);

return Object.fromEntries(params) as FormSubmissionsSearchParams;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import { FormSubmissionsAggregatedByFormTable } from '../FormSubmissionsAggregat
import { FormSubmissionsByEntryTable } from '../FormSubmissionsByEntryTable/FormSubmissionsByEntryTable';

import { FunctionComponent } from '@/common/types';
import { FormsFiltersByForm } from '../FormsFiltersByForm/FormsFiltersByForm';

const routeApi = getRouteApi('/responses/');

Expand Down Expand Up @@ -91,30 +92,29 @@ export default function FormSubmissionsTab(): FunctionComponent {
<Separator />

<div className='flex justify-end gap-4 px-6'>
{byFilter !== 'byForm' && (
<>
<Input className='max-w-md' onChange={handleSearchInput} placeholder='Search' />
<FunnelIcon
className='w-[20px] text-purple-900 cursor-pointer'
fill={isFiltering ? '#5F288D' : 'rgba(0,0,0,0)'}
onClick={() => {
setIsFiltering((prev) => !prev);
}}
/>
</>
)}
<>
<Input className='max-w-md' onChange={handleSearchInput} placeholder='Search' />
<FunnelIcon
className='w-[20px] text-purple-900 cursor-pointer'
fill={isFiltering ? '#5F288D' : 'rgba(0,0,0,0)'}
onClick={() => {
setIsFiltering((prev) => !prev);
}}
/>
</>

<ColumnsVisibilitySelector byFilter={byFilter ?? 'byEntry'} />
</div>

<Separator />

{isFiltering && (
<div className='grid items-center grid-cols-6 gap-4'>
<>
{byFilter === 'byEntry' && <FormsFiltersByEntry />}

{byFilter === 'byObserver' && <FormsFiltersByObserver />}
</div>
{byFilter === 'byForm' && <FormsFiltersByForm />}
</>
)}
</CardHeader>

Expand Down
Loading