You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

24 lines
4.3 KiB

2 years ago
  1. (function (i, C) {
  2. function m(a) { return typeof a === "number" } function n(a) { return a !== D && a !== null } var D, p, r, s = i.Chart, t = i.extend, z = i.each; r = ["path", "rect", "circle"]; p = { top: 0, left: 0, center: 0.5, middle: 0.5, bottom: 1, right: 1 }; var u = C.inArray, A = i.merge, B = function () { this.init.apply(this, arguments) }; B.prototype = {
  3. init: function (a, d) {
  4. var c = d.shape && d.shape.type; this.chart = a; var b, f; f = { xAxis: 0, yAxis: 0, title: { style: {}, text: "", x: 0, y: 0 }, shape: { params: { stroke: "#000000", fill: "transparent", strokeWidth: 2 } } }; b = {
  5. circle: {
  6. params: {
  7. x: 0,
  8. y: 0
  9. }
  10. }
  11. }; if (b[c]) f.shape = A(f.shape, b[c]); this.options = A({}, f, d)
  12. }, render: function (a) { var d = this.chart, c = this.chart.renderer, b = this.group, f = this.title, e = this.shape, h = this.options, i = h.title, l = h.shape; if (!b) b = this.group = c.g(); if (!e && l && u(l.type, r) !== -1) e = this.shape = c[h.shape.type](l.params), e.add(b); if (!f && i) f = this.title = c.label(i), f.add(b); b.add(d.annotations.group); this.linkObjects(); a !== !1 && this.redraw() }, redraw: function () {
  13. var a = this.options, d = this.chart, c = this.group, b = this.title, f = this.shape, e = this.linkedObject,
  14. h = d.xAxis[a.xAxis], v = d.yAxis[a.yAxis], l = a.width, w = a.height, x = p[a.anchorY], y = p[a.anchorX], j, o, g, q; if (e) j = e instanceof i.Point ? "point" : e instanceof i.Series ? "series" : null, j === "point" ? (a.xValue = e.x, a.yValue = e.y, o = e.series) : j === "series" && (o = e), c.visibility !== o.group.visibility && c.attr({ visibility: o.group.visibility }); e = n(a.xValue) ? h.toPixels(a.xValue + h.minPointOffset) - h.minPixelPadding : a.x; j = n(a.yValue) ? v.toPixels(a.yValue) : a.y; if (!isNaN(e) && !isNaN(j) && m(e) && m(j)) {
  15. b && (b.attr(a.title), b.css(a.title.style));
  16. if (f) { b = t({}, a.shape.params); if (a.units === "values") { for (g in b) u(g, ["width", "x"]) > -1 ? b[g] = h.translate(b[g]) : u(g, ["height", "y"]) > -1 && (b[g] = v.translate(b[g])); b.width && (b.width -= h.toPixels(0) - h.left); b.x && (b.x += h.minPixelPadding); if (a.shape.type === "path") { g = b.d; o = e; for (var r = j, s = g.length, k = 0; k < s;)typeof g[k] === "number" && typeof g[k + 1] === "number" ? (g[k] = h.toPixels(g[k]) - o, g[k + 1] = v.toPixels(g[k + 1]) - r, k += 2) : k += 1 } } a.shape.type === "circle" && (b.x += b.r, b.y += b.r); f.attr(b) } c.bBox = null; if (!m(l)) q = c.getBBox(), l =
  17. q.width; if (!m(w)) q || (q = c.getBBox()), w = q.height; if (!m(y)) y = p.center; if (!m(x)) x = p.center; e -= l * y; j -= w * x; d.animation && n(c.translateX) && n(c.translateY) ? c.animate({ translateX: e, translateY: j }) : c.translate(e, j)
  18. }
  19. }, destroy: function () { var a = this, d = this.chart.annotations.allItems, c = d.indexOf(a); c > -1 && d.splice(c, 1); z(["title", "shape", "group"], function (b) { a[b] && (a[b].destroy(), a[b] = null) }); a.group = a.title = a.shape = a.chart = a.options = null }, update: function (a, d) { t(this.options, a); this.linkObjects(); this.render(d) },
  20. linkObjects: function () { var a = this.chart, d = this.linkedObject, c = d && (d.id || d.options.id), b = this.options.linkedTo; if (n(b)) { if (!n(d) || b !== c) this.linkedObject = a.get(b) } else this.linkedObject = null }
  21. }; t(s.prototype, { annotations: { add: function (a, d) { var c = this.allItems, b = this.chart, f, e; Object.prototype.toString.call(a) === "[object Array]" || (a = [a]); for (e = a.length; e--;)f = new B(b, a[e]), c.push(f), f.render(d) }, redraw: function () { z(this.allItems, function (a) { a.redraw() }) } } }); s.prototype.callbacks.push(function (a) {
  22. var d =
  23. a.options.annotations, c; c = a.renderer.g("annotations"); c.attr({ zIndex: 7 }); c.add(); a.annotations.allItems = []; a.annotations.chart = a; a.annotations.group = c; Object.prototype.toString.call(d) === "[object Array]" && d.length > 0 && a.annotations.add(a.options.annotations); i.addEvent(a, "redraw", function () { a.annotations.redraw() })
  24. })
  25. })(Highcharts, HighchartsAdapter);