mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) Revealing hidden pages with visible children.
Summary: When a page is hidden, all its nested pages are shown as children of a different page that happens to be before (as in pagePos) that page. This diff shows those pages as CENSORED. Test Plan: Updated Reviewers: alexmojaki Reviewed By: alexmojaki Subscribers: alexmojaki Differential Revision: https://phab.getgrist.com/D3670
This commit is contained in:
@@ -24,6 +24,7 @@ import reverse = require("lodash/reverse");
|
||||
* `TreeModel` and any item in it implements `TreeItem`.
|
||||
*/
|
||||
export interface TreeNode {
|
||||
hidden?: boolean;
|
||||
// Returns an observable array of children. Or null if the node does not accept children.
|
||||
children(): ObsArray<TreeItem>|null;
|
||||
|
||||
@@ -61,7 +62,7 @@ export interface TreeTableData {
|
||||
}
|
||||
|
||||
// describes a function that builds dom for a particular record
|
||||
type DomBuilder = (id: number) => HTMLElement;
|
||||
type DomBuilder = (id: number, hidden: boolean) => HTMLElement;
|
||||
|
||||
|
||||
// Returns a list of the records from table that is suitable to build the tree model, ie: records
|
||||
@@ -108,8 +109,9 @@ export function fromTableData(table: TreeTableData, buildDom: DomBuilder, oldMod
|
||||
const children = indentations[rec.indentation + 1] || [];
|
||||
delete indentations[rec.indentation + 1];
|
||||
const item = oldItems[rec.id] || new TreeItemRecord();
|
||||
item.hidden = rec.hidden;
|
||||
item.init(storage, index, reverse(children));
|
||||
item.buildDom = () => buildDom(rec.id);
|
||||
item.buildDom = () => buildDom(rec.id, rec.hidden);
|
||||
siblings.push(item);
|
||||
});
|
||||
return new TreeModelRecord(storage, reverse(indentations[0] || []));
|
||||
@@ -123,7 +125,7 @@ interface Storage {
|
||||
|
||||
// TreeNode implementation that uses a grist table.
|
||||
export class TreeNodeRecord implements TreeNode {
|
||||
|
||||
public hidden: boolean = false;
|
||||
public storage: Storage;
|
||||
public index: number|"root";
|
||||
public children: () => ObsArray<TreeItemRecord>;
|
||||
@@ -187,6 +189,7 @@ export class TreeNodeRecord implements TreeNode {
|
||||
forEach(update[0], (val, key) => values[key] = update.map(rec => rec[key]));
|
||||
const rowIds = values.id;
|
||||
delete values.id;
|
||||
delete values.hidden;
|
||||
userActions.push(["BulkUpdateRecord", rowIds, values]);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user