UNPKG

@finos/legend-data-cube

Version:
57 lines 2.31 kB
/** * Copyright (c) 2020-present, Goldman Sachs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { action, makeObservable, observable } from 'mobx'; import { DataCubeSnapshotController } from '../services/DataCubeSnapshotService.js'; import { DataCubeConfiguration } from '../core/model/DataCubeConfiguration.js'; /** * Unlike other query editor state, this state does not support making any * modification to the query, it simplies subscribe to extract information * from the latest snapshot to help display latest static info about the query. */ export class DataCubeInfoState extends DataCubeSnapshotController { _view; configuration = new DataCubeConfiguration(); name = ''; // TODO: filter preview text constructor(view) { super(view.engine, view.settingService, view.snapshotService); makeObservable(this, { configuration: observable, name: observable, applySnapshot: action, }); this._view = view; } getSnapshotSubscriberName() { return 'info'; } async applySnapshot(snapshot, previousSnapshot) { const data = snapshot.data; const configuration = DataCubeConfiguration.serialization.fromJson(data.configuration); this.configuration = configuration; if (configuration.name !== this.name) { this.name = configuration.name; // TODO: make sure we only call this for the main view of data cube when we support multi views this._view.dataCube.options?.onNameChanged?.({ api: this._view.dataCube.api, name: this.name, source: this._view.source, }); } // TODO: filter preview text } } //# sourceMappingURL=DataCubeInfoState.js.map