blob: f251a560212a6817485c1c57a7a9a0272bb57e1f [file] [log] [blame]
(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