添加项目文件。
This commit is contained in:
@ -0,0 +1,130 @@
|
||||
import H from './../parts/Globals.js';
|
||||
import './../parts/Utilities.js';
|
||||
import eventEmitterMixin from './eventEmitterMixin.js';
|
||||
|
||||
/**
|
||||
* A control point class which is a connection between controllable
|
||||
* transform methods and a user actions.
|
||||
*
|
||||
* @constructor
|
||||
* @mixes eventEmitterMixin
|
||||
* @memberOf Annotation
|
||||
*
|
||||
* @param {Highcharts.Chart} chart a chart instance
|
||||
* @param {Object} target a controllable instance which is a target for
|
||||
* a control point
|
||||
* @param {Annotation.ControlPoint.Options} options an options object
|
||||
* @param {number} [index]
|
||||
**/
|
||||
function ControlPoint(chart, target, options, index) {
|
||||
this.chart = chart;
|
||||
this.target = target;
|
||||
this.options = options;
|
||||
this.index = H.pick(options.index, index);
|
||||
}
|
||||
|
||||
/**
|
||||
* @typedef {Object} Annotation.ControlPoint.Position
|
||||
* @property {number} x
|
||||
* @property {number} y
|
||||
*/
|
||||
|
||||
/**
|
||||
* @callback Annotation.ControlPoint.Positioner
|
||||
* @param {Object} e event
|
||||
* @param {Controllable} target
|
||||
* @return {Annotation.ControlPoint.Position} position
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {Object} Annotation.ControlPoint.Options
|
||||
* @property {string} symbol
|
||||
* @property {number} width
|
||||
* @property {number} height
|
||||
* @property {Object} style
|
||||
* @property {boolean} visible
|
||||
* @property {Annotation.ControlPoint.Positioner} positioner
|
||||
* @property {Object} events
|
||||
*/
|
||||
|
||||
H.extend(
|
||||
ControlPoint.prototype,
|
||||
eventEmitterMixin
|
||||
);
|
||||
|
||||
/**
|
||||
* Set the visibility.
|
||||
*
|
||||
* @param {boolean} [visible]
|
||||
**/
|
||||
ControlPoint.prototype.setVisibility = function (visible) {
|
||||
this.graphic.attr('visibility', visible ? 'visible' : 'hidden');
|
||||
|
||||
this.options.visible = visible;
|
||||
};
|
||||
|
||||
/**
|
||||
* Render the control point.
|
||||
*/
|
||||
ControlPoint.prototype.render = function () {
|
||||
var chart = this.chart,
|
||||
options = this.options;
|
||||
|
||||
this.graphic = chart.renderer
|
||||
.symbol(
|
||||
options.symbol,
|
||||
0,
|
||||
0,
|
||||
options.width,
|
||||
options.height
|
||||
)
|
||||
.add(chart.controlPointsGroup)
|
||||
.css(options.style);
|
||||
|
||||
this.setVisibility(options.visible);
|
||||
this.addEvents();
|
||||
};
|
||||
|
||||
/**
|
||||
* Redraw the control point.
|
||||
*
|
||||
* @param {boolean} [animation]
|
||||
*/
|
||||
ControlPoint.prototype.redraw = function (animation) {
|
||||
this.graphic[animation ? 'animate' : 'attr'](
|
||||
this.options.positioner.call(this, this.target)
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Destroy the control point.
|
||||
*/
|
||||
ControlPoint.prototype.destroy = function () {
|
||||
eventEmitterMixin.destroy.call(this);
|
||||
|
||||
if (this.graphic) {
|
||||
this.graphic = this.graphic.destroy();
|
||||
}
|
||||
|
||||
this.chart = null;
|
||||
this.target = null;
|
||||
this.options = null;
|
||||
};
|
||||
|
||||
/**
|
||||
* Update the control point.
|
||||
*/
|
||||
ControlPoint.prototype.update = function (userOptions) {
|
||||
var chart = this.chart,
|
||||
target = this.target,
|
||||
index = this.index,
|
||||
options = H.merge(true, this.options, userOptions);
|
||||
|
||||
this.destroy();
|
||||
this.constructor(chart, target, options, index);
|
||||
this.render(chart.controlPointsGroup);
|
||||
this.redraw();
|
||||
};
|
||||
|
||||
export default ControlPoint;
|
Reference in New Issue
Block a user