| (function (global, factory) { |
| typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : |
| typeof define === 'function' && define.amd ? define(['exports'], factory) : |
| (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ecSimpleOptionPlayer = {})); |
| }(this, (function (exports) { 'use strict'; |
| |
| function assert(condition, message) {
|
| if (!condition) {
|
| throw new Error(message);
|
| }
|
| }
|
| function hasOwn(own, prop) {
|
| return own.hasOwnProperty(prop);
|
| }
|
| function isObject(value) {
|
| var type = typeof value;
|
| return type === 'function' || (!!value && type === 'object');
|
| }
|
| function isArray(value) {
|
| if (Array.isArray) {
|
| return Array.isArray(value);
|
| }
|
| return Object.prototype.toString.call(value) === '[object Array]';
|
| }
|
| function isFunction(value) {
|
| return typeof value === 'function';
|
| }
|
| function getMapValue(map, key) {
|
| return (key != null && hasOwn(map, key)) ? map[key] : null;
|
| } |
| |
| function create(opt) {
|
| return new SimpleOptionPlayer(opt);
|
| }
|
| var SimpleOptionPlayer = (function () {
|
| function SimpleOptionPlayer(opt) {
|
| assert(opt.chart
|
| && isObject(opt.dataMeta)
|
| && isArray(opt.optionList)
|
| && opt.seriesIndex != null
|
| && opt.optionList.length);
|
| this._chart = opt.chart;
|
| this._dataMeta = opt.dataMeta;
|
| var optionList = this._optionList = opt.optionList;
|
| var optionMap = this._optionMap = {};
|
| this._replaceMerge = opt.replaceMerge;
|
| this._seriesIndex = opt.seriesIndex;
|
| this._currOptionIdx = null;
|
| for (var i = 0; i < optionList.length; i++) {
|
| var optionWrap = optionList[i];
|
| var optionKey = optionWrap.key;
|
| if (optionKey != null) {
|
| assert(!hasOwn(optionMap, optionKey), 'option key duplicat: ' + optionKey);
|
| optionMap[optionKey] = i;
|
| }
|
| }
|
| }
|
| SimpleOptionPlayer.prototype.next = function () {
|
| var optionList = this._optionList;
|
| var newOptionIdx = this._currOptionIdx == null
|
| ? 0
|
| : Math.min(optionList.length - 1, this._currOptionIdx + 1);
|
| this._doChangeOption(newOptionIdx);
|
| };
|
| SimpleOptionPlayer.prototype.previous = function () {
|
| var optionList = this._optionList;
|
| var newOptionIdx = this._currOptionIdx == null
|
| ? optionList.length - 1
|
| : Math.max(0, this._currOptionIdx - 1);
|
| this._doChangeOption(newOptionIdx);
|
| };
|
| SimpleOptionPlayer.prototype.go = function (optionKey) {
|
| var newOptionIdx = getMapValue(this._optionMap, optionKey);
|
| assert(newOptionIdx != null, 'Can not find option by option key: ' + optionKey);
|
| this._doChangeOption(newOptionIdx);
|
| };
|
| SimpleOptionPlayer.prototype._doChangeOption = function (newOptionIdx) {
|
| var optionList = this._optionList;
|
| var oldOptionWrap = this._currOptionIdx != null ? optionList[this._currOptionIdx] : null;
|
| var newOptionWrap = optionList[newOptionIdx];
|
| var dataMeta = this._dataMeta;
|
| var targetSeriesIndex = this._seriesIndex;
|
| var transitionOpt = {
|
| to: { seriesIndex: targetSeriesIndex }
|
| };
|
| if (oldOptionWrap) {
|
| var common = findCommonDimension(oldOptionWrap, newOptionWrap)
|
| || findCommonDimension(newOptionWrap, oldOptionWrap);
|
| if (common != null) {
|
| transitionOpt = {
|
| from: {
|
| seriesIndex: targetSeriesIndex,
|
| dimension: common.uniqueDimension
|
| },
|
| to: {
|
| seriesIndex: targetSeriesIndex,
|
| dimension: common.uniqueDimension,
|
| },
|
| dividingMethod: common.dividingMethod
|
| };
|
| }
|
| }
|
| this._currOptionIdx = newOptionIdx;
|
| this._getChart().setOption(newOptionWrap.option, {
|
| replaceMerge: this._replaceMerge,
|
| transition: transitionOpt
|
| });
|
| function findCommonDimension(optionWrapA, optionWrapB) {
|
| var metaA = getMapValue(dataMeta, optionWrapA.dataMetaKey);
|
| var metaB = getMapValue(dataMeta, optionWrapB.dataMetaKey);
|
| var uniqueDimensionB = metaB.uniqueDimension;
|
| if (uniqueDimensionB != null && metaA.dimensions.indexOf(uniqueDimensionB) >= 0) {
|
| return {
|
| uniqueDimension: uniqueDimensionB,
|
| dividingMethod: metaB.dividingMethod
|
| };
|
| }
|
| }
|
| };
|
| SimpleOptionPlayer.prototype._getChart = function () {
|
| return isFunction(this._chart) ? this._chart() : this._chart;
|
| };
|
| SimpleOptionPlayer.prototype.getOptionKeys = function () {
|
| var optionKeys = [];
|
| var optionList = this._optionList;
|
| for (var i = 0; i < optionList.length; i++) {
|
| optionKeys.push(optionList[i].key);
|
| }
|
| return optionKeys;
|
| };
|
| return SimpleOptionPlayer;
|
| }()); |
| |
| exports.create = create; |
| |
| Object.defineProperty(exports, '__esModule', { value: true }); |
| |
| }))); |
| //# sourceMappingURL=ecSimpleOptionPlayer.js.map |