mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
bc54a6646e
Summary: Fixes a problem reported here: https://community.getgrist.com/t/exporting-the-records-in-a-linked-view/2556/4 The download CSV/Excel link now contains an additional `linkingFilter` URL parameter containing JSON-encoded `filters` and `operations`. This object is originally created in the frontend in `LinkingState`, and previously it was only used internally in the frontend. It would make its way via `QuerySetManager` to `QuerySet.getFilterFunc` where the actual filtering logic happened. Now most of that logic has been moved to a similar function in `common`. The new function works with a new interface `ColumnGettersByColId` which abstract over the different ways data is accessed in the client and server in this context. There's no significant new logic in the diff, just refactoring and wiring. Test Plan: Expanded two `nbrowser/SelectBy*.ts` test suites to also check the contents of a downloaded CSV in different linking scenarios. Reviewers: paulfitz Reviewed By: paulfitz Differential Revision: https://phab.getgrist.com/D3961
38 lines
1.0 KiB
TypeScript
38 lines
1.0 KiB
TypeScript
import { Sort } from 'app/common/SortSpec';
|
|
|
|
/**
|
|
*
|
|
* An interface for accessing the columns of a table by their
|
|
* ID in _grist_Tables_column, which is the ID used in sort specifications.
|
|
* Implementations of this interface can be supplied to SortFunc to
|
|
* sort the rows of a table according to such a specification.
|
|
*
|
|
*/
|
|
export interface ColumnGetters {
|
|
/**
|
|
*
|
|
* Takes a _grist_Tables_column ID and returns a function that maps
|
|
* rowIds to values for that column. Those values should be display
|
|
* values if available, drawn from a corresponding display column.
|
|
*
|
|
*/
|
|
getColGetter(spec: Sort.ColSpec): ColumnGetter | null;
|
|
|
|
/**
|
|
*
|
|
* Returns a getter for the manual sort column if it is available.
|
|
*
|
|
*/
|
|
getManualSortGetter(): ColumnGetter | null;
|
|
}
|
|
|
|
/**
|
|
* Like ColumnGetters, but takes the string `colId` rather than a `ColSpec`
|
|
* or numeric row ID.
|
|
*/
|
|
export interface ColumnGettersByColId {
|
|
getColGetterByColId(colId: string): ColumnGetter | null;
|
|
}
|
|
|
|
export type ColumnGetter = (rowId: number) => any;
|