123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434 |
- /*
- Highcharts JS v4.1.3 (2015-02-27)
- Exporting module
- (c) 2010-2014 Torstein Honsi
- License: www.highcharts.com/license
- */
- (function(g) {
- var z = g.Chart, s = g.addEvent, A = g.removeEvent, B = HighchartsAdapter.fireEvent, j = g.createElement, p = g.discardElement, u = g.css, l = g.merge, m = g.each, q = g.extend, E = g.splat, F = Math.max, k = document, C = window, G = g.isTouchDevice, H = g.Renderer.prototype.symbols, r = g
- .getOptions(), x;
- q(r.lang, {
- printChart : "Print chart",
- downloadPNG : "Download PNG image",
- downloadJPEG : "Download JPEG image",
- downloadPDF : "Download PDF document",
- downloadSVG : "Download SVG vector image",
- contextButtonTitle : "Chart context menu"
- });
- r.navigation = {
- menuStyle : {
- border : "1px solid #A0A0A0",
- background : "#FFFFFF",
- padding : "5px 0"
- },
- menuItemStyle : {
- padding : "0 10px",
- background : "none",
- color : "#303030",
- fontSize : G ? "14px" : "11px"
- },
- menuItemHoverStyle : {
- background : "#4572A5",
- color : "#FFFFFF"
- },
- buttonOptions : {
- symbolFill : "#E0E0E0",
- symbolSize : 14,
- symbolStroke : "#666",
- symbolStrokeWidth : 3,
- symbolX : 12.5,
- symbolY : 10.5,
- align : "right",
- buttonSpacing : 3,
- height : 22,
- theme : {
- fill : "white",
- stroke : "none"
- },
- verticalAlign : "top",
- width : 24
- }
- };
- r.exporting = {
- type : "image/png",
- url : "http://export.highcharts.com/",
- buttons : {
- contextButton : {
- menuClassName : "highcharts-contextmenu",
- symbol : "menu",
- _titleKey : "contextButtonTitle",
- menuItems : [ {
- textKey : "printChart",
- onclick : function() {
- this.print()
- }
- }, {
- separator : !0
- }, {
- textKey : "downloadPNG",
- onclick : function() {
- this.exportChart()
- }
- }, {
- textKey : "downloadJPEG",
- onclick : function() {
- this.exportChart({
- type : "image/jpeg"
- })
- }
- }, {
- textKey : "downloadPDF",
- onclick : function() {
- this.exportChart({
- type : "application/pdf"
- })
- }
- }, {
- textKey : "downloadSVG",
- onclick : function() {
- this.exportChart({
- type : "image/svg+xml"
- })
- }
- } ]
- }
- }
- };
- g.post = function(b, a, e) {
- var c, b = j("form", l({
- method : "post",
- action : b,
- enctype : "multipart/form-data"
- }, e), {
- display : "none"
- }, k.body);
- for (c in a)
- j("input", {
- type : "hidden",
- name : c,
- value : a[c]
- }, null, b);
- b.submit();
- p(b)
- };
- q(
- z.prototype,
- {
- sanitizeSVG : function(b) {
- return b
- .replace(/zIndex="[^"]+"/g, "")
- .replace(/isShadow="[^"]+"/g, "")
- .replace(/symbolName="[^"]+"/g, "")
- .replace(/jQuery[0-9]+="[^"]+"/g, "")
- .replace(/url\([^#]+#/g, "url(#")
- .replace(/<svg /,
- '<svg xmlns:xlink="http://www.w3.org/1999/xlink" ')
- .replace(/ (NS[0-9]+\:)?href=/g, " xlink:href=")
- .replace(/\n/, " ")
- .replace(/<\/svg>.*?$/, "</svg>")
- .replace(
- /(fill|stroke)="rgba\(([ 0-9]+,[ 0-9]+,[ 0-9]+),([ 0-9\.]+)\)"/g,
- '$1="rgb($2)" $1-opacity="$3"').replace(
- /(text-shadow:)([^;"]+)([;"])/g,
- function(a, b, c, f) {
- c = c.replace(/\([^\)]+\)/g,
- function(a) {
- return a.replace(/,/g, "|")
- });
- c = c.split(",")[0];
- c = c
- .replace(/\([^\)]+\)/g,
- function(a) {
- return a.replace(
- /\|/g, ",")
- });
- return b + c + f
- }).replace(/ /g, " ").replace(
- /­/g, "").replace(/<IMG /g, "<image ")
- .replace(/height=([^" ]+)/g, 'height="$1"')
- .replace(/width=([^" ]+)/g, 'width="$1"').replace(
- /hc-svg-href="([^"]+)">/g,
- 'xlink:href="$1"/>').replace(
- /id=([^" >]+)/g, 'id="$1"').replace(
- /class=([^" >]+)/g, 'class="$1"').replace(
- / transform /g, " ").replace(
- /:(path|rect)/g, "$1").replace(
- /style="([^"]+)"/g, function(a) {
- return a.toLowerCase()
- })
- },
- getSVG : function(b) {
- var a = this, e, c, f, y, h, d = l(a.options, b);
- if (!k.createElementNS)
- k.createElementNS = function(a, b) {
- return k.createElement(b)
- };
- c = j("div", null, {
- position : "absolute",
- top : "-9999em",
- width : a.chartWidth + "px",
- height : a.chartHeight + "px"
- }, k.body);
- f = a.renderTo.style.width;
- h = a.renderTo.style.height;
- f = d.exporting.sourceWidth || d.chart.width
- || /px$/.test(f) && parseInt(f, 10) || 600;
- h = d.exporting.sourceHeight || d.chart.height
- || /px$/.test(h) && parseInt(h, 10) || 400;
- q(d.chart, {
- animation : !1,
- renderTo : c,
- forExport : !0,
- width : f,
- height : h
- });
- d.exporting.enabled = !1;
- delete d.data;
- d.series = [];
- m(a.series, function(a) {
- y = l(a.options, {
- animation : !1,
- enableMouseTracking : !1,
- showCheckbox : !1,
- visible : a.visible
- });
- y.isInternal || d.series.push(y)
- });
- b && m([ "xAxis", "yAxis" ], function(a) {
- m(E(b[a]), function(b, c) {
- d[a][c] = l(d[a][c], b)
- })
- });
- e = new g.Chart(d, a.callback);
- m(
- [ "xAxis", "yAxis" ],
- function(b) {
- m(
- a[b],
- function(a, c) {
- var d = e[b][c], f = a
- .getExtremes(), h = f.userMin, f = f.userMax;
- d
- && (h !== void 0 || f !== void 0)
- && d.setExtremes(h, f, !0,
- !1)
- })
- });
- f = e.container.innerHTML;
- d = null;
- e.destroy();
- p(c);
- f = this.sanitizeSVG(f);
- return f = f.replace(/(url\(#highcharts-[0-9]+)"/g,
- "$1").replace(/"/g, "'")
- },
- getSVGForExport : function(b, a) {
- var e = this.options.exporting;
- return this.getSVG(l({
- chart : {
- borderRadius : 0
- }
- }, e.chartOptions, a, {
- exporting : {
- sourceWidth : b && b.sourceWidth || e.sourceWidth,
- sourceHeight : b && b.sourceHeight
- || e.sourceHeight
- }
- }))
- },
- exportChart : function(b, a) {
- var e = this.getSVGForExport(b, a), b = l(
- this.options.exporting, b);
- g.post(b.url, {
- filename : b.filename || "chart",
- type : b.type,
- width : b.width || 0,
- scale : b.scale || 2,
- svg : e
- }, b.formAttributes)
- },
- print : function() {
- var b = this, a = b.container, e = [], c = a.parentNode, f = k.body, g = f.childNodes;
- if (!b.isPrinting)
- b.isPrinting = !0, B(b, "beforePrint"), m(g, function(
- a, b) {
- if (a.nodeType === 1)
- e[b] = a.style.display,
- a.style.display = "none"
- }), f.appendChild(a), C.focus(), C.print(), setTimeout(
- function() {
- c.appendChild(a);
- m(g, function(a, b) {
- if (a.nodeType === 1)
- a.style.display = e[b]
- });
- b.isPrinting = !1;
- B(b, "afterPrint")
- }, 1E3)
- },
- contextMenu : function(b, a, e, c, f, g, h) {
- var d = this, l = d.options.navigation, D = l.menuItemStyle, n = d.chartWidth, o = d.chartHeight, k = "cache-"
- + b, i = d[k], t = F(f, g), v, w, p, r = function(a) {
- d.pointer.inClass(a.target, b) || w()
- };
- if (!i)
- d[k] = i = j("div", {
- className : b
- }, {
- position : "absolute",
- zIndex : 1E3,
- padding : t + "px"
- }, d.container),
- v = j("div", null, q({
- MozBoxShadow : "3px 3px 10px #888",
- WebkitBoxShadow : "3px 3px 10px #888",
- boxShadow : "3px 3px 10px #888"
- }, l.menuStyle), i),
- w = function() {
- u(i, {
- display : "none"
- });
- h && h.setState(0);
- d.openMenu = !1
- },
- s(i, "mouseleave", function() {
- p = setTimeout(w, 500)
- }),
- s(i, "mouseenter", function() {
- clearTimeout(p)
- }),
- s(document, "mouseup", r),
- s(d, "destroy", function() {
- A(document, "mouseup", r)
- }),
- m(
- a,
- function(a) {
- if (a) {
- var b = a.separator ? j("hr",
- null, null, v)
- : j(
- "div",
- {
- onmouseover : function() {
- u(
- this,
- l.menuItemHoverStyle)
- },
- onmouseout : function() {
- u(this,
- D)
- },
- onclick : function() {
- w();
- a.onclick
- && a.onclick
- .apply(
- d,
- arguments)
- },
- innerHTML : a.text
- || d.options.lang[a.textKey]
- },
- q(
- {
- cursor : "pointer"
- }, D),
- v);
- d.exportDivElements.push(b)
- }
- }), d.exportDivElements.push(v, i),
- d.exportMenuWidth = i.offsetWidth,
- d.exportMenuHeight = i.offsetHeight;
- a = {
- display : "block"
- };
- e + d.exportMenuWidth > n ? a.right = n - e - f - t + "px"
- : a.left = e - t + "px";
- c + g + d.exportMenuHeight > o
- && h.alignOptions.verticalAlign !== "top" ? a.bottom = o
- - c - t + "px"
- : a.top = c + g - t + "px";
- u(i, a);
- d.openMenu = !0
- },
- addButton : function(b) {
- var a = this, e = a.renderer, c = l(
- a.options.navigation.buttonOptions, b), f = c.onclick, k = c.menuItems, h, d, m = {
- stroke : c.symbolStroke,
- fill : c.symbolFill
- }, j = c.symbolSize || 12;
- if (!a.btnCount)
- a.btnCount = 0;
- if (!a.exportDivElements)
- a.exportDivElements = [], a.exportSVGElements = [];
- if (c.enabled !== !1) {
- var n = c.theme, o = n.states, p = o && o.hover, o = o
- && o.select, i;
- delete n.states;
- f ? i = function() {
- f.apply(a, arguments)
- } : k
- && (i = function() {
- a.contextMenu(d.menuClassName, k,
- d.translateX, d.translateY,
- d.width, d.height, d);
- d.setState(2)
- });
- c.text && c.symbol ? n.paddingLeft = g.pick(
- n.paddingLeft, 25) : c.text || q(n, {
- width : c.width,
- height : c.height,
- padding : 0
- });
- d = e.button(c.text, 0, 0, i, n, p, o).attr({
- title : a.options.lang[c._titleKey],
- "stroke-linecap" : "round"
- });
- d.menuClassName = b.menuClassName || "highcharts-menu-"
- + a.btnCount++;
- c.symbol
- && (h = e.symbol(c.symbol, c.symbolX - j / 2,
- c.symbolY - j / 2, j, j).attr(q(m, {
- "stroke-width" : c.symbolStrokeWidth || 1,
- zIndex : 1
- })).add(d));
- d.add().align(q(c, {
- width : d.width,
- x : g.pick(c.x, x)
- }), !0, "spacingBox");
- x += (d.width + c.buttonSpacing)
- * (c.align === "right" ? -1 : 1);
- a.exportSVGElements.push(d, h)
- }
- },
- destroyExport : function(b) {
- var b = b.target, a, e;
- for (a = 0; a < b.exportSVGElements.length; a++)
- if (e = b.exportSVGElements[a])
- e.onclick = e.ontouchstart = null,
- b.exportSVGElements[a] = e.destroy();
- for (a = 0; a < b.exportDivElements.length; a++)
- e = b.exportDivElements[a],
- A(e, "mouseleave"),
- b.exportDivElements[a] = e.onmouseout = e.onmouseover = e.ontouchstart = e.onclick = null,
- p(e)
- }
- });
- H.menu = function(b, a, e, c) {
- return [ "M", b, a + 2.5, "L", b + e, a + 2.5, "M", b, a + c / 2 + 0.5,
- "L", b + e, a + c / 2 + 0.5, "M", b, a + c - 1.5, "L", b + e,
- a + c - 1.5 ]
- };
- z.prototype.callbacks.push(function(b) {
- var a, e = b.options.exporting, c = e.buttons;
- x = 0;
- if (e.enabled !== !1) {
- for (a in c)
- b.addButton(c[a]);
- s(b, "destroy", b.destroyExport)
- }
- })
- })(Highcharts);
|