140 lines
5.8 KiB
JavaScript
Generated
140 lines
5.8 KiB
JavaScript
Generated
(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
|