mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) hide long sequences of unchanged rows in diffs
Summary: It can be hard to find changes, even when highlighted, in a table with many rows. This diff replaces long sequences of unchanged rows with a row containing "..."s. With daff, I found that it is important to do this for sequences of unchanged columns also, but not tackling that yet. Test Plan: added test Reviewers: dsagal Reviewed By: dsagal Differential Revision: https://phab.getgrist.com/D2666
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import * as DataTableModel from 'app/client/models/DataTableModel';
|
||||
import {ColumnGetters} from 'app/common/ColumnGetters';
|
||||
import * as gristTypes from 'app/common/gristTypes';
|
||||
|
||||
@@ -9,12 +10,30 @@ import * as gristTypes from 'app/common/gristTypes';
|
||||
*/
|
||||
export class ClientColumnGetters implements ColumnGetters {
|
||||
|
||||
constructor(private _tableModel: any) {
|
||||
// If the "unversioned" option is set, then cells with multiple
|
||||
// versions will be read as a single version - the first version
|
||||
// available of parent, local, or remote. This can make sense for
|
||||
// sorting, so cells appear in a reasonably sensible place.
|
||||
constructor(private _tableModel: DataTableModel, private _options: {
|
||||
unversioned?: boolean} = {}) {
|
||||
}
|
||||
|
||||
public getColGetter(colRef: number): ((rowId: number) => any) | null {
|
||||
const colId = this._tableModel.docModel.columns.getRowModel(Math.abs(colRef)).colId();
|
||||
return this._tableModel.tableData.getRowPropFunc(colId);
|
||||
const getter = this._tableModel.tableData.getRowPropFunc(colId);
|
||||
if (!getter) { return getter || null; }
|
||||
if (this._options.unversioned && this._tableModel.tableData.mayHaveVersions()) {
|
||||
return (rowId) => {
|
||||
const value = getter(rowId);
|
||||
if (value && gristTypes.isVersions(value)) {
|
||||
const versions = value[1];
|
||||
return ('parent' in versions) ? versions.parent :
|
||||
('local' in versions) ? versions.local : versions.remote;
|
||||
}
|
||||
return value;
|
||||
};
|
||||
}
|
||||
return getter;
|
||||
}
|
||||
|
||||
public getManualSortGetter(): ((rowId: number) => any) | null {
|
||||
|
||||
Reference in New Issue
Block a user