diff --git a/app/src/sandbox/tablePaged/DemoTablePaged.tsx b/app/src/sandbox/tablePaged/DemoTablePaged.tsx index 74430c460f..e45fdf0435 100644 --- a/app/src/sandbox/tablePaged/DemoTablePaged.tsx +++ b/app/src/sandbox/tablePaged/DemoTablePaged.tsx @@ -1,11 +1,12 @@ import React, { useCallback, useEffect, useMemo, useState } from "react"; import css from "./DemoTablePaged.scss"; -import { DataTable, FlexRow, Paginator, FlexSpacer } from "@epam/promo"; +import { DataTable, FlexRow, Paginator, FlexSpacer, Button } from "@epam/promo"; import { DataRowOptions, DataTableState, LazyDataSourceApi, useLazyDataSource, useTableState } from "@epam/uui-core"; import { Person } from "@epam/uui-docs"; import { svc } from "../../services"; -import { getFilters } from "./data"; +import { getFilters } from "./filters"; import { personColumns } from "./columns"; +import { FlexCell } from "uui-components"; export const DemoTablePaged: React.FC = () => { const filters = useMemo(getFilters, []); @@ -13,14 +14,14 @@ export const DemoTablePaged: React.FC = () => { const {tableState, setTableState} = useTableState({ columns: personColumns, }); - + useEffect(() => { setTableState({...tableState, page: 1, pageSize: 100}); }, []); - + const [totalCount, setTotalCount] = useState(0); const [appliedFilter, setAppliedFilter] = useState({}); - + const api: LazyDataSourceApi = useCallback(async request => { const result = await svc.api.demo.personsPaged({ filter: request.filter, @@ -33,21 +34,21 @@ export const DemoTablePaged: React.FC = () => { result.from = 0; return result; }, []); - + const applyFilter = useCallback(() => { setAppliedFilter(tableState.filter); setTableState({ ...tableState, indexToScroll: 0 }); }, [tableState]); - + // applying filter after parsing initial filter data from url useEffect(() => { applyFilter(); }, []); - + const dataSource = useLazyDataSource({ api, }, [api]); - + const rowOptions: DataRowOptions = { checkbox: { isVisible: true }, isSelectable: true, @@ -60,11 +61,12 @@ export const DemoTablePaged: React.FC = () => { ...tableState, filter: appliedFilter, }), [tableState, appliedFilter]); + const personsDataView = dataSource.useView(viewTableState, setTableState, { rowOptions, isFoldedByDefault: () => true, }); - + return (
{ /> + +
); }; \ No newline at end of file diff --git a/app/src/sandbox/tablePaged/data/api.ts b/app/src/sandbox/tablePaged/data/api.ts deleted file mode 100644 index ef580958f5..0000000000 --- a/app/src/sandbox/tablePaged/data/api.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { LazyDataSourceApi } from "@epam/uui"; -import { svc } from "../../../services"; -import { PersonTableFilter, PersonTableRecord, PersonTableRecordId } from "../types"; - -export const api: LazyDataSourceApi = (request, ctx) => { - const { ids: clientIds, ...rq } = request; - const groupBy = rq.filter?.groupBy; - const ids = clientIds?.map(clientId => clientId && typeof clientId[1] === 'number' && clientId[1]); - - if (groupBy && !ctx?.parent) { - return svc.api.demo.personGroups({ - ...rq, - filter: { groupBy }, - search: null, - itemsRequest: { filter: rq.filter, search: rq.search }, - ids, - } as any); - } else { - const parentFilter = ctx?.parent?.id && groupBy ? { [groupBy + 'Id']: ctx.parent.id } : {}; - const { groupBy: omitGroupBy, ...filter } = rq.filter; - return svc.api.demo.persons({ ...rq, filter: { ...filter, ...parentFilter }, ids }); - } -}; \ No newline at end of file diff --git a/app/src/sandbox/tablePaged/data/constants.ts b/app/src/sandbox/tablePaged/data/constants.ts deleted file mode 100644 index 08abca6174..0000000000 --- a/app/src/sandbox/tablePaged/data/constants.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { ITablePreset } from '@epam/uui'; - -const defaultPreset: ITablePreset = { - name: 'Default', - id: null, - filter: undefined, - columnsConfig: undefined, - isReadonly: true, -} as const; - -export const constants = { - defaultPreset, -}; \ No newline at end of file diff --git a/app/src/sandbox/tablePaged/data/index.ts b/app/src/sandbox/tablePaged/data/index.ts deleted file mode 100644 index ac05e89f28..0000000000 --- a/app/src/sandbox/tablePaged/data/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./api"; -export * from "./filters"; -export * from "./constants"; \ No newline at end of file diff --git a/app/src/sandbox/tablePaged/data/filters.ts b/app/src/sandbox/tablePaged/filters.ts similarity index 98% rename from app/src/sandbox/tablePaged/data/filters.ts rename to app/src/sandbox/tablePaged/filters.ts index 57e53b4c46..19239af30c 100644 --- a/app/src/sandbox/tablePaged/data/filters.ts +++ b/app/src/sandbox/tablePaged/filters.ts @@ -1,5 +1,5 @@ import { TableFiltersConfig, LazyDataSource } from "@epam/uui-core"; -import { svc } from "../../../services"; +import { svc } from "../../services"; export const getFilters = >(): TableFiltersConfig[] => { return [ diff --git a/app/src/sandbox/tablePaged/types.ts b/app/src/sandbox/tablePaged/types.ts index 513f77e1c9..b1302d4ba4 100644 --- a/app/src/sandbox/tablePaged/types.ts +++ b/app/src/sandbox/tablePaged/types.ts @@ -1,11 +1,9 @@ import { DataTableState, ITablePreset } from "@epam/uui"; -import { Person, PersonGroup, Location } from "@epam/uui-docs"; +import { Person } from "@epam/uui-docs"; -type PersonTableRecord = Person | PersonGroup | Location; +type PersonTableRecord = Person; -type PersonTableRecordId = [PersonTableRecord["__typename"], string | number]; - -type PersonTableFilter = { [key: string]: any, groupBy?: string }; +type PersonTableFilter = Record; interface PersonsTableState extends DataTableState { isFolded?: boolean; @@ -14,4 +12,4 @@ interface PersonsTableState extends DataTableState { type ILocalStoragePresets = (Omit)[]; -export { PersonTableRecord, PersonTableRecordId, PersonTableFilter, PersonsTableState, ILocalStoragePresets }; \ No newline at end of file +export { PersonTableRecord, PersonTableFilter, PersonsTableState, ILocalStoragePresets }; \ No newline at end of file