123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427 |
- /*
- Highcharts JS v4.1.4 (2015-03-10)
- Exporting module
- (c) 2010-2014 Torstein Honsi
- License: www.highcharts.com/license
- */
- (function(f) {
- var z = f.Chart,
- s = f.addEvent,
- A = f.removeEvent,
- B = HighchartsAdapter.fireEvent,
- j = f.createElement,
- p = f.discardElement,
- u = f.css,
- l = f.merge,
- m = f.each,
- q = f.extend,
- E = f.splat,
- F = Math.max,
- k = document,
- C = window,
- G = f.isTouchDevice,
- H = f.Renderer.prototype.symbols,
- r = f.getOptions(),
- x;
- q(r.lang, {
- printChart:"打印图表",
- //printChart: "Print chart",
- downloadPNG: "下载PNG 图片",
- //downloadPNG: "Download PNG image",
- downloadJPEG: "下载JPEG 图片",
- //downloadJPEG: "Download JPEG image",
- downloadPDF: "下载PDF文档",
- //downloadPDF: "Download PDF document",
- downloadSVG: "下载SVG 矢量图",
- //downloadSVG: "Download SVG vector image",
- contextButtonTitle: "图表菜单"
- });
- 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"
- })
- }
- }]
- }
- }
- };
- f.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(/ /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, g, 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);
- g = a.renderTo.style.width;
- h = a.renderTo.style.height;
- g = d.exporting.sourceWidth || d.chart.width || /px$/.test(g) && parseInt(g, 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: g,
- 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 f.Chart(d, a.callback);
- m(["xAxis", "yAxis"],
- function(b) {
- m(a[b],
- function(a, d) {
- var c = e[b][d],
- g = a.getExtremes(),
- h = g.userMin,
- g = g.userMax;
- c && (h !== void 0 || g !== void 0) && c.setExtremes(h, g, !0, !1)
- })
- });
- g = e.container.innerHTML;
- d = null;
- e.destroy();
- p(c);
- g = this.sanitizeSVG(g);
- return g = g.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);
- f.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,
- g = k.body,
- f = g.childNodes;
- if (!b.isPrinting) b.isPrinting = !0,
- B(b, "beforePrint"),
- m(f,
- function(a, b) {
- if (a.nodeType === 1) e[b] = a.style.display,
- a.style.display = "none"
- }),
- g.appendChild(a),
- C.focus(),
- C.print(),
- setTimeout(function() {
- c.appendChild(a);
- m(f,
- 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, g, f, 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(g, f),
- 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 - g - t + "px": a.left = e - t + "px";
- c + f + d.exportMenuHeight > o && h.alignOptions.verticalAlign !== "top" ? a.bottom = o - c - t + "px": a.top = c + f - t + "px";
- u(i, a);
- d.openMenu = !0
- },
- addButton: function(b) {
- var a = this,
- e = a.renderer,
- c = l(a.options.navigation.buttonOptions, b),
- g = 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;
- g ? i = function() {
- g.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 = f.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: f.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);
|