mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
25b71c4e57
Summary: The GristDocTutorial table is now always visible to users with edit access to the trunk, and the Share menu is now available within tutorial forks, making it easier for editors to replace the original tutorial trunk with changes made in the fork, and for viewers to export their copy of the tutorial. Also, changes to the GristDocTutorial table are now immediately reflected in the tutorial popup. Test Plan: Browser tests. Reviewers: jarek Reviewed By: jarek Differential Revision: https://phab.getgrist.com/D3930
40 lines
1.6 KiB
TypeScript
40 lines
1.6 KiB
TypeScript
import {DocModel, IRowModel, refRecord, ViewRec} from 'app/client/models/DocModel';
|
|
import * as ko from 'knockout';
|
|
|
|
// Represents a page entry in the tree of pages.
|
|
export interface PageRec extends IRowModel<"_grist_Pages"> {
|
|
view: ko.Computed<ViewRec>;
|
|
isHidden: ko.Computed<boolean>;
|
|
isCensored: ko.Computed<boolean>;
|
|
isSpecial: ko.Computed<boolean>;
|
|
}
|
|
|
|
export function createPageRec(this: PageRec, docModel: DocModel): void {
|
|
this.view = refRecord(docModel.views, this.viewRef);
|
|
// Page is hidden when any of this is true:
|
|
// - It has an empty name (or no name at all)
|
|
// - It is GristDocTour (unless user wants to see it)
|
|
// - It is GristDocTutorial (unless user should see it)
|
|
// - It is a page generated for a hidden table TODO: Follow up - don't create
|
|
// pages for hidden tables.
|
|
// This is used currently only the left panel, to hide pages from the user.
|
|
this.isCensored = ko.pureComputed(() => !this.view().name());
|
|
this.isSpecial = ko.pureComputed(() => {
|
|
const name = this.view().name();
|
|
const isTableHidden = () => {
|
|
const viewId = this.view().id();
|
|
const tables = docModel.rawDataTables.all();
|
|
const primaryTable = tables.find(t => t.primaryViewId() === viewId);
|
|
return !!primaryTable && primaryTable.tableId()?.startsWith("GristHidden_");
|
|
};
|
|
return (
|
|
(name === 'GristDocTour' && !docModel.showDocTourTable) ||
|
|
(name === 'GristDocTutorial' && !docModel.showDocTutorialTable) ||
|
|
isTableHidden()
|
|
);
|
|
});
|
|
this.isHidden = ko.pureComputed(() => {
|
|
return this.isCensored() || this.isSpecial();
|
|
});
|
|
}
|