mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) Filter out pages for hidden views from the page list.
Summary: - Filters out hidden pages from docModel.allPagesList (used for knowing default page, and for search iteration). - Filters out hidden pages from TreeModel (uses raw tableData, so has a different way to filter). Test Plan: WIP Reviewers: georgegevoian Reviewed By: georgegevoian Differential Revision: https://phab.getgrist.com/D2996
This commit is contained in:
@@ -4,22 +4,36 @@ import { GristDoc } from "app/client/components/GristDoc";
|
||||
import { PageRec } from "app/client/models/DocModel";
|
||||
import { urlState } from "app/client/models/gristUrlState";
|
||||
import * as MetaTableModel from "app/client/models/MetaTableModel";
|
||||
import { find as findInTree, fromTableData, TreeItemRecord } from "app/client/models/TreeModel";
|
||||
import { find as findInTree, fromTableData, TreeItemRecord, TreeRecord,
|
||||
TreeTableData} from "app/client/models/TreeModel";
|
||||
import { TreeViewComponent } from "app/client/ui/TreeViewComponent";
|
||||
import { confirmModal } from 'app/client/ui2018/modals';
|
||||
import { buildPageDom, PageActions } from "app/client/ui2018/pages";
|
||||
import { mod } from 'app/common/gutil';
|
||||
import { Computed, Disposable, dom, observable, Observable } from "grainjs";
|
||||
import { Computed, Disposable, dom, fromKo, observable, Observable } from "grainjs";
|
||||
|
||||
// build dom for the tree view of pages
|
||||
export function buildPagesDom(owner: Disposable, activeDoc: GristDoc, isOpen: Observable<boolean>) {
|
||||
const pagesTable = activeDoc.docModel.pages;
|
||||
const buildDom = buildDomFromTable.bind(null, pagesTable, activeDoc);
|
||||
|
||||
const records = Computed.create<TreeRecord[]>(owner, (use) =>
|
||||
use(activeDoc.docModel.visibleDocPages).map(page => ({
|
||||
id: page.getRowId(),
|
||||
indentation: use(page.indentation),
|
||||
pagePos: use(page.pagePos),
|
||||
viewRef: use(page.viewRef),
|
||||
}))
|
||||
);
|
||||
const getTreeTableData = (): TreeTableData => ({
|
||||
getRecords: () => records.get(),
|
||||
sendTableActions: (...args) => pagesTable.tableData.sendTableActions(...args),
|
||||
});
|
||||
|
||||
// create the model and keep in sync with the table
|
||||
const model = observable(fromTableData(pagesTable.tableData, buildDom));
|
||||
owner.autoDispose(pagesTable.tableData.tableActionEmitter.addListener(() => {
|
||||
model.set(fromTableData(pagesTable.tableData, buildDom, model.get()));
|
||||
const model = observable(fromTableData(getTreeTableData(), buildDom));
|
||||
owner.autoDispose(records.addListener(() => {
|
||||
model.set(fromTableData(getTreeTableData(), buildDom, model.get()));
|
||||
}));
|
||||
|
||||
// create a computed that reads the selected page from the url and return the corresponding item
|
||||
@@ -69,15 +83,7 @@ function buildDomFromTable(pagesTable: MetaTableModel<PageRec>, activeDoc: Grist
|
||||
actions.isRemoveDisabled = () => (docModel.allTables.all().length <= 1);
|
||||
}
|
||||
|
||||
const maybeHiddenPageName = Computed.create(activeDoc, (use) => {
|
||||
const name = use(pageName);
|
||||
if (name === 'GristDocTour' && !activeDoc.showDocTourTable) {
|
||||
return '';
|
||||
}
|
||||
return name;
|
||||
});
|
||||
|
||||
return buildPageDom(maybeHiddenPageName, actions, urlState().setLinkUrl({docPage: viewId}));
|
||||
return buildPageDom(fromKo(pageName), actions, urlState().setLinkUrl({docPage: viewId}));
|
||||
}
|
||||
|
||||
// Select another page in cyclic ordering of pages. Order is downard if given a positive `delta`,
|
||||
|
||||
Reference in New Issue
Block a user