Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 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
012de9d
Merge branch 'main' of https://github.com/commitglobal/votemonitor in…
imdeaconu Oct 1, 2024
23df7d5
Merge branch 'commitglobal-main-et3' into enhance-tables
imdeaconu Oct 1, 2024
ace5a14
Merge branch 'enhance-tables' of https://github.com/imdeaconu/votemon…
imdeaconu Oct 1, 2024
725b8e8
fix filtering component
imdeaconu Oct 1, 2024
b5daec9
fix filteringg by form aggregation
imdeaconu Oct 1, 2024
0883e7a
Merge branch 'commitglobal:main' into enhance-tables
imdeaconu Oct 2, 2024
31bed7f
delete redundant file
imdeaconu Oct 2, 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
@@ -1,19 +1,29 @@
import { getRouteApi } from '@tanstack/react-router';
import { useCallback } from 'react';
import { FunctionComponent } from '@/common/types';
import { CardContent } from '@/components/ui/card';
import { QueryParamsDataTable } from '@/components/ui/DataTable/QueryParamsDataTable';
import { useCurrentElectionRoundStore } from '@/context/election-round.store';
import { getRouteApi } from '@tanstack/react-router';
import { useDebounce } from '@uidotdev/usehooks';
import { useCallback, useMemo } from 'react';
import { useFormSubmissionsByForm } from '../../hooks/form-submissions-queries';
import { FormSubmissionsSearchParams } from '../../models/search-params';
import { useFormSubmissionsByFormColumns } from '../../store/column-visibility';
import { formSubmissionsByFormColumnDefs } from '../../utils/column-defs';
import { useCurrentElectionRoundStore } from '@/context/election-round.store';

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

export function FormSubmissionsAggregatedByFormTable(): FunctionComponent {
type FormSubmissionsByFormTableProps = {
searchText: string;
};

export function FormSubmissionsAggregatedByFormTable({
searchText,
}: FormSubmissionsByFormTableProps): FunctionComponent {
const columnsVisibility = useFormSubmissionsByFormColumns();
const navigate = routeApi.useNavigate();
const currentElectionRoundId = useCurrentElectionRoundStore((s) => s.currentElectionRoundId);
const search = routeApi.useSearch();
const debouncedSearch = useDebounce(search, 300);

const navigateToAggregatedForm = useCallback(
(formId: string) => {
Expand All @@ -22,13 +32,25 @@ export function FormSubmissionsAggregatedByFormTable(): FunctionComponent {
[navigate]
);

const queryParams = useMemo(() => {
const params = [
['searchText', searchText],
['hasFlaggedAnswers', debouncedSearch.hasFlaggedAnswers],
['hasNotes', debouncedSearch.hasNotes],
['hasAttachments', debouncedSearch.hasAttachments],
].filter(([_, value]) => value);

return Object.fromEntries(params) as FormSubmissionsSearchParams;
}, [searchText, debouncedSearch]);

return (
<CardContent>
<QueryParamsDataTable
columnVisibility={columnsVisibility}
columns={formSubmissionsByFormColumnDefs}
useQuery={(params) => useFormSubmissionsByForm(currentElectionRoundId, params)}
onRowClick={navigateToAggregatedForm}
queryParams={queryParams}
/>
</CardContent>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,17 @@ import { useDebounce } from '@uidotdev/usehooks';
import { useState, type ChangeEvent } from 'react';
import { ExportedDataType } from '../../models/data-export';
import type { FormSubmissionsViewBy } from '../../utils/column-visibility-options';
import { FormSubmissionsColumnsVisibilitySelector } from '../FormSubmissionsColumnsVisibilitySelector/FormSubmissionsColumnsVisibilitySelector';
import { ExportDataButton } from '../ExportDataButton/ExportDataButton';
import { FormSubmissionsAggregatedByFormTable } from '../FormSubmissionsAggregatedByFormTable/FormSubmissionsAggregatedByFormTable';
import { FormSubmissionsByEntryTable } from '../FormSubmissionsByEntryTable/FormSubmissionsByEntryTable';
import { FormSubmissionsColumnsVisibilitySelector } from '../FormSubmissionsColumnsVisibilitySelector/FormSubmissionsColumnsVisibilitySelector';

import { FunctionComponent } from '@/common/types';
import { FILTER_KEY } from '@/features/filtering/filtering-enums';
import { FormSubmissionsByObserverTable } from '../FormSubmissionsByObserverTable/FormSubmissionsByObserverTable';
import { FormSubmissionsFiltersByForm } from '../FormSubmissionsFiltersByForm/FormSubmissionsFiltersByForm';
import { FormSubmissionsFiltersByEntry } from '../FormSubmissionsFiltersByEntry/FormSubmissionsFiltersByEntry';
import { FormSubmissionsFiltersByForm } from '../FormSubmissionsFiltersByForm/FormSubmissionsFiltersByForm';
import { FormSubmissionsFiltersByObserver } from '../FormSubmissionsFiltersByObserver/FormSubmissionsFiltersByObserver';
import { FILTER_KEY } from '@/features/filtering/filtering-enums';

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

Expand Down Expand Up @@ -122,7 +122,7 @@ export default function FormSubmissionsTab(): FunctionComponent {

{byFilter === 'byObserver' && <FormSubmissionsByObserverTable searchText={debouncedSearchText} />}

{byFilter === 'byForm' && <FormSubmissionsAggregatedByFormTable />}
{byFilter === 'byForm' && <FormSubmissionsAggregatedByFormTable searchText={debouncedSearchText} />}
</Card>
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,18 @@ import { FunctionComponent, IncidentReportFollowUpStatus, QuestionsAnswered } fr
import { PollingStationsFilters } from '@/components/PollingStationsFilters/PollingStationsFilters';
import { FilterBadge } from '@/components/ui/badge';
import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
import { FILTER_KEY } from '@/features/filtering/filtering-enums';
import { Route } from '@/routes/responses';
import { useNavigate } from '@tanstack/react-router';
import { useCallback } from 'react';
import { IncidentReportLocationType } from '../../models/incident-report';
import type { FormSubmissionsSearchParams } from '../../models/search-params';
import { mapIncidentReportFollowUpStatus as mapIncidentReportFollowUpStatus, mapIncidentReportLocationType, mapQuestionsAnswered } from '../../utils/helpers';
import {
mapIncidentReportFollowUpStatus,
mapIncidentReportLocationType,
mapQuestionsAnswered,
} from '../../utils/helpers';
import { ResetFiltersButton } from '../ResetFiltersButton/ResetFiltersButton';
import { FILTER_KEY } from '@/features/filtering/filtering-enums';

export function IncidentReportsFiltersByEntry(): FunctionComponent {
const navigate = useNavigate({ from: '/responses' });
Expand Down Expand Up @@ -78,10 +82,14 @@ export function IncidentReportsFiltersByEntry(): FunctionComponent {
</SelectTrigger>
<SelectContent>
<SelectGroup>
<SelectItem key={IncidentReportFollowUpStatus.NotApplicable} value={IncidentReportFollowUpStatus.NotApplicable}>
<SelectItem
key={IncidentReportFollowUpStatus.NotApplicable}
value={IncidentReportFollowUpStatus.NotApplicable}>
{mapIncidentReportFollowUpStatus(IncidentReportFollowUpStatus.NotApplicable)}
</SelectItem>
<SelectItem key={IncidentReportFollowUpStatus.NeedsFollowUp} value={IncidentReportFollowUpStatus.NeedsFollowUp}>
<SelectItem
key={IncidentReportFollowUpStatus.NeedsFollowUp}
value={IncidentReportFollowUpStatus.NeedsFollowUp}>
{mapIncidentReportFollowUpStatus(IncidentReportFollowUpStatus.NeedsFollowUp)}
</SelectItem>
<SelectItem key={IncidentReportFollowUpStatus.Resolved} value={IncidentReportFollowUpStatus.Resolved}>
Expand All @@ -101,7 +109,9 @@ export function IncidentReportsFiltersByEntry(): FunctionComponent {
</SelectTrigger>
<SelectContent>
<SelectGroup>
<SelectItem key={IncidentReportLocationType.PollingStation} value={IncidentReportLocationType.PollingStation}>
<SelectItem
key={IncidentReportLocationType.PollingStation}
value={IncidentReportLocationType.PollingStation}>
{mapIncidentReportLocationType(IncidentReportLocationType.PollingStation)}
</SelectItem>
<SelectItem key={IncidentReportLocationType.OtherLocation} value={IncidentReportLocationType.OtherLocation}>
Expand Down Expand Up @@ -170,7 +180,10 @@ export function IncidentReportsFiltersByEntry(): FunctionComponent {

<PollingStationsFilters />

<ResetFiltersButton disabled={!isFiltered} params={{[FILTER_KEY.ViewBy]: 'byEntry', [FILTER_KEY.Tab]: 'incident-reports' }} />
<ResetFiltersButton
disabled={!isFiltered}
params={{ [FILTER_KEY.ViewBy]: 'byEntry', [FILTER_KEY.Tab]: 'incident-reports' }}
/>

{isFiltered && (
<div className='flex flex-wrap gap-2 col-span-full'>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
} from '@/components/ui/dropdown-menu';
import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
import { useCurrentElectionRoundStore } from '@/context/election-round.store';
import { FILTER_KEY } from '@/features/filtering/filtering-enums';
import { useMonitoringObserversTags } from '@/hooks/tags-queries';
import { Route } from '@/routes/responses';
import { ChevronDownIcon } from '@heroicons/react/24/outline';
Expand All @@ -17,7 +18,6 @@ import { useCallback } from 'react';
import type { FormSubmissionsSearchParams } from '../../models/search-params';
import { mapIncidentReportFollowUpStatus } from '../../utils/helpers';
import { ResetFiltersButton } from '../ResetFiltersButton/ResetFiltersButton';
import { FILTER_KEY } from '@/features/filtering/filtering-enums';

export function IncidentReportsFiltersByObserver(): FunctionComponent {
const navigate = useNavigate({ from: '/responses' });
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ export function useFormSubmissionsByForm(
queryParams: DataTableParameters
): UseFormSubmissionsByFormResult {
return useQuery({
queryKey: formSubmissionsAggregatedKeys.all(electionRoundId),
queryKey: formSubmissionsAggregatedKeys.list(electionRoundId, queryParams),
queryFn: async () => {
const params = {
...queryParams.otherParams,
Expand Down