mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
be96db4689
Summary: Removed some TS and python code interacting with this meta table. Not touching schema or migrations. This is not really necessary, just checking my understanding and cleaning up in preparation for raw data views. I can also remove _grist_TabItems code while I'm at it. Test Plan: this Reviewers: dsagal Reviewed By: dsagal Differential Revision: https://phab.getgrist.com/D3161
52 lines
2.1 KiB
TypeScript
52 lines
2.1 KiB
TypeScript
import {KoArray} from 'app/client/lib/koArray';
|
|
import * as koUtil from 'app/client/lib/koUtil';
|
|
import {DocModel, IRowModel, recordSet, refRecord} from 'app/client/models/DocModel';
|
|
import {TabBarRec, ViewSectionRec} from 'app/client/models/DocModel';
|
|
import * as modelUtil from 'app/client/models/modelUtil';
|
|
import * as ko from 'knockout';
|
|
|
|
// Represents a view (now also referred to as a "page") containing one or more view sections.
|
|
export interface ViewRec extends IRowModel<"_grist_Views"> {
|
|
viewSections: ko.Computed<KoArray<ViewSectionRec>>;
|
|
tabBarItem: ko.Computed<KoArray<TabBarRec>>;
|
|
|
|
layoutSpecObj: modelUtil.ObjObservable<any>;
|
|
|
|
// An observable for the ref of the section last selected by the user.
|
|
activeSectionId: ko.Computed<number>;
|
|
|
|
activeSection: ko.Computed<ViewSectionRec>;
|
|
|
|
// If the active section is removed, set the next active section to be the default.
|
|
_isActiveSectionGone: ko.Computed<boolean>;
|
|
|
|
isLinking: ko.Observable<boolean>;
|
|
}
|
|
|
|
export function createViewRec(this: ViewRec, docModel: DocModel): void {
|
|
this.viewSections = recordSet(this, docModel.viewSections, 'parentId');
|
|
this.tabBarItem = recordSet(this, docModel.tabBar, 'viewRef');
|
|
|
|
this.layoutSpecObj = modelUtil.jsonObservable(this.layoutSpec);
|
|
|
|
// An observable for the ref of the section last selected by the user.
|
|
this.activeSectionId = koUtil.observableWithDefault(ko.observable(), () => {
|
|
// The default function which is used when the conditional case is true.
|
|
// Read may occur for recently disposed sections, must check condition first.
|
|
return !this.isDisposed() &&
|
|
this.viewSections().all().length > 0 ? this.viewSections().at(0)!.getRowId() : 0;
|
|
});
|
|
|
|
this.activeSection = refRecord(docModel.viewSections, this.activeSectionId);
|
|
|
|
// If the active section is removed, set the next active section to be the default.
|
|
this._isActiveSectionGone = this.autoDispose(ko.computed(() => this.activeSection()._isDeleted()));
|
|
this.autoDispose(this._isActiveSectionGone.subscribe(gone => {
|
|
if (gone) {
|
|
this.activeSectionId(0);
|
|
}
|
|
}));
|
|
|
|
this.isLinking = ko.observable(false);
|
|
}
|