116 lines
3.6 KiB
JavaScript
116 lines
3.6 KiB
JavaScript
|
|
||
|
/*
|
||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||
|
* or more contributor license agreements. See the NOTICE file
|
||
|
* distributed with this work for additional information
|
||
|
* regarding copyright ownership. The ASF licenses this file
|
||
|
* to you under the Apache License, Version 2.0 (the
|
||
|
* "License"); you may not use this file except in compliance
|
||
|
* with the License. You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing,
|
||
|
* software distributed under the License is distributed on an
|
||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||
|
* KIND, either express or implied. See the License for the
|
||
|
* specific language governing permissions and limitations
|
||
|
* under the License.
|
||
|
*/
|
||
|
|
||
|
|
||
|
/**
|
||
|
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||
|
* or more contributor license agreements. See the NOTICE file
|
||
|
* distributed with this work for additional information
|
||
|
* regarding copyright ownership. The ASF licenses this file
|
||
|
* to you under the Apache License, Version 2.0 (the
|
||
|
* "License"); you may not use this file except in compliance
|
||
|
* with the License. You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing,
|
||
|
* software distributed under the License is distributed on an
|
||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||
|
* KIND, either express or implied. See the License for the
|
||
|
* specific language governing permissions and limitations
|
||
|
* under the License.
|
||
|
*/
|
||
|
import * as zrUtil from 'zrender/lib/core/util.js';
|
||
|
import { makeInner } from '../../util/model.js';
|
||
|
var each = zrUtil.each;
|
||
|
var inner = makeInner();
|
||
|
/**
|
||
|
* @param ecModel
|
||
|
* @param newSnapshot key is dataZoomId
|
||
|
*/
|
||
|
export function push(ecModel, newSnapshot) {
|
||
|
var storedSnapshots = getStoreSnapshots(ecModel);
|
||
|
// If previous dataZoom can not be found,
|
||
|
// complete an range with current range.
|
||
|
each(newSnapshot, function (batchItem, dataZoomId) {
|
||
|
var i = storedSnapshots.length - 1;
|
||
|
for (; i >= 0; i--) {
|
||
|
var snapshot = storedSnapshots[i];
|
||
|
if (snapshot[dataZoomId]) {
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
if (i < 0) {
|
||
|
// No origin range set, create one by current range.
|
||
|
var dataZoomModel = ecModel.queryComponents({
|
||
|
mainType: 'dataZoom',
|
||
|
subType: 'select',
|
||
|
id: dataZoomId
|
||
|
})[0];
|
||
|
if (dataZoomModel) {
|
||
|
var percentRange = dataZoomModel.getPercentRange();
|
||
|
storedSnapshots[0][dataZoomId] = {
|
||
|
dataZoomId: dataZoomId,
|
||
|
start: percentRange[0],
|
||
|
end: percentRange[1]
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
storedSnapshots.push(newSnapshot);
|
||
|
}
|
||
|
export function pop(ecModel) {
|
||
|
var storedSnapshots = getStoreSnapshots(ecModel);
|
||
|
var head = storedSnapshots[storedSnapshots.length - 1];
|
||
|
storedSnapshots.length > 1 && storedSnapshots.pop();
|
||
|
// Find top for all dataZoom.
|
||
|
var snapshot = {};
|
||
|
each(head, function (batchItem, dataZoomId) {
|
||
|
for (var i = storedSnapshots.length - 1; i >= 0; i--) {
|
||
|
batchItem = storedSnapshots[i][dataZoomId];
|
||
|
if (batchItem) {
|
||
|
snapshot[dataZoomId] = batchItem;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
return snapshot;
|
||
|
}
|
||
|
export function clear(ecModel) {
|
||
|
inner(ecModel).snapshots = null;
|
||
|
}
|
||
|
export function count(ecModel) {
|
||
|
return getStoreSnapshots(ecModel).length;
|
||
|
}
|
||
|
/**
|
||
|
* History length of each dataZoom may be different.
|
||
|
* this._history[0] is used to store origin range.
|
||
|
*/
|
||
|
function getStoreSnapshots(ecModel) {
|
||
|
var store = inner(ecModel);
|
||
|
if (!store.snapshots) {
|
||
|
store.snapshots = [{}];
|
||
|
}
|
||
|
return store.snapshots;
|
||
|
}
|