/*
|
* Licensed to the Apache Software Foundation (ASF) under one
|
* or more contributor license agreements. See the NOTICE file
|
* distributed with this work for additional information
|
* regarding copyright ownership. The ASF licenses this file
|
* to you 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.
|
*/
|
|
/**
|
* This module is imported by echarts directly.
|
*
|
* Notice:
|
* Always keep this file exists for backward compatibility.
|
* Because before 4.1.0, dataset is an optional component,
|
* some users may import this module manually.
|
*/
|
|
import ComponentModel from '../../model/Component';
|
import ComponentView from '../../view/Component';
|
import {
|
SERIES_LAYOUT_BY_COLUMN, ComponentOption, SeriesEncodeOptionMixin,
|
OptionSourceData, SeriesLayoutBy, OptionSourceHeader
|
} from '../../util/types';
|
import { DataTransformOption, PipedDataTransformOption } from '../../data/helper/transform';
|
import GlobalModel from '../../model/Global';
|
import Model from '../../model/Model';
|
import { disableTransformOptionMerge, SourceManager } from '../../data/helper/sourceManager';
|
import { EChartsExtensionInstallRegisters } from '../../extension';
|
|
|
export interface DatasetOption extends
|
Pick<ComponentOption, 'type' | 'id' | 'name'>,
|
Pick<SeriesEncodeOptionMixin, 'dimensions'> {
|
mainType?: 'dataset';
|
|
seriesLayoutBy?: SeriesLayoutBy;
|
sourceHeader?: OptionSourceHeader;
|
source?: OptionSourceData;
|
|
fromDatasetIndex?: number;
|
fromDatasetId?: string;
|
transform?: DataTransformOption | PipedDataTransformOption;
|
// When a transform result more than on results, the results can be referenced only by:
|
// Using `fromDatasetIndex`/`fromDatasetId` and `transfromResultIndex` to retrieve
|
// the results from other dataset.
|
fromTransformResult?: number;
|
}
|
|
export class DatasetModel<Opts extends DatasetOption = DatasetOption> extends ComponentModel<Opts> {
|
|
type = 'dataset';
|
static type = 'dataset';
|
|
static defaultOption: DatasetOption = {
|
seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN
|
};
|
|
private _sourceManager: SourceManager;
|
|
init(option: Opts, parentModel: Model, ecModel: GlobalModel): void {
|
super.init(option, parentModel, ecModel);
|
this._sourceManager = new SourceManager(this);
|
disableTransformOptionMerge(this);
|
}
|
|
mergeOption(newOption: Opts, ecModel: GlobalModel): void {
|
super.mergeOption(newOption, ecModel);
|
disableTransformOptionMerge(this);
|
}
|
|
optionUpdated() {
|
this._sourceManager.dirty();
|
}
|
|
getSourceManager() {
|
return this._sourceManager;
|
}
|
}
|
|
class DatasetView extends ComponentView {
|
static type = 'dataset';
|
type = 'dataset';
|
}
|
|
export function install(registers: EChartsExtensionInstallRegisters) {
|
registers.registerComponentModel(DatasetModel);
|
registers.registerComponentView(DatasetView);
|
}
|