From 4f953ffc89fc95f83b152e914c5e65938b440f17 Mon Sep 17 00:00:00 2001
From: Xxxu <794772283@qq.com>
Date: 星期二, 07 七月 2020 10:03:02 +0800
Subject: [PATCH] 上传项目

---
 static/plugins/ueditor-1.4.3.3/third-party/highcharts/modules/annotations.src.js |  401 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 401 insertions(+), 0 deletions(-)

diff --git a/static/plugins/ueditor-1.4.3.3/third-party/highcharts/modules/annotations.src.js b/static/plugins/ueditor-1.4.3.3/third-party/highcharts/modules/annotations.src.js
new file mode 100644
index 0000000..40ce8df
--- /dev/null
+++ b/static/plugins/ueditor-1.4.3.3/third-party/highcharts/modules/annotations.src.js
@@ -0,0 +1,401 @@
+(function (Highcharts, HighchartsAdapter) {
+
+var UNDEFINED,
+	ALIGN_FACTOR,
+	ALLOWED_SHAPES,
+	Chart = Highcharts.Chart,
+	extend = Highcharts.extend,
+	each = Highcharts.each;
+
+ALLOWED_SHAPES = ["path", "rect", "circle"];
+
+ALIGN_FACTOR = {
+	top: 0,
+	left: 0,
+	center: 0.5,
+	middle: 0.5,
+	bottom: 1,
+	right: 1
+};
+
+
+// Highcharts helper methods
+var inArray = HighchartsAdapter.inArray,
+	merge = Highcharts.merge;
+
+function defaultOptions(shapeType) {
+	var shapeOptions,
+		options;
+
+	options = {
+		xAxis: 0,
+		yAxis: 0,
+		title: {
+			style: {},
+			text: "",
+			x: 0,
+			y: 0
+		},
+		shape: {
+			params: {
+				stroke: "#000000",
+				fill: "transparent",
+				strokeWidth: 2
+			}
+		}
+	};
+
+	shapeOptions = {
+		circle: {
+			params: {
+				x: 0,
+				y: 0
+			}
+		}
+	};
+
+	if (shapeOptions[shapeType]) {
+		options.shape = merge(options.shape, shapeOptions[shapeType]);
+	}
+
+	return options;
+}
+
+function isArray(obj) {
+	return Object.prototype.toString.call(obj) === '[object Array]';
+}
+
+function isNumber(n) {
+	return typeof n === 'number';
+}
+
+function defined(obj) {
+	return obj !== UNDEFINED && obj !== null;
+}
+
+function translatePath(d, xAxis, yAxis, xOffset, yOffset) {
+	var len = d.length,
+		i = 0;
+
+	while (i < len) {
+		if (typeof d[i] === 'number' && typeof d[i + 1] === 'number') {
+			d[i] = xAxis.toPixels(d[i]) - xOffset;
+			d[i + 1] = yAxis.toPixels(d[i + 1]) - yOffset;
+			i += 2;
+		} else {
+			i += 1;
+		}
+	}
+
+	return d;
+}
+
+
+// Define annotation prototype
+var Annotation = function () {
+	this.init.apply(this, arguments);
+};
+Annotation.prototype = {
+	/* 
+	 * Initialize the annotation
+	 */
+	init: function (chart, options) {
+		var shapeType = options.shape && options.shape.type;
+
+		this.chart = chart;
+		this.options = merge({}, defaultOptions(shapeType), options);
+	},
+
+	/*
+	 * Render the annotation
+	 */
+	render: function (redraw) {
+		var annotation = this,
+			chart = this.chart,
+			renderer = annotation.chart.renderer,
+			group = annotation.group,
+			title = annotation.title,
+			shape = annotation.shape,
+			options = annotation.options,
+			titleOptions = options.title,
+			shapeOptions = options.shape;
+
+		if (!group) {
+			group = annotation.group = renderer.g();
+		}
+
+
+		if (!shape && shapeOptions && inArray(shapeOptions.type, ALLOWED_SHAPES) !== -1) {
+			shape = annotation.shape = renderer[options.shape.type](shapeOptions.params);
+			shape.add(group);
+		}
+
+		if (!title && titleOptions) {
+			title = annotation.title = renderer.label(titleOptions);
+			title.add(group);
+		}
+
+		group.add(chart.annotations.group);
+
+		// link annotations to point or series
+		annotation.linkObjects();
+
+		if (redraw !== false) {
+			annotation.redraw();
+		}
+	},
+
+	/*
+	 * Redraw the annotation title or shape after options update
+	 */
+	redraw: function () {
+		var options = this.options,
+			chart = this.chart,
+			group = this.group,
+			title = this.title,
+			shape = this.shape,
+			linkedTo = this.linkedObject,
+			xAxis = chart.xAxis[options.xAxis],
+			yAxis = chart.yAxis[options.yAxis],
+			width = options.width,
+			height = options.height,
+			anchorY = ALIGN_FACTOR[options.anchorY],
+			anchorX = ALIGN_FACTOR[options.anchorX],
+			resetBBox = false,
+			shapeParams,
+			linkType,
+			series,
+			param,
+			bbox,
+			x,
+			y;
+
+		if (linkedTo) {
+			linkType = (linkedTo instanceof Highcharts.Point) ? 'point' :
+						(linkedTo instanceof Highcharts.Series) ? 'series' : null;
+
+			if (linkType === 'point') {
+				options.xValue = linkedTo.x;
+				options.yValue = linkedTo.y;
+				series = linkedTo.series;
+			} else if (linkType === 'series') {
+				series = linkedTo;
+			}
+
+			if (group.visibility !== series.group.visibility) {
+				group.attr({
+					visibility: series.group.visibility
+				});
+			}
+		}
+
+
+		// Based on given options find annotation pixel position
+		x = (defined(options.xValue) ? xAxis.toPixels(options.xValue + xAxis.minPointOffset) - xAxis.minPixelPadding : options.x);
+		y = defined(options.yValue) ? yAxis.toPixels(options.yValue) : options.y;
+
+		if (isNaN(x) || isNaN(y) || !isNumber(x) || !isNumber(y)) {
+			return;
+		}
+
+
+		if (title) {
+			title.attr(options.title);
+			title.css(options.title.style);
+			resetBBox = true;
+		}
+
+		if (shape) {
+			shapeParams = extend({}, options.shape.params);
+
+			if (options.units === 'values') {
+				for (param in shapeParams) {
+					if (inArray(param, ['width', 'x']) > -1) {
+						shapeParams[param] = xAxis.translate(shapeParams[param]);
+					} else if (inArray(param, ['height', 'y']) > -1) {
+						shapeParams[param] = yAxis.translate(shapeParams[param]);
+					}
+				}
+
+				if (shapeParams.width) {
+					shapeParams.width -= xAxis.toPixels(0) - xAxis.left;
+				}
+
+				if (shapeParams.x) {
+					shapeParams.x += xAxis.minPixelPadding;
+				}
+
+				if (options.shape.type === 'path') {
+					translatePath(shapeParams.d, xAxis, yAxis, x, y);
+				}
+			}
+
+			// move the center of the circle to shape x/y
+			if (options.shape.type === 'circle') {
+				shapeParams.x += shapeParams.r;
+				shapeParams.y += shapeParams.r;
+			}
+
+			resetBBox = true;
+			shape.attr(shapeParams);
+		}
+
+		group.bBox = null;
+
+		// If annotation width or height is not defined in options use bounding box size
+		if (!isNumber(width)) {
+			bbox = group.getBBox();
+			width = bbox.width;
+		}
+
+		if (!isNumber(height)) {
+			// get bbox only if it wasn't set before
+			if (!bbox) {
+				bbox = group.getBBox();
+			}
+
+			height = bbox.height;
+		}
+
+		// Calculate anchor point
+		if (!isNumber(anchorX)) {
+			anchorX = ALIGN_FACTOR.center;
+		}
+
+		if (!isNumber(anchorY)) {
+			anchorY = ALIGN_FACTOR.center;
+		}
+
+		// Translate group according to its dimension and anchor point
+		x = x - width * anchorX;
+		y = y - height * anchorY;
+
+		if (chart.animation && defined(group.translateX) && defined(group.translateY)) {
+			group.animate({
+				translateX: x,
+				translateY: y
+			});
+		} else {
+			group.translate(x, y);
+		}
+	},
+
+	/*
+	 * Destroy the annotation
+	 */
+	destroy: function () {
+		var annotation = this,
+			chart = this.chart,
+			allItems = chart.annotations.allItems,
+			index = allItems.indexOf(annotation);
+
+		if (index > -1) {
+			allItems.splice(index, 1);
+		}
+
+		each(['title', 'shape', 'group'], function (element) {
+			if (annotation[element]) {
+				annotation[element].destroy();
+				annotation[element] = null;
+			}
+		});
+
+		annotation.group = annotation.title = annotation.shape = annotation.chart = annotation.options = null;
+	},
+
+	/*
+	 * Update the annotation with a given options
+	 */
+	update: function (options, redraw) {
+		extend(this.options, options);
+
+		// update link to point or series
+		this.linkObjects();
+
+		this.render(redraw);
+	},
+
+	linkObjects: function () {
+		var annotation = this,
+			chart = annotation.chart,
+			linkedTo = annotation.linkedObject,
+			linkedId = linkedTo && (linkedTo.id || linkedTo.options.id),
+			options = annotation.options,
+			id = options.linkedTo;
+
+		if (!defined(id)) {
+			annotation.linkedObject = null;
+		} else if (!defined(linkedTo) || id !== linkedId) {
+			annotation.linkedObject = chart.get(id);
+		}
+	}
+};
+
+
+// Add annotations methods to chart prototype
+extend(Chart.prototype, {
+	annotations: {
+		/*
+		 * Unified method for adding annotations to the chart
+		 */
+		add: function (options, redraw) {
+			var annotations = this.allItems,
+				chart = this.chart,
+				item,
+				len;
+
+			if (!isArray(options)) {
+				options = [options];
+			}
+
+			len = options.length;
+
+			while (len--) {
+				item = new Annotation(chart, options[len]);
+				annotations.push(item);
+				item.render(redraw);
+			}
+		},
+
+		/**
+		 * Redraw all annotations, method used in chart events
+		 */
+		redraw: function () {
+			each(this.allItems, function (annotation) {
+				annotation.redraw();
+			});
+		}
+	}
+});
+
+
+// Initialize on chart load
+Chart.prototype.callbacks.push(function (chart) {
+	var options = chart.options.annotations,
+		group;
+
+	group = chart.renderer.g("annotations");
+	group.attr({
+		zIndex: 7
+	});
+	group.add();
+
+	// initialize empty array for annotations
+	chart.annotations.allItems = [];
+
+	// link chart object to annotations
+	chart.annotations.chart = chart;
+
+	// link annotations group element to the chart
+	chart.annotations.group = group;
+
+	if (isArray(options) && options.length > 0) {
+		chart.annotations.add(chart.options.annotations);
+	}
+
+	// update annotations after chart redraw
+	Highcharts.addEvent(chart, 'redraw', function () {
+		chart.annotations.redraw();
+	});
+});
+}(Highcharts, HighchartsAdapter));

--
Gitblit v1.9.3