mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
(core) Ref columns weren't filtered on csv/excel export for sections.
Summary: Ref columns weren't filtred on section export. Filters were applied to a display helper columns instead of the actual columns. Test Plan: Updated tests Reviewers: alexmojaki Reviewed By: alexmojaki Subscribers: alexmojaki Differential Revision: https://phab.getgrist.com/D3644
This commit is contained in:
parent
792565976a
commit
198beaab2a
@ -273,10 +273,7 @@ export async function exportSection(
|
|||||||
const displayCol = tableColsById[field?.displayCol || col.displayCol || col.id];
|
const displayCol = tableColsById[field?.displayCol || col.displayCol || col.id];
|
||||||
const colWidgetOptions = gutil.safeJsonParse(col.widgetOptions, {});
|
const colWidgetOptions = gutil.safeJsonParse(col.widgetOptions, {});
|
||||||
const fieldWidgetOptions = field ? gutil.safeJsonParse(field.widgetOptions, {}) : {};
|
const fieldWidgetOptions = field ? gutil.safeJsonParse(field.widgetOptions, {}) : {};
|
||||||
const filterString = unsavedFiltersByColRef[col.id]?.filter || savedFiltersByColRef[col.id]?.filter;
|
|
||||||
const filterFunc = buildColFilter(filterString, col.type);
|
|
||||||
return {
|
return {
|
||||||
filterFunc,
|
|
||||||
id: displayCol.id,
|
id: displayCol.id,
|
||||||
colId: displayCol.colId,
|
colId: displayCol.colId,
|
||||||
label: col.label,
|
label: col.label,
|
||||||
@ -285,9 +282,19 @@ export async function exportSection(
|
|||||||
widgetOptions: Object.assign(colWidgetOptions, fieldWidgetOptions),
|
widgetOptions: Object.assign(colWidgetOptions, fieldWidgetOptions),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
const tableColumns = columns
|
const buildFilters = (col: GristTablesColumn, field?: GristViewsSectionField) => {
|
||||||
|
const filterString = unsavedFiltersByColRef[col.id]?.filter || savedFiltersByColRef[col.id]?.filter;
|
||||||
|
const filterFunc = buildColFilter(filterString, col.type);
|
||||||
|
return {
|
||||||
|
filterFunc,
|
||||||
|
id: col.id,
|
||||||
|
colId: col.colId,
|
||||||
|
type: col.type,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
const columnsForFilters = columns
|
||||||
.filter(column => !gristTypes.isHiddenCol(column.colId))
|
.filter(column => !gristTypes.isHiddenCol(column.colId))
|
||||||
.map(column => viewify(column, fieldsByColRef[column.id]));
|
.map(column => buildFilters(column, fieldsByColRef[column.id]));
|
||||||
const viewColumns = _.sortBy(fields, 'parentPos')
|
const viewColumns = _.sortBy(fields, 'parentPos')
|
||||||
.map((field) => viewify(tableColsById[field.colRef], field));
|
.map((field) => viewify(tableColsById[field.colRef], field));
|
||||||
|
|
||||||
@ -313,9 +320,9 @@ export async function exportSection(
|
|||||||
sorter.updateSpec(sortSpec);
|
sorter.updateSpec(sortSpec);
|
||||||
rowIds.sort((a, b) => sorter.compare(a, b));
|
rowIds.sort((a, b) => sorter.compare(a, b));
|
||||||
// create cell accessors
|
// create cell accessors
|
||||||
const tableAccess = tableColumns.map(col => getters.getColGetter(col.id)!);
|
const tableAccess = columnsForFilters.map(col => getters.getColGetter(col.id)!);
|
||||||
// create row filter based on all columns filter
|
// create row filter based on all columns filter
|
||||||
const rowFilter = tableColumns
|
const rowFilter = columnsForFilters
|
||||||
.map((col, c) => buildRowFilter(tableAccess[c], col.filterFunc))
|
.map((col, c) => buildRowFilter(tableAccess[c], col.filterFunc))
|
||||||
.reduce((prevFilter, curFilter) => (id) => prevFilter(id) && curFilter(id), () => true);
|
.reduce((prevFilter, curFilter) => (id) => prevFilter(id) && curFilter(id), () => true);
|
||||||
// filter rows numbers
|
// filter rows numbers
|
||||||
|
Loading…
Reference in New Issue
Block a user