project/node_modules/echarts/lib/component/parallel/ParallelView.js

137 lines
4.9 KiB
JavaScript
Raw Normal View History

2024-07-14 15:48:34 +08:00
/*
* 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 { __extends } from "tslib";
import ComponentView from '../../view/Component.js';
import { each, bind, extend } from 'zrender/lib/core/util.js';
import { createOrUpdate, clear } from '../../util/throttle.js';
var CLICK_THRESHOLD = 5; // > 4
var ParallelView = /** @class */function (_super) {
__extends(ParallelView, _super);
function ParallelView() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = ParallelView.type;
return _this;
}
ParallelView.prototype.render = function (parallelModel, ecModel, api) {
this._model = parallelModel;
this._api = api;
if (!this._handlers) {
this._handlers = {};
each(handlers, function (handler, eventName) {
api.getZr().on(eventName, this._handlers[eventName] = bind(handler, this));
}, this);
}
createOrUpdate(this, '_throttledDispatchExpand', parallelModel.get('axisExpandRate'), 'fixRate');
};
ParallelView.prototype.dispose = function (ecModel, api) {
clear(this, '_throttledDispatchExpand');
each(this._handlers, function (handler, eventName) {
api.getZr().off(eventName, handler);
});
this._handlers = null;
};
/**
* @internal
* @param {Object} [opt] If null, cancel the last action triggering for debounce.
*/
ParallelView.prototype._throttledDispatchExpand = function (opt) {
this._dispatchExpand(opt);
};
/**
* @internal
*/
ParallelView.prototype._dispatchExpand = function (opt) {
opt && this._api.dispatchAction(extend({
type: 'parallelAxisExpand'
}, opt));
};
ParallelView.type = 'parallel';
return ParallelView;
}(ComponentView);
var handlers = {
mousedown: function (e) {
if (checkTrigger(this, 'click')) {
this._mouseDownPoint = [e.offsetX, e.offsetY];
}
},
mouseup: function (e) {
var mouseDownPoint = this._mouseDownPoint;
if (checkTrigger(this, 'click') && mouseDownPoint) {
var point = [e.offsetX, e.offsetY];
var dist = Math.pow(mouseDownPoint[0] - point[0], 2) + Math.pow(mouseDownPoint[1] - point[1], 2);
if (dist > CLICK_THRESHOLD) {
return;
}
var result = this._model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);
result.behavior !== 'none' && this._dispatchExpand({
axisExpandWindow: result.axisExpandWindow
});
}
this._mouseDownPoint = null;
},
mousemove: function (e) {
// Should do nothing when brushing.
if (this._mouseDownPoint || !checkTrigger(this, 'mousemove')) {
return;
}
var model = this._model;
var result = model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);
var behavior = result.behavior;
behavior === 'jump' && this._throttledDispatchExpand.debounceNextCall(model.get('axisExpandDebounce'));
this._throttledDispatchExpand(behavior === 'none' ? null // Cancel the last trigger, in case that mouse slide out of the area quickly.
: {
axisExpandWindow: result.axisExpandWindow,
// Jumping uses animation, and sliding suppresses animation.
animation: behavior === 'jump' ? null : {
duration: 0 // Disable animation.
}
});
}
};
function checkTrigger(view, triggerOn) {
var model = view._model;
return model.get('axisExpandable') && model.get('axisExpandTriggerOn') === triggerOn;
}
export default ParallelView;