12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- /**
- * ECharts option manager
- */
- import ExtensionAPI from '../core/ExtensionAPI.js';
- import { OptionPreprocessor, ECUnitOption, ECBasicOption } from '../util/types.js';
- import GlobalModel, { InnerSetOptionOpts } from './Global.js';
- /**
- * TERM EXPLANATIONS:
- * See `ECOption` and `ECUnitOption` in `src/util/types.ts`.
- */
- declare class OptionManager {
- private _api;
- private _timelineOptions;
- private _mediaList;
- private _mediaDefault;
- /**
- * -1, means default.
- * empty means no media.
- */
- private _currentMediaIndices;
- private _optionBackup;
- private _newBaseOption;
- constructor(api: ExtensionAPI);
- setOption(rawOption: ECBasicOption, optionPreprocessorFuncs: OptionPreprocessor[], opt: InnerSetOptionOpts): void;
- mountOption(isRecreate: boolean): ECUnitOption;
- getTimelineOption(ecModel: GlobalModel): ECUnitOption;
- getMediaOption(ecModel: GlobalModel): ECUnitOption[];
- }
- /**
- * Consider case:
- * `chart.setOption(opt1);`
- * Then user do some interaction like dataZoom, dataView changing.
- * `chart.setOption(opt2);`
- * Then user press 'reset button' in toolbox.
- *
- * After doing that all of the interaction effects should be reset, the
- * chart should be the same as the result of invoke
- * `chart.setOption(opt1); chart.setOption(opt2);`.
- *
- * Although it is not able ensure that
- * `chart.setOption(opt1); chart.setOption(opt2);` is equivalents to
- * `chart.setOption(merge(opt1, opt2));` exactly,
- * this might be the only simple way to implement that feature.
- *
- * MEMO: We've considered some other approaches:
- * 1. Each model handle its self restoration but not uniform treatment.
- * (Too complex in logic and error-prone)
- * 2. Use a shadow ecModel. (Performace expensive)
- *
- * FIXME: A possible solution:
- * Add a extra level of model for each component model. The inheritance chain would be:
- * ecModel <- componentModel <- componentActionModel <- dataItemModel
- * And all of the actions can only modify the `componentActionModel` rather than
- * `componentModel`. `setOption` will only modify the `ecModel` and `componentModel`.
- * When "resotre" action triggered, model from `componentActionModel` will be discarded
- * instead of recreating the "ecModel" from the "_optionBackup".
- */
- export default OptionManager;
|