| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- "use strict";
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.doUpdate = doUpdate;
- exports.Updater = void 0;
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
- var Updater = function Updater(config, series) {
- (0, _classCallCheck2["default"])(this, Updater);
- var chart = config.chart,
- key = config.key,
- getGraphConfig = config.getGraphConfig;
- if (typeof getGraphConfig !== 'function') {
- console.warn('Updater need function getGraphConfig!');
- return;
- }
- if (!chart[key]) this.graphs = chart[key] = [];
- Object.assign(this, config);
- this.update(series);
- };
- exports.Updater = Updater;
- Updater.prototype.update = function (series) {
- var _this = this;
- var graphs = this.graphs,
- beforeUpdate = this.beforeUpdate;
- delRedundanceGraph(this, series);
- if (!series.length) return;
- var beforeUpdateType = (0, _typeof2["default"])(beforeUpdate);
- series.forEach(function (seriesItem, i) {
- if (beforeUpdateType === 'function') beforeUpdate(graphs, seriesItem, i, _this);
- var cache = graphs[i];
- if (cache) {
- changeGraphs(cache, seriesItem, i, _this);
- } else {
- addGraphs(graphs, seriesItem, i, _this);
- }
- });
- };
- function delRedundanceGraph(updater, series) {
- var graphs = updater.graphs,
- render = updater.chart.render;
- var cacheGraphNum = graphs.length;
- var needGraphNum = series.length;
- if (cacheGraphNum > needGraphNum) {
- var needDelGraphs = graphs.splice(needGraphNum);
- needDelGraphs.forEach(function (item) {
- return item.forEach(function (g) {
- return render.delGraph(g);
- });
- });
- }
- }
- function changeGraphs(cache, seriesItem, i, updater) {
- var getGraphConfig = updater.getGraphConfig,
- render = updater.chart.render,
- beforeChange = updater.beforeChange;
- var configs = getGraphConfig(seriesItem, updater);
- balanceGraphsNum(cache, configs, render);
- cache.forEach(function (graph, j) {
- var config = configs[j];
- if (typeof beforeChange === 'function') beforeChange(graph, config);
- updateGraphConfigByKey(graph, config);
- });
- }
- function balanceGraphsNum(graphs, graphConfig, render) {
- var cacheGraphNum = graphs.length;
- var needGraphNum = graphConfig.length;
- if (needGraphNum > cacheGraphNum) {
- var lastCacheGraph = graphs.slice(-1)[0];
- var needAddGraphNum = needGraphNum - cacheGraphNum;
- var needAddGraphs = new Array(needAddGraphNum).fill(0).map(function (foo) {
- return render.clone(lastCacheGraph);
- });
- graphs.push.apply(graphs, (0, _toConsumableArray2["default"])(needAddGraphs));
- } else if (needGraphNum < cacheGraphNum) {
- var needDelCache = graphs.splice(needGraphNum);
- needDelCache.forEach(function (g) {
- return render.delGraph(g);
- });
- }
- }
- function addGraphs(graphs, seriesItem, i, updater) {
- var getGraphConfig = updater.getGraphConfig,
- getStartGraphConfig = updater.getStartGraphConfig,
- chart = updater.chart;
- var render = chart.render;
- var startConfigs = null;
- if (typeof getStartGraphConfig === 'function') startConfigs = getStartGraphConfig(seriesItem, updater);
- var configs = getGraphConfig(seriesItem, updater);
- if (!configs.length) return;
- if (startConfigs) {
- graphs[i] = startConfigs.map(function (config) {
- return render.add(config);
- });
- graphs[i].forEach(function (graph, i) {
- var config = configs[i];
- updateGraphConfigByKey(graph, config);
- });
- } else {
- graphs[i] = configs.map(function (config) {
- return render.add(config);
- });
- }
- var afterAddGraph = updater.afterAddGraph;
- if (typeof afterAddGraph === 'function') afterAddGraph(graphs[i]);
- }
- function updateGraphConfigByKey(graph, config) {
- var keys = Object.keys(config);
- keys.forEach(function (key) {
- if (key === 'shape' || key === 'style') {
- graph.animation(key, config[key], true);
- } else {
- graph[key] = config[key];
- }
- });
- }
- function doUpdate() {
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
- chart = _ref.chart,
- series = _ref.series,
- key = _ref.key,
- getGraphConfig = _ref.getGraphConfig,
- getStartGraphConfig = _ref.getStartGraphConfig,
- beforeChange = _ref.beforeChange,
- beforeUpdate = _ref.beforeUpdate,
- afterAddGraph = _ref.afterAddGraph;
- if (chart[key]) {
- chart[key].update(series);
- } else {
- chart[key] = new Updater({
- chart: chart,
- key: key,
- getGraphConfig: getGraphConfig,
- getStartGraphConfig: getStartGraphConfig,
- beforeChange: beforeChange,
- beforeUpdate: beforeUpdate,
- afterAddGraph: afterAddGraph
- }, series);
- }
- }
|