Sammy/t 240 frontend filtering search is refactored (#122)

* refactor: use AnyEntity instead of any

* refactor: remove any and brand company type

* refactor: add typename for user and people

* bugfix: await company to be created before displaying it

* feature: await deletion before removing the lines

* refactor: remove default tyep for filters

* refactor: remove default type AnyEntity

* refactor: remove USers from filterable types

* refactor: do not depend on Filter types in Table

* Add tests

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
Sammy Teillet
2023-05-17 21:49:34 +02:00
committed by GitHub
parent bc49815ff0
commit baca6150f5
25 changed files with 254 additions and 106 deletions

View File

@ -19,10 +19,7 @@ import {
} from '../../services/people';
import { useSearch } from '../../services/search/search';
import { People_Bool_Exp } from '../../generated/graphql';
import {
FilterConfigType,
SelectedFilterType,
} from '../../components/table/table-header/interface';
import { SelectedFilterType } from '../../components/table/table-header/interface';
import {
reduceFiltersToWhere,
reduceSortsToOrderBy,
@ -64,7 +61,8 @@ function People() {
}, [loading, setInternalData, data]);
const addEmptyRow = useCallback(async () => {
const newCompany: Person = {
const newPerson: Person = {
__typename: 'people',
id: uuidv4(),
firstname: '',
lastname: '',
@ -75,13 +73,13 @@ function People() {
creationDate: new Date(),
city: '',
};
await insertPerson(newCompany);
setInternalData([newCompany, ...internalData]);
await insertPerson(newPerson);
setInternalData([newPerson, ...internalData]);
refetch();
}, [internalData, setInternalData, refetch]);
const deleteRows = useCallback(() => {
deletePeople(selectedRowIds);
const deleteRows = useCallback(async () => {
await deletePeople(selectedRowIds);
setInternalData([
...internalData.filter((row) => !selectedRowIds.includes(row.id)),
]);
@ -109,7 +107,7 @@ function People() {
viewName="All People"
viewIcon={<FaList />}
availableSorts={availableSorts}
availableFilters={availableFilters as Array<FilterConfigType>}
availableFilters={availableFilters}
filterSearchResults={filterSearchResults}
onSortsUpdate={updateSorts}
onFiltersUpdate={updateFilters}

View File

@ -227,7 +227,7 @@ export const availableFilters = [
companyFilter,
emailFilter,
cityFilter,
];
] satisfies FilterConfigType<Person, any>[];
const columnHelper = createColumnHelper<Person>();