* refactor: add ColumnDefinition type Closes #1193 * refactor: code review - rename things * fix: fix wrong import and lint
87 lines
3.3 KiB
TypeScript
87 lines
3.3 KiB
TypeScript
import { companiesAvailableColumnDefinitions } from '@/companies/constants/companiesAvailableColumnDefinitions';
|
|
import { useCompanyTableActionBarEntries } from '@/companies/hooks/useCompanyTableActionBarEntries';
|
|
import { useCompanyTableContextMenuEntries } from '@/companies/hooks/useCompanyTableContextMenuEntries';
|
|
import { useSpreadsheetCompanyImport } from '@/companies/hooks/useSpreadsheetCompanyImport';
|
|
import { filtersWhereScopedSelector } from '@/ui/filter-n-sort/states/selectors/filtersWhereScopedSelector';
|
|
import { sortsOrderByScopedSelector } from '@/ui/filter-n-sort/states/selectors/sortsOrderByScopedSelector';
|
|
import { EntityTable } from '@/ui/table/components/EntityTable';
|
|
import { GenericEntityTableData } from '@/ui/table/components/GenericEntityTableData';
|
|
import { useUpsertEntityTableItem } from '@/ui/table/hooks/useUpsertEntityTableItem';
|
|
import { TableRecoilScopeContext } from '@/ui/table/states/recoil-scope-contexts/TableRecoilScopeContext';
|
|
import { useRecoilScopedValue } from '@/ui/utilities/recoil-scope/hooks/useRecoilScopedValue';
|
|
import { useTableViews } from '@/views/hooks/useTableViews';
|
|
import {
|
|
SortOrder,
|
|
UpdateOneCompanyMutationVariables,
|
|
useGetCompaniesQuery,
|
|
useUpdateOneCompanyMutation,
|
|
} from '~/generated/graphql';
|
|
import { companiesFilters } from '~/pages/companies/companies-filters';
|
|
import { availableSorts } from '~/pages/companies/companies-sorts';
|
|
|
|
export function CompanyTable() {
|
|
const orderBy = useRecoilScopedValue(
|
|
sortsOrderByScopedSelector,
|
|
TableRecoilScopeContext,
|
|
);
|
|
const whereFilters = useRecoilScopedValue(
|
|
filtersWhereScopedSelector,
|
|
TableRecoilScopeContext,
|
|
);
|
|
|
|
const [updateEntityMutation] = useUpdateOneCompanyMutation();
|
|
const upsertEntityTableItem = useUpsertEntityTableItem();
|
|
|
|
const { handleViewsChange, handleViewSubmit } = useTableViews({
|
|
availableFilters: companiesFilters,
|
|
availableSorts,
|
|
objectId: 'company',
|
|
columnDefinitions: companiesAvailableColumnDefinitions,
|
|
});
|
|
|
|
const { openCompanySpreadsheetImport } = useSpreadsheetCompanyImport();
|
|
|
|
const { setContextMenuEntries } = useCompanyTableContextMenuEntries();
|
|
const { setActionBarEntries } = useCompanyTableActionBarEntries();
|
|
|
|
function handleImport() {
|
|
openCompanySpreadsheetImport();
|
|
}
|
|
|
|
return (
|
|
<>
|
|
<GenericEntityTableData
|
|
getRequestResultKey="companies"
|
|
useGetRequest={useGetCompaniesQuery}
|
|
orderBy={orderBy.length ? orderBy : [{ createdAt: SortOrder.Desc }]}
|
|
whereFilters={whereFilters}
|
|
filterDefinitionArray={companiesFilters}
|
|
setContextMenuEntries={setContextMenuEntries}
|
|
setActionBarEntries={setActionBarEntries}
|
|
/>
|
|
<EntityTable
|
|
viewName="All Companies"
|
|
availableSorts={availableSorts}
|
|
onViewsChange={handleViewsChange}
|
|
onViewSubmit={handleViewSubmit}
|
|
onImport={handleImport}
|
|
updateEntityMutation={({
|
|
variables,
|
|
}: {
|
|
variables: UpdateOneCompanyMutationVariables;
|
|
}) =>
|
|
updateEntityMutation({
|
|
variables,
|
|
onCompleted: (data) => {
|
|
if (!data.updateOneCompany) {
|
|
return;
|
|
}
|
|
upsertEntityTableItem(data.updateOneCompany);
|
|
},
|
|
})
|
|
}
|
|
/>
|
|
</>
|
|
);
|
|
}
|