/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
!function(t, e) {
"object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define.amd ? define(["exports"], e) : e(t.echarts = {})
}(this, function(t) {
"use strict";
var e = 2311
, n = function() {
return e++
}
, v = "object" == typeof wx && "function" == typeof wx.getSystemInfoSync ? {
browser: {},
os: {},
node: !1,
wxa: !0,
canvasSupported: !0,
svgSupported: !1,
touchEventsSupported: !0,
domSupported: !1
} : "undefined" == typeof document && "undefined" != typeof self ? {
browser: {},
os: {},
node: !1,
worker: !0,
canvasSupported: !0,
domSupported: !1
} : "undefined" == typeof navigator ? {
browser: {},
os: {},
node: !0,
worker: !1,
canvasSupported: !0,
svgSupported: !0,
domSupported: !1
} : function(t) {
var e = {}
, i = t.match(/Firefox\/([\d.]+)/)
, n = t.match(/MSIE\s([\d.]+)/) || t.match(/Trident\/.+?rv:(([\d.]+))/)
, o = t.match(/Edge\/([\d.]+)/)
, a = /micromessenger/i.test(t);
i && (e.firefox = !0,
e.version = i[1]);
n && (e.ie = !0,
e.version = n[1]);
o && (e.edge = !0,
e.version = o[1]);
a && (e.weChat = !0);
return {
browser: e,
os: {},
node: !1,
canvasSupported: !!document.createElement("canvas").getContext,
svgSupported: "undefined" != typeof SVGRect,
touchEventsSupported: "ontouchstart"in window && !e.ie && !e.edge,
pointerEventsSupported: "onpointerdown"in window && (e.edge || e.ie && 11 <= e.version),
domSupported: "undefined" != typeof document
}
}(navigator.userAgent);
var s = {
"[object Function]": 1,
"[object RegExp]": 1,
"[object Date]": 1,
"[object Error]": 1,
"[object CanvasGradient]": 1,
"[object CanvasPattern]": 1,
"[object Image]": 1,
"[object Canvas]": 1
}
, l = {
"[object Int8Array]": 1,
"[object Uint8Array]": 1,
"[object Uint8ClampedArray]": 1,
"[object Int16Array]": 1,
"[object Uint16Array]": 1,
"[object Int32Array]": 1,
"[object Uint32Array]": 1,
"[object Float32Array]": 1,
"[object Float64Array]": 1
}
, u = Object.prototype.toString
, i = Array.prototype
, r = i.forEach
, h = i.filter
, o = i.slice
, c = i.map
, d = i.reduce
, a = {};
function f(t, e) {
"createCanvas" === t && (g = null),
a[t] = e
}
function k(t) {
if (null == t || "object" != typeof t)
return t;
var e = t
, i = u.call(t);
if ("[object Array]" === i) {
if (!$(t)) {
e = [];
for (var n = 0, o = t.length; n < o; n++)
e[n] = k(t[n])
}
} else if (l[i]) {
if (!$(t)) {
var a = t.constructor;
if (t.constructor.from)
e = a.from(t);
else {
e = new a(t.length);
for (n = 0,
o = t.length; n < o; n++)
e[n] = k(t[n])
}
}
} else if (!s[i] && !$(t) && !G(t))
for (var r in e = {},
t)
t.hasOwnProperty(r) && (e[r] = k(t[r]));
return e
}
function m(t, e, i) {
if (!z(e) || !z(t))
return i ? k(e) : t;
for (var n in e)
if (e.hasOwnProperty(n)) {
var o = t[n]
, a = e[n];
!z(a) || !z(o) || L(a) || L(o) || G(a) || G(o) || B(a) || B(o) || $(a) || $(o) ? !i && n in t || (t[n] = k(e[n])) : m(o, a, i)
}
return t
}
function p(t, e) {
for (var i = t[0], n = 1, o = t.length; n < o; n++)
i = m(i, t[n], e);
return i
}
function P(t, e) {
for (var i in e)
e.hasOwnProperty(i) && (t[i] = e[i]);
return t
}
function D(t, e, i) {
for (var n in e)
e.hasOwnProperty(n) && (i ? null != e[n] : null == t[n]) && (t[n] = e[n]);
return t
}
function y() {
return a.createCanvas()
}
var g;
function x() {
return g = g || y().getContext("2d")
}
function _(t, e) {
if (t) {
if (t.indexOf)
return t.indexOf(e);
for (var i = 0, n = t.length; i < n; i++)
if (t[i] === e)
return i
}
return -1
}
function w(t, e) {
var i = t.prototype;
function n() {}
for (var o in n.prototype = e.prototype,
t.prototype = new n,
i)
i.hasOwnProperty(o) && (t.prototype[o] = i[o]);
(t.prototype.constructor = t).superClass = e
}
function b(t, e, i) {
D(t = "prototype"in t ? t.prototype : t, e = "prototype"in e ? e.prototype : e, i)
}
function N(t) {
if (t)
return "string" != typeof t && "number" == typeof t.length
}
function E(t, e, i) {
if (t && e)
if (t.forEach && t.forEach === r)
t.forEach(e, i);
else if (t.length === +t.length)
for (var n = 0, o = t.length; n < o; n++)
e.call(i, t[n], n, t);
else
for (var a in t)
t.hasOwnProperty(a) && e.call(i, t[a], a, t)
}
function O(t, e, i) {
if (t && e) {
if (t.map && t.map === c)
return t.map(e, i);
for (var n = [], o = 0, a = t.length; o < a; o++)
n.push(e.call(i, t[o], o, t));
return n
}
}
function S(t, e, i, n) {
if (t && e) {
if (t.reduce && t.reduce === d)
return t.reduce(e, i, n);
for (var o = 0, a = t.length; o < a; o++)
i = e.call(n, i, t[o], o, t);
return i
}
}
function M(t, e, i) {
if (t && e) {
if (t.filter && t.filter === h)
return t.filter(e, i);
for (var n = [], o = 0, a = t.length; o < a; o++)
e.call(i, t[o], o, t) && n.push(t[o]);
return n
}
}
function I(t, e, i) {
if (t && e)
for (var n = 0, o = t.length; n < o; n++)
if (e.call(i, t[n], n, t))
return t[n]
}
function A(t, e) {
var i = o.call(arguments, 2);
return function() {
return t.apply(e, i.concat(o.call(arguments)))
}
}
function T(t) {
var e = o.call(arguments, 1);
return function() {
return t.apply(this, e.concat(o.call(arguments)))
}
}
function L(t) {
return "[object Array]" === u.call(t)
}
function C(t) {
return "function" == typeof t
}
function R(t) {
return "[object String]" === u.call(t)
}
function z(t) {
var e = typeof t;
return "function" == e || !!t && "object" == e
}
function B(t) {
return !!s[u.call(t)]
}
function V(t) {
return !!l[u.call(t)]
}
function G(t) {
return "object" == typeof t && "number" == typeof t.nodeType && "object" == typeof t.ownerDocument
}
function F(t) {
return t != t
}
function W(t) {
for (var e = 0, i = arguments.length; e < i; e++)
if (null != arguments[e])
return arguments[e]
}
function H(t, e) {
return null != t ? t : e
}
function Z(t, e, i) {
return null != t ? t : null != e ? e : i
}
function U() {
return Function.call.apply(o, arguments)
}
function X(t) {
if ("number" == typeof t)
return [t, t, t, t];
var e = t.length;
return 2 === e ? [t[0], t[1], t[0], t[1]] : 3 === e ? [t[0], t[1], t[2], t[1]] : t
}
function Y(t, e) {
if (!t)
throw new Error(e)
}
function j(t) {
return null == t ? null : "function" == typeof t.trim ? t.trim() : t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "")
}
a.createCanvas = function() {
return document.createElement("canvas")
}
;
var q = "__ec_primitive__";
function K(t) {
t[q] = !0
}
function $(t) {
return t[q]
}
function J(t) {
var i = L(t);
this.data = {};
var n = this;
function e(t, e) {
i ? n.set(t, e) : n.set(e, t)
}
t instanceof J ? t.each(e) : t && E(t, e)
}
function Q(t) {
return new J(t)
}
function tt(t, e) {
for (var i = new t.constructor(t.length + e.length), n = 0; n < t.length; n++)
i[n] = t[n];
var o = t.length;
for (n = 0; n < e.length; n++)
i[n + o] = e[n];
return i
}
function et() {}
J.prototype = {
constructor: J,
get: function(t) {
return this.data.hasOwnProperty(t) ? this.data[t] : null
},
set: function(t, e) {
return this.data[t] = e
},
each: function(t, e) {
for (var i in void 0 !== e && (t = A(t, e)),
this.data)
this.data.hasOwnProperty(i) && t(this.data[i], i)
},
removeKey: function(t) {
delete this.data[t]
}
};
var it = (Object.freeze || Object)({
$override: f,
clone: k,
merge: m,
mergeAll: p,
extend: P,
defaults: D,
createCanvas: y,
getContext: x,
indexOf: _,
inherits: w,
mixin: b,
isArrayLike: N,
each: E,
map: O,
reduce: S,
filter: M,
find: I,
bind: A,
curry: T,
isArray: L,
isFunction: C,
isString: R,
isObject: z,
isBuiltInObject: B,
isTypedArray: V,
isDom: G,
eqNaN: F,
retrieve: W,
retrieve2: H,
retrieve3: Z,
slice: U,
normalizeCssArray: X,
assert: Y,
trim: j,
setAsPrimitive: K,
isPrimitive: $,
createHashMap: Q,
concatArray: tt,
noop: et
})
, nt = "undefined" == typeof Float32Array ? Array : Float32Array;
function ot(t, e) {
var i = new nt(2);
return null == t && (t = 0),
null == e && (e = 0),
i[0] = t,
i[1] = e,
i
}
function at(t, e) {
return t[0] = e[0],
t[1] = e[1],
t
}
function rt(t) {
var e = new nt(2);
return e[0] = t[0],
e[1] = t[1],
e
}
function st(t, e, i) {
return t[0] = e,
t[1] = i,
t
}
function lt(t, e, i) {
return t[0] = e[0] + i[0],
t[1] = e[1] + i[1],
t
}
function ut(t, e, i, n) {
return t[0] = e[0] + i[0] * n,
t[1] = e[1] + i[1] * n,
t
}
function ht(t, e, i) {
return t[0] = e[0] - i[0],
t[1] = e[1] - i[1],
t
}
function ct(t) {
return Math.sqrt(ft(t))
}
var dt = ct;
function ft(t) {
return t[0] * t[0] + t[1] * t[1]
}
var pt = ft;
function gt(t, e, i) {
return t[0] = e[0] * i,
t[1] = e[1] * i,
t
}
function mt(t, e) {
var i = ct(e);
return 0 === i ? (t[0] = 0,
t[1] = 0) : (t[0] = e[0] / i,
t[1] = e[1] / i),
t
}
function vt(t, e) {
return Math.sqrt((t[0] - e[0]) * (t[0] - e[0]) + (t[1] - e[1]) * (t[1] - e[1]))
}
var yt = vt;
function xt(t, e) {
return (t[0] - e[0]) * (t[0] - e[0]) + (t[1] - e[1]) * (t[1] - e[1])
}
var _t = xt;
function wt(t, e, i, n) {
return t[0] = e[0] + n * (i[0] - e[0]),
t[1] = e[1] + n * (i[1] - e[1]),
t
}
function bt(t, e, i) {
var n = e[0]
, o = e[1];
return t[0] = i[0] * n + i[2] * o + i[4],
t[1] = i[1] * n + i[3] * o + i[5],
t
}
function St(t, e, i) {
return t[0] = Math.min(e[0], i[0]),
t[1] = Math.min(e[1], i[1]),
t
}
function Mt(t, e, i) {
return t[0] = Math.max(e[0], i[0]),
t[1] = Math.max(e[1], i[1]),
t
}
var It = (Object.freeze || Object)({
create: ot,
copy: at,
clone: rt,
set: st,
add: lt,
scaleAndAdd: ut,
sub: ht,
len: ct,
length: dt,
lenSquare: ft,
lengthSquare: pt,
mul: function(t, e, i) {
return t[0] = e[0] * i[0],
t[1] = e[1] * i[1],
t
},
div: function(t, e, i) {
return t[0] = e[0] / i[0],
t[1] = e[1] / i[1],
t
},
dot: function(t, e) {
return t[0] * e[0] + t[1] * e[1]
},
scale: gt,
normalize: mt,
distance: vt,
dist: yt,
distanceSquare: xt,
distSquare: _t,
negate: function(t, e) {
return t[0] = -e[0],
t[1] = -e[1],
t
},
lerp: wt,
applyTransform: bt,
min: St,
max: Mt
});
function Tt() {
this.on("mousedown", this._dragStart, this),
this.on("mousemove", this._drag, this),
this.on("mouseup", this._dragEnd, this)
}
function At(t, e) {
return {
target: t,
topTarget: e && e.topTarget
}
}
Tt.prototype = {
constructor: Tt,
_dragStart: function(t) {
for (var e = t.target; e && !e.draggable; )
e = e.parent;
e && ((this._draggingTarget = e).dragging = !0,
this._x = t.offsetX,
this._y = t.offsetY,
this.dispatchToElement(At(e, t), "dragstart", t.event))
},
_drag: function(t) {
var e = this._draggingTarget;
if (e) {
var i = t.offsetX
, n = t.offsetY
, o = i - this._x
, a = n - this._y;
this._x = i,
this._y = n,
e.drift(o, a, t),
this.dispatchToElement(At(e, t), "drag", t.event);
var r = this.findHover(i, n, e).target
, s = this._dropTarget;
e !== (this._dropTarget = r) && (s && r !== s && this.dispatchToElement(At(s, t), "dragleave", t.event),
r && r !== s && this.dispatchToElement(At(r, t), "dragenter", t.event))
}
},
_dragEnd: function(t) {
var e = this._draggingTarget;
e && (e.dragging = !1),
this.dispatchToElement(At(e, t), "dragend", t.event),
this._dropTarget && this.dispatchToElement(At(this._dropTarget, t), "drop", t.event),
this._draggingTarget = null,
this._dropTarget = null
}
};
var Dt = Array.prototype.slice
, Ct = function(t) {
this._$handlers = {},
this._$eventProcessor = t
};
function Lt(t, e, i, n, o, a) {
var r = t._$handlers;
if ("function" == typeof i && (o = n,
n = i,
i = null),
!n || !e)
return t;
i = function(t, e) {
var i = t._$eventProcessor;
return null != e && i && i.normalizeQuery && (e = i.normalizeQuery(e)),
e
}(t, i),
r[e] || (r[e] = []);
for (var s = 0; s < r[e].length; s++)
if (r[e][s].h === n)
return t;
var l = {
h: n,
one: a,
query: i,
ctx: o || t,
callAtLast: n.zrEventfulCallAtLast
}
, u = r[e].length - 1
, h = r[e][u];
return h && h.callAtLast ? r[e].splice(u, 0, l) : r[e].push(l),
t
}
Ct.prototype = {
constructor: Ct,
one: function(t, e, i, n) {
return Lt(this, t, e, i, n, !0)
},
on: function(t, e, i, n) {
return Lt(this, t, e, i, n, !1)
},
isSilent: function(t) {
var e = this._$handlers;
return !e[t] || !e[t].length
},
off: function(t, e) {
var i = this._$handlers;
if (!t)
return this._$handlers = {},
this;
if (e) {
if (i[t]) {
for (var n = [], o = 0, a = i[t].length; o < a; o++)
i[t][o].h !== e && n.push(i[t][o]);
i[t] = n
}
i[t] && 0 === i[t].length && delete i[t]
} else
delete i[t];
return this
},
trigger: function(t) {
var e = this._$handlers[t]
, i = this._$eventProcessor;
if (e) {
var n = arguments
, o = n.length;
3 < o && (n = Dt.call(n, 1));
for (var a = e.length, r = 0; r < a; ) {
var s = e[r];
if (i && i.filter && null != s.query && !i.filter(t, s.query))
r++;
else {
switch (o) {
case 1:
s.h.call(s.ctx);
break;
case 2:
s.h.call(s.ctx, n[1]);
break;
case 3:
s.h.call(s.ctx, n[1], n[2]);
break;
default:
s.h.apply(s.ctx, n)
}
s.one ? (e.splice(r, 1),
a--) : r++
}
}
}
return i && i.afterTrigger && i.afterTrigger(t),
this
},
triggerWithContext: function(t) {
var e = this._$handlers[t]
, i = this._$eventProcessor;
if (e) {
var n = arguments
, o = n.length;
4 < o && (n = Dt.call(n, 1, n.length - 1));
for (var a = n[n.length - 1], r = e.length, s = 0; s < r; ) {
var l = e[s];
if (i && i.filter && null != l.query && !i.filter(t, l.query))
s++;
else {
switch (o) {
case 1:
l.h.call(a);
break;
case 2:
l.h.call(a, n[1]);
break;
case 3:
l.h.call(a, n[1], n[2]);
break;
default:
l.h.apply(a, n)
}
l.one ? (e.splice(s, 1),
r--) : s++
}
}
}
return i && i.afterTrigger && i.afterTrigger(t),
this
}
};
var kt = Math.log(2);
function Pt(t, e, i, n, o, a) {
var r = n + "-" + o
, s = t.length;
if (a.hasOwnProperty(r))
return a[r];
if (1 === e) {
var l = Math.round(Math.log((1 << s) - 1 & ~o) / kt);
return t[i][l]
}
for (var u = n | 1 << i, h = i + 1; n & 1 << h; )
h++;
for (var c = 0, d = 0, f = 0; d < s; d++) {
var p = 1 << d;
p & o || (c += (f % 2 ? -1 : 1) * t[i][d] * Pt(t, e - 1, h, u, o | p, a),
f++)
}
return a[r] = c
}
function Nt(t, e) {
var i = [[t[0], t[1], 1, 0, 0, 0, -e[0] * t[0], -e[0] * t[1]], [0, 0, 0, t[0], t[1], 1, -e[1] * t[0], -e[1] * t[1]], [t[2], t[3], 1, 0, 0, 0, -e[2] * t[2], -e[2] * t[3]], [0, 0, 0, t[2], t[3], 1, -e[3] * t[2], -e[3] * t[3]], [t[4], t[5], 1, 0, 0, 0, -e[4] * t[4], -e[4] * t[5]], [0, 0, 0, t[4], t[5], 1, -e[5] * t[4], -e[5] * t[5]], [t[6], t[7], 1, 0, 0, 0, -e[6] * t[6], -e[6] * t[7]], [0, 0, 0, t[6], t[7], 1, -e[7] * t[6], -e[7] * t[7]]]
, n = {}
, o = Pt(i, 8, 0, 0, 0, n);
if (0 !== o) {
for (var a = [], r = 0; r < 8; r++)
for (var s = 0; s < 8; s++)
null == a[s] && (a[s] = 0),
a[s] += ((r + s) % 2 ? -1 : 1) * Pt(i, 7, 0 === r ? 1 : 0, 1 << r, 1 << s, n) / o * e[r];
return function(t, e, i) {
var n = e * a[6] + i * a[7] + 1;
t[0] = (e * a[0] + i * a[1] + a[2]) / n,
t[1] = (e * a[3] + i * a[4] + a[5]) / n
}
}
}
var Ot = "___zrEVENTSAVED"
, Et = [];
function Rt(t, e, i, n, o) {
if (e.getBoundingClientRect && v.domSupported && !zt(e)) {
var a = e[Ot] || (e[Ot] = {})
, r = function(t, e, i) {
for (var n = i ? "invTrans" : "trans", o = e[n], a = e.srcCoords, r = !0, s = [], l = [], u = 0; u < 4; u++) {
var h = t[u].getBoundingClientRect()
, c = 2 * u
, d = h.left
, f = h.top;
s.push(d, f),
r = r && a && d === a[c] && f === a[1 + c],
l.push(t[u].offsetLeft, t[u].offsetTop)
}
return r && o ? o : (e.srcCoords = s,
e[n] = i ? Nt(l, s) : Nt(s, l))
}(function(t, e) {
var i = e.markers;
if (i)
return i;
i = e.markers = [];
for (var n = ["left", "right"], o = ["top", "bottom"], a = 0; a < 4; a++) {
var r = document.createElement("div")
, s = r.style
, l = a % 2
, u = (a >> 1) % 2;
s.cssText = ["position: absolute", "visibility: hidden", "padding: 0", "margin: 0", "border-width: 0", "user-select: none", "width:0", "height:0", n[l] + ":0", o[u] + ":0", n[1 - l] + ":auto", o[1 - u] + ":auto", ""].join("!important;"),
t.appendChild(r),
i.push(r)
}
return i
}(e, a), a, o);
if (r)
return r(t, i, n),
!0
}
return !1
}
function zt(t) {
return "CANVAS" === t.nodeName.toUpperCase()
}
var Bt = "undefined" != typeof window && !!window.addEventListener
, Vt = /^(?:mouse|pointer|contextmenu|drag|drop)|click/
, Gt = [];
function Ft(t, e, i, n) {
return i = i || {},
n || !v.canvasSupported ? Wt(t, e, i) : v.browser.firefox && null != e.layerX && e.layerX !== e.offsetX ? (i.zrX = e.layerX,
i.zrY = e.layerY) : null != e.offsetX ? (i.zrX = e.offsetX,
i.zrY = e.offsetY) : Wt(t, e, i),
i
}
function Wt(t, e, i) {
if (v.domSupported && t.getBoundingClientRect) {
var n = e.clientX
, o = e.clientY;
if (zt(t)) {
var a = t.getBoundingClientRect();
return i.zrX = n - a.left,
void (i.zrY = o - a.top)
}
if (Rt(Gt, t, n, o))
return i.zrX = Gt[0],
void (i.zrY = Gt[1])
}
i.zrX = i.zrY = 0
}
function Ht(t) {
return t || window.event
}
function Zt(t, e, i) {
if (null != (e = Ht(e)).zrX)
return e;
var n = e.type;
if (n && 0 <= n.indexOf("touch")) {
var o = "touchend" !== n ? e.targetTouches[0] : e.changedTouches[0];
o && Ft(t, o, e, i)
} else
Ft(t, e, e, i),
e.zrDelta = e.wheelDelta ? e.wheelDelta / 120 : -(e.detail || 0) / 3;
var a = e.button;
return null == e.which && void 0 !== a && Vt.test(e.type) && (e.which = 1 & a ? 1 : 2 & a ? 3 : 4 & a ? 2 : 0),
e
}
function Ut(t, e, i, n) {
Bt ? t.addEventListener(e, i, n) : t.attachEvent("on" + e, i)
}
var Xt = Bt ? function(t) {
t.preventDefault(),
t.stopPropagation(),
t.cancelBubble = !0
}
: function(t) {
t.returnValue = !1,
t.cancelBubble = !0
}
;
function Yt(t) {
return 2 === t.which || 3 === t.which
}
function jt() {
this._track = []
}
function qt(t) {
var e = t[1][0] - t[0][0]
, i = t[1][1] - t[0][1];
return Math.sqrt(e * e + i * i)
}
jt.prototype = {
constructor: jt,
recognize: function(t, e, i) {
return this._doTrack(t, e, i),
this._recognize(t)
},
clear: function() {
return this._track.length = 0,
this
},
_doTrack: function(t, e, i) {
var n = t.touches;
if (n) {
for (var o = {
points: [],
touches: [],
target: e,
event: t
}, a = 0, r = n.length; a < r; a++) {
var s = n[a]
, l = Ft(i, s, {});
o.points.push([l.zrX, l.zrY]),
o.touches.push(s)
}
this._track.push(o)
}
},
_recognize: function(t) {
for (var e in Kt)
if (Kt.hasOwnProperty(e)) {
var i = Kt[e](this._track, t);
if (i)
return i
}
}
};
var Kt = {
pinch: function(t, e) {
var i = t.length;
if (i) {
var n = (t[i - 1] || {}).points
, o = (t[i - 2] || {}).points || n;
if (o && 1 < o.length && n && 1 < n.length) {
var a = qt(n) / qt(o);
isFinite(a) || (a = 1),
e.pinchScale = a;
var r = function(t) {
return [(t[0][0] + t[1][0]) / 2, (t[0][1] + t[1][1]) / 2]
}(n);
return e.pinchX = r[0],
e.pinchY = r[1],
{
type: "pinch",
target: t[0].target,
event: e
}
}
}
}
}
, $t = "silent";
function Jt() {
Xt(this.event)
}
function Qt() {}
Qt.prototype.dispose = function() {}
;
function te(t, e, i, n) {
Ct.call(this),
this.storage = t,
this.painter = e,
this.painterRoot = n,
i = i || new Qt,
this.proxy = null,
this._hovered = {},
this._lastTouchMoment,
this._lastX,
this._lastY,
this._gestureMgr,
Tt.call(this),
this.setHandlerProxy(i)
}
var ee = ["click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu"];
function ie(t, e, i) {
if (t[t.rectHover ? "rectContain" : "contain"](e, i)) {
for (var n, o = t; o; ) {
if (o.clipPath && !o.clipPath.contain(e, i))
return !1;
o.silent && (n = !0),
o = o.parent
}
return !n || $t
}
return !1
}
function ne(t, e, i) {
var n = t.painter;
return e < 0 || e > n.getWidth() || i < 0 || i > n.getHeight()
}
te.prototype = {
constructor: te,
setHandlerProxy: function(e) {
this.proxy && this.proxy.dispose(),
e && (E(ee, function(t) {
e.on && e.on(t, this[t], this)
}, this),
e.handler = this),
this.proxy = e
},
mousemove: function(t) {
var e = t.zrX
, i = t.zrY
, n = ne(this, e, i)
, o = this._hovered
, a = o.target;
a && !a.__zr && (a = (o = this.findHover(o.x, o.y)).target);
var r = this._hovered = n ? {
x: e,
y: i
} : this.findHover(e, i)
, s = r.target
, l = this.proxy;
l.setCursor && l.setCursor(s ? s.cursor : "default"),
a && s !== a && this.dispatchToElement(o, "mouseout", t),
this.dispatchToElement(r, "mousemove", t),
s && s !== a && this.dispatchToElement(r, "mouseover", t)
},
mouseout: function(t) {
var e = t.zrEventControl
, i = t.zrIsToLocalDOM;
"only_globalout" !== e && this.dispatchToElement(this._hovered, "mouseout", t),
"no_globalout" !== e && (i || this.trigger("globalout", {
type: "globalout",
event: t
}))
},
resize: function(t) {
this._hovered = {}
},
dispatch: function(t, e) {
var i = this[t];
i && i.call(this, e)
},
dispose: function() {
this.proxy.dispose(),
this.storage = this.proxy = this.painter = null
},
setCursorStyle: function(t) {
var e = this.proxy;
e.setCursor && e.setCursor(t)
},
dispatchToElement: function(t, e, i) {
var n = (t = t || {}).target;
if (!n || !n.silent) {
for (var o = "on" + e, a = function(t, e, i) {
return {
type: t,
event: i,
target: e.target,
topTarget: e.topTarget,
cancelBubble: !1,
offsetX: i.zrX,
offsetY: i.zrY,
gestureEvent: i.gestureEvent,
pinchX: i.pinchX,
pinchY: i.pinchY,
pinchScale: i.pinchScale,
wheelDelta: i.zrDelta,
zrByTouch: i.zrByTouch,
which: i.which,
stop: Jt
}
}(e, t, i); n && (n[o] && (a.cancelBubble = n[o].call(n, a)),
n.trigger(e, a),
n = n.parent,
!a.cancelBubble); )
;
a.cancelBubble || (this.trigger(e, a),
this.painter && this.painter.eachOtherLayer(function(t) {
"function" == typeof t[o] && t[o].call(t, a),
t.trigger && t.trigger(e, a)
}))
}
},
findHover: function(t, e, i) {
for (var n = this.storage.getDisplayList(), o = {
x: t,
y: e
}, a = n.length - 1; 0 <= a; a--) {
var r;
if (n[a] !== i && !n[a].ignore && (r = ie(n[a], t, e)) && (o.topTarget || (o.topTarget = n[a]),
r !== $t)) {
o.target = n[a];
break
}
}
return o
},
processGesture: function(t, e) {
this._gestureMgr || (this._gestureMgr = new jt);
var i = this._gestureMgr;
"start" === e && i.clear();
var n = i.recognize(t, this.findHover(t.zrX, t.zrY, null).target, this.proxy.dom);
if ("end" === e && i.clear(),
n) {
var o = n.type;
t.gestureEvent = o,
this.dispatchToElement({
target: n.target
}, o, n.event)
}
}
},
E(["click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu"], function(r) {
te.prototype[r] = function(t) {
var e, i, n = t.zrX, o = t.zrY, a = ne(this, n, o);
if ("mouseup" === r && a || (i = (e = this.findHover(n, o)).target),
"mousedown" === r)
this._downEl = i,
this._downPoint = [t.zrX, t.zrY],
this._upEl = i;
else if ("mouseup" === r)
this._upEl = i;
else if ("click" === r) {
if (this._downEl !== this._upEl || !this._downPoint || 4 < yt(this._downPoint, [t.zrX, t.zrY]))
return;
this._downPoint = null
}
this.dispatchToElement(e, r, t)
}
}),
b(te, Ct),
b(te, Tt);
var oe = "undefined" == typeof Float32Array ? Array : Float32Array;
function ae() {
var t = new oe(6);
return re(t),
t
}
function re(t) {
return t[0] = 1,
t[1] = 0,
t[2] = 0,
t[3] = 1,
t[4] = 0,
t[5] = 0,
t
}
function se(t, e) {
return t[0] = e[0],
t[1] = e[1],
t[2] = e[2],
t[3] = e[3],
t[4] = e[4],
t[5] = e[5],
t
}
function le(t, e, i) {
var n = e[0] * i[0] + e[2] * i[1]
, o = e[1] * i[0] + e[3] * i[1]
, a = e[0] * i[2] + e[2] * i[3]
, r = e[1] * i[2] + e[3] * i[3]
, s = e[0] * i[4] + e[2] * i[5] + e[4]
, l = e[1] * i[4] + e[3] * i[5] + e[5];
return t[0] = n,
t[1] = o,
t[2] = a,
t[3] = r,
t[4] = s,
t[5] = l,
t
}
function ue(t, e, i) {
return t[0] = e[0],
t[1] = e[1],
t[2] = e[2],
t[3] = e[3],
t[4] = e[4] + i[0],
t[5] = e[5] + i[1],
t
}
function he(t, e, i) {
var n = e[0]
, o = e[2]
, a = e[4]
, r = e[1]
, s = e[3]
, l = e[5]
, u = Math.sin(i)
, h = Math.cos(i);
return t[0] = n * h + r * u,
t[1] = -n * u + r * h,
t[2] = o * h + s * u,
t[3] = -o * u + h * s,
t[4] = h * a + u * l,
t[5] = h * l - u * a,
t
}
function ce(t, e, i) {
var n = i[0]
, o = i[1];
return t[0] = e[0] * n,
t[1] = e[1] * o,
t[2] = e[2] * n,
t[3] = e[3] * o,
t[4] = e[4] * n,
t[5] = e[5] * o,
t
}
function de(t, e) {
var i = e[0]
, n = e[2]
, o = e[4]
, a = e[1]
, r = e[3]
, s = e[5]
, l = i * r - a * n;
return l ? (l = 1 / l,
t[0] = r * l,
t[1] = -a * l,
t[2] = -n * l,
t[3] = i * l,
t[4] = (n * s - r * o) * l,
t[5] = (a * o - i * s) * l,
t) : null
}
function fe(t) {
var e = ae();
return se(e, t),
e
}
var pe = (Object.freeze || Object)({
create: ae,
identity: re,
copy: se,
mul: le,
translate: ue,
rotate: he,
scale: ce,
invert: de,
clone: fe
})
, ge = re;
function me(t) {
return 5e-5 < t || t < -5e-5
}
var ve = function(t) {
(t = t || {}).position || (this.position = [0, 0]),
null == t.rotation && (this.rotation = 0),
t.scale || (this.scale = [1, 1]),
this.origin = this.origin || null
}
, ye = ve.prototype;
ye.transform = null,
ye.needLocalTransform = function() {
return me(this.rotation) || me(this.position[0]) || me(this.position[1]) || me(this.scale[0] - 1) || me(this.scale[1] - 1)
}
;
var xe = [];
ye.updateTransform = function() {
var t = this.parent
, e = t && t.transform
, i = this.needLocalTransform()
, n = this.transform;
if (i || e) {
n = n || ae(),
i ? this.getLocalTransform(n) : ge(n),
e && (i ? le(n, t.transform, n) : se(n, t.transform)),
this.transform = n;
var o = this.globalScaleRatio;
if (null != o && 1 !== o) {
this.getGlobalScale(xe);
var a = xe[0] < 0 ? -1 : 1
, r = xe[1] < 0 ? -1 : 1
, s = ((xe[0] - a) * o + a) / xe[0] || 0
, l = ((xe[1] - r) * o + r) / xe[1] || 0;
n[0] *= s,
n[1] *= s,
n[2] *= l,
n[3] *= l
}
this.invTransform = this.invTransform || ae(),
de(this.invTransform, n)
} else
n && ge(n)
}
,
ye.getLocalTransform = function(t) {
return ve.getLocalTransform(this, t)
}
,
ye.setTransform = function(t) {
var e = this.transform
, i = t.dpr || 1;
e ? t.setTransform(i * e[0], i * e[1], i * e[2], i * e[3], i * e[4], i * e[5]) : t.setTransform(i, 0, 0, i, 0, 0)
}
,
ye.restoreTransform = function(t) {
var e = t.dpr || 1;
t.setTransform(e, 0, 0, e, 0, 0)
}
;
var _e = []
, we = ae();
ye.setLocalTransform = function(t) {
if (t) {
var e = t[0] * t[0] + t[1] * t[1]
, i = t[2] * t[2] + t[3] * t[3]
, n = this.position
, o = this.scale;
me(e - 1) && (e = Math.sqrt(e)),
me(i - 1) && (i = Math.sqrt(i)),
t[0] < 0 && (e = -e),
t[3] < 0 && (i = -i),
n[0] = t[4],
n[1] = t[5],
o[0] = e,
o[1] = i,
this.rotation = Math.atan2(-t[1] / i, t[0] / e)
}
}
,
ye.decomposeTransform = function() {
if (this.transform) {
var t = this.parent
, e = this.transform;
t && t.transform && (le(_e, t.invTransform, e),
e = _e);
var i = this.origin;
i && (i[0] || i[1]) && (we[4] = i[0],
we[5] = i[1],
le(_e, e, we),
_e[4] -= i[0],
_e[5] -= i[1],
e = _e),
this.setLocalTransform(e)
}
}
,
ye.getGlobalScale = function(t) {
var e = this.transform;
return t = t || [],
e ? (t[0] = Math.sqrt(e[0] * e[0] + e[1] * e[1]),
t[1] = Math.sqrt(e[2] * e[2] + e[3] * e[3]),
e[0] < 0 && (t[0] = -t[0]),
e[3] < 0 && (t[1] = -t[1])) : (t[0] = 1,
t[1] = 1),
t
}
,
ye.transformCoordToLocal = function(t, e) {
var i = [t, e]
, n = this.invTransform;
return n && bt(i, i, n),
i
}
,
ye.transformCoordToGlobal = function(t, e) {
var i = [t, e]
, n = this.transform;
return n && bt(i, i, n),
i
}
,
ve.getLocalTransform = function(t, e) {
ge(e = e || []);
var i = t.origin
, n = t.scale || [1, 1]
, o = t.rotation || 0
, a = t.position || [0, 0];
return i && (e[4] -= i[0],
e[5] -= i[1]),
ce(e, e, n),
o && he(e, e, o),
i && (e[4] += i[0],
e[5] += i[1]),
e[4] += a[0],
e[5] += a[1],
e
}
;
var be = {
linear: function(t) {
return t
},
quadraticIn: function(t) {
return t * t
},
quadraticOut: function(t) {
return t * (2 - t)
},
quadraticInOut: function(t) {
return (t *= 2) < 1 ? .5 * t * t : -.5 * (--t * (t - 2) - 1)
},
cubicIn: function(t) {
return t * t * t
},
cubicOut: function(t) {
return --t * t * t + 1
},
cubicInOut: function(t) {
return (t *= 2) < 1 ? .5 * t * t * t : .5 * ((t -= 2) * t * t + 2)
},
quarticIn: function(t) {
return t * t * t * t
},
quarticOut: function(t) {
return 1 - --t * t * t * t
},
quarticInOut: function(t) {
return (t *= 2) < 1 ? .5 * t * t * t * t : -.5 * ((t -= 2) * t * t * t - 2)
},
quinticIn: function(t) {
return t * t * t * t * t
},
quinticOut: function(t) {
return --t * t * t * t * t + 1
},
quinticInOut: function(t) {
return (t *= 2) < 1 ? .5 * t * t * t * t * t : .5 * ((t -= 2) * t * t * t * t + 2)
},
sinusoidalIn: function(t) {
return 1 - Math.cos(t * Math.PI / 2)
},
sinusoidalOut: function(t) {
return Math.sin(t * Math.PI / 2)
},
sinusoidalInOut: function(t) {
return .5 * (1 - Math.cos(Math.PI * t))
},
exponentialIn: function(t) {
return 0 === t ? 0 : Math.pow(1024, t - 1)
},
exponentialOut: function(t) {
return 1 === t ? 1 : 1 - Math.pow(2, -10 * t)
},
exponentialInOut: function(t) {
return 0 === t ? 0 : 1 === t ? 1 : (t *= 2) < 1 ? .5 * Math.pow(1024, t - 1) : .5 * (2 - Math.pow(2, -10 * (t - 1)))
},
circularIn: function(t) {
return 1 - Math.sqrt(1 - t * t)
},
circularOut: function(t) {
return Math.sqrt(1 - --t * t)
},
circularInOut: function(t) {
return (t *= 2) < 1 ? -.5 * (Math.sqrt(1 - t * t) - 1) : .5 * (Math.sqrt(1 - (t -= 2) * t) + 1)
},
elasticIn: function(t) {
var e, i = .1;
return 0 === t ? 0 : 1 === t ? 1 : (e = !i || i < 1 ? (i = 1,
.1) : .4 * Math.asin(1 / i) / (2 * Math.PI),
-i * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / .4))
},
elasticOut: function(t) {
var e, i = .1;
return 0 === t ? 0 : 1 === t ? 1 : (e = !i || i < 1 ? (i = 1,
.1) : .4 * Math.asin(1 / i) / (2 * Math.PI),
i * Math.pow(2, -10 * t) * Math.sin((t - e) * (2 * Math.PI) / .4) + 1)
},
elasticInOut: function(t) {
var e, i = .1;
return 0 === t ? 0 : 1 === t ? 1 : (e = !i || i < 1 ? (i = 1,
.1) : .4 * Math.asin(1 / i) / (2 * Math.PI),
(t *= 2) < 1 ? i * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / .4) * -.5 : i * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / .4) * .5 + 1)
},
backIn: function(t) {
return t * t * (2.70158 * t - 1.70158)
},
backOut: function(t) {
return --t * t * (2.70158 * t + 1.70158) + 1
},
backInOut: function(t) {
var e = 2.5949095;
return (t *= 2) < 1 ? t * t * ((1 + e) * t - e) * .5 : .5 * ((t -= 2) * t * ((1 + e) * t + e) + 2)
},
bounceIn: function(t) {
return 1 - be.bounceOut(1 - t)
},
bounceOut: function(t) {
return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375
},
bounceInOut: function(t) {
return t < .5 ? .5 * be.bounceIn(2 * t) : .5 * be.bounceOut(2 * t - 1) + .5
}
};
function Se(t) {
this._target = t.target,
this._life = t.life || 1e3,
this._delay = t.delay || 0,
this._initialized = !1,
this.loop = null != t.loop && t.loop,
this.gap = t.gap || 0,
this.easing = t.easing || "Linear",
this.onframe = t.onframe,
this.ondestroy = t.ondestroy,
this.onrestart = t.onrestart,
this._pausedTime = 0,
this._paused = !1
}
Se.prototype = {
constructor: Se,
step: function(t, e) {
if (this._initialized || (this._startTime = t + this._delay,
this._initialized = !0),
this._paused)
this._pausedTime += e;
else {
var i = (t - this._startTime - this._pausedTime) / this._life;
if (!(i < 0)) {
i = Math.min(i, 1);
var n = this.easing
, o = "string" == typeof n ? be[n] : n
, a = "function" == typeof o ? o(i) : i;
return this.fire("frame", a),
1 === i ? this.loop ? (this.restart(t),
"restart") : (this._needsRemove = !0,
"destroy") : null
}
}
},
restart: function(t) {
var e = (t - this._startTime - this._pausedTime) % this._life;
this._startTime = t - e + this.gap,
this._pausedTime = 0,
this._needsRemove = !1
},
fire: function(t, e) {
this[t = "on" + t] && this[t](this._target, e)
},
pause: function() {
this._paused = !0
},
resume: function() {
this._paused = !1
}
};
function Me() {
this.head = null,
this.tail = null,
this._len = 0
}
var Ie = Me.prototype;
Ie.insert = function(t) {
var e = new Ae(t);
return this.insertEntry(e),
e
}
,
Ie.insertEntry = function(t) {
this.head ? ((this.tail.next = t).prev = this.tail,
t.next = null,
this.tail = t) : this.head = this.tail = t,
this._len++
}
,
Ie.remove = function(t) {
var e = t.prev
, i = t.next;
e ? e.next = i : this.head = i,
i ? i.prev = e : this.tail = e,
t.next = t.prev = null,
this._len--
}
,
Ie.len = function() {
return this._len
}
,
Ie.clear = function() {
this.head = this.tail = null,
this._len = 0
}
;
function Te(t) {
this._list = new Me,
this._map = {},
this._maxSize = t || 10,
this._lastRemovedEntry = null
}
var Ae = function(t) {
this.value = t,
this.next,
this.prev
}
, De = Te.prototype;
De.put = function(t, e) {
var i = this._list
, n = this._map
, o = null;
if (null == n[t]) {
var a = i.len()
, r = this._lastRemovedEntry;
if (a >= this._maxSize && 0 < a) {
var s = i.head;
i.remove(s),
delete n[s.key],
o = s.value,
this._lastRemovedEntry = s
}
r ? r.value = e : r = new Ae(e),
r.key = t,
i.insertEntry(r),
n[t] = r
}
return o
}
,
De.get = function(t) {
var e = this._map[t]
, i = this._list;
if (null != e)
return e !== i.tail && (i.remove(e),
i.insertEntry(e)),
e.value
}
,
De.clear = function() {
this._list.clear(),
this._map = {}
}
;
var Ce = {
transparent: [0, 0, 0, 0],
aliceblue: [240, 248, 255, 1],
antiquewhite: [250, 235, 215, 1],
aqua: [0, 255, 255, 1],
aquamarine: [127, 255, 212, 1],
azure: [240, 255, 255, 1],
beige: [245, 245, 220, 1],
bisque: [255, 228, 196, 1],
black: [0, 0, 0, 1],
blanchedalmond: [255, 235, 205, 1],
blue: [0, 0, 255, 1],
blueviolet: [138, 43, 226, 1],
brown: [165, 42, 42, 1],
burlywood: [222, 184, 135, 1],
cadetblue: [95, 158, 160, 1],
chartreuse: [127, 255, 0, 1],
chocolate: [210, 105, 30, 1],
coral: [255, 127, 80, 1],
cornflowerblue: [100, 149, 237, 1],
cornsilk: [255, 248, 220, 1],
crimson: [220, 20, 60, 1],
cyan: [0, 255, 255, 1],
darkblue: [0, 0, 139, 1],
darkcyan: [0, 139, 139, 1],
darkgoldenrod: [184, 134, 11, 1],
darkgray: [169, 169, 169, 1],
darkgreen: [0, 100, 0, 1],
darkgrey: [169, 169, 169, 1],
darkkhaki: [189, 183, 107, 1],
darkmagenta: [139, 0, 139, 1],
darkolivegreen: [85, 107, 47, 1],
darkorange: [255, 140, 0, 1],
darkorchid: [153, 50, 204, 1],
darkred: [139, 0, 0, 1],
darksalmon: [233, 150, 122, 1],
darkseagreen: [143, 188, 143, 1],
darkslateblue: [72, 61, 139, 1],
darkslategray: [47, 79, 79, 1],
darkslategrey: [47, 79, 79, 1],
darkturquoise: [0, 206, 209, 1],
darkviolet: [148, 0, 211, 1],
deeppink: [255, 20, 147, 1],
deepskyblue: [0, 191, 255, 1],
dimgray: [105, 105, 105, 1],
dimgrey: [105, 105, 105, 1],
dodgerblue: [30, 144, 255, 1],
firebrick: [178, 34, 34, 1],
floralwhite: [255, 250, 240, 1],
forestgreen: [34, 139, 34, 1],
fuchsia: [255, 0, 255, 1],
gainsboro: [220, 220, 220, 1],
ghostwhite: [248, 248, 255, 1],
gold: [255, 215, 0, 1],
goldenrod: [218, 165, 32, 1],
gray: [128, 128, 128, 1],
green: [0, 128, 0, 1],
greenyellow: [173, 255, 47, 1],
grey: [128, 128, 128, 1],
honeydew: [240, 255, 240, 1],
hotpink: [255, 105, 180, 1],
indianred: [205, 92, 92, 1],
indigo: [75, 0, 130, 1],
ivory: [255, 255, 240, 1],
khaki: [240, 230, 140, 1],
lavender: [230, 230, 250, 1],
lavenderblush: [255, 240, 245, 1],
lawngreen: [124, 252, 0, 1],
lemonchiffon: [255, 250, 205, 1],
lightblue: [173, 216, 230, 1],
lightcoral: [240, 128, 128, 1],
lightcyan: [224, 255, 255, 1],
lightgoldenrodyellow: [250, 250, 210, 1],
lightgray: [211, 211, 211, 1],
lightgreen: [144, 238, 144, 1],
lightgrey: [211, 211, 211, 1],
lightpink: [255, 182, 193, 1],
lightsalmon: [255, 160, 122, 1],
lightseagreen: [32, 178, 170, 1],
lightskyblue: [135, 206, 250, 1],
lightslategray: [119, 136, 153, 1],
lightslategrey: [119, 136, 153, 1],
lightsteelblue: [176, 196, 222, 1],
lightyellow: [255, 255, 224, 1],
lime: [0, 255, 0, 1],
limegreen: [50, 205, 50, 1],
linen: [250, 240, 230, 1],
magenta: [255, 0, 255, 1],
maroon: [128, 0, 0, 1],
mediumaquamarine: [102, 205, 170, 1],
mediumblue: [0, 0, 205, 1],
mediumorchid: [186, 85, 211, 1],
mediumpurple: [147, 112, 219, 1],
mediumseagreen: [60, 179, 113, 1],
mediumslateblue: [123, 104, 238, 1],
mediumspringgreen: [0, 250, 154, 1],
mediumturquoise: [72, 209, 204, 1],
mediumvioletred: [199, 21, 133, 1],
midnightblue: [25, 25, 112, 1],
mintcream: [245, 255, 250, 1],
mistyrose: [255, 228, 225, 1],
moccasin: [255, 228, 181, 1],
navajowhite: [255, 222, 173, 1],
navy: [0, 0, 128, 1],
oldlace: [253, 245, 230, 1],
olive: [128, 128, 0, 1],
olivedrab: [107, 142, 35, 1],
orange: [255, 165, 0, 1],
orangered: [255, 69, 0, 1],
orchid: [218, 112, 214, 1],
palegoldenrod: [238, 232, 170, 1],
palegreen: [152, 251, 152, 1],
paleturquoise: [175, 238, 238, 1],
palevioletred: [219, 112, 147, 1],
papayawhip: [255, 239, 213, 1],
peachpuff: [255, 218, 185, 1],
peru: [205, 133, 63, 1],
pink: [255, 192, 203, 1],
plum: [221, 160, 221, 1],
powderblue: [176, 224, 230, 1],
purple: [128, 0, 128, 1],
red: [255, 0, 0, 1],
rosybrown: [188, 143, 143, 1],
royalblue: [65, 105, 225, 1],
saddlebrown: [139, 69, 19, 1],
salmon: [250, 128, 114, 1],
sandybrown: [244, 164, 96, 1],
seagreen: [46, 139, 87, 1],
seashell: [255, 245, 238, 1],
sienna: [160, 82, 45, 1],
silver: [192, 192, 192, 1],
skyblue: [135, 206, 235, 1],
slateblue: [106, 90, 205, 1],
slategray: [112, 128, 144, 1],
slategrey: [112, 128, 144, 1],
snow: [255, 250, 250, 1],
springgreen: [0, 255, 127, 1],
steelblue: [70, 130, 180, 1],
tan: [210, 180, 140, 1],
teal: [0, 128, 128, 1],
thistle: [216, 191, 216, 1],
tomato: [255, 99, 71, 1],
turquoise: [64, 224, 208, 1],
violet: [238, 130, 238, 1],
wheat: [245, 222, 179, 1],
white: [255, 255, 255, 1],
whitesmoke: [245, 245, 245, 1],
yellow: [255, 255, 0, 1],
yellowgreen: [154, 205, 50, 1]
};
function Le(t) {
return (t = Math.round(t)) < 0 ? 0 : 255 < t ? 255 : t
}
function ke(t) {
return t < 0 ? 0 : 1 < t ? 1 : t
}
function Pe(t) {
return t.length && "%" === t.charAt(t.length - 1) ? Le(parseFloat(t) / 100 * 255) : Le(parseInt(t, 10))
}
function Ne(t) {
return t.length && "%" === t.charAt(t.length - 1) ? ke(parseFloat(t) / 100) : ke(parseFloat(t))
}
function Oe(t, e, i) {
return i < 0 ? i += 1 : 1 < i && (i -= 1),
6 * i < 1 ? t + (e - t) * i * 6 : 2 * i < 1 ? e : 3 * i < 2 ? t + (e - t) * (2 / 3 - i) * 6 : t
}
function Ee(t, e, i) {
return t + (e - t) * i
}
function Re(t, e, i, n, o) {
return t[0] = e,
t[1] = i,
t[2] = n,
t[3] = o,
t
}
function ze(t, e) {
return t[0] = e[0],
t[1] = e[1],
t[2] = e[2],
t[3] = e[3],
t
}
var Be = new Te(20)
, Ve = null;
function Ge(t, e) {
Ve && ze(Ve, e),
Ve = Be.put(t, Ve || e.slice())
}
function Fe(t, e) {
if (t) {
e = e || [];
var i = Be.get(t);
if (i)
return ze(e, i);
var n, o = (t += "").replace(/ /g, "").toLowerCase();
if (o in Ce)
return ze(e, Ce[o]),
Ge(t, e),
e;
if ("#" === o.charAt(0))
return 4 === o.length ? 0 <= (n = parseInt(o.substr(1), 16)) && n <= 4095 ? (Re(e, (3840 & n) >> 4 | (3840 & n) >> 8, 240 & n | (240 & n) >> 4, 15 & n | (15 & n) << 4, 1),
Ge(t, e),
e) : void Re(e, 0, 0, 0, 1) : 7 === o.length ? 0 <= (n = parseInt(o.substr(1), 16)) && n <= 16777215 ? (Re(e, (16711680 & n) >> 16, (65280 & n) >> 8, 255 & n, 1),
Ge(t, e),
e) : void Re(e, 0, 0, 0, 1) : void 0;
var a = o.indexOf("(")
, r = o.indexOf(")");
if (-1 !== a && r + 1 === o.length) {
var s = o.substr(0, a)
, l = o.substr(a + 1, r - (a + 1)).split(",")
, u = 1;
switch (s) {
case "rgba":
if (4 !== l.length)
return void Re(e, 0, 0, 0, 1);
u = Ne(l.pop());
case "rgb":
return 3 !== l.length ? void Re(e, 0, 0, 0, 1) : (Re(e, Pe(l[0]), Pe(l[1]), Pe(l[2]), u),
Ge(t, e),
e);
case "hsla":
return 4 !== l.length ? void Re(e, 0, 0, 0, 1) : (l[3] = Ne(l[3]),
We(l, e),
Ge(t, e),
e);
case "hsl":
return 3 !== l.length ? void Re(e, 0, 0, 0, 1) : (We(l, e),
Ge(t, e),
e);
default:
return
}
}
Re(e, 0, 0, 0, 1)
}
}
function We(t, e) {
var i = (parseFloat(t[0]) % 360 + 360) % 360 / 360
, n = Ne(t[1])
, o = Ne(t[2])
, a = o <= .5 ? o * (n + 1) : o + n - o * n
, r = 2 * o - a;
return Re(e = e || [], Le(255 * Oe(r, a, i + 1 / 3)), Le(255 * Oe(r, a, i)), Le(255 * Oe(r, a, i - 1 / 3)), 1),
4 === t.length && (e[3] = t[3]),
e
}
function He(t, e) {
var i = Fe(t);
if (i) {
for (var n = 0; n < 3; n++)
i[n] = e < 0 ? i[n] * (1 - e) | 0 : (255 - i[n]) * e + i[n] | 0,
255 < i[n] ? i[n] = 255 : t[n] < 0 && (i[n] = 0);
return $e(i, 4 === i.length ? "rgba" : "rgb")
}
}
function Ze(t) {
var e = Fe(t);
if (e)
return ((1 << 24) + (e[0] << 16) + (e[1] << 8) + +e[2]).toString(16).slice(1)
}
function Ue(t, e, i) {
if (e && e.length && 0 <= t && t <= 1) {
i = i || [];
var n = t * (e.length - 1)
, o = Math.floor(n)
, a = Math.ceil(n)
, r = e[o]
, s = e[a]
, l = n - o;
return i[0] = Le(Ee(r[0], s[0], l)),
i[1] = Le(Ee(r[1], s[1], l)),
i[2] = Le(Ee(r[2], s[2], l)),
i[3] = ke(Ee(r[3], s[3], l)),
i
}
}
var Xe = Ue;
function Ye(t, e, i) {
if (e && e.length && 0 <= t && t <= 1) {
var n = t * (e.length - 1)
, o = Math.floor(n)
, a = Math.ceil(n)
, r = Fe(e[o])
, s = Fe(e[a])
, l = n - o
, u = $e([Le(Ee(r[0], s[0], l)), Le(Ee(r[1], s[1], l)), Le(Ee(r[2], s[2], l)), ke(Ee(r[3], s[3], l))], "rgba");
return i ? {
color: u,
leftIndex: o,
rightIndex: a,
value: n
} : u
}
}
var je = Ye;
function qe(t, e, i, n) {
if (t = Fe(t))
return t = function(t) {
if (t) {
var e, i, n = t[0] / 255, o = t[1] / 255, a = t[2] / 255, r = Math.min(n, o, a), s = Math.max(n, o, a), l = s - r, u = (s + r) / 2;
if (0 == l)
i = e = 0;
else {
i = u < .5 ? l / (s + r) : l / (2 - s - r);
var h = ((s - n) / 6 + l / 2) / l
, c = ((s - o) / 6 + l / 2) / l
, d = ((s - a) / 6 + l / 2) / l;
n === s ? e = d - c : o === s ? e = 1 / 3 + h - d : a === s && (e = 2 / 3 + c - h),
e < 0 && (e += 1),
1 < e && (e -= 1)
}
var f = [360 * e, i, u];
return null != t[3] && f.push(t[3]),
f
}
}(t),
null != e && (t[0] = function(t) {
return (t = Math.round(t)) < 0 ? 0 : 360 < t ? 360 : t
}(e)),
null != i && (t[1] = Ne(i)),
null != n && (t[2] = Ne(n)),
$e(We(t), "rgba")
}
function Ke(t, e) {
if ((t = Fe(t)) && null != e)
return t[3] = ke(e),
$e(t, "rgba")
}
function $e(t, e) {
if (t && t.length) {
var i = t[0] + "," + t[1] + "," + t[2];
return "rgba" !== e && "hsva" !== e && "hsla" !== e || (i += "," + t[3]),
e + "(" + i + ")"
}
}
var Je = (Object.freeze || Object)({
parse: Fe,
lift: He,
toHex: Ze,
fastLerp: Ue,
fastMapToColor: Xe,
lerp: Ye,
mapToColor: je,
modifyHSL: qe,
modifyAlpha: Ke,
stringify: $e
})
, Qe = Array.prototype.slice;
function ti(t, e) {
return t[e]
}
function ei(t, e, i) {
t[e] = i
}
function ii(t, e, i) {
return (e - t) * i + t
}
function ni(t, e, i) {
return .5 < i ? e : t
}
function oi(t, e, i, n, o) {
var a = t.length;
if (1 === o)
for (var r = 0; r < a; r++)
n[r] = ii(t[r], e[r], i);
else {
var s = a && t[0].length;
for (r = 0; r < a; r++)
for (var l = 0; l < s; l++)
n[r][l] = ii(t[r][l], e[r][l], i)
}
}
function ai(t, e, i) {
var n = t.length
, o = e.length;
if (n !== o)
if (o < n)
t.length = o;
else
for (var a = n; a < o; a++)
t.push(1 === i ? e[a] : Qe.call(e[a]));
var r = t[0] && t[0].length;
for (a = 0; a < t.length; a++)
if (1 === i)
isNaN(t[a]) && (t[a] = e[a]);
else
for (var s = 0; s < r; s++)
isNaN(t[a][s]) && (t[a][s] = e[a][s])
}
function ri(t, e, i) {
if (t === e)
return !0;
var n = t.length;
if (n !== e.length)
return !1;
if (1 === i) {
for (var o = 0; o < n; o++)
if (t[o] !== e[o])
return !1
} else {
var a = t[0].length;
for (o = 0; o < n; o++)
for (var r = 0; r < a; r++)
if (t[o][r] !== e[o][r])
return !1
}
return !0
}
function si(t, e, i, n, o, a, r, s, l) {
var u = t.length;
if (1 === l)
for (var h = 0; h < u; h++)
s[h] = li(t[h], e[h], i[h], n[h], o, a, r);
else {
var c = t[0].length;
for (h = 0; h < u; h++)
for (var d = 0; d < c; d++)
s[h][d] = li(t[h][d], e[h][d], i[h][d], n[h][d], o, a, r)
}
}
function li(t, e, i, n, o, a, r) {
var s = .5 * (i - t)
, l = .5 * (n - e);
return (2 * (e - i) + s + l) * r + (-3 * (e - i) - 2 * s - l) * a + s * o + e
}
function ui(t) {
if (N(t)) {
var e = t.length;
if (N(t[0])) {
for (var i = [], n = 0; n < e; n++)
i.push(Qe.call(t[n]));
return i
}
return Qe.call(t)
}
return t
}
function hi(t) {
return t[0] = Math.floor(t[0]),
t[1] = Math.floor(t[1]),
t[2] = Math.floor(t[2]),
"rgba(" + t.join(",") + ")"
}
function ci(t, e, i, n, a, o) {
var r = t._getter
, s = t._setter
, l = "spline" === e
, u = n.length;
if (u) {
var h, c = N(n[0].value), d = !1, f = !1, p = c ? function(t) {
var e = t[t.length - 1].value;
return N(e && e[0]) ? 2 : 1
}(n) : 0;
n.sort(function(t, e) {
return t.time - e.time
}),
h = n[u - 1].time;
for (var g = [], m = [], v = n[0].value, y = !0, x = 0; x < u; x++) {
g.push(n[x].time / h);
var _ = n[x].value;
if (c && ri(_, v, p) || !c && _ === v || (y = !1),
"string" == typeof (v = _)) {
var w = Fe(_);
w ? (_ = w,
d = !0) : f = !0
}
m.push(_)
}
if (o || !y) {
var b = m[u - 1];
for (x = 0; x < u - 1; x++)
c ? ai(m[x], b, p) : !isNaN(m[x]) || isNaN(b) || f || d || (m[x] = b);
c && ai(r(t._target, a), b, p);
var S, M, I, T, A, D = 0, C = 0;
if (d)
var L = [0, 0, 0, 0];
var k = new Se({
target: t._target,
life: h,
loop: t._loop,
delay: t._delay,
onframe: function(t, e) {
var i;
if (e < 0)
i = 0;
else if (e < C) {
for (i = Math.min(D + 1, u - 1); 0 <= i && !(g[i] <= e); i--)
;
i = Math.min(i, u - 2)
} else {
for (i = D; i < u && !(g[i] > e); i++)
;
i = Math.min(i - 1, u - 2)
}
C = e;
var n = g[(D = i) + 1] - g[i];
if (0 != n)
if (S = (e - g[i]) / n,
l)
if (I = m[i],
M = m[0 === i ? i : i - 1],
T = m[u - 2 < i ? u - 1 : i + 1],
A = m[u - 3 < i ? u - 1 : i + 2],
c)
si(M, I, T, A, S, S * S, S * S * S, r(t, a), p);
else {
if (d)
o = si(M, I, T, A, S, S * S, S * S * S, L, 1),
o = hi(L);
else {
if (f)
return ni(I, T, S);
o = li(M, I, T, A, S, S * S, S * S * S)
}
s(t, a, o)
}
else if (c)
oi(m[i], m[i + 1], S, r(t, a), p);
else {
var o;
if (d)
oi(m[i], m[i + 1], S, L, 1),
o = hi(L);
else {
if (f)
return ni(m[i], m[i + 1], S);
o = ii(m[i], m[i + 1], S)
}
s(t, a, o)
}
},
ondestroy: i
});
return e && "spline" !== e && (k.easing = e),
k
}
}
}
function di(t, e, i, n) {
this._tracks = {},
this._target = t,
this._loop = e || !1,
this._getter = i || ti,
this._setter = n || ei,
this._clipCount = 0,
this._delay = 0,
this._doneList = [],
this._onframeList = [],
this._clipList = []
}
di.prototype = {
when: function(t, e) {
var i = this._tracks;
for (var n in e)
if (e.hasOwnProperty(n)) {
if (!i[n]) {
i[n] = [];
var o = this._getter(this._target, n);
if (null == o)
continue;
0 !== t && i[n].push({
time: 0,
value: ui(o)
})
}
i[n].push({
time: t,
value: e[n]
})
}
return this
},
during: function(t) {
return this._onframeList.push(t),
this
},
pause: function() {
for (var t = 0; t < this._clipList.length; t++)
this._clipList[t].pause();
this._paused = !0
},
resume: function() {
for (var t = 0; t < this._clipList.length; t++)
this._clipList[t].resume();
this._paused = !1
},
isPaused: function() {
return !!this._paused
},
_doneCallback: function() {
this._tracks = {},
this._clipList.length = 0;
for (var t = this._doneList, e = t.length, i = 0; i < e; i++)
t[i].call(this)
},
start: function(t, e) {
function i() {
--a || o._doneCallback()
}
var n, o = this, a = 0;
for (var r in this._tracks)
if (this._tracks.hasOwnProperty(r)) {
var s = ci(this, t, i, this._tracks[r], r, e);
s && (this._clipList.push(s),
a++,
this.animation && this.animation.addClip(s),
n = s)
}
if (n) {
var l = n.onframe;
n.onframe = function(t, e) {
l(t, e);
for (var i = 0; i < o._onframeList.length; i++)
o._onframeList[i](t, e)
}
}
return a || this._doneCallback(),
this
},
stop: function(t) {
for (var e = this._clipList, i = this.animation, n = 0; n < e.length; n++) {
var o = e[n];
t && o.onframe(this._target, 1),
i && i.removeClip(o)
}
e.length = 0
},
delay: function(t) {
return this._delay = t,
this
},
done: function(t) {
return t && this._doneList.push(t),
this
},
getClips: function() {
return this._clipList
}
};
var fi = 1;
"undefined" != typeof window && (fi = Math.max(window.devicePixelRatio || 1, 1));
var pi = fi
, gi = function() {};
function mi() {
this.animators = []
}
var vi = gi;
function yi(t, e, i, n, o, a, r, s) {
R(n) ? (a = o,
o = n,
n = 0) : C(o) ? (a = o,
o = "linear",
n = 0) : C(n) ? (a = n,
n = 0) : i = C(i) ? (a = i,
500) : i || 500,
t.stopAnimation(),
function t(e, i, n, o, a, r, s) {
var l = {};
var u = 0;
for (var h in o)
o.hasOwnProperty(h) && (null != n[h] ? z(o[h]) && !N(o[h]) ? t(e, i ? i + "." + h : h, n[h], o[h], a, r, s) : (s ? (l[h] = n[h],
xi(e, i, h, o[h])) : l[h] = o[h],
u++) : null == o[h] || s || xi(e, i, h, o[h]));
0 < u && e.animate(i, !1).when(null == a ? 500 : a, l).delay(r || 0)
}(t, "", t, e, i, n, s);
var l = t.animators.slice()
, u = l.length;
function h() {
--u || a && a()
}
u || a && a();
for (var c = 0; c < l.length; c++)
l[c].done(h).start(o, r)
}
function xi(t, e, i, n) {
if (e) {
var o = {};
o[e] = {},
o[e][i] = n,
t.attr(o)
} else
t.attr(i, n)
}
mi.prototype = {
constructor: mi,
animate: function(t, e) {
var i, n = !1, o = this, a = this.__zr;
if (t) {
var r = t.split(".")
, s = o;
n = "shape" === r[0];
for (var l = 0, u = r.length; l < u; l++)
s = s && s[r[l]];
s && (i = s)
} else
i = o;
if (i) {
var h = o.animators
, c = new di(i,e);
return c.during(function(t) {
o.dirty(n)
}).done(function() {
h.splice(_(h, c), 1)
}),
h.push(c),
a && a.animation.addAnimator(c),
c
}
vi('Property "' + t + '" is not existed in element ' + o.id)
},
stopAnimation: function(t) {
for (var e = this.animators, i = e.length, n = 0; n < i; n++)
e[n].stop(t);
return e.length = 0,
this
},
animateTo: function(t, e, i, n, o, a) {
yi(this, t, e, i, n, o, a)
},
animateFrom: function(t, e, i, n, o, a) {
yi(this, t, e, i, n, o, a, !0)
}
};
var _i = function(t) {
ve.call(this, t),
Ct.call(this, t),
mi.call(this, t),
this.id = t.id || n()
};
_i.prototype = {
type: "element",
name: "",
__zr: null,
ignore: !1,
clipPath: null,
isGroup: !1,
drift: function(t, e) {
switch (this.draggable) {
case "horizontal":
e = 0;
break;
case "vertical":
t = 0
}
var i = this.transform;
(i = i || (this.transform = [1, 0, 0, 1, 0, 0]))[4] += t,
i[5] += e,
this.decomposeTransform(),
this.dirty(!1)
},
beforeUpdate: function() {},
afterUpdate: function() {},
update: function() {
this.updateTransform()
},
traverse: function(t, e) {},
attrKV: function(t, e) {
if ("position" === t || "scale" === t || "origin" === t) {
if (e) {
var i = this[t];
(i = i || (this[t] = []))[0] = e[0],
i[1] = e[1]
}
} else
this[t] = e
},
hide: function() {
this.ignore = !0,
this.__zr && this.__zr.refresh()
},
show: function() {
this.ignore = !1,
this.__zr && this.__zr.refresh()
},
attr: function(t, e) {
if ("string" == typeof t)
this.attrKV(t, e);
else if (z(t))
for (var i in t)
t.hasOwnProperty(i) && this.attrKV(i, t[i]);
return this.dirty(!1),
this
},
setClipPath: function(t) {
var e = this.__zr;
e && t.addSelfToZr(e),
this.clipPath && this.clipPath !== t && this.removeClipPath(),
(this.clipPath = t).__zr = e,
(t.__clipTarget = this).dirty(!1)
},
removeClipPath: function() {
var t = this.clipPath;
t && (t.__zr && t.removeSelfFromZr(t.__zr),
t.__zr = null,
t.__clipTarget = null,
this.clipPath = null,
this.dirty(!1))
},
addSelfToZr: function(t) {
this.__zr = t;
var e = this.animators;
if (e)
for (var i = 0; i < e.length; i++)
t.animation.addAnimator(e[i]);
this.clipPath && this.clipPath.addSelfToZr(t)
},
removeSelfFromZr: function(t) {
this.__zr = null;
var e = this.animators;
if (e)
for (var i = 0; i < e.length; i++)
t.animation.removeAnimator(e[i]);
this.clipPath && this.clipPath.removeSelfFromZr(t)
}
},
b(_i, mi),
b(_i, ve),
b(_i, Ct);
var wi, bi, Si, Mi, Ii = bt, Ti = Math.min, Ai = Math.max;
function Di(t, e, i, n) {
i < 0 && (t += i,
i = -i),
n < 0 && (e += n,
n = -n),
this.x = t,
this.y = e,
this.width = i,
this.height = n
}
Di.prototype = {
constructor: Di,
union: function(t) {
var e = Ti(t.x, this.x)
, i = Ti(t.y, this.y);
this.width = Ai(t.x + t.width, this.x + this.width) - e,
this.height = Ai(t.y + t.height, this.y + this.height) - i,
this.x = e,
this.y = i
},
applyTransform: (wi = [],
bi = [],
Si = [],
Mi = [],
function(t) {
if (t) {
wi[0] = Si[0] = this.x,
wi[1] = Mi[1] = this.y,
bi[0] = Mi[0] = this.x + this.width,
bi[1] = Si[1] = this.y + this.height,
Ii(wi, wi, t),
Ii(bi, bi, t),
Ii(Si, Si, t),
Ii(Mi, Mi, t),
this.x = Ti(wi[0], bi[0], Si[0], Mi[0]),
this.y = Ti(wi[1], bi[1], Si[1], Mi[1]);
var e = Ai(wi[0], bi[0], Si[0], Mi[0])
, i = Ai(wi[1], bi[1], Si[1], Mi[1]);
this.width = e - this.x,
this.height = i - this.y
}
}
),
calculateTransform: function(t) {
var e = t.width / this.width
, i = t.height / this.height
, n = ae();
return ue(n, n, [-this.x, -this.y]),
ce(n, n, [e, i]),
ue(n, n, [t.x, t.y]),
n
},
intersect: function(t) {
if (!t)
return !1;
t instanceof Di || (t = Di.create(t));
var e = this
, i = e.x
, n = e.x + e.width
, o = e.y
, a = e.y + e.height
, r = t.x
, s = t.x + t.width
, l = t.y
, u = t.y + t.height;
return !(n < r || s < i || a < l || u < o)
},
contain: function(t, e) {
var i = this;
return t >= i.x && t <= i.x + i.width && e >= i.y && e <= i.y + i.height
},
clone: function() {
return new Di(this.x,this.y,this.width,this.height)
},
copy: function(t) {
this.x = t.x,
this.y = t.y,
this.width = t.width,
this.height = t.height
},
plain: function() {
return {
x: this.x,
y: this.y,
width: this.width,
height: this.height
}
}
},
Di.create = function(t) {
return new Di(t.x,t.y,t.width,t.height)
}
;
var Ci = function(t) {
for (var e in t = t || {},
_i.call(this, t),
t)
t.hasOwnProperty(e) && (this[e] = t[e]);
this._children = [],
this.__storage = null,
this.__dirty = !0
};
Ci.prototype = {
constructor: Ci,
isGroup: !0,
type: "group",
silent: !1,
children: function() {
return this._children.slice()
},
childAt: function(t) {
return this._children[t]
},
childOfName: function(t) {
for (var e = this._children, i = 0; i < e.length; i++)
if (e[i].name === t)
return e[i]
},
childCount: function() {
return this._children.length
},
add: function(t) {
return t && t !== this && t.parent !== this && (this._children.push(t),
this._doAdd(t)),
this
},
addBefore: function(t, e) {
if (t && t !== this && t.parent !== this && e && e.parent === this) {
var i = this._children
, n = i.indexOf(e);
0 <= n && (i.splice(n, 0, t),
this._doAdd(t))
}
return this
},
_doAdd: function(t) {
t.parent && t.parent.remove(t);
var e = (t.parent = this).__storage
, i = this.__zr;
e && e !== t.__storage && (e.addToStorage(t),
t instanceof Ci && t.addChildrenToStorage(e)),
i && i.refresh()
},
remove: function(t) {
var e = this.__zr
, i = this.__storage
, n = this._children
, o = _(n, t);
return o < 0 || (n.splice(o, 1),
t.parent = null,
i && (i.delFromStorage(t),
t instanceof Ci && t.delChildrenFromStorage(i)),
e && e.refresh()),
this
},
removeAll: function() {
var t, e, i = this._children, n = this.__storage;
for (e = 0; e < i.length; e++)
t = i[e],
n && (n.delFromStorage(t),
t instanceof Ci && t.delChildrenFromStorage(n)),
t.parent = null;
return i.length = 0,
this
},
eachChild: function(t, e) {
for (var i = this._children, n = 0; n < i.length; n++) {
var o = i[n];
t.call(e, o, n)
}
return this
},
traverse: function(t, e) {
for (var i = 0; i < this._children.length; i++) {
var n = this._children[i];
t.call(e, n),
"group" === n.type && n.traverse(t, e)
}
return this
},
addChildrenToStorage: function(t) {
for (var e = 0; e < this._children.length; e++) {
var i = this._children[e];
t.addToStorage(i),
i instanceof Ci && i.addChildrenToStorage(t)
}
},
delChildrenFromStorage: function(t) {
for (var e = 0; e < this._children.length; e++) {
var i = this._children[e];
t.delFromStorage(i),
i instanceof Ci && i.delChildrenFromStorage(t)
}
},
dirty: function() {
return this.__dirty = !0,
this.__zr && this.__zr.refresh(),
this
},
getBoundingRect: function(t) {
for (var e = null, i = new Di(0,0,0,0), n = t || this._children, o = [], a = 0; a < n.length; a++) {
var r = n[a];
if (!r.ignore && !r.invisible) {
var s = r.getBoundingRect()
, l = r.getLocalTransform(o);
l ? (i.copy(s),
i.applyTransform(l),
(e = e || i.clone()).union(i)) : (e = e || s.clone()).union(s)
}
}
return e || i
}
},
w(Ci, _i);
var Li = 32
, ki = 7;
function Pi(t, e, i, n) {
var o = e + 1;
if (o === i)
return 1;
if (n(t[o++], t[e]) < 0) {
for (; o < i && n(t[o], t[o - 1]) < 0; )
o++;
!function(t, e, i) {
i--;
for (; e < i; ) {
var n = t[e];
t[e++] = t[i],
t[i--] = n
}
}(t, e, o)
} else
for (; o < i && 0 <= n(t[o], t[o - 1]); )
o++;
return o - e
}
function Ni(t, e, i, n, o) {
for (n === e && n++; n < i; n++) {
for (var a, r = t[n], s = e, l = n; s < l; )
o(r, t[a = s + l >>> 1]) < 0 ? l = a : s = 1 + a;
var u = n - s;
switch (u) {
case 3:
t[s + 3] = t[s + 2];
case 2:
t[s + 2] = t[s + 1];
case 1:
t[s + 1] = t[s];
break;
default:
for (; 0 < u; )
t[s + u] = t[s + u - 1],
u--
}
t[s] = r
}
}
function Oi(t, e, i, n, o, a) {
var r = 0
, s = 0
, l = 1;
if (0 < a(t, e[i + o])) {
for (s = n - o; l < s && 0 < a(t, e[i + o + l]); )
(l = 1 + ((r = l) << 1)) <= 0 && (l = s);
s < l && (l = s),
r += o,
l += o
} else {
for (s = o + 1; l < s && a(t, e[i + o - l]) <= 0; )
(l = 1 + ((r = l) << 1)) <= 0 && (l = s);
s < l && (l = s);
var u = r;
r = o - l,
l = o - u
}
for (r++; r < l; ) {
var h = r + (l - r >>> 1);
0 < a(t, e[i + h]) ? r = h + 1 : l = h
}
return l
}
function Ei(t, e, i, n, o, a) {
var r = 0
, s = 0
, l = 1;
if (a(t, e[i + o]) < 0) {
for (s = o + 1; l < s && a(t, e[i + o - l]) < 0; )
(l = 1 + ((r = l) << 1)) <= 0 && (l = s);
s < l && (l = s);
var u = r;
r = o - l,
l = o - u
} else {
for (s = n - o; l < s && 0 <= a(t, e[i + o + l]); )
(l = 1 + ((r = l) << 1)) <= 0 && (l = s);
s < l && (l = s),
r += o,
l += o
}
for (r++; r < l; ) {
var h = r + (l - r >>> 1);
a(t, e[i + h]) < 0 ? l = h : r = h + 1
}
return l
}
function Ri(p, g) {
var r, s, m = ki, l = 0, v = [];
function e(t) {
var e = r[t]
, i = s[t]
, n = r[t + 1]
, o = s[t + 1];
s[t] = i + o,
t === l - 3 && (r[t + 1] = r[t + 2],
s[t + 1] = s[t + 2]),
l--;
var a = Ei(p[n], p, e, i, 0, g);
e += a,
0 !== (i -= a) && 0 !== (o = Oi(p[e + i - 1], p, n, o, o - 1, g)) && (i <= o ? function(t, e, i, n) {
var o = 0;
for (o = 0; o < e; o++)
v[o] = p[t + o];
var a = 0
, r = i
, s = t;
if (p[s++] = p[r++],
0 == --n) {
for (o = 0; o < e; o++)
p[s + o] = v[a + o];
return
}
if (1 === e) {
for (o = 0; o < n; o++)
p[s + o] = p[r + o];
return p[s + n] = v[a]
}
var l, u, h, c = m;
for (; ; ) {
u = l = 0,
h = !1;
do {
if (g(p[r], v[a]) < 0) {
if (p[s++] = p[r++],
u++,
(l = 0) == --n) {
h = !0;
break
}
} else if (p[s++] = v[a++],
l++,
u = 0,
1 == --e) {
h = !0;
break
}
} while ((l | u) < c);
if (h)
break;
do {
if (0 !== (l = Ei(p[r], v, a, e, 0, g))) {
for (o = 0; o < l; o++)
p[s + o] = v[a + o];
if (s += l,
a += l,
(e -= l) <= 1) {
h = !0;
break
}
}
if (p[s++] = p[r++],
0 == --n) {
h = !0;
break
}
if (0 !== (u = Oi(v[a], p, r, n, 0, g))) {
for (o = 0; o < u; o++)
p[s + o] = p[r + o];
if (s += u,
r += u,
0 === (n -= u)) {
h = !0;
break
}
}
if (p[s++] = v[a++],
1 == --e) {
h = !0;
break
}
c--
} while (ki <= l || ki <= u);
if (h)
break;
c < 0 && (c = 0),
c += 2
}
if ((m = c) < 1 && (m = 1),
1 === e) {
for (o = 0; o < n; o++)
p[s + o] = p[r + o];
p[s + n] = v[a]
} else {
if (0 === e)
throw new Error;
for (o = 0; o < e; o++)
p[s + o] = v[a + o]
}
}(e, i, n, o) : function(t, e, i, n) {
var o = 0;
for (o = 0; o < n; o++)
v[o] = p[i + o];
var a = t + e - 1
, r = n - 1
, s = i + n - 1
, l = 0
, u = 0;
if (p[s--] = p[a--],
0 == --e) {
for (l = s - (n - 1),
o = 0; o < n; o++)
p[l + o] = v[o];
return
}
if (1 === n) {
for (u = (s -= e) + 1,
l = (a -= e) + 1,
o = e - 1; 0 <= o; o--)
p[u + o] = p[l + o];
return p[s] = v[r]
}
var h = m;
for (; ; ) {
var c = 0
, d = 0
, f = !1;
do {
if (g(v[r], p[a]) < 0) {
if (p[s--] = p[a--],
c++,
(d = 0) == --e) {
f = !0;
break
}
} else if (p[s--] = v[r--],
d++,
c = 0,
1 == --n) {
f = !0;
break
}
} while ((c | d) < h);
if (f)
break;
do {
if (0 !== (c = e - Ei(v[r], p, t, e, e - 1, g))) {
for (e -= c,
u = (s -= c) + 1,
l = (a -= c) + 1,
o = c - 1; 0 <= o; o--)
p[u + o] = p[l + o];
if (0 === e) {
f = !0;
break
}
}
if (p[s--] = v[r--],
1 == --n) {
f = !0;
break
}
if (0 !== (d = n - Oi(p[a], v, 0, n, n - 1, g))) {
for (n -= d,
u = (s -= d) + 1,
l = (r -= d) + 1,
o = 0; o < d; o++)
p[u + o] = v[l + o];
if (n <= 1) {
f = !0;
break
}
}
if (p[s--] = p[a--],
0 == --e) {
f = !0;
break
}
h--
} while (ki <= c || ki <= d);
if (f)
break;
h < 0 && (h = 0),
h += 2
}
(m = h) < 1 && (m = 1);
if (1 === n) {
for (u = (s -= e) + 1,
l = (a -= e) + 1,
o = e - 1; 0 <= o; o--)
p[u + o] = p[l + o];
p[s] = v[r]
} else {
if (0 === n)
throw new Error;
for (l = s - (n - 1),
o = 0; o < n; o++)
p[l + o] = v[o]
}
}(e, i, n, o))
}
r = [],
s = [],
this.mergeRuns = function() {
for (; 1 < l; ) {
var t = l - 2;
if (1 <= t && s[t - 1] <= s[t] + s[t + 1] || 2 <= t && s[t - 2] <= s[t] + s[t - 1])
s[t - 1] < s[t + 1] && t--;
else if (s[t] > s[t + 1])
break;
e(t)
}
}
,
this.forceMergeRuns = function() {
for (; 1 < l; ) {
var t = l - 2;
0 < t && s[t - 1] < s[t + 1] && t--,
e(t)
}
}
,
this.pushRun = function(t, e) {
r[l] = t,
s[l] = e,
l += 1
}
}
function zi(t, e, i, n) {
i = i || 0;
var o = (n = n || t.length) - i;
if (!(o < 2)) {
var a = 0;
if (o < Li)
Ni(t, i, n, i + (a = Pi(t, i, n, e)), e);
else {
var r = new Ri(t,e)
, s = function(t) {
for (var e = 0; Li <= t; )
e |= 1 & t,
t >>= 1;
return t + e
}(o);
do {
if ((a = Pi(t, i, n, e)) < s) {
var l = o;
s < l && (l = s),
Ni(t, i, i + l, i + a, e),
a = l
}
r.pushRun(i, a),
r.mergeRuns(),
o -= a,
i += a
} while (0 !== o);
r.forceMergeRuns()
}
}
}
function Bi(t, e) {
return t.zlevel === e.zlevel ? t.z === e.z ? t.z2 - e.z2 : t.z - e.z : t.zlevel - e.zlevel
}
function Vi() {
this._roots = [],
this._displayList = [],
this._displayListLen = 0
}
Vi.prototype = {
constructor: Vi,
traverse: function(t, e) {
for (var i = 0; i < this._roots.length; i++)
this._roots[i].traverse(t, e)
},
getDisplayList: function(t, e) {
return e = e || !1,
t && this.updateDisplayList(e),
this._displayList
},
updateDisplayList: function(t) {
this._displayListLen = 0;
for (var e = this._roots, i = this._displayList, n = 0, o = e.length; n < o; n++)
this._updateAndAddDisplayable(e[n], null, t);
i.length = this._displayListLen,
v.canvasSupported && zi(i, Bi)
},
_updateAndAddDisplayable: function(t, e, i) {
if (!t.ignore || i) {
t.beforeUpdate(),
t.__dirty && t.update(),
t.afterUpdate();
var n = t.clipPath;
if (n) {
e = e ? e.slice() : [];
for (var o = n, a = t; o; )
o.parent = a,
o.updateTransform(),
e.push(o),
o = (a = o).clipPath
}
if (t.isGroup) {
for (var r = t._children, s = 0; s < r.length; s++) {
var l = r[s];
t.__dirty && (l.__dirty = !0),
this._updateAndAddDisplayable(l, e, i)
}
t.__dirty = !1
} else
t.__clipPaths = e,
this._displayList[this._displayListLen++] = t
}
},
addRoot: function(t) {
t.__storage !== this && (t instanceof Ci && t.addChildrenToStorage(this),
this.addToStorage(t),
this._roots.push(t))
},
delRoot: function(t) {
if (null == t) {
for (var e = 0; e < this._roots.length; e++) {
var i = this._roots[e];
i instanceof Ci && i.delChildrenFromStorage(this)
}
return this._roots = [],
this._displayList = [],
void (this._displayListLen = 0)
}
if (t instanceof Array) {
e = 0;
for (var n = t.length; e < n; e++)
this.delRoot(t[e])
} else {
var o = _(this._roots, t);
0 <= o && (this.delFromStorage(t),
this._roots.splice(o, 1),
t instanceof Ci && t.delChildrenFromStorage(this))
}
},
addToStorage: function(t) {
return t && (t.__storage = this,
t.dirty(!1)),
this
},
delFromStorage: function(t) {
return t && (t.__storage = null),
this
},
dispose: function() {
this._renderList = this._roots = null
},
displayableSortFunc: Bi
};
var Gi = {
shadowBlur: 1,
shadowOffsetX: 1,
shadowOffsetY: 1,
textShadowBlur: 1,
textShadowOffsetX: 1,
textShadowOffsetY: 1,
textBoxShadowBlur: 1,
textBoxShadowOffsetX: 1,
textBoxShadowOffsetY: 1
}
, Fi = function(t, e, i) {
return Gi.hasOwnProperty(e) ? i * t.dpr : i
}
, Wi = {
NONE: 0,
STYLE_BIND: 1,
PLAIN_TEXT: 2
}
, Hi = 9
, Zi = [["shadowBlur", 0], ["shadowOffsetX", 0], ["shadowOffsetY", 0], ["shadowColor", "#000"], ["lineCap", "butt"], ["lineJoin", "miter"], ["miterLimit", 10]]
, Ui = function(t) {
this.extendFrom(t, !1)
};
function Xi(t, e, i) {
var n = null == e.x ? 0 : e.x
, o = null == e.x2 ? 1 : e.x2
, a = null == e.y ? 0 : e.y
, r = null == e.y2 ? 0 : e.y2;
return e.global || (n = n * i.width + i.x,
o = o * i.width + i.x,
a = a * i.height + i.y,
r = r * i.height + i.y),
n = isNaN(n) ? 0 : n,
o = isNaN(o) ? 1 : o,
a = isNaN(a) ? 0 : a,
r = isNaN(r) ? 0 : r,
t.createLinearGradient(n, a, o, r)
}
function Yi(t, e, i) {
var n = i.width
, o = i.height
, a = Math.min(n, o)
, r = null == e.x ? .5 : e.x
, s = null == e.y ? .5 : e.y
, l = null == e.r ? .5 : e.r;
return e.global || (r = r * n + i.x,
s = s * o + i.y,
l *= a),
t.createRadialGradient(r, s, 0, r, s, l)
}
Ui.prototype = {
constructor: Ui,
fill: "#000",
stroke: null,
opacity: 1,
fillOpacity: null,
strokeOpacity: null,
lineDash: null,
lineDashOffset: 0,
shadowBlur: 0,
shadowOffsetX: 0,
shadowOffsetY: 0,
lineWidth: 1,
strokeNoScale: !1,
text: null,
font: null,
textFont: null,
fontStyle: null,
fontWeight: null,
fontSize: null,
fontFamily: null,
textTag: null,
textFill: "#000",
textStroke: null,
textWidth: null,
textHeight: null,
textStrokeWidth: 0,
textLineHeight: null,
textPosition: "inside",
textRect: null,
textOffset: null,
textAlign: null,
textVerticalAlign: null,
textDistance: 5,
textShadowColor: "transparent",
textShadowBlur: 0,
textShadowOffsetX: 0,
textShadowOffsetY: 0,
textBoxShadowColor: "transparent",
textBoxShadowBlur: 0,
textBoxShadowOffsetX: 0,
textBoxShadowOffsetY: 0,
transformText: !1,
textRotation: 0,
textOrigin: null,
textBackgroundColor: null,
textBorderColor: null,
textBorderWidth: 0,
textBorderRadius: 0,
textPadding: null,
rich: null,
truncate: null,
blend: null,
bind: function(t, e, i) {
var n = this
, o = i && i.style
, a = !o || t.__attrCachedBy !== Wi.STYLE_BIND;
t.__attrCachedBy = Wi.STYLE_BIND;
for (var r = 0; r < Zi.length; r++) {
var s = Zi[r]
, l = s[0];
!a && n[l] === o[l] || (t[l] = Fi(t, l, n[l] || s[1]))
}
if (!a && n.fill === o.fill || (t.fillStyle = n.fill),
!a && n.stroke === o.stroke || (t.strokeStyle = n.stroke),
!a && n.opacity === o.opacity || (t.globalAlpha = null == n.opacity ? 1 : n.opacity),
!a && n.blend === o.blend || (t.globalCompositeOperation = n.blend || "source-over"),
this.hasStroke()) {
var u = n.lineWidth;
t.lineWidth = u / (this.strokeNoScale && e && e.getLineScale ? e.getLineScale() : 1)
}
},
hasFill: function() {
var t = this.fill;
return null != t && "none" !== t
},
hasStroke: function() {
var t = this.stroke;
return null != t && "none" !== t && 0 < this.lineWidth
},
extendFrom: function(t, e) {
if (t)
for (var i in t)
!t.hasOwnProperty(i) || !0 !== e && (!1 === e ? this.hasOwnProperty(i) : null == t[i]) || (this[i] = t[i])
},
set: function(t, e) {
"string" == typeof t ? this[t] = e : this.extendFrom(t, !0)
},
clone: function() {
var t = new this.constructor;
return t.extendFrom(this, !0),
t
},
getGradient: function(t, e, i) {
for (var n = ("radial" === e.type ? Yi : Xi)(t, e, i), o = e.colorStops, a = 0; a < o.length; a++)
n.addColorStop(o[a].offset, o[a].color);
return n
}
};
for (var ji = Ui.prototype, qi = 0; qi < Zi.length; qi++) {
var Ki = Zi[qi];
Ki[0]in ji || (ji[Ki[0]] = Ki[1])
}
Ui.getGradient = ji.getGradient;
function $i(t, e) {
this.image = t,
this.repeat = e,
this.type = "pattern"
}
function Ji() {
return !1
}
function Qi(t, e, i) {
var n = y()
, o = e.getWidth()
, a = e.getHeight()
, r = n.style;
return r && (r.position = "absolute",
r.left = 0,
r.top = 0,
r.width = o + "px",
r.height = a + "px",
n.setAttribute("data-zr-dom-id", t)),
n.width = o * i,
n.height = a * i,
n
}
function tn(t, e, i) {
var n;
i = i || pi,
"string" == typeof t ? n = Qi(t, e, i) : z(t) && (t = (n = t).id),
this.id = t;
var o = (this.dom = n).style;
o && (n.onselectstart = Ji,
o["-webkit-user-select"] = "none",
o["user-select"] = "none",
o["-webkit-touch-callout"] = "none",
o["-webkit-tap-highlight-color"] = "rgba(0,0,0,0)",
o.padding = 0,
o.margin = 0,
o["border-width"] = 0),
this.domBack = null,
this.ctxBack = null,
this.painter = e,
this.config = null,
this.clearColor = 0,
this.motionBlur = !1,
this.lastFrameAlpha = .7,
this.dpr = i
}
tn.prototype = {
constructor: tn,
__dirty: !0,
__used: !($i.prototype.getCanvasPattern = function(t) {
return t.createPattern(this.image, this.repeat || "repeat")
}
),
__drawIndex: 0,
__startIndex: 0,
__endIndex: 0,
incremental: !1,
getElementCount: function() {
return this.__endIndex - this.__startIndex
},
initContext: function() {
this.ctx = this.dom.getContext("2d"),
this.ctx.dpr = this.dpr
},
createBackBuffer: function() {
var t = this.dpr;
this.domBack = Qi("back-" + this.id, this.painter, t),
this.ctxBack = this.domBack.getContext("2d"),
1 !== t && this.ctxBack.scale(t, t)
},
resize: function(t, e) {
var i = this.dpr
, n = this.dom
, o = n.style
, a = this.domBack;
o && (o.width = t + "px",
o.height = e + "px"),
n.width = t * i,
n.height = e * i,
a && (a.width = t * i,
a.height = e * i,
1 !== i && this.ctxBack.scale(i, i))
},
clear: function(t, e) {
var i, n = this.dom, o = this.ctx, a = n.width, r = n.height, s = (e = e || this.clearColor,
this.motionBlur && !t), l = this.lastFrameAlpha, u = this.dpr;
s && (this.domBack || this.createBackBuffer(),
this.ctxBack.globalCompositeOperation = "copy",
this.ctxBack.drawImage(n, 0, 0, a / u, r / u)),
o.clearRect(0, 0, a, r),
e && "transparent" !== e && (e.colorStops ? (i = e.__canvasGradient || Ui.getGradient(o, e, {
x: 0,
y: 0,
width: a,
height: r
}),
e.__canvasGradient = i) : e.image && (i = $i.prototype.getCanvasPattern.call(e, o)),
o.save(),
o.fillStyle = i || e,
o.fillRect(0, 0, a, r),
o.restore());
if (s) {
var h = this.domBack;
o.save(),
o.globalAlpha = l,
o.drawImage(h, 0, 0, a, r),
o.restore()
}
}
};
var en = "undefined" != typeof window && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function(t) {
setTimeout(t, 16)
}
, nn = new Te(50);
function on(t) {
if ("string" != typeof t)
return t;
var e = nn.get(t);
return e && e.image
}
function an(t, e, i, n, o) {
if (t) {
if ("string" != typeof t)
return t;
if (e && e.__zrImageSrc === t || !i)
return e;
var a = nn.get(t)
, r = {
hostEl: i,
cb: n,
cbPayload: o
};
return a ? sn(e = a.image) || a.pending.push(r) : ((e = new Image).onload = e.onerror = rn,
nn.put(t, e.__cachedImgObj = {
image: e,
pending: [r]
}),
e.src = e.__zrImageSrc = t),
e
}
return e
}
function rn() {
var t = this.__cachedImgObj;
this.onload = this.onerror = this.__cachedImgObj = null;
for (var e = 0; e < t.pending.length; e++) {
var i = t.pending[e]
, n = i.cb;
n && n(this, i.cbPayload),
i.hostEl.dirty()
}
t.pending.length = 0
}
function sn(t) {
return t && t.width && t.height
}
var ln = {}
, un = 0
, hn = 5e3
, cn = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g
, dn = "12px sans-serif"
, fn = {};
function pn(t, e) {
var i = t + ":" + (e = e || dn);
if (ln[i])
return ln[i];
for (var n, o, a = (t + "").split("\n"), r = 0, s = 0, l = a.length; s < l; s++)
r = Math.max((n = a[s],
o = e,
fn.measureText(n, o)).width, r);
return hn < un && (un = 0,
ln = {}),
un++,
ln[i] = r
}
function gn(t, e, i, n, o, a, r, s) {
return r ? function(t, e, i, n, o, a, r, s) {
var l = In(t, {
rich: r,
truncate: s,
font: e,
textAlign: i,
textPadding: o,
textLineHeight: a
})
, u = l.outerWidth
, h = l.outerHeight
, c = mn(0, u, i)
, d = vn(0, h, n);
return new Di(c,d,u,h)
}(t, e, i, n, o, a, r, s) : function(t, e, i, n, o, a, r) {
var s = Mn(t, e, o, a, r)
, l = pn(t, e);
o && (l += o[1] + o[3]);
var u = s.outerHeight
, h = mn(0, l, i)
, c = vn(0, u, n)
, d = new Di(h,c,l,u);
return d.lineHeight = s.lineHeight,
d
}(t, e, i, n, o, a, s)
}
function mn(t, e, i) {
return "right" === i ? t -= e : "center" === i && (t -= e / 2),
t
}
function vn(t, e, i) {
return "middle" === i ? t -= e / 2 : "bottom" === i && (t -= e),
t
}
function yn(t, e, i) {
var n = e.textPosition
, o = e.textDistance
, a = i.x
, r = i.y;
o = o || 0;
var s = i.height
, l = i.width
, u = s / 2
, h = "left"
, c = "top";
switch (n) {
case "left":
a -= o,
r += u,
h = "right",
c = "middle";
break;
case "right":
a += o + l,
r += u,
c = "middle";
break;
case "top":
a += l / 2,
r -= o,
h = "center",
c = "bottom";
break;
case "bottom":
a += l / 2,
r += s + o,
h = "center";
break;
case "inside":
a += l / 2,
r += u,
h = "center",
c = "middle";
break;
case "insideLeft":
a += o,
r += u,
c = "middle";
break;
case "insideRight":
a += l - o,
r += u,
h = "right",
c = "middle";
break;
case "insideTop":
a += l / 2,
r += o,
h = "center";
break;
case "insideBottom":
a += l / 2,
r += s - o,
h = "center",
c = "bottom";
break;
case "insideTopLeft":
a += o,
r += o;
break;
case "insideTopRight":
a += l - o,
r += o,
h = "right";
break;
case "insideBottomLeft":
a += o,
r += s - o,
c = "bottom";
break;
case "insideBottomRight":
a += l - o,
r += s - o,
h = "right",
c = "bottom"
}
return (t = t || {}).x = a,
t.y = r,
t.textAlign = h,
t.textVerticalAlign = c,
t
}
function xn(t, e, i, n, o) {
if (!e)
return "";
var a = (t + "").split("\n");
o = _n(e, i, n, o);
for (var r = 0, s = a.length; r < s; r++)
a[r] = wn(a[r], o);
return a.join("\n")
}
function _n(t, e, i, n) {
(n = P({}, n)).font = e;
i = H(i, "...");
n.maxIterations = H(n.maxIterations, 2);
var o = n.minChar = H(n.minChar, 0);
n.cnCharWidth = pn("国", e);
var a = n.ascCharWidth = pn("a", e);
n.placeholder = H(n.placeholder, "");
for (var r = t = Math.max(0, t - 1), s = 0; s < o && a <= r; s++)
r -= a;
var l = pn(i, e);
return r < l && (i = "",
l = 0),
r = t - l,
n.ellipsis = i,
n.ellipsisWidth = l,
n.contentWidth = r,
n.containerWidth = t,
n
}
function wn(t, e) {
var i = e.containerWidth
, n = e.font
, o = e.contentWidth;
if (!i)
return "";
var a = pn(t, n);
if (a <= i)
return t;
for (var r = 0; ; r++) {
if (a <= o || r >= e.maxIterations) {
t += e.ellipsis;
break
}
var s = 0 === r ? bn(t, o, e.ascCharWidth, e.cnCharWidth) : 0 < a ? Math.floor(t.length * o / a) : 0;
a = pn(t = t.substr(0, s), n)
}
return "" === t && (t = e.placeholder),
t
}
function bn(t, e, i, n) {
for (var o = 0, a = 0, r = t.length; a < r && o < e; a++) {
var s = t.charCodeAt(a);
o += 0 <= s && s <= 127 ? i : n
}
return a
}
function Sn(t) {
return pn("国", t)
}
function Mn(t, e, i, n, o) {
null != t && (t += "");
var a = H(n, Sn(e))
, r = t ? t.split("\n") : []
, s = r.length * a
, l = s
, u = !0;
if (i && (l += i[0] + i[2]),
t && o) {
u = !1;
var h = o.outerHeight
, c = o.outerWidth;
if (null != h && h < l)
t = "",
r = [];
else if (null != c)
for (var d = _n(c - (i ? i[1] + i[3] : 0), e, o.ellipsis, {
minChar: o.minChar,
placeholder: o.placeholder
}), f = 0, p = r.length; f < p; f++)
r[f] = wn(r[f], d)
}
return {
lines: r,
height: s,
outerHeight: l,
lineHeight: a,
canCacheByTextString: u
}
}
function In(t, e) {
var i = {
lines: [],
width: 0,
height: 0
};
if (null != t && (t += ""),
!t)
return i;
for (var n, o = cn.lastIndex = 0; null != (n = cn.exec(t)); ) {
var a = n.index;
o < a && Tn(i, t.substring(o, a)),
Tn(i, n[2], n[1]),
o = cn.lastIndex
}
o < t.length && Tn(i, t.substring(o, t.length));
var r = i.lines
, s = 0
, l = 0
, u = []
, h = e.textPadding
, c = e.truncate
, d = c && c.outerWidth
, f = c && c.outerHeight;
h && (null != d && (d -= h[1] + h[3]),
null != f && (f -= h[0] + h[2]));
for (var p = 0; p < r.length; p++) {
for (var g = r[p], m = 0, v = 0, y = 0; y < g.tokens.length; y++) {
var x = (C = g.tokens[y]).styleName && e.rich[C.styleName] || {}
, _ = C.textPadding = x.textPadding
, w = C.font = x.font || e.font
, b = C.textHeight = H(x.textHeight, Sn(w));
if (_ && (b += _[0] + _[2]),
C.height = b,
C.lineHeight = Z(x.textLineHeight, e.textLineHeight, b),
C.textAlign = x && x.textAlign || e.textAlign,
C.textVerticalAlign = x && x.textVerticalAlign || "middle",
null != f && s + C.lineHeight > f)
return {
lines: [],
width: 0,
height: 0
};
C.textWidth = pn(C.text, w);
var S = x.textWidth
, M = null == S || "auto" === S;
if ("string" == typeof S && "%" === S.charAt(S.length - 1))
C.percentWidth = S,
u.push(C),
S = 0;
else {
if (M) {
S = C.textWidth;
var I = x.textBackgroundColor
, T = I && I.image;
T && sn(T = on(T)) && (S = Math.max(S, T.width * b / T.height))
}
var A = _ ? _[1] + _[3] : 0;
S += A;
var D = null != d ? d - v : null;
null != D && D < S && (!M || D < A ? (C.text = "",
C.textWidth = S = 0) : (C.text = xn(C.text, D - A, w, c.ellipsis, {
minChar: c.minChar
}),
C.textWidth = pn(C.text, w),
S = C.textWidth + A))
}
v += C.width = S,
x && (m = Math.max(m, C.lineHeight))
}
g.width = v,
s += g.lineHeight = m,
l = Math.max(l, v)
}
i.outerWidth = i.width = H(e.textWidth, l),
i.outerHeight = i.height = H(e.textHeight, s),
h && (i.outerWidth += h[1] + h[3],
i.outerHeight += h[0] + h[2]);
for (p = 0; p < u.length; p++) {
var C, L = (C = u[p]).percentWidth;
C.width = parseInt(L, 10) / 100 * l
}
return i
}
function Tn(t, e, i) {
for (var n = "" === e, o = e.split("\n"), a = t.lines, r = 0; r < o.length; r++) {
var s = o[r]
, l = {
styleName: i,
text: s,
isLineHolder: !s && !n
};
if (r)
a.push({
tokens: [l]
});
else {
var u = (a[a.length - 1] || (a[0] = {
tokens: []
})).tokens
, h = u.length;
1 === h && u[0].isLineHolder ? u[0] = l : !s && h && !n || u.push(l)
}
}
}
function An(t) {
var e = (t.fontSize || t.fontFamily) && [t.fontStyle, t.fontWeight, (t.fontSize || 12) + "px", t.fontFamily || "sans-serif"].join(" ");
return e && j(e) || t.textFont || t.font
}
function Dn(t, e) {
var i, n, o, a, r, s = e.x, l = e.y, u = e.width, h = e.height, c = e.r;
u < 0 && (s += u,
u = -u),
h < 0 && (l += h,
h = -h),
"number" == typeof c ? i = n = o = a = c : c instanceof Array ? 1 === c.length ? i = n = o = a = c[0] : 2 === c.length ? (i = o = c[0],
n = a = c[1]) : 3 === c.length ? (i = c[0],
n = a = c[1],
o = c[2]) : (i = c[0],
n = c[1],
o = c[2],
a = c[3]) : i = n = o = a = 0,
u < i + n && (i *= u / (r = i + n),
n *= u / r),
u < o + a && (o *= u / (r = o + a),
a *= u / r),
h < n + o && (n *= h / (r = n + o),
o *= h / r),
h < i + a && (i *= h / (r = i + a),
a *= h / r),
t.moveTo(s + i, l),
t.lineTo(s + u - n, l),
0 !== n && t.arc(s + u - n, l + n, n, -Math.PI / 2, 0),
t.lineTo(s + u, l + h - o),
0 !== o && t.arc(s + u - o, l + h - o, o, 0, Math.PI / 2),
t.lineTo(s + a, l + h),
0 !== a && t.arc(s + a, l + h - a, a, Math.PI / 2, Math.PI),
t.lineTo(s, l + i),
0 !== i && t.arc(s + i, l + i, i, Math.PI, 1.5 * Math.PI)
}
fn.measureText = function(t, e) {
var i = x();
return i.font = e || dn,
i.measureText(t)
}
;
var Cn = dn
, Ln = {
left: 1,
right: 1,
center: 1
}
, kn = {
top: 1,
bottom: 1,
middle: 1
}
, Pn = [["textShadowBlur", "shadowBlur", 0], ["textShadowOffsetX", "shadowOffsetX", 0], ["textShadowOffsetY", "shadowOffsetY", 0], ["textShadowColor", "shadowColor", "transparent"]]
, Nn = {}
, On = {};
function En(t) {
return Rn(t),
E(t.rich, Rn),
t
}
function Rn(t) {
if (t) {
t.font = An(t);
var e = t.textAlign;
"middle" === e && (e = "center"),
t.textAlign = null == e || Ln[e] ? e : "left";
var i = t.textVerticalAlign || t.textBaseline;
"center" === i && (i = "middle"),
t.textVerticalAlign = null == i || kn[i] ? i : "top",
t.textPadding && (t.textPadding = X(t.textPadding))
}
}
function zn(t, e, i, n, o, a) {
n.rich ? function(t, e, i, n, o, a) {
a !== Hi && (e.__attrCachedBy = Wi.NONE);
var r = t.__textCotentBlock;
r && !t.__dirtyText || (r = t.__textCotentBlock = In(i, n));
!function(t, e, i, n, o) {
var a = i.width
, r = i.outerWidth
, s = i.outerHeight
, l = n.textPadding
, u = Hn(On, t, n, o)
, h = u.baseX
, c = u.baseY
, d = u.textAlign
, f = u.textVerticalAlign;
Bn(e, n, o, h, c);
var p = mn(h, r, d)
, g = vn(c, s, f)
, m = p
, v = g;
l && (m += l[3],
v += l[0]);
var y = m + a;
Gn(n) && Fn(t, e, n, p, g, r, s);
for (var x = 0; x < i.lines.length; x++) {
for (var _, w = i.lines[x], b = w.tokens, S = b.length, M = w.lineHeight, I = w.width, T = 0, A = m, D = y, C = S - 1; T < S && (!(_ = b[T]).textAlign || "left" === _.textAlign); )
Vn(t, e, _, n, M, v, A, "left"),
I -= _.width,
A += _.width,
T++;
for (; 0 <= C && "right" === (_ = b[C]).textAlign; )
Vn(t, e, _, n, M, v, D, "right"),
I -= _.width,
D -= _.width,
C--;
for (A += (a - (A - m) - (y - D) - I) / 2; T <= C; )
_ = b[T],
Vn(t, e, _, n, M, v, A + _.width / 2, "center"),
A += _.width,
T++;
v += M
}
}(t, e, r, n, o)
}(t, e, i, n, o, a) : function(t, e, i, n, o, a) {
var r, s = Gn(n), l = !1, u = e.__attrCachedBy === Wi.PLAIN_TEXT;
a !== Hi ? (a && (r = a.style,
l = !s && u && r),
e.__attrCachedBy = s ? Wi.NONE : Wi.PLAIN_TEXT) : u && (e.__attrCachedBy = Wi.NONE);
var h = n.font || Cn;
l && h === (r.font || Cn) || (e.font = h);
var c = t.__computedFont;
t.__styleFont !== h && (t.__styleFont = h,
c = t.__computedFont = e.font);
var d = n.textPadding
, f = n.textLineHeight
, p = t.__textCotentBlock;
p && !t.__dirtyText || (p = t.__textCotentBlock = Mn(i, c, d, f, n.truncate));
var g = p.outerHeight
, m = p.lines
, v = p.lineHeight
, y = Hn(On, t, n, o)
, x = y.baseX
, _ = y.baseY
, w = y.textAlign || "left"
, b = y.textVerticalAlign;
Bn(e, n, o, x, _);
var S = vn(_, g, b)
, M = x
, I = S;
if (s || d) {
var T = pn(i, c);
d && (T += d[1] + d[3]);
var A = mn(x, T, w);
s && Fn(t, e, n, A, S, T, g),
d && (M = jn(x, w, d),
I += d[0])
}
e.textAlign = w,
e.textBaseline = "middle",
e.globalAlpha = n.opacity || 1;
for (var D = 0; D < Pn.length; D++) {
var C = Pn[D]
, L = C[0]
, k = C[1]
, P = n[L];
l && P === r[L] || (e[k] = Fi(e, k, P || C[2]))
}
I += v / 2;
var N = n.textStrokeWidth
, O = l ? r.textStrokeWidth : null
, E = !l || N !== O
, R = !l || E || n.textStroke !== r.textStroke
, z = Un(n.textStroke, N)
, B = Xn(n.textFill);
z && (E && (e.lineWidth = N),
R && (e.strokeStyle = z));
B && (l && n.textFill === r.textFill || (e.fillStyle = B));
if (1 === m.length)
z && e.strokeText(m[0], M, I),
B && e.fillText(m[0], M, I);
else
for (D = 0; D < m.length; D++)
z && e.strokeText(m[D], M, I),
B && e.fillText(m[D], M, I),
I += v
}(t, e, i, n, o, a)
}
function Bn(t, e, i, n, o) {
if (i && e.textRotation) {
var a = e.textOrigin;
"center" === a ? (n = i.width / 2 + i.x,
o = i.height / 2 + i.y) : a && (n = a[0] + i.x,
o = a[1] + i.y),
t.translate(n, o),
t.rotate(-e.textRotation),
t.translate(-n, -o)
}
}
function Vn(t, e, i, n, o, a, r, s) {
var l = n.rich[i.styleName] || {};
l.text = i.text;
var u = i.textVerticalAlign
, h = a + o / 2;
"top" === u ? h = a + i.height / 2 : "bottom" === u && (h = a + o - i.height / 2),
!i.isLineHolder && Gn(l) && Fn(t, e, l, "right" === s ? r - i.width : "center" === s ? r - i.width / 2 : r, h - i.height / 2, i.width, i.height);
var c = i.textPadding;
c && (r = jn(r, s, c),
h -= i.height / 2 - c[2] - i.textHeight / 2),
Zn(e, "shadowBlur", Z(l.textShadowBlur, n.textShadowBlur, 0)),
Zn(e, "shadowColor", l.textShadowColor || n.textShadowColor || "transparent"),
Zn(e, "shadowOffsetX", Z(l.textShadowOffsetX, n.textShadowOffsetX, 0)),
Zn(e, "shadowOffsetY", Z(l.textShadowOffsetY, n.textShadowOffsetY, 0)),
Zn(e, "textAlign", s),
Zn(e, "textBaseline", "middle"),
Zn(e, "font", i.font || Cn);
var d = Un(l.textStroke || n.textStroke, p)
, f = Xn(l.textFill || n.textFill)
, p = H(l.textStrokeWidth, n.textStrokeWidth);
d && (Zn(e, "lineWidth", p),
Zn(e, "strokeStyle", d),
e.strokeText(i.text, r, h)),
f && (Zn(e, "fillStyle", f),
e.fillText(i.text, r, h))
}
function Gn(t) {
return !!(t.textBackgroundColor || t.textBorderWidth && t.textBorderColor)
}
function Fn(t, e, i, n, o, a, r) {
var s = i.textBackgroundColor
, l = i.textBorderWidth
, u = i.textBorderColor
, h = R(s);
if (Zn(e, "shadowBlur", i.textBoxShadowBlur || 0),
Zn(e, "shadowColor", i.textBoxShadowColor || "transparent"),
Zn(e, "shadowOffsetX", i.textBoxShadowOffsetX || 0),
Zn(e, "shadowOffsetY", i.textBoxShadowOffsetY || 0),
h || l && u) {
e.beginPath();
var c = i.textBorderRadius;
c ? Dn(e, {
x: n,
y: o,
width: a,
height: r,
r: c
}) : e.rect(n, o, a, r),
e.closePath()
}
if (h)
if (Zn(e, "fillStyle", s),
null != i.fillOpacity) {
var d = e.globalAlpha;
e.globalAlpha = i.fillOpacity * i.opacity,
e.fill(),
e.globalAlpha = d
} else
e.fill();
else if (z(s)) {
var f = s.image;
(f = an(f, null, t, Wn, s)) && sn(f) && e.drawImage(f, n, o, a, r)
}
if (l && u)
if (Zn(e, "lineWidth", l),
Zn(e, "strokeStyle", u),
null != i.strokeOpacity) {
d = e.globalAlpha;
e.globalAlpha = i.strokeOpacity * i.opacity,
e.stroke(),
e.globalAlpha = d
} else
e.stroke()
}
function Wn(t, e) {
e.image = t
}
function Hn(t, e, i, n) {
var o = i.x || 0
, a = i.y || 0
, r = i.textAlign
, s = i.textVerticalAlign;
if (n) {
var l = i.textPosition;
if (l instanceof Array)
o = n.x + Yn(l[0], n.width),
a = n.y + Yn(l[1], n.height);
else {
var u = e && e.calculateTextPosition ? e.calculateTextPosition(Nn, i, n) : yn(Nn, i, n);
o = u.x,
a = u.y,
r = r || u.textAlign,
s = s || u.textVerticalAlign
}
var h = i.textOffset;
h && (o += h[0],
a += h[1])
}
return (t = t || {}).baseX = o,
t.baseY = a,
t.textAlign = r,
t.textVerticalAlign = s,
t
}
function Zn(t, e, i) {
return t[e] = Fi(t, e, i),
t[e]
}
function Un(t, e) {
return null == t || e <= 0 || "transparent" === t || "none" === t ? null : t.image || t.colorStops ? "#000" : t
}
function Xn(t) {
return null == t || "none" === t ? null : t.image || t.colorStops ? "#000" : t
}
function Yn(t, e) {
return "string" == typeof t ? 0 <= t.lastIndexOf("%") ? parseFloat(t) / 100 * e : parseFloat(t) : t
}
function jn(t, e, i) {
return "right" === e ? t - i[1] : "center" === e ? t + i[3] / 2 - i[1] / 2 : t + i[3]
}
function qn(t, e) {
return null != t && (t || e.textBackgroundColor || e.textBorderWidth && e.textBorderColor || e.textPadding)
}
function Kn() {}
var $n = new Di;
function Jn(t) {
for (var e in t = t || {},
_i.call(this, t),
t)
t.hasOwnProperty(e) && "style" !== e && (this[e] = t[e]);
this.style = new Ui(t.style,this),
this._rect = null,
this.__clipPaths = null
}
function Qn(t) {
Jn.call(this, t)
}
Jn.prototype = {
constructor: Jn,
type: "displayable",
__dirty: !0,
invisible: !(Kn.prototype = {
constructor: Kn,
drawRectText: function(t, e) {
var i = this.style;
e = i.textRect || e,
this.__dirty && En(i);
var n = i.text;
if (null != n && (n += ""),
qn(n, i)) {
t.save();
var o = this.transform;
i.transformText ? this.setTransform(t) : o && ($n.copy(e),
$n.applyTransform(o),
e = $n),
zn(this, t, n, i, e, Hi),
t.restore()
}
}
}),
z: 0,
z2: 0,
zlevel: 0,
draggable: !1,
dragging: !1,
silent: !1,
culling: !1,
cursor: "pointer",
rectHover: !1,
progressive: !1,
incremental: !1,
globalScaleRatio: 1,
beforeBrush: function(t) {},
afterBrush: function(t) {},
brush: function(t, e) {},
getBoundingRect: function() {},
contain: function(t, e) {
return this.rectContain(t, e)
},
traverse: function(t, e) {
t.call(e, this)
},
rectContain: function(t, e) {
var i = this.transformCoordToLocal(t, e);
return this.getBoundingRect().contain(i[0], i[1])
},
dirty: function() {
this.__dirty = this.__dirtyText = !0,
this._rect = null,
this.__zr && this.__zr.refresh()
},
animateStyle: function(t) {
return this.animate("style", t)
},
attrKV: function(t, e) {
"style" !== t ? _i.prototype.attrKV.call(this, t, e) : this.style.set(e)
},
setStyle: function(t, e) {
return this.style.set(t, e),
this.dirty(!1),
this
},
useStyle: function(t) {
return this.style = new Ui(t,this),
this.dirty(!1),
this
},
calculateTextPosition: null
},
w(Jn, _i),
b(Jn, Kn),
Qn.prototype = {
constructor: Qn,
type: "image",
brush: function(t, e) {
var i = this.style
, n = i.image;
i.bind(t, this, e);
var o = this._image = an(n, this._image, this, this.onload);
if (o && sn(o)) {
var a = i.x || 0
, r = i.y || 0
, s = i.width
, l = i.height
, u = o.width / o.height;
if (null == s && null != l ? s = l * u : null == l && null != s ? l = s / u : null == s && null == l && (s = o.width,
l = o.height),
this.setTransform(t),
i.sWidth && i.sHeight) {
var h = i.sx || 0
, c = i.sy || 0;
t.drawImage(o, h, c, i.sWidth, i.sHeight, a, r, s, l)
} else if (i.sx && i.sy) {
var d = s - (h = i.sx)
, f = l - (c = i.sy);
t.drawImage(o, h, c, d, f, a, r, s, l)
} else
t.drawImage(o, a, r, s, l);
null != i.text && (this.restoreTransform(t),
this.drawRectText(t, this.getBoundingRect()))
}
},
getBoundingRect: function() {
var t = this.style;
return this._rect || (this._rect = new Di(t.x || 0,t.y || 0,t.width || 0,t.height || 0)),
this._rect
}
},
w(Qn, Jn);
var to = 314159;
function eo(t) {
return parseInt(t, 10)
}
var io = new Di(0,0,0,0)
, no = new Di(0,0,0,0);
function oo(t, e, i) {
this.type = "canvas";
var n = !t.nodeName || "CANVAS" === t.nodeName.toUpperCase();
this._opts = i = P({}, i || {}),
this.dpr = i.devicePixelRatio || pi,
this._singleCanvas = n;
var o = (this.root = t).style;
o && (o["-webkit-tap-highlight-color"] = "transparent",
o["-webkit-user-select"] = o["user-select"] = o["-webkit-touch-callout"] = "none",
t.innerHTML = ""),
this.storage = e;
var a = this._zlevelList = []
, r = this._layers = {};
if (this._layerConfig = {},
this._needsManuallyCompositing = !1,
n) {
var s = t.width
, l = t.height;
null != i.width && (s = i.width),
null != i.height && (l = i.height),
this.dpr = i.devicePixelRatio || 1,
t.width = s * this.dpr,
t.height = l * this.dpr,
this._width = s,
this._height = l;
var u = new tn(t,this,this.dpr);
u.__builtin__ = !0,
u.initContext(),
(r[to] = u).zlevel = to,
a.push(to),
this._domRoot = t
} else {
this._width = this._getSize(0),
this._height = this._getSize(1);
var h = this._domRoot = function(t, e) {
var i = document.createElement("div");
return i.style.cssText = ["position:relative", "width:" + t + "px", "height:" + e + "px", "padding:0", "margin:0", "border-width:0"].join(";") + ";",
i
}(this._width, this._height);
t.appendChild(h)
}
this._hoverlayer = null,
this._hoverElements = []
}
oo.prototype = {
constructor: oo,
getType: function() {
return "canvas"
},
isSingleCanvas: function() {
return this._singleCanvas
},
getViewportRoot: function() {
return this._domRoot
},
getViewportRootOffset: function() {
var t = this.getViewportRoot();
if (t)
return {
offsetLeft: t.offsetLeft || 0,
offsetTop: t.offsetTop || 0
}
},
refresh: function(t) {
var e = this.storage.getDisplayList(!0)
, i = this._zlevelList;
this._redrawId = Math.random(),
this._paintList(e, t, this._redrawId);
for (var n = 0; n < i.length; n++) {
var o = i[n]
, a = this._layers[o];
if (!a.__builtin__ && a.refresh) {
var r = 0 === n ? this._backgroundColor : null;
a.refresh(r)
}
}
return this.refreshHover(),
this
},
addHover: function(t, e) {
if (!t.__hoverMir) {
var i = new t.constructor({
style: t.style,
shape: t.shape,
z: t.z,
z2: t.z2,
silent: t.silent
});
return (i.__from = t).__hoverMir = i,
e && i.setStyle(e),
this._hoverElements.push(i),
i
}
},
removeHover: function(t) {
var e = t.__hoverMir
, i = this._hoverElements
, n = _(i, e);
0 <= n && i.splice(n, 1),
t.__hoverMir = null
},
clearHover: function(t) {
for (var e = this._hoverElements, i = 0; i < e.length; i++) {
var n = e[i].__from;
n && (n.__hoverMir = null)
}
e.length = 0
},
refreshHover: function() {
var t = this._hoverElements
, e = t.length
, i = this._hoverlayer;
if (i && i.clear(),
e) {
zi(t, this.storage.displayableSortFunc);
var n = {};
(i = i || (this._hoverlayer = this.getLayer(1e5))).ctx.save();
for (var o = 0; o < e; ) {
var a = t[o]
, r = a.__from;
r && r.__zr ? (o++,
r.invisible || (a.transform = r.transform,
a.invTransform = r.invTransform,
a.__clipPaths = r.__clipPaths,
this._doPaintEl(a, i, !0, n))) : (t.splice(o, 1),
r.__hoverMir = null,
e--)
}
i.ctx.restore()
}
},
getHoverLayer: function() {
return this.getLayer(1e5)
},
_paintList: function(t, e, i) {
if (this._redrawId === i) {
e = e || !1,
this._updateLayerStatus(t);
var n = this._doPaintList(t, e);
if (this._needsManuallyCompositing && this._compositeManually(),
!n) {
var o = this;
en(function() {
o._paintList(t, e, i)
})
}
}
},
_compositeManually: function() {
var e = this.getLayer(to).ctx
, i = this._domRoot.width
, n = this._domRoot.height;
e.clearRect(0, 0, i, n),
this.eachBuiltinLayer(function(t) {
t.virtual && e.drawImage(t.dom, 0, 0, i, n)
})
},
_doPaintList: function(t, e) {
for (var i = [], n = 0; n < this._zlevelList.length; n++) {
var o = this._zlevelList[n];
(s = this._layers[o]).__builtin__ && s !== this._hoverlayer && (s.__dirty || e) && i.push(s)
}
for (var a = !0, r = 0; r < i.length; r++) {
var s, l = (s = i[r]).ctx, u = {};
l.save();
var h = e ? s.__startIndex : s.__drawIndex
, c = !e && s.incremental && Date.now
, d = c && Date.now()
, f = s.zlevel === this._zlevelList[0] ? this._backgroundColor : null;
if (s.__startIndex === s.__endIndex)
s.clear(!1, f);
else if (h === s.__startIndex) {
var p = t[h];
p.incremental && p.notClear && !e || s.clear(!1, f)
}
-1 === h && (console.error("For some unknown reason. drawIndex is -1"),
h = s.__startIndex);
for (var g = h; g < s.__endIndex; g++) {
var m = t[g];
if (this._doPaintEl(m, s, e, u),
m.__dirty = m.__dirtyText = !1,
c)
if (15 < Date.now() - d)
break
}
s.__drawIndex = g,
s.__drawIndex < s.__endIndex && (a = !1),
u.prevElClipPaths && l.restore(),
l.restore()
}
return v.wxa && E(this._layers, function(t) {
t && t.ctx && t.ctx.draw && t.ctx.draw()
}),
a
},
_doPaintEl: function(t, e, i, n) {
var o = e.ctx
, a = t.transform;
if ((e.__dirty || i) && !t.invisible && 0 !== t.style.opacity && (!a || a[0] || a[3]) && (!t.culling || !function(t, e, i) {
return io.copy(t.getBoundingRect()),
t.transform && io.applyTransform(t.transform),
no.width = e,
no.height = i,
!io.intersect(no)
}(t, this._width, this._height))) {
var r = t.__clipPaths
, s = n.prevElClipPaths;
s && !function(t, e) {
if (t === e)
return !1;
if (!t || !e || t.length !== e.length)
return !0;
for (var i = 0; i < t.length; i++)
if (t[i] !== e[i])
return !0;
return !1
}(r, s) || (s && (o.restore(),
n.prevElClipPaths = null,
n.prevEl = null),
r && (o.save(),
function(t, e) {
for (var i = 0; i < t.length; i++) {
var n = t[i];
n.setTransform(e),
e.beginPath(),
n.buildPath(e, n.shape),
e.clip(),
n.restoreTransform(e)
}
}(r, o),
n.prevElClipPaths = r)),
t.beforeBrush && t.beforeBrush(o),
t.brush(o, n.prevEl || null),
(n.prevEl = t).afterBrush && t.afterBrush(o)
}
},
getLayer: function(t, e) {
this._singleCanvas && !this._needsManuallyCompositing && (t = to);
var i = this._layers[t];
return i || ((i = new tn("zr_" + t,this,this.dpr)).zlevel = t,
i.__builtin__ = !0,
this._layerConfig[t] ? m(i, this._layerConfig[t], !0) : this._layerConfig[t - .01] && m(i, this._layerConfig[t - .01], !0),
e && (i.virtual = e),
this.insertLayer(t, i),
i.initContext()),
i
},
insertLayer: function(t, e) {
var i = this._layers
, n = this._zlevelList
, o = n.length
, a = null
, r = -1
, s = this._domRoot;
if (i[t])
vi("ZLevel " + t + " has been used already");
else if (function(t) {
return !!t && (!!t.__builtin__ || "function" == typeof t.resize && "function" == typeof t.refresh)
}(e)) {
if (0 < o && t > n[0]) {
for (r = 0; r < o - 1 && !(n[r] < t && n[r + 1] > t); r++)
;
a = i[n[r]]
}
if (n.splice(r + 1, 0, t),
!(i[t] = e).virtual)
if (a) {
var l = a.dom;
l.nextSibling ? s.insertBefore(e.dom, l.nextSibling) : s.appendChild(e.dom)
} else
s.firstChild ? s.insertBefore(e.dom, s.firstChild) : s.appendChild(e.dom)
} else
vi("Layer of zlevel " + t + " is not valid")
},
eachLayer: function(t, e) {
var i, n, o = this._zlevelList;
for (n = 0; n < o.length; n++)
i = o[n],
t.call(e, this._layers[i], i)
},
eachBuiltinLayer: function(t, e) {
var i, n, o, a = this._zlevelList;
for (o = 0; o < a.length; o++)
n = a[o],
(i = this._layers[n]).__builtin__ && t.call(e, i, n)
},
eachOtherLayer: function(t, e) {
var i, n, o, a = this._zlevelList;
for (o = 0; o < a.length; o++)
n = a[o],
(i = this._layers[n]).__builtin__ || t.call(e, i, n)
},
getLayers: function() {
return this._layers
},
_updateLayerStatus: function(t) {
function e(t) {
o && (o.__endIndex !== t && (o.__dirty = !0),
o.__endIndex = t)
}
if (this.eachBuiltinLayer(function(t, e) {
t.__dirty = t.__used = !1
}),
this._singleCanvas)
for (var i = 1; i < t.length; i++) {
if ((r = t[i]).zlevel !== t[i - 1].zlevel || r.incremental) {
this._needsManuallyCompositing = !0;
break
}
}
var n, o = null, a = 0;
for (i = 0; i < t.length; i++) {
var r, s, l = (r = t[i]).zlevel;
n !== l && (n = l,
a = 0),
r.incremental ? ((s = this.getLayer(l + .001, this._needsManuallyCompositing)).incremental = !0,
a = 1) : s = this.getLayer(l + (0 < a ? .01 : 0), this._needsManuallyCompositing),
s.__builtin__ || vi("ZLevel " + l + " has been used by unkown layer " + s.id),
s !== o && (s.__used = !0,
s.__startIndex !== i && (s.__dirty = !0),
s.__startIndex = i,
s.incremental ? s.__drawIndex = -1 : s.__drawIndex = i,
e(i),
o = s),
r.__dirty && (s.__dirty = !0,
s.incremental && s.__drawIndex < 0 && (s.__drawIndex = i))
}
e(i),
this.eachBuiltinLayer(function(t, e) {
!t.__used && 0 < t.getElementCount() && (t.__dirty = !0,
t.__startIndex = t.__endIndex = t.__drawIndex = 0),
t.__dirty && t.__drawIndex < 0 && (t.__drawIndex = t.__startIndex)
})
},
clear: function() {
return this.eachBuiltinLayer(this._clearLayer),
this
},
_clearLayer: function(t) {
t.clear()
},
setBackgroundColor: function(t) {
this._backgroundColor = t
},
configLayer: function(t, e) {
if (e) {
var i = this._layerConfig;
i[t] ? m(i[t], e, !0) : i[t] = e;
for (var n = 0; n < this._zlevelList.length; n++) {
var o = this._zlevelList[n];
if (o === t || o === t + .01)
m(this._layers[o], i[t], !0)
}
}
},
delLayer: function(t) {
var e = this._layers
, i = this._zlevelList
, n = e[t];
n && (n.dom.parentNode.removeChild(n.dom),
delete e[t],
i.splice(_(i, t), 1))
},
resize: function(e, i) {
if (this._domRoot.style) {
var t = this._domRoot;
t.style.display = "none";
var n = this._opts;
if (null != e && (n.width = e),
null != i && (n.height = i),
e = this._getSize(0),
i = this._getSize(1),
t.style.display = "",
this._width !== e || i !== this._height) {
for (var o in t.style.width = e + "px",
t.style.height = i + "px",
this._layers)
this._layers.hasOwnProperty(o) && this._layers[o].resize(e, i);
E(this._progressiveLayers, function(t) {
t.resize(e, i)
}),
this.refresh(!0)
}
this._width = e,
this._height = i
} else {
if (null == e || null == i)
return;
this._width = e,
this._height = i,
this.getLayer(to).resize(e, i)
}
return this
},
clearLayer: function(t) {
var e = this._layers[t];
e && e.clear()
},
dispose: function() {
this.root.innerHTML = "",
this.root = this.storage = this._domRoot = this._layers = null
},
getRenderedCanvas: function(t) {
if (t = t || {},
this._singleCanvas && !this._compositeManually)
return this._layers[to].dom;
var e = new tn("image",this,t.pixelRatio || this.dpr);
if (e.initContext(),
e.clear(!1, t.backgroundColor || this._backgroundColor),
t.pixelRatio <= this.dpr) {
this.refresh();
var i = e.dom.width
, n = e.dom.height
, o = e.ctx;
this.eachLayer(function(t) {
t.__builtin__ ? o.drawImage(t.dom, 0, 0, i, n) : t.renderToCanvas && (e.ctx.save(),
t.renderToCanvas(e.ctx),
e.ctx.restore())
})
} else
for (var a = {}, r = this.storage.getDisplayList(!0), s = 0; s < r.length; s++) {
var l = r[s];
this._doPaintEl(l, e, !0, a)
}
return e.dom
},
getWidth: function() {
return this._width
},
getHeight: function() {
return this._height
},
_getSize: function(t) {
var e = this._opts
, i = ["width", "height"][t]
, n = ["clientWidth", "clientHeight"][t]
, o = ["paddingLeft", "paddingTop"][t]
, a = ["paddingRight", "paddingBottom"][t];
if (null != e[i] && "auto" !== e[i])
return parseFloat(e[i]);
var r = this.root
, s = document.defaultView.getComputedStyle(r);
return (r[n] || eo(s[i]) || eo(r.style[i])) - (eo(s[o]) || 0) - (eo(s[a]) || 0) | 0
},
pathToImage: function(t, e) {
e = e || this.dpr;
var i = document.createElement("canvas")
, n = i.getContext("2d")
, o = t.getBoundingRect()
, a = t.style
, r = a.shadowBlur * e
, s = a.shadowOffsetX * e
, l = a.shadowOffsetY * e
, u = a.hasStroke() ? a.lineWidth : 0
, h = Math.max(u / 2, r - s)
, c = Math.max(u / 2, s + r)
, d = Math.max(u / 2, r - l)
, f = Math.max(u / 2, l + r)
, p = o.width + h + c
, g = o.height + d + f;
i.width = p * e,
i.height = g * e,
n.scale(e, e),
n.clearRect(0, 0, p, g),
n.dpr = e;
var m = {
position: t.position,
rotation: t.rotation,
scale: t.scale
};
t.position = [h - o.x, d - o.y],
t.rotation = 0,
t.scale = [1, 1],
t.updateTransform(),
t && t.brush(n);
var v = new Qn({
style: {
x: 0,
y: 0,
image: i
}
});
return null != m.position && (v.position = t.position = m.position),
null != m.rotation && (v.rotation = t.rotation = m.rotation),
null != m.scale && (v.scale = t.scale = m.scale),
v
}
};
function ao(t) {
t = t || {},
this.stage = t.stage || {},
this.onframe = t.onframe || function() {}
,
this._clips = [],
this._running = !1,
this._time,
this._pausedTime,
this._pauseStart,
this._paused = !1,
Ct.call(this)
}
ao.prototype = {
constructor: ao,
addClip: function(t) {
this._clips.push(t)
},
addAnimator: function(t) {
t.animation = this;
for (var e = t.getClips(), i = 0; i < e.length; i++)
this.addClip(e[i])
},
removeClip: function(t) {
var e = _(this._clips, t);
0 <= e && this._clips.splice(e, 1)
},
removeAnimator: function(t) {
for (var e = t.getClips(), i = 0; i < e.length; i++)
this.removeClip(e[i]);
t.animation = null
},
_update: function() {
for (var t = (new Date).getTime() - this._pausedTime, e = t - this._time, i = this._clips, n = i.length, o = [], a = [], r = 0; r < n; r++) {
var s = i[r]
, l = s.step(t, e);
l && (o.push(l),
a.push(s))
}
for (r = 0; r < n; )
i[r]._needsRemove ? (i[r] = i[n - 1],
i.pop(),
n--) : r++;
n = o.length;
for (r = 0; r < n; r++)
a[r].fire(o[r]);
this._time = t,
this.onframe(e),
this.trigger("frame", e),
this.stage.update && this.stage.update()
},
_startLoop: function() {
var e = this;
this._running = !0,
en(function t() {
e._running && (en(t),
e._paused || e._update())
})
},
start: function() {
this._time = (new Date).getTime(),
this._pausedTime = 0,
this._startLoop()
},
stop: function() {
this._running = !1
},
pause: function() {
this._paused || (this._pauseStart = (new Date).getTime(),
this._paused = !0)
},
resume: function() {
this._paused && (this._pausedTime += (new Date).getTime() - this._pauseStart,
this._paused = !1)
},
clear: function() {
this._clips = []
},
isFinished: function() {
return !this._clips.length
},
animate: function(t, e) {
var i = new di(t,(e = e || {}).loop,e.getter,e.setter);
return this.addAnimator(i),
i
}
},
b(ao, Ct);
var ro, so, lo = v.domSupported, uo = (so = {
pointerdown: 1,
pointerup: 1,
pointermove: 1,
pointerout: 1
},
{
mouse: ro = ["click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu"],
touch: ["touchstart", "touchend", "touchmove"],
pointer: O(ro, function(t) {
var e = t.replace("mouse", "pointer");
return so.hasOwnProperty(e) ? e : t
})
}), ho = {
mouse: ["mousemove", "mouseup"],
pointer: ["pointermove", "pointerup"]
};
function co(t) {
return "mousewheel" === t && v.browser.firefox ? "DOMMouseScroll" : t
}
function fo(t) {
var e = t.pointerType;
return "pen" === e || "touch" === e
}
function po(t) {
t && (t.zrByTouch = !0)
}
function go(t, e) {
for (var i = e, n = !1; i && 9 !== i.nodeType && !(n = i.domBelongToZr || i !== e && i === t.painterRoot); )
i = i.parentNode;
return n
}
function mo(t, e) {
this.type = e.type,
this.target = this.currentTarget = t.dom,
this.pointerType = e.pointerType,
this.clientX = e.clientX,
this.clientY = e.clientY
}
var vo = mo.prototype;
vo.stopPropagation = vo.stopImmediatePropagation = vo.preventDefault = et;
var yo = {
mousedown: function(t) {
t = Zt(this.dom, t),
this._mayPointerCapture = [t.zrX, t.zrY],
this.trigger("mousedown", t)
},
mousemove: function(t) {
t = Zt(this.dom, t);
var e = this._mayPointerCapture;
!e || t.zrX === e[0] && t.zrY === e[1] || Mo(this, !0),
this.trigger("mousemove", t)
},
mouseup: function(t) {
t = Zt(this.dom, t),
Mo(this, !1),
this.trigger("mouseup", t)
},
mouseout: function(t) {
t = Zt(this.dom, t),
this._pointerCapturing && (t.zrEventControl = "no_globalout");
var e = t.toElement || t.relatedTarget;
t.zrIsToLocalDOM = go(this, e),
this.trigger("mouseout", t)
},
touchstart: function(t) {
po(t = Zt(this.dom, t)),
this._lastTouchMoment = new Date,
this.handler.processGesture(t, "start"),
yo.mousemove.call(this, t),
yo.mousedown.call(this, t)
},
touchmove: function(t) {
po(t = Zt(this.dom, t)),
this.handler.processGesture(t, "change"),
yo.mousemove.call(this, t)
},
touchend: function(t) {
po(t = Zt(this.dom, t)),
this.handler.processGesture(t, "end"),
yo.mouseup.call(this, t),
+new Date - this._lastTouchMoment < 300 && yo.click.call(this, t)
},
pointerdown: function(t) {
yo.mousedown.call(this, t)
},
pointermove: function(t) {
fo(t) || yo.mousemove.call(this, t)
},
pointerup: function(t) {
yo.mouseup.call(this, t)
},
pointerout: function(t) {
fo(t) || yo.mouseout.call(this, t)
}
};
E(["click", "mousewheel", "dblclick", "contextmenu"], function(e) {
yo[e] = function(t) {
t = Zt(this.dom, t),
this.trigger(e, t)
}
});
var xo = {
pointermove: function(t) {
fo(t) || xo.mousemove.call(this, t)
},
pointerup: function(t) {
xo.mouseup.call(this, t)
},
mousemove: function(t) {
this.trigger("mousemove", t)
},
mouseup: function(t) {
var e = this._pointerCapturing;
Mo(this, !1),
this.trigger("mouseup", t),
e && (t.zrEventControl = "only_globalout",
this.trigger("mouseout", t))
}
};
function _o(i, n) {
var o = n.domHandlers;
v.pointerEventsSupported ? E(uo.pointer, function(e) {
bo(n, e, function(t) {
o[e].call(i, t)
})
}) : (v.touchEventsSupported && E(uo.touch, function(e) {
bo(n, e, function(t) {
o[e].call(i, t),
function(t) {
t.touching = !0,
null != t.touchTimer && (clearTimeout(t.touchTimer),
t.touchTimer = null),
t.touchTimer = setTimeout(function() {
t.touching = !1,
t.touchTimer = null
}, 700)
}(n)
})
}),
E(uo.mouse, function(e) {
bo(n, e, function(t) {
t = Ht(t),
n.touching || o[e].call(i, t)
})
}))
}
function wo(i, n) {
function t(e) {
bo(n, e, function(t) {
t = Ht(t),
go(i, t.target) || (t = function(t, e) {
return Zt(t.dom, new mo(t,e), !0)
}(i, t),
n.domHandlers[e].call(i, t))
}, {
capture: !0
})
}
v.pointerEventsSupported ? E(ho.pointer, t) : v.touchEventsSupported || E(ho.mouse, t)
}
function bo(t, e, i, n) {
t.mounted[e] = i,
t.listenerOpts[e] = n,
Ut(t.domTarget, co(e), i, n)
}
function So(t) {
var e, i, n, o, a = t.mounted;
for (var r in a)
a.hasOwnProperty(r) && (e = t.domTarget,
i = co(r),
n = a[r],
o = t.listenerOpts[r],
Bt ? e.removeEventListener(i, n, o) : e.detachEvent("on" + i, n));
t.mounted = {}
}
function Mo(t, e) {
if (t._mayPointerCapture = null,
lo && t._pointerCapturing ^ e) {
t._pointerCapturing = e;
var i = t._globalHandlerScope;
e ? wo(t, i) : So(i)
}
}
function Io(t, e) {
this.domTarget = t,
this.domHandlers = e,
this.mounted = {},
this.listenerOpts = {},
this.touchTimer = null,
this.touching = !1
}
function To(t, e) {
Ct.call(this),
this.dom = t,
this.painterRoot = e,
this._localHandlerScope = new Io(t,yo),
lo && (this._globalHandlerScope = new Io(document,xo)),
this._pointerCapturing = !1,
this._mayPointerCapture = null,
_o(this, this._localHandlerScope)
}
var Ao = To.prototype;
Ao.dispose = function() {
So(this._localHandlerScope),
lo && So(this._globalHandlerScope)
}
,
Ao.setCursor = function(t) {
this.dom.style && (this.dom.style.cursor = t || "default")
}
,
b(To, Ct);
var Do = !v.canvasSupported
, Co = {
canvas: oo
}
, Lo = {};
function ko(t, e) {
var i = new No(n(),t,e);
return Lo[i.id] = i
}
function Po(t, e) {
Co[t] = e
}
var No = function(t, e, i) {
i = i || {},
this.dom = e,
this.id = t;
var n = this
, o = new Vi
, a = i.renderer;
if (Do) {
if (!Co.vml)
throw new Error("You need to require 'zrender/vml/vml' to support IE8");
a = "vml"
} else
a && Co[a] || (a = "canvas");
var r = new Co[a](e,o,i,t);
this.storage = o,
this.painter = r;
var s = v.node || v.worker ? null : new To(r.getViewportRoot(),r.root);
this.handler = new te(o,r,s,r.root),
this.animation = new ao({
stage: {
update: A(this.flush, this)
}
}),
this.animation.start(),
this._needsRefresh;
var l = o.delFromStorage
, u = o.addToStorage;
o.delFromStorage = function(t) {
l.call(o, t),
t && t.removeSelfFromZr(n)
}
,
o.addToStorage = function(t) {
u.call(o, t),
t.addSelfToZr(n)
}
};
No.prototype = {
constructor: No,
getId: function() {
return this.id
},
add: function(t) {
this.storage.addRoot(t),
this._needsRefresh = !0
},
remove: function(t) {
this.storage.delRoot(t),
this._needsRefresh = !0
},
configLayer: function(t, e) {
this.painter.configLayer && this.painter.configLayer(t, e),
this._needsRefresh = !0
},
setBackgroundColor: function(t) {
this.painter.setBackgroundColor && this.painter.setBackgroundColor(t),
this._needsRefresh = !0
},
refreshImmediately: function() {
this._needsRefresh = this._needsRefreshHover = !1,
this.painter.refresh(),
this._needsRefresh = this._needsRefreshHover = !1
},
refresh: function() {
this._needsRefresh = !0
},
flush: function() {
var t;
this._needsRefresh && (t = !0,
this.refreshImmediately()),
this._needsRefreshHover && (t = !0,
this.refreshHoverImmediately()),
t && this.trigger("rendered")
},
addHover: function(t, e) {
if (this.painter.addHover) {
var i = this.painter.addHover(t, e);
return this.refreshHover(),
i
}
},
removeHover: function(t) {
this.painter.removeHover && (this.painter.removeHover(t),
this.refreshHover())
},
clearHover: function() {
this.painter.clearHover && (this.painter.clearHover(),
this.refreshHover())
},
refreshHover: function() {
this._needsRefreshHover = !0
},
refreshHoverImmediately: function() {
this._needsRefreshHover = !1,
this.painter.refreshHover && this.painter.refreshHover()
},
resize: function(t) {
t = t || {},
this.painter.resize(t.width, t.height),
this.handler.resize()
},
clearAnimation: function() {
this.animation.clear()
},
getWidth: function() {
return this.painter.getWidth()
},
getHeight: function() {
return this.painter.getHeight()
},
pathToImage: function(t, e) {
return this.painter.pathToImage(t, e)
},
setCursorStyle: function(t) {
this.handler.setCursorStyle(t)
},
findHover: function(t, e) {
return this.handler.findHover(t, e)
},
on: function(t, e, i) {
this.handler.on(t, e, i)
},
off: function(t, e) {
this.handler.off(t, e)
},
trigger: function(t, e) {
this.handler.trigger(t, e)
},
clear: function() {
this.storage.delRoot(),
this.painter.clear()
},
dispose: function() {
this.animation.stop(),
this.clear(),
this.storage.dispose(),
this.painter.dispose(),
this.handler.dispose(),
this.animation = this.storage = this.painter = this.handler = null,
function(t) {
delete Lo[t]
}(this.id)
}
};
var Oo = (Object.freeze || Object)({
version: "4.3.1",
init: ko,
dispose: function(t) {
if (t)
t.dispose();
else {
for (var e in Lo)
Lo.hasOwnProperty(e) && Lo[e].dispose();
Lo = {}
}
return this
},
getInstance: function(t) {
return Lo[t]
},
registerPainter: Po
})
, Eo = E
, Ro = z
, zo = L
, Bo = "series\0";
function Vo(t) {
return t instanceof Array ? t : null == t ? [] : [t]
}
function Go(t, e, i) {
if (t) {
t[e] = t[e] || {},
t.emphasis = t.emphasis || {},
t.emphasis[e] = t.emphasis[e] || {};
for (var n = 0, o = i.length; n < o; n++) {
var a = i[n];
!t.emphasis[e].hasOwnProperty(a) && t[e].hasOwnProperty(a) && (t.emphasis[e][a] = t[e][a])
}
}
}
var Fo = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "rich", "tag", "color", "textBorderColor", "textBorderWidth", "width", "height", "lineHeight", "align", "verticalAlign", "baseline", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY", "backgroundColor", "borderColor", "borderWidth", "borderRadius", "padding"];
function Wo(t) {
return !Ro(t) || zo(t) || t instanceof Date ? t : t.value
}
function Ho(t, o) {
o = (o || []).slice();
var a = O(t || [], function(t, e) {
return {
exist: t
}
});
return Eo(o, function(t, e) {
if (Ro(t)) {
for (var i = 0; i < a.length; i++)
if (!a[i].option && null != t.id && a[i].exist.id === t.id + "")
return a[i].option = t,
void (o[e] = null);
for (i = 0; i < a.length; i++) {
var n = a[i].exist;
if (!(a[i].option || null != n.id && null != t.id || null == t.name || Xo(t) || Xo(n) || n.name !== t.name + ""))
return a[i].option = t,
void (o[e] = null)
}
}
}),
Eo(o, function(t, e) {
if (Ro(t)) {
for (var i = 0; i < a.length; i++) {
var n = a[i].exist;
if (!a[i].option && !Xo(n) && null == t.id) {
a[i].option = t;
break
}
}
i >= a.length && a.push({
option: t
})
}
}),
a
}
function Zo(t) {
var r = Q();
Eo(t, function(t, e) {
var i = t.exist;
i && r.set(i.id, t)
}),
Eo(t, function(t, e) {
var i = t.option;
Y(!i || null == i.id || !r.get(i.id) || r.get(i.id) === t, "id duplicates: " + (i && i.id)),
i && null != i.id && r.set(i.id, t),
t.keyInfo || (t.keyInfo = {})
}),
Eo(t, function(t, e) {
var i = t.exist
, n = t.option
, o = t.keyInfo;
if (Ro(n)) {
if (o.name = null != n.name ? n.name + "" : i ? i.name : Bo + e,
i)
o.id = i.id;
else if (null != n.id)
o.id = n.id + "";
else
for (var a = 0; o.id = "\0" + o.name + "\0" + a++,
r.get(o.id); )
;
r.set(o.id, t)
}
})
}
function Uo(t) {
var e = t.name;
return !(!e || !e.indexOf(Bo))
}
function Xo(t) {
return Ro(t) && t.id && 0 === (t.id + "").indexOf("\0_ec_\0")
}
function Yo(e, t) {
return null != t.dataIndexInside ? t.dataIndexInside : null != t.dataIndex ? L(t.dataIndex) ? O(t.dataIndex, function(t) {
return e.indexOfRawIndex(t)
}) : e.indexOfRawIndex(t.dataIndex) : null != t.name ? L(t.name) ? O(t.name, function(t) {
return e.indexOfName(t)
}) : e.indexOfName(t.name) : void 0
}
function jo() {
var e = "__\0ec_inner_" + qo++ + "_" + Math.random().toFixed(5);
return function(t) {
return t[e] || (t[e] = {})
}
}
var qo = 0;
function Ko(s, l, u) {
if (R(l)) {
var t = {};
t[l + "Index"] = 0,
l = t
}
var e = u && u.defaultMainType;
!e || $o(l, e + "Index") || $o(l, e + "Id") || $o(l, e + "Name") || (l[e + "Index"] = 0);
var h = {};
return Eo(l, function(t, e) {
t = l[e];
if ("dataIndex" !== e && "dataIndexInside" !== e) {
var i = e.match(/^(\w+)(Index|Id|Name)$/) || []
, n = i[1]
, o = (i[2] || "").toLowerCase();
if (!(!n || !o || null == t || "index" === o && "none" === t || u && u.includeMainTypes && _(u.includeMainTypes, n) < 0)) {
var a = {
mainType: n
};
"index" === o && "all" === t || (a[o] = t);
var r = s.queryComponents(a);
h[n + "Models"] = r,
h[n + "Model"] = r[0]
}
} else
h[e] = t
}),
h
}
function $o(t, e) {
return t && t.hasOwnProperty(e)
}
function Jo(t, e, i) {
t.setAttribute ? t.setAttribute(e, i) : t[e] = i
}
function Qo(t) {
return "auto" === t ? v.domSupported ? "html" : "richText" : t || "html"
}
function ta(t, i) {
var n = Q()
, o = [];
return E(t, function(t) {
var e = i(t);
(n.get(e) || (o.push(e),
n.set(e, []))).push(t)
}),
{
keys: o,
buckets: n
}
}
var ea = "."
, ia = "___EC__COMPONENT__CONTAINER___";
function na(t) {
var e = {
main: "",
sub: ""
};
return t && (t = t.split(ea),
e.main = t[0] || "",
e.sub = t[1] || ""),
e
}
function oa(t) {
(t.$constructor = t).extend = function(t) {
function e() {
t.$constructor ? t.$constructor.apply(this, arguments) : i.apply(this, arguments)
}
var i = this;
return P(e.prototype, t),
e.extend = this.extend,
e.superCall = sa,
e.superApply = la,
w(e, this),
e.superClass = i,
e
}
}
var aa = 0;
function ra(t) {
var e = ["__\0is_clz", aa++, Math.random().toFixed(3)].join("_");
t.prototype[e] = !0,
t.isInstance = function(t) {
return !(!t || !t[e])
}
}
function sa(t, e) {
var i = U(arguments, 2);
return this.superClass.prototype[e].apply(t, i)
}
function la(t, e, i) {
return this.superClass.prototype[e].apply(t, i)
}
function ua(i, t) {
t = t || {};
var o = {};
if (i.registerClass = function(t, e) {
if (e)
if (function(t) {
Y(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t), 'componentType "' + t + '" illegal')
}(e),
(e = na(e)).sub) {
if (e.sub !== ia) {
(function(t) {
var e = o[t.main];
e && e[ia] || ((e = o[t.main] = {})[ia] = !0);
return e
}
)(e)[e.sub] = t
}
} else
o[e.main] = t;
return t
}
,
i.getClass = function(t, e, i) {
var n = o[t];
if (n && n[ia] && (n = e ? n[e] : null),
i && !n)
throw new Error(e ? "Component " + t + "." + (e || "") + " not exists. Load it first." : t + ".type should be specified.");
return n
}
,
i.getClassesByMainType = function(t) {
t = na(t);
var i = []
, e = o[t.main];
return e && e[ia] ? E(e, function(t, e) {
e !== ia && i.push(t)
}) : i.push(e),
i
}
,
i.hasClass = function(t) {
return t = na(t),
!!o[t.main]
}
,
i.getAllClassMainTypes = function() {
var i = [];
return E(o, function(t, e) {
i.push(e)
}),
i
}
,
i.hasSubTypes = function(t) {
t = na(t);
var e = o[t.main];
return e && e[ia]
}
,
i.parseClassType = na,
t.registerWhenExtend) {
var n = i.extend;
n && (i.extend = function(t) {
var e = n.call(this, t);
return i.registerClass(e, t.type)
}
)
}
return i
}
function ha(s) {
for (var t = 0; t < s.length; t++)
s[t][1] || (s[t][1] = s[t][0]);
return function(t, e, i) {
for (var n = {}, o = 0; o < s.length; o++) {
var a = s[o][1];
if (!(e && 0 <= _(e, a) || i && _(i, a) < 0)) {
var r = t.getShallow(a);
null != r && (n[s[o][0]] = r)
}
}
return n
}
}
var ca = ha([["lineWidth", "width"], ["stroke", "color"], ["opacity"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["shadowColor"]])
, da = {
getLineStyle: function(t) {
var e = ca(this, t);
return e.lineDash = this.getLineDash(e.lineWidth),
e
},
getLineDash: function(t) {
null == t && (t = 1);
var e = this.get("type")
, i = Math.max(t, 2)
, n = 4 * t;
return "solid" !== e && null != e && ("dashed" === e ? [n, n] : [i, i])
}
}
, fa = ha([["fill", "color"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["opacity"], ["shadowColor"]])
, pa = {
getAreaStyle: function(t, e) {
return fa(this, t, e)
}
}
, ga = Math.pow
, ma = Math.sqrt
, va = 1e-8
, ya = 1e-4
, xa = ma(3)
, _a = 1 / 3
, wa = ot()
, ba = ot()
, Sa = ot();
function Ma(t) {
return -va < t && t < va
}
function Ia(t) {
return va < t || t < -va
}
function Ta(t, e, i, n, o) {
var a = 1 - o;
return a * a * (a * t + 3 * o * e) + o * o * (o * n + 3 * a * i)
}
function Aa(t, e, i, n, o) {
var a = 1 - o;
return 3 * (((e - t) * a + 2 * (i - e) * o) * a + (n - i) * o * o)
}
function Da(t, e, i, n, o) {
var a = 6 * i - 12 * e + 6 * t
, r = 9 * e + 3 * n - 3 * t - 9 * i
, s = 3 * e - 3 * t
, l = 0;
if (Ma(r)) {
if (Ia(a))
0 <= (h = -s / a) && h <= 1 && (o[l++] = h)
} else {
var u = a * a - 4 * r * s;
if (Ma(u))
o[0] = -a / (2 * r);
else if (0 < u) {
var h, c = ma(u), d = (-a - c) / (2 * r);
0 <= (h = (-a + c) / (2 * r)) && h <= 1 && (o[l++] = h),
0 <= d && d <= 1 && (o[l++] = d)
}
}
return l
}
function Ca(t, e, i, n, o, a) {
var r = (e - t) * o + t
, s = (i - e) * o + e
, l = (n - i) * o + i
, u = (s - r) * o + r
, h = (l - s) * o + s
, c = (h - u) * o + u;
a[0] = t,
a[1] = r,
a[2] = u,
a[3] = c,
a[4] = c,
a[5] = h,
a[6] = l,
a[7] = n
}
function La(t, e, i, n) {
var o = 1 - n;
return o * (o * t + 2 * n * e) + n * n * i
}
function ka(t, e, i, n) {
return 2 * ((1 - n) * (e - t) + n * (i - e))
}
function Pa(t, e, i) {
var n = t + i - 2 * e;
return 0 == n ? .5 : (t - e) / n
}
function Na(t, e, i, n, o) {
var a = (e - t) * n + t
, r = (i - e) * n + e
, s = (r - a) * n + a;
o[0] = t,
o[1] = a,
o[2] = s,
o[3] = s,
o[4] = r,
o[5] = i
}
var Oa = Math.min
, Ea = Math.max
, Ra = Math.sin
, za = Math.cos
, Ba = 2 * Math.PI
, Va = ot()
, Ga = ot()
, Fa = ot();
function Wa(t, e, i) {
if (0 !== t.length) {
var n, o = t[0], a = o[0], r = o[0], s = o[1], l = o[1];
for (n = 1; n < t.length; n++)
o = t[n],
a = Oa(a, o[0]),
r = Ea(r, o[0]),
s = Oa(s, o[1]),
l = Ea(l, o[1]);
e[0] = a,
e[1] = s,
i[0] = r,
i[1] = l
}
}
function Ha(t, e, i, n, o, a) {
o[0] = Oa(t, i),
o[1] = Oa(e, n),
a[0] = Ea(t, i),
a[1] = Ea(e, n)
}
var Za = []
, Ua = [];
function Xa(t, e, i, n, o, a, r, s, l, u) {
var h, c = Da, d = Ta, f = c(t, i, o, r, Za);
for (l[0] = 1 / 0,
l[1] = 1 / 0,
u[0] = -1 / 0,
u[1] = -1 / 0,
h = 0; h < f; h++) {
var p = d(t, i, o, r, Za[h]);
l[0] = Oa(p, l[0]),
u[0] = Ea(p, u[0])
}
for (f = c(e, n, a, s, Ua),
h = 0; h < f; h++) {
var g = d(e, n, a, s, Ua[h]);
l[1] = Oa(g, l[1]),
u[1] = Ea(g, u[1])
}
l[0] = Oa(t, l[0]),
u[0] = Ea(t, u[0]),
l[0] = Oa(r, l[0]),
u[0] = Ea(r, u[0]),
l[1] = Oa(e, l[1]),
u[1] = Ea(e, u[1]),
l[1] = Oa(s, l[1]),
u[1] = Ea(s, u[1])
}
function Ya(t, e, i, n, o, a, r, s, l) {
var u = St
, h = Mt
, c = Math.abs(o - a);
if (c % Ba < 1e-4 && 1e-4 < c)
return s[0] = t - i,
s[1] = e - n,
l[0] = t + i,
void (l[1] = e + n);
if (Va[0] = za(o) * i + t,
Va[1] = Ra(o) * n + e,
Ga[0] = za(a) * i + t,
Ga[1] = Ra(a) * n + e,
u(s, Va, Ga),
h(l, Va, Ga),
(o %= Ba) < 0 && (o += Ba),
(a %= Ba) < 0 && (a += Ba),
a < o && !r ? a += Ba : o < a && r && (o += Ba),
r) {
var d = a;
a = o,
o = d
}
for (var f = 0; f < a; f += Math.PI / 2)
o < f && (Fa[0] = za(f) * i + t,
Fa[1] = Ra(f) * n + e,
u(s, Fa, s),
h(l, Fa, l))
}
var ja = {
M: 1,
L: 2,
C: 3,
Q: 4,
A: 5,
Z: 6,
R: 7
}
, qa = []
, Ka = []
, $a = []
, Ja = []
, Qa = Math.min
, tr = Math.max
, er = Math.cos
, ir = Math.sin
, nr = Math.sqrt
, or = Math.abs
, ar = "undefined" != typeof Float32Array
, rr = function(t) {
this._saveData = !t,
this._saveData && (this.data = []),
this._ctx = null
};
function sr(t, e, i, n, o, a, r) {
if (0 === o)
return !1;
var s = o
, l = 0;
if (e + s < r && n + s < r || r < e - s && r < n - s || t + s < a && i + s < a || a < t - s && a < i - s)
return !1;
if (t === i)
return Math.abs(a - t) <= s / 2;
var u = (l = (e - n) / (t - i)) * a - r + (t * n - i * e) / (t - i);
return u * u / (l * l + 1) <= s / 2 * s / 2
}
function lr(t, e, i, n, o, a, r, s, l, u, h) {
if (0 === l)
return !1;
var c = l;
return !(e + c < h && n + c < h && a + c < h && s + c < h || h < e - c && h < n - c && h < a - c && h < s - c || t + c < u && i + c < u && o + c < u && r + c < u || u < t - c && u < i - c && u < o - c && u < r - c) && function(t, e, i, n, o, a, r, s, l, u, h) {
var c, d, f, p, g, m = .005, v = 1 / 0;
wa[0] = l,
wa[1] = u;
for (var y = 0; y < 1; y += .05)
ba[0] = Ta(t, i, o, r, y),
ba[1] = Ta(e, n, a, s, y),
(p = _t(wa, ba)) < v && (c = y,
v = p);
v = 1 / 0;
for (var x = 0; x < 32 && !(m < ya); x++)
d = c - m,
f = c + m,
ba[0] = Ta(t, i, o, r, d),
ba[1] = Ta(e, n, a, s, d),
p = _t(ba, wa),
0 <= d && p < v ? (c = d,
v = p) : (Sa[0] = Ta(t, i, o, r, f),
Sa[1] = Ta(e, n, a, s, f),
g = _t(Sa, wa),
f <= 1 && g < v ? (c = f,
v = g) : m *= .5);
return h && (h[0] = Ta(t, i, o, r, c),
h[1] = Ta(e, n, a, s, c)),
ma(v)
}(t, e, i, n, o, a, r, s, u, h, null) <= c / 2
}
function ur(t, e, i, n, o, a, r, s, l) {
if (0 === r)
return !1;
var u = r;
return !(e + u < l && n + u < l && a + u < l || l < e - u && l < n - u && l < a - u || t + u < s && i + u < s && o + u < s || s < t - u && s < i - u && s < o - u) && function(t, e, i, n, o, a, r, s, l) {
var u, h = .005, c = 1 / 0;
wa[0] = r,
wa[1] = s;
for (var d = 0; d < 1; d += .05) {
ba[0] = La(t, i, o, d),
ba[1] = La(e, n, a, d),
(m = _t(wa, ba)) < c && (u = d,
c = m)
}
c = 1 / 0;
for (var f = 0; f < 32 && !(h < ya); f++) {
var p = u - h
, g = u + h;
ba[0] = La(t, i, o, p),
ba[1] = La(e, n, a, p);
var m = _t(ba, wa);
if (0 <= p && m < c)
u = p,
c = m;
else {
Sa[0] = La(t, i, o, g),
Sa[1] = La(e, n, a, g);
var v = _t(Sa, wa);
g <= 1 && v < c ? (u = g,
c = v) : h *= .5
}
}
return l && (l[0] = La(t, i, o, u),
l[1] = La(e, n, a, u)),
ma(c)
}(t, e, i, n, o, a, s, l, null) <= u / 2
}
rr.prototype = {
constructor: rr,
_xi: 0,
_yi: 0,
_x0: 0,
_y0: 0,
_ux: 0,
_uy: 0,
_len: 0,
_lineDash: null,
_dashOffset: 0,
_dashIdx: 0,
_dashSum: 0,
setScale: function(t, e, i) {
i = i || 0,
this._ux = or(i / pi / t) || 0,
this._uy = or(i / pi / e) || 0
},
getContext: function() {
return this._ctx
},
beginPath: function(t) {
return (this._ctx = t) && t.beginPath(),
t && (this.dpr = t.dpr),
this._saveData && (this._len = 0),
this._lineDash && (this._lineDash = null,
this._dashOffset = 0),
this
},
moveTo: function(t, e) {
return this.addData(ja.M, t, e),
this._ctx && this._ctx.moveTo(t, e),
this._x0 = t,
this._y0 = e,
this._xi = t,
this._yi = e,
this
},
lineTo: function(t, e) {
var i = or(t - this._xi) > this._ux || or(e - this._yi) > this._uy || this._len < 5;
return this.addData(ja.L, t, e),
this._ctx && i && (this._needsDash() ? this._dashedLineTo(t, e) : this._ctx.lineTo(t, e)),
i && (this._xi = t,
this._yi = e),
this
},
bezierCurveTo: function(t, e, i, n, o, a) {
return this.addData(ja.C, t, e, i, n, o, a),
this._ctx && (this._needsDash() ? this._dashedBezierTo(t, e, i, n, o, a) : this._ctx.bezierCurveTo(t, e, i, n, o, a)),
this._xi = o,
this._yi = a,
this
},
quadraticCurveTo: function(t, e, i, n) {
return this.addData(ja.Q, t, e, i, n),
this._ctx && (this._needsDash() ? this._dashedQuadraticTo(t, e, i, n) : this._ctx.quadraticCurveTo(t, e, i, n)),
this._xi = i,
this._yi = n,
this
},
arc: function(t, e, i, n, o, a) {
return this.addData(ja.A, t, e, i, i, n, o - n, 0, a ? 0 : 1),
this._ctx && this._ctx.arc(t, e, i, n, o, a),
this._xi = er(o) * i + t,
this._yi = ir(o) * i + e,
this
},
arcTo: function(t, e, i, n, o) {
return this._ctx && this._ctx.arcTo(t, e, i, n, o),
this
},
rect: function(t, e, i, n) {
return this._ctx && this._ctx.rect(t, e, i, n),
this.addData(ja.R, t, e, i, n),
this
},
closePath: function() {
this.addData(ja.Z);
var t = this._ctx
, e = this._x0
, i = this._y0;
return t && (this._needsDash() && this._dashedLineTo(e, i),
t.closePath()),
this._xi = e,
this._yi = i,
this
},
fill: function(t) {
t && t.fill(),
this.toStatic()
},
stroke: function(t) {
t && t.stroke(),
this.toStatic()
},
setLineDash: function(t) {
if (t instanceof Array) {
this._lineDash = t;
for (var e = this._dashIdx = 0, i = 0; i < t.length; i++)
e += t[i];
this._dashSum = e
}
return this
},
setLineDashOffset: function(t) {
return this._dashOffset = t,
this
},
len: function() {
return this._len
},
setData: function(t) {
var e = t.length;
this.data && this.data.length === e || !ar || (this.data = new Float32Array(e));
for (var i = 0; i < e; i++)
this.data[i] = t[i];
this._len = e
},
appendPath: function(t) {
t instanceof Array || (t = [t]);
for (var e = t.length, i = 0, n = this._len, o = 0; o < e; o++)
i += t[o].len();
ar && this.data instanceof Float32Array && (this.data = new Float32Array(n + i));
for (o = 0; o < e; o++)
for (var a = t[o].data, r = 0; r < a.length; r++)
this.data[n++] = a[r];
this._len = n
},
addData: function(t) {
if (this._saveData) {
var e = this.data;
this._len + arguments.length > e.length && (this._expandData(),
e = this.data);
for (var i = 0; i < arguments.length; i++)
e[this._len++] = arguments[i];
this._prevCmd = t
}
},
_expandData: function() {
if (!(this.data instanceof Array)) {
for (var t = [], e = 0; e < this._len; e++)
t[e] = this.data[e];
this.data = t
}
},
_needsDash: function() {
return this._lineDash
},
_dashedLineTo: function(t, e) {
var i, n, o = this._dashSum, a = this._dashOffset, r = this._lineDash, s = this._ctx, l = this._xi, u = this._yi, h = t - l, c = e - u, d = nr(h * h + c * c), f = l, p = u, g = r.length;
for (a < 0 && (a = o + a),
f -= (a %= o) * (h /= d),
p -= a * (c /= d); 0 < h && f <= t || h < 0 && t <= f || 0 === h && (0 < c && p <= e || c < 0 && e <= p); )
f += h * (i = r[n = this._dashIdx]),
p += c * i,
this._dashIdx = (n + 1) % g,
0 < h && f < l || h < 0 && l < f || 0 < c && p < u || c < 0 && u < p || s[n % 2 ? "moveTo" : "lineTo"](0 <= h ? Qa(f, t) : tr(f, t), 0 <= c ? Qa(p, e) : tr(p, e));
h = f - t,
c = p - e,
this._dashOffset = -nr(h * h + c * c)
},
_dashedBezierTo: function(t, e, i, n, o, a) {
var r, s, l, u, h, c = this._dashSum, d = this._dashOffset, f = this._lineDash, p = this._ctx, g = this._xi, m = this._yi, v = Ta, y = 0, x = this._dashIdx, _ = f.length, w = 0;
for (d < 0 && (d = c + d),
d %= c,
r = 0; r < 1; r += .1)
s = v(g, t, i, o, r + .1) - v(g, t, i, o, r),
l = v(m, e, n, a, r + .1) - v(m, e, n, a, r),
y += nr(s * s + l * l);
for (; x < _ && !(d < (w += f[x])); x++)
;
for (r = (w - d) / y; r <= 1; )
u = v(g, t, i, o, r),
h = v(m, e, n, a, r),
x % 2 ? p.moveTo(u, h) : p.lineTo(u, h),
r += f[x] / y,
x = (x + 1) % _;
x % 2 != 0 && p.lineTo(o, a),
s = o - u,
l = a - h,
this._dashOffset = -nr(s * s + l * l)
},
_dashedQuadraticTo: function(t, e, i, n) {
var o = i
, a = n;
i = (i + 2 * t) / 3,
n = (n + 2 * e) / 3,
t = (this._xi + 2 * t) / 3,
e = (this._yi + 2 * e) / 3,
this._dashedBezierTo(t, e, i, n, o, a)
},
toStatic: function() {
var t = this.data;
t instanceof Array && (t.length = this._len,
ar && (this.data = new Float32Array(t)))
},
getBoundingRect: function() {
qa[0] = qa[1] = $a[0] = $a[1] = Number.MAX_VALUE,
Ka[0] = Ka[1] = Ja[0] = Ja[1] = -Number.MAX_VALUE;
for (var t, e, i, n, o, a, r, s, l, u, h, c, d, f, p = this.data, g = 0, m = 0, v = 0, y = 0, x = 0; x < p.length; ) {
var _ = p[x++];
switch (1 === x && (v = g = p[x],
y = m = p[x + 1]),
_) {
case ja.M:
g = v = p[x++],
m = y = p[x++],
$a[0] = v,
$a[1] = y,
Ja[0] = v,
Ja[1] = y;
break;
case ja.L:
Ha(g, m, p[x], p[x + 1], $a, Ja),
g = p[x++],
m = p[x++];
break;
case ja.C:
Xa(g, m, p[x++], p[x++], p[x++], p[x++], p[x], p[x + 1], $a, Ja),
g = p[x++],
m = p[x++];
break;
case ja.Q:
t = g,
e = m,
i = p[x++],
n = p[x++],
o = p[x],
a = p[x + 1],
r = $a,
s = Ja,
u = l = void 0,
u = La,
h = Ea(Oa((l = Pa)(t, i, o), 1), 0),
c = Ea(Oa(l(e, n, a), 1), 0),
d = u(t, i, o, h),
f = u(e, n, a, c),
r[0] = Oa(t, o, d),
r[1] = Oa(e, a, f),
s[0] = Ea(t, o, d),
s[1] = Ea(e, a, f),
g = p[x++],
m = p[x++];
break;
case ja.A:
var w = p[x++]
, b = p[x++]
, S = p[x++]
, M = p[x++]
, I = p[x++]
, T = p[x++] + I;
x += 1;
var A = 1 - p[x++];
1 === x && (v = er(I) * S + w,
y = ir(I) * M + b),
Ya(w, b, S, M, I, T, A, $a, Ja),
g = er(T) * S + w,
m = ir(T) * M + b;
break;
case ja.R:
Ha(v = g = p[x++], y = m = p[x++], v + p[x++], y + p[x++], $a, Ja);
break;
case ja.Z:
g = v,
m = y
}
St(qa, qa, $a),
Mt(Ka, Ka, Ja)
}
return 0 === x && (qa[0] = qa[1] = Ka[0] = Ka[1] = 0),
new Di(qa[0],qa[1],Ka[0] - qa[0],Ka[1] - qa[1])
},
rebuildPath: function(t) {
for (var e, i, n, o, a, r, s = this.data, l = this._ux, u = this._uy, h = this._len, c = 0; c < h; ) {
var d = s[c++];
switch (1 === c && (e = n = s[c],
i = o = s[c + 1]),
d) {
case ja.M:
e = n = s[c++],
i = o = s[c++],
t.moveTo(n, o);
break;
case ja.L:
a = s[c++],
r = s[c++],
(or(a - n) > l || or(r - o) > u || c === h - 1) && (t.lineTo(a, r),
n = a,
o = r);
break;
case ja.C:
t.bezierCurveTo(s[c++], s[c++], s[c++], s[c++], s[c++], s[c++]),
n = s[c - 2],
o = s[c - 1];
break;
case ja.Q:
t.quadraticCurveTo(s[c++], s[c++], s[c++], s[c++]),
n = s[c - 2],
o = s[c - 1];
break;
case ja.A:
var f = s[c++]
, p = s[c++]
, g = s[c++]
, m = s[c++]
, v = s[c++]
, y = s[c++]
, x = s[c++]
, _ = s[c++]
, w = m < g ? g : m
, b = m < g ? 1 : g / m
, S = m < g ? m / g : 1
, M = v + y;
.001 < Math.abs(g - m) ? (t.translate(f, p),
t.rotate(x),
t.scale(b, S),
t.arc(0, 0, w, v, M, 1 - _),
t.scale(1 / b, 1 / S),
t.rotate(-x),
t.translate(-f, -p)) : t.arc(f, p, w, v, M, 1 - _),
1 === c && (e = er(v) * g + f,
i = ir(v) * m + p),
n = er(M) * g + f,
o = ir(M) * m + p;
break;
case ja.R:
e = n = s[c],
i = o = s[c + 1],
t.rect(s[c++], s[c++], s[c++], s[c++]);
break;
case ja.Z:
t.closePath(),
n = e,
o = i
}
}
}
},
rr.CMD = ja;
var hr = 2 * Math.PI;
function cr(t) {
return (t %= hr) < 0 && (t += hr),
t
}
var dr = 2 * Math.PI;
function fr(t, e, i, n, o, a, r, s, l) {
if (0 === r)
return !1;
var u = r;
s -= t,
l -= e;
var h = Math.sqrt(s * s + l * l);
if (i < h - u || h + u < i)
return !1;
if (Math.abs(n - o) % dr < 1e-4)
return !0;
if (a) {
var c = n;
n = cr(o),
o = cr(c)
} else
n = cr(n),
o = cr(o);
o < n && (o += dr);
var d = Math.atan2(l, s);
return d < 0 && (d += dr),
n <= d && d <= o || n <= d + dr && d + dr <= o
}
function pr(t, e, i, n, o, a) {
if (e < a && n < a || a < e && a < n)
return 0;
if (n === e)
return 0;
var r = n < e ? 1 : -1
, s = (a - e) / (n - e);
1 != s && 0 != s || (r = n < e ? .5 : -.5);
var l = s * (i - t) + t;
return l === o ? 1 / 0 : o < l ? r : 0
}
var gr = rr.CMD
, mr = 2 * Math.PI
, vr = 1e-4;
var yr = [-1, -1, -1]
, xr = [-1, -1];
function _r(t, e, i, n, o, a, r, s, l, u) {
if (e < u && n < u && a < u && s < u || u < e && u < n && u < a && u < s)
return 0;
var h, c = function(t, e, i, n, o, a) {
var r = n + 3 * (e - i) - t
, s = 3 * (i - 2 * e + t)
, l = 3 * (e - t)
, u = t - o
, h = s * s - 3 * r * l
, c = s * l - 9 * r * u
, d = l * l - 3 * s * u
, f = 0;
if (Ma(h) && Ma(c)) {
if (Ma(s))
a[0] = 0;
else
0 <= (M = -l / s) && M <= 1 && (a[f++] = M)
} else {
var p = c * c - 4 * h * d;
if (Ma(p)) {
var g = c / h
, m = -g / 2;
0 <= (M = -s / r + g) && M <= 1 && (a[f++] = M),
0 <= m && m <= 1 && (a[f++] = m)
} else if (0 < p) {
var v = ma(p)
, y = h * s + 1.5 * r * (-c + v)
, x = h * s + 1.5 * r * (-c - v);
0 <= (M = (-s - ((y = y < 0 ? -ga(-y, _a) : ga(y, _a)) + (x = x < 0 ? -ga(-x, _a) : ga(x, _a)))) / (3 * r)) && M <= 1 && (a[f++] = M)
} else {
var _ = (2 * h * s - 3 * r * c) / (2 * ma(h * h * h))
, w = Math.acos(_) / 3
, b = ma(h)
, S = Math.cos(w)
, M = (-s - 2 * b * S) / (3 * r)
, I = (m = (-s + b * (S + xa * Math.sin(w))) / (3 * r),
(-s + b * (S - xa * Math.sin(w))) / (3 * r));
0 <= M && M <= 1 && (a[f++] = M),
0 <= m && m <= 1 && (a[f++] = m),
0 <= I && I <= 1 && (a[f++] = I)
}
}
return f
}(e, n, a, s, u, yr);
if (0 === c)
return 0;
for (var d, f, p = 0, g = -1, m = 0; m < c; m++) {
var v = yr[m]
, y = 0 === v || 1 === v ? .5 : 1;
Ta(t, i, o, r, v) < l || (g < 0 && (g = Da(e, n, a, s, xr),
xr[1] < xr[0] && 1 < g && (void 0,
h = xr[0],
xr[0] = xr[1],
xr[1] = h),
d = Ta(e, n, a, s, xr[0]),
1 < g && (f = Ta(e, n, a, s, xr[1]))),
2 === g ? v < xr[0] ? p += d < e ? y : -y : v < xr[1] ? p += f < d ? y : -y : p += s < f ? y : -y : v < xr[0] ? p += d < e ? y : -y : p += s < d ? y : -y)
}
return p
}
function wr(t, e, i, n, o, a, r, s) {
if (e < s && n < s && a < s || s < e && s < n && s < a)
return 0;
var l = function(t, e, i, n, o) {
var a = t - 2 * e + i
, r = 2 * (e - t)
, s = t - n
, l = 0;
if (Ma(a)) {
if (Ia(r))
0 <= (h = -s / r) && h <= 1 && (o[l++] = h)
} else {
var u = r * r - 4 * a * s;
if (Ma(u))
0 <= (h = -r / (2 * a)) && h <= 1 && (o[l++] = h);
else if (0 < u) {
var h, c = ma(u), d = (-r - c) / (2 * a);
0 <= (h = (-r + c) / (2 * a)) && h <= 1 && (o[l++] = h),
0 <= d && d <= 1 && (o[l++] = d)
}
}
return l
}(e, n, a, s, yr);
if (0 === l)
return 0;
var u = Pa(e, n, a);
if (0 <= u && u <= 1) {
for (var h = 0, c = La(e, n, a, u), d = 0; d < l; d++) {
var f = 0 === yr[d] || 1 === yr[d] ? .5 : 1;
La(t, i, o, yr[d]) < r || (yr[d] < u ? h += c < e ? f : -f : h += a < c ? f : -f)
}
return h
}
f = 0 === yr[0] || 1 === yr[0] ? .5 : 1;
return La(t, i, o, yr[0]) < r ? 0 : a < e ? f : -f
}
function br(t, e, i, n, o, a, r, s) {
if (i < (s -= e) || s < -i)
return 0;
var l = Math.sqrt(i * i - s * s);
yr[0] = -l,
yr[1] = l;
var u = Math.abs(n - o);
if (u < 1e-4)
return 0;
if (u % mr < 1e-4) {
o = mr;
var h = a ? 1 : -1;
return r >= yr[n = 0] + t && r <= yr[1] + t ? h : 0
}
if (a) {
l = n;
n = cr(o),
o = cr(l)
} else
n = cr(n),
o = cr(o);
o < n && (o += mr);
for (var c = 0, d = 0; d < 2; d++) {
var f = yr[d];
if (r < f + t) {
var p = Math.atan2(s, f);
h = a ? 1 : -1;
p < 0 && (p = mr + p),
(n <= p && p <= o || n <= p + mr && p + mr <= o) && (p > Math.PI / 2 && p < 1.5 * Math.PI && (h = -h),
c += h)
}
}
return c
}
function Sr(t, e, i, n, o) {
for (var a = 0, r = 0, s = 0, l = 0, u = 0, h = 0; h < t.length; ) {
var c = t[h++];
switch (c === gr.M && 1 < h && (i || (a += pr(r, s, l, u, n, o))),
1 === h && (l = r = t[h],
u = s = t[h + 1]),
c) {
case gr.M:
r = l = t[h++],
s = u = t[h++];
break;
case gr.L:
if (i) {
if (sr(r, s, t[h], t[h + 1], e, n, o))
return !0
} else
a += pr(r, s, t[h], t[h + 1], n, o) || 0;
r = t[h++],
s = t[h++];
break;
case gr.C:
if (i) {
if (lr(r, s, t[h++], t[h++], t[h++], t[h++], t[h], t[h + 1], e, n, o))
return !0
} else
a += _r(r, s, t[h++], t[h++], t[h++], t[h++], t[h], t[h + 1], n, o) || 0;
r = t[h++],
s = t[h++];
break;
case gr.Q:
if (i) {
if (ur(r, s, t[h++], t[h++], t[h], t[h + 1], e, n, o))
return !0
} else
a += wr(r, s, t[h++], t[h++], t[h], t[h + 1], n, o) || 0;
r = t[h++],
s = t[h++];
break;
case gr.A:
var d = t[h++]
, f = t[h++]
, p = t[h++]
, g = t[h++]
, m = t[h++]
, v = t[h++];
h += 1;
var y = 1 - t[h++]
, x = Math.cos(m) * p + d
, _ = Math.sin(m) * g + f;
1 < h ? a += pr(r, s, x, _, n, o) : (l = x,
u = _);
var w = (n - d) * g / p + d;
if (i) {
if (fr(d, f, g, m, m + v, y, e, w, o))
return !0
} else
a += br(d, f, g, m, m + v, y, w, o);
r = Math.cos(m + v) * p + d,
s = Math.sin(m + v) * g + f;
break;
case gr.R:
l = r = t[h++],
u = s = t[h++];
x = l + t[h++],
_ = u + t[h++];
if (i) {
if (sr(l, u, x, u, e, n, o) || sr(x, u, x, _, e, n, o) || sr(x, _, l, _, e, n, o) || sr(l, _, l, u, e, n, o))
return !0
} else
a += pr(x, u, x, _, n, o),
a += pr(l, _, l, u, n, o);
break;
case gr.Z:
if (i) {
if (sr(r, s, l, u, e, n, o))
return !0
} else
a += pr(r, s, l, u, n, o);
r = l,
s = u
}
}
return i || function(t, e) {
return Math.abs(t - e) < vr
}(s, u) || (a += pr(r, s, l, u, n, o) || 0),
0 !== a
}
var Mr = $i.prototype.getCanvasPattern
, Ir = Math.abs
, Tr = new rr(!0);
function Ar(t) {
Jn.call(this, t),
this.path = null
}
Ar.prototype = {
constructor: Ar,
type: "path",
__dirtyPath: !0,
strokeContainThreshold: 5,
segmentIgnoreThreshold: 0,
subPixelOptimize: !1,
brush: function(t, e) {
var i, n = this.style, o = this.path || Tr, a = n.hasStroke(), r = n.hasFill(), s = n.fill, l = n.stroke, u = r && !!s.colorStops, h = a && !!l.colorStops, c = r && !!s.image, d = a && !!l.image;
n.bind(t, this, e),
this.setTransform(t),
this.__dirty && (u && (i = i || this.getBoundingRect(),
this._fillGradient = n.getGradient(t, s, i)),
h && (i = i || this.getBoundingRect(),
this._strokeGradient = n.getGradient(t, l, i)));
u ? t.fillStyle = this._fillGradient : c && (t.fillStyle = Mr.call(s, t)),
h ? t.strokeStyle = this._strokeGradient : d && (t.strokeStyle = Mr.call(l, t));
var f = n.lineDash
, p = n.lineDashOffset
, g = !!t.setLineDash
, m = this.getGlobalScale();
if (o.setScale(m[0], m[1], this.segmentIgnoreThreshold),
this.__dirtyPath || f && !g && a ? (o.beginPath(t),
f && !g && (o.setLineDash(f),
o.setLineDashOffset(p)),
this.buildPath(o, this.shape, !1),
this.path && (this.__dirtyPath = !1)) : (t.beginPath(),
this.path.rebuildPath(t)),
r)
if (null != n.fillOpacity) {
var v = t.globalAlpha;
t.globalAlpha = n.fillOpacity * n.opacity,
o.fill(t),
t.globalAlpha = v
} else
o.fill(t);
if (f && g && (t.setLineDash(f),
t.lineDashOffset = p),
a)
if (null != n.strokeOpacity) {
v = t.globalAlpha;
t.globalAlpha = n.strokeOpacity * n.opacity,
o.stroke(t),
t.globalAlpha = v
} else
o.stroke(t);
f && g && t.setLineDash([]),
null != n.text && (this.restoreTransform(t),
this.drawRectText(t, this.getBoundingRect()))
},
buildPath: function(t, e, i) {},
createPathProxy: function() {
this.path = new rr
},
getBoundingRect: function() {
var t = this._rect
, e = this.style
, i = !t;
if (i) {
var n = this.path;
n = n || (this.path = new rr),
this.__dirtyPath && (n.beginPath(),
this.buildPath(n, this.shape, !1)),
t = n.getBoundingRect()
}
if (this._rect = t,
e.hasStroke()) {
var o = this._rectWithStroke || (this._rectWithStroke = t.clone());
if (this.__dirty || i) {
o.copy(t);
var a = e.lineWidth
, r = e.strokeNoScale ? this.getLineScale() : 1;
e.hasFill() || (a = Math.max(a, this.strokeContainThreshold || 4)),
1e-10 < r && (o.width += a / r,
o.height += a / r,
o.x -= a / r / 2,
o.y -= a / r / 2)
}
return o
}
return t
},
contain: function(t, e) {
var i = this.transformCoordToLocal(t, e)
, n = this.getBoundingRect()
, o = this.style;
if (t = i[0],
e = i[1],
n.contain(t, e)) {
var a = this.path.data;
if (o.hasStroke()) {
var r = o.lineWidth
, s = o.strokeNoScale ? this.getLineScale() : 1;
if (1e-10 < s && (o.hasFill() || (r = Math.max(r, this.strokeContainThreshold)),
function(t, e, i, n) {
return Sr(t, e, !0, i, n)
}(a, r / s, t, e)))
return !0
}
if (o.hasFill())
return function(t, e, i) {
return Sr(t, 0, !1, e, i)
}(a, t, e)
}
return !1
},
dirty: function(t) {
null == t && (t = !0),
t && (this.__dirtyPath = t,
this._rect = null),
this.__dirty = this.__dirtyText = !0,
this.__zr && this.__zr.refresh(),
this.__clipTarget && this.__clipTarget.dirty()
},
animateShape: function(t) {
return this.animate("shape", t)
},
attrKV: function(t, e) {
"shape" === t ? (this.setShape(e),
this.__dirtyPath = !0,
this._rect = null) : Jn.prototype.attrKV.call(this, t, e)
},
setShape: function(t, e) {
var i = this.shape;
if (i) {
if (z(t))
for (var n in t)
t.hasOwnProperty(n) && (i[n] = t[n]);
else
i[t] = e;
this.dirty(!0)
}
return this
},
getLineScale: function() {
var t = this.transform;
return t && 1e-10 < Ir(t[0] - 1) && 1e-10 < Ir(t[3] - 1) ? Math.sqrt(Ir(t[0] * t[3] - t[2] * t[1])) : 1
}
},
Ar.extend = function(o) {
function t(t) {
Ar.call(this, t),
o.style && this.style.extendFrom(o.style, !1);
var e = o.shape;
if (e) {
this.shape = this.shape || {};
var i = this.shape;
for (var n in e)
!i.hasOwnProperty(n) && e.hasOwnProperty(n) && (i[n] = e[n])
}
o.init && o.init.call(this, t)
}
for (var e in w(t, Ar),
o)
"style" !== e && "shape" !== e && (t.prototype[e] = o[e]);
return t
}
,
w(Ar, Jn);
function Dr(t) {
return Math.sqrt(t[0] * t[0] + t[1] * t[1])
}
var Cr = rr.CMD
, Lr = [[], [], []]
, kr = Math.sqrt
, Pr = Math.atan2
, Nr = function(t, e) {
var i, n, o, a, r, s = t.data, l = Cr.M, u = Cr.C, h = Cr.L, c = Cr.R, d = Cr.A, f = Cr.Q;
for (a = o = 0; o < s.length; ) {
switch (i = s[o++],
a = o,
n = 0,
i) {
case l:
case h:
n = 1;
break;
case u:
n = 3;
break;
case f:
n = 2;
break;
case d:
var p = e[4]
, g = e[5]
, m = kr(e[0] * e[0] + e[1] * e[1])
, v = kr(e[2] * e[2] + e[3] * e[3])
, y = Pr(-e[1] / v, e[0] / m);
s[o] *= m,
s[o++] += p,
s[o] *= v,
s[o++] += g,
s[o++] *= m,
s[o++] *= v,
s[o++] += y,
s[o++] += y,
a = o += 2;
break;
case c:
x[0] = s[o++],
x[1] = s[o++],
bt(x, x, e),
s[a++] = x[0],
s[a++] = x[1],
x[0] += s[o++],
x[1] += s[o++],
bt(x, x, e),
s[a++] = x[0],
s[a++] = x[1]
}
for (r = 0; r < n; r++) {
var x;
(x = Lr[r])[0] = s[o++],
x[1] = s[o++],
bt(x, x, e),
s[a++] = x[0],
s[a++] = x[1]
}
}
}
, Or = Math.sqrt
, Er = Math.sin
, Rr = Math.cos
, zr = Math.PI
, Br = function(t, e) {
return (t[0] * e[0] + t[1] * e[1]) / (Dr(t) * Dr(e))
}
, Vr = function(t, e) {
return (t[0] * e[1] < t[1] * e[0] ? -1 : 1) * Math.acos(Br(t, e))
};
function Gr(t, e, i, n, o, a, r, s, l, u, h) {
var c = l * (zr / 180)
, d = Rr(c) * (t - i) / 2 + Er(c) * (e - n) / 2
, f = -1 * Er(c) * (t - i) / 2 + Rr(c) * (e - n) / 2
, p = d * d / (r * r) + f * f / (s * s);
1 < p && (r *= Or(p),
s *= Or(p));
var g = (o === a ? -1 : 1) * Or((r * r * (s * s) - r * r * (f * f) - s * s * (d * d)) / (r * r * (f * f) + s * s * (d * d))) || 0
, m = g * r * f / s
, v = g * -s * d / r
, y = (t + i) / 2 + Rr(c) * m - Er(c) * v
, x = (e + n) / 2 + Er(c) * m + Rr(c) * v
, _ = Vr([1, 0], [(d - m) / r, (f - v) / s])
, w = [(d - m) / r, (f - v) / s]
, b = [(-1 * d - m) / r, (-1 * f - v) / s]
, S = Vr(w, b);
Br(w, b) <= -1 && (S = zr),
1 <= Br(w, b) && (S = 0),
0 === a && 0 < S && (S -= 2 * zr),
1 === a && S < 0 && (S += 2 * zr),
h.addData(u, y, x, r, s, _, S, c, a)
}
var Fr = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi
, Wr = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;
function Hr(t, e) {
var i = function(t) {
if (!t)
return new rr;
for (var e, i = 0, n = 0, o = i, a = n, r = new rr, s = rr.CMD, l = t.match(Fr), u = 0; u < l.length; u++) {
for (var h, c = l[u], d = c.charAt(0), f = c.match(Wr) || [], p = f.length, g = 0; g < p; g++)
f[g] = parseFloat(f[g]);
for (var m = 0; m < p; ) {
var v, y, x, _, w, b, S, M = i, I = n;
switch (d) {
case "l":
i += f[m++],
n += f[m++],
h = s.L,
r.addData(h, i, n);
break;
case "L":
i = f[m++],
n = f[m++],
h = s.L,
r.addData(h, i, n);
break;
case "m":
i += f[m++],
n += f[m++],
h = s.M,
r.addData(h, i, n),
o = i,
a = n,
d = "l";
break;
case "M":
i = f[m++],
n = f[m++],
h = s.M,
r.addData(h, i, n),
o = i,
a = n,
d = "L";
break;
case "h":
i += f[m++],
h = s.L,
r.addData(h, i, n);
break;
case "H":
i = f[m++],
h = s.L,
r.addData(h, i, n);
break;
case "v":
n += f[m++],
h = s.L,
r.addData(h, i, n);
break;
case "V":
n = f[m++],
h = s.L,
r.addData(h, i, n);
break;
case "C":
h = s.C,
r.addData(h, f[m++], f[m++], f[m++], f[m++], f[m++], f[m++]),
i = f[m - 2],
n = f[m - 1];
break;
case "c":
h = s.C,
r.addData(h, f[m++] + i, f[m++] + n, f[m++] + i, f[m++] + n, f[m++] + i, f[m++] + n),
i += f[m - 2],
n += f[m - 1];
break;
case "S":
v = i,
y = n;
var T = r.len()
, A = r.data;
e === s.C && (v += i - A[T - 4],
y += n - A[T - 3]),
h = s.C,
M = f[m++],
I = f[m++],
i = f[m++],
n = f[m++],
r.addData(h, v, y, M, I, i, n);
break;
case "s":
v = i,
y = n;
T = r.len(),
A = r.data;
e === s.C && (v += i - A[T - 4],
y += n - A[T - 3]),
h = s.C,
M = i + f[m++],
I = n + f[m++],
i += f[m++],
n += f[m++],
r.addData(h, v, y, M, I, i, n);
break;
case "Q":
M = f[m++],
I = f[m++],
i = f[m++],
n = f[m++],
h = s.Q,
r.addData(h, M, I, i, n);
break;
case "q":
M = f[m++] + i,
I = f[m++] + n,
i += f[m++],
n += f[m++],
h = s.Q,
r.addData(h, M, I, i, n);
break;
case "T":
v = i,
y = n;
T = r.len(),
A = r.data;
e === s.Q && (v += i - A[T - 4],
y += n - A[T - 3]),
i = f[m++],
n = f[m++],
h = s.Q,
r.addData(h, v, y, i, n);
break;
case "t":
v = i,
y = n;
T = r.len(),
A = r.data;
e === s.Q && (v += i - A[T - 4],
y += n - A[T - 3]),
i += f[m++],
n += f[m++],
h = s.Q,
r.addData(h, v, y, i, n);
break;
case "A":
x = f[m++],
_ = f[m++],
w = f[m++],
b = f[m++],
S = f[m++],
Gr(M = i, I = n, i = f[m++], n = f[m++], b, S, x, _, w, h = s.A, r);
break;
case "a":
x = f[m++],
_ = f[m++],
w = f[m++],
b = f[m++],
S = f[m++],
Gr(M = i, I = n, i += f[m++], n += f[m++], b, S, x, _, w, h = s.A, r)
}
}
"z" !== d && "Z" !== d || (h = s.Z,
r.addData(h),
i = o,
n = a),
e = h
}
return r.toStatic(),
r
}(t);
return (e = e || {}).buildPath = function(t) {
if (t.setData) {
t.setData(i.data),
(e = t.getContext()) && t.rebuildPath(e)
} else {
var e = t;
i.rebuildPath(e)
}
}
,
e.applyTransform = function(t) {
Nr(i, t),
this.dirty(!0)
}
,
e
}
function Zr(t, e) {
return new Ar(Hr(t, e))
}
var Ur = function(t) {
Jn.call(this, t)
};
Ur.prototype = {
constructor: Ur,
type: "text",
brush: function(t, e) {
var i = this.style;
this.__dirty && En(i),
i.fill = i.stroke = i.shadowBlur = i.shadowColor = i.shadowOffsetX = i.shadowOffsetY = null;
var n = i.text;
null != n && (n += ""),
qn(n, i) ? (this.setTransform(t),
zn(this, t, n, i, null, e),
this.restoreTransform(t)) : t.__attrCachedBy = Wi.NONE
},
getBoundingRect: function() {
var t = this.style;
if (this.__dirty && En(t),
!this._rect) {
var e = t.text;
null != e ? e += "" : e = "";
var i = gn(t.text + "", t.font, t.textAlign, t.textVerticalAlign, t.textPadding, t.textLineHeight, t.rich);
if (i.x += t.x || 0,
i.y += t.y || 0,
Un(t.textStroke, t.textStrokeWidth)) {
var n = t.textStrokeWidth;
i.x -= n / 2,
i.y -= n / 2,
i.width += n,
i.height += n
}
this._rect = i
}
return this._rect
}
},
w(Ur, Jn);
function Xr(l) {
return v.browser.ie && 11 <= v.browser.version ? function() {
var t, e = this.__clipPaths, i = this.style;
if (e)
for (var n = 0; n < e.length; n++) {
var o = e[n]
, a = o && o.shape
, r = o && o.type;
if (a && ("sector" === r && a.startAngle === a.endAngle || "rect" === r && (!a.width || !a.height))) {
for (var s = 0; s < jr.length; s++)
jr[s][2] = i[jr[s][0]],
i[jr[s][0]] = jr[s][1];
t = !0;
break
}
}
if (l.apply(this, arguments),
t)
for (s = 0; s < jr.length; s++)
i[jr[s][0]] = jr[s][2]
}
: l
}
var Yr = Ar.extend({
type: "circle",
shape: {
cx: 0,
cy: 0,
r: 0
},
buildPath: function(t, e, i) {
i && t.moveTo(e.cx + e.r, e.cy),
t.arc(e.cx, e.cy, e.r, 0, 2 * Math.PI, !0)
}
})
, jr = [["shadowBlur", 0], ["shadowColor", "#000"], ["shadowOffsetX", 0], ["shadowOffsetY", 0]]
, qr = Ar.extend({
type: "sector",
shape: {
cx: 0,
cy: 0,
r0: 0,
r: 0,
startAngle: 0,
endAngle: 2 * Math.PI,
clockwise: !0
},
brush: Xr(Ar.prototype.brush),
buildPath: function(t, e) {
var i = e.cx
, n = e.cy
, o = Math.max(e.r0 || 0, 0)
, a = Math.max(e.r, 0)
, r = e.startAngle
, s = e.endAngle
, l = e.clockwise
, u = Math.cos(r)
, h = Math.sin(r);
t.moveTo(u * o + i, h * o + n),
t.lineTo(u * a + i, h * a + n),
t.arc(i, n, a, r, s, !l),
t.lineTo(Math.cos(s) * o + i, Math.sin(s) * o + n),
0 !== o && t.arc(i, n, o, s, r, l),
t.closePath()
}
})
, Kr = Ar.extend({
type: "ring",
shape: {
cx: 0,
cy: 0,
r: 0,
r0: 0
},
buildPath: function(t, e) {
var i = e.cx
, n = e.cy
, o = 2 * Math.PI;
t.moveTo(i + e.r, n),
t.arc(i, n, e.r, 0, o, !1),
t.moveTo(i + e.r0, n),
t.arc(i, n, e.r0, 0, o, !0)
}
});
function $r(t, e, i, n, o, a, r) {
var s = .5 * (i - t)
, l = .5 * (n - e);
return (2 * (e - i) + s + l) * r + (-3 * (e - i) - 2 * s - l) * a + s * o + e
}
function Jr(t, e, i) {
var n = e.points
, o = e.smooth;
if (n && 2 <= n.length) {
if (o && "spline" !== o) {
var a = function(t, e, i, n) {
var o, a, r, s, l = [], u = [], h = [], c = [];
if (n) {
r = [1 / 0, 1 / 0],
s = [-1 / 0, -1 / 0];
for (var d = 0, f = t.length; d < f; d++)
St(r, r, t[d]),
Mt(s, s, t[d]);
St(r, r, n[0]),
Mt(s, s, n[1])
}
for (d = 0,
f = t.length; d < f; d++) {
var p = t[d];
if (i)
o = t[d ? d - 1 : f - 1],
a = t[(d + 1) % f];
else {
if (0 === d || d === f - 1) {
l.push(rt(t[d]));
continue
}
o = t[d - 1],
a = t[d + 1]
}
ht(u, a, o),
gt(u, u, e);
var g = vt(p, o)
, m = vt(p, a)
, v = g + m;
0 !== v && (g /= v,
m /= v),
gt(h, u, -g),
gt(c, u, m);
var y = lt([], p, h)
, x = lt([], p, c);
n && (Mt(y, y, r),
St(y, y, s),
Mt(x, x, r),
St(x, x, s)),
l.push(y),
l.push(x)
}
return i && l.push(l.shift()),
l
}(n, o, i, e.smoothConstraint);
t.moveTo(n[0][0], n[0][1]);
for (var r = n.length, s = 0; s < (i ? r : r - 1); s++) {
var l = a[2 * s]
, u = a[2 * s + 1]
, h = n[(s + 1) % r];
t.bezierCurveTo(l[0], l[1], u[0], u[1], h[0], h[1])
}
} else {
"spline" === o && (n = function(t, e) {
for (var i = t.length, n = [], o = 0, a = 1; a < i; a++)
o += vt(t[a - 1], t[a]);
var r = o / 2;
r = r < i ? i : r;
for (a = 0; a < r; a++) {
var s, l, u, h = a / (r - 1) * (e ? i : i - 1), c = Math.floor(h), d = h - c, f = t[c % i];
u = e ? (s = t[(c - 1 + i) % i],
l = t[(c + 1) % i],
t[(c + 2) % i]) : (s = t[0 === c ? c : c - 1],
l = t[i - 2 < c ? i - 1 : c + 1],
t[i - 3 < c ? i - 1 : c + 2]);
var p = d * d
, g = d * p;
n.push([$r(s[0], f[0], l[0], u[0], d, p, g), $r(s[1], f[1], l[1], u[1], d, p, g)])
}
return n
}(n, i)),
t.moveTo(n[0][0], n[0][1]);
s = 1;
for (var c = n.length; s < c; s++)
t.lineTo(n[s][0], n[s][1])
}
i && t.closePath()
}
}
var Qr = Ar.extend({
type: "polygon",
shape: {
points: null,
smooth: !1,
smoothConstraint: null
},
buildPath: function(t, e) {
Jr(t, e, !0)
}
})
, ts = Ar.extend({
type: "polyline",
shape: {
points: null,
smooth: !1,
smoothConstraint: null
},
style: {
stroke: "#000",
fill: null
},
buildPath: function(t, e) {
Jr(t, e, !1)
}
})
, es = Math.round;
function is(t, e, i) {
if (e) {
var n = e.x1
, o = e.x2
, a = e.y1
, r = e.y2;
t.x1 = n,
t.x2 = o,
t.y1 = a,
t.y2 = r;
var s = i && i.lineWidth;
s && (es(2 * n) === es(2 * o) && (t.x1 = t.x2 = os(n, s, !0)),
es(2 * a) === es(2 * r) && (t.y1 = t.y2 = os(a, s, !0)))
}
}
function ns(t, e, i) {
if (e) {
var n = e.x
, o = e.y
, a = e.width
, r = e.height;
t.x = n,
t.y = o,
t.width = a,
t.height = r;
var s = i && i.lineWidth;
s && (t.x = os(n, s, !0),
t.y = os(o, s, !0),
t.width = Math.max(os(n + a, s, !1) - t.x, 0 === a ? 0 : 1),
t.height = Math.max(os(o + r, s, !1) - t.y, 0 === r ? 0 : 1))
}
}
function os(t, e, i) {
if (!e)
return t;
var n = es(2 * t);
return (n + es(e)) % 2 == 0 ? n / 2 : (n + (i ? 1 : -1)) / 2
}
var as = {}
, rs = Ar.extend({
type: "rect",
shape: {
r: 0,
x: 0,
y: 0,
width: 0,
height: 0
},
buildPath: function(t, e) {
var i, n, o, a;
this.subPixelOptimize ? (ns(as, e, this.style),
i = as.x,
n = as.y,
o = as.width,
a = as.height,
as.r = e.r,
e = as) : (i = e.x,
n = e.y,
o = e.width,
a = e.height),
e.r ? Dn(t, e) : t.rect(i, n, o, a),
t.closePath()
}
})
, ss = {}
, ls = Ar.extend({
type: "line",
shape: {
x1: 0,
y1: 0,
x2: 0,
y2: 0,
percent: 1
},
style: {
stroke: "#000",
fill: null
},
buildPath: function(t, e) {
var i, n, o, a;
a = this.subPixelOptimize ? (is(ss, e, this.style),
i = ss.x1,
n = ss.y1,
o = ss.x2,
ss.y2) : (i = e.x1,
n = e.y1,
o = e.x2,
e.y2);
var r = e.percent;
0 !== r && (t.moveTo(i, n),
r < 1 && (o = i * (1 - r) + o * r,
a = n * (1 - r) + a * r),
t.lineTo(o, a))
},
pointAt: function(t) {
var e = this.shape;
return [e.x1 * (1 - t) + e.x2 * t, e.y1 * (1 - t) + e.y2 * t]
}
})
, us = [];
function hs(t, e, i) {
var n = t.cpx2
, o = t.cpy2;
return null === n || null === o ? [(i ? Aa : Ta)(t.x1, t.cpx1, t.cpx2, t.x2, e), (i ? Aa : Ta)(t.y1, t.cpy1, t.cpy2, t.y2, e)] : [(i ? ka : La)(t.x1, t.cpx1, t.x2, e), (i ? ka : La)(t.y1, t.cpy1, t.y2, e)]
}
function cs(t) {
this.colorStops = t || []
}
var ds = Ar.extend({
type: "bezier-curve",
shape: {
x1: 0,
y1: 0,
x2: 0,
y2: 0,
cpx1: 0,
cpy1: 0,
percent: 1
},
style: {
stroke: "#000",
fill: null
},
buildPath: function(t, e) {
var i = e.x1
, n = e.y1
, o = e.x2
, a = e.y2
, r = e.cpx1
, s = e.cpy1
, l = e.cpx2
, u = e.cpy2
, h = e.percent;
0 !== h && (t.moveTo(i, n),
null == l || null == u ? (h < 1 && (Na(i, r, o, h, us),
r = us[1],
o = us[2],
Na(n, s, a, h, us),
s = us[1],
a = us[2]),
t.quadraticCurveTo(r, s, o, a)) : (h < 1 && (Ca(i, r, l, o, h, us),
r = us[1],
l = us[2],
o = us[3],
Ca(n, s, u, a, h, us),
s = us[1],
u = us[2],
a = us[3]),
t.bezierCurveTo(r, s, l, u, o, a)))
},
pointAt: function(t) {
return hs(this.shape, t, !1)
},
tangentAt: function(t) {
var e = hs(this.shape, t, !0);
return mt(e, e)
}
})
, fs = Ar.extend({
type: "arc",
shape: {
cx: 0,
cy: 0,
r: 0,
startAngle: 0,
endAngle: 2 * Math.PI,
clockwise: !0
},
style: {
stroke: "#000",
fill: null
},
buildPath: function(t, e) {
var i = e.cx
, n = e.cy
, o = Math.max(e.r, 0)
, a = e.startAngle
, r = e.endAngle
, s = e.clockwise
, l = Math.cos(a)
, u = Math.sin(a);
t.moveTo(l * o + i, u * o + n),
t.arc(i, n, o, a, r, !s)
}
})
, ps = Ar.extend({
type: "compound",
shape: {
paths: null
},
_updatePathDirty: function() {
for (var t = this.__dirtyPath, e = this.shape.paths, i = 0; i < e.length; i++)
t = t || e[i].__dirtyPath;
this.__dirtyPath = t,
this.__dirty = this.__dirty || t
},
beforeBrush: function() {
this._updatePathDirty();
for (var t = this.shape.paths || [], e = this.getGlobalScale(), i = 0; i < t.length; i++)
t[i].path || t[i].createPathProxy(),
t[i].path.setScale(e[0], e[1], t[i].segmentIgnoreThreshold)
},
buildPath: function(t, e) {
for (var i = e.paths || [], n = 0; n < i.length; n++)
i[n].buildPath(t, i[n].shape, !0)
},
afterBrush: function() {
for (var t = this.shape.paths || [], e = 0; e < t.length; e++)
t[e].__dirtyPath = !1
},
getBoundingRect: function() {
return this._updatePathDirty(),
Ar.prototype.getBoundingRect.call(this)
}
});
cs.prototype = {
constructor: cs,
addColorStop: function(t, e) {
this.colorStops.push({
offset: t,
color: e
})
}
};
function gs(t, e, i, n, o, a) {
this.x = null == t ? 0 : t,
this.y = null == e ? 0 : e,
this.x2 = null == i ? 1 : i,
this.y2 = null == n ? 0 : n,
this.type = "linear",
this.global = a || !1,
cs.call(this, o)
}
gs.prototype = {
constructor: gs
},
w(gs, cs);
function ms(t, e, i, n, o) {
this.x = null == t ? .5 : t,
this.y = null == e ? .5 : e,
this.r = null == i ? .5 : i,
this.type = "radial",
this.global = o || !1,
cs.call(this, n)
}
function vs(t) {
Jn.call(this, t),
this._displayables = [],
this._temporaryDisplayables = [],
this._cursor = 0,
this.notClear = !0
}
ms.prototype = {
constructor: ms
},
w(ms, cs),
vs.prototype.incremental = !0,
vs.prototype.clearDisplaybles = function() {
this._displayables = [],
this._temporaryDisplayables = [],
this._cursor = 0,
this.dirty(),
this.notClear = !1
}
,
vs.prototype.addDisplayable = function(t, e) {
e ? this._temporaryDisplayables.push(t) : this._displayables.push(t),
this.dirty()
}
,
vs.prototype.addDisplayables = function(t, e) {
e = e || !1;
for (var i = 0; i < t.length; i++)
this.addDisplayable(t[i], e)
}
,
vs.prototype.eachPendingDisplayable = function(t) {
for (var e = this._cursor; e < this._displayables.length; e++)
t && t(this._displayables[e]);
for (e = 0; e < this._temporaryDisplayables.length; e++)
t && t(this._temporaryDisplayables[e])
}
,
vs.prototype.update = function() {
this.updateTransform();
for (var t = this._cursor; t < this._displayables.length; t++) {
(e = this._displayables[t]).parent = this,
e.update(),
e.parent = null
}
for (t = 0; t < this._temporaryDisplayables.length; t++) {
var e;
(e = this._temporaryDisplayables[t]).parent = this,
e.update(),
e.parent = null
}
}
,
vs.prototype.brush = function(t, e) {
for (var i = this._cursor; i < this._displayables.length; i++) {
(n = this._displayables[i]).beforeBrush && n.beforeBrush(t),
n.brush(t, i === this._cursor ? null : this._displayables[i - 1]),
n.afterBrush && n.afterBrush(t)
}
this._cursor = i;
for (i = 0; i < this._temporaryDisplayables.length; i++) {
var n;
(n = this._temporaryDisplayables[i]).beforeBrush && n.beforeBrush(t),
n.brush(t, 0 === i ? null : this._temporaryDisplayables[i - 1]),
n.afterBrush && n.afterBrush(t)
}
this._temporaryDisplayables = [],
this.notClear = !0
}
;
var ys = [];
vs.prototype.getBoundingRect = function() {
if (!this._rect) {
for (var t = new Di(1 / 0,1 / 0,-1 / 0,-1 / 0), e = 0; e < this._displayables.length; e++) {
var i = this._displayables[e]
, n = i.getBoundingRect().clone();
i.needLocalTransform() && n.applyTransform(i.getLocalTransform(ys)),
t.union(n)
}
this._rect = t
}
return this._rect
}
,
vs.prototype.contain = function(t, e) {
var i = this.transformCoordToLocal(t, e);
if (this.getBoundingRect().contain(i[0], i[1]))
for (var n = 0; n < this._displayables.length; n++) {
if (this._displayables[n].contain(t, e))
return !0
}
return !1
}
,
w(vs, Jn);
var xs = Math.max
, _s = Math.min
, ws = {}
, bs = 1
, Ss = {
color: "textFill",
textBorderColor: "textStroke",
textBorderWidth: "textStrokeWidth"
}
, Ms = "emphasis"
, Is = "normal"
, Ts = 1
, As = {}
, Ds = {};
function Cs(t) {
return Ar.extend(t)
}
function Ls(t, e) {
Ds[t] = e
}
function ks(t) {
if (Ds.hasOwnProperty(t))
return Ds[t]
}
function Ps(t, e, i, n) {
var o = Zr(t, e);
return i && ("center" === n && (i = Os(i, o.getBoundingRect())),
Rs(o, i)),
o
}
function Ns(t, i, n) {
var o = new Qn({
style: {
image: t,
x: i.x,
y: i.y,
width: i.width,
height: i.height
},
onload: function(t) {
if ("center" === n) {
var e = {
width: t.width,
height: t.height
};
o.setStyle(Os(i, e))
}
}
});
return o
}
function Os(t, e) {
var i, n = e.width / e.height, o = t.height * n;
return i = o <= t.width ? t.height : (o = t.width) / n,
{
x: t.x + t.width / 2 - o / 2,
y: t.y + t.height / 2 - i / 2,
width: o,
height: i
}
}
var Es = function(t, e) {
for (var i = [], n = t.length, o = 0; o < n; o++) {
var a = t[o];
a.path || a.createPathProxy(),
a.__dirtyPath && a.buildPath(a.path, a.shape, !0),
i.push(a.path)
}
var r = new Ar(e);
return r.createPathProxy(),
r.buildPath = function(t) {
t.appendPath(i);
var e = t.getContext();
e && t.rebuildPath(e)
}
,
r
};
function Rs(t, e) {
if (t.applyTransform) {
var i = t.getBoundingRect().calculateTransform(e);
t.applyTransform(i)
}
}
var zs = os;
function Bs(t) {
return null != t && "none" !== t
}
var Vs = Q()
, Gs = 0;
function Fs(t) {
var e = t.__hoverStl;
if (e && !t.__highlighted) {
var i = t.__zr
, n = t.useHoverLayer && i && "canvas" === i.painter.type;
if (t.__highlighted = n ? "layer" : "plain",
!(t.isGroup || !i && t.useHoverLayer)) {
var o = t
, a = t.style;
n && (a = (o = i.addHover(t)).style),
ll(a),
n || function(t) {
if (t.__hoverStlDirty) {
t.__hoverStlDirty = !1;
var e = t.__hoverStl;
if (e) {
var i = t.__cachedNormalStl = {};
t.__cachedNormalZ2 = t.z2;
var n = t.style;
for (var o in e)
null != e[o] && (i[o] = n[o]);
i.fill = n.fill,
i.stroke = n.stroke
} else
t.__cachedNormalStl = t.__cachedNormalZ2 = null
}
}(o),
a.extendFrom(e),
Ws(a, e, "fill"),
Ws(a, e, "stroke"),
sl(a),
n || (t.dirty(!1),
t.z2 += bs)
}
}
}
function Ws(t, e, i) {
!Bs(e[i]) && Bs(t[i]) && (t[i] = function(t) {
if ("string" != typeof t)
return t;
var e = Vs.get(t);
return e || (e = He(t, -.1),
Gs < 1e4 && (Vs.set(t, e),
Gs++)),
e
}(t[i]))
}
function Hs(t) {
var e = t.__highlighted;
if (e && (t.__highlighted = !1,
!t.isGroup))
if ("layer" === e)
t.__zr && t.__zr.removeHover(t);
else {
var i = t.style
, n = t.__cachedNormalStl;
n && (ll(i),
t.setStyle(n),
sl(i));
var o = t.__cachedNormalZ2;
null != o && t.z2 - o === bs && (t.z2 = o)
}
}
function Zs(t, e, i) {
var n, o = Is, a = Is;
t.__highlighted && (o = Ms,
n = !0),
e(t, i),
t.__highlighted && (a = Ms,
n = !0),
t.isGroup && t.traverse(function(t) {
t.isGroup || e(t, i)
}),
n && t.__highDownOnUpdate && t.__highDownOnUpdate(o, a)
}
function Us(t, e) {
e = t.__hoverStl = !1 !== e && (t.hoverStyle || e || {}),
t.__hoverStlDirty = !0,
t.__highlighted && (t.__cachedNormalStl = null,
Hs(t),
Fs(t))
}
function Xs(t) {
Ks(this, t) || this.__highByOuter || Zs(this, Fs)
}
function Ys(t) {
Ks(this, t) || this.__highByOuter || Zs(this, Hs)
}
function js(t) {
this.__highByOuter |= 1 << (t || 0),
Zs(this, Fs)
}
function qs(t) {
(this.__highByOuter &= ~(1 << (t || 0))) || Zs(this, Hs)
}
function Ks(t, e) {
return t.__highDownSilentOnTouch && e.zrByTouch
}
function $s(t, e) {
Js(t, !0),
Zs(t, Us, e)
}
function Js(t, e) {
var i = !1 === e;
if (t.__highDownSilentOnTouch = t.highDownSilentOnTouch,
t.__highDownOnUpdate = t.highDownOnUpdate,
!i || t.__highDownDispatcher) {
var n = i ? "off" : "on";
t[n]("mouseover", Xs)[n]("mouseout", Ys),
t[n]("emphasis", js)[n]("normal", qs),
t.__highByOuter = t.__highByOuter || 0,
t.__highDownDispatcher = !i
}
}
function Qs(t) {
return !(!t || !t.__highDownDispatcher)
}
function tl(t) {
var e = As[t];
return null == e && Ts <= 32 && (e = As[t] = Ts++),
e
}
function el(t, e, i, n, o, a, r) {
var s, l = (o = o || ws).labelFetcher, u = o.labelDataIndex, h = o.labelDimIndex, c = o.labelProp, d = i.getShallow("show"), f = n.getShallow("show");
(d || f) && (l && (s = l.getFormattedLabel(u, "normal", null, h, c)),
null == s && (s = C(o.defaultText) ? o.defaultText(u, o) : o.defaultText));
var p = d ? s : null
, g = f ? H(l ? l.getFormattedLabel(u, "emphasis", null, h, c) : null, s) : null;
null == p && null == g || (nl(t, i, a, o),
nl(e, n, r, o, !0)),
t.text = p,
e.text = g
}
function il(t, e, i) {
var n = t.style;
e && (ll(n),
t.setStyle(e),
sl(n)),
n = t.__hoverStl,
i && n && (ll(n),
P(n, i),
sl(n))
}
function nl(t, e, i, n, o) {
return ol(t, e, n, o),
i && P(t, i),
t
}
function ol(t, e, i, n) {
if ((i = i || ws).isRectText) {
var o;
i.getTextPosition ? o = i.getTextPosition(e, n) : "outside" === (o = e.getShallow("position") || (n ? null : "inside")) && (o = "top"),
t.textPosition = o,
t.textOffset = e.getShallow("offset");
var a = e.getShallow("rotate");
null != a && (a *= Math.PI / 180),
t.textRotation = a,
t.textDistance = H(e.getShallow("distance"), n ? null : 5)
}
var r, s = e.ecModel, l = s && s.option.textStyle, u = function(t) {
var e;
for (; t && t !== t.ecModel; ) {
var i = (t.option || ws).rich;
if (i)
for (var n in e = e || {},
i)
i.hasOwnProperty(n) && (e[n] = 1);
t = t.parentModel
}
return e
}(e);
if (u)
for (var h in r = {},
u)
if (u.hasOwnProperty(h)) {
var c = e.getModel(["rich", h]);
al(r[h] = {}, c, l, i, n)
}
return t.rich = r,
al(t, e, l, i, n, !0),
i.forceRich && !i.textStyle && (i.textStyle = {}),
t
}
function al(t, e, i, n, o, a) {
i = !o && i || ws,
t.textFill = rl(e.getShallow("color"), n) || i.color,
t.textStroke = rl(e.getShallow("textBorderColor"), n) || i.textBorderColor,
t.textStrokeWidth = H(e.getShallow("textBorderWidth"), i.textBorderWidth),
o || (a && (t.insideRollbackOpt = n,
sl(t)),
null == t.textFill && (t.textFill = n.autoColor)),
t.fontStyle = e.getShallow("fontStyle") || i.fontStyle,
t.fontWeight = e.getShallow("fontWeight") || i.fontWeight,
t.fontSize = e.getShallow("fontSize") || i.fontSize,
t.fontFamily = e.getShallow("fontFamily") || i.fontFamily,
t.textAlign = e.getShallow("align"),
t.textVerticalAlign = e.getShallow("verticalAlign") || e.getShallow("baseline"),
t.textLineHeight = e.getShallow("lineHeight"),
t.textWidth = e.getShallow("width"),
t.textHeight = e.getShallow("height"),
t.textTag = e.getShallow("tag"),
a && n.disableBox || (t.textBackgroundColor = rl(e.getShallow("backgroundColor"), n),
t.textPadding = e.getShallow("padding"),
t.textBorderColor = rl(e.getShallow("borderColor"), n),
t.textBorderWidth = e.getShallow("borderWidth"),
t.textBorderRadius = e.getShallow("borderRadius"),
t.textBoxShadowColor = e.getShallow("shadowColor"),
t.textBoxShadowBlur = e.getShallow("shadowBlur"),
t.textBoxShadowOffsetX = e.getShallow("shadowOffsetX"),
t.textBoxShadowOffsetY = e.getShallow("shadowOffsetY")),
t.textShadowColor = e.getShallow("textShadowColor") || i.textShadowColor,
t.textShadowBlur = e.getShallow("textShadowBlur") || i.textShadowBlur,
t.textShadowOffsetX = e.getShallow("textShadowOffsetX") || i.textShadowOffsetX,
t.textShadowOffsetY = e.getShallow("textShadowOffsetY") || i.textShadowOffsetY
}
function rl(t, e) {
return "auto" !== t ? t : e && e.autoColor ? e.autoColor : null
}
function sl(t) {
var e, i = t.textPosition, n = t.insideRollbackOpt;
if (n && null == t.textFill) {
var o = n.autoColor
, a = n.isRectText
, r = n.useInsideStyle
, s = !1 !== r && (!0 === r || a && i && "string" == typeof i && 0 <= i.indexOf("inside"))
, l = !s && null != o;
(s || l) && (e = {
textFill: t.textFill,
textStroke: t.textStroke,
textStrokeWidth: t.textStrokeWidth
}),
s && (t.textFill = "#fff",
null == t.textStroke && (t.textStroke = o,
null == t.textStrokeWidth && (t.textStrokeWidth = 2))),
l && (t.textFill = o)
}
t.insideRollback = e
}
function ll(t) {
var e = t.insideRollback;
e && (t.textFill = e.textFill,
t.textStroke = e.textStroke,
t.textStrokeWidth = e.textStrokeWidth,
t.insideRollback = null)
}
function ul(t, e) {
var i = e && e.getModel("textStyle");
return j([t.fontStyle || i && i.getShallow("fontStyle") || "", t.fontWeight || i && i.getShallow("fontWeight") || "", (t.fontSize || i && i.getShallow("fontSize") || 12) + "px", t.fontFamily || i && i.getShallow("fontFamily") || "sans-serif"].join(" "))
}
function hl(t, e, i, n, o, a) {
if ("function" == typeof o && (a = o,
o = null),
n && n.isAnimationEnabled()) {
var r = t ? "Update" : ""
, s = n.getShallow("animationDuration" + r)
, l = n.getShallow("animationEasing" + r)
, u = n.getShallow("animationDelay" + r);
"function" == typeof u && (u = u(o, n.getAnimationDelayParams ? n.getAnimationDelayParams(e, o) : null)),
"function" == typeof s && (s = s(o)),
0 < s ? e.animateTo(i, s, u || 0, l, a, !!a) : (e.stopAnimation(),
e.attr(i),
a && a())
} else
e.stopAnimation(),
e.attr(i),
a && a()
}
function cl(t, e, i, n, o) {
hl(!0, t, e, i, n, o)
}
function dl(t, e, i, n, o) {
hl(!1, t, e, i, n, o)
}
function fl(t, e) {
for (var i = re([]); t && t !== e; )
le(i, t.getLocalTransform(), i),
t = t.parent;
return i
}
function pl(t, e, i) {
return e && !N(e) && (e = ve.getLocalTransform(e)),
i && (e = de([], e)),
bt([], t, e)
}
function gl(t, e, i) {
var n = 0 === e[4] || 0 === e[5] || 0 === e[0] ? 1 : Math.abs(2 * e[4] / e[0])
, o = 0 === e[4] || 0 === e[5] || 0 === e[2] ? 1 : Math.abs(2 * e[4] / e[2])
, a = ["left" === t ? -n : "right" === t ? n : 0, "top" === t ? -o : "bottom" === t ? o : 0];
return a = pl(a, e, i),
Math.abs(a[0]) > Math.abs(a[1]) ? 0 < a[0] ? "right" : "left" : 0 < a[1] ? "bottom" : "top"
}
function ml(t, e, n, i) {
if (t && e) {
var o, a = (o = {},
t.traverse(function(t) {
!t.isGroup && t.anid && (o[t.anid] = t)
}),
o);
e.traverse(function(t) {
if (!t.isGroup && t.anid) {
var e = a[t.anid];
if (e) {
var i = r(t);
t.attr(r(e)),
cl(t, i, n, t.dataIndex)
}
}
})
}
function r(t) {
var e = {
position: rt(t.position),
rotation: t.rotation
};
return t.shape && (e.shape = P({}, t.shape)),
e
}
}
function vl(t, n) {
return O(t, function(t) {
var e = t[0];
e = xs(e, n.x),
e = _s(e, n.x + n.width);
var i = t[1];
return i = xs(i, n.y),
[e, i = _s(i, n.y + n.height)]
})
}
function yl(t, e, i) {
var n = (e = P({
rectHover: !0
}, e)).style = {
strokeNoScale: !0
};
if (i = i || {
x: -1,
y: -1,
width: 2,
height: 2
},
t)
return 0 === t.indexOf("image://") ? (n.image = t.slice(8),
D(n, i),
new Qn(e)) : Ps(t.replace("path://", ""), e, i, "center")
}
function xl(t, e, i, n, o) {
for (var a = 0, r = o[o.length - 1]; a < o.length; a++) {
var s = o[a];
if (_l(t, e, i, n, s[0], s[1], r[0], r[1]))
return !0;
r = s
}
}
function _l(t, e, i, n, o, a, r, s) {
var l = i - t
, u = n - e
, h = r - o
, c = s - a
, d = wl(h, c, l, u);
if (function(t) {
return t <= 1e-6 && -1e-6 <= t
}(d))
return !1;
var f = t - o
, p = e - a
, g = wl(f, p, l, u) / d;
if (g < 0 || 1 < g)
return !1;
var m = wl(f, p, h, c) / d;
return !(m < 0 || 1 < m)
}
function wl(t, e, i, n) {
return t * n - i * e
}
Ls("circle", Yr),
Ls("sector", qr),
Ls("ring", Kr),
Ls("polygon", Qr),
Ls("polyline", ts),
Ls("rect", rs),
Ls("line", ls),
Ls("bezierCurve", ds),
Ls("arc", fs);
var bl = (Object.freeze || Object)({
Z2_EMPHASIS_LIFT: bs,
CACHED_LABEL_STYLE_PROPERTIES: Ss,
extendShape: Cs,
extendPath: function(t, e) {
return function(t, e) {
return Ar.extend(Hr(t, e))
}(t, e)
},
registerShape: Ls,
getShapeClass: ks,
makePath: Ps,
makeImage: Ns,
mergePath: Es,
resizePath: Rs,
subPixelOptimizeLine: function(t) {
return is(t.shape, t.shape, t.style),
t
},
subPixelOptimizeRect: function(t) {
return ns(t.shape, t.shape, t.style),
t
},
subPixelOptimize: zs,
setElementHoverStyle: Us,
setHoverStyle: $s,
setAsHighDownDispatcher: Js,
isHighDownDispatcher: Qs,
getHighlightDigit: tl,
setLabelStyle: el,
modifyLabelStyle: il,
setTextStyle: nl,
setText: function(t, e, i) {
var n, o = {
isRectText: !0
};
!1 === i ? n = !0 : o.autoColor = i,
ol(t, e, o, n)
},
getFont: ul,
updateProps: cl,
initProps: dl,
getTransform: fl,
applyTransform: pl,
transformDirection: gl,
groupTransition: ml,
clipPointsByRect: vl,
clipRectByRect: function(t, e) {
var i = xs(t.x, e.x)
, n = _s(t.x + t.width, e.x + e.width)
, o = xs(t.y, e.y)
, a = _s(t.y + t.height, e.y + e.height);
if (i <= n && o <= a)
return {
x: i,
y: o,
width: n - i,
height: a - o
}
},
createIcon: yl,
linePolygonIntersect: xl,
lineLineIntersect: _l,
Group: Ci,
Image: Qn,
Text: Ur,
Circle: Yr,
Sector: qr,
Ring: Kr,
Polygon: Qr,
Polyline: ts,
Rect: rs,
Line: ls,
BezierCurve: ds,
Arc: fs,
IncrementalDisplayable: vs,
CompoundPath: ps,
LinearGradient: gs,
RadialGradient: ms,
BoundingRect: Di
})
, Sl = ["textStyle", "color"]
, Ml = {
getTextColor: function(t) {
var e = this.ecModel;
return this.getShallow("color") || (!t && e ? e.get(Sl) : null)
},
getFont: function() {
return ul({
fontStyle: this.getShallow("fontStyle"),
fontWeight: this.getShallow("fontWeight"),
fontSize: this.getShallow("fontSize"),
fontFamily: this.getShallow("fontFamily")
}, this.ecModel)
},
getTextRect: function(t) {
return gn(t, this.getFont(), this.getShallow("align"), this.getShallow("verticalAlign") || this.getShallow("baseline"), this.getShallow("padding"), this.getShallow("lineHeight"), this.getShallow("rich"), this.getShallow("truncateText"))
}
}
, Il = ha([["fill", "color"], ["stroke", "borderColor"], ["lineWidth", "borderWidth"], ["opacity"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["shadowColor"], ["textPosition"], ["textAlign"]])
, Tl = {
getItemStyle: function(t, e) {
var i = Il(this, t, e)
, n = this.getBorderLineDash();
return n && (i.lineDash = n),
i
},
getBorderLineDash: function() {
var t = this.get("borderType");
return "solid" === t || null == t ? null : "dashed" === t ? [5, 5] : [1, 1]
}
}
, Al = b
, Dl = jo();
function Cl(t, e, i) {
this.parentModel = e,
this.ecModel = i,
this.option = t
}
function Ll(t, e, i) {
for (var n = 0; n < e.length && (!e[n] || null != (t = t && "object" == typeof t ? t[e[n]] : null)); n++)
;
return null == t && i && (t = i.get(e)),
t
}
function kl(t, e) {
var i = Dl(t).getParent;
return i ? i.call(t, e) : t.parentModel
}
Cl.prototype = {
constructor: Cl,
init: null,
mergeOption: function(t) {
m(this.option, t, !0)
},
get: function(t, e) {
return null == t ? this.option : Ll(this.option, this.parsePath(t), !e && kl(this, t))
},
getShallow: function(t, e) {
var i = this.option
, n = null == i ? i : i[t]
, o = !e && kl(this, t);
return null == n && o && (n = o.getShallow(t)),
n
},
getModel: function(t, e) {
var i;
return new Cl(null == t ? this.option : Ll(this.option, t = this.parsePath(t)),e = e || (i = kl(this, t)) && i.getModel(t),this.ecModel)
},
isEmpty: function() {
return null == this.option
},
restoreData: function() {},
clone: function() {
return new this.constructor(k(this.option))
},
setReadOnly: function(t) {},
parsePath: function(t) {
return "string" == typeof t && (t = t.split(".")),
t
},
customizeGetParent: function(t) {
Dl(this).getParent = t
},
isAnimationEnabled: function() {
if (!v.node) {
if (null != this.option.animation)
return !!this.option.animation;
if (this.parentModel)
return this.parentModel.isAnimationEnabled()
}
}
},
oa(Cl),
ra(Cl),
Al(Cl, da),
Al(Cl, pa),
Al(Cl, Ml),
Al(Cl, Tl);
var Pl = 0;
function Nl(t) {
return [t || "", Pl++, Math.random().toFixed(5)].join("_")
}
var Ol = 1e-4;
function El(t, e, i, n) {
var o = e[1] - e[0]
, a = i[1] - i[0];
if (0 == o)
return 0 == a ? i[0] : (i[0] + i[1]) / 2;
if (n)
if (0 < o) {
if (t <= e[0])
return i[0];
if (t >= e[1])
return i[1]
} else {
if (t >= e[0])
return i[0];
if (t <= e[1])
return i[1]
}
else {
if (t === e[0])
return i[0];
if (t === e[1])
return i[1]
}
return (t - e[0]) / o * a + i[0]
}
function Rl(t, e) {
switch (t) {
case "center":
case "middle":
t = "50%";
break;
case "left":
case "top":
t = "0%";
break;
case "right":
case "bottom":
t = "100%"
}
return "string" == typeof t ? function(t) {
return t.replace(/^\s+|\s+$/g, "")
}(t).match(/%$/) ? parseFloat(t) / 100 * e : parseFloat(t) : null == t ? NaN : +t
}
function zl(t, e, i) {
return null == e && (e = 10),
e = Math.min(Math.max(0, e), 20),
t = (+t).toFixed(e),
i ? t : +t
}
function Bl(t) {
return t.sort(function(t, e) {
return t - e
}),
t
}
function Vl(t) {
if (t = +t,
isNaN(t))
return 0;
for (var e = 1, i = 0; Math.round(t * e) / e !== t; )
e *= 10,
i++;
return i
}
function Gl(t) {
var e = t.toString()
, i = e.indexOf("e");
if (0 < i) {
var n = +e.slice(i + 1);
return n < 0 ? -n : 0
}
var o = e.indexOf(".");
return o < 0 ? 0 : e.length - 1 - o
}
function Fl(t, e) {
var i = Math.log
, n = Math.LN10
, o = Math.floor(i(t[1] - t[0]) / n)
, a = Math.round(i(Math.abs(e[1] - e[0])) / n)
, r = Math.min(Math.max(-o + a, 0), 20);
return isFinite(r) ? r : 20
}
function Wl(t, e, i) {
if (!t[e])
return 0;
var n = S(t, function(t, e) {
return t + (isNaN(e) ? 0 : e)
}, 0);
if (0 === n)
return 0;
for (var o = Math.pow(10, i), a = O(t, function(t) {
return (isNaN(t) ? 0 : t) / n * o * 100
}), r = 100 * o, s = O(a, function(t) {
return Math.floor(t)
}), l = S(s, function(t, e) {
return t + e
}, 0), u = O(a, function(t, e) {
return t - s[e]
}); l < r; ) {
for (var h = Number.NEGATIVE_INFINITY, c = null, d = 0, f = u.length; d < f; ++d)
u[d] > h && (h = u[d],
c = d);
++s[c],
u[c] = 0,
++l
}
return s[e] / o
}
var Hl = 9007199254740991;
function Zl(t) {
var e = 2 * Math.PI;
return (t % e + e) % e
}
function Ul(t) {
return -Ol < t && t < Ol
}
var Xl = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/;
function Yl(t) {
if (t instanceof Date)
return t;
if ("string" != typeof t)
return null == t ? new Date(NaN) : new Date(Math.round(t));
var e = Xl.exec(t);
if (!e)
return new Date(NaN);
if (e[8]) {
var i = +e[4] || 0;
return "Z" !== e[8].toUpperCase() && (i -= e[8].slice(0, 3)),
new Date(Date.UTC(+e[1], +(e[2] || 1) - 1, +e[3] || 1, i, +(e[5] || 0), +e[6] || 0, +e[7] || 0))
}
return new Date(+e[1],+(e[2] || 1) - 1,+e[3] || 1,+e[4] || 0,+(e[5] || 0),+e[6] || 0,+e[7] || 0)
}
function jl(t) {
return Math.pow(10, ql(t))
}
function ql(t) {
if (0 === t)
return 0;
var e = Math.floor(Math.log(t) / Math.LN10);
return 10 <= t / Math.pow(10, e) && e++,
e
}
function Kl(t, e) {
var i = ql(t)
, n = Math.pow(10, i)
, o = t / n;
return t = (e ? o < 1.5 ? 1 : o < 2.5 ? 2 : o < 4 ? 3 : o < 7 ? 5 : 10 : o < 1 ? 1 : o < 2 ? 2 : o < 3 ? 3 : o < 5 ? 5 : 10) * n,
-20 <= i ? +t.toFixed(i < 0 ? -i : 0) : t
}
function $l(t) {
t.sort(function(t, e) {
return function t(e, i, n) {
return e.interval[n] < i.interval[n] || e.interval[n] === i.interval[n] && (e.close[n] - i.close[n] == (n ? -1 : 1) || !n && t(e, i, 1))
}(t, e, 0) ? -1 : 1
});
for (var e = -1 / 0, i = 1, n = 0; n < t.length; ) {
for (var o = t[n].interval, a = t[n].close, r = 0; r < 2; r++)
o[r] <= e && (o[r] = e,
a[r] = r ? 1 : 1 - i),
e = o[r],
i = a[r];
o[0] === o[1] && a[0] * a[1] != 1 ? t.splice(n, 1) : n++
}
return t
}
function Jl(t) {
return 0 <= t - parseFloat(t)
}
var Ql = (Object.freeze || Object)({
linearMap: El,
parsePercent: Rl,
round: zl,
asc: Bl,
getPrecision: Vl,
getPrecisionSafe: Gl,
getPixelPrecision: Fl,
getPercentWithPrecision: Wl,
MAX_SAFE_INTEGER: Hl,
remRadian: Zl,
isRadianAroundZero: Ul,
parseDate: Yl,
quantity: jl,
quantityExponent: ql,
nice: Kl,
quantile: function(t, e) {
var i = (t.length - 1) * e + 1
, n = Math.floor(i)
, o = +t[n - 1]
, a = i - n;
return a ? o + a * (t[n] - o) : o
},
reformIntervals: $l,
isNumeric: Jl
});
function tu(t) {
return isNaN(t) ? "-" : (t = (t + "").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, "$1,") + (1 < t.length ? "." + t[1] : "")
}
function eu(t, e) {
return t = (t || "").toLowerCase().replace(/-(.)/g, function(t, e) {
return e.toUpperCase()
}),
e && t && (t = t.charAt(0).toUpperCase() + t.slice(1)),
t
}
var iu = X
, nu = /([&<>"'])/g
, ou = {
"&": "&",
"<": "<",
">": ">",
'"': """,
"'": "'"
};
function au(t) {
return null == t ? "" : (t + "").replace(nu, function(t, e) {
return ou[e]
})
}
function ru(t, e) {
return "{" + t + (null == e ? "" : e) + "}"
}
var su = ["a", "b", "c", "d", "e", "f", "g"];
function lu(t, e, i) {
L(e) || (e = [e]);
var n = e.length;
if (!n)
return "";
for (var o = e[0].$vars || [], a = 0; a < o.length; a++) {
var r = su[a];
t = t.replace(ru(r), ru(r, 0))
}
for (var s = 0; s < n; s++)
for (var l = 0; l < o.length; l++) {
var u = e[s][o[l]];
t = t.replace(ru(su[l], s), i ? au(u) : u)
}
return t
}
function uu(i, t, n) {
return E(t, function(t, e) {
i = i.replace("{" + e + "}", n ? au(t) : t)
}),
i
}
function hu(t, e) {
var i = (t = R(t) ? {
color: t,
extraCssText: e
} : t || {}).color
, n = t.type
, o = (e = t.extraCssText,
t.renderMode || "html")
, a = t.markerId || "X";
return i ? "html" === o ? "subItem" === n ? '' : '' : {
renderMode: o,
content: "{marker" + a + "|} ",
style: {
color: i
}
} : ""
}
function cu(t, e) {
return "0000".substr(0, e - (t += "").length) + t
}
function du(t, e, i) {
"week" !== t && "month" !== t && "quarter" !== t && "half-year" !== t && "year" !== t || (t = "MM-dd\nyyyy");
var n = Yl(e)
, o = i ? "UTC" : ""
, a = n["get" + o + "FullYear"]()
, r = n["get" + o + "Month"]() + 1
, s = n["get" + o + "Date"]()
, l = n["get" + o + "Hours"]()
, u = n["get" + o + "Minutes"]()
, h = n["get" + o + "Seconds"]()
, c = n["get" + o + "Milliseconds"]();
return t = t.replace("MM", cu(r, 2)).replace("M", r).replace("yyyy", a).replace("yy", a % 100).replace("dd", cu(s, 2)).replace("d", s).replace("hh", cu(l, 2)).replace("h", l).replace("mm", cu(u, 2)).replace("m", u).replace("ss", cu(h, 2)).replace("s", h).replace("SSS", cu(c, 3))
}
function fu(t) {
return t ? t.charAt(0).toUpperCase() + t.substr(1) : t
}
var pu = xn;
function gu(t, e) {
if ("_blank" === e || "blank" === e) {
var i = window.open();
i.opener = null,
i.location = t
} else
window.open(t, e)
}
var mu = (Object.freeze || Object)({
addCommas: tu,
toCamelCase: eu,
normalizeCssArray: iu,
encodeHTML: au,
formatTpl: lu,
formatTplSimple: uu,
getTooltipMarker: hu,
formatTime: du,
capitalFirst: fu,
truncateText: pu,
getTextBoundingRect: function(t) {
return gn(t.text, t.font, t.textAlign, t.textVerticalAlign, t.textPadding, t.textLineHeight, t.rich, t.truncate)
},
getTextRect: function(t, e, i, n, o, a, r, s) {
return gn(t, e, i, n, o, s, a, r)
},
windowOpen: gu
})
, vu = E
, yu = ["left", "right", "top", "bottom", "width", "height"]
, xu = [["width", "left", "right"], ["height", "top", "bottom"]];
function _u(h, c, d, f, p) {
var g = 0
, m = 0;
null == f && (f = 1 / 0),
null == p && (p = 1 / 0);
var v = 0;
c.eachChild(function(t, e) {
var i, n, o = t.position, a = t.getBoundingRect(), r = c.childAt(e + 1), s = r && r.getBoundingRect();
if ("horizontal" === h) {
var l = a.width + (s ? -s.x + a.x : 0);
v = f < (i = g + l) || t.newline ? (g = 0,
i = l,
m += v + d,
a.height) : Math.max(v, a.height)
} else {
var u = a.height + (s ? -s.y + a.y : 0);
v = p < (n = m + u) || t.newline ? (g += v + d,
m = 0,
n = u,
a.width) : Math.max(v, a.width)
}
t.newline || (o[0] = g,
o[1] = m,
"horizontal" === h ? g = i + d : m = n + d)
})
}
var wu = _u;
T(_u, "vertical"),
T(_u, "horizontal");
function bu(t, e, i) {
i = iu(i || 0);
var n = e.width
, o = e.height
, a = Rl(t.left, n)
, r = Rl(t.top, o)
, s = Rl(t.right, n)
, l = Rl(t.bottom, o)
, u = Rl(t.width, n)
, h = Rl(t.height, o)
, c = i[2] + i[0]
, d = i[1] + i[3]
, f = t.aspect;
switch (isNaN(u) && (u = n - s - d - a),
isNaN(h) && (h = o - l - c - r),
null != f && (isNaN(u) && isNaN(h) && (n / o < f ? u = .8 * n : h = .8 * o),
isNaN(u) && (u = f * h),
isNaN(h) && (h = u / f)),
isNaN(a) && (a = n - s - u - d),
isNaN(r) && (r = o - l - h - c),
t.left || t.right) {
case "center":
a = n / 2 - u / 2 - i[3];
break;
case "right":
a = n - u - d
}
switch (t.top || t.bottom) {
case "middle":
case "center":
r = o / 2 - h / 2 - i[0];
break;
case "bottom":
r = o - h - c
}
a = a || 0,
r = r || 0,
isNaN(u) && (u = n - d - a - (s || 0)),
isNaN(h) && (h = o - c - r - (l || 0));
var p = new Di(a + i[3],r + i[0],u,h);
return p.margin = i,
p
}
function Su(t, e, i, n, o) {
var a = !o || !o.hv || o.hv[0]
, r = !o || !o.hv || o.hv[1]
, s = o && o.boundingMode || "all";
if (a || r) {
var l;
if ("raw" === s)
l = "group" === t.type ? new Di(0,0,+e.width || 0,+e.height || 0) : t.getBoundingRect();
else if (l = t.getBoundingRect(),
t.needLocalTransform()) {
var u = t.getLocalTransform();
(l = l.clone()).applyTransform(u)
}
e = bu(D({
width: l.width,
height: l.height
}, e), i, n);
var h = t.position
, c = a ? e.x - l.x : 0
, d = r ? e.y - l.y : 0;
t.attr("position", "raw" === s ? [c, d] : [h[0] + c, h[1] + d])
}
}
function Mu(l, u, t) {
z(t) || (t = {});
var h = t.ignoreSize;
L(h) || (h = [h, h]);
var e = n(xu[0], 0)
, i = n(xu[1], 1);
function n(t, e) {
var i = {}
, n = 0
, o = {}
, a = 0;
if (vu(t, function(t) {
o[t] = l[t]
}),
vu(t, function(t) {
c(u, t) && (i[t] = o[t] = u[t]),
d(i, t) && n++,
d(o, t) && a++
}),
h[e])
return d(u, t[1]) ? o[t[2]] = null : d(u, t[2]) && (o[t[1]] = null),
o;
if (2 !== a && n) {
if (2 <= n)
return i;
for (var r = 0; r < t.length; r++) {
var s = t[r];
if (!c(i, s) && c(l, s)) {
i[s] = l[s];
break
}
}
return i
}
return o
}
function c(t, e) {
return t.hasOwnProperty(e)
}
function d(t, e) {
return null != t[e] && "auto" !== t[e]
}
function o(t, e, i) {
vu(t, function(t) {
e[t] = i[t]
})
}
o(xu[0], l, e),
o(xu[1], l, i)
}
function Iu(t) {
return Tu({}, t)
}
function Tu(e, i) {
return i && e && vu(yu, function(t) {
i.hasOwnProperty(t) && (e[t] = i[t])
}),
e
}
var Au, Du, Cu, Lu = jo(), ku = Cl.extend({
type: "component",
id: "",
name: "",
mainType: "",
subType: "",
componentIndex: 0,
defaultOption: null,
ecModel: null,
dependentModels: [],
uid: null,
layoutMode: null,
$constructor: function(t, e, i, n) {
Cl.call(this, t, e, i, n),
this.uid = Nl("ec_cpt_model")
},
init: function(t, e, i, n) {
this.mergeDefaultAndTheme(t, i)
},
mergeDefaultAndTheme: function(t, e) {
var i = this.layoutMode
, n = i ? Iu(t) : {};
m(t, e.getTheme().get(this.mainType)),
m(t, this.getDefaultOption()),
i && Mu(t, n, i)
},
mergeOption: function(t, e) {
m(this.option, t, !0);
var i = this.layoutMode;
i && Mu(this.option, t, i)
},
optionUpdated: function(t, e) {},
getDefaultOption: function() {
var t = Lu(this);
if (!t.defaultOption) {
for (var e = [], i = this.constructor; i; ) {
var n = i.prototype.defaultOption;
n && e.push(n),
i = i.superClass
}
for (var o = {}, a = e.length - 1; 0 <= a; a--)
o = m(o, e[a], !0);
t.defaultOption = o
}
return t.defaultOption
},
getReferringComponents: function(t) {
return this.ecModel.queryComponents({
mainType: t,
index: this.get(t + "Index", !0),
id: this.get(t + "Id", !0)
})
}
});
function Pu(t, e) {
return t[e] || (t[e] = {
predecessor: [],
successor: []
}),
t[e]
}
ua(ku, {
registerWhenExtend: !0
}),
Du = {},
(Au = ku).registerSubTypeDefaulter = function(t, e) {
t = na(t),
Du[t.main] = e
}
,
Au.determineSubType = function(t, e) {
var i = e.type;
if (!i) {
var n = na(t).main;
Au.hasSubTypes(t) && Du[n] && (i = Du[n](e))
}
return i
}
,
Cu = function(t) {
var e = [];
E(ku.getClassesByMainType(t), function(t) {
e = e.concat(t.prototype.dependencies || [])
}),
e = O(e, function(t) {
return na(t).main
}),
"dataset" !== t && _(e, "dataset") <= 0 && e.unshift("dataset");
return e
}
,
ku.topologicalTravel = function(t, e, i, n) {
if (t.length) {
var o = function(e) {
var o = {}
, a = [];
return E(e, function(i) {
var n = Pu(o, i)
, t = function(t, e) {
var i = [];
return E(t, function(t) {
0 <= _(e, t) && i.push(t)
}),
i
}(n.originalDeps = Cu(i), e);
n.entryCount = t.length,
0 === n.entryCount && a.push(i),
E(t, function(t) {
_(n.predecessor, t) < 0 && n.predecessor.push(t);
var e = Pu(o, t);
_(e.successor, t) < 0 && e.successor.push(i)
})
}),
{
graph: o,
noEntryList: a
}
}(e)
, a = o.graph
, r = o.noEntryList
, s = {};
for (E(t, function(t) {
s[t] = !0
}); r.length; ) {
var l = r.pop()
, u = a[l]
, h = !!s[l];
h && (i.call(n, l, u.originalDeps.slice()),
delete s[l]),
E(u.successor, h ? d : c)
}
E(s, function() {
throw new Error("Circle dependency may exists")
})
}
function c(t) {
a[t].entryCount--,
0 === a[t].entryCount && r.push(t)
}
function d(t) {
s[t] = !0,
c(t)
}
}
,
b(ku, {
getBoxLayoutParams: function() {
return {
left: this.get("left"),
top: this.get("top"),
right: this.get("right"),
bottom: this.get("bottom"),
width: this.get("width"),
height: this.get("height")
}
}
});
var Nu = "";
"undefined" != typeof navigator && (Nu = navigator.platform || "");
var Ou = {
color: ["#c23531", "#2f4554", "#61a0a8", "#d48265", "#91c7ae", "#749f83", "#ca8622", "#bda29a", "#6e7074", "#546570", "#c4ccd3"],
gradientColor: ["#f6efa6", "#d88273", "#bf444c"],
textStyle: {
fontFamily: Nu.match(/^Win/) ? "Microsoft YaHei" : "sans-serif",
fontSize: 12,
fontStyle: "normal",
fontWeight: "normal"
},
blendMode: null,
animation: "auto",
animationDuration: 1e3,
animationDurationUpdate: 300,
animationEasing: "exponentialOut",
animationEasingUpdate: "cubicOut",
animationThreshold: 2e3,
progressiveThreshold: 3e3,
progressive: 400,
hoverLayerThreshold: 3e3,
useUTC: !1
}
, Eu = jo();
var Ru = {
clearColorPalette: function() {
Eu(this).colorIdx = 0,
Eu(this).colorNameMap = {}
},
getColorFromPalette: function(t, e, i) {
var n = Eu(e = e || this)
, o = n.colorIdx || 0
, a = n.colorNameMap = n.colorNameMap || {};
if (a.hasOwnProperty(t))
return a[t];
var r = Vo(this.get("color", !0))
, s = this.get("colorLayer", !0)
, l = null != i && s ? function(t, e) {
for (var i = t.length, n = 0; n < i; n++)
if (t[n].length > e)
return t[n];
return t[i - 1]
}(s, i) : r;
if ((l = l || r) && l.length) {
var u = l[o];
return t && (a[t] = u),
n.colorIdx = (o + 1) % l.length,
u
}
}
}
, zu = "original"
, Bu = "arrayRows"
, Vu = "objectRows"
, Gu = "keyedColumns"
, Fu = "unknown"
, Wu = "typedArray"
, Hu = "column"
, Zu = "row";
function Uu(t) {
this.fromDataset = t.fromDataset,
this.data = t.data || (t.sourceFormat === Gu ? {} : []),
this.sourceFormat = t.sourceFormat || Fu,
this.seriesLayoutBy = t.seriesLayoutBy || Hu,
this.dimensionsDefine = t.dimensionsDefine,
this.encodeDefine = t.encodeDefine && Q(t.encodeDefine),
this.startIndex = t.startIndex || 0,
this.dimensionsDetectCount = t.dimensionsDetectCount
}
Uu.seriesDataToSource = function(t) {
return new Uu({
data: t,
sourceFormat: V(t) ? Wu : zu,
fromDataset: !1
})
}
,
ra(Uu);
var Xu = {
Must: 1,
Might: 2,
Not: 3
}
, Yu = jo();
function ju(t) {
var e = t.option
, i = e.data
, n = V(i) ? Wu : zu
, o = !1
, a = e.seriesLayoutBy
, r = e.sourceHeader
, s = e.dimensions
, l = Qu(t);
if (l) {
var u = l.option;
i = u.source,
n = Yu(l).sourceFormat,
o = !0,
a = a || u.seriesLayoutBy,
null == r && (r = u.sourceHeader),
s = s || u.dimensions
}
var h = function(t, e, i, n, o) {
if (!t)
return {
dimensionsDefine: qu(o)
};
var a, r;
if (e === Bu)
"auto" === n || null == n ? Ku(function(t) {
null != t && "-" !== t && (R(t) ? null == r && (r = 1) : r = 0)
}, i, t, 10) : r = n ? 1 : 0,
o || 1 !== r || (o = [],
Ku(function(t, e) {
o[e] = null != t ? t : ""
}, i, t)),
a = o ? o.length : i === Zu ? t.length : t[0] ? t[0].length : null;
else if (e === Vu)
o = o || function(t) {
var e, i = 0;
for (; i < t.length && !(e = t[i++]); )
;
if (e) {
var n = [];
return E(e, function(t, e) {
n.push(e)
}),
n
}
}(t);
else if (e === Gu)
o || (o = [],
E(t, function(t, e) {
o.push(e)
}));
else if (e === zu) {
var s = Wo(t[0]);
a = L(s) && s.length || 1
}
return {
startIndex: r,
dimensionsDefine: qu(o),
dimensionsDetectCount: a
}
}(i, n, a, r, s);
Yu(t).source = new Uu({
data: i,
fromDataset: o,
seriesLayoutBy: a,
sourceFormat: n,
dimensionsDefine: h.dimensionsDefine,
startIndex: h.startIndex,
dimensionsDetectCount: h.dimensionsDetectCount,
encodeDefine: e.encode
})
}
function qu(t) {
if (t) {
var n = Q();
return O(t, function(t, e) {
if (null == (t = P({}, z(t) ? t : {
name: t
})).name)
return t;
t.name += "",
null == t.displayName && (t.displayName = t.name);
var i = n.get(t.name);
return i ? t.name += "-" + i.count++ : n.set(t.name, {
count: 1
}),
t
})
}
}
function Ku(t, e, i, n) {
if (null == n && (n = 1 / 0),
e === Zu)
for (var o = 0; o < i.length && o < n; o++)
t(i[o] ? i[o][0] : null, o);
else {
var a = i[0] || [];
for (o = 0; o < a.length && o < n; o++)
t(a[o], o)
}
}
function $u(i, t, e) {
var a = {}
, n = Qu(t);
if (!n || !i)
return a;
var r, o, s = [], l = [], u = t.ecModel, h = Yu(u).datasetMap, c = n.uid + "_" + e.seriesLayoutBy;
E(i = i.slice(), function(t, e) {
z(t) || (i[e] = {
name: t
}),
"ordinal" === t.type && null == r && (o = p(i[r = e])),
a[t.name] = []
});
var d = h.get(c) || h.set(c, {
categoryWayDim: o,
valueWayDim: 0
});
function f(t, e, i) {
for (var n = 0; n < i; n++)
t.push(e + n)
}
function p(t) {
var e = t.dimsDef;
return e ? e.length : 1
}
return E(i, function(t, e) {
var i = t.name
, n = p(t);
if (null == r) {
var o = d.valueWayDim;
f(a[i], o, n),
f(l, o, n),
d.valueWayDim += n
} else if (r === e)
f(a[i], 0, n),
f(s, 0, n);
else {
o = d.categoryWayDim;
f(a[i], o, n),
f(l, o, n),
d.categoryWayDim += n
}
}),
s.length && (a.itemName = s),
l.length && (a.seriesName = l),
a
}
function Ju(t, l, u) {
var e = {};
if (!Qu(t))
return e;
var h, c = l.sourceFormat, d = l.dimensionsDefine;
c !== Vu && c !== Gu || E(d, function(t, e) {
"name" === (z(t) ? t.name : t) && (h = e)
});
var i = function() {
for (var t = {}, e = {}, i = [], n = 0, o = Math.min(5, u); n < o; n++) {
var a = th(l.data, c, l.seriesLayoutBy, d, l.startIndex, n);
i.push(a);
var r = a === Xu.Not;
if (r && null == t.v && n !== h && (t.v = n),
null != t.n && t.n !== t.v && (r || i[t.n] !== Xu.Not) || (t.n = n),
s(t) && i[t.n] !== Xu.Not)
return t;
r || (a === Xu.Might && null == e.v && n !== h && (e.v = n),
null != e.n && e.n !== e.v || (e.n = n))
}
function s(t) {
return null != t.v && null != t.n
}
return s(t) ? t : s(e) ? e : null
}();
if (i) {
e.value = i.v;
var n = null != h ? h : i.n;
e.itemName = [n],
e.seriesName = [n]
}
return e
}
function Qu(t) {
var e = t.option;
if (!e.data)
return t.ecModel.getComponent("dataset", e.datasetIndex || 0)
}
function th(t, e, i, n, o, a) {
var r, s, l;
if (V(t))
return Xu.Not;
if (n) {
var u = n[a];
z(u) ? (s = u.name,
l = u.type) : R(u) && (s = u)
}
if (null != l)
return "ordinal" === l ? Xu.Must : Xu.Not;
if (e === Bu)
if (i === Zu) {
for (var h = t[a], c = 0; c < (h || []).length && c < 5; c++)
if (null != (r = g(h[o + c])))
return r
} else
for (c = 0; c < t.length && c < 5; c++) {
var d = t[o + c];
if (d && null != (r = g(d[a])))
return r
}
else if (e === Vu) {
if (!s)
return Xu.Not;
for (c = 0; c < t.length && c < 5; c++) {
if ((f = t[c]) && null != (r = g(f[s])))
return r
}
} else if (e === Gu) {
if (!s)
return Xu.Not;
if (!(h = t[s]) || V(h))
return Xu.Not;
for (c = 0; c < h.length && c < 5; c++)
if (null != (r = g(h[c])))
return r
} else if (e === zu)
for (c = 0; c < t.length && c < 5; c++) {
var f, p = Wo(f = t[c]);
if (!L(p))
return Xu.Not;
if (null != (r = g(p[a])))
return r
}
function g(t) {
var e = R(t);
return null != t && isFinite(t) && "" !== t ? e ? Xu.Might : Xu.Not : e && "-" !== t ? Xu.Must : void 0
}
return Xu.Not
}
var eh = "\0_ec_inner"
, ih = Cl.extend({
init: function(t, e, i, n) {
i = i || {},
this.option = null,
this._theme = new Cl(i),
this._optionManager = n
},
setOption: function(t, e) {
Y(!(eh in t), "please use chart.getOption()"),
this._optionManager.setOption(t, e),
this.resetOption(null)
},
resetOption: function(t) {
var e = !1
, i = this._optionManager;
if (!t || "recreate" === t) {
var n = i.mountOption("recreate" === t);
this.option && "recreate" !== t ? (this.restoreData(),
this.mergeOption(n)) : function(t) {
t = t,
this.option = {},
this.option[eh] = 1,
this._componentsMap = Q({
series: []
}),
this._seriesIndices,
this._seriesIndicesMap,
function(i, t) {
var n = i.color && !i.colorLayer;
E(t, function(t, e) {
"colorLayer" === e && n || ku.hasClass(e) || ("object" == typeof t ? i[e] = i[e] ? m(i[e], t, !1) : k(t) : null == i[e] && (i[e] = t))
})
}(t, this._theme.option),
m(t, Ou, !1),
this.mergeOption(t)
}
.call(this, n),
e = !0
}
if ("timeline" !== t && "media" !== t || this.restoreData(),
!t || "recreate" === t || "timeline" === t) {
var o = i.getTimelineOption(this);
o && (this.mergeOption(o),
e = !0)
}
if (!t || "recreate" === t || "media" === t) {
var a = i.getMediaOption(this, this._api);
a.length && E(a, function(t) {
this.mergeOption(t, e = !0)
}, this)
}
return e
},
mergeOption: function(n) {
var l = this.option
, u = this._componentsMap
, i = [];
!function(t) {
Yu(t).datasetMap = Q()
}(this),
E(n, function(t, e) {
null != t && (ku.hasClass(e) ? e && i.push(e) : l[e] = null == l[e] ? k(t) : m(l[e], t, !0))
}),
ku.topologicalTravel(i, ku.getAllClassMainTypes(), function(r, t) {
var e = Vo(n[r])
, i = Ho(u.get(r), e);
Zo(i),
E(i, function(t, e) {
var i = t.option;
z(i) && (t.keyInfo.mainType = r,
t.keyInfo.subType = function(t, e, i) {
return e.type ? e.type : i ? i.subType : ku.determineSubType(t, e)
}(r, i, t.exist))
});
var s = function(e, t) {
L(t) || (t = t ? [t] : []);
var i = {};
return E(t, function(t) {
i[t] = (e.get(t) || []).slice()
}),
i
}(u, t);
l[r] = [],
u.set(r, []),
E(i, function(t, e) {
var i = t.exist
, n = t.option;
if (Y(z(n) || i, "Empty component definition"),
n) {
var o = ku.getClass(r, t.keyInfo.subType, !0);
if (i && i.constructor === o)
i.name = t.keyInfo.name,
i.mergeOption(n, this),
i.optionUpdated(n, !1);
else {
var a = P({
dependentModels: s,
componentIndex: e
}, t.keyInfo);
P(i = new o(n,this,this,a), a),
i.init(n, this, this, a),
i.optionUpdated(null, !0)
}
} else
i.mergeOption({}, this),
i.optionUpdated({}, !1);
u.get(r)[e] = i,
l[r][e] = i.option
}, this),
"series" === r && nh(this, u.get("series"))
}, this),
this._seriesIndicesMap = Q(this._seriesIndices = this._seriesIndices || [])
},
getOption: function() {
var n = k(this.option);
return E(n, function(t, e) {
if (ku.hasClass(e)) {
for (var i = (t = Vo(t)).length - 1; 0 <= i; i--)
Xo(t[i]) && t.splice(i, 1);
n[e] = t
}
}),
delete n[eh],
n
},
getTheme: function() {
return this._theme
},
getComponent: function(t, e) {
var i = this._componentsMap.get(t);
if (i)
return i[e || 0]
},
queryComponents: function(t) {
var e = t.mainType;
if (!e)
return [];
var i, n = t.index, o = t.id, a = t.name, r = this._componentsMap.get(e);
if (!r || !r.length)
return [];
if (null != n)
L(n) || (n = [n]),
i = M(O(n, function(t) {
return r[t]
}), function(t) {
return !!t
});
else if (null != o) {
var s = L(o);
i = M(r, function(t) {
return s && 0 <= _(o, t.id) || !s && t.id === o
})
} else if (null != a) {
var l = L(a);
i = M(r, function(t) {
return l && 0 <= _(a, t.name) || !l && t.name === a
})
} else
i = r.slice();
return oh(i, t)
},
findComponents: function(t) {
var e, i, n, o, a, r = t.query, s = t.mainType, l = (i = s + "Index",
n = s + "Id",
o = s + "Name",
!(e = r) || null == e[i] && null == e[n] && null == e[o] ? null : {
mainType: s,
index: e[i],
id: e[n],
name: e[o]
}), u = l ? this.queryComponents(l) : this._componentsMap.get(s);
return a = oh(u, t),
t.filter ? M(a, t.filter) : a
},
eachComponent: function(t, n, o) {
var e = this._componentsMap;
if ("function" == typeof t)
o = n,
n = t,
e.each(function(t, i) {
E(t, function(t, e) {
n.call(o, i, t, e)
})
});
else if (R(t))
E(e.get(t), n, o);
else if (z(t)) {
E(this.findComponents(t), n, o)
}
},
getSeriesByName: function(e) {
return M(this._componentsMap.get("series"), function(t) {
return t.name === e
})
},
getSeriesByIndex: function(t) {
return this._componentsMap.get("series")[t]
},
getSeriesByType: function(e) {
return M(this._componentsMap.get("series"), function(t) {
return t.subType === e
})
},
getSeries: function() {
return this._componentsMap.get("series").slice()
},
getSeriesCount: function() {
return this._componentsMap.get("series").length
},
eachSeries: function(i, n) {
E(this._seriesIndices, function(t) {
var e = this._componentsMap.get("series")[t];
i.call(n, e, t)
}, this)
},
eachRawSeries: function(t, e) {
E(this._componentsMap.get("series"), t, e)
},
eachSeriesByType: function(i, n, o) {
E(this._seriesIndices, function(t) {
var e = this._componentsMap.get("series")[t];
e.subType === i && n.call(o, e, t)
}, this)
},
eachRawSeriesByType: function(t, e, i) {
return E(this.getSeriesByType(t), e, i)
},
isSeriesFiltered: function(t) {
return null == this._seriesIndicesMap.get(t.componentIndex)
},
getCurrentSeriesIndices: function() {
return (this._seriesIndices || []).slice()
},
filterSeries: function(t, e) {
var i = M(this._componentsMap.get("series"), t, e);
nh(this, i)
},
restoreData: function(i) {
var n = this._componentsMap;
nh(this, n.get("series"));
var o = [];
n.each(function(t, e) {
o.push(e)
}),
ku.topologicalTravel(o, ku.getAllClassMainTypes(), function(e, t) {
E(n.get(e), function(t) {
"series" === e && function(t, e) {
if (e) {
var i = e.seiresIndex
, n = e.seriesId
, o = e.seriesName;
return null != i && t.componentIndex !== i || null != n && t.id !== n || null != o && t.name !== o
}
}(t, i) || t.restoreData()
})
})
}
});
function nh(t, e) {
t._seriesIndicesMap = Q(t._seriesIndices = O(e, function(t) {
return t.componentIndex
}) || [])
}
function oh(t, e) {
return e.hasOwnProperty("subType") ? M(t, function(t) {
return t.subType === e.subType
}) : t
}
b(ih, Ru);
var ah = ["getDom", "getZr", "getWidth", "getHeight", "getDevicePixelRatio", "dispatchAction", "isDisposed", "on", "off", "getDataURL", "getConnectedDataURL", "getModel", "getOption", "getViewOfComponentModel", "getViewOfSeriesModel"];
function rh(e) {
E(ah, function(t) {
this[t] = A(e[t], e)
}, this)
}
var sh = {};
function lh() {
this._coordinateSystems = []
}
lh.prototype = {
constructor: lh,
create: function(n, o) {
var a = [];
E(sh, function(t, e) {
var i = t.create(n, o);
a = a.concat(i || [])
}),
this._coordinateSystems = a
},
update: function(e, i) {
E(this._coordinateSystems, function(t) {
t.update && t.update(e, i)
})
},
getCoordinateSystems: function() {
return this._coordinateSystems.slice()
}
},
lh.register = function(t, e) {
sh[t] = e
}
,
lh.get = function(t) {
return sh[t]
}
;
var uh = E
, hh = k
, ch = O
, dh = m
, fh = /^(min|max)?(.+)$/;
function ph(t) {
this._api = t,
this._timelineOptions = [],
this._mediaList = [],
this._mediaDefault,
this._currentMediaIndices = [],
this._optionBackup,
this._newBaseOption
}
function gh(t, e, i) {
var a = {
width: e,
height: i,
aspectratio: e / i
}
, r = !0;
return E(t, function(t, e) {
var i = e.match(fh);
if (i && i[1] && i[2]) {
var n = i[1]
, o = i[2].toLowerCase();
!function(t, e, i) {
return "min" === i ? e <= t : "max" === i ? t <= e : t === e
}(a[o], t, n) && (r = !1)
}
}),
r
}
ph.prototype = {
constructor: ph,
setOption: function(t, e) {
t && E(Vo(t.series), function(t) {
t && t.data && V(t.data) && K(t.data)
}),
t = hh(t);
var i = this._optionBackup
, n = function(t, i, n) {
var e, o, a = [], r = [], s = t.timeline;
t.baseOption && (o = t.baseOption);
(s || t.options) && (o = o || {},
a = (t.options || []).slice());
if (t.media) {
o = o || {};
var l = t.media;
uh(l, function(t) {
t && t.option && (t.query ? r.push(t) : e = e || t)
})
}
o = o || t;
o.timeline || (o.timeline = s);
return uh([o].concat(a).concat(O(r, function(t) {
return t.option
})), function(e) {
uh(i, function(t) {
t(e, n)
})
}),
{
baseOption: o,
timelineOptions: a,
mediaDefault: e,
mediaList: r
}
}
.call(this, t, e, !i);
this._newBaseOption = n.baseOption,
i ? (function(o, t) {
uh(t = t || {}, function(t, e) {
if (null != t) {
var i = o[e];
if (ku.hasClass(e)) {
t = Vo(t);
var n = Ho(i = Vo(i), t);
o[e] = ch(n, function(t) {
return t.option && t.exist ? dh(t.exist, t.option, !0) : t.exist || t.option
})
} else
o[e] = dh(i, t, !0)
}
})
}(i.baseOption, n.baseOption),
n.timelineOptions.length && (i.timelineOptions = n.timelineOptions),
n.mediaList.length && (i.mediaList = n.mediaList),
n.mediaDefault && (i.mediaDefault = n.mediaDefault)) : this._optionBackup = n
},
mountOption: function(t) {
var e = this._optionBackup;
return this._timelineOptions = ch(e.timelineOptions, hh),
this._mediaList = ch(e.mediaList, hh),
this._mediaDefault = hh(e.mediaDefault),
this._currentMediaIndices = [],
hh(t ? e.baseOption : this._newBaseOption)
},
getTimelineOption: function(t) {
var e, i = this._timelineOptions;
if (i.length) {
var n = t.getComponent("timeline");
n && (e = hh(i[n.getCurrentIndex()], !0))
}
return e
},
getMediaOption: function(t) {
var e = this._api.getWidth()
, i = this._api.getHeight()
, n = this._mediaList
, o = this._mediaDefault
, a = []
, r = [];
if (!n.length && !o)
return r;
for (var s = 0, l = n.length; s < l; s++)
gh(n[s].query, e, i) && a.push(s);
return !a.length && o && (a = [-1]),
a.length && !function(t, e) {
return t.join(",") === e.join(",")
}(a, this._currentMediaIndices) && (r = ch(a, function(t) {
return hh(-1 === t ? o.option : n[t].option)
})),
this._currentMediaIndices = a,
r
}
};
var mh = E
, vh = z
, yh = ["areaStyle", "lineStyle", "nodeStyle", "linkStyle", "chordStyle", "label", "labelLine"];
function xh(t) {
var e = t && t.itemStyle;
if (e)
for (var i = 0, n = yh.length; i < n; i++) {
var o = yh[i]
, a = e.normal
, r = e.emphasis;
a && a[o] && (t[o] = t[o] || {},
t[o].normal ? m(t[o].normal, a[o]) : t[o].normal = a[o],
a[o] = null),
r && r[o] && (t[o] = t[o] || {},
t[o].emphasis ? m(t[o].emphasis, r[o]) : t[o].emphasis = r[o],
r[o] = null)
}
}
function _h(t, e, i) {
if (t && t[e] && (t[e].normal || t[e].emphasis)) {
var n = t[e].normal
, o = t[e].emphasis;
n && (i ? (t[e].normal = t[e].emphasis = null,
D(t[e], n)) : t[e] = n),
o && (t.emphasis = t.emphasis || {},
t.emphasis[e] = o)
}
}
function wh(t) {
_h(t, "itemStyle"),
_h(t, "lineStyle"),
_h(t, "areaStyle"),
_h(t, "label"),
_h(t, "labelLine"),
_h(t, "upperLabel"),
_h(t, "edgeLabel")
}
function bh(t, e) {
var i = vh(t) && t[e]
, n = vh(i) && i.textStyle;
if (n)
for (var o = 0, a = Fo.length; o < a; o++) {
e = Fo[o];
n.hasOwnProperty(e) && (i[e] = n[e])
}
}
function Sh(t) {
t && (wh(t),
bh(t, "label"),
t.emphasis && bh(t.emphasis, "label"))
}
function Mh(t) {
return L(t) ? t : t ? [t] : []
}
function Ih(t) {
return (L(t) ? t[0] : t) || {}
}
function Th(e, t) {
mh(Mh(e.series), function(t) {
vh(t) && function(t) {
if (vh(t)) {
xh(t),
wh(t),
bh(t, "label"),
bh(t, "upperLabel"),
bh(t, "edgeLabel"),
t.emphasis && (bh(t.emphasis, "label"),
bh(t.emphasis, "upperLabel"),
bh(t.emphasis, "edgeLabel")),
(i = t.markPoint) && (xh(i),
Sh(i)),
(n = t.markLine) && (xh(n),
Sh(n));
var e = t.markArea;
e && Sh(e);
var i, n, o = t.data;
if ("graph" === t.type) {
o = o || t.nodes;
var a = t.links || t.edges;
if (a && !V(a))
for (var r = 0; r < a.length; r++)
Sh(a[r]);
E(t.categories, function(t) {
wh(t)
})
}
if (o && !V(o))
for (r = 0; r < o.length; r++)
Sh(o[r]);
if ((i = t.markPoint) && i.data) {
var s = i.data;
for (r = 0; r < s.length; r++)
Sh(s[r])
}
if ((n = t.markLine) && n.data) {
var l = n.data;
for (r = 0; r < l.length; r++)
L(l[r]) ? (Sh(l[r][0]),
Sh(l[r][1])) : Sh(l[r])
}
"gauge" === t.type ? (bh(t, "axisLabel"),
bh(t, "title"),
bh(t, "detail")) : "treemap" === t.type ? (_h(t.breadcrumb, "itemStyle"),
E(t.levels, function(t) {
wh(t)
})) : "tree" === t.type && wh(t.leaves)
}
}(t)
});
var i = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "parallelAxis", "radar"];
t && i.push("valueAxis", "categoryAxis", "logAxis", "timeAxis"),
mh(i, function(t) {
mh(Mh(e[t]), function(t) {
t && (bh(t, "axisLabel"),
bh(t.axisPointer, "label"))
})
}),
mh(Mh(e.parallel), function(t) {
var e = t && t.parallelAxisDefault;
bh(e, "axisLabel"),
bh(e && e.axisPointer, "label")
}),
mh(Mh(e.calendar), function(t) {
_h(t, "itemStyle"),
bh(t, "dayLabel"),
bh(t, "monthLabel"),
bh(t, "yearLabel")
}),
mh(Mh(e.radar), function(t) {
bh(t, "name")
}),
mh(Mh(e.geo), function(t) {
vh(t) && (Sh(t),
mh(Mh(t.regions), function(t) {
Sh(t)
}))
}),
mh(Mh(e.timeline), function(t) {
Sh(t),
_h(t, "label"),
_h(t, "itemStyle"),
_h(t, "controlStyle", !0);
var e = t.data;
L(e) && E(e, function(t) {
z(t) && (_h(t, "label"),
_h(t, "itemStyle"))
})
}),
mh(Mh(e.toolbox), function(t) {
_h(t, "iconStyle"),
mh(t.feature, function(t) {
_h(t, "iconStyle")
})
}),
bh(Ih(e.axisPointer), "label"),
bh(Ih(e.tooltip).axisPointer, "label")
}
function Ah(e) {
E(Dh, function(t) {
t[0]in e && !(t[1]in e) && (e[t[1]] = e[t[0]])
})
}
var Dh = [["x", "left"], ["y", "top"], ["x2", "right"], ["y2", "bottom"]]
, Ch = ["grid", "geo", "parallel", "legend", "toolbox", "title", "visualMap", "dataZoom", "timeline"]
, Lh = function(i, t) {
Th(i, t),
i.series = Vo(i.series),
E(i.series, function(t) {
if (z(t)) {
var e = t.type;
if ("line" === e)
null != t.clipOverflow && (t.clip = t.clipOverflow);
else if ("pie" === e || "gauge" === e)
null != t.clockWise && (t.clockwise = t.clockWise);
else if ("gauge" === e) {
var i = function(t, e) {
e = e.split(",");
for (var i = t, n = 0; n < e.length && null != (i = i && i[e[n]]); n++)
;
return i
}(t, "pointer.color");
null != i && function(t, e, i, n) {
e = e.split(",");
for (var o, a = t, r = 0; r < e.length - 1; r++)
null == a[o = e[r]] && (a[o] = {}),
a = a[o];
!n && null != a[e[r]] || (a[e[r]] = i)
}(t, "itemStyle.color", i)
}
Ah(t)
}
}),
i.dataRange && (i.visualMap = i.dataRange),
E(Ch, function(t) {
var e = i[t];
e && (L(e) || (e = [e]),
E(e, function(t) {
Ah(t)
}))
})
};
function kh(m) {
E(m, function(h, c) {
var d = []
, f = [NaN, NaN]
, t = [h.stackResultDimension, h.stackedOverDimension]
, p = h.data
, g = h.isStackedByIndex
, e = p.map(t, function(t, e, i) {
var n, o, a = p.get(h.stackedDimension, i);
if (isNaN(a))
return f;
g ? o = p.getRawIndex(i) : n = p.get(h.stackedByDimension, i);
for (var r = NaN, s = c - 1; 0 <= s; s--) {
var l = m[s];
if (g || (o = l.data.rawIndexOf(l.stackedByDimension, n)),
0 <= o) {
var u = l.data.getByRawIndex(l.stackResultDimension, o);
if (0 <= a && 0 < u || a <= 0 && u < 0) {
a += u,
r = u;
break
}
}
}
return d[0] = a,
d[1] = r,
d
});
p.hostModel.setData(e),
h.data = e
})
}
function Ph(t, e) {
Uu.isInstance(t) || (t = Uu.seriesDataToSource(t)),
this._source = t;
var i = this._data = t.data
, n = t.sourceFormat;
n === Wu && (this._offset = 0,
this._dimSize = e,
this._data = i),
P(this, Oh[n === Bu ? n + "_" + t.seriesLayoutBy : n])
}
var Nh = Ph.prototype;
Nh.pure = !1;
var Oh = {
arrayRows_column: {
pure: Nh.persistent = !0,
count: function() {
return Math.max(0, this._data.length - this._source.startIndex)
},
getItem: function(t) {
return this._data[t + this._source.startIndex]
},
appendData: zh
},
arrayRows_row: {
pure: !0,
count: function() {
var t = this._data[0];
return t ? Math.max(0, t.length - this._source.startIndex) : 0
},
getItem: function(t) {
t += this._source.startIndex;
for (var e = [], i = this._data, n = 0; n < i.length; n++) {
var o = i[n];
e.push(o ? o[t] : null)
}
return e
},
appendData: function() {
throw new Error('Do not support appendData when set seriesLayoutBy: "row".')
}
},
objectRows: {
pure: !0,
count: Eh,
getItem: Rh,
appendData: zh
},
keyedColumns: {
pure: !0,
count: function() {
var t = this._source.dimensionsDefine[0].name
, e = this._data[t];
return e ? e.length : 0
},
getItem: function(t) {
for (var e = [], i = this._source.dimensionsDefine, n = 0; n < i.length; n++) {
var o = this._data[i[n].name];
e.push(o ? o[t] : null)
}
return e
},
appendData: function(t) {
var o = this._data;
E(t, function(t, e) {
for (var i = o[e] || (o[e] = []), n = 0; n < (t || []).length; n++)
i.push(t[n])
})
}
},
original: {
count: Eh,
getItem: Rh,
appendData: zh
},
typedArray: {
persistent: !(Nh.getSource = function() {
return this._source
}
),
pure: !0,
count: function() {
return this._data ? this._data.length / this._dimSize : 0
},
getItem: function(t, e) {
t -= this._offset,
e = e || [];
for (var i = this._dimSize * t, n = 0; n < this._dimSize; n++)
e[n] = this._data[i + n];
return e
},
appendData: function(t) {
this._data = t
},
clean: function() {
this._offset += this.count(),
this._data = null
}
}
};
function Eh() {
return this._data.length
}
function Rh(t) {
return this._data[t]
}
function zh(t) {
for (var e = 0; e < t.length; e++)
this._data.push(t[e])
}
var Bh = {
arrayRows: Vh,
objectRows: function(t, e, i, n) {
return null != i ? t[n] : t
},
keyedColumns: Vh,
original: function(t, e, i, n) {
var o = Wo(t);
return null != i && o instanceof Array ? o[i] : o
},
typedArray: Vh
};
function Vh(t, e, i, n) {
return null != i ? t[i] : t
}
var Gh = {
arrayRows: Fh,
objectRows: function(t, e, i, n) {
return Wh(t[e], this._dimensionInfos[e])
},
keyedColumns: Fh,
original: function(t, e, i, n) {
var o = t && (null == t.value ? t : t.value);
return !this._rawData.pure && function(t) {
return Ro(t) && !(t instanceof Array)
}(t) && (this.hasItemOption = !0),
Wh(o instanceof Array ? o[n] : o, this._dimensionInfos[e])
},
typedArray: function(t, e, i, n) {
return t[n]
}
};
function Fh(t, e, i, n) {
return Wh(t[n], this._dimensionInfos[e])
}
function Wh(t, e) {
var i = e && e.type;
if ("ordinal" !== i)
return "time" === i && "number" != typeof t && null != t && "-" !== t && (t = +Yl(t)),
null == t || "" === t ? NaN : +t;
var n = e && e.ordinalMeta;
return n ? n.parseAndCollect(t) : t
}
function Hh(t, e, i) {
if (t) {
var n = t.getRawDataItem(e);
if (null != n) {
var o, a, r = t.getProvider().getSource().sourceFormat, s = t.getDimensionInfo(i);
return s && (o = s.name,
a = s.index),
Bh[r](n, e, a, o)
}
}
}
function Zh(t, e, i) {
if (t) {
var n = t.getProvider().getSource().sourceFormat;
if (n === zu || n === Vu) {
var o = t.getRawDataItem(e);
return n !== zu || z(o) || (o = null),
o ? o[i] : void 0
}
}
}
var Uh = /\{@(.+?)\}/g
, Xh = {
getDataParams: function(t, e) {
var i = this.getData(e)
, n = this.getRawValue(t, e)
, o = i.getRawIndex(t)
, a = i.getName(t)
, r = i.getRawDataItem(t)
, s = i.getItemVisual(t, "color")
, l = i.getItemVisual(t, "borderColor")
, u = this.ecModel.getComponent("tooltip")
, h = Qo(u && u.get("renderMode"))
, c = this.mainType
, d = "series" === c
, f = i.userOutput;
return {
componentType: c,
componentSubType: this.subType,
componentIndex: this.componentIndex,
seriesType: d ? this.subType : null,
seriesIndex: this.seriesIndex,
seriesId: d ? this.id : null,
seriesName: d ? this.name : null,
name: a,
dataIndex: o,
data: r,
dataType: e,
value: n,
color: s,
borderColor: l,
dimensionNames: f ? f.dimensionNames : null,
encode: f ? f.encode : null,
marker: hu({
color: s,
renderMode: h
}),
$vars: ["seriesName", "name", "value"]
}
},
getFormattedLabel: function(n, t, e, i, o) {
t = t || "normal";
var a = this.getData(e)
, r = a.getItemModel(n)
, s = this.getDataParams(n, e);
null != i && s.value instanceof Array && (s.value = s.value[i]);
var l = r.get("normal" === t ? [o || "label", "formatter"] : [t, o || "label", "formatter"]);
return "function" == typeof l ? (s.status = t,
s.dimensionIndex = i,
l(s)) : "string" == typeof l ? lu(l, s).replace(Uh, function(t, e) {
var i = e.length;
return "[" === e.charAt(0) && "]" === e.charAt(i - 1) && (e = +e.slice(1, i - 1)),
Hh(a, n, e)
}) : void 0
},
getRawValue: function(t, e) {
return Hh(this.getData(e), t)
},
formatTooltip: function() {}
};
function Yh(t) {
return new jh(t)
}
function jh(t) {
t = t || {},
this._reset = t.reset,
this._plan = t.plan,
this._count = t.count,
this._onDirty = t.onDirty,
this._dirty = !0,
this.context
}
var qh = jh.prototype;
qh.perform = function(t) {
var e, i = this._upstream, n = t && t.skip;
if (this._dirty && i) {
var o = this.context;
o.data = o.outputData = i.context.outputData
}
this.__pipeline && (this.__pipeline.currentTask = this),
this._plan && !n && (e = this._plan(this.context));
var a, r = h(this._modBy), s = this._modDataCount || 0, l = h(t && t.modBy), u = t && t.modDataCount || 0;
function h(t) {
return 1 <= t || (t = 1),
t
}
r === l && s === u || (e = "reset"),
!this._dirty && "reset" !== e || (this._dirty = !1,
a = function(t, e) {
var i, n;
t._dueIndex = t._outputDueEnd = t._dueEnd = 0,
t._settedOutputEnd = null,
!e && t._reset && ((i = t._reset(t.context)) && i.progress && (n = i.forceFirstProgress,
i = i.progress),
L(i) && !i.length && (i = null));
t._progress = i,
t._modBy = t._modDataCount = null;
var o = t._downstream;
return o && o.dirty(),
n
}(this, n)),
this._modBy = l,
this._modDataCount = u;
var c = t && t.step;
if (this._dueEnd = i ? i._outputDueEnd : this._count ? this._count(this.context) : 1 / 0,
this._progress) {
var d = this._dueIndex
, f = Math.min(null != c ? this._dueIndex + c : 1 / 0, this._dueEnd);
if (!n && (a || d < f)) {
var p = this._progress;
if (L(p))
for (var g = 0; g < p.length; g++)
ac(this, p[g], d, f, l, u);
else
ac(this, p, d, f, l, u)
}
this._dueIndex = f;
var m = null != this._settedOutputEnd ? this._settedOutputEnd : f;
this._outputDueEnd = m
} else
this._dueIndex = this._outputDueEnd = null != this._settedOutputEnd ? this._settedOutputEnd : this._dueEnd;
return this.unfinished()
}
;
var Kh, $h, Jh, Qh, tc, ec, ic = ec = {
reset: function(t, e, i, n) {
$h = t,
Kh = e,
Jh = i,
Qh = n,
tc = Math.ceil(Qh / Jh),
ec.next = 1 < Jh && 0 < Qh ? oc : nc
}
};
function nc() {
return $h < Kh ? $h++ : null
}
function oc() {
var t = $h % tc * Jh + Math.ceil($h / tc)
, e = Kh <= $h ? null : t < Qh ? t : $h;
return $h++,
e
}
function ac(t, e, i, n, o, a) {
ic.reset(i, n, o, a),
t._callingProgress = e,
t._callingProgress({
start: i,
end: n,
count: n - i,
next: ic.next
}, t.context)
}
qh.dirty = function() {
this._dirty = !0,
this._onDirty && this._onDirty(this.context)
}
,
qh.unfinished = function() {
return this._progress && this._dueIndex < this._dueEnd
}
,
qh.pipe = function(t) {
this._downstream === t && !this._dirty || ((this._downstream = t)._upstream = this,
t.dirty())
}
,
qh.dispose = function() {
this._disposed || (this._upstream && (this._upstream._downstream = null),
this._downstream && (this._downstream._upstream = null),
this._dirty = !1,
this._disposed = !0)
}
,
qh.getUpstream = function() {
return this._upstream
}
,
qh.getDownstream = function() {
return this._downstream
}
,
qh.setOutputEnd = function(t) {
this._outputDueEnd = this._settedOutputEnd = t
}
;
var rc = jo()
, sc = ku.extend({
type: "series.__base__",
seriesIndex: 0,
coordinateSystem: null,
defaultOption: null,
legendVisualProvider: null,
visualColorAccessPath: "itemStyle.color",
visualBorderColorAccessPath: "itemStyle.borderColor",
layoutMode: null,
init: function(t, e, i, n) {
this.seriesIndex = this.componentIndex,
this.dataTask = Yh({
count: uc,
reset: hc
}),
this.dataTask.context = {
model: this
},
this.mergeDefaultAndTheme(t, i),
ju(this);
var o = this.getInitialData(t, i);
dc(o, this),
this.dataTask.context.data = o,
rc(this).dataBeforeProcessed = o,
lc(this)
},
mergeDefaultAndTheme: function(t, e) {
var i = this.layoutMode
, n = i ? Iu(t) : {}
, o = this.subType;
ku.hasClass(o) && (o += "Series"),
m(t, e.getTheme().get(this.subType)),
m(t, this.getDefaultOption()),
Go(t, "label", ["show"]),
this.fillDataTextStyle(t.data),
i && Mu(t, n, i)
},
mergeOption: function(t, e) {
t = m(this.option, t, !0),
this.fillDataTextStyle(t.data);
var i = this.layoutMode;
i && Mu(this.option, t, i),
ju(this);
var n = this.getInitialData(t, e);
dc(n, this),
this.dataTask.dirty(),
this.dataTask.context.data = n,
rc(this).dataBeforeProcessed = n,
lc(this)
},
fillDataTextStyle: function(t) {
if (t && !V(t))
for (var e = ["show"], i = 0; i < t.length; i++)
t[i] && t[i].label && Go(t[i], "label", e)
},
getInitialData: function() {},
appendData: function(t) {
this.getRawData().appendData(t.data)
},
getData: function(t) {
var e = pc(this);
if (e) {
var i = e.context.data;
return null == t ? i : i.getLinkedData(t)
}
return rc(this).data
},
setData: function(t) {
var e = pc(this);
if (e) {
var i = e.context;
i.data !== t && e.modifyOutputEnd && e.setOutputEnd(t.count()),
i.outputData = t,
e !== this.dataTask && (i.data = t)
}
rc(this).data = t
},
getSource: function() {
return function(t) {
return Yu(t).source
}(this)
},
getRawData: function() {
return rc(this).dataBeforeProcessed
},
getBaseAxis: function() {
var t = this.coordinateSystem;
return t && t.getBaseAxis && t.getBaseAxis()
},
formatTooltip: function(o, h, t, c) {
var d = this
, e = "html" === (c = c || "html") ? "
" : "\n"
, f = "richText" === c
, p = {}
, g = 0;
function i(t) {
return {
renderMode: c,
content: au(tu(t)),
style: p
}
}
var m = this.getData()
, a = m.mapDimension("defaultedTooltip", !0)
, n = a.length
, r = this.getRawValue(o)
, s = L(r)
, v = m.getItemVisual(o, "color");
z(v) && v.colorStops && (v = (v.colorStops[0] || {}).color),
v = v || "transparent";
var l = (1 < n || s && !n ? function(t) {
var l = S(t, function(t, e, i) {
var n = m.getDimensionInfo(i);
return t | (n && !1 !== n.tooltip && null != n.displayName)
}, 0)
, u = [];
function e(t, e) {
var i = m.getDimensionInfo(e);
if (i && !1 !== i.otherDims.tooltip) {
var n = i.type
, o = "sub" + d.seriesIndex + "at" + g
, a = hu({
color: v,
type: "subItem",
renderMode: c,
markerId: o
})
, r = "string" == typeof a ? a : a.content
, s = (l ? r + au(i.displayName || "-") + ": " : "") + au("ordinal" === n ? t + "" : "time" === n ? h ? "" : du("yyyy/MM/dd hh:mm:ss", t) : tu(t));
s && u.push(s),
f && (p[o] = v,
++g)
}
}
a.length ? E(a, function(t) {
e(Hh(m, o, t), t)
}) : E(t, e);
var i = l ? f ? "\n" : "
" : ""
, n = i + u.join(i || ", ");
return {
renderMode: c,
content: n,
style: p
}
}(r) : i(n ? Hh(m, o, a[0]) : s ? r[0] : r)).content
, u = d.seriesIndex + "at" + g
, y = hu({
color: v,
type: "item",
renderMode: c,
markerId: u
});
p[u] = v,
++g;
var x = m.getName(o)
, _ = this.name;
Uo(this) || (_ = ""),
_ = _ ? au(_) + (h ? ": " : e) : "";
var w = "string" == typeof y ? y : y.content;
return {
html: h ? w + _ + l : _ + w + (x ? au(x) + ": " + l : l),
markers: p
}
},
isAnimationEnabled: function() {
if (v.node)
return !1;
var t = this.getShallow("animation");
return t && this.getData().count() > this.getShallow("animationThreshold") && (t = !1),
t
},
restoreData: function() {
this.dataTask.dirty()
},
getColorFromPalette: function(t, e, i) {
var n = this.ecModel
, o = Ru.getColorFromPalette.call(this, t, e, i);
return o = o || n.getColorFromPalette(t, e, i)
},
coordDimToDataDim: function(t) {
return this.getRawData().mapDimension(t, !0)
},
getProgressive: function() {
return this.get("progressive")
},
getProgressiveThreshold: function() {
return this.get("progressiveThreshold")
},
getAxisTooltipData: null,
getTooltipPosition: null,
pipeTask: null,
preventIncremental: null,
pipelineContext: null
});
function lc(t) {
var e = t.name;
Uo(t) || (t.name = function(t) {
var i = t.getRawData()
, e = i.mapDimension("seriesName", !0)
, n = [];
return E(e, function(t) {
var e = i.getDimensionInfo(t);
e.displayName && n.push(e.displayName)
}),
n.join(" ")
}(t) || e)
}
function uc(t) {
return t.model.getRawData().count()
}
function hc(t) {
var e = t.model;
return e.setData(e.getRawData().cloneShallow()),
cc
}
function cc(t, e) {
e.outputData && t.end > e.outputData.count() && e.model.getRawData().cloneShallow(e.outputData)
}
function dc(e, i) {
E(e.CHANGABLE_METHODS, function(t) {
e.wrapMethod(t, T(fc, i))
})
}
function fc(t) {
var e = pc(t);
e && e.setOutputEnd(this.count())
}
function pc(t) {
var e = (t.ecModel || {}).scheduler
, i = e && e.getPipeline(t.uid);
if (i) {
var n = i.currentTask;
if (n) {
var o = n.agentStubMap;
o && (n = o.get(t.uid))
}
return n
}
}
b(sc, Xh),
b(sc, Ru);
var gc = function() {
this.group = new Ci,
this.uid = Nl("viewComponent")
};
gc.prototype = {
constructor: gc,
init: function(t, e) {},
render: function(t, e, i, n) {},
dispose: function() {},
filterForExposedEvent: null
};
var mc = gc.prototype;
mc.updateView = mc.updateLayout = mc.updateVisual = function(t, e, i, n) {}
,
oa(gc),
ua(gc, {
registerWhenExtend: !0
});
function vc() {
var s = jo();
return function(t) {
var e = s(t)
, i = t.pipelineContext
, n = e.large
, o = e.progressiveRender
, a = e.large = i && i.large
, r = e.progressiveRender = i && i.progressiveRender;
return !!(n ^ a || o ^ r) && "reset"
}
}
var yc = jo()
, xc = vc();
function _c() {
this.group = new Ci,
this.uid = Nl("viewChart"),
this.renderTask = Yh({
plan: Mc,
reset: Ic
}),
this.renderTask.context = {
view: this
}
}
var wc = _c.prototype = {
type: "chart",
init: function(t, e) {},
render: function(t, e, i, n) {},
highlight: function(t, e, i, n) {
Sc(t.getData(), n, "emphasis")
},
downplay: function(t, e, i, n) {
Sc(t.getData(), n, "normal")
},
remove: function(t, e) {
this.group.removeAll()
},
dispose: function() {},
incrementalPrepareRender: null,
incrementalRender: null,
updateTransform: null,
filterForExposedEvent: null
};
function bc(t, e, i) {
if (t && (t.trigger(e, i),
t.isGroup && !Qs(t)))
for (var n = 0, o = t.childCount(); n < o; n++)
bc(t.childAt(n), e, i)
}
function Sc(e, t, i) {
var n = Yo(e, t)
, o = t && null != t.highlightKey ? tl(t.highlightKey) : null;
null != n ? E(Vo(n), function(t) {
bc(e.getItemGraphicEl(t), i, o)
}) : e.eachItemGraphicEl(function(t) {
bc(t, i, o)
})
}
function Mc(t) {
return xc(t.model)
}
function Ic(t) {
var e = t.model
, i = t.ecModel
, n = t.api
, o = t.payload
, a = e.pipelineContext.progressiveRender
, r = t.view
, s = o && yc(o).updateMethod
, l = a ? "incrementalPrepareRender" : s && r[s] ? s : "render";
return "render" !== l && r[l](e, i, n, o),
Tc[l]
}
wc.updateView = wc.updateLayout = wc.updateVisual = function(t, e, i, n) {
this.render(t, e, i, n)
}
,
oa(_c),
ua(_c, {
registerWhenExtend: !0
}),
_c.markUpdateMethod = function(t, e) {
yc(t).updateMethod = e
}
;
var Tc = {
incrementalPrepareRender: {
progress: function(t, e) {
e.view.incrementalRender(t, e.model, e.ecModel, e.api, e.payload)
}
},
render: {
forceFirstProgress: !0,
progress: function(t, e) {
e.view.render(e.model, e.ecModel, e.api, e.payload)
}
}
}
, Ac = "\0__throttleOriginMethod"
, Dc = "\0__throttleRate"
, Cc = "\0__throttleType";
function Lc(t, i, n) {
var o, a, r, s, l, u = 0, h = 0, c = null;
function d() {
h = (new Date).getTime(),
c = null,
t.apply(r, s || [])
}
i = i || 0;
function e() {
o = (new Date).getTime(),
r = this,
s = arguments;
var t = l || i
, e = l || n;
l = null,
a = o - (e ? u : h) - t,
clearTimeout(c),
e ? c = setTimeout(d, t) : 0 <= a ? d() : c = setTimeout(d, -a),
u = o
}
return e.clear = function() {
c && (clearTimeout(c),
c = null)
}
,
e.debounceNextCall = function(t) {
l = t
}
,
e
}
function kc(t, e, i, n) {
var o = t[e];
if (o) {
var a = o[Ac] || o
, r = o[Cc];
if (o[Dc] !== i || r !== n) {
if (null == i || !n)
return t[e] = a;
(o = t[e] = Lc(a, i, "debounce" === n))[Ac] = a,
o[Cc] = n,
o[Dc] = i
}
return o
}
}
function Pc(t, e) {
var i = t[e];
i && i[Ac] && (t[e] = i[Ac])
}
var Nc = {
createOnAllSeries: !0,
performRawSeries: !0,
reset: function(e, t) {
var i = e.getData()
, a = (e.visualColorAccessPath || "itemStyle.color").split(".")
, n = e.get(a)
, o = !C(n) || n instanceof cs ? null : n;
n && !o || (n = e.getColorFromPalette(e.name, null, t.getSeriesCount())),
i.setVisual("color", n);
var r = (e.visualBorderColorAccessPath || "itemStyle.borderColor").split(".")
, s = e.get(r);
if (i.setVisual("borderColor", s),
!t.isSeriesFiltered(e)) {
o && i.each(function(t) {
i.setItemVisual(t, "color", o(e.getDataParams(t)))
});
return {
dataEach: i.hasItemOption ? function(t, e) {
var i = t.getItemModel(e)
, n = i.get(a, !0)
, o = i.get(r, !0);
null != n && t.setItemVisual(e, "color", n),
null != o && t.setItemVisual(e, "borderColor", o)
}
: null
}
}
}
}
, Oc = {
legend: {
selector: {
all: "全选",
inverse: "反选"
}
},
toolbox: {
brush: {
title: {
rect: "矩形选择",
polygon: "圈选",
lineX: "横向选择",
lineY: "纵向选择",
keep: "保持选择",
clear: "清除选择"
}
},
dataView: {
title: "数据视图",
lang: ["数据视图", "关闭", "刷新"]
},
dataZoom: {
title: {
zoom: "区域缩放",
back: "区域缩放还原"
}
},
magicType: {
title: {
line: "切换为折线图",
bar: "切换为柱状图",
stack: "切换为堆叠",
tiled: "切换为平铺"
}
},
restore: {
title: "还原"
},
saveAsImage: {
title: "保存为图片",
lang: ["右键另存为图片"]
}
},
series: {
typeNames: {
pie: "饼图",
bar: "柱状图",
line: "折线图",
scatter: "散点图",
effectScatter: "涟漪散点图",
radar: "雷达图",
tree: "树图",
treemap: "矩形树图",
boxplot: "箱型图",
candlestick: "K线图",
k: "K线图",
heatmap: "热力图",
map: "地图",
parallel: "平行坐标图",
lines: "线图",
graph: "关系图",
sankey: "桑基图",
funnel: "漏斗图",
gauge: "仪表盘图",
pictorialBar: "象形柱图",
themeRiver: "主题河流图",
sunburst: "旭日图"
}
},
aria: {
general: {
withTitle: "这是一个关于“{title}”的图表。",
withoutTitle: "这是一个图表,"
},
series: {
single: {
prefix: "",
withName: "图表类型是{seriesType},表示{seriesName}。",
withoutName: "图表类型是{seriesType}。"
},
multiple: {
prefix: "它由{seriesCount}个图表系列组成。",
withName: "第{seriesId}个系列是一个表示{seriesName}的{seriesType},",
withoutName: "第{seriesId}个系列是一个{seriesType},",
separator: {
middle: ";",
end: "。"
}
}
},
data: {
allData: "其数据是——",
partialData: "其中,前{displayCnt}项是——",
withName: "{name}的数据是{value}",
withoutName: "{value}",
separator: {
middle: ",",
end: ""
}
}
}
}
, Ec = function(t, e) {
var a = e.getModel("aria");
if (a.get("show"))
if (a.get("description"))
t.setAttribute("aria-label", a.get("description"));
else {
var h = 0;
e.eachSeries(function(t, e) {
++h
}, this);
var i, c = a.get("data.maxCount") || 10, n = a.get("series.maxCount") || 10, d = Math.min(h, n);
if (!(h < 1)) {
var o = function() {
var t = e.getModel("title").option;
t && t.length && (t = t[0]);
return t && t.text
}();
i = o ? p(g("general.withTitle"), {
title: o
}) : g("general.withoutTitle");
var f = [];
i += p(g(1 < h ? "series.multiple.prefix" : "series.single.prefix"), {
seriesCount: h
}),
e.eachSeries(function(t, e) {
if (e < d) {
var i, n = t.get("name"), o = "series." + (1 < h ? "multiple" : "single") + ".";
i = p(i = g(n ? o + "withName" : o + "withoutName"), {
seriesId: t.seriesIndex,
seriesName: t.get("name"),
seriesType: function(t) {
return Oc.series.typeNames[t] || "自定义图"
}(t.subType)
});
var a = t.getData();
(window.data = a).count() > c ? i += p(g("data.partialData"), {
displayCnt: c
}) : i += g("data.allData");
for (var r = [], s = 0; s < a.count(); s++)
if (s < c) {
var l = a.getName(s)
, u = Hh(a, s);
r.push(p(g(l ? "data.withName" : "data.withoutName"), {
name: l,
value: u
}))
}
i += r.join(g("data.separator.middle")) + g("data.separator.end"),
f.push(i)
}
}),
i += f.join(g("series.multiple.separator.middle")) + g("series.multiple.separator.end"),
t.setAttribute("aria-label", i)
}
}
function p(t, e) {
if ("string" != typeof t)
return t;
var i = t;
return E(e, function(t, e) {
i = i.replace(new RegExp("\\{\\s*" + e + "\\s*\\}","g"), t)
}),
i
}
function g(t) {
var e = a.get(t);
if (null != e)
return e;
for (var i = t.split("."), n = Oc.aria, o = 0; o < i.length; ++o)
n = n[i[o]];
return n
}
}
, Rc = Math.PI;
function zc(t, e, i, n) {
this.ecInstance = t,
this.api = e,
this.unfinished;
i = this._dataProcessorHandlers = i.slice(),
n = this._visualHandlers = n.slice();
this._allHandlers = i.concat(n),
this._stageTaskMap = Q()
}
var Bc = zc.prototype;
function Vc(l, t, u, h, c) {
var d;
function f(t, e) {
return t.setDirty && (!t.dirtyMap || t.dirtyMap.get(e.__pipeline.id))
}
c = c || {},
E(t, function(n, t) {
if (!c.visualType || c.visualType === n.visualType) {
var e = l._stageTaskMap.get(n.uid)
, i = e.seriesTaskMap
, o = e.overallTask;
if (o) {
var a, r = o.agentStubMap;
r.each(function(t) {
f(c, t) && (t.dirty(),
a = !0)
}),
a && o.dirty(),
Gc(o, h);
var s = l.getPerformArgs(o, c.block);
r.each(function(t) {
t.perform(s)
}),
d |= o.perform(s)
} else
i && i.each(function(t, e) {
f(c, t) && t.dirty();
var i = l.getPerformArgs(t, c.block);
i.skip = !n.performRawSeries && u.isSeriesFiltered(t.context.model),
Gc(t, h),
d |= t.perform(i)
})
}
}),
l.unfinished |= d
}
Bc.restoreData = function(t, e) {
t.restoreData(e),
this._stageTaskMap.each(function(t) {
var e = t.overallTask;
e && e.dirty()
})
}
,
Bc.getPerformArgs = function(t, e) {
if (t.__pipeline) {
var i = this._pipelineMap.get(t.__pipeline.id)
, n = i.context
, o = !e && i.progressiveEnabled && (!n || n.progressiveRender) && t.__idxInPipeline > i.blockIndex ? i.step : null
, a = n && n.modDataCount;
return {
step: o,
modBy: null != a ? Math.ceil(a / o) : null,
modDataCount: a
}
}
}
,
Bc.getPipeline = function(t) {
return this._pipelineMap.get(t)
}
,
Bc.updateStreamModes = function(t, e) {
var i = this._pipelineMap.get(t.uid)
, n = t.getData().count()
, o = i.progressiveEnabled && e.incrementalPrepareRender && n >= i.threshold
, a = t.get("large") && n >= t.get("largeThreshold")
, r = "mod" === t.get("progressiveChunkMode") ? n : null;
t.pipelineContext = i.context = {
progressiveRender: o,
modDataCount: r,
large: a
}
}
,
Bc.restorePipelines = function(t) {
var n = this
, o = n._pipelineMap = Q();
t.eachSeries(function(t) {
var e = t.getProgressive()
, i = t.uid;
o.set(i, {
id: i,
head: null,
tail: null,
threshold: t.getProgressiveThreshold(),
progressiveEnabled: e && !(t.preventIncremental && t.preventIncremental()),
blockIndex: -1,
step: Math.round(e || 700),
count: 0
}),
Kc(n, t, t.dataTask)
})
}
,
Bc.prepareStageTasks = function() {
var i = this._stageTaskMap
, n = this.ecInstance.getModel()
, o = this.api;
E(this._allHandlers, function(t) {
var e = i.get(t.uid) || i.set(t.uid, []);
t.reset && function(n, o, t, a, r) {
var s = t.seriesTaskMap || (t.seriesTaskMap = Q())
, e = o.seriesType
, i = o.getTargetSeries;
o.createOnAllSeries ? a.eachRawSeries(l) : e ? a.eachRawSeriesByType(e, l) : i && i(a, r).each(l);
function l(t) {
var e = t.uid
, i = s.get(e) || s.set(e, Yh({
plan: Uc,
reset: Xc,
count: qc
}));
i.context = {
model: t,
ecModel: a,
api: r,
useClearVisual: o.isVisual && !o.isLayout,
plan: o.plan,
reset: o.reset,
scheduler: n
},
Kc(n, t, i)
}
var u = n._pipelineMap;
s.each(function(t, e) {
u.get(e) || (t.dispose(),
s.removeKey(e))
})
}(this, t, e, n, o),
t.overallReset && function(n, t, e, i, o) {
var a = e.overallTask = e.overallTask || Yh({
reset: Fc
});
a.context = {
ecModel: i,
api: o,
overallReset: t.overallReset,
scheduler: n
};
var r = a.agentStubMap = a.agentStubMap || Q()
, s = t.seriesType
, l = t.getTargetSeries
, u = !0
, h = t.modifyOutputEnd;
s ? i.eachRawSeriesByType(s, c) : l ? l(i, o).each(c) : (u = !1,
E(i.getSeries(), c));
function c(t) {
var e = t.uid
, i = r.get(e);
i || (i = r.set(e, Yh({
reset: Wc,
onDirty: Zc
})),
a.dirty()),
i.context = {
model: t,
overallProgress: u,
modifyOutputEnd: h
},
i.agent = a,
i.__block = u,
Kc(n, t, i)
}
var d = n._pipelineMap;
r.each(function(t, e) {
d.get(e) || (t.dispose(),
a.dirty(),
r.removeKey(e))
})
}(this, t, e, n, o)
}, this)
}
,
Bc.prepareView = function(t, e, i, n) {
var o = t.renderTask
, a = o.context;
a.model = e,
a.ecModel = i,
a.api = n,
o.__block = !t.incrementalPrepareRender,
Kc(this, e, o)
}
,
Bc.performDataProcessorTasks = function(t, e) {
Vc(this, this._dataProcessorHandlers, t, e, {
block: !0
})
}
,
Bc.performVisualTasks = function(t, e, i) {
Vc(this, this._visualHandlers, t, e, i)
}
,
Bc.performSeriesTasks = function(t) {
var e;
t.eachSeries(function(t) {
e |= t.dataTask.perform()
}),
this.unfinished |= e
}
,
Bc.plan = function() {
this._pipelineMap.each(function(t) {
var e = t.tail;
do {
if (e.__block) {
t.blockIndex = e.__idxInPipeline;
break
}
e = e.getUpstream()
} while (e)
})
}
;
var Gc = Bc.updatePayload = function(t, e) {
"remain" !== e && (t.context.payload = e)
}
;
function Fc(t) {
t.overallReset(t.ecModel, t.api, t.payload)
}
function Wc(t, e) {
return t.overallProgress && Hc
}
function Hc() {
this.agent.dirty(),
this.getDownstream().dirty()
}
function Zc() {
this.agent && this.agent.dirty()
}
function Uc(t) {
return t.plan && t.plan(t.model, t.ecModel, t.api, t.payload)
}
function Xc(t) {
t.useClearVisual && t.data.clearAllVisual();
var e = t.resetDefines = Vo(t.reset(t.model, t.ecModel, t.api, t.payload));
return 1 < e.length ? O(e, function(t, e) {
return jc(e)
}) : Yc
}
var Yc = jc(0);
function jc(a) {
return function(t, e) {
var i = e.data
, n = e.resetDefines[a];
if (n && n.dataEach)
for (var o = t.start; o < t.end; o++)
n.dataEach(i, o);
else
n && n.progress && n.progress(t, i)
}
}
function qc(t) {
return t.data.count()
}
function Kc(t, e, i) {
var n = e.uid
, o = t._pipelineMap.get(n);
o.head || (o.head = i),
o.tail && o.tail.pipe(i),
(o.tail = i).__idxInPipeline = o.count++,
i.__pipeline = o
}
zc.wrapStageHandler = function(t, e) {
return C(t) && (t = {
overallReset: t,
seriesType: function(t) {
$c = null;
try {
t(Jc, Qc)
} catch (t) {}
return $c
}(t)
}),
t.uid = Nl("stageHandler"),
e && (t.visualType = e),
t
}
;
var $c, Jc = {}, Qc = {};
function td(t, e) {
for (var i in e.prototype)
t[i] = et
}
td(Jc, ih),
td(Qc, rh),
Jc.eachSeriesByType = Jc.eachRawSeriesByType = function(t) {
$c = t
}
,
Jc.eachComponent = function(t) {
"series" === t.mainType && t.subType && ($c = t.subType)
}
;
function ed() {
return {
axisLine: {
lineStyle: {
color: od
}
},
axisTick: {
lineStyle: {
color: od
}
},
axisLabel: {
textStyle: {
color: od
}
},
splitLine: {
lineStyle: {
type: "dashed",
color: "#aaa"
}
},
splitArea: {
areaStyle: {
color: od
}
}
}
}
var id = ["#37A2DA", "#32C5E9", "#67E0E3", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#E062AE", "#E690D1", "#e7bcf3", "#9d96f5", "#8378EA", "#96BFFF"]
, nd = {
color: id,
colorLayer: [["#37A2DA", "#ffd85c", "#fd7b5f"], ["#37A2DA", "#67E0E3", "#FFDB5C", "#ff9f7f", "#E062AE", "#9d96f5"], ["#37A2DA", "#32C5E9", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#e7bcf3", "#8378EA", "#96BFFF"], id]
}
, od = "#eee"
, ad = ["#dd6b66", "#759aa0", "#e69d87", "#8dc1a9", "#ea7e53", "#eedd78", "#73a373", "#73b9bc", "#7289ab", "#91ca8c", "#f49f42"]
, rd = {
color: ad,
backgroundColor: "#333",
tooltip: {
axisPointer: {
lineStyle: {
color: od
},
crossStyle: {
color: od
},
label: {
color: "#000"
}
}
},
legend: {
textStyle: {
color: od
}
},
textStyle: {
color: od
},
title: {
textStyle: {
color: od
}
},
toolbox: {
iconStyle: {
normal: {
borderColor: od
}
}
},
dataZoom: {
textStyle: {
color: od
}
},
visualMap: {
textStyle: {
color: od
}
},
timeline: {
lineStyle: {
color: od
},
itemStyle: {
normal: {
color: ad[1]
}
},
label: {
normal: {
textStyle: {
color: od
}
}
},
controlStyle: {
normal: {
color: od,
borderColor: od
}
}
},
timeAxis: ed(),
logAxis: ed(),
valueAxis: ed(),
categoryAxis: ed(),
line: {
symbol: "circle"
},
graph: {
color: ad
},
gauge: {
title: {
textStyle: {
color: od
}
}
},
candlestick: {
itemStyle: {
normal: {
color: "#FD1050",
color0: "#0CF49B",
borderColor: "#FD1050",
borderColor0: "#0CF49B"
}
}
}
};
rd.categoryAxis.splitLine.show = !1,
ku.extend({
type: "dataset",
defaultOption: {
seriesLayoutBy: Hu,
sourceHeader: null,
dimensions: null,
source: null
},
optionUpdated: function() {
!function(t) {
var e = t.option.source
, i = Fu;
if (V(e))
i = Wu;
else if (L(e)) {
0 === e.length && (i = Bu);
for (var n = 0, o = e.length; n < o; n++) {
var a = e[n];
if (null != a) {
if (L(a)) {
i = Bu;
break
}
if (z(a)) {
i = Vu;
break
}
}
}
} else if (z(e)) {
for (var r in e)
if (e.hasOwnProperty(r) && N(e[r])) {
i = Gu;
break
}
} else if (null != e)
throw new Error("Invalid data");
Yu(t).sourceFormat = i
}(this)
}
}),
gc.extend({
type: "dataset"
});
var sd = Ar.extend({
type: "ellipse",
shape: {
cx: 0,
cy: 0,
rx: 0,
ry: 0
},
buildPath: function(t, e) {
var i = e.cx
, n = e.cy
, o = e.rx
, a = e.ry
, r = .5522848 * o
, s = .5522848 * a;
t.moveTo(i - o, n),
t.bezierCurveTo(i - o, n - s, i - r, n - a, i, n - a),
t.bezierCurveTo(i + r, n - a, i + o, n - s, i + o, n),
t.bezierCurveTo(i + o, n + s, i + r, n + a, i, n + a),
t.bezierCurveTo(i - r, n + a, i - o, n + s, i - o, n),
t.closePath()
}
})
, ld = /[\s,]+/;
function ud(t) {
R(t) && (t = (new DOMParser).parseFromString(t, "text/xml"));
for (9 === t.nodeType && (t = t.firstChild); "svg" !== t.nodeName.toLowerCase() || 1 !== t.nodeType; )
t = t.nextSibling;
return t
}
function hd() {
this._defs = {},
this._root = null,
this._isDefine = !1,
this._isText = !1
}
hd.prototype.parse = function(t, e) {
e = e || {};
var i = ud(t);
if (!i)
throw new Error("Illegal svg");
var n = new Ci;
this._root = n;
var o = i.getAttribute("viewBox") || ""
, a = parseFloat(i.getAttribute("width") || e.width)
, r = parseFloat(i.getAttribute("height") || e.height);
isNaN(a) && (a = null),
isNaN(r) && (r = null),
md(i, n, null, !0);
for (var s, l, u = i.firstChild; u; )
this._parseNode(u, n),
u = u.nextSibling;
if (o) {
var h = j(o).split(ld);
4 <= h.length && (s = {
x: parseFloat(h[0] || 0),
y: parseFloat(h[1] || 0),
width: parseFloat(h[2]),
height: parseFloat(h[3])
})
}
if (s && null != a && null != r && (l = wd(s, a, r),
!e.ignoreViewBox)) {
var c = n;
(n = new Ci).add(c),
c.scale = l.scale.slice(),
c.position = l.position.slice()
}
return e.ignoreRootClip || null == a || null == r || n.setClipPath(new rs({
shape: {
x: 0,
y: 0,
width: a,
height: r
}
})),
{
root: n,
width: a,
height: r,
viewBoxRect: s,
viewBoxTransform: l
}
}
,
hd.prototype._parseNode = function(t, e) {
var i, n, o = t.nodeName.toLowerCase();
if ("defs" === o ? this._isDefine = !0 : "text" === o && (this._isText = !0),
this._isDefine) {
if (n = dd[o]) {
var a = n.call(this, t)
, r = t.getAttribute("id");
r && (this._defs[r] = a)
}
} else
(n = cd[o]) && (i = n.call(this, t, e),
e.add(i));
for (var s = t.firstChild; s; )
1 === s.nodeType && this._parseNode(s, i),
3 === s.nodeType && this._isText && this._parseText(s, i),
s = s.nextSibling;
"defs" === o ? this._isDefine = !1 : "text" === o && (this._isText = !1)
}
,
hd.prototype._parseText = function(t, e) {
if (1 === t.nodeType) {
var i = t.getAttribute("dx") || 0
, n = t.getAttribute("dy") || 0;
this._textX += parseFloat(i),
this._textY += parseFloat(n)
}
var o = new Ur({
style: {
text: t.textContent,
transformText: !0
},
position: [this._textX || 0, this._textY || 0]
});
fd(e, o),
md(t, o, this._defs);
var a = o.style.fontSize;
a && a < 9 && (o.style.fontSize = 9,
o.scale = o.scale || [1, 1],
o.scale[0] *= a / 9,
o.scale[1] *= a / 9);
var r = o.getBoundingRect();
return this._textX += r.width,
e.add(o),
o
}
;
var cd = {
g: function(t, e) {
var i = new Ci;
return fd(e, i),
md(t, i, this._defs),
i
},
rect: function(t, e) {
var i = new rs;
return fd(e, i),
md(t, i, this._defs),
i.setShape({
x: parseFloat(t.getAttribute("x") || 0),
y: parseFloat(t.getAttribute("y") || 0),
width: parseFloat(t.getAttribute("width") || 0),
height: parseFloat(t.getAttribute("height") || 0)
}),
i
},
circle: function(t, e) {
var i = new Yr;
return fd(e, i),
md(t, i, this._defs),
i.setShape({
cx: parseFloat(t.getAttribute("cx") || 0),
cy: parseFloat(t.getAttribute("cy") || 0),
r: parseFloat(t.getAttribute("r") || 0)
}),
i
},
line: function(t, e) {
var i = new ls;
return fd(e, i),
md(t, i, this._defs),
i.setShape({
x1: parseFloat(t.getAttribute("x1") || 0),
y1: parseFloat(t.getAttribute("y1") || 0),
x2: parseFloat(t.getAttribute("x2") || 0),
y2: parseFloat(t.getAttribute("y2") || 0)
}),
i
},
ellipse: function(t, e) {
var i = new sd;
return fd(e, i),
md(t, i, this._defs),
i.setShape({
cx: parseFloat(t.getAttribute("cx") || 0),
cy: parseFloat(t.getAttribute("cy") || 0),
rx: parseFloat(t.getAttribute("rx") || 0),
ry: parseFloat(t.getAttribute("ry") || 0)
}),
i
},
polygon: function(t, e) {
var i = t.getAttribute("points");
i = i && pd(i);
var n = new Qr({
shape: {
points: i || []
}
});
return fd(e, n),
md(t, n, this._defs),
n
},
polyline: function(t, e) {
var i = new Ar;
fd(e, i),
md(t, i, this._defs);
var n = t.getAttribute("points");
return n = n && pd(n),
new ts({
shape: {
points: n || []
}
})
},
image: function(t, e) {
var i = new Qn;
return fd(e, i),
md(t, i, this._defs),
i.setStyle({
image: t.getAttribute("xlink:href"),
x: t.getAttribute("x"),
y: t.getAttribute("y"),
width: t.getAttribute("width"),
height: t.getAttribute("height")
}),
i
},
text: function(t, e) {
var i = t.getAttribute("x") || 0
, n = t.getAttribute("y") || 0
, o = t.getAttribute("dx") || 0
, a = t.getAttribute("dy") || 0;
this._textX = parseFloat(i) + parseFloat(o),
this._textY = parseFloat(n) + parseFloat(a);
var r = new Ci;
return fd(e, r),
md(t, r, this._defs),
r
},
tspan: function(t, e) {
var i = t.getAttribute("x")
, n = t.getAttribute("y");
null != i && (this._textX = parseFloat(i)),
null != n && (this._textY = parseFloat(n));
var o = t.getAttribute("dx") || 0
, a = t.getAttribute("dy") || 0
, r = new Ci;
return fd(e, r),
md(t, r, this._defs),
this._textX += o,
this._textY += a,
r
},
path: function(t, e) {
var i = Zr(t.getAttribute("d") || "");
return fd(e, i),
md(t, i, this._defs),
i
}
}
, dd = {
lineargradient: function(t) {
var e = parseInt(t.getAttribute("x1") || 0, 10)
, i = parseInt(t.getAttribute("y1") || 0, 10)
, n = parseInt(t.getAttribute("x2") || 10, 10)
, o = parseInt(t.getAttribute("y2") || 0, 10)
, a = new gs(e,i,n,o);
return function(t, e) {
var i = t.firstChild;
for (; i; ) {
if (1 === i.nodeType) {
var n = i.getAttribute("offset");
n = 0 < n.indexOf("%") ? parseInt(n, 10) / 100 : n ? parseFloat(n) : 0;
var o = i.getAttribute("stop-color") || "#000000";
e.addColorStop(n, o)
}
i = i.nextSibling
}
}(t, a),
a
},
radialgradient: function(t) {}
};
function fd(t, e) {
t && t.__inheritedStyle && (e.__inheritedStyle || (e.__inheritedStyle = {}),
D(e.__inheritedStyle, t.__inheritedStyle))
}
function pd(t) {
for (var e = j(t).split(ld), i = [], n = 0; n < e.length; n += 2) {
var o = parseFloat(e[n])
, a = parseFloat(e[n + 1]);
i.push([o, a])
}
return i
}
var gd = {
fill: "fill",
stroke: "stroke",
"stroke-width": "lineWidth",
opacity: "opacity",
"fill-opacity": "fillOpacity",
"stroke-opacity": "strokeOpacity",
"stroke-dasharray": "lineDash",
"stroke-dashoffset": "lineDashOffset",
"stroke-linecap": "lineCap",
"stroke-linejoin": "lineJoin",
"stroke-miterlimit": "miterLimit",
"font-family": "fontFamily",
"font-size": "fontSize",
"font-style": "fontStyle",
"font-weight": "fontWeight",
"text-align": "textAlign",
"alignment-baseline": "textBaseline"
};
function md(t, e, i, n) {
var o = e.__inheritedStyle || {}
, a = "text" === e.type;
if (1 === t.nodeType && (function(t, e) {
var i = t.getAttribute("transform");
if (i) {
i = i.replace(/,/g, " ");
var n = null
, o = [];
i.replace(xd, function(t, e, i) {
o.push(e, i)
});
for (var a = o.length - 1; 0 < a; a -= 2) {
var r = o[a]
, s = o[a - 1];
switch (n = n || ae(),
s) {
case "translate":
r = j(r).split(ld),
ue(n, n, [parseFloat(r[0]), parseFloat(r[1] || 0)]);
break;
case "scale":
r = j(r).split(ld),
ce(n, n, [parseFloat(r[0]), parseFloat(r[1] || r[0])]);
break;
case "rotate":
r = j(r).split(ld),
he(n, n, parseFloat(r[0]));
break;
case "skew":
r = j(r).split(ld),
console.warn("Skew transform is not supported yet");
break;
case "matrix":
r = j(r).split(ld);
n[0] = parseFloat(r[0]),
n[1] = parseFloat(r[1]),
n[2] = parseFloat(r[2]),
n[3] = parseFloat(r[3]),
n[4] = parseFloat(r[4]),
n[5] = parseFloat(r[5])
}
}
e.setLocalTransform(n)
}
}(t, e),
P(o, function(t) {
var e = t.getAttribute("style")
, i = {};
if (!e)
return i;
var n, o = {};
_d.lastIndex = 0;
for (; null != (n = _d.exec(e)); )
o[n[1]] = n[2];
for (var a in gd)
gd.hasOwnProperty(a) && null != o[a] && (i[gd[a]] = o[a]);
return i
}(t)),
!n))
for (var r in gd)
if (gd.hasOwnProperty(r)) {
var s = t.getAttribute(r);
null != s && (o[gd[r]] = s)
}
var l = a ? "textFill" : "fill"
, u = a ? "textStroke" : "stroke";
e.style = e.style || new Ui;
var h = e.style;
null != o.fill && h.set(l, yd(o.fill, i)),
null != o.stroke && h.set(u, yd(o.stroke, i)),
E(["lineWidth", "opacity", "fillOpacity", "strokeOpacity", "miterLimit", "fontSize"], function(t) {
var e = "lineWidth" === t && a ? "textStrokeWidth" : t;
null != o[t] && h.set(e, parseFloat(o[t]))
}),
o.textBaseline && "auto" !== o.textBaseline || (o.textBaseline = "alphabetic"),
"alphabetic" === o.textBaseline && (o.textBaseline = "bottom"),
"start" === o.textAlign && (o.textAlign = "left"),
"end" === o.textAlign && (o.textAlign = "right"),
E(["lineDashOffset", "lineCap", "lineJoin", "fontWeight", "fontFamily", "fontStyle", "textAlign", "textBaseline"], function(t) {
null != o[t] && h.set(t, o[t])
}),
o.lineDash && (e.style.lineDash = j(o.lineDash).split(ld)),
h[u] && "none" !== h[u] && (e[u] = !0),
e.__inheritedStyle = o
}
var vd = /url\(\s*#(.*?)\)/;
function yd(t, e) {
var i = e && t && t.match(vd);
return i ? e[j(i[1])] : t
}
var xd = /(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g;
var _d = /([^\s:;]+)\s*:\s*([^:;]+)/g;
function wd(t, e, i) {
var n = e / t.width
, o = i / t.height
, a = Math.min(n, o);
return {
scale: [a, a],
position: [-(t.x + t.width / 2) * a + e / 2, -(t.y + t.height / 2) * a + i / 2]
}
}
var bd = Q()
, Sd = {
registerMap: function(t, e, i) {
var n;
return E(n = L(e) ? e : e.svg ? [{
type: "svg",
source: e.svg,
specialAreas: e.specialAreas
}] : (e.geoJson && !e.features && (i = e.specialAreas,
e = e.geoJson),
[{
type: "geoJSON",
source: e,
specialAreas: i
}]), function(t) {
var e = t.type;
"geoJson" === e && (e = t.type = "geoJSON"),
(0,
Md[e])(t)
}),
bd.set(t, n)
},
retrieveMap: function(t) {
return bd.get(t)
}
}
, Md = {
geoJSON: function(t) {
var e = t.source;
t.geoJSON = R(e) ? "undefined" != typeof JSON && JSON.parse ? JSON.parse(e) : new Function("return (" + e + ");")() : e
},
svg: function(t) {
t.svgXML = ud(t.source)
}
}
, Id = Y
, Td = E
, Ad = C
, Dd = z
, Cd = ku.parseClassType
, Ld = {
PROCESSOR: {
FILTER: 1e3,
SERIES_FILTER: 800,
STATISTIC: 5e3
},
VISUAL: {
LAYOUT: 1e3,
PROGRESSIVE_LAYOUT: 1100,
GLOBAL: 2e3,
CHART: 3e3,
POST_CHART_LAYOUT: 3500,
COMPONENT: 4e3,
BRUSH: 5e3
}
}
, kd = "__flagInMainProcess"
, Pd = "__optionUpdated"
, Nd = /^[a-zA-Z0-9_]+$/;
function Od(n, o) {
return function(t, e, i) {
!o && this._disposed || (t = t && t.toLowerCase(),
Ct.prototype[n].call(this, t, e, i))
}
}
function Ed() {
Ct.call(this)
}
function Rd(t, e, i) {
i = i || {},
"string" == typeof e && (e = sf[e]),
this.id,
this.group,
this._dom = t;
var n = this._zr = ko(t, {
renderer: i.renderer || "canvas",
devicePixelRatio: i.devicePixelRatio,
width: i.width,
height: i.height
});
this._throttledZrFlush = Lc(A(n.flush, n), 17),
(e = k(e)) && Lh(e, !0),
this._theme = e,
this._chartsViews = [],
this._chartsMap = {},
this._componentsViews = [],
this._componentsMap = {},
this._coordSysMgr = new lh;
var o = this._api = function(i) {
var t = i._coordSysMgr;
return P(new rh(i), {
getCoordinateSystems: A(t.getCoordinateSystems, t),
getComponentByElement: function(t) {
for (; t; ) {
var e = t.__ecComponentInfo;
if (null != e)
return i._model.getComponent(e.mainType, e.index);
t = t.parent
}
}
})
}(this);
function a(t, e) {
return t.__prio - e.__prio
}
zi(rf, a),
zi(nf, a),
this._scheduler = new zc(this,o,nf,rf),
Ct.call(this, this._ecEventProcessor = new Qd),
this._messageCenter = new Ed,
this._initEvents(),
this.resize = A(this.resize, this),
this._pendingActions = [],
n.animation.on("frame", this._onframe, this),
function(t, e) {
t.on("rendered", function() {
e.trigger("rendered"),
!t.animation.isFinished() || e[Pd] || e._scheduler.unfinished || e._pendingActions.length || e.trigger("finished")
})
}(n, this),
K(this)
}
Ed.prototype.on = Od("on", !0),
Ed.prototype.off = Od("off", !0),
Ed.prototype.one = Od("one", !0),
b(Ed, Ct);
var zd = Rd.prototype;
function Bd(t, e, i) {
if (!this._disposed) {
var n, o = this._model, a = this._coordSysMgr.getCoordinateSystems();
e = Ko(o, e);
for (var r = 0; r < a.length; r++) {
var s = a[r];
if (s[t] && null != (n = s[t](o, e, i)))
return n
}
}
}
zd._onframe = function() {
if (!this._disposed) {
var t = this._scheduler;
if (this[Pd]) {
var e = this[Pd].silent;
this[kd] = !0,
Gd(this),
Vd.update.call(this),
this[kd] = !1,
this[Pd] = !1,
Zd.call(this, e),
Ud.call(this, e)
} else if (t.unfinished) {
var i = 1
, n = this._model
, o = this._api;
t.unfinished = !1;
do {
var a = +new Date;
t.performSeriesTasks(n),
t.performDataProcessorTasks(n),
Wd(this, n),
t.performVisualTasks(n),
qd(this, this._model, o, "remain"),
i -= +new Date - a
} while (0 < i && t.unfinished);
t.unfinished || this._zr.flush()
}
}
}
,
zd.getDom = function() {
return this._dom
}
,
zd.getZr = function() {
return this._zr
}
,
zd.setOption = function(t, e, i) {
if (!this._disposed) {
var n;
if (Dd(e) && (i = e.lazyUpdate,
n = e.silent,
e = e.notMerge),
this[kd] = !0,
!this._model || e) {
var o = new ph(this._api)
, a = this._theme
, r = this._model = new ih;
r.scheduler = this._scheduler,
r.init(null, null, a, o)
}
this._model.setOption(t, of),
i ? (this[Pd] = {
silent: n
},
this[kd] = !1) : (Gd(this),
Vd.update.call(this),
this._zr.flush(),
this[Pd] = !1,
this[kd] = !1,
Zd.call(this, n),
Ud.call(this, n))
}
}
,
zd.setTheme = function() {
console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")
}
,
zd.getModel = function() {
return this._model
}
,
zd.getOption = function() {
return this._model && this._model.getOption()
}
,
zd.getWidth = function() {
return this._zr.getWidth()
}
,
zd.getHeight = function() {
return this._zr.getHeight()
}
,
zd.getDevicePixelRatio = function() {
return this._zr.painter.dpr || window.devicePixelRatio || 1
}
,
zd.getRenderedCanvas = function(t) {
if (v.canvasSupported)
return (t = t || {}).pixelRatio = t.pixelRatio || 1,
t.backgroundColor = t.backgroundColor || this._model.get("backgroundColor"),
this._zr.painter.getRenderedCanvas(t)
}
,
zd.getSvgDataURL = function() {
if (v.svgSupported) {
var t = this._zr;
return E(t.storage.getDisplayList(), function(t) {
t.stopAnimation(!0)
}),
t.painter.toDataURL()
}
}
,
zd.getDataURL = function(t) {
if (!this._disposed) {
var e = (t = t || {}).excludeComponents
, i = this._model
, n = []
, o = this;
Td(e, function(t) {
i.eachComponent({
mainType: t
}, function(t) {
var e = o._componentsMap[t.__viewId];
e.group.ignore || (n.push(e),
e.group.ignore = !0)
})
});
var a = "svg" === this._zr.painter.getType() ? this.getSvgDataURL() : this.getRenderedCanvas(t).toDataURL("image/" + (t && t.type || "png"));
return Td(n, function(t) {
t.group.ignore = !1
}),
a
}
}
,
zd.getConnectedDataURL = function(o) {
if (!this._disposed && v.canvasSupported) {
var a = "svg" === o.type
, r = this.group
, s = Math.min
, l = Math.max;
if (hf[r]) {
var u = 1 / 0
, h = 1 / 0
, c = -1 / 0
, d = -1 / 0
, f = []
, i = o && o.pixelRatio || 1;
E(uf, function(t, e) {
if (t.group === r) {
var i = a ? t.getZr().painter.getSvgDom().innerHTML : t.getRenderedCanvas(k(o))
, n = t.getDom().getBoundingClientRect();
u = s(n.left, u),
h = s(n.top, h),
c = l(n.right, c),
d = l(n.bottom, d),
f.push({
dom: i,
left: n.left,
top: n.top
})
}
});
var t = (c *= i) - (u *= i)
, e = (d *= i) - (h *= i)
, n = y()
, p = ko(n, {
renderer: a ? "svg" : "canvas"
});
if (p.resize({
width: t,
height: e
}),
a) {
var g = "";
return Td(f, function(t) {
var e = t.left - u
, i = t.top - h;
g += '
" + O(t, function(t, e) {
var i = o.get(o.mapDimension(t.dim), n);
return au(t.name + " : " + i)
}).join("
")
},
getTooltipPosition: function(t) {
if (null != t)
for (var e = this.getData(), i = this.coordinateSystem, n = e.getValues(O(i.dimensions, function(t) {
return e.mapDimension(t)
}), t, !0), o = 0, a = n.length; o < a; o++)
if (!isNaN(n[o])) {
var r = i.getIndicatorAxes();
return i.coordToPoint(r[o].dataToCoord(n[o]), o)
}
},
defaultOption: {
zlevel: 0,
z: 2,
coordinateSystem: "radar",
legendHoverLink: !0,
radarIndex: 0,
lineStyle: {
width: 2,
type: "solid"
},
label: {
position: "top"
},
symbol: "emptyCircle",
symbolSize: 4
}
});
Cf({
type: "radar",
render: function(l, t, e) {
var i = l.coordinateSystem
, g = this.group
, m = l.getData()
, s = this._data;
function u(t, e) {
var i = t.getItemVisual(e, "symbol") || "circle"
, n = t.getItemVisual(e, "color");
if ("none" !== i) {
var o = function(t) {
return L(t) || (t = [+t, +t]),
t
}(t.getItemVisual(e, "symbolSize"))
, a = wg(i, -1, -1, 2, 2, n);
return a.attr({
style: {
strokeNoScale: !0
},
z2: 100,
scale: [o[0] / 2, o[1] / 2]
}),
a
}
}
function h(t, e, i, n, o, a) {
i.removeAll();
for (var r = 0; r < e.length - 1; r++) {
var s = u(n, o);
s && (t[s.__dimIdx = r] ? (s.attr("position", t[r]),
bl[a ? "initProps" : "updateProps"](s, {
position: e[r]
}, l, o)) : s.attr("position", e[r]),
i.add(s))
}
}
function c(t) {
return O(t, function(t) {
return [i.cx, i.cy]
})
}
m.diff(s).add(function(t) {
var e = m.getItemLayout(t);
if (e) {
var i = new Qr
, n = new ts
, o = {
shape: {
points: e
}
};
i.shape.points = c(e),
n.shape.points = c(e),
dl(i, o, l, t),
dl(n, o, l, t);
var a = new Ci
, r = new Ci;
a.add(n),
a.add(i),
a.add(r),
h(n.shape.points, e, r, m, t, !0),
m.setItemGraphicEl(t, a)
}
}).update(function(t, e) {
var i = s.getItemGraphicEl(e)
, n = i.childAt(0)
, o = i.childAt(1)
, a = i.childAt(2)
, r = {
shape: {
points: m.getItemLayout(t)
}
};
r.shape.points && (h(n.shape.points, r.shape.points, a, m, t, !1),
cl(n, r, l),
cl(o, r, l),
m.setItemGraphicEl(t, i))
}).remove(function(t) {
g.remove(s.getItemGraphicEl(t))
}).execute(),
m.eachItemGraphicEl(function(t, i) {
var e = m.getItemModel(i)
, n = t.childAt(0)
, o = t.childAt(1)
, a = t.childAt(2)
, r = m.getItemVisual(i, "color");
g.add(t),
n.useStyle(D(e.getModel("lineStyle").getLineStyle(), {
fill: "none",
stroke: r
})),
n.hoverStyle = e.getModel("emphasis.lineStyle").getLineStyle();
var s = e.getModel("areaStyle")
, l = e.getModel("emphasis.areaStyle")
, u = s.isEmpty() && s.parentModel.isEmpty()
, h = l.isEmpty() && l.parentModel.isEmpty();
h = h && u,
o.ignore = u,
o.useStyle(D(s.getAreaStyle(), {
fill: r,
opacity: .7
})),
o.hoverStyle = l.getAreaStyle();
var c = e.getModel("itemStyle").getItemStyle(["color"])
, d = e.getModel("emphasis.itemStyle").getItemStyle()
, f = e.getModel("label")
, p = e.getModel("emphasis.label");
a.eachChild(function(t) {
t.setStyle(c),
t.hoverStyle = k(d);
var e = m.get(m.dimensions[t.__dimIdx], i);
null != e && !isNaN(e) || (e = ""),
el(t.style, t.hoverStyle, f, p, {
labelFetcher: m.hostModel,
labelDataIndex: i,
labelDimIndex: t.__dimIdx,
defaultText: e,
autoColor: r,
isRectText: !0
})
}),
t.highDownOnUpdate = function(t, e) {
o.attr("ignore", "emphasis" === e ? h : u)
}
,
$s(t)
}),
this._data = m
},
remove: function() {
this.group.removeAll(),
this._data = null
},
dispose: function() {}
});
function xy(t) {
return !isNaN(t[0]) && !isNaN(t[1])
}
function _y(t) {
return [t.cx, t.cy]
}
Sf(iy("radar")),
Sf(Lm("radar", "circle")),
bf(function(t) {
t.eachSeriesByType("radar", function(t) {
var i = t.getData()
, o = []
, a = t.coordinateSystem;
if (a) {
var e = a.getIndicatorAxes();
E(e, function(t, n) {
i.each(i.mapDimension(e[n].dim), function(t, e) {
o[e] = o[e] || [];
var i = a.dataToPoint(t, n);
o[e][n] = xy(i) ? i : _y(a)
})
}),
i.each(function(t) {
var e = I(o[t], function(t) {
return xy(t)
}) || _y(a);
o[t].push(e.slice()),
i.setItemLayout(t, o[t])
})
}
})
}),
xf(uy("radar")),
yf(function(i) {
var t = i.polar;
if (t) {
L(t) || (t = [t]);
var n = [];
E(t, function(t, e) {
t.indicator ? (t.type && !t.shape && (t.shape = t.type),
i.radar = i.radar || [],
L(i.radar) || (i.radar = [i.radar]),
i.radar.push(t)) : n.push(t)
}),
i.polar = n
}
E(i.series, function(t) {
t && "radar" === t.type && t.polarIndex && (t.radarIndex = t.polarIndex)
})
});
for (var wy = [126, 25], by = [[[0, 3.5], [7, 11.2], [15, 11.9], [30, 7], [42, .7], [52, .7], [56, 7.7], [59, .7], [64, .7], [64, 0], [5, 0], [0, 3.5]], [[13, 16.1], [19, 14.7], [16, 21.7], [11, 23.1], [13, 16.1]], [[12, 32.2], [14, 38.5], [15, 38.5], [13, 32.2], [12, 32.2]], [[16, 47.6], [12, 53.2], [13, 53.2], [18, 47.6], [16, 47.6]], [[6, 64.4], [8, 70], [9, 70], [8, 64.4], [6, 64.4]], [[23, 82.6], [29, 79.8], [30, 79.8], [25, 82.6], [23, 82.6]], [[37, 70.7], [43, 62.3], [44, 62.3], [39, 70.7], [37, 70.7]], [[48, 51.1], [51, 45.5], [53, 45.5], [50, 51.1], [48, 51.1]], [[51, 35], [51, 28.7], [53, 28.7], [53, 35], [51, 35]], [[52, 22.4], [55, 17.5], [56, 17.5], [53, 22.4], [52, 22.4]], [[58, 12.6], [62, 7], [63, 7], [60, 12.6], [58, 12.6]], [[0, 3.5], [0, 93.1], [64, 93.1], [64, 0], [63, 0], [63, 92.4], [1, 92.4], [1, 3.5], [0, 3.5]]], Sy = 0; Sy < by.length; Sy++)
for (var My = 0; My < by[Sy].length; My++)
by[Sy][My][0] /= 10.5,
by[Sy][My][1] /= -14,
by[Sy][My][0] += wy[0],
by[Sy][My][1] += wy[1];
var Iy = {
"南海诸岛": [32, 80],
"广东": [0, -10],
"香港": [10, 5],
"澳门": [-10, 10],
"天津": [5, 5]
}
, Ty = {
Russia: [100, 60],
"United States": [-99, 38],
"United States of America": [-99, 38]
}
, Ay = [[[123.45165252685547, 25.73527164402261], [123.49731445312499, 25.73527164402261], [123.49731445312499, 25.750734064600884], [123.45165252685547, 25.750734064600884], [123.45165252685547, 25.73527164402261]]]
, Dy = jo()
, Cy = {
load: function(n, t, e) {
var i = Dy(t).parsed;
if (i)
return i;
var o, a = t.specialAreas || {}, r = t.geoJSON;
try {
o = r ? Cg(r, e) : []
} catch (t) {
throw new Error("Invalid geoJson format\n" + t.message)
}
return function(t, e) {
"china" === t && e.push(new Ag("南海诸岛",O(by, function(t) {
return {
type: "polygon",
exterior: t
}
}),wy))
}(n, o),
E(o, function(t) {
var e = t.name;
!function(t, e) {
if ("china" === t) {
var i = Iy[e.name];
if (i) {
var n = e.center;
n[0] += i[0] / 10.5,
n[1] += -i[1] / 14
}
}
}(n, t),
function(t, e) {
if ("world" === t) {
var i = Ty[e.name];
if (i) {
var n = e.center;
n[0] = i[0],
n[1] = i[1]
}
}
}(n, t),
function(t, e) {
"china" === t && "台湾" === e.name && e.geometries.push({
type: "polygon",
exterior: Ay[0]
})
}(n, t);
var i = a[e];
i && t.transformTo(i.left, i.top, i.width, i.height)
}),
Dy(t).parsed = {
regions: o,
boundingRect: function(t) {
for (var e, i = 0; i < t.length; i++) {
var n = t[i].getBoundingRect();
(e = e || n.clone()).union(n)
}
return e
}(o)
}
}
};
var Ly = jo();
function ky(t, e) {
var i, n, o = t.svgXML;
try {
Y(null != (n = (i = o && function(t, e) {
return (new hd).parse(t, e)
}(o, {
ignoreViewBox: !0,
ignoreRootClip: !0
}) || {}).root))
} catch (t) {
throw new Error("Invalid svg format\n" + t.message)
}
var a = i.width
, r = i.height
, s = i.viewBoxRect;
if (e || (e = null == a || null == r ? n.getBoundingRect() : new Di(0,0,0,0),
null != a && (e.width = a),
null != r && (e.height = r)),
s) {
var l = wd(s, e.width, e.height)
, u = n;
(n = new Ci).add(u),
u.scale = l.scale,
u.position = l.position
}
return n.setClipPath(new rs({
shape: e.plain()
})),
{
root: n,
boundingRect: e
}
}
var Py = {
geoJSON: Cy,
svg: {
load: function(t, e) {
var i = Ly(e).originRoot;
if (i)
return {
root: i,
boundingRect: Ly(e).boundingRect
};
var n = ky(e);
return Ly(e).originRoot = n.root,
Ly(e).boundingRect = n.boundingRect,
n
},
makeGraphic: function(t, e, i) {
var n = Ly(e)
, o = n.rootMap || (n.rootMap = Q())
, a = o.get(i);
if (a)
return a;
var r = n.originRoot
, s = n.boundingRect;
return a = n.originRootHostKey ? ky(e, s).root : (n.originRootHostKey = i,
r),
o.set(i, a)
},
removeGraphic: function(t, e, i) {
var n = Ly(e)
, o = n.rootMap;
o && o.removeKey(i),
i === n.originRootHostKey && (n.originRootHostKey = null)
}
}
}
, Ny = {
load: function(n, o, a) {
var r, s = [], l = Q(), u = Q();
return E(Ey(n), function(t) {
var e = Py[t.type].load(n, t, a);
E(e.regions, function(t) {
var e = t.name;
o && o.hasOwnProperty(e) && (t = t.cloneShallow(e = o[e])),
s.push(t),
l.set(e, t),
u.set(e, t.center)
});
var i = e.boundingRect;
i && (r ? r.union(i) : r = i.clone())
}),
{
regions: s,
regionsMap: l,
nameCoordMap: u,
boundingRect: r || new Di(0,0,0,0)
}
},
makeGraphic: Oy("makeGraphic"),
removeGraphic: Oy("removeGraphic")
};
function Oy(a) {
return function(i, n) {
var t = Ey(i)
, o = [];
return E(t, function(t) {
var e = Py[t.type][a];
e && o.push(e(i, t, n))
}),
o
}
}
function Ey(t) {
return Sd.retrieveMap(t) || []
}
b(sc.extend({
type: "series.map",
dependencies: ["geo"],
layoutMode: "box",
needsDrawMap: !1,
seriesGroup: [],
getInitialData: function(t) {
for (var e = Yv(this, {
coordDimensions: ["value"],
encodeDefaulter: T(Ju, this)
}), i = e.mapDimension("value"), n = Q(), o = [], a = [], r = 0, s = e.count(); r < s; r++) {
var l = e.getName(r);
n.set(l, !0),
o.push({
name: l,
value: e.get(i, r),
selected: Zh(e, r, "selected")
})
}
return E(Ny.load(this.getMapType(), this.option.nameMap, this.option.nameProperty).regions, function(t) {
var e = t.name;
n.get(e) || (o.push({
name: e
}),
a.push(e))
}),
this.updateSelectedMap(o),
e.appendValues([], a),
e
},
getHostGeoModel: function() {
var t = this.option.geoIndex;
return null != t ? this.dependentModels.geo[t] : null
},
getMapType: function() {
return (this.getHostGeoModel() || this).option.map
},
getRawValue: function(t) {
var e = this.getData();
return e.get(e.mapDimension("value"), t)
},
getRegionModel: function(t) {
var e = this.getData();
return e.getItemModel(e.indexOfName(t))
},
formatTooltip: function(t) {
for (var e = this.getData(), i = tu(this.getRawValue(t)), n = e.getName(t), o = this.seriesGroup, a = [], r = 0; r < o.length; r++) {
var s = o[r].originalData.indexOfName(n)
, l = e.mapDimension("value");
isNaN(o[r].originalData.get(l, s)) || a.push(au(o[r].name))
}
return a.join(", ") + "
" + au(n + " : " + i)
},
getTooltipPosition: function(t) {
if (null != t) {
var e = this.getData().getName(t)
, i = this.coordinateSystem
, n = i.getRegion(e);
return n && i.dataToPoint(n.center)
}
},
setZoom: function(t) {
this.option.zoom = t
},
setCenter: function(t) {
this.option.center = t
},
defaultOption: {
zlevel: 0,
z: 2,
coordinateSystem: "geo",
map: "",
left: "center",
top: "center",
aspectScale: .75,
showLegendSymbol: !0,
dataRangeHoverLink: !0,
boundingCoords: null,
center: null,
zoom: 1,
scaleLimit: null,
label: {
show: !1,
color: "#000"
},
itemStyle: {
borderWidth: .5,
borderColor: "#444",
areaColor: "#eee"
},
emphasis: {
label: {
show: !0,
color: "rgb(100,0,0)"
},
itemStyle: {
areaColor: "rgba(255,215,0,0.8)"
}
},
nameProperty: "name"
}
}), jv);
var Ry = "\0_ec_interaction_mutex";
function zy(t, e) {
return !!By(t)[e]
}
function By(t) {
return t[Ry] || (t[Ry] = {})
}
function Vy(i) {
this.pointerChecker,
this._zr = i,
this._opt = {};
var t = A
, n = t(Gy, this)
, o = t(Fy, this)
, a = t(Wy, this)
, r = t(Hy, this)
, s = t(Zy, this);
Ct.call(this),
this.setPointerChecker = function(t) {
this.pointerChecker = t
}
,
this.enable = function(t, e) {
this.disable(),
this._opt = D(k(e) || {}, {
zoomOnMouseWheel: !0,
moveOnMouseMove: !0,
moveOnMouseWheel: !1,
preventDefaultMouseMove: !0
}),
null == t && (t = !0),
!0 !== t && "move" !== t && "pan" !== t || (i.on("mousedown", n),
i.on("mousemove", o),
i.on("mouseup", a)),
!0 !== t && "scale" !== t && "zoom" !== t || (i.on("mousewheel", r),
i.on("pinch", s))
}
,
this.disable = function() {
i.off("mousedown", n),
i.off("mousemove", o),
i.off("mouseup", a),
i.off("mousewheel", r),
i.off("pinch", s)
}
,
this.dispose = this.disable,
this.isDragging = function() {
return this._dragging
}
,
this.isPinching = function() {
return this._pinching
}
}
function Gy(t) {
if (!(Yt(t) || t.target && t.target.draggable)) {
var e = t.offsetX
, i = t.offsetY;
this.pointerChecker && this.pointerChecker(t, e, i) && (this._x = e,
this._y = i,
this._dragging = !0)
}
}
function Fy(t) {
if (this._dragging && Yy("moveOnMouseMove", t, this._opt) && "pinch" !== t.gestureEvent && !zy(this._zr, "globalPan")) {
var e = t.offsetX
, i = t.offsetY
, n = this._x
, o = this._y
, a = e - n
, r = i - o;
this._x = e,
this._y = i,
this._opt.preventDefaultMouseMove && Xt(t.event),
Xy(this, "pan", "moveOnMouseMove", t, {
dx: a,
dy: r,
oldX: n,
oldY: o,
newX: e,
newY: i
})
}
}
function Wy(t) {
Yt(t) || (this._dragging = !1)
}
function Hy(t) {
var e = Yy("zoomOnMouseWheel", t, this._opt)
, i = Yy("moveOnMouseWheel", t, this._opt)
, n = t.wheelDelta
, o = Math.abs(n)
, a = t.offsetX
, r = t.offsetY;
if (0 !== n && (e || i)) {
if (e) {
var s = 3 < o ? 1.4 : 1 < o ? 1.2 : 1.1;
Uy(this, "zoom", "zoomOnMouseWheel", t, {
scale: 0 < n ? s : 1 / s,
originX: a,
originY: r
})
}
if (i) {
var l = Math.abs(n);
Uy(this, "scrollMove", "moveOnMouseWheel", t, {
scrollDelta: (0 < n ? 1 : -1) * (3 < l ? .4 : 1 < l ? .15 : .05),
originX: a,
originY: r
})
}
}
}
function Zy(t) {
zy(this._zr, "globalPan") || Uy(this, "zoom", null, t, {
scale: 1 < t.pinchScale ? 1.1 : 1 / 1.1,
originX: t.pinchX,
originY: t.pinchY
})
}
function Uy(t, e, i, n, o) {
t.pointerChecker && t.pointerChecker(n, o.originX, o.originY) && (Xt(n.event),
Xy(t, e, i, n, o))
}
function Xy(t, e, i, n, o) {
o.isAvailableBehavior = A(Yy, null, i, n),
t.trigger(e, o)
}
function Yy(t, e, i) {
var n = i[t];
return !t || n && (!R(n) || e.event[n + "Key"])
}
function jy(t, e, i) {
var n = t.target
, o = n.position;
o[0] += e,
o[1] += i,
n.dirty()
}
function qy(t, e, i, n) {
var o = t.target
, a = t.zoomLimit
, r = o.position
, s = o.scale
, l = t.zoom = t.zoom || 1;
if (l *= e,
a) {
var u = a.min || 0
, h = a.max || 1 / 0;
l = Math.max(Math.min(h, l), u)
}
var c = l / t.zoom;
t.zoom = l,
r[0] -= (i - r[0]) * (c - 1),
r[1] -= (n - r[1]) * (c - 1),
s[0] *= c,
s[1] *= c,
o.dirty()
}
_f({
type: "takeGlobalCursor",
event: "globalCursorTaken",
update: "update"
}, function() {}),
b(Vy, Ct);
var Ky = {
axisPointer: 1,
tooltip: 1,
brush: 1
};
function $y(t, e, i) {
var n = e.getComponentByElement(t.topTarget)
, o = n && n.coordinateSystem;
return n && n !== i && !Ky[n.mainType] && o && o.model !== i
}
function Jy(t) {
var e = t.getItemStyle()
, i = t.get("areaColor");
return null != i && (e.fill = i),
e
}
function Qy(i, t) {
t.eachChild(function(e) {
E(e.__regions, function(t) {
e.trigger(i.isSelected(t.name) ? "emphasis" : "normal")
})
})
}
function tx(t, e) {
var i = new Ci;
this.uid = Nl("ec_map_draw"),
this._controller = new Vy(t.getZr()),
this._controllerHost = {
target: e ? i : null
},
this.group = i,
this._updateGroup = e,
this._mouseDownFlag,
this._mapName,
this._initialized,
i.add(this._regionsGroup = new Ci),
i.add(this._backgroundGroup = new Ci)
}
tx.prototype = {
constructor: tx,
draw: function(_, t, e, i, n) {
var w = "geo" === _.mainType
, b = _.getData && _.getData();
w && t.eachComponent({
mainType: "series",
subType: "map"
}, function(t) {
b || t.getHostGeoModel() !== _ || (b = t.getData())
});
var o = _.coordinateSystem;
this._updateBackground(o);
var S, M = this._regionsGroup, I = this.group, a = o.getTransformInfo(), T = !M.childAt(0) || n;
if (T)
I.transform = a.roamTransform,
I.decomposeTransform(),
I.dirty();
else {
var r = new ve;
r.transform = a.roamTransform,
r.decomposeTransform();
var s = {
scale: r.scale,
position: r.position
};
S = r.scale,
cl(I, s, _)
}
var A = a.rawScale
, D = a.rawPosition;
M.removeAll();
var C = ["itemStyle"]
, L = ["emphasis", "itemStyle"]
, k = ["label"]
, P = ["emphasis", "label"]
, N = Q();
E(o.regions, function(t) {
var e = N.get(t.name) || N.set(t.name, new Ci)
, a = new ps({
segmentIgnoreThreshold: 1,
shape: {
paths: []
}
});
e.add(a);
var i, n = (x = _.getRegionModel(t.name) || _).getModel(C), o = x.getModel(L), r = Jy(n), s = Jy(o), l = x.getModel(k), u = x.getModel(P);
if (b) {
i = b.indexOfName(t.name);
var h = b.getItemVisual(i, "color", !0);
h && (r.fill = h)
}
function c(t) {
return [t[0] * A[0] + D[0], t[1] * A[1] + D[1]]
}
E(t.geometries, function(t) {
if ("polygon" === t.type) {
for (var e = [], i = 0; i < t.exterior.length; ++i)
e.push(c(t.exterior[i]));
a.shape.paths.push(new Qr({
segmentIgnoreThreshold: 1,
shape: {
points: e
}
}));
for (i = 0; i < (t.interiors ? t.interiors.length : 0); ++i) {
for (var n = t.interiors[i], o = (e = [],
0); o < n.length; ++o)
e.push(c(n[o]));
a.shape.paths.push(new Qr({
segmentIgnoreThreshold: 1,
shape: {
points: e
}
}))
}
}
}),
a.setStyle(r),
a.style.strokeNoScale = !0,
a.culling = !0;
var d = l.get("show")
, f = u.get("show")
, p = b && isNaN(b.get(b.mapDimension("value"), i))
, g = b && b.getItemLayout(i);
if (w || p && (d || f) || g && g.showLabel) {
var m, v = w ? t.name : i;
(!b || 0 <= i) && (m = _);
var y = new Ur({
position: c(t.center.slice()),
scale: [1 / I.scale[0], 1 / I.scale[1]],
z2: 10,
silent: !0
});
if (el(y.style, y.hoverStyle = {}, l, u, {
labelFetcher: m,
labelDataIndex: v,
defaultText: t.name,
useInsideStyle: !1
}, {
textAlign: "center",
textVerticalAlign: "middle"
}),
!T)
cl(y, {
scale: [1 / S[0], 1 / S[1]]
}, _);
e.add(y)
}
if (b)
b.setItemGraphicEl(i, e);
else {
var x = _.getRegionModel(t.name);
a.eventData = {
componentType: "geo",
componentIndex: _.componentIndex,
geoIndex: _.componentIndex,
name: t.name,
region: x && x.option || {}
}
}
(e.__regions || (e.__regions = [])).push(t),
e.highDownSilentOnTouch = !!_.get("selectedMode"),
$s(e, s),
M.add(e)
}),
this._updateController(_, t, e),
function(n, o, a, r, s) {
a.off("click"),
a.off("mousedown"),
o.get("selectedMode") && (a.on("mousedown", function() {
n._mouseDownFlag = !0
}),
a.on("click", function(t) {
if (n._mouseDownFlag) {
n._mouseDownFlag = !1;
for (var e = t.target; !e.__regions; )
e = e.parent;
if (e) {
var i = {
type: ("geo" === o.mainType ? "geo" : "map") + "ToggleSelect",
batch: O(e.__regions, function(t) {
return {
name: t.name,
from: s.uid
}
})
};
i[o.mainType + "Id"] = o.id,
r.dispatchAction(i),
Qy(o, a)
}
}
}))
}(this, _, M, e, i),
Qy(_, M)
},
remove: function() {
this._regionsGroup.removeAll(),
this._backgroundGroup.removeAll(),
this._controller.dispose(),
this._mapName && Ny.removeGraphic(this._mapName, this.uid),
this._mapName = null,
this._controllerHost = {}
},
_updateBackground: function(t) {
var e = t.map;
this._mapName !== e && E(Ny.makeGraphic(e, this.uid), function(t) {
this._backgroundGroup.add(t)
}, this),
this._mapName = e
},
_updateController: function(n, t, o) {
var a = n.coordinateSystem
, e = this._controller
, i = this._controllerHost;
i.zoomLimit = n.get("scaleLimit"),
i.zoom = a.getZoom(),
e.enable(n.get("roam") || !1);
var r = n.mainType;
function s() {
var t = {
type: "geoRoam",
componentType: r
};
return t[r + "Id"] = n.id,
t
}
e.off("pan").on("pan", function(t) {
this._mouseDownFlag = !1,
jy(i, t.dx, t.dy),
o.dispatchAction(P(s(), {
dx: t.dx,
dy: t.dy
}))
}, this),
e.off("zoom").on("zoom", function(t) {
if (this._mouseDownFlag = !1,
qy(i, t.scale, t.originX, t.originY),
o.dispatchAction(P(s(), {
zoom: t.scale,
originX: t.originX,
originY: t.originY
})),
this._updateGroup) {
var e = this.group.scale;
this._regionsGroup.traverse(function(t) {
"text" === t.type && t.attr("scale", [1 / e[0], 1 / e[1]])
})
}
}, this),
e.setPointerChecker(function(t, e, i) {
return a.getViewRectAfterRoam().contain(e, i) && !$y(t, o, n)
})
}
};
var ex = "__seriesMapHighDown"
, ix = "__seriesMapCallKey";
function nx(t) {
var e = this[ex];
e && e.recordVersion === this[ix] && ox(e, t)
}
function ox(t, e) {
var i = t.circle
, n = t.labelModel
, o = t.hoverLabelModel
, a = t.emphasisText
, r = t.normalText;
e ? (i.style.extendFrom(nl({}, o, {
text: o.get("show") ? a : null
}, {
isRectText: !0,
useInsideStyle: !1
}, !0)),
i.__mapOriginalZ2 = i.z2,
i.z2 += bs) : (nl(i.style, n, {
text: n.get("show") ? r : null,
textPosition: n.getShallow("position") || "bottom"
}, {
isRectText: !0,
useInsideStyle: !1
}),
i.dirty(!1),
null != i.__mapOriginalZ2 && (i.z2 = i.__mapOriginalZ2,
i.__mapOriginalZ2 = null))
}
function ax(t, e, i) {
var n = t.getZoom()
, o = t.getCenter()
, a = e.zoom
, r = t.dataToPoint(o);
if (null != e.dx && null != e.dy) {
r[0] -= e.dx,
r[1] -= e.dy;
o = t.pointToData(r);
t.setCenter(o)
}
if (null != a) {
if (i) {
var s = i.min || 0
, l = i.max || 1 / 0;
a = Math.max(Math.min(n * a, l), s) / n
}
t.scale[0] *= a,
t.scale[1] *= a;
var u = t.position
, h = (e.originX - u[0]) * (a - 1)
, c = (e.originY - u[1]) * (a - 1);
u[0] -= h,
u[1] -= c,
t.updateTransform();
o = t.pointToData(r);
t.setCenter(o),
t.setZoom(a * n)
}
return {
center: t.getCenter(),
zoom: t.getZoom()
}
}
Cf({
type: "map",
render: function(t, e, i, n) {
if (!n || "mapToggleSelect" !== n.type || n.from !== this.uid) {
var o = this.group;
if (o.removeAll(),
!t.getHostGeoModel()) {
if (n && "geoRoam" === n.type && "series" === n.componentType && n.seriesId === t.id)
(a = this._mapDraw) && o.add(a.group);
else if (t.needsDrawMap) {
var a = this._mapDraw || new tx(i,!0);
o.add(a.group),
a.draw(t, e, i, this, n),
this._mapDraw = a
} else
this._mapDraw && this._mapDraw.remove(),
this._mapDraw = null;
t.get("showLegendSymbol") && e.getComponent("legend") && this._renderSymbols(t, e, i)
}
}
},
remove: function() {
this._mapDraw && this._mapDraw.remove(),
this._mapDraw = null,
this.group.removeAll()
},
dispose: function() {
this._mapDraw && this._mapDraw.remove(),
this._mapDraw = null
},
_renderSymbols: function(x, t, e) {
var _ = x.originalData
, w = this.group;
_.each(_.mapDimension("value"), function(t, e) {
if (!isNaN(t)) {
var i = _.getItemLayout(e);
if (i && i.point) {
var n = i.point
, o = i.offset
, a = new Yr({
style: {
fill: x.getData().getVisual("color")
},
shape: {
cx: n[0] + 9 * o,
cy: n[1],
r: 3
},
silent: !0,
z2: 8 + (o ? 0 : bs + 1)
});
if (!o) {
var r = x.mainSeries.getData()
, s = _.getName(e)
, l = r.indexOfName(s)
, u = _.getItemModel(e)
, h = u.getModel("label")
, c = u.getModel("emphasis.label")
, d = r.getItemGraphicEl(l)
, f = H(x.getFormattedLabel(l, "normal"), s)
, p = H(x.getFormattedLabel(l, "emphasis"), f)
, g = d[ex]
, m = Math.random();
if (!g) {
g = d[ex] = {};
var v = T(nx, !0)
, y = T(nx, !1);
d.on("mouseover", v).on("mouseout", y).on("emphasis", v).on("normal", y)
}
P(g, {
recordVersion: d[ix] = m,
circle: a,
labelModel: h,
hoverLabelModel: c,
emphasisText: p,
normalText: f
}),
ox(g, !1)
}
w.add(a)
}
}
})
}
}),
_f({
type: "geoRoam",
event: "geoRoam",
update: "updateTransform"
}, function(n, t) {
var o = n.componentType || "series";
t.eachComponent({
mainType: o,
query: n
}, function(t) {
var e = t.coordinateSystem;
if ("geo" === e.type) {
var i = ax(e, n, t.get("scaleLimit"));
t.setCenter && t.setCenter(i.center),
t.setZoom && t.setZoom(i.zoom),
"series" === o && E(t.seriesGroup, function(t) {
t.setCenter(i.center),
t.setZoom(i.zoom)
})
}
})
});
var rx = bt;
function sx() {
ve.call(this)
}
function lx(t) {
this.name = t,
this.zoomLimit,
ve.call(this),
this._roamTransformable = new sx,
this._rawTransformable = new sx,
this._center,
this._zoom
}
function ux(t, e, i, n) {
var o = i.seriesModel
, a = o ? o.coordinateSystem : null;
return a === this ? a[t](n) : null
}
function hx(t, e, i, n) {
lx.call(this, t),
this.map = e;
var o = Ny.load(e, i);
this._nameCoordMap = o.nameCoordMap,
this._regionsMap = o.regionsMap,
this._invertLongitute = null == n || n,
this.regions = o.regions,
this._rect = o.boundingRect
}
function cx(t, e, i, n) {
var o = i.geoModel
, a = i.seriesModel
, r = o ? o.coordinateSystem : a ? a.coordinateSystem || (a.getReferringComponents("geo")[0] || {}).coordinateSystem : null;
return r === this ? r[t](n) : null
}
function dx(t, e) {
var i = t.get("boundingCoords");
if (null != i) {
var n = i[0]
, o = i[1];
isNaN(n[0]) || isNaN(n[1]) || isNaN(o[0]) || isNaN(o[1]) || this.setBoundingRect(n[0], n[1], o[0] - n[0], o[1] - n[1])
}
var a, r = this.getBoundingRect(), s = t.get("layoutCenter"), l = t.get("layoutSize"), u = e.getWidth(), h = e.getHeight(), c = r.width / r.height * this.aspectScale, d = !1;
if (s && l && (s = [Rl(s[0], u), Rl(s[1], h)],
l = Rl(l, Math.min(u, h)),
isNaN(s[0]) || isNaN(s[1]) || isNaN(l) || (d = !0)),
d) {
var f = {};
1 < c ? (f.width = l,
f.height = l / c) : (f.height = l,
f.width = l * c),
f.y = s[1] - f.height / 2,
f.x = s[0] - f.width / 2
} else
(a = t.getBoxLayoutParams()).aspect = c,
f = bu(a, {
width: u,
height: h
});
this.setViewRect(f.x, f.y, f.width, f.height),
this.setCenter(t.get("center")),
this.setZoom(t.get("zoom"))
}
function fx(i, t) {
E(t.get("geoCoord"), function(t, e) {
i.addGeoCoord(e, t)
})
}
b(sx, ve),
lx.prototype = {
constructor: lx,
type: "view",
dimensions: ["x", "y"],
setBoundingRect: function(t, e, i, n) {
return this._rect = new Di(t,e,i,n),
this._rect
},
getBoundingRect: function() {
return this._rect
},
setViewRect: function(t, e, i, n) {
this.transformTo(t, e, i, n),
this._viewRect = new Di(t,e,i,n)
},
transformTo: function(t, e, i, n) {
var o = this.getBoundingRect()
, a = this._rawTransformable;
a.transform = o.calculateTransform(new Di(t,e,i,n)),
a.decomposeTransform(),
this._updateTransform()
},
setCenter: function(t) {
t && (this._center = t,
this._updateCenterAndZoom())
},
setZoom: function(t) {
t = t || 1;
var e = this.zoomLimit;
e && (null != e.max && (t = Math.min(e.max, t)),
null != e.min && (t = Math.max(e.min, t))),
this._zoom = t,
this._updateCenterAndZoom()
},
getDefaultCenter: function() {
var t = this.getBoundingRect();
return [t.x + t.width / 2, t.y + t.height / 2]
},
getCenter: function() {
return this._center || this.getDefaultCenter()
},
getZoom: function() {
return this._zoom || 1
},
getRoamTransform: function() {
return this._roamTransformable.getLocalTransform()
},
_updateCenterAndZoom: function() {
var t = this._rawTransformable.getLocalTransform()
, e = this._roamTransformable
, i = this.getDefaultCenter()
, n = this.getCenter()
, o = this.getZoom();
n = bt([], n, t),
i = bt([], i, t),
e.origin = n,
e.position = [i[0] - n[0], i[1] - n[1]],
e.scale = [o, o],
this._updateTransform()
},
_updateTransform: function() {
var t = this._roamTransformable
, e = this._rawTransformable;
(e.parent = t).updateTransform(),
e.updateTransform(),
se(this.transform || (this.transform = []), e.transform || ae()),
this._rawTransform = e.getLocalTransform(),
this.invTransform = this.invTransform || [],
de(this.invTransform, this.transform),
this.decomposeTransform()
},
getTransformInfo: function() {
var t = this._roamTransformable.transform
, e = this._rawTransformable;
return {
roamTransform: t ? U(t) : ae(),
rawScale: U(e.scale),
rawPosition: U(e.position)
}
},
getViewRect: function() {
return this._viewRect
},
getViewRectAfterRoam: function() {
var t = this.getBoundingRect().clone();
return t.applyTransform(this.transform),
t
},
dataToPoint: function(t, e, i) {
var n = e ? this._rawTransform : this.transform;
return i = i || [],
n ? rx(i, t, n) : at(i, t)
},
pointToData: function(t) {
var e = this.invTransform;
return e ? rx([], t, e) : [t[0], t[1]]
},
convertToPixel: T(ux, "dataToPoint"),
convertFromPixel: T(ux, "pointToData"),
containPoint: function(t) {
return this.getViewRectAfterRoam().contain(t[0], t[1])
}
},
b(lx, ve),
hx.prototype = {
constructor: hx,
type: "geo",
dimensions: ["lng", "lat"],
containCoord: function(t) {
for (var e = this.regions, i = 0; i < e.length; i++)
if (e[i].contain(t))
return !0;
return !1
},
transformTo: function(t, e, i, n) {
var o = this.getBoundingRect()
, a = this._invertLongitute;
o = o.clone(),
a && (o.y = -o.y - o.height);
var r = this._rawTransformable;
if (r.transform = o.calculateTransform(new Di(t,e,i,n)),
r.decomposeTransform(),
a) {
var s = r.scale;
s[1] = -s[1]
}
r.updateTransform(),
this._updateTransform()
},
getRegion: function(t) {
return this._regionsMap.get(t)
},
getRegionByCoord: function(t) {
for (var e = this.regions, i = 0; i < e.length; i++)
if (e[i].contain(t))
return e[i]
},
addGeoCoord: function(t, e) {
this._nameCoordMap.set(t, e)
},
getGeoCoord: function(t) {
return this._nameCoordMap.get(t)
},
getBoundingRect: function() {
return this._rect
},
dataToPoint: function(t, e, i) {
if ("string" == typeof t && (t = this.getGeoCoord(t)),
t)
return lx.prototype.dataToPoint.call(this, t, e, i)
},
convertToPixel: T(cx, "dataToPoint"),
convertFromPixel: T(cx, "pointToData")
},
b(hx, lx);
var px = {
dimensions: hx.prototype.dimensions,
create: function(t, s) {
var l = [];
t.eachComponent("geo", function(t, e) {
var i = t.get("map")
, n = t.get("aspectScale")
, o = !0
, a = Sd.retrieveMap(i);
a && a[0] && "svg" === a[0].type ? (null == n && (n = 1),
o = !1) : null == n && (n = .75);
var r = new hx(i + e,i,t.get("nameMap"),o);
r.aspectScale = n,
r.zoomLimit = t.get("scaleLimit"),
l.push(r),
fx(r, t),
(t.coordinateSystem = r).model = t,
r.resize = dx,
r.resize(t, s)
}),
t.eachSeries(function(t) {
if ("geo" === t.get("coordinateSystem")) {
var e = t.get("geoIndex") || 0;
t.coordinateSystem = l[e]
}
});
var i = {};
return t.eachSeriesByType("map", function(t) {
if (!t.getHostGeoModel()) {
var e = t.getMapType();
i[e] = i[e] || [],
i[e].push(t)
}
}),
E(i, function(t, e) {
var i = new hx(e,e,p(O(t, function(t) {
return t.get("nameMap")
})));
i.zoomLimit = W.apply(null, O(t, function(t) {
return t.get("scaleLimit")
})),
l.push(i),
i.resize = dx,
i.aspectScale = t[0].get("aspectScale"),
i.resize(t[0], s),
E(t, function(t) {
fx(t.coordinateSystem = i, t)
})
}),
l
},
getFilledRegions: function(t, e, i) {
for (var n = (t || []).slice(), o = Q(), a = 0; a < n.length; a++)
o.set(n[a].name, n[a]);
return E(Ny.load(e, i).regions, function(t) {
var e = t.name;
o.get(e) || n.push({
name: e
})
}),
n
}
};
wf("geo", px);
bf(function(i) {
var o = {};
i.eachSeriesByType("map", function(t) {
var e = t.getMapType();
if (!t.getHostGeoModel() && !o[e]) {
var l = {};
E(t.seriesGroup, function(t) {
var r = t.coordinateSystem
, s = t.originalData;
t.get("showLegendSymbol") && i.getComponent("legend") && s.each(s.mapDimension("value"), function(t, e) {
var i = s.getName(e)
, n = r.getRegion(i);
if (n && !isNaN(t)) {
var o = l[i] || 0
, a = r.dataToPoint(n.center);
l[i] = o + 1,
s.setItemLayout(e, {
point: a,
offset: o
})
}
})
});
var n = t.getData();
n.each(function(t) {
var e = n.getName(t)
, i = n.getItemLayout(t) || {};
i.showLabel = !l[e],
n.setItemLayout(t, i)
}),
o[e] = !0
}
})
}),
Sf(function(t) {
t.eachSeriesByType("map", function(t) {
var e = t.get("color")
, i = t.getModel("itemStyle")
, n = i.get("areaColor")
, o = i.get("color") || e[t.seriesIndex % e.length];
t.getData().setVisual({
areaColor: n,
color: o
})
})
}),
xf(Ld.PROCESSOR.STATISTIC, function(t) {
var n = {};
t.eachSeriesByType("map", function(t) {
var e = t.getHostGeoModel()
, i = e ? "o" + e.id : "i" + t.getMapType();
(n[i] = n[i] || []).push(t)
}),
E(n, function(t, e) {
for (var i = function(u, h) {
var c = {};
return E(u, function(n) {
n.each(n.mapDimension("value"), function(t, e) {
var i = "ec-" + n.getName(e);
c[i] = c[i] || [],
isNaN(t) || c[i].push(t)
})
}),
u[0].map(u[0].mapDimension("value"), function(t, e) {
for (var i, n = "ec-" + u[0].getName(e), o = 0, a = 1 / 0, r = -1 / 0, s = c[n].length, l = 0; l < s; l++)
a = Math.min(a, c[n][l]),
r = Math.max(r, c[n][l]),
o += c[n][l];
return i = "min" === h ? a : "max" === h ? r : "average" === h ? o / s : o,
0 === s ? NaN : i
})
}(O(t, function(t) {
return t.getData()
}), t[0].get("mapValueCalculation")), n = 0; n < t.length; n++)
t[n].originalData = t[n].getData();
for (n = 0; n < t.length; n++)
(t[n].seriesGroup = t)[n].needsDrawMap = 0 === n && !t[n].getHostGeoModel(),
t[n].setData(i.cloneShallow()),
t[n].mainSeries = t[0]
})
}),
yf(function(t) {
var e = [];
E(t.series, function(t) {
t && "map" === t.type && (e.push(t),
t.map = t.map || t.mapType,
D(t, t.mapLocation))
})
}),
ey("map", [{
type: "mapToggleSelect",
event: "mapselectchanged",
method: "toggleSelected"
}, {
type: "mapSelect",
event: "mapselected",
method: "select"
}, {
type: "mapUnSelect",
event: "mapunselected",
method: "unSelect"
}]);
var gx = E
, mx = "\0__link_datas"
, vx = "\0__link_mainData";
function yx(i) {
var n = i.mainData
, t = i.datas;
t || (t = {
main: n
},
i.datasAttr = {
main: "data"
}),
i.datas = i.mainData = null,
Mx(n, t, i),
gx(t, function(e) {
gx(n.TRANSFERABLE_METHODS, function(t) {
e.wrapMethod(t, T(xx, i))
})
}),
n.wrapMethod("cloneShallow", T(bx, i)),
gx(n.CHANGABLE_METHODS, function(t) {
n.wrapMethod(t, T(_x, i))
}),
Y(t[n.dataType] === n)
}
function xx(t, e) {
if (function(t) {
return t[vx] === t
}(this)) {
var i = P({}, this[mx]);
Mx(i[this.dataType] = e, i, t)
} else
Ix(e, this.dataType, this[vx], t);
return e
}
function _x(t, e) {
return t.struct && t.struct.update(this),
e
}
function bx(i, n) {
return gx(n[mx], function(t, e) {
t !== n && Ix(t.cloneShallow(), e, n, i)
}),
n
}
function Sx(t) {
var e = this[vx];
return null == t || null == e ? e : e[mx][t]
}
function Mx(i, t, n) {
i[mx] = {},
gx(t, function(t, e) {
Ix(t, e, i, n)
})
}
function Ix(t, e, i, n) {
(i[mx][e] = t)[vx] = i,
t.dataType = e,
n.struct && (t[n.structAttr] = n.struct,
n.struct[n.datasAttr[e]] = t),
t.getLinkedData = Sx
}
function Tx(t, e) {
this.name = t || "",
this.depth = 0,
this.height = 0,
this.parentNode = null,
this.dataIndex = -1,
this.children = [],
this.viewChildren = [],
this.hostTree = e
}
function Ax(e, t) {
this.root,
this.data,
this._nodes = [],
this.hostModel = e,
this.levelModels = O(t || [], function(t) {
return new Cl(t,e,e.ecModel)
})
}
function Dx(t, e) {
var i = e.children;
t.parentNode !== e && (i.push(t),
t.parentNode = e)
}
function Cx(t, e) {
var i = t.isExpand ? t.children : []
, n = t.parentNode.children
, o = t.hierNode.i ? n[t.hierNode.i - 1] : null;
if (i.length) {
!function(t) {
var e = t.children
, i = e.length
, n = 0
, o = 0;
for (; 0 <= --i; ) {
var a = e[i];
a.hierNode.prelim += n,
a.hierNode.modifier += n,
o += a.hierNode.change,
n += a.hierNode.shift + o
}
}(t);
var a = (i[0].hierNode.prelim + i[i.length - 1].hierNode.prelim) / 2;
o ? (t.hierNode.prelim = o.hierNode.prelim + e(t, o),
t.hierNode.modifier = t.hierNode.prelim - a) : t.hierNode.prelim = a
} else
o && (t.hierNode.prelim = o.hierNode.prelim + e(t, o));
t.parentNode.hierNode.defaultAncestor = function(t, e, i, n) {
if (e) {
for (var o = t, a = t, r = a.parentNode.children[0], s = e, l = o.hierNode.modifier, u = a.hierNode.modifier, h = r.hierNode.modifier, c = s.hierNode.modifier; s = Nx(s),
a = Ox(a),
s && a; ) {
o = Nx(o),
r = Ox(r),
o.hierNode.ancestor = t;
var d = s.hierNode.prelim + c - a.hierNode.prelim - u + n(s, a);
0 < d && (Ex((p = t,
g = i,
(f = s).hierNode.ancestor.parentNode === p.parentNode ? f.hierNode.ancestor : g), t, d),
u += d,
l += d),
c += s.hierNode.modifier,
u += a.hierNode.modifier,
l += o.hierNode.modifier,
h += r.hierNode.modifier
}
s && !Nx(o) && (o.hierNode.thread = s,
o.hierNode.modifier += c - l),
a && !Ox(r) && (r.hierNode.thread = a,
r.hierNode.modifier += u - h,
i = t)
}
var f, p, g;
return i
}(t, o, t.parentNode.hierNode.defaultAncestor || n[0], e)
}
function Lx(t) {
var e = t.hierNode.prelim + t.parentNode.hierNode.modifier;
t.setLayout({
x: e
}, !0),
t.hierNode.modifier += t.parentNode.hierNode.modifier
}
function kx(t) {
return arguments.length ? t : Rx
}
function Px(t, e) {
var i = {};
return t -= Math.PI / 2,
i.x = e * Math.cos(t),
i.y = e * Math.sin(t),
i
}
function Nx(t) {
var e = t.children;
return e.length && t.isExpand ? e[e.length - 1] : t.hierNode.thread
}
function Ox(t) {
var e = t.children;
return e.length && t.isExpand ? e[0] : t.hierNode.thread
}
function Ex(t, e, i) {
var n = i / (e.hierNode.i - t.hierNode.i);
e.hierNode.change -= n,
e.hierNode.shift += i,
e.hierNode.modifier += i,
e.hierNode.prelim += i,
t.hierNode.change += n
}
function Rx(t, e) {
return t.parentNode === e.parentNode ? 1 : 2
}
Tx.prototype = {
constructor: Tx,
isRemoved: function() {
return this.dataIndex < 0
},
eachNode: function(t, e, i) {
"function" == typeof t && (i = e,
e = t,
t = null),
R(t = t || {}) && (t = {
order: t
});
var n, o = t.order || "preorder", a = this[t.attr || "children"];
"preorder" === o && (n = e.call(i, this));
for (var r = 0; !n && r < a.length; r++)
a[r].eachNode(t, e, i);
"postorder" === o && e.call(i, this)
},
updateDepthAndHeight: function(t) {
var e = 0;
this.depth = t;
for (var i = 0; i < this.children.length; i++) {
var n = this.children[i];
n.updateDepthAndHeight(t + 1),
n.height > e && (e = n.height)
}
this.height = e + 1
},
getNodeById: function(t) {
if (this.getId() === t)
return this;
for (var e = 0, i = this.children, n = i.length; e < n; e++) {
var o = i[e].getNodeById(t);
if (o)
return o
}
},
contains: function(t) {
if (t === this)
return !0;
for (var e = 0, i = this.children, n = i.length; e < n; e++) {
var o = i[e].contains(t);
if (o)
return o
}
},
getAncestors: function(t) {
for (var e = [], i = t ? this : this.parentNode; i; )
e.push(i),
i = i.parentNode;
return e.reverse(),
e
},
getValue: function(t) {
var e = this.hostTree.data;
return e.get(e.getDimension(t || "value"), this.dataIndex)
},
setLayout: function(t, e) {
0 <= this.dataIndex && this.hostTree.data.setItemLayout(this.dataIndex, t, e)
},
getLayout: function() {
return this.hostTree.data.getItemLayout(this.dataIndex)
},
getModel: function(t) {
if (!(this.dataIndex < 0)) {
var e = this.hostTree.data.getItemModel(this.dataIndex)
, i = this.getLevelModel();
return i ? e.getModel(t, i.getModel(t)) : e.getModel(t)
}
},
getLevelModel: function() {
return (this.hostTree.levelModels || [])[this.depth]
},
setVisual: function(t, e) {
0 <= this.dataIndex && this.hostTree.data.setItemVisual(this.dataIndex, t, e)
},
getVisual: function(t, e) {
return this.hostTree.data.getItemVisual(this.dataIndex, t, e)
},
getRawIndex: function() {
return this.hostTree.data.getRawIndex(this.dataIndex)
},
getId: function() {
return this.hostTree.data.getId(this.dataIndex)
},
isAncestorOf: function(t) {
for (var e = t.parentNode; e; ) {
if (e === this)
return !0;
e = e.parentNode
}
return !1
},
isDescendantOf: function(t) {
return t !== this && t.isAncestorOf(this)
}
},
Ax.prototype = {
constructor: Ax,
type: "tree",
eachNode: function(t, e, i) {
this.root.eachNode(t, e, i)
},
getNodeByDataIndex: function(t) {
var e = this.data.getRawIndex(t);
return this._nodes[e]
},
getNodeByName: function(t) {
return this.root.getNodeByName(t)
},
update: function() {
for (var t = this.data, e = this._nodes, i = 0, n = e.length; i < n; i++)
e[i].dataIndex = -1;
for (i = 0,
n = t.count(); i < n; i++)
e[t.getRawIndex(i)].dataIndex = i
},
clearLayouts: function() {
this.data.clearItemLayouts()
}
},
Ax.createTree = function(t, e, i, n) {
var s = new Ax(e,i && i.levels)
, l = []
, u = 1;
!function t(e, i) {
var n = e.value;
u = Math.max(u, L(n) ? n.length : 1);
l.push(e);
var o = new Tx(e.name,s);
i ? Dx(o, i) : s.root = o;
s._nodes.push(o);
var a = e.children;
if (a)
for (var r = 0; r < a.length; r++)
t(a[r], o)
}(t),
s.root.updateDepthAndHeight(0);
var o = lp(l, {
coordDimensions: ["value"],
dimensionsCount: u
})
, a = new Yf(o,e);
return a.initData(l),
n && n(a),
yx({
mainData: a,
struct: s,
structAttr: "tree"
}),
s.update(),
s
}
,
sc.extend({
type: "series.tree",
layoutInfo: null,
layoutMode: "box",
getInitialData: function(t) {
var e = {
name: t.name,
children: t.data
}
, n = new Cl(t.leaves || {},this,this.ecModel)
, o = Ax.createTree(e, this, {}, function(t) {
t.wrapMethod("getItemModel", function(t, e) {
var i = o.getNodeByDataIndex(e);
return i.children.length && i.isExpand || (t.parentModel = n),
t
})
});
var i = 0;
o.eachNode("preorder", function(t) {
t.depth > i && (i = t.depth)
});
var a = t.expandAndCollapse && 0 <= t.initialTreeDepth ? t.initialTreeDepth : i;
return o.root.eachNode("preorder", function(t) {
var e = t.hostTree.data.getRawDataItem(t.dataIndex);
t.isExpand = e && null != e.collapsed ? !e.collapsed : t.depth <= a
}),
o.data
},
getOrient: function() {
var t = this.get("orient");
return "horizontal" === t ? t = "LR" : "vertical" === t && (t = "TB"),
t
},
setZoom: function(t) {
this.option.zoom = t
},
setCenter: function(t) {
this.option.center = t
},
formatTooltip: function(t) {
for (var e = this.getData().tree, i = e.root.children[0], n = e.getNodeByDataIndex(t), o = n.getValue(), a = n.name; n && n !== i; )
a = n.parentNode.name + "." + a,
n = n.parentNode;
return au(a + (isNaN(o) || null == o ? "" : " : " + o))
},
defaultOption: {
zlevel: 0,
z: 2,
coordinateSystem: "view",
left: "12%",
top: "12%",
right: "12%",
bottom: "12%",
layout: "orthogonal",
edgeShape: "curve",
edgeForkPosition: "50%",
roam: !1,
nodeScaleRatio: .4,
center: null,
zoom: 1,
orient: "LR",
symbol: "emptyCircle",
symbolSize: 7,
expandAndCollapse: !0,
initialTreeDepth: 2,
lineStyle: {
color: "#ccc",
width: 1.5,
curveness: .5
},
itemStyle: {
color: "lightsteelblue",
borderColor: "#c23531",
borderWidth: 1.5
},
label: {
show: !0,
color: "#555"
},
leaves: {
label: {
show: !0
}
},
animationEasing: "linear",
animationDuration: 700,
animationDurationUpdate: 1e3
}
});
var zx = Cs({
shape: {
parentPoint: [],
childPoints: [],
orient: "",
forkPosition: ""
},
style: {
stroke: "#000",
fill: null
},
buildPath: function(t, e) {
var i = e.childPoints
, n = i.length
, o = e.parentPoint
, a = i[0]
, r = i[n - 1];
if (1 === n)
return t.moveTo(o[0], o[1]),
void t.lineTo(a[0], a[1]);
var s = e.orient
, l = "TB" === s || "BT" === s ? 0 : 1
, u = 1 - l
, h = Rl(e.forkPosition, 1)
, c = [];
c[l] = o[l],
c[u] = o[u] + (r[u] - o[u]) * h,
t.moveTo(o[0], o[1]),
t.lineTo(c[0], c[1]),
t.moveTo(a[0], a[1]),
c[l] = a[l],
t.lineTo(c[0], c[1]),
c[l] = r[l],
t.lineTo(c[0], c[1]),
t.lineTo(r[0], r[1]);
for (var d = 1; d < n - 1; d++) {
var f = i[d];
t.moveTo(f[0], f[1]),
c[l] = f[l],
t.lineTo(c[0], c[1])
}
}
});
function Bx(t, e) {
var i = t.getItemLayout(e);
return i && !isNaN(i.x) && !isNaN(i.y) && "none" !== t.getItemVisual(e, "symbol")
}
function Vx(t, e, i) {
return i.itemModel = e,
i.itemStyle = e.getModel("itemStyle").getItemStyle(),
i.hoverItemStyle = e.getModel("emphasis.itemStyle").getItemStyle(),
i.lineStyle = e.getModel("lineStyle").getLineStyle(),
i.labelModel = e.getModel("label"),
i.hoverLabelModel = e.getModel("emphasis.label"),
!1 === t.isExpand && 0 !== t.children.length ? i.symbolInnerColor = i.itemStyle.fill : i.symbolInnerColor = "#fff",
i
}
function Gx(t, e, i, n, o, a) {
var r = !i
, s = t.tree.getNodeByDataIndex(e)
, l = s.getModel()
, u = (a = Vx(s, l, a),
t.tree.root)
, h = s.parentNode === u ? s : s.parentNode || s
, c = t.getItemGraphicEl(h.dataIndex)
, d = h.getLayout()
, f = c ? {
x: c.position[0],
y: c.position[1],
rawX: c.__radialOldRawX,
rawY: c.__radialOldRawY
} : d
, p = s.getLayout();
r ? (i = new Xg(t,e,a)).attr("position", [f.x, f.y]) : i.updateData(t, e, a),
i.__radialOldRawX = i.__radialRawX,
i.__radialOldRawY = i.__radialRawY,
i.__radialRawX = p.rawX,
i.__radialRawY = p.rawY,
n.add(i),
t.setItemGraphicEl(e, i),
cl(i, {
position: [p.x, p.y]
}, o);
var g = i.getSymbolPath();
if ("radial" === a.layout) {
var m, v, y = u.children[0], x = y.getLayout(), _ = y.children.length;
if (p.x === x.x && !0 === s.isExpand) {
var w = {};
w.x = (y.children[0].getLayout().x + y.children[_ - 1].getLayout().x) / 2,
w.y = (y.children[0].getLayout().y + y.children[_ - 1].getLayout().y) / 2,
(m = Math.atan2(w.y - x.y, w.x - x.x)) < 0 && (m = 2 * Math.PI + m),
(v = w.x < x.x) && (m -= Math.PI)
} else
(m = Math.atan2(p.y - x.y, p.x - x.x)) < 0 && (m = 2 * Math.PI + m),
0 === s.children.length || 0 !== s.children.length && !1 === s.isExpand ? (v = p.x < x.x) && (m -= Math.PI) : (v = p.x > x.x) || (m -= Math.PI);
var b = v ? "left" : "right"
, S = a.labelModel.get("rotate")
, M = S * (Math.PI / 180);
g.setStyle({
textPosition: a.labelModel.get("position") || b,
textRotation: null == S ? -m : M,
textOrigin: "center",
verticalAlign: "middle"
})
}
!function(t, e, i, n, o, a, r, s, l) {
var u = l.edgeShape
, h = n.__edge;
if ("curve" === u)
e.parentNode && e.parentNode !== i && cl(h = h || (n.__edge = new ds({
shape: Wx(l, o, o),
style: D({
opacity: 0,
strokeNoScale: !0
}, l.lineStyle)
})), {
shape: Wx(l, a, r),
style: {
opacity: 1
}
}, t);
else if ("polyline" === u && "orthogonal" === l.layout && e !== i && e.children && 0 !== e.children.length && !0 === e.isExpand) {
for (var c = e.children, d = [], f = 0; f < c.length; f++) {
var p = c[f].getLayout();
d.push([p.x, p.y])
}
cl(h = h || (n.__edge = new zx({
shape: {
parentPoint: [r.x, r.y],
childPoints: [[r.x, r.y]],
orient: l.orient,
forkPosition: l.edgeForkPosition
},
style: D({
opacity: 0,
strokeNoScale: !0
}, l.lineStyle)
})), {
shape: {
parentPoint: [r.x, r.y],
childPoints: d
},
style: {
opacity: 1
}
}, t)
}
s.add(h)
}(o, s, u, i, f, d, p, n, a)
}
function Fx(t, e, i, n, o, a) {
for (var r, s = t.tree.getNodeByDataIndex(e), l = t.tree.root, u = s.getModel(), h = (a = Vx(s, u, a),
s.parentNode === l ? s : s.parentNode || s), c = a.edgeShape; null == (r = h.getLayout()); )
h = h.parentNode === l ? h : h.parentNode || h;
cl(i, {
position: [r.x + 1, r.y + 1]
}, o, function() {
n.remove(i),
t.setItemGraphicEl(e, null)
}),
i.fadeOut(null, {
keepLabel: !0
});
var d = t.getItemGraphicEl(h.dataIndex).__edge
, f = i.__edge || (!1 === h.isExpand || 1 === h.children.length ? d : void 0);
c = a.edgeShape;
f && ("curve" === c ? cl(f, {
shape: Wx(a, r, r),
style: {
opacity: 0
}
}, o, function() {
n.remove(f)
}) : "polyline" === c && "orthogonal" === a.layout && cl(f, {
shape: {
parentPoint: [r.x, r.y],
childPoints: [[r.x, r.y]]
},
style: {
opacity: 0
}
}, o, function() {
n.remove(f)
}))
}
function Wx(t, e, i) {
var n, o, a, r, s, l, u, h, c = t.orient;
if ("radial" !== t.layout)
return s = e.x,
u = e.y,
l = i.x,
h = i.y,
"LR" !== c && "RL" !== c || (n = s + (l - s) * t.curvature,
o = u,
a = l + (s - l) * t.curvature,
r = h),
"TB" !== c && "BT" !== c || (n = s,
o = u + (h - u) * t.curvature,
a = l,
r = h + (u - h) * t.curvature),
{
x1: s,
y1: u,
x2: l,
y2: h,
cpx1: n,
cpy1: o,
cpx2: a,
cpy2: r
};
s = e.rawX,
u = e.rawY,
l = i.rawX,
h = i.rawY;
var d = Px(s, u)
, f = Px(s, u + (h - u) * t.curvature)
, p = Px(l, h + (u - h) * t.curvature)
, g = Px(l, h);
return {
x1: d.x,
y1: d.y,
x2: g.x,
y2: g.y,
cpx1: f.x,
cpy1: f.y,
cpx2: p.x,
cpy2: p.y
}
}
function Hx(t, e) {
for (var i, n = [t]; i = n.pop(); )
if (e(i),
i.isExpand) {
var o = i.children;
if (o.length)
for (var a = o.length - 1; 0 <= a; a--)
n.push(o[a])
}
}
Cf({
type: "tree",
init: function(t, e) {
this._oldTree,
this._mainGroup = new Ci,
this._controller = new Vy(e.getZr()),
this._controllerHost = {
target: this.group
},
this.group.add(this._mainGroup)
},
render: function(n, t, i, e) {
var o = n.getData()
, a = n.layoutInfo
, r = this._mainGroup
, s = n.get("layout");
"radial" === s ? r.attr("position", [a.x + a.width / 2, a.y + a.height / 2]) : r.attr("position", [a.x, a.y]),
this._updateViewCoordSys(n, a, s),
this._updateController(n, t, i);
var l = this._data
, u = {
expandAndCollapse: n.get("expandAndCollapse"),
layout: s,
edgeShape: n.get("edgeShape"),
edgeForkPosition: n.get("edgeForkPosition"),
orient: n.getOrient(),
curvature: n.get("lineStyle.curveness"),
symbolRotate: n.get("symbolRotate"),
symbolOffset: n.get("symbolOffset"),
hoverAnimation: n.get("hoverAnimation"),
useNameLabel: !0,
fadeIn: !0
};
o.diff(l).add(function(t) {
Bx(o, t) && Gx(o, t, null, r, n, u)
}).update(function(t, e) {
var i = l.getItemGraphicEl(e);
Bx(o, t) ? Gx(o, t, i, r, n, u) : i && Fx(l, e, i, r, n, u)
}).remove(function(t) {
var e = l.getItemGraphicEl(t);
e && Fx(l, t, e, r, n, u)
}).execute(),
this._nodeScaleRatio = n.get("nodeScaleRatio"),
this._updateNodeAndLinkScale(n),
!0 === u.expandAndCollapse && o.eachItemGraphicEl(function(t, e) {
t.off("click").on("click", function() {
i.dispatchAction({
type: "treeExpandAndCollapse",
seriesId: n.id,
dataIndex: e
})
})
}),
this._data = o
},
_updateViewCoordSys: function(t) {
var i = t.getData()
, n = [];
i.each(function(t) {
var e = i.getItemLayout(t);
!e || isNaN(e.x) || isNaN(e.y) || n.push([+e.x, +e.y])
});
var e = []
, o = [];
Wa(n, e, o);
var a = this._min
, r = this._max;
o[0] - e[0] == 0 && (e[0] = a ? a[0] : e[0] - 1,
o[0] = r ? r[0] : o[0] + 1),
o[1] - e[1] == 0 && (e[1] = a ? a[1] : e[1] - 1,
o[1] = r ? r[1] : o[1] + 1);
var s = t.coordinateSystem = new lx;
s.zoomLimit = t.get("scaleLimit"),
s.setBoundingRect(e[0], e[1], o[0] - e[0], o[1] - e[1]),
s.setCenter(t.get("center")),
s.setZoom(t.get("zoom")),
this.group.attr({
position: s.position,
scale: s.scale
}),
this._viewCoordSys = s,
this._min = e,
this._max = o
},
_updateController: function(o, t, a) {
var e = this._controller
, i = this._controllerHost
, r = this.group;
e.setPointerChecker(function(t, e, i) {
var n = r.getBoundingRect();
return n.applyTransform(r.transform),
n.contain(e, i) && !$y(t, a, o)
}),
e.enable(o.get("roam")),
i.zoomLimit = o.get("scaleLimit"),
i.zoom = o.coordinateSystem.getZoom(),
e.off("pan").off("zoom").on("pan", function(t) {
jy(i, t.dx, t.dy),
a.dispatchAction({
seriesId: o.id,
type: "treeRoam",
dx: t.dx,
dy: t.dy
})
}, this).on("zoom", function(t) {
qy(i, t.scale, t.originX, t.originY),
a.dispatchAction({
seriesId: o.id,
type: "treeRoam",
zoom: t.scale,
originX: t.originX,
originY: t.originY
}),
this._updateNodeAndLinkScale(o)
}, this)
},
_updateNodeAndLinkScale: function(t) {
var e = t.getData()
, i = this._getNodeGlobalScale(t)
, n = [i, i];
e.eachItemGraphicEl(function(t, e) {
t.attr("scale", n)
})
},
_getNodeGlobalScale: function(t) {
var e = t.coordinateSystem;
if ("view" !== e.type)
return 1;
var i = this._nodeScaleRatio
, n = e.scale
, o = n && n[0] || 1;
return ((e.getZoom() - 1) * i + 1) / o
},
dispose: function() {
this._controller && this._controller.dispose(),
this._controllerHost = {}
},
remove: function() {
this._mainGroup.removeAll(),
this._data = null
}
}),
_f({
type: "treeExpandAndCollapse",
event: "treeExpandAndCollapse",
update: "update"
}, function(n, t) {
t.eachComponent({
mainType: "series",
subType: "tree",
query: n
}, function(t) {
var e = n.dataIndex
, i = t.getData().tree.getNodeByDataIndex(e);
i.isExpand = !i.isExpand
})
}),
_f({
type: "treeRoam",
event: "treeRoam",
update: "none"
}, function(i, t) {
t.eachComponent({
mainType: "series",
subType: "tree",
query: i
}, function(t) {
var e = ax(t.coordinateSystem, i);
t.setCenter && t.setCenter(e.center),
t.setZoom && t.setZoom(e.zoom)
})
});
function Zx(t, e, i) {
if (t && 0 <= _(e, t.type)) {
var n = i.getData().tree.root
, o = t.targetNode;
if ("string" == typeof o && (o = n.getNodeById(o)),
o && n.contains(o))
return {
node: o
};
var a = t.targetNodeId;
if (null != a && (o = n.getNodeById(a)))
return {
node: o
}
}
}
function Ux(t) {
for (var e = []; t; )
(t = t.parentNode) && e.push(t);
return e.reverse()
}
function Xx(t, e) {
return 0 <= _(Ux(t), e)
}
function Yx(t, e) {
for (var i = []; t; ) {
var n = t.dataIndex;
i.push({
name: t.name,
dataIndex: n,
value: e.getRawValue(n)
}),
t = t.parentNode
}
return i.reverse(),
i
}
Sf(Lm("tree", "circle")),
bf(function(t, e) {
t.eachSeriesByType("tree", function(t) {
!function(t, e) {
var i = function(t, e) {
return bu(t.getBoxLayoutParams(), {
width: e.getWidth(),
height: e.getHeight()
})
}(t, e);
t.layoutInfo = i;
var n = t.get("layout")
, o = 0
, a = 0
, r = null;
r = "radial" === n ? (o = 2 * Math.PI,
a = Math.min(i.height, i.width) / 2,
kx(function(t, e) {
return (t.parentNode === e.parentNode ? 1 : 2) / t.depth
})) : (o = i.width,
a = i.height,
kx());
var s = t.getData().tree.root
, l = s.children[0];
if (l) {
!function(t) {
t.hierNode = {
defaultAncestor: null,
ancestor: t,
prelim: 0,
modifier: 0,
change: 0,
shift: 0,
i: 0,
thread: null
};
for (var e, i, n = [t]; e = n.pop(); )
if (i = e.children,
e.isExpand && i.length)
for (var o = i.length - 1; 0 <= o; o--) {
var a = i[o];
a.hierNode = {
defaultAncestor: null,
ancestor: a,
prelim: 0,
modifier: 0,
change: 0,
shift: 0,
i: o,
thread: null
},
n.push(a)
}
}(s),
function(t, e, i) {
for (var n, o = [t], a = []; n = o.pop(); )
if (a.push(n),
n.isExpand) {
var r = n.children;
if (r.length)
for (var s = 0; s < r.length; s++)
o.push(r[s])
}
for (; n = a.pop(); )
e(n, i)
}(l, Cx, r),
s.hierNode.modifier = -l.hierNode.prelim,
Hx(l, Lx);
var u = l
, h = l
, c = l;
Hx(l, function(t) {
var e = t.getLayout().x;
e < u.getLayout().x && (u = t),
e > h.getLayout().x && (h = t),
t.depth > c.depth && (c = t)
});
var d = u === h ? 1 : r(u, h) / 2
, f = d - u.getLayout().x
, p = 0
, g = 0
, m = 0
, v = 0;
if ("radial" === n)
p = o / (h.getLayout().x + d + f),
g = a / (c.depth - 1 || 1),
Hx(l, function(t) {
m = (t.getLayout().x + f) * p,
v = (t.depth - 1) * g;
var e = Px(m, v);
t.setLayout({
x: e.x,
y: e.y,
rawX: m,
rawY: v
}, !0)
});
else {
var y = t.getOrient();
"RL" === y || "LR" === y ? (g = a / (h.getLayout().x + d + f),
p = o / (c.depth - 1 || 1),
Hx(l, function(t) {
v = (t.getLayout().x + f) * g,
m = "LR" === y ? (t.depth - 1) * p : o - (t.depth - 1) * p,
t.setLayout({
x: m,
y: v
}, !0)
})) : "TB" !== y && "BT" !== y || (p = o / (h.getLayout().x + d + f),
g = a / (c.depth - 1 || 1),
Hx(l, function(t) {
m = (t.getLayout().x + f) * p,
v = "TB" === y ? (t.depth - 1) * g : a - (t.depth - 1) * g,
t.setLayout({
x: m,
y: v
}, !0)
}))
}
}
}(t, e)
})
}),
sc.extend({
type: "series.treemap",
layoutMode: "box",
dependencies: ["grid", "polar"],
preventUsingHoverLayer: !0,
_viewRoot: null,
defaultOption: {
progressive: 0,
left: "center",
top: "middle",
right: null,
bottom: null,
width: "80%",
height: "80%",
sort: !0,
clipWindow: "origin",
squareRatio: .5 * (1 + Math.sqrt(5)),
leafDepth: null,
drillDownIcon: "▶",
zoomToNodeRatio: .1024,
roam: !0,
nodeClick: "zoomToNode",
animation: !0,
animationDurationUpdate: 900,
animationEasing: "quinticInOut",
breadcrumb: {
show: !0,
height: 22,
left: "center",
top: "bottom",
emptyItemWidth: 25,
itemStyle: {
color: "rgba(0,0,0,0.7)",
borderColor: "rgba(255,255,255,0.7)",
borderWidth: 1,
shadowColor: "rgba(150,150,150,1)",
shadowBlur: 3,
shadowOffsetX: 0,
shadowOffsetY: 0,
textStyle: {
color: "#fff"
}
},
emphasis: {
textStyle: {}
}
},
label: {
show: !0,
distance: 0,
padding: 5,
position: "inside",
color: "#fff",
ellipsis: !0
},
upperLabel: {
show: !1,
position: [0, "50%"],
height: 20,
color: "#fff",
ellipsis: !0,
verticalAlign: "middle"
},
itemStyle: {
color: null,
colorAlpha: null,
colorSaturation: null,
borderWidth: 0,
gapWidth: 0,
borderColor: "#fff",
borderColorSaturation: null
},
emphasis: {
upperLabel: {
show: !0,
position: [0, "50%"],
color: "#fff",
ellipsis: !0,
verticalAlign: "middle"
}
},
visualDimension: 0,
visualMin: null,
visualMax: null,
color: [],
colorAlpha: null,
colorSaturation: null,
colorMappingBy: "index",
visibleMin: 10,
childrenVisibleMin: null,
levels: []
},
getInitialData: function(t, e) {
var i = {
name: t.name,
children: t.data
};
!function i(t) {
var n = 0;
E(t.children, function(t) {
i(t);
var e = t.value;
L(e) && (e = e[0]),
n += e
});
var e = t.value;
L(e) && (e = e[0]);
null != e && !isNaN(e) || (e = n);
e < 0 && (e = 0);
L(t.value) ? t.value[0] = e : t.value = e
}(i);
var n = t.levels || []
, o = O((n = t.levels = function(t, e) {
var n, i = e.get("color");
if (!i)
return;
if (E(t = t || [], function(t) {
var e = new Cl(t)
, i = e.get("color");
(e.get("itemStyle.color") || i && "none" !== i) && (n = !0)
}),
!n) {
(t[0] || (t[0] = {})).color = i.slice()
}
return t
}(n, e)) || [], function(t) {
return new Cl(t,this,e)
}, this)
, a = Ax.createTree(i, this, null, function(t) {
t.wrapMethod("getItemModel", function(t, e) {
var i = a.getNodeByDataIndex(e)
, n = o[i.depth];
return n && (t.parentModel = n),
t
})
});
return a.data
},
optionUpdated: function() {
this.resetViewRoot()
},
formatTooltip: function(t) {
var e = this.getData()
, i = this.getRawValue(t)
, n = L(i) ? tu(i[0]) : tu(i);
return au(e.getName(t) + ": " + n)
},
getDataParams: function(t) {
var e = sc.prototype.getDataParams.apply(this, arguments)
, i = this.getData().tree.getNodeByDataIndex(t);
return e.treePathInfo = Yx(i, this),
e
},
setLayoutInfo: function(t) {
this.layoutInfo = this.layoutInfo || {},
P(this.layoutInfo, t)
},
mapIdToIndex: function(t) {
var e = this._idIndexMap;
e || (e = this._idIndexMap = Q(),
this._idIndexMapCount = 0);
var i = e.get(t);
return null == i && e.set(t, i = this._idIndexMapCount++),
i
},
getViewRoot: function() {
return this._viewRoot
},
resetViewRoot: function(t) {
t ? this._viewRoot = t : t = this._viewRoot;
var e = this.getRawData().tree.root;
t && (t === e || e.contains(t)) || (this._viewRoot = e)
}
});
var jx = 5;
function qx(t) {
this.group = new Ci,
t.add(this.group)
}
function Kx(t, e, i, n, o, a) {
var r = [[o ? t : t - jx, e], [t + i, e], [t + i, e + n], [o ? t : t - jx, e + n]];
return a || r.splice(2, 0, [t + i + jx, e + n / 2]),
o || r.push([t, e + n / 2]),
r
}
qx.prototype = {
constructor: qx,
render: function(t, e, i, n) {
var o = t.getModel("breadcrumb")
, a = this.group;
if (a.removeAll(),
o.get("show") && i) {
var r = o.getModel("itemStyle")
, s = r.getModel("textStyle")
, l = {
pos: {
left: o.get("left"),
right: o.get("right"),
top: o.get("top"),
bottom: o.get("bottom")
},
box: {
width: e.getWidth(),
height: e.getHeight()
},
emptyItemWidth: o.get("emptyItemWidth"),
totalWidth: 0,
renderList: []
};
this._prepare(i, l, s),
this._renderContent(t, l, r, s, n),
Su(a, l.pos, l.box)
}
},
_prepare: function(t, e, i) {
for (var n = t; n; n = n.parentNode) {
var o = n.getModel().get("name")
, a = i.getTextRect(o)
, r = Math.max(a.width + 16, e.emptyItemWidth);
e.totalWidth += r + 8,
e.renderList.push({
node: n,
text: o,
width: r
})
}
},
_renderContent: function(t, e, i, n, o) {
for (var a, r, s = 0, l = e.emptyItemWidth, u = t.get("breadcrumb.height"), h = function(t, e, i) {
var n = e.width
, o = e.height
, a = Rl(t.x, n)
, r = Rl(t.y, o)
, s = Rl(t.x2, n)
, l = Rl(t.y2, o);
return (isNaN(a) || isNaN(parseFloat(t.x))) && (a = 0),
(isNaN(s) || isNaN(parseFloat(t.x2))) && (s = n),
(isNaN(r) || isNaN(parseFloat(t.y))) && (r = 0),
(isNaN(l) || isNaN(parseFloat(t.y2))) && (l = o),
i = iu(i || 0),
{
width: Math.max(s - a - i[1] - i[3], 0),
height: Math.max(l - r - i[0] - i[2], 0)
}
}(e.pos, e.box), c = e.totalWidth, d = e.renderList, f = d.length - 1; 0 <= f; f--) {
var p = d[f]
, g = p.node
, m = p.width
, v = p.text;
c > h.width && (c -= m - l,
m = l,
v = null);
var y = new Qr({
shape: {
points: Kx(s, 0, m, u, f === d.length - 1, 0 === f)
},
style: D(i.getItemStyle(), {
lineJoin: "bevel",
text: v,
textFill: n.getTextColor(),
textFont: n.getFont()
}),
z: 10,
onclick: T(o, g)
});
this.group.add(y),
a = t,
r = g,
y.eventData = {
componentType: "series",
componentSubType: "treemap",
componentIndex: a.componentIndex,
seriesIndex: a.componentIndex,
seriesName: a.name,
seriesType: "treemap",
selfType: "breadcrumb",
nodeData: {
dataIndex: r && r.dataIndex,
name: r && r.name
},
treePathInfo: r && Yx(r, a)
},
s += m + 8
}
},
remove: function() {
this.group.removeAll()
}
};
function $x(t) {
var e = s_(t);
return e.stroke = e.fill = e.lineWidth = null,
e
}
var Jx = A
, Qx = Ci
, t_ = rs
, e_ = E
, i_ = ["label"]
, n_ = ["emphasis", "label"]
, o_ = ["upperLabel"]
, a_ = ["emphasis", "upperLabel"]
, r_ = 10
, s_ = ha([["fill", "color"], ["stroke", "strokeColor"], ["lineWidth", "strokeWidth"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["shadowColor"]]);
function l_(h, r, s, l, u, e, c, t, i, n) {
if (c) {
var d = c.getLayout()
, o = h.getData();
if (o.setItemGraphicEl(c.dataIndex, null),
d && d.isInView) {
var f = d.width
, p = d.height
, g = d.borderWidth
, m = d.invisible
, v = c.getRawIndex()
, y = t && t.getRawIndex()
, a = c.viewChildren
, x = d.upperHeight
, _ = a && a.length
, w = c.getModel("itemStyle")
, b = c.getModel("emphasis.itemStyle")
, S = L("nodeGroup", Qx);
if (S) {
if (i.add(S),
S.attr("position", [d.x || 0, d.y || 0]),
S.__tmNodeWidth = f,
S.__tmNodeHeight = p,
d.isAboveViewRoot)
return S;
var M = c.getModel()
, I = L("background", t_, n, 1);
if (I && function(t, e, i) {
if (e.dataIndex = c.dataIndex,
e.seriesIndex = h.seriesIndex,
e.setShape({
x: 0,
y: 0,
width: f,
height: p
}),
m)
A(e);
else {
e.invisible = !1;
var n = c.getVisual("borderColor", !0)
, o = b.get("borderColor")
, a = $x(w);
a.fill = n;
var r = s_(b);
if (r.fill = o,
i) {
var s = f - 2 * g;
D(a, r, n, s, x, {
x: g,
y: 0,
width: s,
height: x
})
} else
a.text = r.text = null;
e.setStyle(a),
Us(e, r)
}
t.add(e)
}(S, I, _ && d.upperLabelHeight),
_)
Qs(S) && Js(S, !1),
I && (Js(I, !0),
o.setItemGraphicEl(c.dataIndex, I));
else {
var T = L("content", t_, n, 2);
T && function(t, e) {
e.dataIndex = c.dataIndex,
e.seriesIndex = h.seriesIndex;
var i = Math.max(f - 2 * g, 0)
, n = Math.max(p - 2 * g, 0);
if (e.culling = !0,
e.setShape({
x: g,
y: g,
width: i,
height: n
}),
m)
A(e);
else {
e.invisible = !1;
var o = c.getVisual("color", !0)
, a = $x(w);
a.fill = o;
var r = s_(b);
D(a, r, o, i, n),
e.setStyle(a),
Us(e, r)
}
t.add(e)
}(S, T),
I && Qs(I) && Js(I, !1),
Js(S, !0),
o.setItemGraphicEl(c.dataIndex, S)
}
return S
}
}
}
function A(t) {
t.invisible || e.push(t)
}
function D(t, e, i, n, o, a) {
var r = M.get("name")
, s = M.getModel(a ? o_ : i_)
, l = M.getModel(a ? a_ : n_)
, u = s.getShallow("show");
el(t, e, s, l, {
defaultText: u ? r : null,
autoColor: i,
isRectText: !0,
labelFetcher: h,
labelDataIndex: c.dataIndex,
labelProp: a ? "upperLabel" : "label"
}),
C(t, a, d),
C(e, a, d),
a && (t.textRect = k(a)),
t.truncate = u && s.get("ellipsis") ? {
outerWidth: n,
outerHeight: o,
minChar: 2
} : null
}
function C(t, e, i) {
var n = t.text;
if (!e && i.isLeafRoot && null != n) {
var o = h.get("drillDownIcon", !0);
t.text = o ? o + " " + n : n
}
}
function L(t, e, i, n) {
var o = null != y && s[t][y]
, a = u[t];
return o ? (s[t][y] = null,
function(t, e, i) {
(t[v] = {}).old = "nodeGroup" === i ? e.position.slice() : P({}, e.shape)
}(a, o, t)) : m || ((o = new e({
z: function(t, e) {
var i = t * r_ + e;
return (i - 1) / i
}(i, n)
})).__tmDepth = i,
function(t, e, i) {
var n = t[v] = {}
, o = c.parentNode;
if (o && (!l || "drillDown" === l.direction)) {
var a = 0
, r = 0
, s = u.background[o.getRawIndex()];
!l && s && s.old && (a = s.old.width,
r = s.old.height),
n.old = "nodeGroup" === i ? [0, r] : {
x: a,
y: r,
width: 0,
height: 0
}
}
n.fadein = "nodeGroup" !== i
}(a, 0, o.__tmStorageName = t)),
r[t][v] = o
}
}
Cf({
type: "treemap",
init: function(t, e) {
this._containerGroup,
this._storage = {
nodeGroup: [],
background: [],
content: []
},
this._oldTree,
this._breadcrumb,
this._controller,
this._state = "ready"
},
render: function(t, e, i, n) {
if (!(_(e.findComponents({
mainType: "series",
subType: "treemap",
query: n
}), t) < 0)) {
this.seriesModel = t,
this.api = i,
this.ecModel = e;
var o = Zx(n, ["treemapZoomToNode", "treemapRootToNode"], t)
, a = n && n.type
, r = t.layoutInfo
, s = !this._oldTree
, l = this._storage
, u = "treemapRootToNode" === a && o && l ? {
rootNodeGroup: l.nodeGroup[o.node.getRawIndex()],
direction: n.direction
} : null
, h = this._giveContainerGroup(r)
, c = this._doRender(h, t, u);
s || a && "treemapZoomToNode" !== a && "treemapRootToNode" !== a ? c.renderFinally() : this._doAnimation(h, c, t, u),
this._resetController(i),
this._renderBreadcrumb(t, i, o)
}
},
_giveContainerGroup: function(t) {
var e = this._containerGroup;
return e || (e = this._containerGroup = new Qx,
this._initEvents(e),
this.group.add(e)),
e.attr("position", [t.x, t.y]),
e
},
_doRender: function(t, e, i) {
var n = e.getData().tree
, o = this._oldTree
, a = {
nodeGroup: [],
background: [],
content: []
}
, r = {
nodeGroup: [],
background: [],
content: []
}
, s = this._storage
, l = []
, c = T(l_, e, r, s, i, a, l);
!function a(r, s, l, u, h) {
u ? e_(s = r, function(t, e) {
t.isRemoved() || i(e, e)
}) : new kf(s,r,t,t).add(i).update(i).remove(T(i, null)).execute();
function t(t) {
return t.getId()
}
function i(t, e) {
var i = null != t ? r[t] : null
, n = null != e ? s[e] : null
, o = c(i, n, l, h);
o && a(i && i.viewChildren || [], n && n.viewChildren || [], o, u, h + 1)
}
}(n.root ? [n.root] : [], o && o.root ? [o.root] : [], t, n === o || !o, 0);
var u, h, d = (h = {
nodeGroup: [],
background: [],
content: []
},
(u = s) && e_(u, function(t, e) {
var i = h[e];
e_(t, function(t) {
t && (i.push(t),
t.__tmWillDelete = 1)
})
}),
h);
return this._oldTree = n,
this._storage = r,
{
lastsForAnimation: a,
willDeleteEls: d,
renderFinally: function() {
e_(d, function(t) {
e_(t, function(t) {
t.parent && t.parent.remove(t)
})
}),
e_(l, function(t) {
t.invisible = !0,
t.dirty()
})
}
}
},
_doAnimation: function(t, a, e, s) {
if (e.get("animation")) {
var l = e.get("animationDurationUpdate")
, u = e.get("animationEasing")
, h = function() {
var a, r = [], s = {};
return {
add: function(t, e, i, n, o) {
return R(n) && (o = n,
n = 0),
!s[t.id] && (s[t.id] = 1,
r.push({
el: t,
target: e,
time: i,
delay: n,
easing: o
}),
!0)
},
done: function(t) {
return a = t,
this
},
start: function() {
for (var t = r.length, e = 0, i = r.length; e < i; e++) {
var n = r[e];
n.el.animateTo(n.target, n.time, n.delay, n.easing, o)
}
return this;
function o() {
--t || (r.length = 0,
s = {},
a && a())
}
}
}
}();
e_(a.willDeleteEls, function(t, r) {
e_(t, function(t, e) {
if (!t.invisible) {
var i, n = t.parent;
if (s && "drillDown" === s.direction)
i = n === s.rootNodeGroup ? {
shape: {
x: 0,
y: 0,
width: n.__tmNodeWidth,
height: n.__tmNodeHeight
},
style: {
opacity: 0
}
} : {
style: {
opacity: 0
}
};
else {
var o = 0
, a = 0;
n.__tmWillDelete || (o = n.__tmNodeWidth / 2,
a = n.__tmNodeHeight / 2),
i = "nodeGroup" === r ? {
position: [o, a],
style: {
opacity: 0
}
} : {
shape: {
x: o,
y: a,
width: 0,
height: 0
},
style: {
opacity: 0
}
}
}
i && h.add(t, i, l, u)
}
})
}),
e_(this._storage, function(t, o) {
e_(t, function(t, e) {
var i = a.lastsForAnimation[o][e]
, n = {};
i && ("nodeGroup" === o ? i.old && (n.position = t.position.slice(),
t.attr("position", i.old)) : (i.old && (n.shape = P({}, t.shape),
t.setShape(i.old)),
i.fadein ? (t.setStyle("opacity", 0),
n.style = {
opacity: 1
}) : 1 !== t.style.opacity && (n.style = {
opacity: 1
})),
h.add(t, n, l, u))
})
}, this),
this._state = "animating",
h.done(Jx(function() {
this._state = "ready",
a.renderFinally()
}, this)).start()
}
},
_resetController: function(t) {
var e = this._controller;
e || ((e = this._controller = new Vy(t.getZr())).enable(this.seriesModel.get("roam")),
e.on("pan", Jx(this._onPan, this)),
e.on("zoom", Jx(this._onZoom, this)));
var n = new Di(0,0,t.getWidth(),t.getHeight());
e.setPointerChecker(function(t, e, i) {
return n.contain(e, i)
})
},
_clearController: function() {
var t = this._controller;
t && (t.dispose(),
t = null)
},
_onPan: function(t) {
if ("animating" !== this._state && (3 < Math.abs(t.dx) || 3 < Math.abs(t.dy))) {
var e = this.seriesModel.getData().tree.root;
if (!e)
return;
var i = e.getLayout();
if (!i)
return;
this.api.dispatchAction({
type: "treemapMove",
from: this.uid,
seriesId: this.seriesModel.id,
rootRect: {
x: i.x + t.dx,
y: i.y + t.dy,
width: i.width,
height: i.height
}
})
}
},
_onZoom: function(t) {
var e = t.originX
, i = t.originY;
if ("animating" !== this._state) {
var n = this.seriesModel.getData().tree.root;
if (!n)
return;
var o = n.getLayout();
if (!o)
return;
var a = new Di(o.x,o.y,o.width,o.height)
, r = this.seriesModel.layoutInfo;
e -= r.x,
i -= r.y;
var s = ae();
ue(s, s, [-e, -i]),
ce(s, s, [t.scale, t.scale]),
ue(s, s, [e, i]),
a.applyTransform(s),
this.api.dispatchAction({
type: "treemapRender",
from: this.uid,
seriesId: this.seriesModel.id,
rootRect: {
x: a.x,
y: a.y,
width: a.width,
height: a.height
}
})
}
},
_initEvents: function(t) {
t.on("click", function(t) {
if ("ready" === this._state) {
var e = this.seriesModel.get("nodeClick", !0);
if (e) {
var i = this.findTarget(t.offsetX, t.offsetY);
if (i) {
var n = i.node;
if (n.getLayout().isLeafRoot)
this._rootToNode(i);
else if ("zoomToNode" === e)
this._zoomToNode(i);
else if ("link" === e) {
var o = n.hostTree.data.getItemModel(n.dataIndex)
, a = o.get("link", !0)
, r = o.get("target", !0) || "blank";
a && gu(a, r)
}
}
}
}
}, this)
},
_renderBreadcrumb: function(e, t, i) {
i = i || ((i = null != e.get("leafDepth", !0) ? {
node: e.getViewRoot()
} : this.findTarget(t.getWidth() / 2, t.getHeight() / 2)) || {
node: e.getData().tree.root
}),
(this._breadcrumb || (this._breadcrumb = new qx(this.group))).render(e, t, i.node, Jx(function(t) {
"animating" !== this._state && (Xx(e.getViewRoot(), t) ? this._rootToNode({
node: t
}) : this._zoomToNode({
node: t
}))
}, this))
},
remove: function() {
this._clearController(),
this._containerGroup && this._containerGroup.removeAll(),
this._storage = {
nodeGroup: [],
background: [],
content: []
},
this._state = "ready",
this._breadcrumb && this._breadcrumb.remove()
},
dispose: function() {
this._clearController()
},
_zoomToNode: function(t) {
this.api.dispatchAction({
type: "treemapZoomToNode",
from: this.uid,
seriesId: this.seriesModel.id,
targetNode: t.node
})
},
_rootToNode: function(t) {
this.api.dispatchAction({
type: "treemapRootToNode",
from: this.uid,
seriesId: this.seriesModel.id,
targetNode: t.node
})
},
findTarget: function(o, a) {
var r;
return this.seriesModel.getViewRoot().eachNode({
attr: "viewChildren",
order: "preorder"
}, function(t) {
var e = this._storage.background[t.getRawIndex()];
if (e) {
var i = e.transformCoordToLocal(o, a)
, n = e.shape;
if (!(n.x <= i[0] && i[0] <= n.x + n.width && n.y <= i[1] && i[1] <= n.y + n.height))
return !1;
r = {
node: t,
offsetX: i[0],
offsetY: i[1]
}
}
}, this),
r
}
});
for (var u_ = function() {}, h_ = ["treemapZoomToNode", "treemapRender", "treemapMove"], c_ = 0; c_ < h_.length; c_++)
_f({
type: h_[c_],
update: "updateView"
}, u_);
_f({
type: "treemapRootToNode",
update: "updateView"
}, function(o, t) {
t.eachComponent({
mainType: "series",
subType: "treemap",
query: o
}, function(t, e) {
var i = Zx(o, ["treemapZoomToNode", "treemapRootToNode"], t);
if (i) {
var n = t.getViewRoot();
n && (o.direction = Xx(n, i.node) ? "rollUp" : "drillDown"),
t.resetViewRoot(i.node)
}
})
});
var d_ = E
, f_ = z
, p_ = -1
, g_ = function(t) {
var e = t.mappingMethod
, i = t.type
, n = this.option = k(t);
this.type = i,
this.mappingMethod = e,
this._normalizeData = T_[e];
var o = m_[i];
this.applyVisual = o.applyVisual,
this.getColorMapper = o.getColorMapper,
this._doMap = o._doMap[e],
"piecewise" === e ? (v_(n),
function(i) {
var t = i.pieceList;
i.hasSpecialVisual = !1,
E(t, function(t, e) {
t.originIndex = e,
null != t.visual && (i.hasSpecialVisual = !0)
})
}(n)) : "category" === e ? n.categories ? function(t) {
var e = t.categories
, i = t.visual
, n = t.categoryMap = {};
if (d_(e, function(t, e) {
n[t] = e
}),
!L(i)) {
var o = [];
z(i) ? d_(i, function(t, e) {
var i = n[e];
o[null != i ? i : p_] = t
}) : o[p_] = i,
i = I_(t, o)
}
for (var a = e.length - 1; 0 <= a; a--)
null == i[a] && (delete n[e[a]],
e.pop())
}(n) : v_(n, !0) : (Y("linear" !== e || n.dataExtent),
v_(n))
};
g_.prototype = {
constructor: g_,
mapValueToVisual: function(t) {
var e = this._normalizeData(t);
return this._doMap(e, t)
},
getNormalizer: function() {
return A(this._normalizeData, this)
}
};
var m_ = g_.visualHandlers = {
color: {
applyVisual: __("color"),
getColorMapper: function() {
var o = this.option;
return A("category" === o.mappingMethod ? function(t, e) {
return e || (t = this._normalizeData(t)),
w_.call(this, t)
}
: function(t, e, i) {
var n = !!i;
return e || (t = this._normalizeData(t)),
i = Ue(t, o.parsedVisual, i),
n ? i : $e(i, "rgba")
}
, this)
},
_doMap: {
linear: function(t) {
return $e(Ue(t, this.option.parsedVisual), "rgba")
},
category: w_,
piecewise: function(t, e) {
var i = M_.call(this, e);
return null == i && (i = $e(Ue(t, this.option.parsedVisual), "rgba")),
i
},
fixed: b_
}
},
colorHue: y_(function(t, e) {
return qe(t, e)
}),
colorSaturation: y_(function(t, e) {
return qe(t, null, e)
}),
colorLightness: y_(function(t, e) {
return qe(t, null, null, e)
}),
colorAlpha: y_(function(t, e) {
return Ke(t, e)
}),
opacity: {
applyVisual: __("opacity"),
_doMap: S_([0, 1])
},
liftZ: {
applyVisual: __("liftZ"),
_doMap: {
linear: b_,
category: b_,
piecewise: b_,
fixed: b_
}
},
symbol: {
applyVisual: function(t, e, i) {
var n = this.mapValueToVisual(t);
if (R(n))
i("symbol", n);
else if (f_(n))
for (var o in n)
n.hasOwnProperty(o) && i(o, n[o])
},
_doMap: {
linear: x_,
category: w_,
piecewise: function(t, e) {
var i = M_.call(this, e);
return null == i && (i = x_.call(this, t)),
i
},
fixed: b_
}
},
symbolSize: {
applyVisual: __("symbolSize"),
_doMap: S_([0, 1])
}
};
function v_(t, e) {
var i = t.visual
, n = [];
z(i) ? d_(i, function(t) {
n.push(t)
}) : null != i && n.push(i);
e || 1 !== n.length || {
color: 1,
symbol: 1
}.hasOwnProperty(t.type) || (n[1] = n[0]),
I_(t, n)
}
function y_(n) {
return {
applyVisual: function(t, e, i) {
t = this.mapValueToVisual(t),
i("color", n(e("color"), t))
},
_doMap: S_([0, 1])
}
}
function x_(t) {
var e = this.option.visual;
return e[Math.round(El(t, [0, 1], [0, e.length - 1], !0))] || {}
}
function __(n) {
return function(t, e, i) {
i(n, this.mapValueToVisual(t))
}
}
function w_(t) {
var e = this.option.visual;
return e[this.option.loop && t !== p_ ? t % e.length : t]
}
function b_() {
return this.option.visual[0]
}
function S_(n) {
return {
linear: function(t) {
return El(t, n, this.option.visual, !0)
},
category: w_,
piecewise: function(t, e) {
var i = M_.call(this, e);
return null == i && (i = El(t, n, this.option.visual, !0)),
i
},
fixed: b_
}
}
function M_(t) {
var e = this.option
, i = e.pieceList;
if (e.hasSpecialVisual) {
var n = i[g_.findPieceIndex(t, i)];
if (n && n.visual)
return n.visual[this.type]
}
}
function I_(t, e) {
return t.visual = e,
"color" === t.type && (t.parsedVisual = O(e, function(t) {
return Fe(t)
})),
e
}
var T_ = {
linear: function(t) {
return El(t, this.option.dataExtent, [0, 1], !0)
},
piecewise: function(t) {
var e = this.option.pieceList
, i = g_.findPieceIndex(t, e, !0);
if (null != i)
return El(i, [0, e.length - 1], [0, 1], !0)
},
category: function(t) {
var e = this.option.categories ? this.option.categoryMap[t] : t;
return null == e ? p_ : e
},
fixed: et
};
function A_(t, e, i) {
return t ? e <= i : e < i
}
g_.listVisualTypes = function() {
var i = [];
return E(m_, function(t, e) {
i.push(e)
}),
i
}
,
g_.addVisualHandler = function(t, e) {
m_[t] = e
}
,
g_.isValidType = function(t) {
return m_.hasOwnProperty(t)
}
,
g_.eachVisual = function(t, e, i) {
z(t) ? E(t, e, i) : e.call(i, t)
}
,
g_.mapVisual = function(t, n, o) {
var a, r = L(t) ? [] : z(t) ? {} : (a = !0,
null);
return g_.eachVisual(t, function(t, e) {
var i = n.call(o, t, e);
a ? r = i : r[e] = i
}),
r
}
,
g_.retrieveVisuals = function(i) {
var n, o = {};
return i && d_(m_, function(t, e) {
i.hasOwnProperty(e) && (o[e] = i[e],
n = !0)
}),
n ? o : null
}
,
g_.prepareVisualTypes = function(t) {
if (f_(t)) {
var i = [];
d_(t, function(t, e) {
i.push(e)
}),
t = i
} else {
if (!L(t))
return [];
t = t.slice()
}
return t.sort(function(t, e) {
return "color" === e && "color" !== t && 0 === t.indexOf("color") ? 1 : -1
}),
t
}
,
g_.dependsOn = function(t, e) {
return "color" === e ? !(!t || 0 !== t.indexOf(e)) : t === e
}
,
g_.findPieceIndex = function(n, t, e) {
for (var o, a = 1 / 0, i = 0, r = t.length; i < r; i++) {
var s = t[i].value;
if (null != s) {
if (s === n || "string" == typeof s && s === n + "")
return i;
e && c(s, i)
}
}
for (i = 0,
r = t.length; i < r; i++) {
var l = t[i]
, u = l.interval
, h = l.close;
if (u) {
if (u[0] === -1 / 0) {
if (A_(h[1], n, u[1]))
return i
} else if (u[1] === 1 / 0) {
if (A_(h[0], u[0], n))
return i
} else if (A_(h[0], u[0], n) && A_(h[1], n, u[1]))
return i;
e && c(u[0], i),
e && c(u[1], i)
}
}
if (e)
return n === 1 / 0 ? t.length - 1 : n === -1 / 0 ? 0 : o;
function c(t, e) {
var i = Math.abs(t - n);
i < a && (a = i,
o = e)
}
}
;
var D_ = L
, C_ = "itemStyle"
, L_ = {
seriesType: "treemap",
reset: function(t, e, i, n) {
var o = t.getData().tree
, a = o.root
, r = t.getModel(C_);
a.isRemoved() || !function n(t, e, o, a, r, s) {
var l = t.getModel();
var i = t.getLayout();
if (!i || i.invisible || !i.isInView)
return;
var u = t.getModel(C_);
var h = o[t.depth];
var c = k_(u, e, h, a);
var d = u.get("borderColor");
var f = u.get("borderColorSaturation");
var p;
null != f && (p = P_(c),
g = f,
d = null != (m = p) ? qe(m, null, null, g) : null);
var g, m;
t.setVisual("borderColor", d);
var v = t.viewChildren;
if (v && v.length) {
var y = O_(t, l, i, u, c, v);
E(v, function(t, e) {
if (t.depth >= r.length || t === r[t.depth]) {
var i = R_(l, c, t, e, y, s);
n(t, i, o, a, r, s)
}
})
} else
p = P_(c),
t.setVisual("color", p)
}(a, {}, O(o.levelModels, function(t) {
return t ? t.get(C_) : null
}), r, t.getViewRoot().getAncestors(), t)
}
};
function k_(i, n, o, a) {
var r = P({}, n);
return E(["color", "colorAlpha", "colorSaturation"], function(t) {
var e = i.get(t, !0);
null == e && o && (e = o[t]),
null == e && (e = n[t]),
null == e && (e = a.get(t)),
null != e && (r[t] = e)
}),
r
}
function P_(t) {
var e = N_(t, "color");
if (e) {
var i = N_(t, "colorAlpha")
, n = N_(t, "colorSaturation");
return n && (e = qe(e, null, null, n)),
i && (e = Ke(e, i)),
e
}
}
function N_(t, e) {
var i = t[e];
if (null != i && "none" !== i)
return i
}
function O_(t, e, i, n, o, a) {
if (a && a.length) {
var r = E_(e, "color") || null != o.color && "none" !== o.color && (E_(e, "colorAlpha") || E_(e, "colorSaturation"));
if (r) {
var s = e.get("visualMin")
, l = e.get("visualMax")
, u = i.dataExtent.slice();
null != s && s < u[0] && (u[0] = s),
null != l && l > u[1] && (u[1] = l);
var h = e.get("colorMappingBy")
, c = {
type: r.name,
dataExtent: u,
visual: r.range
};
"color" !== c.type || "index" !== h && "id" !== h ? c.mappingMethod = "linear" : (c.mappingMethod = "category",
c.loop = !0);
var d = new g_(c);
return d.__drColorMappingBy = h,
d
}
}
}
function E_(t, e) {
var i = t.get(e);
return D_(i) && i.length ? {
name: e,
range: i
} : null
}
function R_(t, e, i, n, o, a) {
var r = P({}, e);
if (o) {
var s = o.type
, l = "color" === s && o.__drColorMappingBy
, u = "index" === l ? n : "id" === l ? a.mapIdToIndex(i.getId()) : i.getValue(t.get("visualDimension"));
r[s] = o.mapValueToVisual(u)
}
return r
}
var z_ = Math.max
, B_ = Math.min
, V_ = W
, G_ = E
, F_ = ["itemStyle", "borderWidth"]
, W_ = ["itemStyle", "gapWidth"]
, H_ = ["upperLabel", "show"]
, Z_ = ["upperLabel", "height"]
, U_ = {
seriesType: "treemap",
reset: function(t, e, i, n) {
var o = i.getWidth()
, a = i.getHeight()
, r = t.option
, s = bu(t.getBoxLayoutParams(), {
width: i.getWidth(),
height: i.getHeight()
})
, l = r.size || []
, u = Rl(V_(s.width, l[0]), o)
, h = Rl(V_(s.height, l[1]), a)
, c = n && n.type
, d = Zx(n, ["treemapZoomToNode", "treemapRootToNode"], t)
, f = "treemapRender" === c || "treemapMove" === c ? n.rootRect : null
, p = t.getViewRoot()
, g = Ux(p);
if ("treemapMove" !== c) {
var m = "treemapZoomToNode" === c ? function(t, e, i, n, o) {
var a, r = (e || {}).node, s = [n, o];
if (!r || r === i)
return s;
var l = n * o
, u = l * t.option.zoomToNodeRatio;
for (; a = r.parentNode; ) {
for (var h = 0, c = a.children, d = 0, f = c.length; d < f; d++)
h += c[d].getValue();
var p = r.getValue();
if (0 === p)
return s;
u *= h / p;
var g = a.getModel()
, m = g.get(F_)
, v = Math.max(m, q_(g));
u += 4 * m * m + (3 * m + v) * Math.pow(u, .5),
Hl < u && (u = Hl),
r = a
}
u < l && (u = l);
var y = Math.pow(u / l, .5);
return [n * y, o * y]
}(t, d, p, u, h) : f ? [f.width, f.height] : [u, h]
, v = r.sort;
v && "asc" !== v && "desc" !== v && (v = "desc");
var y = {
squareRatio: r.squareRatio,
sort: v,
leafDepth: r.leafDepth
};
p.hostTree.clearLayouts();
var x = {
x: 0,
y: 0,
width: m[0],
height: m[1],
area: m[0] * m[1]
};
p.setLayout(x),
function t(e, i, n, o) {
var a;
var r;
if (e.isRemoved())
return;
var s = e.getLayout();
a = s.width;
r = s.height;
var l = e.getModel();
var u = l.get(F_);
var h = l.get(W_) / 2;
var c = q_(l);
var d = Math.max(u, c);
var f = u - h;
var p = d - h;
var l = e.getModel();
e.setLayout({
borderWidth: u,
upperHeight: d,
upperLabelHeight: c
}, !0);
a = z_(a - 2 * f, 0);
r = z_(r - f - p, 0);
var g = a * r;
var m = X_(e, l, g, i, n, o);
if (!m.length)
return;
var v = {
x: f,
y: p,
width: a,
height: r
};
var y = B_(a, r);
var x = 1 / 0;
var _ = [];
_.area = 0;
for (var w = 0, b = m.length; w < b; ) {
var S = m[w];
_.push(S),
_.area += S.getLayout().area;
var M = Y_(_, y, i.squareRatio);
x = M <= x ? (w++,
M) : (_.area -= _.pop().getLayout().area,
j_(_, y, v, h, !1),
y = B_(v.width, v.height),
_.length = _.area = 0,
1 / 0)
}
_.length && j_(_, y, v, h, !0);
if (!n) {
var I = l.get("childrenVisibleMin");
null != I && g < I && (n = !0)
}
for (var w = 0, b = m.length; w < b; w++)
t(m[w], i, n, o + 1)
}(p, y, !1, 0);
x = p.getLayout();
G_(g, function(t, e) {
var i = (g[e + 1] || p).getValue();
t.setLayout(P({
dataExtent: [i, i],
borderWidth: 0,
upperHeight: 0
}, x))
})
}
var _ = t.getData().tree.root;
_.setLayout(function(t, e, i) {
if (e)
return {
x: e.x,
y: e.y
};
var n = {
x: 0,
y: 0
};
if (!i)
return n;
var o = i.node
, a = o.getLayout();
if (!a)
return n;
var r = [a.width / 2, a.height / 2]
, s = o;
for (; s; ) {
var l = s.getLayout();
r[0] += l.x,
r[1] += l.y,
s = s.parentNode
}
return {
x: t.width / 2 - r[0],
y: t.height / 2 - r[1]
}
}(s, f, d), !0),
t.setLayoutInfo(s),
function e(t, i, n, o, a) {
var r = t.getLayout();
var s = n[a];
var l = s && s === t;
if (s && !l || a === n.length && t !== o)
return;
t.setLayout({
isInView: !0,
invisible: !l && !i.intersect(r),
isAboveViewRoot: l
}, !0);
var u = new Di(i.x - r.x,i.y - r.y,i.width,i.height);
G_(t.viewChildren || [], function(t) {
e(t, u, n, o, a + 1)
})
}(_, new Di(-s.x,-s.y,o,a), g, p, 0)
}
};
function X_(t, e, i, n, o, a) {
var r = t.children || []
, s = n.sort;
"asc" !== s && "desc" !== s && (s = null);
var l = null != n.leafDepth && n.leafDepth <= a;
if (o && !l)
return t.viewChildren = [];
!function(t, n) {
n && t.sort(function(t, e) {
var i = "asc" === n ? t.getValue() - e.getValue() : e.getValue() - t.getValue();
return 0 == i ? "asc" === n ? t.dataIndex - e.dataIndex : e.dataIndex - t.dataIndex : i
})
}(r = M(r, function(t) {
return !t.isRemoved()
}), s);
var u = function(t, e, i) {
for (var n = 0, o = 0, a = e.length; o < a; o++)
n += e[o].getValue();
var r = t.get("visualDimension");
if (e && e.length)
if ("value" === r && i)
s = [e[e.length - 1].getValue(), e[0].getValue()],
"asc" === i && s.reverse();
else {
var s = [1 / 0, -1 / 0];
G_(e, function(t) {
var e = t.getValue(r);
e < s[0] && (s[0] = e),
e > s[1] && (s[1] = e)
})
}
else
s = [NaN, NaN];
return {
sum: n,
dataExtent: s
}
}(e, r, s);
if (0 === u.sum)
return t.viewChildren = [];
if (u.sum = function(t, e, i, n, o) {
if (!n)
return i;
for (var a = t.get("visibleMin"), r = o.length, s = r, l = r - 1; 0 <= l; l--) {
var u = o["asc" === n ? r - l - 1 : l].getValue();
u / i * e < a && (s = l,
i -= u)
}
return "asc" === n ? o.splice(0, r - s) : o.splice(s, r - s),
i
}(e, i, u.sum, s, r),
0 === u.sum)
return t.viewChildren = [];
for (var h = 0, c = r.length; h < c; h++) {
var d = r[h].getValue() / u.sum * i;
r[h].setLayout({
area: d
})
}
return l && (r.length && t.setLayout({
isLeafRoot: !0
}, !0),
r.length = 0),
t.viewChildren = r,
t.setLayout({
dataExtent: u.dataExtent
}, !0),
r
}
function Y_(t, e, i) {
for (var n, o = 0, a = 1 / 0, r = 0, s = t.length; r < s; r++)
(n = t[r].getLayout().area) && (n < a && (a = n),
o < n && (o = n));
var l = t.area * t.area
, u = e * e * i;
return l ? z_(u * o / l, l / (u * a)) : 1 / 0
}
function j_(t, e, i, n, o) {
var a = e === i.width ? 0 : 1
, r = 1 - a
, s = ["x", "y"]
, l = ["width", "height"]
, u = i[s[a]]
, h = e ? t.area / e : 0;
(o || h > i[l[r]]) && (h = i[l[r]]);
for (var c = 0, d = t.length; c < d; c++) {
var f = t[c]
, p = {}
, g = h ? f.getLayout().area / h : 0
, m = p[l[r]] = z_(h - 2 * n, 0)
, v = i[s[a]] + i[l[a]] - u
, y = c === d - 1 || v < g ? v : g
, x = p[l[a]] = z_(y - 2 * n, 0);
p[s[r]] = i[s[r]] + B_(n, m / 2),
p[s[a]] = u + B_(n, x / 2),
u += y,
f.setLayout(p, !0)
}
i[s[r]] += h,
i[l[r]] -= h
}
function q_(t) {
return t.get(H_) ? t.get(Z_) : 0
}
function K_(t) {
return "_EC_" + t
}
Sf(L_),
bf(U_);
function $_(t) {
this._directed = t || !1,
this.nodes = [],
this.edges = [],
this._nodesMap = {},
this._edgesMap = {},
this.data,
this.edgeData
}
var J_ = $_.prototype;
function Q_(t, e) {
this.id = null == t ? "" : t,
this.inEdges = [],
this.outEdges = [],
this.edges = [],
this.hostGraph,
this.dataIndex = null == e ? -1 : e
}
function tw(t, e, i) {
this.node1 = t,
this.node2 = e,
this.dataIndex = null == i ? -1 : i
}
J_.type = "graph",
J_.isDirected = function() {
return this._directed
}
,
J_.addNode = function(t, e) {
t = null == t ? "" + e : "" + t;
var i = this._nodesMap;
if (!i[K_(t)]) {
var n = new Q_(t,e);
return (n.hostGraph = this).nodes.push(n),
i[K_(t)] = n
}
}
,
J_.getNodeByIndex = function(t) {
var e = this.data.getRawIndex(t);
return this.nodes[e]
}
,
J_.getNodeById = function(t) {
return this._nodesMap[K_(t)]
}
,
J_.addEdge = function(t, e, i) {
var n = this._nodesMap
, o = this._edgesMap;
if ("number" == typeof t && (t = this.nodes[t]),
"number" == typeof e && (e = this.nodes[e]),
Q_.isInstance(t) || (t = n[K_(t)]),
Q_.isInstance(e) || (e = n[K_(e)]),
t && e) {
var a = t.id + "-" + e.id;
if (!o[a]) {
var r = new tw(t,e,i);
return (r.hostGraph = this)._directed && (t.outEdges.push(r),
e.inEdges.push(r)),
t.edges.push(r),
t !== e && e.edges.push(r),
this.edges.push(r),
o[a] = r
}
}
}
,
J_.getEdgeByIndex = function(t) {
var e = this.edgeData.getRawIndex(t);
return this.edges[e]
}
,
J_.getEdge = function(t, e) {
Q_.isInstance(t) && (t = t.id),
Q_.isInstance(e) && (e = e.id);
var i = this._edgesMap;
return this._directed ? i[t + "-" + e] : i[t + "-" + e] || i[e + "-" + t]
}
,
J_.eachNode = function(t, e) {
for (var i = this.nodes, n = i.length, o = 0; o < n; o++)
0 <= i[o].dataIndex && t.call(e, i[o], o)
}
,
J_.eachEdge = function(t, e) {
for (var i = this.edges, n = i.length, o = 0; o < n; o++)
0 <= i[o].dataIndex && 0 <= i[o].node1.dataIndex && 0 <= i[o].node2.dataIndex && t.call(e, i[o], o)
}
,
J_.breadthFirstTraverse = function(t, e, i, n) {
if (Q_.isInstance(e) || (e = this._nodesMap[K_(e)]),
e) {
for (var o = "out" === i ? "outEdges" : "in" === i ? "inEdges" : "edges", a = 0; a < this.nodes.length; a++)
this.nodes[a].__visited = !1;
if (!t.call(n, e, null))
for (var r = [e]; r.length; ) {
var s = r.shift()
, l = s[o];
for (a = 0; a < l.length; a++) {
var u = l[a]
, h = u.node1 === s ? u.node2 : u.node1;
if (!h.__visited) {
if (t.call(n, h, s))
return;
r.push(h),
h.__visited = !0
}
}
}
}
}
,
J_.update = function() {
for (var t = this.data, i = this.edgeData, e = this.nodes, n = this.edges, o = 0, a = e.length; o < a; o++)
e[o].dataIndex = -1;
for (o = 0,
a = t.count(); o < a; o++)
e[t.getRawIndex(o)].dataIndex = o;
i.filterSelf(function(t) {
var e = n[i.getRawIndex(t)];
return 0 <= e.node1.dataIndex && 0 <= e.node2.dataIndex
});
for (o = 0,
a = n.length; o < a; o++)
n[o].dataIndex = -1;
for (o = 0,
a = i.count(); o < a; o++)
n[i.getRawIndex(o)].dataIndex = o
}
,
J_.clone = function() {
for (var t = new $_(this._directed), e = this.nodes, i = this.edges, n = 0; n < e.length; n++)
t.addNode(e[n].id, e[n].dataIndex);
for (n = 0; n < i.length; n++) {
var o = i[n];
t.addEdge(o.node1.id, o.node2.id, o.dataIndex)
}
return t
}
,
Q_.prototype = {
constructor: Q_,
degree: function() {
return this.edges.length
},
inDegree: function() {
return this.inEdges.length
},
outDegree: function() {
return this.outEdges.length
},
getModel: function(t) {
if (!(this.dataIndex < 0))
return this.hostGraph.data.getItemModel(this.dataIndex).getModel(t)
}
},
tw.prototype.getModel = function(t) {
if (!(this.dataIndex < 0))
return this.hostGraph.edgeData.getItemModel(this.dataIndex).getModel(t)
}
;
function ew(i, n) {
return {
getValue: function(t) {
var e = this[i][n];
return e.get(e.getDimension(t || "value"), this.dataIndex)
},
setVisual: function(t, e) {
0 <= this.dataIndex && this[i][n].setItemVisual(this.dataIndex, t, e)
},
getVisual: function(t, e) {
return this[i][n].getItemVisual(this.dataIndex, t, e)
},
setLayout: function(t, e) {
0 <= this.dataIndex && this[i][n].setItemLayout(this.dataIndex, t, e)
},
getLayout: function() {
return this[i][n].getItemLayout(this.dataIndex)
},
getGraphicEl: function() {
return this[i][n].getItemGraphicEl(this.dataIndex)
},
getRawIndex: function() {
return this[i][n].getRawIndex(this.dataIndex)
}
}
}
b(Q_, ew("hostGraph", "data")),
b(tw, ew("hostGraph", "edgeData")),
$_.Node = Q_,
$_.Edge = tw,
ra(Q_),
ra(tw);
function iw(t, e, i, n, o) {
for (var a = new $_(n), r = 0; r < t.length; r++)
a.addNode(W(t[r].id, t[r].name, r), r);
var s = []
, l = []
, u = 0;
for (r = 0; r < e.length; r++) {
var h = e[r]
, c = h.source
, d = h.target;
a.addEdge(c, d, u) && (l.push(h),
s.push(W(h.id, c + " > " + d)),
u++)
}
var f, p = i.get("coordinateSystem");
if ("cartesian2d" === p || "polar" === p)
f = gp(t, i);
else {
var g = lh.get(p)
, m = g && "view" !== g.type && g.dimensions || [];
_(m, "value") < 0 && m.concat(["value"]);
var v = lp(t, {
coordDimensions: m
});
(f = new Yf(v,i)).initData(t)
}
var y = new Yf(["value"],i);
return y.initData(l, s),
o && o(f, y),
yx({
mainData: f,
struct: a,
structAttr: "graph",
datas: {
node: f,
edge: y
},
datasAttr: {
node: "data",
edge: "edgeData"
}
}),
a.update(),
a
}
var nw = Df({
type: "series.graph",
init: function(t) {
nw.superApply(this, "init", arguments);
var e = this;
function i() {
return e._categoriesData
}
this.legendVisualProvider = new qv(i,i),
this.fillDataTextStyle(t.edges || t.links),
this._updateCategoriesData()
},
mergeOption: function(t) {
nw.superApply(this, "mergeOption", arguments),
this.fillDataTextStyle(t.edges || t.links),
this._updateCategoriesData()
},
mergeDefaultAndTheme: function(t) {
nw.superApply(this, "mergeDefaultAndTheme", arguments),
Go(t, ["edgeLabel"], ["show"])
},
getInitialData: function(t, s) {
var e = t.edges || t.links || []
, i = t.data || t.nodes || []
, l = this;
if (i && e)
return iw(i, e, this, !0, function(t, e) {
t.wrapMethod("getItemModel", function(t) {
var e = l._categoriesModels[t.getShallow("category")];
return e && (e.parentModel = t.parentModel,
t.parentModel = e),
t
});
var i = l.getModel("edgeLabel")
, n = new Cl({
label: i.option
},i.parentModel,s)
, o = l.getModel("emphasis.edgeLabel")
, a = new Cl({
emphasis: {
label: o.option
}
},o.parentModel,s);
function r(t) {
return (t = this.parsePath(t)) && "label" === t[0] ? n : t && "emphasis" === t[0] && "label" === t[1] ? a : this.parentModel
}
e.wrapMethod("getItemModel", function(t) {
return t.customizeGetParent(r),
t
})
}).data
},
getGraph: function() {
return this.getData().graph
},
getEdgeData: function() {
return this.getGraph().edgeData
},
getCategoriesData: function() {
return this._categoriesData
},
formatTooltip: function(t, e, i) {
if ("edge" !== i)
return nw.superApply(this, "formatTooltip", arguments);
var n = this.getData()
, o = this.getDataParams(t, i)
, a = n.graph.getEdgeByIndex(t)
, r = n.getName(a.node1.dataIndex)
, s = n.getName(a.node2.dataIndex)
, l = [];
return null != r && l.push(r),
null != s && l.push(s),
l = au(l.join(" > ")),
o.value && (l += " : " + au(o.value)),
l
},
_updateCategoriesData: function() {
var t = O(this.option.categories || [], function(t) {
return null != t.value ? t : P({
value: 0
}, t)
})
, e = new Yf(["value"],this);
e.initData(t),
this._categoriesData = e,
this._categoriesModels = e.mapArray(function(t) {
return e.getItemModel(t, !0)
})
},
setZoom: function(t) {
this.option.zoom = t
},
setCenter: function(t) {
this.option.center = t
},
isAnimationEnabled: function() {
return nw.superCall(this, "isAnimationEnabled") && !("force" === this.get("layout") && this.get("force.layoutAnimation"))
},
defaultOption: {
zlevel: 0,
z: 2,
coordinateSystem: "view",
legendHoverLink: !0,
hoverAnimation: !0,
layout: null,
focusNodeAdjacency: !1,
circular: {
rotateLabel: !1
},
force: {
initLayout: null,
repulsion: [0, 50],
gravity: .1,
friction: .6,
edgeLength: 30,
layoutAnimation: !0
},
left: "center",
top: "center",
symbol: "circle",
symbolSize: 10,
edgeSymbol: ["none", "none"],
edgeSymbolSize: 10,
edgeLabel: {
position: "middle",
distance: 5
},
draggable: !1,
roam: !1,
center: null,
zoom: 1,
nodeScaleRatio: .6,
label: {
show: !1,
formatter: "{b}"
},
itemStyle: {},
lineStyle: {
color: "#aaa",
width: 1,
curveness: 0,
opacity: .5
},
emphasis: {
label: {
show: !0
}
}
}
})
, ow = ls.prototype
, aw = ds.prototype;
function rw(t) {
return isNaN(+t.cpx1) || isNaN(+t.cpy1)
}
var sw = Cs({
type: "ec-line",
style: {
stroke: "#000",
fill: null
},
shape: {
x1: 0,
y1: 0,
x2: 0,
y2: 0,
percent: 1,
cpx1: null,
cpy1: null
},
buildPath: function(t, e) {
this[rw(e) ? "_buildPathLine" : "_buildPathCurve"](t, e)
},
_buildPathLine: ow.buildPath,
_buildPathCurve: aw.buildPath,
pointAt: function(t) {
return this[rw(this.shape) ? "_pointAtLine" : "_pointAtCurve"](t)
},
_pointAtLine: ow.pointAt,
_pointAtCurve: aw.pointAt,
tangentAt: function(t) {
var e = this.shape
, i = rw(e) ? [e.x2 - e.x1, e.y2 - e.y1] : this._tangentAtCurve(t);
return mt(i, i)
},
_tangentAtCurve: aw.tangentAt
})
, lw = ["fromSymbol", "toSymbol"];
function uw(t) {
return "_" + t + "Type"
}
function hw(t, e, i) {
var n = e.getItemVisual(i, "color")
, o = e.getItemVisual(i, t)
, a = e.getItemVisual(i, t + "Size");
if (o && "none" !== o) {
L(a) || (a = [a, a]);
var r = wg(o, -a[0] / 2, -a[1] / 2, a[0], a[1], n);
return r.name = t,
r
}
}
function cw(t, e) {
t.x1 = e[0][0],
t.y1 = e[0][1],
t.x2 = e[1][0],
t.y2 = e[1][1],
t.percent = 1;
var i = e[2];
i ? (t.cpx1 = i[0],
t.cpy1 = i[1]) : (t.cpx1 = NaN,
t.cpy1 = NaN)
}
function dw(t, e, i) {
Ci.call(this),
this._createLine(t, e, i)
}
var fw = dw.prototype;
function pw(t) {
this._ctor = t || dw,
this.group = new Ci
}
fw.beforeUpdate = function() {
var t = this.childOfName("fromSymbol")
, e = this.childOfName("toSymbol")
, i = this.childOfName("label");
if (t || e || !i.ignore) {
for (var n = 1, o = this.parent; o; )
o.scale && (n /= o.scale[0]),
o = o.parent;
var a = this.childOfName("line");
if (this.__dirty || a.__dirty) {
var r = a.shape.percent
, s = a.pointAt(0)
, l = a.pointAt(r)
, u = ht([], l, s);
if (mt(u, u),
t) {
t.attr("position", s);
var h = a.tangentAt(0);
t.attr("rotation", Math.PI / 2 - Math.atan2(h[1], h[0])),
t.attr("scale", [n * r, n * r])
}
if (e) {
e.attr("position", l);
h = a.tangentAt(1);
e.attr("rotation", -Math.PI / 2 - Math.atan2(h[1], h[0])),
e.attr("scale", [n * r, n * r])
}
if (!i.ignore) {
var c, d, f, p;
i.attr("position", l);
var g = i.__labelDistance
, m = g[0] * n
, v = g[1] * n
, y = r / 2
, x = [(h = a.tangentAt(y))[1], -h[0]]
, _ = a.pointAt(y);
0 < x[1] && (x[0] = -x[0],
x[1] = -x[1]);
var w, b = h[0] < 0 ? -1 : 1;
if ("start" !== i.__position && "end" !== i.__position) {
var S = -Math.atan2(h[1], h[0]);
l[0] < s[0] && (S = Math.PI + S),
i.attr("rotation", S)
}
switch (i.__position) {
case "insideStartTop":
case "insideMiddleTop":
case "insideEndTop":
case "middle":
w = -v,
f = "bottom";
break;
case "insideStartBottom":
case "insideMiddleBottom":
case "insideEndBottom":
w = v,
f = "top";
break;
default:
w = 0,
f = "middle"
}
switch (i.__position) {
case "end":
c = [u[0] * m + l[0], u[1] * v + l[1]],
d = .8 < u[0] ? "left" : u[0] < -.8 ? "right" : "center",
f = .8 < u[1] ? "top" : u[1] < -.8 ? "bottom" : "middle";
break;
case "start":
c = [-u[0] * m + s[0], -u[1] * v + s[1]],
d = .8 < u[0] ? "right" : u[0] < -.8 ? "left" : "center",
f = .8 < u[1] ? "bottom" : u[1] < -.8 ? "top" : "middle";
break;
case "insideStartTop":
case "insideStart":
case "insideStartBottom":
c = [m * b + s[0], s[1] + w],
d = h[0] < 0 ? "right" : "left",
p = [-m * b, -w];
break;
case "insideMiddleTop":
case "insideMiddle":
case "insideMiddleBottom":
case "middle":
c = [_[0], _[1] + w],
d = "center",
p = [0, -w];
break;
case "insideEndTop":
case "insideEnd":
case "insideEndBottom":
c = [-m * b + l[0], l[1] + w],
d = 0 <= h[0] ? "right" : "left",
p = [m * b, -w]
}
i.attr({
style: {
textVerticalAlign: i.__verticalAlign || f,
textAlign: i.__textAlign || d
},
position: c,
scale: [n, n],
origin: p
})
}
}
}
}
,
fw._createLine = function(i, n, t) {
var e = i.hostModel
, o = function(t) {
var e = new sw({
name: "line",
subPixelOptimize: !0
});
return cw(e.shape, t),
e
}(i.getItemLayout(n));
o.shape.percent = 0,
dl(o, {
shape: {
percent: 1
}
}, e, n),
this.add(o);
var a = new Ur({
name: "label",
lineLabelOriginalOpacity: 1
});
this.add(a),
E(lw, function(t) {
var e = hw(t, i, n);
this.add(e),
this[uw(t)] = i.getItemVisual(n, t)
}, this),
this._updateCommonStl(i, n, t)
}
,
fw.updateData = function(o, a, t) {
var e = o.hostModel
, i = this.childOfName("line")
, n = o.getItemLayout(a)
, r = {
shape: {}
};
cw(r.shape, n),
cl(i, r, e, a),
E(lw, function(t) {
var e = o.getItemVisual(a, t)
, i = uw(t);
if (this[i] !== e) {
this.remove(this.childOfName(t));
var n = hw(t, o, a);
this.add(n)
}
this[i] = e
}, this),
this._updateCommonStl(o, a, t)
}
,
fw._updateCommonStl = function(t, e, i) {
var n = t.hostModel
, o = this.childOfName("line")
, a = i && i.lineStyle
, r = i && i.hoverLineStyle
, s = i && i.labelModel
, l = i && i.hoverLabelModel;
if (!i || t.hasItemOption) {
var u = t.getItemModel(e);
a = u.getModel("lineStyle").getLineStyle(),
r = u.getModel("emphasis.lineStyle").getLineStyle(),
s = u.getModel("label"),
l = u.getModel("emphasis.label")
}
var h = t.getItemVisual(e, "color")
, c = Z(t.getItemVisual(e, "opacity"), a.opacity, 1);
o.useStyle(D({
strokeNoScale: !0,
fill: "none",
stroke: h,
opacity: c
}, a)),
o.hoverStyle = r,
E(lw, function(t) {
var e = this.childOfName(t);
e && (e.setColor(h),
e.setStyle({
opacity: c
}))
}, this);
var d, f, p = s.getShallow("show"), g = l.getShallow("show"), m = this.childOfName("label");
if ((p || g) && (d = h || "#000",
null == (f = n.getFormattedLabel(e, "normal", t.dataType)))) {
var v = n.getRawValue(e);
f = null == v ? t.getName(e) : isFinite(v) ? zl(v) : v
}
var y = p ? f : null
, x = g ? H(n.getFormattedLabel(e, "emphasis", t.dataType), f) : null
, _ = m.style;
if (null != y || null != x) {
nl(m.style, s, {
text: y
}, {
autoColor: d
}),
m.__textAlign = _.textAlign,
m.__verticalAlign = _.textVerticalAlign,
m.__position = s.get("position") || "middle";
var w = s.get("distance");
L(w) || (w = [w, w]),
m.__labelDistance = w
}
m.hoverStyle = null != x ? {
text: x,
textFill: l.getTextColor(!0),
fontStyle: l.getShallow("fontStyle"),
fontWeight: l.getShallow("fontWeight"),
fontSize: l.getShallow("fontSize"),
fontFamily: l.getShallow("fontFamily")
} : {
text: null
},
m.ignore = !p && !g,
$s(this)
}
,
fw.highlight = function() {
this.trigger("emphasis")
}
,
fw.downplay = function() {
this.trigger("normal")
}
,
fw.updateLayout = function(t, e) {
this.setLinePoints(t.getItemLayout(e))
}
,
fw.setLinePoints = function(t) {
var e = this.childOfName("line");
cw(e.shape, t),
e.dirty()
}
,
w(dw, Ci);
var gw = pw.prototype;
function mw(t) {
var e = t.hostModel;
return {
lineStyle: e.getModel("lineStyle").getLineStyle(),
hoverLineStyle: e.getModel("emphasis.lineStyle").getLineStyle(),
labelModel: e.getModel("label"),
hoverLabelModel: e.getModel("emphasis.label")
}
}
function vw(t) {
return isNaN(t[0]) || isNaN(t[1])
}
function yw(t) {
return !vw(t[0]) && !vw(t[1])
}
function xw(t) {
var e = t.coordinateSystem;
if ("view" !== e.type)
return 1;
var i = t.option.nodeScaleRatio
, n = e.scale
, o = n && n[0] || 1;
return ((e.getZoom() - 1) * i + 1) / o
}
function _w(t) {
var e = t.getVisual("symbolSize");
return e instanceof Array && (e = (e[0] + e[1]) / 2),
+e
}
gw.isPersistent = function() {
return !0
}
,
gw.updateData = function(i) {
var n = this
, e = n.group
, o = n._lineData;
n._lineData = i,
o || e.removeAll();
var a = mw(i);
i.diff(o).add(function(t) {
!function(t, e, i, n) {
if (!yw(e.getItemLayout(i)))
return;
var o = new t._ctor(e,i,n);
e.setItemGraphicEl(i, o),
t.group.add(o)
}(n, i, t, a)
}).update(function(t, e) {
!function(t, e, i, n, o, a) {
var r = e.getItemGraphicEl(n);
if (!yw(i.getItemLayout(o)))
return t.group.remove(r);
r ? r.updateData(i, o, a) : r = new t._ctor(i,o,a);
i.setItemGraphicEl(o, r),
t.group.add(r)
}(n, o, i, e, t, a)
}).remove(function(t) {
e.remove(o.getItemGraphicEl(t))
}).execute()
}
,
gw.updateLayout = function() {
var i = this._lineData;
i && i.eachItemGraphicEl(function(t, e) {
t.updateLayout(i, e)
}, this)
}
,
gw.incrementalPrepareUpdate = function(t) {
this._seriesScope = mw(t),
this._lineData = null,
this.group.removeAll()
}
,
gw.incrementalUpdate = function(t, e) {
function i(t) {
t.isGroup || function(t) {
return t.animators && 0 < t.animators.length
}(t) || (t.incremental = t.useHoverLayer = !0)
}
for (var n = t.start; n < t.end; n++) {
if (yw(e.getItemLayout(n))) {
var o = new this._ctor(e,n,this._seriesScope);
o.traverse(i),
this.group.add(o),
e.setItemGraphicEl(n, o)
}
}
}
,
gw.remove = function() {
this._clearIncremental(),
this._incremental = null,
this.group.removeAll()
}
,
gw._clearIncremental = function() {
var t = this._incremental;
t && t.clearDisplaybles()
}
;
var ww = []
, bw = []
, Sw = []
, Mw = La
, Iw = _t
, Tw = Math.abs;
function Aw(t, e, i) {
for (var n, o = t[0], a = t[1], r = t[2], s = 1 / 0, l = i * i, u = .1, h = .1; h <= .9; h += .1) {
ww[0] = Mw(o[0], a[0], r[0], h),
ww[1] = Mw(o[1], a[1], r[1], h),
(f = Tw(Iw(ww, e) - l)) < s && (s = f,
n = h)
}
for (var c = 0; c < 32; c++) {
var d = n + u;
bw[0] = Mw(o[0], a[0], r[0], n),
bw[1] = Mw(o[1], a[1], r[1], n),
Sw[0] = Mw(o[0], a[0], r[0], d),
Sw[1] = Mw(o[1], a[1], r[1], d);
var f = Iw(bw, e) - l;
if (Tw(f) < .01)
break;
var p = Iw(Sw, e) - l;
u /= 2,
f < 0 ? 0 <= p ? n += u : n -= u : 0 <= p ? n -= u : n += u
}
return n
}
function Dw(t, l) {
var u = []
, h = Na
, c = [[], [], []]
, d = [[], []]
, f = [];
l /= 2,
t.eachEdge(function(t, e) {
var i = t.getLayout()
, n = t.getVisual("fromSymbol")
, o = t.getVisual("toSymbol");
i.__original || (i.__original = [rt(i[0]), rt(i[1])],
i[2] && i.__original.push(rt(i[2])));
var a = i.__original;
if (null != i[2]) {
if (at(c[0], a[0]),
at(c[1], a[2]),
at(c[2], a[1]),
n && "none" !== n) {
var r = _w(t.node1)
, s = Aw(c, a[0], r * l);
h(c[0][0], c[1][0], c[2][0], s, u),
c[0][0] = u[3],
c[1][0] = u[4],
h(c[0][1], c[1][1], c[2][1], s, u),
c[0][1] = u[3],
c[1][1] = u[4]
}
if (o && "none" !== o) {
r = _w(t.node2),
s = Aw(c, a[1], r * l);
h(c[0][0], c[1][0], c[2][0], s, u),
c[1][0] = u[1],
c[2][0] = u[2],
h(c[0][1], c[1][1], c[2][1], s, u),
c[1][1] = u[1],
c[2][1] = u[2]
}
at(i[0], c[0]),
at(i[1], c[2]),
at(i[2], c[1])
} else {
if (at(d[0], a[0]),
at(d[1], a[1]),
ht(f, d[1], d[0]),
mt(f, f),
n && "none" !== n) {
r = _w(t.node1);
ut(d[0], d[0], f, r * l)
}
if (o && "none" !== o) {
r = _w(t.node2);
ut(d[1], d[1], f, -r * l)
}
at(i[0], d[0]),
at(i[1], d[1])
}
})
}
var Cw = "__focusNodeAdjacency"
, Lw = "__unfocusNodeAdjacency"
, kw = ["itemStyle", "opacity"]
, Pw = ["lineStyle", "opacity"];
function Nw(t, e) {
var i = t.getVisual("opacity");
return null != i ? i : t.getModel().get(e)
}
function Ow(t, e, i) {
var n = t.getGraphicEl()
, o = Nw(t, e);
null != i && (null == o && (o = 1),
o *= i),
n.downplay && n.downplay(),
n.traverse(function(t) {
if (!t.isGroup) {
var e = t.lineLabelOriginalOpacity;
null != e && null == i || (e = o),
t.setStyle("opacity", e)
}
})
}
function Ew(t, e) {
var i = Nw(t, e)
, n = t.getGraphicEl();
n.traverse(function(t) {
t.isGroup || t.setStyle("opacity", i)
}),
n.highlight && n.highlight()
}
Cf({
type: "graph",
init: function(t, e) {
var i = new im
, n = new pw
, o = this.group;
this._controller = new Vy(e.getZr()),
this._controllerHost = {
target: o
},
o.add(i.group),
o.add(n.group),
this._symbolDraw = i,
this._lineDraw = n,
this._firstRender = !0
},
render: function(o, t, a) {
var r = this
, e = o.coordinateSystem;
this._model = o;
var i = this._symbolDraw
, n = this._lineDraw
, s = this.group;
if ("view" === e.type) {
var l = {
position: e.position,
scale: e.scale
};
this._firstRender ? s.attr(l) : cl(s, l, o)
}
Dw(o.getGraph(), xw(o));
var u = o.getData();
i.updateData(u);
var h = o.getEdgeData();
n.updateData(h),
this._updateNodeAndLinkScale(),
this._updateController(o, t, a),
clearTimeout(this._layoutTimeout);
var c = o.forceLayout
, d = o.get("force.layoutAnimation");
c && this._startForceLayoutIteration(c, d),
u.eachItemGraphicEl(function(t, e) {
var i = u.getItemModel(e);
t.off("drag").off("dragend");
var n = i.get("draggable");
n && t.on("drag", function() {
c && (c.warmUp(),
this._layouting || this._startForceLayoutIteration(c, d),
c.setFixed(e),
u.setItemLayout(e, t.position))
}, this).on("dragend", function() {
c && c.setUnfixed(e)
}, this),
t.setDraggable(n && c),
t[Cw] && t.off("mouseover", t[Cw]),
t[Lw] && t.off("mouseout", t[Lw]),
i.get("focusNodeAdjacency") && (t.on("mouseover", t[Cw] = function() {
r._clearTimer(),
a.dispatchAction({
type: "focusNodeAdjacency",
seriesId: o.id,
dataIndex: t.dataIndex
})
}
),
t.on("mouseout", t[Lw] = function() {
r._dispatchUnfocus(a)
}
))
}, this),
u.graph.eachEdge(function(t) {
var e = t.getGraphicEl();
e[Cw] && e.off("mouseover", e[Cw]),
e[Lw] && e.off("mouseout", e[Lw]),
t.getModel().get("focusNodeAdjacency") && (e.on("mouseover", e[Cw] = function() {
r._clearTimer(),
a.dispatchAction({
type: "focusNodeAdjacency",
seriesId: o.id,
edgeDataIndex: t.dataIndex
})
}
),
e.on("mouseout", e[Lw] = function() {
r._dispatchUnfocus(a)
}
))
});
var f = "circular" === o.get("layout") && o.get("circular.rotateLabel")
, p = u.getLayout("cx")
, g = u.getLayout("cy");
u.eachItemGraphicEl(function(t, e) {
var i = u.getItemModel(e).get("label.rotate") || 0
, n = t.getSymbolPath();
if (f) {
var o = u.getItemLayout(e)
, a = Math.atan2(o[1] - g, o[0] - p);
a < 0 && (a = 2 * Math.PI + a);
var r = o[0] < p;
r && (a -= Math.PI);
var s = r ? "left" : "right";
il(n, {
textRotation: -a,
textPosition: s,
textOrigin: "center"
}, {
textPosition: s
})
} else
il(n, {
textRotation: i *= Math.PI / 180
})
}),
this._firstRender = !1
},
dispose: function() {
this._controller && this._controller.dispose(),
this._controllerHost = {},
this._clearTimer()
},
_dispatchUnfocus: function(t, e) {
var i = this;
this._clearTimer(),
this._unfocusDelayTimer = setTimeout(function() {
i._unfocusDelayTimer = null,
t.dispatchAction({
type: "unfocusNodeAdjacency",
seriesId: i._model.id
})
}, 500)
},
_clearTimer: function() {
this._unfocusDelayTimer && (clearTimeout(this._unfocusDelayTimer),
this._unfocusDelayTimer = null)
},
focusNodeAdjacency: function(t, e, i, n) {
var o = t.getData().graph
, a = n.dataIndex
, r = n.edgeDataIndex
, s = o.getNodeByIndex(a)
, l = o.getEdgeByIndex(r);
(s || l) && (o.eachNode(function(t) {
Ow(t, kw, .1)
}),
o.eachEdge(function(t) {
Ow(t, Pw, .1)
}),
s && (Ew(s, kw),
E(s.edges, function(t) {
t.dataIndex < 0 || (Ew(t, Pw),
Ew(t.node1, kw),
Ew(t.node2, kw))
})),
l && (Ew(l, Pw),
Ew(l.node1, kw),
Ew(l.node2, kw)))
},
unfocusNodeAdjacency: function(t, e, i, n) {
var o = t.getData().graph;
o.eachNode(function(t) {
Ow(t, kw)
}),
o.eachEdge(function(t) {
Ow(t, Pw)
})
},
_startForceLayoutIteration: function(t, i) {
var n = this;
!function e() {
t.step(function(t) {
n.updateLayout(n._model),
(n._layouting = !t) && (i ? n._layoutTimeout = setTimeout(e, 16) : e())
})
}()
},
_updateController: function(o, t, a) {
var e = this._controller
, i = this._controllerHost
, r = this.group;
e.setPointerChecker(function(t, e, i) {
var n = r.getBoundingRect();
return n.applyTransform(r.transform),
n.contain(e, i) && !$y(t, a, o)
}),
"view" === o.coordinateSystem.type ? (e.enable(o.get("roam")),
i.zoomLimit = o.get("scaleLimit"),
i.zoom = o.coordinateSystem.getZoom(),
e.off("pan").off("zoom").on("pan", function(t) {
jy(i, t.dx, t.dy),
a.dispatchAction({
seriesId: o.id,
type: "graphRoam",
dx: t.dx,
dy: t.dy
})
}).on("zoom", function(t) {
qy(i, t.scale, t.originX, t.originY),
a.dispatchAction({
seriesId: o.id,
type: "graphRoam",
zoom: t.scale,
originX: t.originX,
originY: t.originY
}),
this._updateNodeAndLinkScale(),
Dw(o.getGraph(), xw(o)),
this._lineDraw.updateLayout()
}, this)) : e.disable()
},
_updateNodeAndLinkScale: function() {
var t = this._model
, e = t.getData()
, i = xw(t)
, n = [i, i];
e.eachItemGraphicEl(function(t, e) {
t.attr("scale", n)
})
},
updateLayout: function(t) {
Dw(t.getGraph(), xw(t)),
this._symbolDraw.updateLayout(),
this._lineDraw.updateLayout()
},
remove: function(t, e) {
this._symbolDraw && this._symbolDraw.remove(),
this._lineDraw && this._lineDraw.remove()
}
}),
_f({
type: "focusNodeAdjacency",
event: "focusNodeAdjacency",
update: "series:focusNodeAdjacency"
}, function() {}),
_f({
type: "unfocusNodeAdjacency",
event: "unfocusNodeAdjacency",
update: "series:unfocusNodeAdjacency"
}, function() {});
_f({
type: "graphRoam",
event: "graphRoam",
update: "none"
}, function(i, t) {
t.eachComponent({
mainType: "series",
query: i
}, function(t) {
var e = ax(t.coordinateSystem, i);
t.setCenter && t.setCenter(e.center),
t.setZoom && t.setZoom(e.zoom)
})
});
function Rw(t) {
return t instanceof Array || (t = [t, t]),
t
}
function zw(t) {
var e = t.coordinateSystem;
if (!e || "view" === e.type) {
var i = t.getGraph();
i.eachNode(function(t) {
var e = t.getModel();
t.setLayout([+e.get("x"), +e.get("y")])
}),
Bw(i)
}
}
function Bw(t) {
t.eachEdge(function(t) {
var e = t.getModel().get("lineStyle.curveness") || 0
, i = rt(t.node1.getLayout())
, n = rt(t.node2.getLayout())
, o = [i, n];
+e && o.push([(i[0] + n[0]) / 2 - (i[1] - n[1]) * e, (i[1] + n[1]) / 2 - (n[0] - i[0]) * e]),
t.setLayout(o)
})
}
var Vw = Math.PI
, Gw = [];
function Fw(t, e) {
var i = t.coordinateSystem;
if (!i || "view" === i.type) {
var n = i.getBoundingRect()
, o = t.getData()
, a = o.graph
, s = n.width / 2 + n.x
, l = n.height / 2 + n.y
, r = Math.min(n.width, n.height) / 2
, u = o.count();
o.setLayout({
cx: s,
cy: l
}),
u && (Ww[e](t, i, a, o, r, s, l, u),
a.eachEdge(function(t) {
var e, i = t.getModel().get("lineStyle.curveness") || 0, n = rt(t.node1.getLayout()), o = rt(t.node2.getLayout()), a = (n[0] + o[0]) / 2, r = (n[1] + o[1]) / 2;
+i && (e = [s * (i *= 3) + a * (1 - i), l * i + r * (1 - i)]),
t.setLayout([n, o, e])
}))
}
}
var Ww = {
value: function(t, e, i, n, o, a, r, s) {
var l = 0
, u = n.getSum("value")
, h = 2 * Math.PI / (u || s);
i.eachNode(function(t) {
var e = t.getValue("value")
, i = h * (u ? e : 1) / 2;
l += i,
t.setLayout([o * Math.cos(l) + a, o * Math.sin(l) + r]),
l += i
})
},
symbolSize: function(t, e, i, n, o, a, r, s) {
var l = 0;
Gw.length = s;
var u = xw(t);
i.eachNode(function(t) {
var e = _w(t);
isNaN(e) && (e = 2),
e < 0 && (e = 0),
e *= u;
var i = Math.asin(e / 2 / o);
isNaN(i) && (i = Vw / 2),
Gw[t.dataIndex] = i,
l += 2 * i
});
var h = (2 * Vw - l) / s / 2
, c = 0;
i.eachNode(function(t) {
var e = h + Gw[t.dataIndex];
c += e,
t.setLayout([o * Math.cos(c) + a, o * Math.sin(c) + r]),
c += e
})
}
}
, Hw = ut;
xf(function(t) {
var a = t.findComponents({
mainType: "legend"
});
a && a.length && t.eachSeriesByType("graph", function(t) {
var e = t.getCategoriesData()
, n = t.getGraph().data
, o = e.mapArray(e.getName);
n.filterSelf(function(t) {
var e = n.getItemModel(t).getShallow("category");
if (null != e) {
"number" == typeof e && (e = o[e]);
for (var i = 0; i < a.length; i++)
if (!a[i].isSelected(e))
return !1
}
return !0
})
}, this)
}),
Sf(Lm("graph", "circle", null)),
Sf(function(t) {
var h = {};
t.eachSeriesByType("graph", function(s) {
var l = s.getCategoriesData()
, o = s.getData()
, u = {};
l.each(function(t) {
var e = l.getName(t);
u["ec-" + e] = t;
var i = l.getItemModel(t)
, n = i.get("itemStyle.color") || s.getColorFromPalette(e, h);
l.setItemVisual(t, "color", n);
for (var o = ["opacity", "symbol", "symbolSize", "symbolKeepAspect"], a = 0; a < o.length; a++) {
var r = i.getShallow(o[a], !0);
null != r && l.setItemVisual(t, o[a], r)
}
}),
l.count() && o.each(function(t) {
var e = o.getItemModel(t).getShallow("category");
if (null != e) {
"string" == typeof e && (e = u["ec-" + e]);
for (var i = ["color", "opacity", "symbol", "symbolSize", "symbolKeepAspect"], n = 0; n < i.length; n++)
null == o.getItemVisual(t, i[n], !0) && o.setItemVisual(t, i[n], l.getItemVisual(e, i[n]))
}
})
})
}),
Sf(function(t) {
t.eachSeriesByType("graph", function(t) {
var s = t.getGraph()
, l = t.getEdgeData()
, e = Rw(t.get("edgeSymbol"))
, i = Rw(t.get("edgeSymbolSize"))
, u = "lineStyle.color".split(".")
, h = "lineStyle.opacity".split(".");
l.setVisual("fromSymbol", e && e[0]),
l.setVisual("toSymbol", e && e[1]),
l.setVisual("fromSymbolSize", i && i[0]),
l.setVisual("toSymbolSize", i && i[1]),
l.setVisual("color", t.get(u)),
l.setVisual("opacity", t.get(h)),
l.each(function(t) {
var e = l.getItemModel(t)
, i = s.getEdgeByIndex(t)
, n = Rw(e.getShallow("symbol", !0))
, o = Rw(e.getShallow("symbolSize", !0))
, a = e.get(u)
, r = e.get(h);
switch (a) {
case "source":
a = i.node1.getVisual("color");
break;
case "target":
a = i.node2.getVisual("color")
}
n[0] && i.setVisual("fromSymbol", n[0]),
n[1] && i.setVisual("toSymbol", n[1]),
o[0] && i.setVisual("fromSymbolSize", o[0]),
o[1] && i.setVisual("toSymbolSize", o[1]),
i.setVisual("color", a),
i.setVisual("opacity", r)
})
})
}),
bf(function(t, e) {
t.eachSeriesByType("graph", function(t) {
var e = t.get("layout")
, i = t.coordinateSystem;
if (i && "view" !== i.type) {
var n = t.getData()
, o = [];
E(i.dimensions, function(t) {
o = o.concat(n.mapDimension(t, !0))
});
for (var a = 0; a < n.count(); a++) {
for (var r = [], s = !1, l = 0; l < o.length; l++) {
var u = n.get(o[l], a);
isNaN(u) || (s = !0),
r.push(u)
}
s ? n.setItemLayout(a, i.dataToPoint(r)) : n.setItemLayout(a, [NaN, NaN])
}
Bw(n.graph)
} else
e && "none" !== e || zw(t)
})
}),
bf(Ld.VISUAL.POST_CHART_LAYOUT, function(t) {
t.eachSeriesByType("graph", function(t) {
"circular" === t.get("layout") && Fw(t, "symbolSize")
})
}),
bf(function(t) {
t.eachSeriesByType("graph", function(t) {
if (!(l = t.coordinateSystem) || "view" === l.type)
if ("force" === t.get("layout")) {
var c = t.preservedPoints || {}
, d = t.getGraph()
, f = d.data
, e = d.edgeData
, i = t.getModel("force")
, n = i.get("initLayout");
t.preservedPoints ? f.each(function(t) {
var e = f.getId(t);
f.setItemLayout(t, c[e] || [NaN, NaN])
}) : n && "none" !== n ? "circular" === n && Fw(t, "value") : zw(t);
var o = f.getDataExtent("value")
, a = e.getDataExtent("value")
, r = i.get("repulsion")
, s = i.get("edgeLength");
L(r) || (r = [r, r]),
L(s) || (s = [s, s]),
s = [s[1], s[0]];
var l, u = f.mapArray("value", function(t, e) {
var i = f.getItemLayout(e)
, n = El(t, o, r);
return isNaN(n) && (n = (r[0] + r[1]) / 2),
{
w: n,
rep: n,
fixed: f.getItemModel(e).get("fixed"),
p: !i || isNaN(i[0]) || isNaN(i[1]) ? null : i
}
}), h = e.mapArray("value", function(t, e) {
var i = d.getEdgeByIndex(e)
, n = El(t, a, s);
isNaN(n) && (n = (s[0] + s[1]) / 2);
var o = i.getModel();
return {
n1: u[i.node1.dataIndex],
n2: u[i.node2.dataIndex],
d: n,
curveness: o.get("lineStyle.curveness") || 0,
ignoreForceLayout: o.get("ignoreForceLayout")
}
}), p = (l = t.coordinateSystem).getBoundingRect(), g = function(f, p, t) {
for (var e = t.rect, i = e.width, n = e.height, g = [e.x + i / 2, e.y + n / 2], m = null == t.gravity ? .1 : t.gravity, o = 0; o < f.length; o++) {
var a = f[o];
a.p || (a.p = ot(i * (Math.random() - .5) + g[0], n * (Math.random() - .5) + g[1])),
a.pp = rt(a.p),
a.edges = null
}
var r = null == t.friction ? .6 : t.friction
, v = r;
return {
warmUp: function() {
v = .8 * r
},
setFixed: function(t) {
f[t].fixed = !0
},
setUnfixed: function(t) {
f[t].fixed = !1
},
step: function(t) {
for (var e = [], i = f.length, n = 0; n < p.length; n++) {
var o = p[n];
if (!o.ignoreForceLayout) {
var a = o.n1;
ht(e, (u = o.n2).p, a.p);
var r = ct(e) - o.d
, s = u.w / (a.w + u.w);
isNaN(s) && (s = 0),
mt(e, e),
a.fixed || Hw(a.p, a.p, e, s * r * v),
u.fixed || Hw(u.p, u.p, e, -(1 - s) * r * v)
}
}
for (n = 0; n < i; n++) {
(d = f[n]).fixed || (ht(e, g, d.p),
Hw(d.p, d.p, e, m * v))
}
for (n = 0; n < i; n++) {
a = f[n];
for (var l = n + 1; l < i; l++) {
var u;
ht(e, (u = f[l]).p, a.p),
0 === (r = ct(e)) && (st(e, Math.random() - .5, Math.random() - .5),
r = 1);
var h = (a.rep + u.rep) / r / r;
a.fixed || Hw(a.pp, a.pp, e, h),
u.fixed || Hw(u.pp, u.pp, e, -h)
}
}
var c = [];
for (n = 0; n < i; n++) {
var d;
(d = f[n]).fixed || (ht(c, d.p, d.pp),
Hw(d.p, d.p, c, v),
at(d.pp, d.p))
}
v *= .992,
t && t(f, p, v < .01)
}
}
}(u, h, {
rect: p,
gravity: i.get("gravity"),
friction: i.get("friction")
}), m = g.step;
g.step = function(h) {
for (var t = 0, e = u.length; t < e; t++)
u[t].fixed && at(u[t].p, d.getNodeByIndex(t).getLayout());
m(function(t, e, i) {
for (var n = 0, o = t.length; n < o; n++)
t[n].fixed || d.getNodeByIndex(n).setLayout(t[n].p),
c[f.getId(n)] = t[n].p;
for (n = 0,
o = e.length; n < o; n++) {
var a = e[n]
, r = d.getEdgeByIndex(n)
, s = a.n1.p
, l = a.n2.p
, u = r.getLayout();
(u = u ? u.slice() : [])[0] = u[0] || [],
u[1] = u[1] || [],
at(u[0], s),
at(u[1], l),
+a.curveness && (u[2] = [(s[0] + l[0]) / 2 - (s[1] - l[1]) * a.curveness, (s[1] + l[1]) / 2 - (l[0] - s[0]) * a.curveness]),
r.setLayout(u)
}
h && h(i)
})
}
,
t.forceLayout = g,
t.preservedPoints = c,
g.step()
} else
t.forceLayout = null
})
}),
wf("graphView", {
create: function(t, d) {
var f = [];
return t.eachSeriesByType("graph", function(t) {
var e = t.get("coordinateSystem");
if (!e || "view" === e) {
var i = t.getData()
, n = []
, o = [];
Wa(i.mapArray(function(t) {
var e = i.getItemModel(t);
return [+e.get("x"), +e.get("y")]
}), n, o),
o[0] - n[0] == 0 && (o[0] += 1,
n[0] -= 1),
o[1] - n[1] == 0 && (o[1] += 1,
n[1] -= 1);
var a = (o[0] - n[0]) / (o[1] - n[1])
, r = function(t, e, i) {
var n = t.getBoxLayoutParams();
return n.aspect = i,
bu(n, {
width: e.getWidth(),
height: e.getHeight()
})
}(t, d, a);
isNaN(a) && (n = [r.x, r.y],
o = [r.x + r.width, r.y + r.height]);
var s = o[0] - n[0]
, l = o[1] - n[1]
, u = r.width
, h = r.height
, c = t.coordinateSystem = new lx;
c.zoomLimit = t.get("scaleLimit"),
c.setBoundingRect(n[0], n[1], s, l),
c.setViewRect(r.x, r.y, u, h),
c.setCenter(t.get("center")),
c.setZoom(t.get("zoom")),
f.push(c)
}
}),
f
}
});
sc.extend({
type: "series.gauge",
getInitialData: function(t, e) {
return Yv(this, ["value"])
},
defaultOption: {
zlevel: 0,
z: 2,
center: ["50%", "50%"],
legendHoverLink: !0,
radius: "75%",
startAngle: 225,
endAngle: -45,
clockwise: !0,
min: 0,
max: 100,
splitNumber: 10,
axisLine: {
show: !0,
lineStyle: {
color: [[.2, "#91c7ae"], [.8, "#63869e"], [1, "#c23531"]],
width: 30
}
},
splitLine: {
show: !0,
length: 30,
lineStyle: {
color: "#eee",
width: 2,
type: "solid"
}
},
axisTick: {
show: !0,
splitNumber: 5,
length: 8,
lineStyle: {
color: "#eee",
width: 1,
type: "solid"
}
},
axisLabel: {
show: !0,
distance: 5,
color: "auto"
},
pointer: {
show: !0,
length: "80%",
width: 8
},
itemStyle: {
color: "auto"
},
title: {
show: !0,
offsetCenter: [0, "-40%"],
color: "#333",
fontSize: 15
},
detail: {
show: !0,
backgroundColor: "rgba(0,0,0,0)",
borderWidth: 0,
borderColor: "#ccc",
width: 100,
height: null,
padding: [5, 10],
offsetCenter: [0, "40%"],
color: "auto",
fontSize: 30
}
}
});
var Zw = Ar.extend({
type: "echartsGaugePointer",
shape: {
angle: 0,
width: 10,
r: 10,
x: 0,
y: 0
},
buildPath: function(t, e) {
var i = Math.cos
, n = Math.sin
, o = e.r
, a = e.width
, r = e.angle
, s = e.x - i(r) * a * (o / 3 <= a ? 1 : 2)
, l = e.y - n(r) * a * (o / 3 <= a ? 1 : 2);
r = e.angle - Math.PI / 2,
t.moveTo(s, l),
t.lineTo(e.x + i(r) * a, e.y + n(r) * a),
t.lineTo(e.x + i(e.angle) * o, e.y + n(e.angle) * o),
t.lineTo(e.x - i(r) * a, e.y - n(r) * a),
t.lineTo(s, l)
}
});
function Uw(t, e) {
return e && ("string" == typeof e ? t = e.replace("{value}", null != t ? t : "") : "function" == typeof e && (t = e(t))),
t
}
var Xw = 2 * Math.PI
, Yw = (_c.extend({
type: "gauge",
render: function(t, e, i) {
this.group.removeAll();
var n = t.get("axisLine.lineStyle.color")
, o = function(t, e) {
var i = t.get("center")
, n = e.getWidth()
, o = e.getHeight()
, a = Math.min(n, o);
return {
cx: Rl(i[0], e.getWidth()),
cy: Rl(i[1], e.getHeight()),
r: Rl(t.get("radius"), a / 2)
}
}(t, i);
this._renderMain(t, e, i, n, o)
},
dispose: function() {},
_renderMain: function(t, e, i, n, o) {
for (var a = this.group, r = t.getModel("axisLine"), s = r.getModel("lineStyle"), l = t.get("clockwise"), u = -t.get("startAngle") / 180 * Math.PI, h = ((g = -t.get("endAngle") / 180 * Math.PI) - u) % Xw, c = u, d = s.get("width"), f = r.get("show"), p = 0; f && p < n.length; p++) {
var g, m = Math.min(Math.max(n[p][0], 0), 1), v = new qr({
shape: {
startAngle: c,
endAngle: g = u + h * m,
cx: o.cx,
cy: o.cy,
clockwise: l,
r0: o.r - d,
r: o.r
},
silent: !0
});
v.setStyle({
fill: n[p][1]
}),
v.setStyle(s.getLineStyle(["color", "borderWidth", "borderColor"])),
a.add(v),
c = g
}
function y(t) {
if (t <= 0)
return n[0][1];
for (var e = 0; e < n.length; e++)
if (n[e][0] >= t && (0 === e ? 0 : n[e - 1][0]) < t)
return n[e][1];
return n[e - 1][1]
}
if (!l) {
var x = u;
u = g,
g = x
}
this._renderTicks(t, e, i, y, o, u, g, l),
this._renderPointer(t, e, i, y, o, u, g, l),
this._renderTitle(t, e, i, y, o),
this._renderDetail(t, e, i, y, o)
},
_renderTicks: function(t, e, i, n, o, a, r, s) {
for (var l = this.group, u = o.cx, h = o.cy, c = o.r, d = +t.get("min"), f = +t.get("max"), p = t.getModel("splitLine"), g = t.getModel("axisTick"), m = t.getModel("axisLabel"), v = t.get("splitNumber"), y = g.get("splitNumber"), x = Rl(p.get("length"), c), _ = Rl(g.get("length"), c), w = a, b = (r - a) / v, S = b / y, M = p.getModel("lineStyle").getLineStyle(), I = g.getModel("lineStyle").getLineStyle(), T = 0; T <= v; T++) {
var A = Math.cos(w)
, D = Math.sin(w);
if (p.get("show")) {
var C = new ls({
shape: {
x1: A * c + u,
y1: D * c + h,
x2: A * (c - x) + u,
y2: D * (c - x) + h
},
style: M,
silent: !0
});
"auto" === M.stroke && C.setStyle({
stroke: n(T / v)
}),
l.add(C)
}
if (m.get("show")) {
var L = Uw(zl(T / v * (f - d) + d), m.get("formatter"))
, k = m.get("distance")
, P = n(T / v);
l.add(new Ur({
style: nl({}, m, {
text: L,
x: A * (c - x - k) + u,
y: D * (c - x - k) + h,
textVerticalAlign: D < -.4 ? "top" : .4 < D ? "bottom" : "middle",
textAlign: A < -.4 ? "left" : .4 < A ? "right" : "center"
}, {
autoColor: P
}),
silent: !0
}))
}
if (g.get("show") && T !== v) {
for (var N = 0; N <= y; N++) {
A = Math.cos(w),
D = Math.sin(w);
var O = new ls({
shape: {
x1: A * c + u,
y1: D * c + h,
x2: A * (c - _) + u,
y2: D * (c - _) + h
},
silent: !0,
style: I
});
"auto" === I.stroke && O.setStyle({
stroke: n((T + N / y) / v)
}),
l.add(O),
w += S
}
w -= S
} else
w += b
}
},
_renderPointer: function(n, t, e, o, a, i, r, s) {
var l = this.group
, u = this._data;
if (n.get("pointer.show")) {
var h = [+n.get("min"), +n.get("max")]
, c = [i, r]
, d = n.getData()
, f = d.mapDimension("value");
d.diff(u).add(function(t) {
var e = new Zw({
shape: {
angle: i
}
});
dl(e, {
shape: {
angle: El(d.get(f, t), h, c, !0)
}
}, n),
l.add(e),
d.setItemGraphicEl(t, e)
}).update(function(t, e) {
var i = u.getItemGraphicEl(e);
cl(i, {
shape: {
angle: El(d.get(f, t), h, c, !0)
}
}, n),
l.add(i),
d.setItemGraphicEl(t, i)
}).remove(function(t) {
var e = u.getItemGraphicEl(t);
l.remove(e)
}).execute(),
d.eachItemGraphicEl(function(t, e) {
var i = d.getItemModel(e)
, n = i.getModel("pointer");
t.setShape({
x: a.cx,
y: a.cy,
width: Rl(n.get("width"), a.r),
r: Rl(n.get("length"), a.r)
}),
t.useStyle(i.getModel("itemStyle").getItemStyle()),
"auto" === t.style.fill && t.setStyle("fill", o(El(d.get(f, e), h, [0, 1], !0))),
$s(t, i.getModel("emphasis.itemStyle").getItemStyle())
}),
this._data = d
} else
u && u.eachItemGraphicEl(function(t) {
l.remove(t)
})
},
_renderTitle: function(t, e, i, n, o) {
var a = t.getData()
, r = a.mapDimension("value")
, s = t.getModel("title");
if (s.get("show")) {
var l = s.get("offsetCenter")
, u = o.cx + Rl(l[0], o.r)
, h = o.cy + Rl(l[1], o.r)
, c = +t.get("min")
, d = +t.get("max")
, f = n(El(t.getData().get(r, 0), [c, d], [0, 1], !0));
this.group.add(new Ur({
silent: !0,
style: nl({}, s, {
x: u,
y: h,
text: a.getName(0),
textAlign: "center",
textVerticalAlign: "middle"
}, {
autoColor: f,
forceRich: !0
})
}))
}
},
_renderDetail: function(t, e, i, n, o) {
var a = t.getModel("detail")
, r = +t.get("min")
, s = +t.get("max");
if (a.get("show")) {
var l = a.get("offsetCenter")
, u = o.cx + Rl(l[0], o.r)
, h = o.cy + Rl(l[1], o.r)
, c = Rl(a.get("width"), o.r)
, d = Rl(a.get("height"), o.r)
, f = t.getData()
, p = f.get(f.mapDimension("value"), 0)
, g = n(El(p, [r, s], [0, 1], !0));
this.group.add(new Ur({
silent: !0,
style: nl({}, a, {
x: u,
y: h,
text: Uw(p, a.get("formatter")),
textWidth: isNaN(c) ? null : c,
textHeight: isNaN(d) ? null : d,
textAlign: "center",
textVerticalAlign: "middle"
}, {
autoColor: g,
forceRich: !0
})
}))
}
}
}),
Df({
type: "series.funnel",
init: function(t) {
Yw.superApply(this, "init", arguments),
this.legendVisualProvider = new qv(A(this.getData, this),A(this.getRawData, this)),
this._defaultLabelLine(t)
},
getInitialData: function(t, e) {
return Yv(this, {
coordDimensions: ["value"],
encodeDefaulter: T(Ju, this)
})
},
_defaultLabelLine: function(t) {
Go(t, "labelLine", ["show"]);
var e = t.labelLine
, i = t.emphasis.labelLine;
e.show = e.show && t.label.show,
i.show = i.show && t.emphasis.label.show
},
getDataParams: function(t) {
var e = this.getData()
, i = Yw.superCall(this, "getDataParams", t)
, n = e.mapDimension("value")
, o = e.getSum(n);
return i.percent = o ? +(e.get(n, t) / o * 100).toFixed(2) : 0,
i.$vars.push("percent"),
i
},
defaultOption: {
zlevel: 0,
z: 2,
legendHoverLink: !0,
left: 80,
top: 60,
right: 80,
bottom: 60,
minSize: "0%",
maxSize: "100%",
sort: "descending",
gap: 0,
funnelAlign: "center",
label: {
show: !0,
position: "outer"
},
labelLine: {
show: !0,
length: 20,
lineStyle: {
width: 1,
type: "solid"
}
},
itemStyle: {
borderColor: "#fff",
borderWidth: 1
},
emphasis: {
label: {
show: !0
}
}
}
}));
function jw(t, e) {
Ci.call(this);
var i = new Qr
, n = new ts
, o = new Ur;
this.add(i),
this.add(n),
this.add(o),
this.highDownOnUpdate = function(t, e) {
"emphasis" === e ? (n.ignore = n.hoverIgnore,
o.ignore = o.hoverIgnore) : (n.ignore = n.normalIgnore,
o.ignore = o.normalIgnore)
}
,
this.updateData(t, e, !0)
}
var qw = jw.prototype
, Kw = ["itemStyle", "opacity"];
qw.updateData = function(t, e, i) {
var n = this.childAt(0)
, o = t.hostModel
, a = t.getItemModel(e)
, r = t.getItemLayout(e)
, s = t.getItemModel(e).get(Kw);
s = null == s ? 1 : s,
n.useStyle({}),
i ? (n.setShape({
points: r.points
}),
n.setStyle({
opacity: 0
}),
dl(n, {
style: {
opacity: s
}
}, o, e)) : cl(n, {
style: {
opacity: s
},
shape: {
points: r.points
}
}, o, e);
var l = a.getModel("itemStyle")
, u = t.getItemVisual(e, "color");
n.setStyle(D({
lineJoin: "round",
fill: u
}, l.getItemStyle(["opacity"]))),
n.hoverStyle = l.getModel("emphasis").getItemStyle(),
this._updateLabel(t, e),
$s(this)
}
,
qw._updateLabel = function(t, e) {
var i = this.childAt(1)
, n = this.childAt(2)
, o = t.hostModel
, a = t.getItemModel(e)
, r = t.getItemLayout(e).label
, s = t.getItemVisual(e, "color");
cl(i, {
shape: {
points: r.linePoints || r.linePoints
}
}, o, e),
cl(n, {
style: {
x: r.x,
y: r.y
}
}, o, e),
n.attr({
rotation: r.rotation,
origin: [r.x, r.y],
z2: 10
});
var l = a.getModel("label")
, u = a.getModel("emphasis.label")
, h = a.getModel("labelLine")
, c = a.getModel("emphasis.labelLine");
s = t.getItemVisual(e, "color");
el(n.style, n.hoverStyle = {}, l, u, {
labelFetcher: t.hostModel,
labelDataIndex: e,
defaultText: t.getName(e),
autoColor: s,
useInsideStyle: !!r.inside
}, {
textAlign: r.textAlign,
textVerticalAlign: r.verticalAlign
}),
n.ignore = n.normalIgnore = !l.get("show"),
n.hoverIgnore = !u.get("show"),
i.ignore = i.normalIgnore = !h.get("show"),
i.hoverIgnore = !c.get("show"),
i.setStyle({
stroke: s
}),
i.setStyle(h.getModel("lineStyle").getLineStyle()),
i.hoverStyle = c.getModel("lineStyle").getLineStyle()
}
,
w(jw, Ci);
_c.extend({
type: "funnel",
render: function(t, e, i) {
var n = t.getData()
, o = this._data
, a = this.group;
n.diff(o).add(function(t) {
var e = new jw(n,t);
n.setItemGraphicEl(t, e),
a.add(e)
}).update(function(t, e) {
var i = o.getItemGraphicEl(e);
i.updateData(n, t),
a.add(i),
n.setItemGraphicEl(t, i)
}).remove(function(t) {
var e = o.getItemGraphicEl(t);
a.remove(e)
}).execute(),
this._data = n
},
remove: function() {
this.group.removeAll(),
this._data = null
},
dispose: function() {}
});
Sf(iy("funnel")),
bf(function(t, w, e) {
t.eachSeriesByType("funnel", function(t) {
var o = t.getData()
, a = o.mapDimension("value")
, e = t.get("sort")
, r = function(t, e) {
return bu(t.getBoxLayoutParams(), {
width: e.getWidth(),
height: e.getHeight()
})
}(t, w)
, i = function(t, e) {
for (var i = t.mapDimension("value"), n = t.mapArray(i, function(t) {
return t
}), o = [], a = "ascending" === e, r = 0, s = t.count(); r < s; r++)
o[r] = r;
return "function" == typeof e ? o.sort(e) : "none" !== e && o.sort(function(t, e) {
return a ? n[t] - n[e] : n[e] - n[t]
}),
o
}(o, e)
, s = [Rl(t.get("minSize"), r.width), Rl(t.get("maxSize"), r.width)]
, n = o.getDataExtent(a)
, l = t.get("min")
, u = t.get("max");
null == l && (l = Math.min(n[0], 0)),
null == u && (u = n[1]);
function h(t, e) {
var i, n = El(o.get(a, t) || 0, [l, u], s, !0);
switch (c) {
case "left":
i = r.x;
break;
case "center":
i = r.x + (r.width - n) / 2;
break;
case "right":
i = r.x + r.width - n
}
return [[i, e], [i + n, e]]
}
var c = t.get("funnelAlign")
, d = t.get("gap")
, f = (r.height - d * (o.count() - 1)) / o.count()
, p = r.y;
"ascending" === e && (f = -f,
d = -d,
p += r.height,
i = i.reverse());
for (var g = 0; g < i.length; g++) {
var m = i[g]
, v = i[g + 1]
, y = o.getItemModel(m).get("itemStyle.height");
null == y ? y = f : (y = Rl(y, r.height),
"ascending" === e && (y = -y));
var x = h(m, p)
, _ = h(v, p + y);
p += y + d,
o.setItemLayout(m, {
points: x.concat(_.slice().reverse())
})
}
!function(g) {
g.each(function(t) {
var e, i, n, o, a = g.getItemModel(t), r = a.getModel("label").get("position"), s = a.getModel("labelLine"), l = g.getItemLayout(t), u = l.points, h = "inner" === r || "inside" === r || "center" === r || "insideLeft" === r || "insideRight" === r;
if (h)
e = "insideLeft" === r ? (i = (u[0][0] + u[3][0]) / 2 + 5,
n = (u[0][1] + u[3][1]) / 2,
"left") : "insideRight" === r ? (i = (u[1][0] + u[2][0]) / 2 - 5,
n = (u[1][1] + u[2][1]) / 2,
"right") : (i = (u[0][0] + u[1][0] + u[2][0] + u[3][0]) / 4,
n = (u[0][1] + u[1][1] + u[2][1] + u[3][1]) / 4,
"center"),
o = [[i, n], [i, n]];
else {
var c, d, f, p = s.get("length");
e = "left" === r ? (c = (u[3][0] + u[0][0]) / 2,
d = (u[3][1] + u[0][1]) / 2,
i = (f = c - p) - 5,
"right") : "right" === r ? (c = (u[1][0] + u[2][0]) / 2,
d = (u[1][1] + u[2][1]) / 2,
i = (f = c + p) + 5,
"left") : "rightTop" === r ? (c = u[1][0],
d = u[1][1],
i = (f = c + p) + 5,
"top") : "rightBottom" === r ? (c = u[2][0],
d = u[2][1],
i = (f = c + p) + 5,
"bottom") : "leftTop" === r ? (c = u[0][0],
d = u[1][1],
i = (f = c - p) - 5,
"right") : "leftBottom" === r ? (c = u[3][0],
d = u[2][1],
i = (f = c - p) - 5,
"right") : (c = (u[1][0] + u[2][0]) / 2,
d = (u[1][1] + u[2][1]) / 2,
i = (f = c + p) + 5,
"left");
o = [[c, d], [f, d]],
n = d
}
l.label = {
linePoints: o,
x: i,
y: n,
verticalAlign: "middle",
textAlign: e,
inside: h
}
})
}(o)
})
}),
xf(uy("funnel"));
function $w(t, e, i, n, o) {
Gg.call(this, t, e, i),
this.type = n || "value",
this.axisIndex = o
}
$w.prototype = {
constructor: $w,
model: null,
isHorizontal: function() {
return "horizontal" !== this.coordinateSystem.getModel().get("layout")
}
},
w($w, Gg);
function Jw(t, e, i, n, o, a) {
t = t || 0;
var r = i[1] - i[0];
if (null != o && (o = tb(o, [0, r])),
null != a && (a = Math.max(a, null != o ? o : 0)),
"all" === n) {
var s = Math.abs(e[1] - e[0]);
o = a = tb(s = tb(s, [0, r]), [o, a]),
n = 0
}
e[0] = tb(e[0], i),
e[1] = tb(e[1], i);
var l = Qw(e, n);
e[n] += t;
var u = o || 0
, h = i.slice();
l.sign < 0 ? h[0] += u : h[1] -= u,
e[n] = tb(e[n], h);
var c = Qw(e, n);
return null != o && (c.sign !== l.sign || c.span < o) && (e[1 - n] = e[n] + l.sign * o),
c = Qw(e, n),
null != a && c.span > a && (e[1 - n] = e[n] + c.sign * a),
e
}
function Qw(t, e) {
var i = t[e] - t[1 - e];
return {
span: Math.abs(i),
sign: 0 < i ? -1 : i < 0 ? 1 : e ? -1 : 1
}
}
function tb(t, e) {
return Math.min(null != e[1] ? e[1] : 1 / 0, Math.max(null != e[0] ? e[0] : -1 / 0, t))
}
var eb = E
, ib = Math.min
, nb = Math.max
, ob = Math.floor
, ab = Math.ceil
, rb = zl
, sb = Math.PI;
function lb(t, e, i) {
this._axesMap = Q(),
this._axesLayout = {},
this.dimensions = t.dimensions,
this._rect,
this._model = t,
this._init(t, e, i)
}
function ub(t, e) {
return ib(nb(t, e[0]), e[1])
}
lb.prototype = {
type: "parallel",
constructor: lb,
_init: function(t, r, e) {
var i = t.dimensions
, s = t.parallelAxisIndex;
eb(i, function(t, e) {
var i = s[e]
, n = r.getComponent("parallelAxis", i)
, o = this._axesMap.set(t, new $w(t,sg(n),[0, 0],n.get("type"),i))
, a = "category" === o.type;
o.onBand = a && n.get("boundaryGap"),
o.inverse = n.get("inverse"),
(n.axis = o).model = n,
o.coordinateSystem = n.coordinateSystem = this
}, this)
},
update: function(t, e) {
this._updateAxesFromSeries(this._model, t)
},
containPoint: function(t) {
var e = this._makeLayoutInfo()
, i = e.axisBase
, n = e.layoutBase
, o = e.pixelDimIndex
, a = t[1 - o]
, r = t[o];
return i <= a && a <= i + e.axisLength && n <= r && r <= n + e.layoutLength
},
getModel: function() {
return this._model
},
_updateAxesFromSeries: function(e, n) {
n.eachSeries(function(t) {
if (e.contains(t, n)) {
var i = t.getData();
eb(this.dimensions, function(t) {
var e = this._axesMap.get(t);
e.scale.unionExtentFromData(i, i.mapDimension(t)),
rg(e.scale, e.model)
}, this)
}
}, this)
},
resize: function(t, e) {
this._rect = bu(t.getBoxLayoutParams(), {
width: e.getWidth(),
height: e.getHeight()
}),
this._layoutAxes()
},
getRect: function() {
return this._rect
},
_makeLayoutInfo: function() {
var t, e = this._model, i = this._rect, n = ["x", "y"], o = ["width", "height"], a = e.get("layout"), r = "horizontal" === a ? 0 : 1, s = i[o[r]], l = [0, s], u = this.dimensions.length, h = ub(e.get("axisExpandWidth"), l), c = ub(e.get("axisExpandCount") || 0, [0, u]), d = e.get("axisExpandable") && 3 < u && c < u && 1 < c && 0 < h && 0 < s, f = e.get("axisExpandWindow");
f ? (t = ub(f[1] - f[0], l),
f[1] = f[0] + t) : (t = ub(h * (c - 1), l),
(f = [h * (e.get("axisExpandCenter") || ob(u / 2)) - t / 2])[1] = f[0] + t);
var p = (s - t) / (u - c);
p < 3 && (p = 0);
var g = [ob(rb(f[0] / h, 1)) + 1, ab(rb(f[1] / h, 1)) - 1]
, m = p / h * f[0];
return {
layout: a,
pixelDimIndex: r,
layoutBase: i[n[r]],
layoutLength: s,
axisBase: i[n[1 - r]],
axisLength: i[o[1 - r]],
axisExpandable: d,
axisExpandWidth: h,
axisCollapseWidth: p,
axisExpandWindow: f,
axisCount: u,
winInnerIndices: g,
axisExpandWindow0Pos: m
}
},
_layoutAxes: function() {
var l = this._rect
, t = this._axesMap
, e = this.dimensions
, u = this._makeLayoutInfo()
, h = u.layout;
t.each(function(t) {
var e = [0, u.axisLength]
, i = t.inverse ? 1 : 0;
t.setExtent(e[i], e[1 - i])
}),
eb(e, function(t, e) {
var i = (u.axisExpandable ? function(t, e) {
var i, n, o = e.layoutLength, a = e.axisExpandWidth, r = e.axisCount, s = e.axisCollapseWidth, l = e.winInnerIndices, u = s, h = !1;
t < l[0] ? (i = t * s,
n = s) : t <= l[1] ? (i = e.axisExpandWindow0Pos + t * a - e.axisExpandWindow[0],
u = a,
h = !0) : (i = o - (r - 1 - t) * s,
n = s);
return {
position: i,
axisNameAvailableWidth: u,
axisLabelShow: h,
nameTruncateMaxWidth: n
}
}
: function(t, e) {
var i = e.layoutLength / (e.axisCount - 1);
return {
position: i * t,
axisNameAvailableWidth: i,
axisLabelShow: !0
}
}
)(e, u)
, n = {
horizontal: {
x: i.position,
y: u.axisLength
},
vertical: {
x: 0,
y: i.position
}
}
, o = {
horizontal: sb / 2,
vertical: 0
}
, a = [n[h].x + l.x, n[h].y + l.y]
, r = o[h]
, s = ae();
he(s, s, r),
ue(s, s, a),
this._axesLayout[t] = {
position: a,
rotation: r,
transform: s,
axisNameAvailableWidth: i.axisNameAvailableWidth,
axisLabelShow: i.axisLabelShow,
nameTruncateMaxWidth: i.nameTruncateMaxWidth,
tickDirection: 1,
labelDirection: 1
}
}, this)
},
getAxis: function(t) {
return this._axesMap.get(t)
},
dataToPoint: function(t, e) {
return this.axisCoordToPoint(this._axesMap.get(e).dataToCoord(t), e)
},
eachActiveState: function(e, t, i, n) {
null == i && (i = 0),
null == n && (n = e.count());
var o = this._axesMap
, a = this.dimensions
, r = []
, s = [];
E(a, function(t) {
r.push(e.mapDimension(t)),
s.push(o.get(t).model)
});
for (var l = this.hasAxisBrushed(), u = i; u < n; u++) {
var h;
if (l) {
h = "active";
for (var c = e.getValues(r, u), d = 0, f = a.length; d < f; d++) {
if ("inactive" === s[d].getActiveState(c[d])) {
h = "inactive";
break
}
}
} else
h = "normal";
t(h, u)
}
},
hasAxisBrushed: function() {
for (var t = this.dimensions, e = this._axesMap, i = !1, n = 0, o = t.length; n < o; n++)
"normal" !== e.get(t[n]).model.getActiveState() && (i = !0);
return i
},
axisCoordToPoint: function(t, e) {
return pl([t, 0], this._axesLayout[e].transform)
},
getAxisLayout: function(t) {
return k(this._axesLayout[t])
},
getSlidedAxisExpandWindow: function(t) {
var e = this._makeLayoutInfo()
, i = e.pixelDimIndex
, n = e.axisExpandWindow.slice()
, o = n[1] - n[0]
, a = [0, e.axisExpandWidth * (e.axisCount - 1)];
if (!this.containPoint(t))
return {
behavior: "none",
axisExpandWindow: n
};
var r, s = t[i] - e.layoutBase - e.axisExpandWindow0Pos, l = "slide", u = e.axisCollapseWidth, h = this._model.get("axisExpandSlideTriggerArea"), c = null != h[0];
if (u)
c && u && s < o * h[0] ? (l = "jump",
r = s - o * h[2]) : c && u && s > o * (1 - h[0]) ? (l = "jump",
r = s - o * (1 - h[2])) : 0 <= (r = s - o * h[1]) && (r = s - o * (1 - h[1])) <= 0 && (r = 0),
(r *= e.axisExpandWidth / u) ? Jw(r, n, a, "all") : l = "none";
else {
o = n[1] - n[0];
(n = [nb(0, a[1] * s / o - o / 2)])[1] = ib(a[1], n[0] + o),
n[0] = n[1] - o
}
return {
axisExpandWindow: n,
behavior: l
}
}
},
lh.register("parallel", {
create: function(n, o) {
var a = [];
return n.eachComponent("parallel", function(t, e) {
var i = new lb(t,n,o);
i.name = "parallel_" + e,
i.resize(t, o),
(t.coordinateSystem = i).model = t,
a.push(i)
}),
n.eachSeries(function(t) {
if ("parallel" === t.get("coordinateSystem")) {
var e = n.queryComponents({
mainType: "parallel",
index: t.get("parallelIndex"),
id: t.get("parallelId")
})[0];
t.coordinateSystem = e.coordinateSystem
}
}),
a
}
});
var hb = ku.extend({
type: "baseParallelAxis",
axis: null,
activeIntervals: [],
getAreaSelectStyle: function() {
return ha([["fill", "color"], ["lineWidth", "borderWidth"], ["stroke", "borderColor"], ["width", "width"], ["opacity", "opacity"]])(this.getModel("areaSelectStyle"))
},
setActiveIntervals: function(t) {
var e = this.activeIntervals = k(t);
if (e)
for (var i = e.length - 1; 0 <= i; i--)
Bl(e[i])
},
getActiveState: function(t) {
var e = this.activeIntervals;
if (!e.length)
return "normal";
if (null == t || isNaN(t))
return "inactive";
if (1 === e.length) {
var i = e[0];
if (i[0] <= t && t <= i[1])
return "active"
} else
for (var n = 0, o = e.length; n < o; n++)
if (e[n][0] <= t && t <= e[n][1])
return "active";
return "inactive"
}
});
m(hb.prototype, dg),
Gm("parallel", hb, function(t, e) {
return e.type || (e.data ? "category" : "value")
}, {
type: "value",
dim: null,
areaSelectStyle: {
width: 20,
borderWidth: 1,
borderColor: "rgba(160,197,232)",
color: "rgba(160,197,232)",
opacity: .3
},
realtime: !0,
z: 10
}),
ku.extend({
type: "parallel",
dependencies: ["parallelAxis"],
coordinateSystem: null,
dimensions: null,
parallelAxisIndex: null,
layoutMode: "box",
defaultOption: {
zlevel: 0,
z: 0,
left: 80,
top: 60,
right: 80,
bottom: 60,
layout: "horizontal",
axisExpandable: !1,
axisExpandCenter: null,
axisExpandCount: 0,
axisExpandWidth: 50,
axisExpandRate: 17,
axisExpandDebounce: 50,
axisExpandSlideTriggerArea: [-.15, .05, .4],
axisExpandTriggerOn: "click",
parallelAxisDefault: null
},
init: function() {
ku.prototype.init.apply(this, arguments),
this.mergeOption({})
},
mergeOption: function(t) {
var e = this.option;
t && m(e, t, !0),
this._initDimensions()
},
contains: function(t, e) {
var i = t.get("parallelIndex");
return null != i && e.getComponent("parallel", i) === this
},
setAxisExpand: function(e) {
E(["axisExpandable", "axisExpandCenter", "axisExpandCount", "axisExpandWidth", "axisExpandWindow"], function(t) {
e.hasOwnProperty(t) && (this.option[t] = e[t])
}, this)
},
_initDimensions: function() {
var e = this.dimensions = []
, i = this.parallelAxisIndex = [];
E(M(this.dependentModels.parallelAxis, function(t) {
return (t.get("parallelIndex") || 0) === this.componentIndex
}, this), function(t) {
e.push("dim" + t.get("dim")),
i.push(t.componentIndex)
})
}
});
_f({
type: "axisAreaSelect",
event: "axisAreaSelected"
}, function(e, t) {
t.eachComponent({
mainType: "parallelAxis",
query: e
}, function(t) {
t.axis.model.setActiveIntervals(e.intervals)
})
}),
_f("parallelAxisExpand", function(e, t) {
t.eachComponent({
mainType: "parallel",
query: e
}, function(t) {
t.setAxisExpand(e)
})
});
var cb = T
, db = E
, fb = O
, pb = Math.min
, gb = Math.max
, mb = Math.pow
, vb = 1e4
, yb = 6
, xb = 6
, _b = "globalPan"
, wb = {
w: [0, 0],
e: [0, 1],
n: [1, 0],
s: [1, 1]
}
, bb = {
w: "ew",
e: "ew",
n: "ns",
s: "ns",
ne: "nesw",
sw: "nesw",
nw: "nwse",
se: "nwse"
}
, Sb = {
brushStyle: {
lineWidth: 2,
stroke: "rgba(0,0,0,0.3)",
fill: "rgba(0,0,0,0.1)"
},
transformable: !0,
brushMode: "single",
removeOnClick: !1
}
, Mb = 0;
function Ib(t) {
Ct.call(this),
this._zr = t,
this.group = new Ci,
this._brushType,
this._brushOption,
this._panels,
this._track = [],
this._dragging,
this._covers = [],
this._creatingCover,
this._creatingPanel,
this._enableGlobalPan,
this._uid = "brushController_" + Mb++,
this._handlers = {},
db($b, function(t, e) {
this._handlers[e] = A(t, this)
}, this)
}
function Tb(t, e) {
var i = Qb[e.brushType].createCover(t, e);
return i.__brushOption = e,
Cb(i, e),
t.group.add(i),
i
}
function Ab(t, e) {
var i = kb(e);
return i.endCreating && (i.endCreating(t, e),
Cb(e, e.__brushOption)),
e
}
function Db(t, e) {
var i = e.__brushOption;
kb(e).updateCoverShape(t, e, i.range, i)
}
function Cb(t, e) {
var i = e.z;
null == i && (i = vb),
t.traverse(function(t) {
t.z = i,
t.z2 = i
})
}
function Lb(t, e) {
kb(e).updateCommon(t, e),
Db(t, e)
}
function kb(t) {
return Qb[t.__brushOption.brushType]
}
function Pb(t, e, i) {
var n, o = t._panels;
if (!o)
return !0;
var a = t._transform;
return db(o, function(t) {
t.isTargetByCursor(e, i, a) && (n = t)
}),
n
}
function Nb(t, e) {
var i = t._panels;
if (!i)
return !0;
var n = e.__brushOption.panelId;
return null == n || i[n]
}
function Ob(e) {
var t = e._covers
, i = t.length;
return db(t, function(t) {
e.group.remove(t)
}, e),
t.length = 0,
!!i
}
function Eb(t, e) {
var i = fb(t._covers, function(t) {
var e = t.__brushOption
, i = k(e.range);
return {
brushType: e.brushType,
panelId: e.panelId,
range: i
}
});
t.trigger("brush", i, {
isEnd: !!e.isEnd,
removeOnClick: !!e.removeOnClick
})
}
function Rb(t) {
var e = t.length - 1;
return e < 0 && (e = 0),
[t[0], t[e]]
}
function zb(e, i, t, n) {
var o = new Ci;
return o.add(new rs({
name: "main",
style: Fb(t),
silent: !0,
draggable: !0,
cursor: "move",
drift: cb(e, i, o, "nswe"),
ondragend: cb(Eb, i, {
isEnd: !0
})
})),
db(n, function(t) {
o.add(new rs({
name: t,
style: {
opacity: 0
},
draggable: !0,
silent: !0,
invisible: !0,
drift: cb(e, i, o, t),
ondragend: cb(Eb, i, {
isEnd: !0
})
}))
}),
o
}
function Bb(t, e, i, n) {
var o = n.brushStyle.lineWidth || 0
, a = gb(o, xb)
, r = i[0][0]
, s = i[1][0]
, l = r - o / 2
, u = s - o / 2
, h = i[0][1]
, c = i[1][1]
, d = h - a + o / 2
, f = c - a + o / 2
, p = h - r
, g = c - s
, m = p + o
, v = g + o;
Gb(t, e, "main", r, s, p, g),
n.transformable && (Gb(t, e, "w", l, u, a, v),
Gb(t, e, "e", d, u, a, v),
Gb(t, e, "n", l, u, m, a),
Gb(t, e, "s", l, f, m, a),
Gb(t, e, "nw", l, u, a, a),
Gb(t, e, "ne", d, u, a, a),
Gb(t, e, "sw", l, f, a, a),
Gb(t, e, "se", d, f, a, a))
}
function Vb(n, o) {
var t = o.__brushOption
, a = t.transformable
, e = o.childAt(0);
e.useStyle(Fb(t)),
e.attr({
silent: !a,
cursor: a ? "move" : "default"
}),
db(["w", "e", "n", "s", "se", "sw", "ne", "nw"], function(t) {
var e = o.childOfName(t)
, i = function t(e, i) {
{
if (1 < i.length) {
i = i.split("");
var n = [t(e, i[0]), t(e, i[1])];
return "e" !== n[0] && "w" !== n[0] || n.reverse(),
n.join("")
}
var o = {
w: "left",
e: "right",
n: "top",
s: "bottom"
}
, a = {
left: "w",
right: "e",
top: "n",
bottom: "s"
}
, n = gl(o[i], fl(e.group));
return a[n]
}
}(n, t);
e && e.attr({
silent: !a,
invisible: !a,
cursor: a ? bb[i] + "-resize" : null
})
})
}
function Gb(t, e, i, n, o, a, r) {
var s = e.childOfName(i);
s && s.setShape(function(t) {
var e = pb(t[0][0], t[1][0])
, i = pb(t[0][1], t[1][1])
, n = gb(t[0][0], t[1][0])
, o = gb(t[0][1], t[1][1]);
return {
x: e,
y: i,
width: n - e,
height: o - i
}
}(Xb(t, e, [[n, o], [n + a, o + r]])))
}
function Fb(t) {
return D({
strokeNoScale: !0
}, t.brushStyle)
}
function Wb(t, e, i, n) {
var o = [pb(t, i), pb(e, n)]
, a = [gb(t, i), gb(e, n)];
return [[o[0], a[0]], [o[1], a[1]]]
}
function Hb(t, e, i, n, o, a, r, s) {
var l = n.__brushOption
, u = t(l.range)
, h = Ub(i, a, r);
db(o.split(""), function(t) {
var e = wb[t];
u[e[0]][e[1]] += h[e[0]]
}),
l.range = e(Wb(u[0][0], u[1][0], u[0][1], u[1][1])),
Lb(i, n),
Eb(i, {
isEnd: !1
})
}
function Zb(t, e, i, n, o) {
var a = e.__brushOption.range
, r = Ub(t, i, n);
db(a, function(t) {
t[0] += r[0],
t[1] += r[1]
}),
Lb(t, e),
Eb(t, {
isEnd: !1
})
}
function Ub(t, e, i) {
var n = t.group
, o = n.transformCoordToLocal(e, i)
, a = n.transformCoordToLocal(0, 0);
return [o[0] - a[0], o[1] - a[1]]
}
function Xb(t, e, i) {
var n = Nb(t, e);
return n && !0 !== n ? n.clipPath(i, t._transform) : k(i)
}
function Yb(t) {
var e = t.event;
e.preventDefault && e.preventDefault()
}
function jb(t, e, i) {
return t.childOfName("main").contain(e, i)
}
function qb(t, e, i, n) {
var o, a = t._creatingCover, r = t._creatingPanel, s = t._brushOption;
if (t._track.push(i.slice()),
function(t) {
var e = t._track;
if (!e.length)
return !1;
var i = e[e.length - 1]
, n = e[0]
, o = i[0] - n[0]
, a = i[1] - n[1]
, r = mb(o * o + a * a, .5);
return yb < r
}(t) || a) {
if (r && !a) {
"single" === s.brushMode && Ob(t);
var l = k(s);
l.brushType = Kb(l.brushType, r),
l.panelId = !0 === r ? null : r.panelId,
a = t._creatingCover = Tb(t, l),
t._covers.push(a)
}
if (a) {
var u = Qb[Kb(t._brushType, r)];
a.__brushOption.range = u.getCreatingRange(Xb(t, a, t._track)),
n && (Ab(t, a),
u.updateCommon(t, a)),
Db(t, a),
o = {
isEnd: n
}
}
} else
n && "single" === s.brushMode && s.removeOnClick && Pb(t, e, i) && Ob(t) && (o = {
isEnd: n,
removeOnClick: !0
});
return o
}
function Kb(t, e) {
return "auto" === t ? e.defaultBrushType : t
}
Ib.prototype = {
constructor: Ib,
enableBrush: function(t) {
return this._brushType && function(t) {
var e = t._zr;
(function(t, e, i) {
var n = By(t);
n[e] === i && (n[e] = null)
}
)(e, _b, t._uid),
function(i, t) {
db(t, function(t, e) {
i.off(e, t)
})
}(e, t._handlers),
t._brushType = t._brushOption = null
}(this),
t.brushType && function(t, e) {
var i = t._zr;
t._enableGlobalPan || function(t, e, i) {
By(t)[e] = i
}(i, _b, t._uid);
(function(i, t) {
db(t, function(t, e) {
i.on(e, t)
})
}
)(i, t._handlers),
t._brushType = e.brushType,
t._brushOption = m(k(Sb), e, !0)
}(this, t),
this
},
setPanels: function(t) {
if (t && t.length) {
var e = this._panels = {};
E(t, function(t) {
e[t.panelId] = k(t)
})
} else
this._panels = null;
return this
},
mount: function(t) {
t = t || {},
this._enableGlobalPan = t.enableGlobalPan;
var e = this.group;
return this._zr.add(e),
e.attr({
position: t.position || [0, 0],
rotation: t.rotation || 0,
scale: t.scale || [1, 1]
}),
this._transform = e.getLocalTransform(),
this
},
eachCover: function(t, e) {
db(this._covers, t, e)
},
updateCovers: function(o) {
o = O(o, function(t) {
return m(k(Sb), t, !0)
});
var i = "\0-brush-index-"
, a = this._covers
, r = this._covers = []
, s = this
, l = this._creatingCover;
return new kf(a,o,function(t, e) {
return n(t.__brushOption, e)
}
,n).add(t).update(t).remove(function(t) {
a[t] !== l && s.group.remove(a[t])
}).execute(),
this;
function n(t, e) {
return (null != t.id ? t.id : i + e) + "-" + t.brushType
}
function t(t, e) {
var i = o[t];
if (null != e && a[e] === l)
r[t] = a[e];
else {
var n = r[t] = null != e ? (a[e].__brushOption = i,
a[e]) : Ab(s, Tb(s, i));
Lb(s, n)
}
}
},
unmount: function() {
return this.enableBrush(!1),
Ob(this),
this._zr.remove(this.group),
this
},
dispose: function() {
this.unmount(),
this.off()
}
},
b(Ib, Ct);
var $b = {
mousedown: function(t) {
if (this._dragging)
Jb(this, t);
else if (!t.target || !t.target.draggable) {
Yb(t);
var e = this.group.transformCoordToLocal(t.offsetX, t.offsetY);
this._creatingCover = null,
(this._creatingPanel = Pb(this, t, e)) && (this._dragging = !0,
this._track = [e.slice()])
}
},
mousemove: function(t) {
var e = t.offsetX
, i = t.offsetY
, n = this.group.transformCoordToLocal(e, i);
if (function(t, e, i) {
if (t._brushType && !function(t, e, i) {
var n = t._zr;
return e < 0 || e > n.getWidth() || i < 0 || i > n.getHeight()
}(t, e)) {
var n = t._zr
, o = t._covers
, a = Pb(t, e, i);
if (!t._dragging)
for (var r = 0; r < o.length; r++) {
var s = o[r].__brushOption;
if (a && (!0 === a || s.panelId === a.panelId) && Qb[s.brushType].contain(o[r], i[0], i[1]))
return
}
a && n.setCursorStyle("crosshair")
}
}(this, t, n),
this._dragging) {
Yb(t);
var o = qb(this, t, n, !1);
o && Eb(this, o)
}
},
mouseup: function(t) {
Jb(this, t)
}
};
function Jb(t, e) {
if (t._dragging) {
Yb(e);
var i = e.offsetX
, n = e.offsetY
, o = t.group.transformCoordToLocal(i, n)
, a = qb(t, e, o, !0);
t._dragging = !1,
t._track = [],
t._creatingCover = null,
a && Eb(t, a)
}
}
var Qb = {
lineX: tS(0),
lineY: tS(1),
rect: {
createCover: function(t, e) {
return zb(cb(Hb, function(t) {
return t
}, function(t) {
return t
}), t, e, ["w", "e", "n", "s", "se", "sw", "ne", "nw"])
},
getCreatingRange: function(t) {
var e = Rb(t);
return Wb(e[1][0], e[1][1], e[0][0], e[0][1])
},
updateCoverShape: function(t, e, i, n) {
Bb(t, e, i, n)
},
updateCommon: Vb,
contain: jb
},
polygon: {
createCover: function(t, e) {
var i = new Ci;
return i.add(new ts({
name: "main",
style: Fb(e),
silent: !0
})),
i
},
getCreatingRange: function(t) {
return t
},
endCreating: function(t, e) {
e.remove(e.childAt(0)),
e.add(new Qr({
name: "main",
draggable: !0,
drift: cb(Zb, t, e),
ondragend: cb(Eb, t, {
isEnd: !0
})
}))
},
updateCoverShape: function(t, e, i, n) {
e.childAt(0).setShape({
points: Xb(t, e, i)
})
},
updateCommon: Vb,
contain: jb
}
};
function tS(l) {
return {
createCover: function(t, e) {
return zb(cb(Hb, function(t) {
var e = [t, [0, 100]];
return l && e.reverse(),
e
}, function(t) {
return t[l]
}), t, e, [["w", "e"], ["n", "s"]][l])
},
getCreatingRange: function(t) {
var e = Rb(t);
return [pb(e[0][l], e[1][l]), gb(e[0][l], e[1][l])]
},
updateCoverShape: function(t, e, i, n) {
var o, a = Nb(t, e);
if (!0 !== a && a.getLinearBrushOtherExtent)
o = a.getLinearBrushOtherExtent(l, t._transform);
else {
var r = t._zr;
o = [0, [r.getWidth(), r.getHeight()][1 - l]]
}
var s = [i, o];
l && s.reverse(),
Bb(t, e, s, n)
},
updateCommon: Vb,
contain: jb
}
}
function eS(i) {
return i = oS(i),
function(t, e) {
return vl(t, i)
}
}
function iS(o, a) {
return o = oS(o),
function(t) {
var e = null != a ? a : t
, i = e ? o.width : o.height
, n = e ? o.x : o.y;
return [n, n + (i || 0)]
}
}
function nS(n, o, a) {
return n = oS(n),
function(t, e, i) {
return n.contain(e[0], e[1]) && !$y(t, o, a)
}
}
function oS(t) {
return Di.create(t)
}
var aS = ["axisLine", "axisTickLabel", "axisName"]
, rS = Af({
type: "parallelAxis",
init: function(t, e) {
rS.superApply(this, "init", arguments),
(this._brushController = new Ib(e.getZr())).on("brush", A(this._onBrush, this))
},
render: function(t, e, i, n) {
if (!function(t, e, i) {
return i && "axisAreaSelect" === i.type && e.findComponents({
mainType: "parallelAxis",
query: i
})[0] === t
}(t, e, n)) {
this.axisModel = t,
this.api = i,
this.group.removeAll();
var o = this._axisGroup;
if (this._axisGroup = new Ci,
this.group.add(this._axisGroup),
t.get("show")) {
var a = function(t, e) {
return e.getComponent("parallel", t.get("parallelIndex"))
}(t, e)
, r = a.coordinateSystem
, s = t.getAreaSelectStyle()
, l = s.width
, u = t.axis.dim
, h = P({
strokeContainThreshold: l
}, r.getAxisLayout(u))
, c = new Qm(t,h);
E(aS, c.add, c),
this._axisGroup.add(c.getGroup()),
this._refreshBrushController(h, s, t, a, l, i);
var d = n && !1 === n.animation ? null : t;
ml(o, this._axisGroup, d)
}
}
},
_refreshBrushController: function(t, e, i, n, o, a) {
var r = i.axis.getExtent()
, s = r[1] - r[0]
, l = Math.min(30, .1 * Math.abs(s))
, u = Di.create({
x: r[0],
y: -o / 2,
width: s,
height: o
});
u.x -= l,
u.width += 2 * l,
this._brushController.mount({
enableGlobalPan: !0,
rotation: t.rotation,
position: t.position
}).setPanels([{
panelId: "pl",
clipPath: eS(u),
isTargetByCursor: nS(u, a, n),
getLinearBrushOtherExtent: iS(u, 0)
}]).enableBrush({
brushType: "lineX",
brushStyle: e,
removeOnClick: !0
}).updateCovers(function(t) {
var e = t.axis;
return O(t.activeIntervals, function(t) {
return {
brushType: "lineX",
panelId: "pl",
range: [e.dataToCoord(t[0], !0), e.dataToCoord(t[1], !0)]
}
})
}(i))
},
_onBrush: function(t, e) {
var i = this.axisModel
, n = i.axis
, o = O(t, function(t) {
return [n.coordToData(t.range[0], !0), n.coordToData(t.range[1], !0)]
});
!i.option.realtime !== e.isEnd && !e.removeOnClick || this.api.dispatchAction({
type: "axisAreaSelect",
parallelAxisId: i.id,
intervals: o
})
},
dispose: function() {
this._brushController.dispose()
}
});
Af({
type: "parallel",
render: function(t, e, i) {
this._model = t,
this._api = i,
this._handlers || (this._handlers = {},
E(sS, function(t, e) {
i.getZr().on(e, this._handlers[e] = A(t, this))
}, this)),
kc(this, "_throttledDispatchExpand", t.get("axisExpandRate"), "fixRate")
},
dispose: function(t, i) {
E(this._handlers, function(t, e) {
i.getZr().off(e, t)
}),
this._handlers = null
},
_throttledDispatchExpand: function(t) {
this._dispatchExpand(t)
},
_dispatchExpand: function(t) {
t && this._api.dispatchAction(P({
type: "parallelAxisExpand"
}, t))
}
});
var sS = {
mousedown: function(t) {
lS(this, "click") && (this._mouseDownPoint = [t.offsetX, t.offsetY])
},
mouseup: function(t) {
var e = this._mouseDownPoint;
if (lS(this, "click") && e) {
var i = [t.offsetX, t.offsetY];
if (5 < Math.pow(e[0] - i[0], 2) + Math.pow(e[1] - i[1], 2))
return;
var n = this._model.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX, t.offsetY]);
"none" !== n.behavior && this._dispatchExpand({
axisExpandWindow: n.axisExpandWindow
})
}
this._mouseDownPoint = null
},
mousemove: function(t) {
if (!this._mouseDownPoint && lS(this, "mousemove")) {
var e = this._model
, i = e.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX, t.offsetY])
, n = i.behavior;
"jump" === n && this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")),
this._throttledDispatchExpand("none" === n ? null : {
axisExpandWindow: i.axisExpandWindow,
animation: "jump" === n && null
})
}
}
};
function lS(t, e) {
var i = t._model;
return i.get("axisExpandable") && i.get("axisExpandTriggerOn") === e
}
yf(function(t) {
!function(t) {
if (t.parallel)
return;
var e = !1;
E(t.series, function(t) {
t && "parallel" === t.type && (e = !0)
}),
e && (t.parallel = [{}])
}(t),
function(n) {
E(Vo(n.parallelAxis), function(t) {
if (z(t)) {
var e = t.parallelIndex || 0
, i = Vo(n.parallel)[e];
i && i.parallelAxisDefault && m(t, i.parallelAxisDefault, !1)
}
})
}(t)
}),
sc.extend({
type: "series.parallel",
dependencies: ["parallel"],
visualColorAccessPath: "lineStyle.color",
getInitialData: function(t, e) {
var i = this.getSource();
return function(t, e) {
if (t.encodeDefine)
return;
var i = e.ecModel.getComponent("parallel", e.get("parallelIndex"));
if (!i)
return;
var n = t.encodeDefine = Q();
E(i.dimensions, function(t) {
var e = function(t) {
return +t.replace("dim", "")
}(t);
n.set(t, e)
})
}(i, this),
gp(i, this)
},
getRawIndicesByActiveState: function(i) {
var t = this.coordinateSystem
, n = this.getData()
, o = [];
return t.eachActiveState(n, function(t, e) {
i === t && o.push(n.getRawIndex(e))
}),
o
},
defaultOption: {
zlevel: 0,
z: 2,
coordinateSystem: "parallel",
parallelIndex: 0,
label: {
show: !1
},
inactiveOpacity: .05,
activeOpacity: 1,
lineStyle: {
width: 1,
opacity: .45,
type: "solid"
},
emphasis: {
label: {
show: !1
}
},
progressive: 500,
smooth: !1,
animationEasing: "linear"
}
});
_c.extend({
type: "parallel",
init: function() {
this._dataGroup = new Ci,
this.group.add(this._dataGroup),
this._data,
this._initialized
},
render: function(a, t, e, r) {
var i = this._dataGroup
, s = a.getData()
, l = this._data
, u = a.coordinateSystem
, h = u.dimensions
, c = cS(a);
if (s.diff(l).add(function(t) {
dS(hS(s, i, t, h, u), s, t, c)
}).update(function(t, e) {
var i = l.getItemGraphicEl(e)
, n = uS(s, t, h, u);
s.setItemGraphicEl(t, i);
var o = r && !1 === r.animation ? null : a;
cl(i, {
shape: {
points: n
}
}, o, t),
dS(i, s, t, c)
}).remove(function(t) {
var e = l.getItemGraphicEl(t);
i.remove(e)
}).execute(),
!this._initialized) {
this._initialized = !0;
var n = function(t, e, i) {
var n = t.model
, o = t.getRect()
, a = new rs({
shape: {
x: o.x,
y: o.y,
width: o.width,
height: o.height
}
})
, r = "horizontal" === n.get("layout") ? "width" : "height";
return a.setShape(r, 0),
dl(a, {
shape: {
width: o.width,
height: o.height
}
}, e, i),
a
}(u, a, function() {
setTimeout(function() {
i.removeClipPath()
})
});
i.setClipPath(n)
}
this._data = s
},
incrementalPrepareRender: function(t, e, i) {
this._initialized = !0,
this._data = null,
this._dataGroup.removeAll()
},
incrementalRender: function(t, e, i) {
for (var n = e.getData(), o = e.coordinateSystem, a = o.dimensions, r = cS(e), s = t.start; s < t.end; s++) {
var l = hS(n, this._dataGroup, s, a, o);
l.incremental = !0,
dS(l, n, s, r)
}
},
dispose: function() {},
remove: function() {
this._dataGroup && this._dataGroup.removeAll(),
this._data = null
}
});
function uS(t, e, i, n) {
for (var o, a = [], r = 0; r < i.length; r++) {
var s = i[r]
, l = t.get(t.mapDimension(s), e);
o = l,
("category" === n.getAxis(s).type ? null == o : null == o || isNaN(o)) || a.push(n.dataToPoint(l, s))
}
return a
}
function hS(t, e, i, n, o) {
var a = uS(t, i, n, o)
, r = new ts({
shape: {
points: a
},
silent: !0,
z2: 10
});
return e.add(r),
t.setItemGraphicEl(i, r),
r
}
function cS(t) {
var e = t.get("smooth", !0);
return !0 === e && (e = .3),
{
lineStyle: t.getModel("lineStyle").getLineStyle(),
smooth: null != e ? e : .3
}
}
function dS(t, e, i, n) {
var o = n.lineStyle;
e.hasItemOption && (o = e.getItemModel(i).getModel("lineStyle").getLineStyle());
t.useStyle(o);
var a = t.style;
a.fill = null,
a.stroke = e.getItemVisual(i, "color"),
a.opacity = e.getItemVisual(i, "opacity"),
n.smooth && (t.shape.smooth = n.smooth)
}
var fS = ["lineStyle", "normal", "opacity"];
Sf({
seriesType: "parallel",
reset: function(t, e, i) {
var n = t.getModel("itemStyle")
, o = t.getModel("lineStyle")
, a = e.get("color")
, r = o.get("color") || n.get("color") || a[t.seriesIndex % a.length]
, s = t.get("inactiveOpacity")
, l = t.get("activeOpacity")
, u = t.getModel("lineStyle").getLineStyle()
, h = t.coordinateSystem
, c = t.getData()
, d = {
normal: u.opacity,
active: l,
inactive: s
};
return c.setVisual("color", r),
{
progress: function(t, o) {
h.eachActiveState(o, function(t, e) {
var i = d[t];
if ("normal" === t && o.hasItemOption) {
var n = o.getItemModel(e).get(fS, !0);
null != n && (i = n)
}
o.setItemVisual(e, "opacity", i)
}, t.start, t.end)
}
}
}
});
var pS = sc.extend({
type: "series.sankey",
layoutInfo: null,
levelModels: null,
getInitialData: function(t, e) {
for (var i = t.edges || t.links, n = t.data || t.nodes, o = t.levels, a = this.levelModels = {}, r = 0; r < o.length; r++)
null != o[r].depth && 0 <= o[r].depth && (a[o[r].depth] = new Cl(o[r],this,e));
if (n && i)
return iw(n, i, this, !0, function(t, e) {
t.wrapMethod("getItemModel", function(t, n) {
return t.customizeGetParent(function(t) {
var e = this.parentModel
, i = e.getData().getItemLayout(n).depth;
return e.levelModels[i] || this.parentModel
}),
t
}),
e.wrapMethod("getItemModel", function(t, n) {
return t.customizeGetParent(function(t) {
var e = this.parentModel
, i = e.getGraph().getEdgeByIndex(n).node1.getLayout().depth;
return e.levelModels[i] || this.parentModel
}),
t
})
}).data
},
setNodePosition: function(t, e) {
var i = this.option.data[t];
i.localX = e[0],
i.localY = e[1]
},
getGraph: function() {
return this.getData().graph
},
getEdgeData: function() {
return this.getGraph().edgeData
},
formatTooltip: function(t, e, i) {
if ("edge" === i) {
var n = this.getDataParams(t, i)
, o = n.data
, a = o.source + " -- " + o.target;
return n.value && (a += " : " + n.value),
au(a)
}
if ("node" !== i)
return pS.superCall(this, "formatTooltip", t, e);
var r = this.getGraph().getNodeByIndex(t).getLayout().value
, s = this.getDataParams(t, i).data.name;
if (r)
a = s + " : " + r;
return au(a)
},
optionUpdated: function() {
var t = this.option;
!0 === t.focusNodeAdjacency && (t.focusNodeAdjacency = "allEdges")
},
getDataParams: function(t, e) {
var i = pS.superCall(this, "getDataParams", t, e);
if (null == i.value && "node" === e) {
var n = this.getGraph().getNodeByIndex(t).getLayout().value;
i.value = n
}
return i
},
defaultOption: {
zlevel: 0,
z: 2,
coordinateSystem: "view",
layout: null,
left: "5%",
top: "5%",
right: "20%",
bottom: "5%",
orient: "horizontal",
nodeWidth: 20,
nodeGap: 8,
draggable: !0,
focusNodeAdjacency: !1,
layoutIterations: 32,
label: {
show: !0,
position: "right",
color: "#000",
fontSize: 12
},
levels: [],
nodeAlign: "justify",
itemStyle: {
borderWidth: 1,
borderColor: "#333"
},
lineStyle: {
color: "#314656",
opacity: .2,
curveness: .5
},
emphasis: {
label: {
show: !0
},
lineStyle: {
opacity: .5
}
},
animationEasing: "linear",
animationDuration: 1e3
}
})
, gS = ["itemStyle", "opacity"]
, mS = ["emphasis", "itemStyle", "opacity"]
, vS = ["lineStyle", "opacity"]
, yS = ["emphasis", "lineStyle", "opacity"];
function xS(t, e) {
return t.getVisual("opacity") || t.getModel().get(e)
}
function _S(t, e, i) {
var n = t.getGraphicEl()
, o = xS(t, e);
null != i && (null == o && (o = 1),
o *= i),
n.downplay && n.downplay(),
n.traverse(function(t) {
"group" !== t.type && t.setStyle("opacity", o)
})
}
function wS(t, e) {
var i = xS(t, e)
, n = t.getGraphicEl();
n.traverse(function(t) {
"group" !== t.type && t.setStyle("opacity", i)
}),
n.highlight && n.highlight()
}
var bS = Cs({
shape: {
x1: 0,
y1: 0,
x2: 0,
y2: 0,
cpx1: 0,
cpy1: 0,
cpx2: 0,
cpy2: 0,
extent: 0,
orient: ""
},
buildPath: function(t, e) {
var i = e.extent;
t.moveTo(e.x1, e.y1),
t.bezierCurveTo(e.cpx1, e.cpy1, e.cpx2, e.cpy2, e.x2, e.y2),
"vertical" === e.orient ? (t.lineTo(e.x2 + i, e.y2),
t.bezierCurveTo(e.cpx2 + i, e.cpy2, e.cpx1 + i, e.cpy1, e.x1 + i, e.y1)) : (t.lineTo(e.x2, e.y2 + i),
t.bezierCurveTo(e.cpx2, e.cpy2 + i, e.cpx1, e.cpy1 + i, e.x1, e.y1 + i)),
t.closePath()
},
highlight: function() {
this.trigger("emphasis")
},
downplay: function() {
this.trigger("normal")
}
});
Cf({
type: "sankey",
_model: null,
_focusAdjacencyDisabled: !1,
render: function(w, t, n) {
var o = this
, e = w.getGraph()
, b = this.group
, i = w.layoutInfo
, S = i.width
, M = i.height
, u = w.getData()
, I = w.getData("edge")
, T = w.get("orient");
this._model = w,
b.removeAll(),
b.attr("position", [i.x, i.y]),
e.eachEdge(function(t) {
var e = new bS;
e.dataIndex = t.dataIndex,
e.seriesIndex = w.seriesIndex,
e.dataType = "edge";
var i, n, o, a, r, s, l, u, h = t.getModel("lineStyle"), c = h.get("curveness"), d = t.node1.getLayout(), f = t.node1.getModel(), p = f.get("localX"), g = f.get("localY"), m = t.node2.getLayout(), v = t.node2.getModel(), y = v.get("localX"), x = v.get("localY"), _ = t.getLayout();
switch (e.shape.extent = Math.max(1, _.dy),
u = "vertical" === (e.shape.orient = T) ? (i = (null != p ? p * S : d.x) + _.sy,
n = (null != g ? g * M : d.y) + d.dy,
o = (null != y ? y * S : m.x) + _.ty,
r = i,
s = n * (1 - c) + (a = null != x ? x * M : m.y) * c,
l = o,
n * c + a * (1 - c)) : (i = (null != p ? p * S : d.x) + d.dx,
n = (null != g ? g * M : d.y) + _.sy,
r = i * (1 - c) + (o = null != y ? y * S : m.x) * c,
s = n,
l = i * c + o * (1 - c),
a = (null != x ? x * M : m.y) + _.ty),
e.setShape({
x1: i,
y1: n,
x2: o,
y2: a,
cpx1: r,
cpy1: s,
cpx2: l,
cpy2: u
}),
e.setStyle(h.getItemStyle()),
e.style.fill) {
case "source":
e.style.fill = t.node1.getVisual("color");
break;
case "target":
e.style.fill = t.node2.getVisual("color")
}
$s(e, t.getModel("emphasis.lineStyle").getItemStyle()),
b.add(e),
I.setItemGraphicEl(t.dataIndex, e)
}),
e.eachNode(function(t) {
var e = t.getLayout()
, i = t.getModel()
, n = i.get("localX")
, o = i.get("localY")
, a = i.getModel("label")
, r = i.getModel("emphasis.label")
, s = new rs({
shape: {
x: null != n ? n * S : e.x,
y: null != o ? o * M : e.y,
width: e.dx,
height: e.dy
},
style: i.getModel("itemStyle").getItemStyle()
})
, l = t.getModel("emphasis.itemStyle").getItemStyle();
el(s.style, l, a, r, {
labelFetcher: w,
labelDataIndex: t.dataIndex,
defaultText: t.id,
isRectText: !0
}),
s.setStyle("fill", t.getVisual("color")),
$s(s, l),
b.add(s),
u.setItemGraphicEl(t.dataIndex, s),
s.dataType = "node"
}),
u.eachItemGraphicEl(function(t, i) {
var e = u.getItemModel(i);
e.get("draggable") && (t.drift = function(t, e) {
o._focusAdjacencyDisabled = !0,
this.shape.x += t,
this.shape.y += e,
this.dirty(),
n.dispatchAction({
type: "dragNode",
seriesId: w.id,
dataIndex: u.getRawIndex(i),
localX: this.shape.x / S,
localY: this.shape.y / M
})
}
,
t.ondragend = function() {
o._focusAdjacencyDisabled = !1
}
,
t.draggable = !0,
t.cursor = "move"),
t.highlight = function() {
this.trigger("emphasis")
}
,
t.downplay = function() {
this.trigger("normal")
}
,
t.focusNodeAdjHandler && t.off("mouseover", t.focusNodeAdjHandler),
t.unfocusNodeAdjHandler && t.off("mouseout", t.unfocusNodeAdjHandler),
e.get("focusNodeAdjacency") && (t.on("mouseover", t.focusNodeAdjHandler = function() {
o._focusAdjacencyDisabled || (o._clearTimer(),
n.dispatchAction({
type: "focusNodeAdjacency",
seriesId: w.id,
dataIndex: t.dataIndex
}))
}
),
t.on("mouseout", t.unfocusNodeAdjHandler = function() {
o._focusAdjacencyDisabled || o._dispatchUnfocus(n)
}
))
}),
I.eachItemGraphicEl(function(t, e) {
var i = I.getItemModel(e);
t.focusNodeAdjHandler && t.off("mouseover", t.focusNodeAdjHandler),
t.unfocusNodeAdjHandler && t.off("mouseout", t.unfocusNodeAdjHandler),
i.get("focusNodeAdjacency") && (t.on("mouseover", t.focusNodeAdjHandler = function() {
o._focusAdjacencyDisabled || (o._clearTimer(),
n.dispatchAction({
type: "focusNodeAdjacency",
seriesId: w.id,
edgeDataIndex: t.dataIndex
}))
}
),
t.on("mouseout", t.unfocusNodeAdjHandler = function() {
o._focusAdjacencyDisabled || o._dispatchUnfocus(n)
}
))
}),
!this._data && w.get("animation") && b.setClipPath(function(t, e, i) {
var n = new rs({
shape: {
x: t.x - 10,
y: t.y - 10,
width: 0,
height: t.height + 20
}
});
return dl(n, {
shape: {
width: t.width + 20
}
}, e, i),
n
}(b.getBoundingRect(), w, function() {
b.removeClipPath()
})),
this._data = w.getData()
},
dispose: function() {
this._clearTimer()
},
_dispatchUnfocus: function(t) {
var e = this;
this._clearTimer(),
this._unfocusDelayTimer = setTimeout(function() {
e._unfocusDelayTimer = null,
t.dispatchAction({
type: "unfocusNodeAdjacency",
seriesId: e._model.id
})
}, 500)
},
_clearTimer: function() {
this._unfocusDelayTimer && (clearTimeout(this._unfocusDelayTimer),
this._unfocusDelayTimer = null)
},
focusNodeAdjacency: function(t, e, i, n) {
var o = t.getData()
, a = o.graph
, r = n.dataIndex
, s = o.getItemModel(r)
, l = n.edgeDataIndex;
if (null != r || null != l) {
var u = a.getNodeByIndex(r)
, h = a.getEdgeByIndex(l);
if (a.eachNode(function(t) {
_S(t, gS, .1)
}),
a.eachEdge(function(t) {
_S(t, vS, .1)
}),
u) {
wS(u, mS);
var c = s.get("focusNodeAdjacency");
"outEdges" === c ? E(u.outEdges, function(t) {
t.dataIndex < 0 || (wS(t, yS),
wS(t.node2, mS))
}) : "inEdges" === c ? E(u.inEdges, function(t) {
t.dataIndex < 0 || (wS(t, yS),
wS(t.node1, mS))
}) : "allEdges" === c && E(u.edges, function(t) {
t.dataIndex < 0 || (wS(t, yS),
t.node1 !== u && wS(t.node1, mS),
t.node2 !== u && wS(t.node2, mS))
})
}
h && (wS(h, yS),
wS(h.node1, mS),
wS(h.node2, mS))
}
},
unfocusNodeAdjacency: function(t, e, i, n) {
var o = t.getGraph();
o.eachNode(function(t) {
_S(t, gS)
}),
o.eachEdge(function(t) {
_S(t, vS)
})
}
}),
_f({
type: "dragNode",
event: "dragnode",
update: "update"
}, function(e, t) {
t.eachComponent({
mainType: "series",
subType: "sankey",
query: e
}, function(t) {
t.setNodePosition(e.dataIndex, [e.localX, e.localY])
})
});
function SS(t) {
var e = t.hostGraph.data.getRawDataItem(t.dataIndex);
return null != e.depth && 0 <= e.depth
}
function MS(t, l, u, h, c) {
var d = "vertical" === c ? "x" : "y";
E(t, function(t) {
var e, i, n;
t.sort(function(t, e) {
return t.getLayout()[d] - e.getLayout()[d]
});
for (var o = 0, a = t.length, r = "vertical" === c ? "dx" : "dy", s = 0; s < a; s++)
0 < (n = o - (i = t[s]).getLayout()[d]) && (e = i.getLayout()[d] + n,
"vertical" === c ? i.setLayout({
x: e
}, !0) : i.setLayout({
y: e
}, !0)),
o = i.getLayout()[d] + i.getLayout()[r] + l;
if (0 < (n = o - l - ("vertical" === c ? h : u)))
for (e = i.getLayout()[d] - n,
"vertical" === c ? i.setLayout({
x: e
}, !0) : i.setLayout({
y: e
}, !0),
o = e,
s = a - 2; 0 <= s; --s)
0 < (n = (i = t[s]).getLayout()[d] + i.getLayout()[r] + l - o) && (e = i.getLayout()[d] - n,
"vertical" === c ? i.setLayout({
x: e
}, !0) : i.setLayout({
y: e
}, !0)),
o = i.getLayout()[d]
})
}
function IS(t, a, r) {
E(t.slice().reverse(), function(t) {
E(t, function(t) {
if (t.outEdges.length) {
var e = PS(t.outEdges, TS, r) / PS(t.outEdges, kS, r);
if (isNaN(e)) {
var i = t.outEdges.length;
e = i ? PS(t.outEdges, AS, r) / i : 0
}
if ("vertical" === r) {
var n = t.getLayout().x + (e - LS(t, r)) * a;
t.setLayout({
x: n
}, !0)
} else {
var o = t.getLayout().y + (e - LS(t, r)) * a;
t.setLayout({
y: o
}, !0)
}
}
})
})
}
function TS(t, e) {
return LS(t.node2, e) * t.getValue()
}
function AS(t, e) {
return LS(t.node2, e)
}
function DS(t, e) {
return LS(t.node1, e) * t.getValue()
}
function CS(t, e) {
return LS(t.node1, e)
}
function LS(t, e) {
return "vertical" === e ? t.getLayout().x + t.getLayout().dx / 2 : t.getLayout().y + t.getLayout().dy / 2
}
function kS(t) {
return t.getValue()
}
function PS(t, e, i) {
for (var n = 0, o = t.length, a = -1; ++a < o; ) {
var r = +e.call(t, t[a], i);
isNaN(r) || (n += r)
}
return n
}
function NS(t, a, r) {
E(t, function(t) {
E(t, function(t) {
if (t.inEdges.length) {
var e = PS(t.inEdges, DS, r) / PS(t.inEdges, kS, r);
if (isNaN(e)) {
var i = t.inEdges.length;
e = i ? PS(t.inEdges, CS, r) / i : 0
}
if ("vertical" === r) {
var n = t.getLayout().x + (e - LS(t, r)) * a;
t.setLayout({
x: n
}, !0)
} else {
var o = t.getLayout().y + (e - LS(t, r)) * a;
t.setLayout({
y: o
}, !0)
}
}
})
})
}
bf(function(t, u, e) {
t.eachSeriesByType("sankey", function(t) {
var e = t.get("nodeWidth")
, i = t.get("nodeGap")
, n = function(t, e) {
return bu(t.getBoxLayoutParams(), {
width: e.getWidth(),
height: e.getHeight()
})
}(t, u)
, o = (t.layoutInfo = n).width
, a = n.height
, r = t.getGraph()
, s = r.nodes
, l = r.edges;
!function(t) {
E(t, function(t) {
var e = PS(t.outEdges, kS)
, i = PS(t.inEdges, kS)
, n = t.getValue() || 0
, o = Math.max(e, i, n);
t.setLayout({
value: o
}, !0)
})
}(s),
function(t, e, i, n, o, a, r, s, l) {
(function(t, e, i, n, o, a, r) {
for (var s = [], l = [], u = [], h = [], c = 0, d = 0; d < e.length; d++)
s[d] = 1;
for (d = 0; d < t.length; d++)
l[d] = t[d].inEdges.length,
0 === l[d] && u.push(t[d]);
var f = -1;
for (; u.length; ) {
for (var p = 0; p < u.length; p++) {
var g = u[p]
, m = g.hostGraph.data.getRawDataItem(g.dataIndex)
, v = null != m.depth && 0 <= m.depth;
v && m.depth > f && (f = m.depth),
g.setLayout({
depth: v ? m.depth : c
}, !0),
"vertical" === a ? g.setLayout({
dy: i
}, !0) : g.setLayout({
dx: i
}, !0);
for (var y = 0; y < g.outEdges.length; y++) {
var x = g.outEdges[y]
, _ = e.indexOf(x);
s[_] = 0;
var w = x.node2
, b = t.indexOf(w);
0 == --l[b] && h.indexOf(w) < 0 && h.push(w)
}
}
++c,
u = h,
h = []
}
for (d = 0; d < s.length; d++)
if (1 === s[d])
throw new Error("Sankey is a DAG, the original data has cycle!");
var S = c - 1 < f ? f : c - 1;
r && "left" !== r && function(t, e, i, n) {
if ("right" === e) {
for (var o = [], a = t, r = 0; a.length; ) {
for (var s = 0; s < a.length; s++) {
var l = a[s];
l.setLayout({
skNodeHeight: r
}, !0);
for (var u = 0; u < l.inEdges.length; u++) {
var h = l.inEdges[u];
o.indexOf(h.node1) < 0 && o.push(h.node1)
}
}
a = o,
o = [],
++r
}
E(t, function(t) {
SS(t) || t.setLayout({
depth: Math.max(0, n - t.getLayout().skNodeHeight)
}, !0)
})
} else
"justify" === e && function(t, e) {
E(t, function(t) {
SS(t) || t.outEdges.length || t.setLayout({
depth: e
}, !0)
})
}(t, n)
}(t, r, 0, S);
!function(t, i, n) {
E(t, function(t) {
var e = t.getLayout().depth * i;
"vertical" === n ? t.setLayout({
y: e
}, !0) : t.setLayout({
x: e
}, !0)
})
}(t, "vertical" === a ? (o - i) / S : (n - i) / S, a)
}
)(t, e, i, o, a, s, l),
function(t, e, i, n, o, a, r) {
var s = function(t, e) {
var i = []
, n = "vertical" === e ? "y" : "x"
, o = ta(t, function(t) {
return t.getLayout()[n]
});
return o.keys.sort(function(t, e) {
return t - e
}),
E(o.keys, function(t) {
i.push(o.buckets.get(t))
}),
i
}(t, r);
(function(t, e, o, a, r, s) {
var l = 1 / 0;
E(t, function(t) {
var e = t.length
, i = 0;
E(t, function(t) {
i += t.getLayout().value
});
var n = "vertical" === s ? (a - (e - 1) * r) / i : (o - (e - 1) * r) / i;
n < l && (l = n)
}),
E(t, function(t) {
E(t, function(t, e) {
var i = t.getLayout().value * l;
"vertical" === s ? (t.setLayout({
x: e
}, !0),
t.setLayout({
dx: i
}, !0)) : (t.setLayout({
y: e
}, !0),
t.setLayout({
dy: i
}, !0))
})
}),
E(e, function(t) {
var e = +t.getValue() * l;
t.setLayout({
dy: e
}, !0)
})
}
)(s, e, i, n, o, r),
MS(s, o, i, n, r);
for (var l = 1; 0 < a; a--)
IS(s, l *= .99, r),
MS(s, o, i, n, r),
NS(s, l, r),
MS(s, o, i, n, r)
}(t, e, a, o, n, r, s),
function(t, e) {
var i = "vertical" === e ? "x" : "y";
E(t, function(t) {
t.outEdges.sort(function(t, e) {
return t.node2.getLayout()[i] - e.node2.getLayout()[i]
}),
t.inEdges.sort(function(t, e) {
return t.node1.getLayout()[i] - e.node1.getLayout()[i]
})
}),
E(t, function(t) {
var e = 0
, i = 0;
E(t.outEdges, function(t) {
t.setLayout({
sy: e
}, !0),
e += t.getLayout().dy
}),
E(t.inEdges, function(t) {
t.setLayout({
ty: i
}, !0),
i += t.getLayout().dy
})
})
}(t, s)
}(s, l, e, i, o, a, 0 !== M(s, function(t) {
return 0 === t.getLayout().value
}).length ? 0 : t.get("layoutIterations"), t.get("orient"), t.get("nodeAlign"))
})
}),
Sf(function(t, e) {
t.eachSeriesByType("sankey", function(n) {
var t = n.getGraph().nodes;
if (t.length) {
var o = 1 / 0
, a = -1 / 0;
E(t, function(t) {
var e = t.getLayout().value;
e < o && (o = e),
a < e && (a = e)
}),
E(t, function(t) {
var e = new g_({
type: "color",
mappingMethod: "linear",
dataExtent: [o, a],
visual: n.get("color")
}).mapValueToVisual(t.getLayout().value)
, i = t.getModel().get("itemStyle.color");
null != i ? t.setVisual("color", i) : t.setVisual("color", e)
})
}
})
});
var OS = {
_baseAxisDim: null,
getInitialData: function(t, e) {
var i, n, o = e.getComponent("xAxis", this.get("xAxisIndex")), a = e.getComponent("yAxis", this.get("yAxisIndex")), r = o.get("type"), s = a.get("type");
"category" === r ? (t.layout = "horizontal",
i = o.getOrdinalMeta(),
n = !0) : "category" === s ? (t.layout = "vertical",
i = a.getOrdinalMeta(),
n = !0) : t.layout = t.layout || "horizontal";
var l = ["x", "y"]
, u = "horizontal" === t.layout ? 0 : 1
, h = this._baseAxisDim = l[u]
, c = l[1 - u]
, d = [o, a]
, f = d[u].get("type")
, p = d[1 - u].get("type")
, g = t.data;
if (g && n) {
var m = [];
E(g, function(t, e) {
var i;
t.value && L(t.value) ? (i = t.value.slice(),
t.value.unshift(e)) : L(t) ? (i = t.slice(),
t.unshift(e)) : i = t,
m.push(i)
}),
t.data = m
}
var v = this.defaultValueDimensions
, y = [{
name: h,
type: Ef(f),
ordinalMeta: i,
otherDims: {
tooltip: !1,
itemName: 0
},
dimsDef: ["base"]
}, {
name: c,
type: Ef(p),
dimsDef: v.slice()
}];
return Yv(this, {
coordDimensions: y,
dimensionsCount: v.length + 1,
encodeDefaulter: T($u, y, this)
})
},
getBaseAxis: function() {
var t = this._baseAxisDim;
return this.ecModel.getComponent(t + "Axis", this.get(t + "AxisIndex")).axis
}
};
b(sc.extend({
type: "series.boxplot",
dependencies: ["xAxis", "yAxis", "grid"],
defaultValueDimensions: [{
name: "min",
defaultTooltip: !0
}, {
name: "Q1",
defaultTooltip: !0
}, {
name: "median",
defaultTooltip: !0
}, {
name: "Q3",
defaultTooltip: !0
}, {
name: "max",
defaultTooltip: !0
}],
dimensions: null,
defaultOption: {
zlevel: 0,
z: 2,
coordinateSystem: "cartesian2d",
legendHoverLink: !0,
hoverAnimation: !0,
layout: null,
boxWidth: [7, 50],
itemStyle: {
color: "#fff",
borderWidth: 1
},
emphasis: {
itemStyle: {
borderWidth: 2,
shadowBlur: 5,
shadowOffsetX: 2,
shadowOffsetY: 2,
shadowColor: "rgba(0,0,0,0.4)"
}
},
animationEasing: "elasticOut",
animationDuration: 800
}
}), OS, !0);
var ES = ["itemStyle"]
, RS = ["emphasis", "itemStyle"]
, zS = (_c.extend({
type: "boxplot",
render: function(t, e, i) {
var o = t.getData()
, a = this.group
, r = this._data;
this._data || a.removeAll();
var s = "horizontal" === t.get("layout") ? 1 : 0;
o.diff(r).add(function(t) {
if (o.hasValue(t)) {
var e = BS(o.getItemLayout(t), o, t, s, !0);
o.setItemGraphicEl(t, e),
a.add(e)
}
}).update(function(t, e) {
var i = r.getItemGraphicEl(e);
if (o.hasValue(t)) {
var n = o.getItemLayout(t);
i ? VS(n, i, o, t) : i = BS(n, o, t, s),
a.add(i),
o.setItemGraphicEl(t, i)
} else
a.remove(i)
}).remove(function(t) {
var e = r.getItemGraphicEl(t);
e && a.remove(e)
}).execute(),
this._data = o
},
remove: function(t) {
var e = this.group
, i = this._data;
this._data = null,
i && i.eachItemGraphicEl(function(t) {
t && e.remove(t)
})
},
dispose: et
}),
Ar.extend({
type: "boxplotBoxPath",
shape: {},
buildPath: function(t, e) {
var i = e.points
, n = 0;
for (t.moveTo(i[n][0], i[n][1]),
n++; n < 4; n++)
t.lineTo(i[n][0], i[n][1]);
for (t.closePath(); n < i.length; n++)
t.moveTo(i[n][0], i[n][1]),
n++,
t.lineTo(i[n][0], i[n][1])
}
}));
function BS(t, e, i, n, o) {
var a = t.ends
, r = new zS({
shape: {
points: o ? function(t, e, i) {
return O(t, function(t) {
return (t = t.slice())[e] = i.initBaseline,
t
})
}(a, n, t) : a
}
});
return VS(t, r, e, i, o),
r
}
function VS(t, e, i, n, o) {
var a = i.hostModel;
(0,
bl[o ? "initProps" : "updateProps"])(e, {
shape: {
points: t.ends
}
}, a, n);
var r = i.getItemModel(n)
, s = r.getModel(ES)
, l = i.getItemVisual(n, "color")
, u = s.getItemStyle(["borderColor"]);
u.stroke = l,
u.strokeNoScale = !0,
e.useStyle(u),
e.z2 = 100,
$s(e, r.getModel(RS).getItemStyle())
}
var GS = ["itemStyle", "borderColor"]
, FS = E;
Sf(function(n, t) {
var o = n.get("color");
n.eachRawSeriesByType("boxplot", function(t) {
var e = o[t.seriesIndex % o.length]
, i = t.getData();
i.setVisual({
legendSymbol: "roundRect",
color: t.get(GS) || e
}),
n.isSeriesFiltered(t) || i.each(function(t) {
var e = i.getItemModel(t);
i.setItemVisual(t, {
color: e.get(GS, !0)
})
})
})
}),
bf(function(t) {
var e = function(t) {
var n = []
, o = [];
return t.eachSeriesByType("boxplot", function(t) {
var e = t.getBaseAxis()
, i = _(o, e);
i < 0 && (i = o.length,
o[i] = e,
n[i] = {
axis: e,
seriesModels: []
}),
n[i].seriesModels.push(t)
}),
n
}(t);
FS(e, function(i) {
var t = i.seriesModels;
t.length && (function(t) {
var e, i, n = t.axis, o = t.seriesModels, a = o.length, r = t.boxWidthList = [], s = t.boxOffsetList = [], l = [];
if ("category" === n.type)
i = n.getBandWidth();
else {
var u = 0;
FS(o, function(t) {
u = Math.max(u, t.getData().count())
}),
e = n.getExtent(),
Math.abs(e[1] - e[0])
}
FS(o, function(t) {
var e = t.get("boxWidth");
L(e) || (e = [e, e]),
l.push([Rl(e[0], i) || 0, Rl(e[1], i) || 0])
});
var h = .8 * i - 2
, c = h / a * .3
, d = (h - c * (a - 1)) / a
, f = d / 2 - h / 2;
FS(o, function(t, e) {
s.push(f),
f += c + d,
r.push(Math.min(Math.max(d, l[e][0]), l[e][1]))
})
}(i),
FS(t, function(t, e) {
!function(t, r, e) {
var s = t.coordinateSystem
, l = t.getData()
, a = e / 2
, u = "horizontal" === t.get("layout") ? 0 : 1
, h = 1 - u
, i = ["x", "y"]
, n = l.mapDimension(i[u])
, o = l.mapDimension(i[h], !0);
if (null == n || o.length < 5)
return;
for (var c = 0; c < l.count(); c++) {
var d = l.get(n, c)
, f = x(d, o[2], c)
, p = x(d, o[0], c)
, g = x(d, o[1], c)
, m = x(d, o[3], c)
, v = x(d, o[4], c)
, y = [];
_(y, g, 0),
_(y, m, 1),
y.push(p, g, v, m),
w(y, p),
w(y, v),
w(y, f),
l.setItemLayout(c, {
initBaseline: f[h],
ends: y
})
}
function x(t, e, i) {
var n, o = l.get(e, i), a = [];
return a[u] = t,
a[h] = o,
isNaN(t) || isNaN(o) ? n = [NaN, NaN] : (n = s.dataToPoint(a))[u] += r,
n
}
function _(t, e, i) {
var n = e.slice()
, o = e.slice();
n[u] += a,
o[u] -= a,
i ? t.push(n, o) : t.push(o, n)
}
function w(t, e) {
var i = e.slice()
, n = e.slice();
i[u] -= a,
n[u] += a,
t.push(i, n)
}
}(t, i.boxOffsetList[e], i.boxWidthList[e])
}))
})
}),
b(sc.extend({
type: "series.candlestick",
dependencies: ["xAxis", "yAxis", "grid"],
defaultValueDimensions: [{
name: "open",
defaultTooltip: !0
}, {
name: "close",
defaultTooltip: !0
}, {
name: "lowest",
defaultTooltip: !0
}, {
name: "highest",
defaultTooltip: !0
}],
dimensions: null,
defaultOption: {
zlevel: 0,
z: 2,
coordinateSystem: "cartesian2d",
legendHoverLink: !0,
hoverAnimation: !0,
layout: null,
clip: !0,
itemStyle: {
color: "#c23531",
color0: "#314656",
borderWidth: 1,
borderColor: "#c23531",
borderColor0: "#314656"
},
emphasis: {
itemStyle: {
borderWidth: 2
}
},
barMaxWidth: null,
barMinWidth: null,
barWidth: null,
large: !0,
largeThreshold: 600,
progressive: 3e3,
progressiveThreshold: 1e4,
progressiveChunkMode: "mod",
animationUpdate: !1,
animationEasing: "linear",
animationDuration: 300
},
getShadowDim: function() {
return "open"
},
brushSelector: function(t, e, i) {
var n = e.getItemLayout(t);
return n && i.rect(n.brushRect)
}
}), OS, !0);
var WS = ["itemStyle"]
, HS = ["emphasis", "itemStyle"]
, ZS = ["color", "color0", "borderColor", "borderColor0"]
, US = (_c.extend({
type: "candlestick",
render: function(t, e, i) {
this.group.removeClipPath(),
this._updateDrawMode(t),
this._isLargeDraw ? this._renderLarge(t) : this._renderNormal(t)
},
incrementalPrepareRender: function(t, e, i) {
this._clear(),
this._updateDrawMode(t)
},
incrementalRender: function(t, e, i, n) {
this._isLargeDraw ? this._incrementalRenderLarge(t, e) : this._incrementalRenderNormal(t, e)
},
_updateDrawMode: function(t) {
var e = t.pipelineContext.large;
(null == this._isLargeDraw || e ^ this._isLargeDraw) && (this._isLargeDraw = e,
this._clear())
},
_renderNormal: function(o) {
var a = o.getData()
, r = this._data
, s = this.group
, l = a.getLayout("isSimpleBox")
, u = o.get("clip", !0)
, t = o.coordinateSystem
, h = t.getArea && t.getArea();
this._data || s.removeAll(),
a.diff(r).add(function(t) {
if (a.hasValue(t)) {
var e, i = a.getItemLayout(t);
if (u && YS(h, i))
return;
dl(e = XS(i, t, !0), {
shape: {
points: i.ends
}
}, o, t),
jS(e, a, t, l),
s.add(e),
a.setItemGraphicEl(t, e)
}
}).update(function(t, e) {
var i = r.getItemGraphicEl(e);
if (a.hasValue(t)) {
var n = a.getItemLayout(t);
u && YS(h, n) ? s.remove(i) : (i ? cl(i, {
shape: {
points: n.ends
}
}, o, t) : i = XS(n, t),
jS(i, a, t, l),
s.add(i),
a.setItemGraphicEl(t, i))
} else
s.remove(i)
}).remove(function(t) {
var e = r.getItemGraphicEl(t);
e && s.remove(e)
}).execute(),
this._data = a
},
_renderLarge: function(t) {
this._clear(),
KS(t, this.group);
var e = t.get("clip", !0) ? Sm(t.coordinateSystem, !1, t) : null;
e ? this.group.setClipPath(e) : this.group.removeClipPath()
},
_incrementalRenderNormal: function(t, e) {
for (var i, n = e.getData(), o = n.getLayout("isSimpleBox"); null != (i = t.next()); ) {
var a;
jS(a = XS(n.getItemLayout(i), i), n, i, o),
a.incremental = !0,
this.group.add(a)
}
},
_incrementalRenderLarge: function(t, e) {
KS(e, this.group, !0)
},
remove: function(t) {
this._clear()
},
_clear: function() {
this.group.removeAll(),
this._data = null
},
dispose: et
}),
Ar.extend({
type: "normalCandlestickBox",
shape: {},
buildPath: function(t, e) {
var i = e.points;
this.__simpleBox ? (t.moveTo(i[4][0], i[4][1]),
t.lineTo(i[6][0], i[6][1])) : (t.moveTo(i[0][0], i[0][1]),
t.lineTo(i[1][0], i[1][1]),
t.lineTo(i[2][0], i[2][1]),
t.lineTo(i[3][0], i[3][1]),
t.closePath(),
t.moveTo(i[4][0], i[4][1]),
t.lineTo(i[5][0], i[5][1]),
t.moveTo(i[6][0], i[6][1]),
t.lineTo(i[7][0], i[7][1]))
}
}));
function XS(t, e, i) {
var n = t.ends;
return new US({
shape: {
points: i ? function(t, e) {
return O(t, function(t) {
return (t = t.slice())[1] = e.initBaseline,
t
})
}(n, t) : n
},
z2: 100
})
}
function YS(t, e) {
for (var i = !0, n = 0; n < e.ends.length; n++)
if (t.contain(e.ends[n][0], e.ends[n][1])) {
i = !1;
break
}
return i
}
function jS(t, e, i, n) {
var o = e.getItemModel(i)
, a = o.getModel(WS)
, r = e.getItemVisual(i, "color")
, s = e.getItemVisual(i, "borderColor") || r
, l = a.getItemStyle(ZS);
t.useStyle(l),
t.style.strokeNoScale = !0,
t.style.fill = r,
t.style.stroke = s,
t.__simpleBox = n,
$s(t, o.getModel(HS).getItemStyle())
}
var qS = Ar.extend({
type: "largeCandlestickBox",
shape: {},
buildPath: function(t, e) {
for (var i = e.points, n = 0; n < i.length; )
if (this.__sign === i[n++]) {
var o = i[n++];
t.moveTo(o, i[n++]),
t.lineTo(o, i[n++])
} else
n += 3
}
});
function KS(t, e, i) {
var n = t.getData()
, o = n.getLayout("largePoints")
, a = new qS({
shape: {
points: o
},
__sign: 1
});
e.add(a);
var r = new qS({
shape: {
points: o
},
__sign: -1
});
e.add(r),
$S(1, a, t, n),
$S(-1, r, t, n),
i && (a.incremental = !0,
r.incremental = !0)
}
function $S(t, e, i, n) {
var o = 0 < t ? "P" : "N"
, a = n.getVisual("borderColor" + o) || n.getVisual("color" + o)
, r = i.getModel(WS).getItemStyle(ZS);
e.useStyle(r),
e.style.fill = null,
e.style.stroke = a
}
var JS = ["itemStyle", "borderColor"]
, QS = ["itemStyle", "borderColor0"]
, tM = ["itemStyle", "color"]
, eM = ["itemStyle", "color0"]
, iM = {
seriesType: "candlestick",
plan: vc(),
performRawSeries: !0,
reset: function(t, e) {
if (t.getData().setVisual({
legendSymbol: "roundRect",
colorP: a(1, t),
colorN: a(-1, t),
borderColorP: r(1, t),
borderColorN: r(-1, t)
}),
!e.isSeriesFiltered(t))
return !t.pipelineContext.large && {
progress: function(t, e) {
var i;
for (; null != (i = t.next()); ) {
var n = e.getItemModel(i)
, o = e.getItemLayout(i).sign;
e.setItemVisual(i, {
color: a(o, n),
borderColor: r(o, n)
})
}
}
};
function a(t, e) {
return e.get(0 < t ? tM : eM)
}
function r(t, e) {
return e.get(0 < t ? JS : QS)
}
}
}
, nM = "undefined" != typeof Float32Array ? Float32Array : Array
, oM = {
seriesType: "candlestick",
plan: vc(),
reset: function(t) {
var x = t.coordinateSystem
, e = t.getData()
, _ = function(t, e) {
var i, n = t.getBaseAxis(), o = "category" === n.type ? n.getBandWidth() : (i = n.getExtent(),
Math.abs(i[1] - i[0]) / e.count()), a = Rl(H(t.get("barMaxWidth"), o), o), r = Rl(H(t.get("barMinWidth"), 1), o), s = t.get("barWidth");
return null != s ? Rl(s, o) : Math.max(Math.min(o / 2, a), r)
}(t, e)
, i = ["x", "y"]
, w = e.mapDimension(i[0])
, n = e.mapDimension(i[1], !0)
, b = n[0]
, S = n[1]
, M = n[2]
, I = n[3];
if (e.setLayout({
candleWidth: _,
isSimpleBox: _ <= 1.3
}),
!(null == w || n.length < 4))
return {
progress: t.pipelineContext.large ? function(t, e) {
var i, n, o = new nM(4 * t.count), a = 0, r = [], s = [];
for (; null != (n = t.next()); ) {
var l = e.get(w, n)
, u = e.get(b, n)
, h = e.get(S, n)
, c = e.get(M, n)
, d = e.get(I, n);
isNaN(l) || isNaN(c) || isNaN(d) ? (o[a++] = NaN,
a += 3) : (o[a++] = aM(e, n, u, h, S),
r[0] = l,
r[1] = c,
i = x.dataToPoint(r, null, s),
o[a++] = i ? i[0] : NaN,
o[a++] = i ? i[1] : NaN,
r[1] = d,
i = x.dataToPoint(r, null, s),
o[a++] = i ? i[1] : NaN)
}
e.setLayout("largePoints", o)
}
: function(t, e) {
var i;
for (; null != (i = t.next()); ) {
var n = e.get(w, i)
, o = e.get(b, i)
, a = e.get(S, i)
, r = e.get(M, i)
, s = e.get(I, i)
, l = Math.min(o, a)
, u = Math.max(o, a)
, h = g(l, n)
, c = g(u, n)
, d = g(r, n)
, f = g(s, n)
, p = [];
m(p, c, 0),
m(p, h, 1),
p.push(y(f), y(c), y(d), y(h)),
e.setItemLayout(i, {
sign: aM(e, i, o, a, S),
initBaseline: a < o ? c[1] : h[1],
ends: p,
brushRect: v(r, s, n)
})
}
function g(t, e) {
var i = [];
return i[0] = e,
i[1] = t,
isNaN(e) || isNaN(t) ? [NaN, NaN] : x.dataToPoint(i)
}
function m(t, e, i) {
var n = e.slice()
, o = e.slice();
n[0] = zs(n[0] + _ / 2, 1, !1),
o[0] = zs(o[0] - _ / 2, 1, !0),
i ? t.push(n, o) : t.push(o, n)
}
function v(t, e, i) {
var n = g(t, i)
, o = g(e, i);
return n[0] -= _ / 2,
o[0] -= _ / 2,
{
x: n[0],
y: n[1],
width: _,
height: o[1] - n[1]
}
}
function y(t) {
return t[0] = zs(t[0], 1),
t
}
}
}
}
};
function aM(t, e, i, n, o) {
return n < i ? -1 : i < n ? 1 : 0 < e ? t.get(o, e - 1) <= n ? 1 : -1 : 1
}
yf(function(t) {
t && L(t.series) && E(t.series, function(t) {
z(t) && "k" === t.type && (t.type = "candlestick")
})
}),
Sf(iM),
bf(oM),
sc.extend({
type: "series.effectScatter",
dependencies: ["grid", "polar"],
getInitialData: function(t, e) {
return gp(this.getSource(), this, {
useEncodeDefaulter: !0
})
},
brushSelector: "point",
defaultOption: {
coordinateSystem: "cartesian2d",
zlevel: 0,
z: 2,
legendHoverLink: !0,
effectType: "ripple",
progressive: 0,
showEffectOn: "render",
rippleEffect: {
period: 4,
scale: 2.5,
brushType: "fill"
},
symbolSize: 10
}
});
function rM(t, e) {
var i = e.rippleEffectColor || e.color;
t.eachChild(function(t) {
t.attr({
z: e.z,
zlevel: e.zlevel,
style: {
stroke: "stroke" === e.brushType ? i : null,
fill: "fill" === e.brushType ? i : null
}
})
})
}
function sM(t, e) {
Ci.call(this);
var i = new Xg(t,e)
, n = new Ci;
this.add(i),
this.add(n),
n.beforeUpdate = function() {
this.attr(i.getScale())
}
,
this.updateData(t, e)
}
var lM = sM.prototype;
lM.stopEffectAnimation = function() {
this.childAt(1).removeAll()
}
,
lM.startEffectAnimation = function(t) {
for (var e = t.symbolType, i = t.color, n = this.childAt(1), o = 0; o < 3; o++) {
var a = wg(e, -1, -1, 2, 2, i);
a.attr({
style: {
strokeNoScale: !0
},
z2: 99,
silent: !0,
scale: [.5, .5]
});
var r = -o / 3 * t.period + t.effectOffset;
a.animate("", !0).when(t.period, {
scale: [t.rippleScale / 2, t.rippleScale / 2]
}).delay(r).start(),
a.animateStyle(!0).when(t.period, {
opacity: 0
}).delay(r).start(),
n.add(a)
}
rM(n, t)
}
,
lM.updateEffectAnimation = function(t) {
for (var e = this._effectCfg, i = this.childAt(1), n = ["symbolType", "period", "rippleScale"], o = 0; o < n.length; o++) {
var a = n[o];
if (e[a] !== t[a])
return this.stopEffectAnimation(),
void this.startEffectAnimation(t)
}
rM(i, t)
}
,
lM.highlight = function() {
this.trigger("emphasis")
}
,
lM.downplay = function() {
this.trigger("normal")
}
,
lM.updateData = function(t, e) {
var i = t.hostModel;
this.childAt(0).updateData(t, e);
var n = this.childAt(1)
, o = t.getItemModel(e)
, a = t.getItemVisual(e, "symbol")
, r = function(t) {
return L(t) || (t = [+t, +t]),
t
}(t.getItemVisual(e, "symbolSize"))
, s = t.getItemVisual(e, "color");
n.attr("scale", r),
n.traverse(function(t) {
t.attr({
fill: s
})
});
var l = o.getShallow("symbolOffset");
if (l) {
var u = n.position;
u[0] = Rl(l[0], r[0]),
u[1] = Rl(l[1], r[1])
}
var h = t.getItemVisual(e, "symbolRotate");
n.rotation = (h || 0) * Math.PI / 180 || 0;
var c = {};
if (c.showEffectOn = i.get("showEffectOn"),
c.rippleScale = o.get("rippleEffect.scale"),
c.brushType = o.get("rippleEffect.brushType"),
c.period = 1e3 * o.get("rippleEffect.period"),
c.effectOffset = e / t.count(),
c.z = o.getShallow("z") || 0,
c.zlevel = o.getShallow("zlevel") || 0,
c.symbolType = a,
c.color = s,
c.rippleEffectColor = o.get("rippleEffect.color"),
this.off("mouseover").off("mouseout").off("emphasis").off("normal"),
"render" === c.showEffectOn)
this._effectCfg ? this.updateEffectAnimation(c) : this.startEffectAnimation(c),
this._effectCfg = c;
else {
this._effectCfg = null,
this.stopEffectAnimation();
var d = this.childAt(0)
, f = function() {
d.highlight(),
"render" !== c.showEffectOn && this.startEffectAnimation(c)
}
, p = function() {
d.downplay(),
"render" !== c.showEffectOn && this.stopEffectAnimation()
};
this.on("mouseover", f, this).on("mouseout", p, this).on("emphasis", f, this).on("normal", p, this)
}
this._effectCfg = c
}
,
lM.fadeOut = function(t) {
this.off("mouseover").off("mouseout").off("emphasis").off("normal"),
t && t()
}
,
w(sM, Ci),
Cf({
type: "effectScatter",
init: function() {
this._symbolDraw = new im(sM)
},
render: function(t, e, i) {
var n = t.getData()
, o = this._symbolDraw;
o.updateData(n),
this.group.add(o.group)
},
updateTransform: function(t, e, i) {
var n = t.getData();
this.group.dirty();
var o = km().reset(t);
o.progress && o.progress({
start: 0,
end: n.count()
}, n),
this._symbolDraw.updateLayout(n)
},
_updateGroupTransform: function(t) {
var e = t.coordinateSystem;
e && e.getRoamTransform && (this.group.transform = fe(e.getRoamTransform()),
this.group.decomposeTransform())
},
remove: function(t, e) {
this._symbolDraw && this._symbolDraw.remove(e)
},
dispose: function() {}
}),
Sf(Lm("effectScatter", "circle")),
bf(km("effectScatter"));
var uM = "undefined" == typeof Uint32Array ? Array : Uint32Array
, hM = "undefined" == typeof Float64Array ? Array : Float64Array;
function cM(t) {
var e = t.data;
e && e[0] && e[0][0] && e[0][0].coord && (t.data = O(e, function(t) {
var e = {
coords: [t[0].coord, t[1].coord]
};
return t[0].name && (e.fromName = t[0].name),
t[1].name && (e.toName = t[1].name),
p([e, t[0], t[1]])
}))
}
var dM = sc.extend({
type: "series.lines",
dependencies: ["grid", "polar"],
visualColorAccessPath: "lineStyle.color",
init: function(t) {
t.data = t.data || [],
cM(t);
var e = this._processFlatCoordsArray(t.data);
this._flatCoords = e.flatCoords,
this._flatCoordsOffset = e.flatCoordsOffset,
e.flatCoords && (t.data = new Float32Array(e.count)),
dM.superApply(this, "init", arguments)
},
mergeOption: function(t) {
if (t.data = t.data || [],
cM(t),
t.data) {
var e = this._processFlatCoordsArray(t.data);
this._flatCoords = e.flatCoords,
this._flatCoordsOffset = e.flatCoordsOffset,
e.flatCoords && (t.data = new Float32Array(e.count))
}
dM.superApply(this, "mergeOption", arguments)
},
appendData: function(t) {
var e = this._processFlatCoordsArray(t.data);
e.flatCoords && (this._flatCoords ? (this._flatCoords = tt(this._flatCoords, e.flatCoords),
this._flatCoordsOffset = tt(this._flatCoordsOffset, e.flatCoordsOffset)) : (this._flatCoords = e.flatCoords,
this._flatCoordsOffset = e.flatCoordsOffset),
t.data = new Float32Array(e.count)),
this.getRawData().appendData(t.data)
},
_getCoordsFromItemModel: function(t) {
var e = this.getData().getItemModel(t);
return e.option instanceof Array ? e.option : e.getShallow("coords")
},
getLineCoordsCount: function(t) {
return this._flatCoordsOffset ? this._flatCoordsOffset[2 * t + 1] : this._getCoordsFromItemModel(t).length
},
getLineCoords: function(t, e) {
if (this._flatCoordsOffset) {
for (var i = this._flatCoordsOffset[2 * t], n = this._flatCoordsOffset[2 * t + 1], o = 0; o < n; o++)
e[o] = e[o] || [],
e[o][0] = this._flatCoords[i + 2 * o],
e[o][1] = this._flatCoords[i + 2 * o + 1];
return n
}
var a = this._getCoordsFromItemModel(t);
for (o = 0; o < a.length; o++)
e[o] = e[o] || [],
e[o][0] = a[o][0],
e[o][1] = a[o][1];
return a.length
},
_processFlatCoordsArray: function(t) {
var e = 0;
if (this._flatCoords && (e = this._flatCoords.length),
"number" != typeof t[0])
return {
flatCoordsOffset: null,
flatCoords: null,
count: t.length
};
for (var i = t.length, n = new uM(i), o = new hM(i), a = 0, r = 0, s = 0, l = 0; l < i; ) {
s++;
var u = t[l++];
n[r++] = a + e,
n[r++] = u;
for (var h = 0; h < u; h++) {
var c = t[l++]
, d = t[l++];
o[a++] = c,
o[a++] = d
}
}
return {
flatCoordsOffset: new Uint32Array(n.buffer,0,r),
flatCoords: o,
count: s
}
},
getInitialData: function(t, e) {
var a = new Yf(["value"],this);
return a.hasItemOption = !1,
a.initData(t.data, [], function(t, e, i, n) {
if (t instanceof Array)
return NaN;
a.hasItemOption = !0;
var o = t.value;
return null != o ? o instanceof Array ? o[n] : o : void 0
}),
a
},
formatTooltip: function(t) {
var e = this.getData().getItemModel(t)
, i = e.get("name");
if (i)
return i;
var n = e.get("fromName")
, o = e.get("toName")
, a = [];
return null != n && a.push(n),
null != o && a.push(o),
au(a.join(" > "))
},
preventIncremental: function() {
return !!this.get("effect.show")
},
getProgressive: function() {
var t = this.option.progressive;
return null == t ? this.option.large ? 1e4 : this.get("progressive") : t
},
getProgressiveThreshold: function() {
var t = this.option.progressiveThreshold;
return null == t ? this.option.large ? 2e4 : this.get("progressiveThreshold") : t
},
defaultOption: {
coordinateSystem: "geo",
zlevel: 0,
z: 2,
legendHoverLink: !0,
hoverAnimation: !0,
xAxisIndex: 0,
yAxisIndex: 0,
symbol: ["none", "none"],
symbolSize: [10, 10],
geoIndex: 0,
effect: {
show: !1,
period: 4,
constantSpeed: 0,
symbol: "circle",
symbolSize: 3,
loop: !0,
trailLength: .2
},
large: !1,
largeThreshold: 2e3,
polyline: !1,
clip: !0,
label: {
show: !1,
position: "end"
},
lineStyle: {
opacity: .5
}
}
});
function fM(t, e, i) {
Ci.call(this),
this.add(this.createLine(t, e, i)),
this._updateEffectSymbol(t, e)
}
var pM = fM.prototype;
function gM(t, e, i) {
Ci.call(this),
this._createPolyline(t, e, i)
}
pM.createLine = function(t, e, i) {
return new dw(t,e,i)
}
,
pM._updateEffectSymbol = function(t, e) {
var i = t.getItemModel(e).getModel("effect")
, n = i.get("symbolSize")
, o = i.get("symbol");
L(n) || (n = [n, n]);
var a = i.get("color") || t.getItemVisual(e, "color")
, r = this.childAt(1);
this._symbolType !== o && (this.remove(r),
(r = wg(o, -.5, -.5, 1, 1, a)).z2 = 100,
r.culling = !0,
this.add(r)),
r && (r.setStyle("shadowColor", a),
r.setStyle(i.getItemStyle(["color"])),
r.attr("scale", n),
r.setColor(a),
r.attr("scale", n),
this._symbolType = o,
this._symbolScale = n,
this._updateEffectAnimation(t, i, e))
}
,
pM._updateEffectAnimation = function(e, t, i) {
var n = this.childAt(1);
if (n) {
var o = this
, a = e.getItemLayout(i)
, r = 1e3 * t.get("period")
, s = t.get("loop")
, l = t.get("constantSpeed")
, u = W(t.get("delay"), function(t) {
return t / e.count() * r / 3
})
, h = "function" == typeof u;
if (n.ignore = !0,
this.updateAnimationPoints(n, a),
0 < l && (r = this.getLineLength(n) / l * 1e3),
r !== this._period || s !== this._loop) {
n.stopAnimation();
var c = u;
h && (c = u(i)),
0 < n.__t && (c = -r * n.__t),
n.__t = 0;
var d = n.animate("", s).when(r, {
__t: 1
}).delay(c).during(function() {
o.updateSymbolPosition(n)
});
s || d.done(function() {
o.remove(n)
}),
d.start()
}
this._period = r,
this._loop = s
}
}
,
pM.getLineLength = function(t) {
return yt(t.__p1, t.__cp1) + yt(t.__cp1, t.__p2)
}
,
pM.updateAnimationPoints = function(t, e) {
t.__p1 = e[0],
t.__p2 = e[1],
t.__cp1 = e[2] || [(e[0][0] + e[1][0]) / 2, (e[0][1] + e[1][1]) / 2]
}
,
pM.updateData = function(t, e, i) {
this.childAt(0).updateData(t, e, i),
this._updateEffectSymbol(t, e)
}
,
pM.updateSymbolPosition = function(t) {
var e = t.__p1
, i = t.__p2
, n = t.__cp1
, o = t.__t
, a = t.position
, r = [a[0], a[1]]
, s = La
, l = ka;
a[0] = s(e[0], n[0], i[0], o),
a[1] = s(e[1], n[1], i[1], o);
var u = l(e[0], n[0], i[0], o)
, h = l(e[1], n[1], i[1], o);
if (t.rotation = -Math.atan2(h, u) - Math.PI / 2,
"line" === this._symbolType || "rect" === this._symbolType || "roundRect" === this._symbolType)
if (void 0 !== t.__lastT && t.__lastT < t.__t) {
var c = 1.05 * yt(r, a);
t.attr("scale", [t.scale[0], c]),
1 === o && (a[0] = r[0] + (a[0] - r[0]) / 2,
a[1] = r[1] + (a[1] - r[1]) / 2)
} else if (1 === t.__lastT) {
c = 2 * yt(e, a);
t.attr("scale", [t.scale[0], c])
} else
t.attr("scale", this._symbolScale);
t.__lastT = t.__t,
t.ignore = !1
}
,
pM.updateLayout = function(t, e) {
this.childAt(0).updateLayout(t, e);
var i = t.getItemModel(e).getModel("effect");
this._updateEffectAnimation(t, i, e)
}
,
w(fM, Ci);
var mM = gM.prototype;
function vM(t, e, i) {
fM.call(this, t, e, i),
this._lastFrame = 0,
this._lastFramePercent = 0
}
mM._createPolyline = function(t, e, i) {
var n = t.getItemLayout(e)
, o = new ts({
shape: {
points: n
}
});
this.add(o),
this._updateCommonStl(t, e, i)
}
,
mM.updateData = function(t, e, i) {
var n = t.hostModel;
cl(this.childAt(0), {
shape: {
points: t.getItemLayout(e)
}
}, n, e),
this._updateCommonStl(t, e, i)
}
,
mM._updateCommonStl = function(t, e, i) {
var n = this.childAt(0)
, o = t.getItemModel(e)
, a = t.getItemVisual(e, "color")
, r = i && i.lineStyle
, s = i && i.hoverLineStyle;
i && !t.hasItemOption || (r = o.getModel("lineStyle").getLineStyle(),
s = o.getModel("emphasis.lineStyle").getLineStyle()),
n.useStyle(D({
strokeNoScale: !0,
fill: "none",
stroke: a
}, r)),
n.hoverStyle = s,
$s(this)
}
,
mM.updateLayout = function(t, e) {
this.childAt(0).setShape("points", t.getItemLayout(e))
}
,
w(gM, Ci);
var yM = vM.prototype;
yM.createLine = function(t, e, i) {
return new gM(t,e,i)
}
,
yM.updateAnimationPoints = function(t, e) {
this._points = e;
for (var i = [0], n = 0, o = 1; o < e.length; o++) {
var a = e[o - 1]
, r = e[o];
n += yt(a, r),
i.push(n)
}
if (0 !== n) {
for (o = 0; o < i.length; o++)
i[o] /= n;
this._offsets = i,
this._length = n
}
}
,
yM.getLineLength = function(t) {
return this._length
}
,
yM.updateSymbolPosition = function(t) {
var e = t.__t
, i = this._points
, n = this._offsets
, o = i.length;
if (n) {
var a = this._lastFrame;
if (e < this._lastFramePercent) {
for (r = Math.min(a + 1, o - 1); 0 <= r && !(n[r] <= e); r--)
;
r = Math.min(r, o - 2)
} else {
for (var r = a; r < o && !(n[r] > e); r++)
;
r = Math.min(r - 1, o - 2)
}
wt(t.position, i[r], i[r + 1], (e - n[r]) / (n[r + 1] - n[r]));
var s = i[r + 1][0] - i[r][0]
, l = i[r + 1][1] - i[r][1];
t.rotation = -Math.atan2(l, s) - Math.PI / 2,
this._lastFrame = r,
this._lastFramePercent = e,
t.ignore = !1
}
}
,
w(vM, fM);
var xM = Cs({
shape: {
polyline: !1,
curveness: 0,
segs: []
},
buildPath: function(t, e) {
var i = e.segs
, n = e.curveness;
if (e.polyline)
for (var o = 0; o < i.length; ) {
var a = i[o++];
if (0 < a) {
t.moveTo(i[o++], i[o++]);
for (var r = 1; r < a; r++)
t.lineTo(i[o++], i[o++])
}
}
else
for (o = 0; o < i.length; ) {
var s = i[o++]
, l = i[o++]
, u = i[o++]
, h = i[o++];
if (t.moveTo(s, l),
0 < n) {
var c = (s + u) / 2 - (l - h) * n
, d = (l + h) / 2 - (u - s) * n;
t.quadraticCurveTo(c, d, u, h)
} else
t.lineTo(u, h)
}
},
findDataIndex: function(t, e) {
var i = this.shape
, n = i.segs
, o = i.curveness;
if (i.polyline)
for (var a = 0, r = 0; r < n.length; ) {
var s = n[r++];
if (0 < s)
for (var l = n[r++], u = n[r++], h = 1; h < s; h++) {
if (sr(l, u, c = n[r++], d = n[r++]))
return a
}
a++
}
else
for (a = 0,
r = 0; r < n.length; ) {
l = n[r++],
u = n[r++];
var c = n[r++]
, d = n[r++];
if (0 < o) {
if (ur(l, u, (l + c) / 2 - (u - d) * o, (u + d) / 2 - (c - l) * o, c, d))
return a
} else if (sr(l, u, c, d))
return a;
a++
}
return -1
}
});
function _M() {
this.group = new Ci
}
var wM = _M.prototype;
wM.isPersistent = function() {
return !this._incremental
}
,
wM.updateData = function(t) {
this.group.removeAll();
var e = new xM({
rectHover: !0,
cursor: "default"
});
e.setShape({
segs: t.getLayout("linesPoints")
}),
this._setCommon(e, t),
this.group.add(e),
this._incremental = null
}
,
wM.incrementalPrepareUpdate = function(t) {
this.group.removeAll(),
this._clearIncremental(),
5e5 < t.count() ? (this._incremental || (this._incremental = new vs({
silent: !0
})),
this.group.add(this._incremental)) : this._incremental = null
}
,
wM.incrementalUpdate = function(t, e) {
var i = new xM;
i.setShape({
segs: e.getLayout("linesPoints")
}),
this._setCommon(i, e, !!this._incremental),
this._incremental ? this._incremental.addDisplayable(i, !0) : (i.rectHover = !0,
i.cursor = "default",
i.__startIndex = t.start,
this.group.add(i))
}
,
wM.remove = function() {
this._clearIncremental(),
this._incremental = null,
this.group.removeAll()
}
,
wM._setCommon = function(i, t, e) {
var n = t.hostModel;
i.setShape({
polyline: n.get("polyline"),
curveness: n.get("lineStyle.curveness")
}),
i.useStyle(n.getModel("lineStyle").getLineStyle()),
i.style.strokeNoScale = !0;
var o = t.getVisual("color");
o && i.setStyle("stroke", o),
i.setStyle("fill"),
e || (i.seriesIndex = n.seriesIndex,
i.on("mousemove", function(t) {
i.dataIndex = null;
var e = i.findDataIndex(t.offsetX, t.offsetY);
0 < e && (i.dataIndex = e + i.__startIndex)
}))
}
,
wM._clearIncremental = function() {
var t = this._incremental;
t && t.clearDisplaybles()
}
;
var bM = {
seriesType: "lines",
plan: vc(),
reset: function(g) {
var m = g.coordinateSystem
, v = g.get("polyline")
, y = g.pipelineContext.large;
return {
progress: function(t, e) {
var i = [];
if (y) {
var n, o = t.end - t.start;
if (v) {
for (var a = 0, r = t.start; r < t.end; r++)
a += g.getLineCoordsCount(r);
n = new Float32Array(o + 2 * a)
} else
n = new Float32Array(4 * o);
var s = 0
, l = [];
for (r = t.start; r < t.end; r++) {
var u = g.getLineCoords(r, i);
v && (n[s++] = u);
for (var h = 0; h < u; h++)
l = m.dataToPoint(i[h], !1, l),
n[s++] = l[0],
n[s++] = l[1]
}
e.setLayout("linesPoints", n)
} else
for (r = t.start; r < t.end; r++) {
var c = e.getItemModel(r)
, d = (u = g.getLineCoords(r, i),
[]);
if (v)
for (var f = 0; f < u; f++)
d.push(m.dataToPoint(i[f]));
else {
d[0] = m.dataToPoint(i[0]),
d[1] = m.dataToPoint(i[1]);
var p = c.get("lineStyle.curveness");
+p && (d[2] = [(d[0][0] + d[1][0]) / 2 - (d[0][1] - d[1][1]) * p, (d[0][1] + d[1][1]) / 2 - (d[1][0] - d[0][0]) * p])
}
e.setItemLayout(r, d)
}
}
}
}
};
function SM(t) {
return t instanceof Array || (t = [t, t]),
t
}
Cf({
type: "lines",
init: function() {},
render: function(t, e, i) {
var n = t.getData()
, o = this._updateLineDraw(n, t)
, a = t.get("zlevel")
, r = t.get("effect.trailLength")
, s = i.getZr()
, l = "svg" === s.painter.getType();
l || s.painter.getLayer(a).clear(!0),
null == this._lastZlevel || l || s.configLayer(this._lastZlevel, {
motionBlur: !1
}),
this._showEffect(t) && r && (l || s.configLayer(a, {
motionBlur: !0,
lastFrameAlpha: Math.max(Math.min(r / 10 + .9, 1), 0)
})),
o.updateData(n);
var u = t.get("clip", !0) && Sm(t.coordinateSystem, !1, t);
u ? this.group.setClipPath(u) : this.group.removeClipPath(),
this._lastZlevel = a,
this._finished = !0
},
incrementalPrepareRender: function(t, e, i) {
var n = t.getData();
this._updateLineDraw(n, t).incrementalPrepareUpdate(n),
this._clearLayer(i),
this._finished = !1
},
incrementalRender: function(t, e, i) {
this._lineDraw.incrementalUpdate(t, e.getData()),
this._finished = t.end === e.getData().count()
},
updateTransform: function(t, e, i) {
var n = t.getData()
, o = t.pipelineContext;
if (!this._finished || o.large || o.progressiveRender)
return {
update: !0
};
var a = bM.reset(t);
a.progress && a.progress({
start: 0,
end: n.count()
}, n),
this._lineDraw.updateLayout(),
this._clearLayer(i)
},
_updateLineDraw: function(t, e) {
var i = this._lineDraw
, n = this._showEffect(e)
, o = !!e.get("polyline")
, a = e.pipelineContext.large;
return i && n === this._hasEffet && o === this._isPolyline && a === this._isLargeDraw || (i && i.remove(),
i = this._lineDraw = a ? new _M : new pw(o ? n ? vM : gM : n ? fM : dw),
this._hasEffet = n,
this._isPolyline = o,
this._isLargeDraw = a,
this.group.removeAll()),
this.group.add(i.group),
i
},
_showEffect: function(t) {
return !!t.get("effect.show")
},
_clearLayer: function(t) {
var e = t.getZr();
"svg" === e.painter.getType() || null == this._lastZlevel || e.painter.getLayer(this._lastZlevel).clear(!0)
},
remove: function(t, e) {
this._lineDraw && this._lineDraw.remove(),
this._lineDraw = null,
this._clearLayer(e)
},
dispose: function() {}
});
var MM = "lineStyle.opacity".split(".")
, IM = {
seriesType: "lines",
reset: function(t, e, i) {
var n = SM(t.get("symbol"))
, o = SM(t.get("symbolSize"))
, a = t.getData();
return a.setVisual("fromSymbol", n && n[0]),
a.setVisual("toSymbol", n && n[1]),
a.setVisual("fromSymbolSize", o && o[0]),
a.setVisual("toSymbolSize", o && o[1]),
a.setVisual("opacity", t.get(MM)),
{
dataEach: a.hasItemOption ? function(t, e) {
var i = t.getItemModel(e)
, n = SM(i.getShallow("symbol", !0))
, o = SM(i.getShallow("symbolSize", !0))
, a = i.get(MM);
n[0] && t.setItemVisual(e, "fromSymbol", n[0]),
n[1] && t.setItemVisual(e, "toSymbol", n[1]),
o[0] && t.setItemVisual(e, "fromSymbolSize", o[0]),
o[1] && t.setItemVisual(e, "toSymbolSize", o[1]),
t.setItemVisual(e, "opacity", a)
}
: null
}
}
};
bf(bM),
Sf(IM),
sc.extend({
type: "series.heatmap",
getInitialData: function(t, e) {
return gp(this.getSource(), this, {
generateCoord: "value"
})
},
preventIncremental: function() {
var t = lh.get(this.get("coordinateSystem"));
if (t && t.dimensions)
return "lng" === t.dimensions[0] && "lat" === t.dimensions[1]
},
defaultOption: {
coordinateSystem: "cartesian2d",
zlevel: 0,
z: 2,
geoIndex: 0,
blurSize: 30,
pointSize: 20,
maxOpacity: 1,
minOpacity: 0
}
});
function TM() {
var t = y();
this.canvas = t,
this.blurSize = 30,
this.pointSize = 20,
this.maxOpacity = 1,
this.minOpacity = 0,
this._gradientPixels = {}
}
TM.prototype = {
update: function(t, e, i, n, o, a) {
var r = this._getBrush()
, s = this._getGradient(t, o, "inRange")
, l = this._getGradient(t, o, "outOfRange")
, u = this.pointSize + this.blurSize
, h = this.canvas
, c = h.getContext("2d")
, d = t.length;
h.width = e,
h.height = i;
for (var f = 0; f < d; ++f) {
var p = t[f]
, g = p[0]
, m = p[1]
, v = n(p[2]);
c.globalAlpha = v,
c.drawImage(r, g - u, m - u)
}
if (!h.width || !h.height)
return h;
for (var y = c.getImageData(0, 0, h.width, h.height), x = y.data, _ = 0, w = x.length, b = this.minOpacity, S = this.maxOpacity - b; _ < w; ) {
v = x[_ + 3] / 256;
var M = 4 * Math.floor(255 * v);
if (0 < v) {
var I = a(v) ? s : l;
0 < v && (v = v * S + b),
x[_++] = I[M],
x[_++] = I[1 + M],
x[_++] = I[2 + M],
x[_++] = I[3 + M] * v * 256
} else
_ += 4
}
return c.putImageData(y, 0, 0),
h
},
_getBrush: function() {
var t = this._brushCanvas || (this._brushCanvas = y())
, e = this.pointSize + this.blurSize
, i = 2 * e;
t.width = i,
t.height = i;
var n = t.getContext("2d");
return n.clearRect(0, 0, i, i),
n.shadowOffsetX = i,
n.shadowBlur = this.blurSize,
n.shadowColor = "#000",
n.beginPath(),
n.arc(-e, e, this.pointSize, 0, 2 * Math.PI, !0),
n.closePath(),
n.fill(),
t
},
_getGradient: function(t, e, i) {
for (var n = this._gradientPixels, o = n[i] || (n[i] = new Uint8ClampedArray(1024)), a = [0, 0, 0, 0], r = 0, s = 0; s < 256; s++)
e[i](s / 255, !0, a),
o[r++] = a[0],
o[r++] = a[1],
o[r++] = a[2],
o[r++] = a[3];
return o
}
},
Cf({
type: "heatmap",
render: function(i, t, e) {
var n;
t.eachComponent("visualMap", function(e) {
e.eachTargetSeries(function(t) {
t === i && (n = e)
})
}),
this.group.removeAll(),
this._incrementalDisplayable = null;
var o = i.coordinateSystem;
"cartesian2d" === o.type || "calendar" === o.type ? this._renderOnCartesianAndCalendar(i, e, 0, i.getData().count()) : function(t) {
var e = t.dimensions;
return "lng" === e[0] && "lat" === e[1]
}(o) && this._renderOnGeo(o, i, n, e)
},
incrementalPrepareRender: function(t, e, i) {
this.group.removeAll()
},
incrementalRender: function(t, e, i, n) {
e.coordinateSystem && this._renderOnCartesianAndCalendar(e, n, t.start, t.end, !0)
},
_renderOnCartesianAndCalendar: function(t, e, i, n, o) {
var a, r, s = t.coordinateSystem;
if ("cartesian2d" === s.type) {
var l = s.getAxis("x")
, u = s.getAxis("y");
a = l.getBandWidth(),
r = u.getBandWidth()
}
for (var h = this.group, c = t.getData(), d = "emphasis.itemStyle", f = "emphasis.label", p = t.getModel("itemStyle").getItemStyle(["color"]), g = t.getModel(d).getItemStyle(), m = t.getModel("label"), v = t.getModel(f), y = s.type, x = "cartesian2d" === y ? [c.mapDimension("x"), c.mapDimension("y"), c.mapDimension("value")] : [c.mapDimension("time"), c.mapDimension("value")], _ = i; _ < n; _++) {
var w;
if ("cartesian2d" === y) {
if (isNaN(c.get(x[2], _)))
continue;
var b = s.dataToPoint([c.get(x[0], _), c.get(x[1], _)]);
w = new rs({
shape: {
x: Math.floor(Math.round(b[0]) - a / 2),
y: Math.floor(Math.round(b[1]) - r / 2),
width: Math.ceil(a),
height: Math.ceil(r)
},
style: {
fill: c.getItemVisual(_, "color"),
opacity: c.getItemVisual(_, "opacity")
}
})
} else {
if (isNaN(c.get(x[1], _)))
continue;
w = new rs({
z2: 1,
shape: s.dataToRect([c.get(x[0], _)]).contentShape,
style: {
fill: c.getItemVisual(_, "color"),
opacity: c.getItemVisual(_, "opacity")
}
})
}
var S = c.getItemModel(_);
c.hasItemOption && (p = S.getModel("itemStyle").getItemStyle(["color"]),
g = S.getModel(d).getItemStyle(),
m = S.getModel("label"),
v = S.getModel(f));
var M = t.getRawValue(_)
, I = "-";
M && null != M[2] && (I = M[2]),
el(p, g, m, v, {
labelFetcher: t,
labelDataIndex: _,
defaultText: I,
isRectText: !0
}),
w.setStyle(p),
$s(w, c.hasItemOption ? g : P({}, g)),
(w.incremental = o) && (w.useHoverLayer = !0),
h.add(w),
c.setItemGraphicEl(_, w)
}
},
_renderOnGeo: function(o, t, e, i) {
var n = e.targetVisuals.inRange
, a = e.targetVisuals.outOfRange
, r = t.getData()
, s = this._hmLayer || this._hmLayer || new TM;
s.blurSize = t.get("blurSize"),
s.pointSize = t.get("pointSize"),
s.minOpacity = t.get("minOpacity"),
s.maxOpacity = t.get("maxOpacity");
var l = o.getViewRect().clone()
, u = o.getRoamTransform();
l.applyTransform(u);
var h = Math.max(l.x, 0)
, c = Math.max(l.y, 0)
, d = Math.min(l.width + l.x, i.getWidth())
, f = Math.min(l.height + l.y, i.getHeight())
, p = d - h
, g = f - c
, m = [r.mapDimension("lng"), r.mapDimension("lat"), r.mapDimension("value")]
, v = r.mapArray(m, function(t, e, i) {
var n = o.dataToPoint([t, e]);
return n[0] -= h,
n[1] -= c,
n.push(i),
n
})
, y = e.getExtent()
, x = "visualMap.continuous" === e.type ? function(t, e) {
var i = t[1] - t[0];
return e = [(e[0] - t[0]) / i, (e[1] - t[0]) / i],
function(t) {
return t >= e[0] && t <= e[1]
}
}(y, e.option.range) : function(e, n, o) {
var i = e[1] - e[0]
, a = (n = O(n, function(t) {
return {
interval: [(t.interval[0] - e[0]) / i, (t.interval[1] - e[0]) / i]
}
})).length
, r = 0;
return function(t) {
for (var e = r; e < a; e++) {
if ((i = n[e].interval)[0] <= t && t <= i[1]) {
r = e;
break
}
}
if (e === a)
for (e = r - 1; 0 <= e; e--) {
var i;
if ((i = n[e].interval)[0] <= t && t <= i[1]) {
r = e;
break
}
}
return 0 <= e && e < a && o[e]
}
}(y, e.getPieceList(), e.option.selected);
s.update(v, p, g, n.color.getNormalizer(), {
inRange: n.color.getColorMapper(),
outOfRange: a.color.getColorMapper()
}, x);
var _ = new Qn({
style: {
width: p,
height: g,
x: h,
y: c,
image: s.canvas
},
silent: !0
});
this.group.add(_)
},
dispose: function() {}
});
var AM = Tv.extend({
type: "series.pictorialBar",
dependencies: ["grid"],
defaultOption: {
symbol: "circle",
symbolSize: null,
symbolRotate: null,
symbolPosition: null,
symbolOffset: null,
symbolMargin: null,
symbolRepeat: !1,
symbolRepeatDirection: "end",
symbolClip: !1,
symbolBoundingData: null,
symbolPatternSize: 400,
barGap: "-100%",
progressive: 0,
hoverAnimation: !1
},
getInitialData: function(t) {
return t.stack = null,
AM.superApply(this, "getInitialData", arguments)
}
})
, DM = ["itemStyle", "borderWidth"]
, CM = [{
xy: "x",
wh: "width",
index: 0,
posDesc: ["left", "right"]
}, {
xy: "y",
wh: "height",
index: 1,
posDesc: ["top", "bottom"]
}]
, LM = new Yr;
Cf({
type: "pictorialBar",
render: function(t, e, i) {
var r = this.group
, s = t.getData()
, l = this._data
, n = t.coordinateSystem
, o = !!n.getBaseAxis().isHorizontal()
, a = n.grid.getRect()
, u = {
ecSize: {
width: i.getWidth(),
height: i.getHeight()
},
seriesModel: t,
coordSys: n,
coordSysExtent: [[a.x, a.x + a.width], [a.y, a.y + a.height]],
isHorizontal: o,
valueDim: CM[+o],
categoryDim: CM[1 - o]
};
return s.diff(l).add(function(t) {
if (s.hasValue(t)) {
var e = BM(s, t)
, i = kM(s, t, e, u)
, n = WM(s, u, i);
s.setItemGraphicEl(t, n),
r.add(n),
YM(n, u, i)
}
}).update(function(t, e) {
var i = l.getItemGraphicEl(e);
if (s.hasValue(t)) {
var n = BM(s, t)
, o = kM(s, t, n, u)
, a = ZM(s, o);
i && a !== i.__pictorialShapeStr && (r.remove(i),
s.setItemGraphicEl(t, null),
i = null),
i ? function(t, e, i) {
var n = i.animationModel
, o = i.dataIndex;
cl(t.__pictorialBundle, {
position: i.bundlePosition.slice()
}, n, o),
i.symbolRepeat ? OM(t, e, i, !0) : EM(t, e, i, !0);
RM(t, i, !0),
zM(t, e, i, !0)
}(i, u, o) : i = WM(s, u, o, !0),
s.setItemGraphicEl(t, i),
i.__pictorialSymbolMeta = o,
r.add(i),
YM(i, u, o)
} else
r.remove(i)
}).remove(function(t) {
var e = l.getItemGraphicEl(t);
e && HM(l, t, e.__pictorialSymbolMeta.animationModel, e)
}).execute(),
this._data = s,
this.group
},
dispose: et,
remove: function(e, t) {
var i = this.group
, n = this._data;
e.get("animation") ? n && n.eachItemGraphicEl(function(t) {
HM(n, t.dataIndex, e, t)
}) : i.removeAll()
}
});
function kM(t, e, i, n) {
var o = t.getItemLayout(e)
, a = i.get("symbolRepeat")
, r = i.get("symbolClip")
, s = i.get("symbolPosition") || "start"
, l = (i.get("symbolRotate") || 0) * Math.PI / 180 || 0
, u = i.get("symbolPatternSize") || 2
, h = i.isAnimationEnabled()
, c = {
dataIndex: e,
layout: o,
itemModel: i,
symbolType: t.getItemVisual(e, "symbol") || "circle",
color: t.getItemVisual(e, "color"),
symbolClip: r,
symbolRepeat: a,
symbolRepeatDirection: i.get("symbolRepeatDirection"),
symbolPatternSize: u,
rotation: l,
animationModel: h ? i : null,
hoverAnimation: h && i.get("hoverAnimation"),
z2: i.getShallow("z", !0) || 0
};
!function(t, e, i, n, o) {
var a, r = n.valueDim, s = t.get("symbolBoundingData"), l = n.coordSys.getOtherAxis(n.coordSys.getBaseAxis()), u = l.toGlobalCoord(l.dataToCoord(0)), h = 1 - +(i[r.wh] <= 0);
if (L(s)) {
var c = [PM(l, s[0]) - u, PM(l, s[1]) - u];
c[1] < c[0] && c.reverse(),
a = c[h]
} else
a = null != s ? PM(l, s) - u : e ? n.coordSysExtent[r.index][h] - u : i[r.wh];
o.boundingLength = a,
e && (o.repeatCutLength = i[r.wh]);
o.pxSign = 0 < a ? 1 : a < 0 ? -1 : 0
}(i, a, o, n, c),
function(t, e, i, n, o, a, r, s, l, u) {
var h = l.valueDim
, c = l.categoryDim
, d = Math.abs(i[c.wh])
, f = t.getItemVisual(e, "symbolSize");
f = L(f) ? f.slice() : (null == f && (f = "100%"),
[f, f]);
f[c.index] = Rl(f[c.index], d),
f[h.index] = Rl(f[h.index], n ? d : Math.abs(a)),
u.symbolSize = f,
(u.symbolScale = [f[0] / s, f[1] / s])[h.index] *= (l.isHorizontal ? -1 : 1) * r
}(t, e, o, a, 0, c.boundingLength, c.pxSign, u, n, c),
function(t, e, i, n, o) {
var a = t.get(DM) || 0;
a && (LM.attr({
scale: e.slice(),
rotation: i
}),
LM.updateTransform(),
a /= LM.getLineScale(),
a *= e[n.valueDim.index]);
o.valueLineWidth = a
}(i, c.symbolScale, l, n, c);
var d = c.symbolSize
, f = i.get("symbolOffset");
return L(f) && (f = [Rl(f[0], d[0]), Rl(f[1], d[1])]),
function(t, e, i, n, o, a, r, s, l, u, h, c) {
var d = h.categoryDim
, f = h.valueDim
, p = c.pxSign
, g = Math.max(e[f.index] + s, 0)
, m = g;
if (n) {
var v = Math.abs(l)
, y = W(t.get("symbolMargin"), "15%") + ""
, x = !1;
y.lastIndexOf("!") === y.length - 1 && (x = !0,
y = y.slice(0, y.length - 1)),
y = Rl(y, e[f.index]);
var _ = Math.max(g + 2 * y, 0)
, w = x ? 0 : 2 * y
, b = Jl(n)
, S = b ? n : jM((v + w) / _);
_ = g + 2 * (y = (v - S * g) / 2 / (x ? S : S - 1)),
w = x ? 0 : 2 * y,
b || "fixed" === n || (S = u ? jM((Math.abs(u) + w) / _) : 0),
m = S * _ - w,
c.repeatTimes = S,
c.symbolMargin = y
}
var M = p * (m / 2)
, I = c.pathPosition = [];
I[d.index] = i[d.wh] / 2,
I[f.index] = "start" === r ? M : "end" === r ? l - M : l / 2,
a && (I[0] += a[0],
I[1] += a[1]);
var T = c.bundlePosition = [];
T[d.index] = i[d.xy],
T[f.index] = i[f.xy];
var A = c.barRectShape = P({}, i);
A[f.wh] = p * Math.max(Math.abs(i[f.wh]), Math.abs(I[f.index] + M)),
A[d.wh] = i[d.wh];
var D = c.clipShape = {};
D[d.xy] = -i[d.xy],
D[d.wh] = h.ecSize[d.wh],
D[f.xy] = 0,
D[f.wh] = i[f.wh]
}(i, d, o, a, 0, f, s, c.valueLineWidth, c.boundingLength, c.repeatCutLength, n, c),
c
}
function PM(t, e) {
return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))
}
function NM(t) {
var e = t.symbolPatternSize
, i = wg(t.symbolType, -e / 2, -e / 2, e, e, t.color);
return i.attr({
culling: !0
}),
"image" !== i.type && i.setStyle({
strokeNoScale: !0
}),
i
}
function OM(t, e, o, i) {
var n = t.__pictorialBundle
, a = o.symbolSize
, r = o.valueLineWidth
, s = o.pathPosition
, l = e.valueDim
, u = o.repeatTimes || 0
, h = 0
, c = a[e.valueDim.index] + r + 2 * o.symbolMargin;
for (UM(t, function(t) {
t.__pictorialAnimationIndex = h,
t.__pictorialRepeatTimes = u,
h < u ? XM(t, null, p(h), o, i) : XM(t, null, {
scale: [0, 0]
}, o, i, function() {
n.remove(t)
}),
FM(t, o),
h++
}); h < u; h++) {
var d = NM(o);
d.__pictorialAnimationIndex = h,
d.__pictorialRepeatTimes = u,
n.add(d);
var f = p(h);
XM(d, {
position: f.position,
scale: [0, 0]
}, {
scale: f.scale,
rotation: f.rotation
}, o, i),
d.on("mouseover", g).on("mouseout", m),
FM(d, o)
}
function p(t) {
var e = s.slice()
, i = o.pxSign
, n = t;
return ("start" === o.symbolRepeatDirection ? 0 < i : i < 0) && (n = u - 1 - t),
e[l.index] = c * (n - u / 2 + .5) + s[l.index],
{
position: e,
scale: o.symbolScale.slice(),
rotation: o.rotation
}
}
function g() {
UM(t, function(t) {
t.trigger("emphasis")
})
}
function m() {
UM(t, function(t) {
t.trigger("normal")
})
}
}
function EM(t, e, i, n) {
var o = t.__pictorialBundle
, a = t.__pictorialMainPath;
a ? XM(a, null, {
position: i.pathPosition.slice(),
scale: i.symbolScale.slice(),
rotation: i.rotation
}, i, n) : (a = t.__pictorialMainPath = NM(i),
o.add(a),
XM(a, {
position: i.pathPosition.slice(),
scale: [0, 0],
rotation: i.rotation
}, {
scale: i.symbolScale.slice()
}, i, n),
a.on("mouseover", function() {
this.trigger("emphasis")
}).on("mouseout", function() {
this.trigger("normal")
})),
FM(a, i)
}
function RM(t, e, i) {
var n = P({}, e.barRectShape)
, o = t.__pictorialBarRect;
o ? XM(o, null, {
shape: n
}, e, i) : (o = t.__pictorialBarRect = new rs({
z2: 2,
shape: n,
silent: !0,
style: {
stroke: "transparent",
fill: "transparent",
lineWidth: 0
}
}),
t.add(o))
}
function zM(t, e, i, n) {
if (i.symbolClip) {
var o = t.__pictorialClipPath
, a = P({}, i.clipShape)
, r = e.valueDim
, s = i.animationModel
, l = i.dataIndex;
if (o)
cl(o, {
shape: a
}, s, l);
else {
a[r.wh] = 0,
o = new rs({
shape: a
}),
t.__pictorialBundle.setClipPath(o),
t.__pictorialClipPath = o;
var u = {};
u[r.wh] = i.clipShape[r.wh],
bl[n ? "updateProps" : "initProps"](o, {
shape: u
}, s, l)
}
}
}
function BM(t, e) {
var i = t.getItemModel(e);
return i.getAnimationDelayParams = VM,
i.isAnimationEnabled = GM,
i
}
function VM(t) {
return {
index: t.__pictorialAnimationIndex,
count: t.__pictorialRepeatTimes
}
}
function GM() {
return this.parentModel.isAnimationEnabled() && !!this.getShallow("animation")
}
function FM(t, e) {
t.off("emphasis").off("normal");
var i = e.symbolScale.slice();
e.hoverAnimation && t.on("emphasis", function() {
this.animateTo({
scale: [1.1 * i[0], 1.1 * i[1]]
}, 400, "elasticOut")
}).on("normal", function() {
this.animateTo({
scale: i.slice()
}, 400, "elasticOut")
})
}
function WM(t, e, i, n) {
var o = new Ci
, a = new Ci;
return o.add(a),
(o.__pictorialBundle = a).attr("position", i.bundlePosition.slice()),
i.symbolRepeat ? OM(o, e, i) : EM(o, 0, i),
RM(o, i, n),
zM(o, e, i, n),
o.__pictorialShapeStr = ZM(t, i),
o.__pictorialSymbolMeta = i,
o
}
function HM(t, e, i, n) {
var o = n.__pictorialBarRect;
o && (o.style.text = null);
var a = [];
UM(n, function(t) {
a.push(t)
}),
n.__pictorialMainPath && a.push(n.__pictorialMainPath),
n.__pictorialClipPath && (i = null),
E(a, function(t) {
cl(t, {
scale: [0, 0]
}, i, e, function() {
n.parent && n.parent.remove(n)
})
}),
t.setItemGraphicEl(e, null)
}
function ZM(t, e) {
return [t.getItemVisual(e.dataIndex, "symbol") || "none", !!e.symbolRepeat, !!e.symbolClip].join(":")
}
function UM(e, i, n) {
E(e.__pictorialBundle.children(), function(t) {
t !== e.__pictorialBarRect && i.call(n, t)
})
}
function XM(t, e, i, n, o, a) {
e && t.attr(e),
n.symbolClip && !o ? i && t.attr(i) : i && bl[o ? "updateProps" : "initProps"](t, i, n.animationModel, n.dataIndex, a)
}
function YM(t, e, i) {
var n = i.color
, o = i.dataIndex
, a = i.itemModel
, r = a.getModel("itemStyle").getItemStyle(["color"])
, s = a.getModel("emphasis.itemStyle").getItemStyle()
, l = a.getShallow("cursor");
UM(t, function(t) {
t.setColor(n),
t.setStyle(D({
fill: n,
opacity: i.opacity
}, r)),
$s(t, s),
l && (t.cursor = l),
t.z2 = i.z2
});
var u = {}
, h = (e.valueDim.posDesc[+(0 < i.boundingLength)],
t.__pictorialBarRect);
Av(h.style, u, a, n, e.seriesModel, o),
$s(h, u)
}
function jM(t) {
var e = Math.round(t);
return Math.abs(t - e) < 1e-4 ? e : Math.ceil(t)
}
bf(T(zp, "pictorialBar")),
Sf(Lm("pictorialBar", "roundRect"));
function qM(t, e, i, n, o) {
Gg.call(this, t, e, i),
this.type = n || "value",
this.position = o || "bottom",
this.orient = null
}
function KM(t, e, i) {
this.dimension = "single",
this.dimensions = ["single"],
this._axis = null,
this._rect,
this._init(t, e, i),
this.model = t
}
function $M(t, e) {
e = e || {};
var i = t.coordinateSystem
, n = t.axis
, o = {}
, a = n.position
, r = n.orient
, s = i.getRect()
, l = [s.x, s.x + s.width, s.y, s.y + s.height]
, u = {
horizontal: {
top: l[2],
bottom: l[3]
},
vertical: {
left: l[0],
right: l[1]
}
};
o.position = ["vertical" === r ? u.vertical[a] : l[0], "horizontal" === r ? u.horizontal[a] : l[3]];
o.rotation = Math.PI / 2 * {
horizontal: 0,
vertical: 1
}[r];
o.labelDirection = o.tickDirection = o.nameDirection = {
top: -1,
bottom: 1,
right: 1,
left: -1
}[a],
t.get("axisTick.inside") && (o.tickDirection = -o.tickDirection),
W(e.labelInside, t.get("axisLabel.inside")) && (o.labelDirection = -o.labelDirection);
var h = e.rotate;
return null == h && (h = t.get("axisLabel.rotate")),
o.labelRotation = "top" === a ? -h : h,
o.z2 = 1,
o
}
qM.prototype = {
constructor: qM,
model: null,
isHorizontal: function() {
var t = this.position;
return "top" === t || "bottom" === t
},
pointToData: function(t, e) {
return this.coordinateSystem.pointToData(t, e)[0]
},
toGlobalCoord: null,
toLocalCoord: null
},
w(qM, Gg),
lh.register("single", {
create: function(n, o) {
var a = [];
return n.eachComponent("singleAxis", function(t, e) {
var i = new KM(t,n,o);
i.name = "single_" + e,
i.resize(t, o),
t.coordinateSystem = i,
a.push(i)
}),
n.eachSeries(function(t) {
if ("singleAxis" === t.get("coordinateSystem")) {
var e = n.queryComponents({
mainType: "singleAxis",
index: t.get("singleAxisIndex"),
id: t.get("singleAxisId")
})[0];
t.coordinateSystem = e && e.coordinateSystem
}
}),
a
},
dimensions: (KM.prototype = {
type: "singleAxis",
axisPointerEnabled: !0,
constructor: KM,
_init: function(t, e, i) {
var n = this.dimension
, o = new qM(n,sg(t),[0, 0],t.get("type"),t.get("position"))
, a = "category" === o.type;
o.onBand = a && t.get("boundaryGap"),
o.inverse = t.get("inverse"),
o.orient = t.get("orient"),
(t.axis = o).model = t,
(o.coordinateSystem = this)._axis = o
},
update: function(t, e) {
t.eachSeries(function(t) {
if (t.coordinateSystem === this) {
var e = t.getData();
E(e.mapDimension(this.dimension, !0), function(t) {
this._axis.scale.unionExtentFromData(e, t)
}, this),
rg(this._axis.scale, this._axis.model)
}
}, this)
},
resize: function(t, e) {
this._rect = bu({
left: t.get("left"),
top: t.get("top"),
right: t.get("right"),
bottom: t.get("bottom"),
width: t.get("width"),
height: t.get("height")
}, {
width: e.getWidth(),
height: e.getHeight()
}),
this._adjustAxis()
},
getRect: function() {
return this._rect
},
_adjustAxis: function() {
var t = this._rect
, e = this._axis
, i = e.isHorizontal()
, n = i ? [0, t.width] : [0, t.height]
, o = e.reverse ? 1 : 0;
e.setExtent(n[o], n[1 - o]),
this._updateAxisTransform(e, i ? t.x : t.y)
},
_updateAxisTransform: function(t, e) {
var i = t.getExtent()
, n = i[0] + i[1]
, o = t.isHorizontal();
t.toGlobalCoord = o ? function(t) {
return t + e
}
: function(t) {
return n - t + e
}
,
t.toLocalCoord = o ? function(t) {
return t - e
}
: function(t) {
return n - t + e
}
},
getAxis: function() {
return this._axis
},
getBaseAxis: function() {
return this._axis
},
getAxes: function() {
return [this._axis]
},
getTooltipAxes: function() {
return {
baseAxes: [this.getAxis()]
}
},
containPoint: function(t) {
var e = this.getRect()
, i = this.getAxis();
return "horizontal" === i.orient ? i.contain(i.toLocalCoord(t[0])) && t[1] >= e.y && t[1] <= e.y + e.height : i.contain(i.toLocalCoord(t[1])) && t[0] >= e.y && t[0] <= e.y + e.height
},
pointToData: function(t) {
var e = this.getAxis();
return [e.coordToData(e.toLocalCoord(t["horizontal" === e.orient ? 0 : 1]))]
},
dataToPoint: function(t) {
var e = this.getAxis()
, i = this.getRect()
, n = []
, o = "horizontal" === e.orient ? 0 : 1;
return t instanceof Array && (t = t[0]),
n[o] = e.toGlobalCoord(e.dataToCoord(+t)),
n[1 - o] = 0 == o ? i.y + i.height / 2 : i.x + i.width / 2,
n
}
}).dimensions
});
var JM = ["axisLine", "axisTickLabel", "axisName"]
, QM = ["splitArea", "splitLine"]
, tI = mv.extend({
type: "singleAxis",
axisPointerClass: "SingleAxisPointer",
render: function(e, t, i, n) {
var o = this.group;
o.removeAll();
var a = this._axisGroup;
this._axisGroup = new Ci;
var r = $M(e)
, s = new Qm(e,r);
E(JM, s.add, s),
o.add(this._axisGroup),
o.add(s.getGroup()),
E(QM, function(t) {
e.get(t + ".show") && this["_" + t](e)
}, this),
ml(a, this._axisGroup, e),
tI.superCall(this, "render", e, t, i, n)
},
remove: function() {
bv(this)
},
_splitLine: function(t) {
var e = t.axis;
if (!e.scale.isBlank()) {
var i = t.getModel("splitLine")
, n = i.getModel("lineStyle")
, o = n.get("width")
, a = n.get("color");
a = a instanceof Array ? a : [a];
for (var r = t.coordinateSystem.getRect(), s = e.isHorizontal(), l = [], u = 0, h = e.getTicksCoords({
tickModel: i
}), c = [], d = [], f = 0; f < h.length; ++f) {
var p = e.toGlobalCoord(h[f].coord);
s ? (c[0] = p,
c[1] = r.y,
d[0] = p,
d[1] = r.y + r.height) : (c[0] = r.x,
c[1] = p,
d[0] = r.x + r.width,
d[1] = p);
var g = u++ % a.length;
l[g] = l[g] || [],
l[g].push(new ls({
subPixelOptimize: !0,
shape: {
x1: c[0],
y1: c[1],
x2: d[0],
y2: d[1]
},
style: {
lineWidth: o
},
silent: !0
}))
}
for (f = 0; f < l.length; ++f)
this.group.add(Es(l[f], {
style: {
stroke: a[f % a.length],
lineDash: n.getLineDash(o),
lineWidth: o
},
silent: !0
}))
}
},
_splitArea: function(t) {
wv(this, this._axisGroup, t, t)
}
})
, eI = ku.extend({
type: "singleAxis",
layoutMode: "box",
axis: null,
coordinateSystem: null,
getCoordSysModel: function() {
return this
}
});
m(eI.prototype, dg),
Gm("single", eI, function(t, e) {
return e.type || (e.data ? "category" : "value")
}, {
left: "5%",
top: "5%",
right: "5%",
bottom: "5%",
type: "value",
position: "bottom",
orient: "horizontal",
axisLine: {
show: !0,
lineStyle: {
width: 1,
type: "solid"
}
},
tooltip: {
show: !0
},
axisTick: {
show: !0,
length: 6,
lineStyle: {
width: 1
}
},
axisLabel: {
show: !0,
interval: "auto"
},
splitLine: {
show: !0,
lineStyle: {
type: "dashed",
opacity: .2
}
}
});
function iI(t, e) {
var i, n = [], o = t.seriesIndex;
if (null == o || !(i = e.getSeriesByIndex(o)))
return {
point: []
};
var a = i.getData()
, r = Yo(a, t);
if (null == r || r < 0 || L(r))
return {
point: []
};
var s = a.getItemGraphicEl(r)
, l = i.coordinateSystem;
if (i.getTooltipPosition)
n = i.getTooltipPosition(r) || [];
else if (l && l.dataToPoint)
n = l.dataToPoint(a.getValues(O(l.dimensions, function(t) {
return a.mapDimension(t)
}), r, !0)) || [];
else if (s) {
var u = s.getBoundingRect().clone();
u.applyTransform(s.transform),
n = [u.x + u.width / 2, u.y + u.height / 2]
}
return {
point: n,
el: s
}
}
var nI = E
, oI = T
, aI = jo();
function rI(t, e, i, n, o) {
var a = t.axis;
if (!a.scale.isBlank() && a.containData(e))
if (t.involveSeries) {
var r = function(l, t) {
var u = t.axis
, h = u.dim
, c = l
, d = []
, f = Number.MAX_VALUE
, p = -1;
return nI(t.seriesModels, function(e, t) {
var i, n, o = e.getData().mapDimension(h, !0);
if (e.getAxisTooltipData) {
var a = e.getAxisTooltipData(o, l, u);
n = a.dataIndices,
i = a.nestestValue
} else {
if (!(n = e.getData().indicesOfNearest(o[0], l, "category" === u.type ? .5 : null)).length)
return;
i = e.getData().get(o[0], n[0])
}
if (null != i && isFinite(i)) {
var r = l - i
, s = Math.abs(r);
s <= f && ((s < f || 0 <= r && p < 0) && (f = s,
p = r,
c = i,
d.length = 0),
nI(n, function(t) {
d.push({
seriesIndex: e.seriesIndex,
dataIndexInside: t,
dataIndex: e.getData().getRawIndex(t)
})
}))
}
}),
{
payloadBatch: d,
snapToValue: c
}
}(e, t)
, s = r.payloadBatch
, l = r.snapToValue;
s[0] && null == o.seriesIndex && P(o, s[0]),
!n && t.snap && a.containData(l) && null != l && (e = l),
i.showPointer(t, e, s, o),
i.showTooltip(t, r, l)
} else
i.showPointer(t, e)
}
function sI(t, e, i, n) {
t[e.key] = {
value: i,
payloadBatch: n
}
}
function lI(t, e, i, n) {
var o = i.payloadBatch
, a = e.axis
, r = a.model
, s = e.axisPointerModel;
if (e.triggerTooltip && o.length) {
var l = e.coordSys.model
, u = gv(l)
, h = t.map[u];
h || (h = t.map[u] = {
coordSysId: l.id,
coordSysIndex: l.componentIndex,
coordSysType: l.type,
coordSysMainType: l.mainType,
dataByAxis: []
},
t.list.push(h)),
h.dataByAxis.push({
axisDim: a.dim,
axisIndex: r.componentIndex,
axisType: r.type,
axisId: r.id,
value: n,
valueLabelOpt: {
precision: s.get("label.precision"),
formatter: s.get("label.formatter")
},
seriesDataIndices: o.slice()
})
}
}
function uI(t) {
var e = t.axis.model
, i = {}
, n = i.axisDim = t.axis.dim;
return i.axisIndex = i[n + "AxisIndex"] = e.componentIndex,
i.axisName = i[n + "AxisName"] = e.name,
i.axisId = i[n + "AxisId"] = e.id,
i
}
function hI(t) {
return !t || null == t[0] || isNaN(t[0]) || null == t[1] || isNaN(t[1])
}
Tf({
type: "axisPointer",
coordSysAxesInfo: null,
defaultOption: {
show: "auto",
triggerOn: null,
zlevel: 0,
z: 50,
type: "line",
snap: !1,
triggerTooltip: !0,
value: null,
status: null,
link: [],
animation: null,
animationDurationUpdate: 200,
lineStyle: {
color: "#aaa",
width: 1,
type: "solid"
},
shadowStyle: {
color: "rgba(150,150,150,0.3)"
},
label: {
show: !0,
formatter: null,
precision: "auto",
margin: 3,
color: "#fff",
padding: [5, 7, 5, 7],
backgroundColor: "auto",
borderColor: null,
borderWidth: 0,
shadowBlur: 3,
shadowColor: "#aaa"
},
handle: {
show: !1,
icon: "M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",
size: 45,
margin: 50,
color: "#333",
shadowBlur: 3,
shadowColor: "#aaa",
shadowOffsetX: 0,
shadowOffsetY: 2,
throttle: 40
}
}
});
var cI = jo()
, dI = E;
function fI(t, e, i) {
if (!v.node) {
var n = e.getZr();
cI(n).records || (cI(n).records = {}),
function(o, a) {
if (cI(o).initialized)
return;
function t(t, n) {
o.on(t, function(e) {
var i = function(i) {
var n = {
showTip: [],
hideTip: []
}
, o = function(t) {
var e = n[t.type];
e ? e.push(t) : (t.dispatchAction = o,
i.dispatchAction(t))
};
return {
dispatchAction: o,
pendings: n
}
}(a);
dI(cI(o).records, function(t) {
t && n(t, e, i.dispatchAction)
}),
function(t, e) {
var i, n = t.showTip.length, o = t.hideTip.length;
n ? i = t.showTip[n - 1] : o && (i = t.hideTip[o - 1]);
i && (i.dispatchAction = null,
e.dispatchAction(i))
}(i.pendings, a)
})
}
cI(o).initialized = !0,
t("click", T(gI, "click")),
t("mousemove", T(gI, "mousemove")),
t("globalout", pI)
}(n, e),
(cI(n).records[t] || (cI(n).records[t] = {})).handler = i
}
}
function pI(t, e, i) {
t.handler("leave", null, i)
}
function gI(t, e, i, n) {
e.handler(t, i, n)
}
function mI(t, e) {
if (!v.node) {
var i = e.getZr();
(cI(i).records || {})[t] && (cI(i).records[t] = null)
}
}
var vI = Af({
type: "axisPointer",
render: function(t, e, i) {
var n = e.getComponent("tooltip")
, o = t.get("triggerOn") || n && n.get("triggerOn") || "mousemove|click";
fI("axisPointer", i, function(t, e, i) {
"none" !== o && ("leave" === t || 0 <= o.indexOf(t)) && i({
type: "updateAxisPointer",
currTrigger: t,
x: e && e.offsetX,
y: e && e.offsetY
})
})
},
remove: function(t, e) {
mI(e.getZr(), "axisPointer"),
vI.superApply(this._model, "remove", arguments)
},
dispose: function(t, e) {
mI("axisPointer", e),
vI.superApply(this._model, "dispose", arguments)
}
})
, yI = jo()
, xI = k
, _I = A;
function wI() {}
function bI(t, e, i, n) {
!function i(n, t) {
{
if (z(n) && z(t)) {
var o = !0;
return E(t, function(t, e) {
o = o && i(n[e], t)
}),
!!o
}
return n === t
}
}(yI(i).lastProp, n) && (yI(i).lastProp = n,
e ? cl(i, n, t) : (i.stopAnimation(),
i.attr(n)))
}
function SI(t, e) {
t[e.get("label.show") ? "show" : "hide"]()
}
function MI(t) {
return {
position: t.position.slice(),
rotation: t.rotation || 0
}
}
function II(t, e, i) {
var n = e.get("z")
, o = e.get("zlevel");
t && t.traverse(function(t) {
"group" !== t.type && (null != n && (t.z = n),
null != o && (t.zlevel = o),
t.silent = i)
})
}
function TI(t) {
var e, i = t.get("type"), n = t.getModel(i + "Style");
return "line" === i ? (e = n.getLineStyle()).fill = null : "shadow" === i && ((e = n.getAreaStyle()).stroke = null),
e
}
function AI(t, e, i, n, o) {
var a = DI(i.get("value"), e.axis, e.ecModel, i.get("seriesDataIndices"), {
precision: i.get("label.precision"),
formatter: i.get("label.formatter")
})
, r = i.getModel("label")
, s = iu(r.get("padding") || 0)
, l = r.getFont()
, u = gn(a, l)
, h = o.position
, c = u.width + s[1] + s[3]
, d = u.height + s[0] + s[2]
, f = o.align;
"right" === f && (h[0] -= c),
"center" === f && (h[0] -= c / 2);
var p = o.verticalAlign;
"bottom" === p && (h[1] -= d),
"middle" === p && (h[1] -= d / 2),
function(t, e, i, n) {
var o = n.getWidth()
, a = n.getHeight();
t[0] = Math.min(t[0] + e, o) - e,
t[1] = Math.min(t[1] + i, a) - i,
t[0] = Math.max(t[0], 0),
t[1] = Math.max(t[1], 0)
}(h, c, d, n);
var g = r.get("backgroundColor");
g && "auto" !== g || (g = e.get("axisLine.lineStyle.color")),
t.label = {
shape: {
x: 0,
y: 0,
width: c,
height: d,
r: r.get("borderRadius")
},
position: h.slice(),
style: {
text: a,
textFont: l,
textFill: r.getTextColor(),
textPosition: "inside",
textPadding: s,
fill: g,
stroke: r.get("borderColor") || "transparent",
lineWidth: r.get("borderWidth") || 0,
shadowBlur: r.get("shadowBlur"),
shadowColor: r.get("shadowColor"),
shadowOffsetX: r.get("shadowOffsetX"),
shadowOffsetY: r.get("shadowOffsetY")
},
z2: 10
}
}
function DI(t, e, o, i, n) {
t = e.scale.parse(t);
var a = e.scale.getLabel(t, {
precision: n.precision
})
, r = n.formatter;
if (r) {
var s = {
value: ug(e, t),
axisDimension: e.dim,
axisIndex: e.index,
seriesData: []
};
E(i, function(t) {
var e = o.getSeriesByIndex(t.seriesIndex)
, i = t.dataIndexInside
, n = e && e.getDataParams(i);
n && s.seriesData.push(n)
}),
R(r) ? a = r.replace("{value}", a) : C(r) && (a = r(s))
}
return a
}
function CI(t, e, i) {
var n = ae();
return he(n, n, i.rotation),
ue(n, n, i.position),
pl([t.dataToCoord(e), (i.labelOffset || 0) + (i.labelDirection || 1) * (i.labelMargin || 0)], n)
}
function LI(t, e, i, n, o, a) {
var r = Qm.innerTextLayout(i.rotation, 0, i.labelDirection);
i.labelMargin = o.get("label.margin"),
AI(e, n, o, a, {
position: CI(n.axis, t, i),
align: r.textAlign,
verticalAlign: r.textVerticalAlign
})
}
function kI(t, e, i) {
return {
x1: t[i = i || 0],
y1: t[1 - i],
x2: e[i],
y2: e[1 - i]
}
}
function PI(t, e, i) {
return {
x: t[i = i || 0],
y: t[1 - i],
width: e[i],
height: e[1 - i]
}
}
function NI(t, e, i, n, o, a) {
return {
cx: t,
cy: e,
r0: i,
r: n,
startAngle: o,
endAngle: a,
clockwise: !0
}
}
oa((wI.prototype = {
_group: null,
_lastGraphicKey: null,
_handle: null,
_dragging: !1,
_lastValue: null,
_lastStatus: null,
_payloadInfo: null,
animationThreshold: 15,
render: function(t, e, i, n) {
var o = e.get("value")
, a = e.get("status");
if (this._axisModel = t,
this._axisPointerModel = e,
this._api = i,
n || this._lastValue !== o || this._lastStatus !== a) {
this._lastValue = o,
this._lastStatus = a;
var r = this._group
, s = this._handle;
if (!a || "hide" === a)
return r && r.hide(),
void (s && s.hide());
r && r.show(),
s && s.show();
var l = {};
this.makeElOption(l, o, t, e, i);
var u = l.graphicKey;
u !== this._lastGraphicKey && this.clear(i),
this._lastGraphicKey = u;
var h = this._moveAnimation = this.determineAnimation(t, e);
if (r) {
var c = T(bI, e, h);
this.updatePointerEl(r, l, c, e),
this.updateLabelEl(r, l, c, e)
} else
r = this._group = new Ci,
this.createPointerEl(r, l, t, e),
this.createLabelEl(r, l, t, e),
i.getZr().add(r);
II(r, e, !0),
this._renderHandle(o)
}
},
remove: function(t) {
this.clear(t)
},
dispose: function(t) {
this.clear(t)
},
determineAnimation: function(t, e) {
var i = e.get("animation")
, n = t.axis
, o = "category" === n.type
, a = e.get("snap");
if (!a && !o)
return !1;
if ("auto" !== i && null != i)
return !0 === i;
var r = this.animationThreshold;
if (o && n.getBandWidth() > r)
return !0;
if (a) {
var s = fv(t).seriesDataCount
, l = n.getExtent();
return Math.abs(l[0] - l[1]) / s > r
}
return !1
},
makeElOption: function(t, e, i, n, o) {},
createPointerEl: function(t, e, i, n) {
var o = e.pointer;
if (o) {
var a = yI(t).pointerEl = new bl[o.type](xI(e.pointer));
t.add(a)
}
},
createLabelEl: function(t, e, i, n) {
if (e.label) {
var o = yI(t).labelEl = new rs(xI(e.label));
t.add(o),
SI(o, n)
}
},
updatePointerEl: function(t, e, i) {
var n = yI(t).pointerEl;
n && e.pointer && (n.setStyle(e.pointer.style),
i(n, {
shape: e.pointer.shape
}))
},
updateLabelEl: function(t, e, i, n) {
var o = yI(t).labelEl;
o && (o.setStyle(e.label.style),
i(o, {
shape: e.label.shape,
position: e.label.position
}),
SI(o, n))
},
_renderHandle: function(t) {
if (!this._dragging && this.updateHandleTransform) {
var e, i = this._axisPointerModel, n = this._api.getZr(), o = this._handle, a = i.getModel("handle"), r = i.get("status");
if (!a.get("show") || !r || "hide" === r)
return o && n.remove(o),
void (this._handle = null);
this._handle || (e = !0,
o = this._handle = yl(a.get("icon"), {
cursor: "move",
draggable: !0,
onmousemove: function(t) {
Xt(t.event)
},
onmousedown: _I(this._onHandleDragMove, this, 0, 0),
drift: _I(this._onHandleDragMove, this),
ondragend: _I(this._onHandleDragEnd, this)
}),
n.add(o)),
II(o, i, !1);
o.setStyle(a.getItemStyle(null, ["color", "borderColor", "borderWidth", "opacity", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"]));
var s = a.get("size");
L(s) || (s = [s, s]),
o.attr("scale", [s[0] / 2, s[1] / 2]),
kc(this, "_doDispatchAxisPointer", a.get("throttle") || 0, "fixRate"),
this._moveHandleToValue(t, e)
}
},
_moveHandleToValue: function(t, e) {
bI(this._axisPointerModel, !e && this._moveAnimation, this._handle, MI(this.getHandleTransform(t, this._axisModel, this._axisPointerModel)))
},
_onHandleDragMove: function(t, e) {
var i = this._handle;
if (i) {
this._dragging = !0;
var n = this.updateHandleTransform(MI(i), [t, e], this._axisModel, this._axisPointerModel);
this._payloadInfo = n,
i.stopAnimation(),
i.attr(MI(n)),
yI(i).lastProp = null,
this._doDispatchAxisPointer()
}
},
_doDispatchAxisPointer: function() {
if (this._handle) {
var t = this._payloadInfo
, e = this._axisModel;
this._api.dispatchAction({
type: "updateAxisPointer",
x: t.cursorPoint[0],
y: t.cursorPoint[1],
tooltipOption: t.tooltipOption,
axesInfo: [{
axisDim: e.axis.dim,
axisIndex: e.componentIndex
}]
})
}
},
_onHandleDragEnd: function(t) {
if (this._dragging = !1,
this._handle) {
var e = this._axisPointerModel.get("value");
this._moveHandleToValue(e),
this._api.dispatchAction({
type: "hideTip"
})
}
},
getHandleTransform: null,
updateHandleTransform: null,
clear: function(t) {
this._lastValue = null,
this._lastStatus = null;
var e = t.getZr()
, i = this._group
, n = this._handle;
e && i && (this._lastGraphicKey = null,
i && e.remove(i),
n && e.remove(n),
this._group = null,
this._handle = null,
this._payloadInfo = null)
},
doClear: function() {},
buildLabel: function(t, e, i) {
return {
x: t[i = i || 0],
y: t[1 - i],
width: e[i],
height: e[1 - i]
}
}
}).constructor = wI);
var OI = wI.extend({
makeElOption: function(t, e, i, n, o) {
var a = i.axis
, r = a.grid
, s = n.get("type")
, l = EI(r, a).getOtherAxis(a).getGlobalExtent()
, u = a.toGlobalCoord(a.dataToCoord(e, !0));
if (s && "none" !== s) {
var h = TI(n)
, c = RI[s](a, u, l);
c.style = h,
t.graphicKey = c.type,
t.pointer = c
}
LI(e, t, _v(r.model, i), i, n, o)
},
getHandleTransform: function(t, e, i) {
var n = _v(e.axis.grid.model, e, {
labelInside: !1
});
return n.labelMargin = i.get("handle.margin"),
{
position: CI(e.axis, t, n),
rotation: n.rotation + (n.labelDirection < 0 ? Math.PI : 0)
}
},
updateHandleTransform: function(t, e, i, n) {
var o = i.axis
, a = o.grid
, r = o.getGlobalExtent(!0)
, s = EI(a, o).getOtherAxis(o).getGlobalExtent()
, l = "x" === o.dim ? 0 : 1
, u = t.position;
u[l] += e[l],
u[l] = Math.min(r[1], u[l]),
u[l] = Math.max(r[0], u[l]);
var h = (s[1] + s[0]) / 2
, c = [h, h];
c[l] = u[l];
return {
position: u,
rotation: t.rotation,
cursorPoint: c,
tooltipOption: [{
verticalAlign: "middle"
}, {
align: "center"
}][l]
}
}
});
function EI(t, e) {
var i = {};
return i[e.dim + "AxisIndex"] = e.index,
t.getCartesian(i)
}
var RI = {
line: function(t, e, i) {
return {
type: "Line",
subPixelOptimize: !0,
shape: kI([e, i[0]], [e, i[1]], zI(t))
}
},
shadow: function(t, e, i) {
var n = Math.max(1, t.getBandWidth())
, o = i[1] - i[0];
return {
type: "Rect",
shape: PI([e - n / 2, i[0]], [n, o], zI(t))
}
}
};
function zI(t) {
return "x" === t.dim ? 0 : 1
}
mv.registerAxisPointerClass("CartesianAxisPointer", OI),
yf(function(t) {
if (t) {
t.axisPointer && 0 !== t.axisPointer.length || (t.axisPointer = {});
var e = t.axisPointer.link;
e && !L(e) && (t.axisPointer.link = [e])
}
}),
xf(Ld.PROCESSOR.STATISTIC, function(t, e) {
t.getComponent("axisPointer").coordSysAxesInfo = cv(t, e)
}),
_f({
type: "updateAxisPointer",
event: "updateAxisPointer",
update: ":updateAxisPointer"
}, function(t, e, i) {
var n = t.currTrigger
, r = [t.x, t.y]
, o = t
, a = t.dispatchAction || A(i.dispatchAction, i)
, s = e.getComponent("axisPointer").coordSysAxesInfo;
if (s) {
hI(r) && (r = iI({
seriesIndex: o.seriesIndex,
dataIndex: o.dataIndex
}, e).point);
var l = hI(r)
, u = o.axesInfo
, h = s.axesInfo
, c = "leave" === n || hI(r)
, d = {}
, f = {}
, p = {
list: [],
map: {}
}
, g = {
showPointer: oI(sI, f),
showTooltip: oI(lI, p)
};
nI(s.coordSysMap, function(t, e) {
var a = l || t.containPoint(r);
nI(s.coordSysAxesInfo[e], function(t, e) {
var i = t.axis
, n = function(t, e) {
for (var i = 0; i < (t || []).length; i++) {
var n = t[i];
if (e.axis.dim === n.axisDim && e.axis.model.componentIndex === n.axisIndex)
return n
}
}(u, t);
if (!c && a && (!u || n)) {
var o = n && n.value;
null != o || l || (o = i.pointToData(r)),
null != o && rI(t, o, g, !1, d)
}
})
});
var m = {};
return nI(h, function(o, t) {
var a = o.linkGroup;
a && !f[t] && nI(a.axesInfo, function(t, e) {
var i = f[e];
if (t !== o && i) {
var n = i.value;
a.mapper && (n = o.axis.scale.parse(a.mapper(n, uI(t), uI(o)))),
m[o.key] = n
}
})
}),
nI(m, function(t, e) {
rI(h[e], t, g, !0, d)
}),
function(o, t, e) {
var a = e.axesInfo = [];
nI(t, function(t, e) {
var i = t.axisPointerModel.option
, n = o[e];
n ? (t.useHandle || (i.status = "show"),
i.value = n.value,
i.seriesDataIndices = (n.payloadBatch || []).slice()) : t.useHandle || (i.status = "hide"),
"show" === i.status && a.push({
axisDim: t.axis.dim,
axisIndex: t.axis.model.componentIndex,
value: i.value
})
})
}(f, h, d),
function(t, e, i, n) {
if (hI(e) || !t.list.length)
return n({
type: "hideTip"
});
var o = ((t.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};
n({
type: "showTip",
escapeConnect: !0,
x: e[0],
y: e[1],
tooltipOption: i.tooltipOption,
position: i.position,
dataIndexInside: o.dataIndexInside,
dataIndex: o.dataIndex,
seriesIndex: o.seriesIndex,
dataByCoordSys: t.list
})
}(p, r, t, a),
function(t, e, i) {
var n = i.getZr()
, o = "axisPointerLastHighlights"
, a = aI(n)[o] || {}
, r = aI(n)[o] = {};
nI(t, function(t, e) {
var i = t.axisPointerModel.option;
"show" === i.status && nI(i.seriesDataIndices, function(t) {
var e = t.seriesIndex + " | " + t.dataIndex;
r[e] = t
})
});
var s = []
, l = [];
E(a, function(t, e) {
r[e] || l.push(t)
}),
E(r, function(t, e) {
a[e] || s.push(t)
}),
l.length && i.dispatchAction({
type: "downplay",
escapeConnect: !0,
batch: l
}),
s.length && i.dispatchAction({
type: "highlight",
escapeConnect: !0,
batch: s
})
}(h, 0, i),
d
}
});
var BI = ["x", "y"]
, VI = ["width", "height"]
, GI = wI.extend({
makeElOption: function(t, e, i, n, o) {
var a = i.axis
, r = a.coordinateSystem
, s = HI(r, 1 - WI(a))
, l = r.dataToPoint(e)[0]
, u = n.get("type");
if (u && "none" !== u) {
var h = TI(n)
, c = FI[u](a, l, s);
c.style = h,
t.graphicKey = c.type,
t.pointer = c
}
LI(e, t, $M(i), i, n, o)
},
getHandleTransform: function(t, e, i) {
var n = $M(e, {
labelInside: !1
});
return n.labelMargin = i.get("handle.margin"),
{
position: CI(e.axis, t, n),
rotation: n.rotation + (n.labelDirection < 0 ? Math.PI : 0)
}
},
updateHandleTransform: function(t, e, i, n) {
var o = i.axis
, a = o.coordinateSystem
, r = WI(o)
, s = HI(a, r)
, l = t.position;
l[r] += e[r],
l[r] = Math.min(s[1], l[r]),
l[r] = Math.max(s[0], l[r]);
var u = HI(a, 1 - r)
, h = (u[1] + u[0]) / 2
, c = [h, h];
return c[r] = l[r],
{
position: l,
rotation: t.rotation,
cursorPoint: c,
tooltipOption: {
verticalAlign: "middle"
}
}
}
})
, FI = {
line: function(t, e, i) {
return {
type: "Line",
subPixelOptimize: !0,
shape: kI([e, i[0]], [e, i[1]], WI(t))
}
},
shadow: function(t, e, i) {
var n = t.getBandWidth()
, o = i[1] - i[0];
return {
type: "Rect",
shape: PI([e - n / 2, i[0]], [n, o], WI(t))
}
}
};
function WI(t) {
return t.isHorizontal() ? 0 : 1
}
function HI(t, e) {
var i = t.getRect();
return [i[BI[e]], i[BI[e]] + i[VI[e]]]
}
mv.registerAxisPointerClass("SingleAxisPointer", GI),
Af({
type: "single"
});
var ZI = sc.extend({
type: "series.themeRiver",
dependencies: ["singleAxis"],
nameMap: null,
init: function(t) {
ZI.superApply(this, "init", arguments),
this.legendVisualProvider = new qv(A(this.getData, this),A(this.getRawData, this))
},
fixData: function(t) {
var e = t.length
, i = ta(t, function(t) {
return t[2]
})
, n = [];
i.buckets.each(function(t, e) {
n.push({
name: e,
dataList: t
})
});
for (var o = n.length, a = -1, r = -1, s = 0; s < o; ++s) {
var l = n[s].dataList.length;
a < l && (a = l,
r = s)
}
for (var u = 0; u < o; ++u)
if (u !== r)
for (var h = n[u].name, c = 0; c < a; ++c) {
for (var d = n[r].dataList[c][0], f = n[u].dataList.length, p = -1, g = 0; g < f; ++g) {
if (n[u].dataList[g][0] === d) {
p = g;
break
}
}
-1 === p && (t[e] = [],
t[e][0] = d,
t[e][1] = 0,
t[e][2] = h,
e++)
}
return t
},
getInitialData: function(t, e) {
for (var i = e.queryComponents({
mainType: "singleAxis",
index: this.get("singleAxisIndex"),
id: this.get("singleAxisId")
})[0].get("type"), n = M(t.data, function(t) {
return void 0 !== t[2]
}), o = this.fixData(n || []), a = [], r = this.nameMap = Q(), s = 0, l = 0; l < o.length; ++l)
a.push(o[l][2]),
r.get(o[l][2]) || (r.set(o[l][2], s),
s++);
var u = lp(o, {
coordDimensions: ["single"],
dimensionsDefine: [{
name: "time",
type: Ef(i)
}, {
name: "value",
type: "float"
}, {
name: "name",
type: "ordinal"
}],
encodeDefine: {
single: 0,
value: 1,
itemName: 2
}
})
, h = new Yf(u,this);
return h.initData(o),
h
},
getLayerSeries: function() {
for (var i = this.getData(), t = i.count(), e = [], n = 0; n < t; ++n)
e[n] = n;
var o = i.mapDimension("single")
, a = ta(e, function(t) {
return i.get("name", t)
})
, r = [];
return a.buckets.each(function(t, e) {
t.sort(function(t, e) {
return i.get(o, t) - i.get(o, e)
}),
r.push({
name: e,
indices: t
})
}),
r
},
getAxisTooltipData: function(t, e, i) {
L(t) || (t = t ? [t] : []);
for (var n, o = this.getData(), a = this.getLayerSeries(), r = [], s = a.length, l = 0; l < s; ++l) {
for (var u = Number.MAX_VALUE, h = -1, c = a[l].indices.length, d = 0; d < c; ++d) {
var f = o.get(t[0], a[l].indices[d])
, p = Math.abs(f - e);
p <= u && (n = f,
u = p,
h = a[l].indices[d])
}
r.push(h)
}
return {
dataIndices: r,
nestestValue: n
}
},
formatTooltip: function(t) {
var e = this.getData()
, i = e.getName(t)
, n = e.get(e.mapDimension("value"), t);
return !isNaN(n) && null != n || (n = "-"),
au(i + " : " + n)
},
defaultOption: {
zlevel: 0,
z: 2,
coordinateSystem: "singleAxis",
boundaryGap: ["10%", "10%"],
singleAxisIndex: 0,
animationEasing: "linear",
label: {
margin: 4,
show: !0,
position: "left",
color: "#000",
fontSize: 11
},
emphasis: {
label: {
show: !0
}
}
}
});
Cf({
type: "themeRiver",
init: function() {
this._layers = []
},
render: function(b, t, e) {
var S = b.getData()
, M = this.group
, I = b.getLayerSeries()
, i = S.getLayout("layoutInfo")
, n = i.rect
, o = i.boundaryGap;
function a(t) {
return t.name
}
M.attr("position", [0, n.y + o[0]]);
var r = new kf(this._layersSeries || [],I,a,a)
, T = {};
function s(t, e, i) {
var n = this._layers;
if ("remove" !== t) {
for (var o, a, r, s = [], l = [], u = I[e].indices, h = 0; h < u.length; h++) {
var c = S.getItemLayout(u[h])
, d = c.x
, f = c.y0
, p = c.y;
s.push([d, f]),
l.push([d, f + p]),
o = S.getItemVisual(u[h], "color")
}
var g = S.getItemLayout(u[0])
, m = S.getItemModel(u[h - 1])
, v = m.getModel("label")
, y = v.get("margin");
if ("add" === t) {
var x = T[e] = new Ci;
a = new _m({
shape: {
points: s,
stackedOnPoints: l,
smooth: .4,
stackedOnSmooth: .4,
smoothConstraint: !1
},
z2: 0
}),
r = new Ur({
style: {
x: g.x - y,
y: g.y0 + g.y / 2
}
}),
x.add(a),
x.add(r),
M.add(x),
a.setClipPath(function(t, e, i) {
var n = new rs({
shape: {
x: t.x - 10,
y: t.y - 10,
width: 0,
height: t.height + 20
}
});
return dl(n, {
shape: {
width: t.width + 20,
height: t.height + 20
}
}, e, i),
n
}(a.getBoundingRect(), b, function() {
a.removeClipPath()
}))
} else {
x = n[i];
a = x.childAt(0),
r = x.childAt(1),
M.add(x),
T[e] = x,
cl(a, {
shape: {
points: s,
stackedOnPoints: l
}
}, b),
cl(r, {
style: {
x: g.x - y,
y: g.y0 + g.y / 2
}
}, b)
}
var _ = m.getModel("emphasis.itemStyle")
, w = m.getModel("itemStyle");
nl(r.style, v, {
text: v.get("show") ? b.getFormattedLabel(u[h - 1], "normal") || S.getName(u[h - 1]) : null,
textVerticalAlign: "middle"
}),
a.setStyle(P({
fill: o
}, w.getItemStyle(["color"]))),
$s(a, _.getItemStyle())
} else
M.remove(n[e])
}
r.add(A(s, this, "add")).update(A(s, this, "update")).remove(A(s, this, "remove")).execute(),
this._layersSeries = I,
this._layers = T
},
dispose: function() {}
});
function UI(i, t, e) {
if (i.count())
for (var n, o = t.coordinateSystem, a = t.getLayerSeries(), r = i.mapDimension("single"), s = i.mapDimension("value"), l = O(a, function(t) {
return O(t.indices, function(t) {
var e = o.dataToPoint(i.get(r, t));
return e[1] = i.get(s, t),
e
})
}), u = function(t) {
for (var e = t.length, i = t[0].length, n = [], o = [], a = 0, r = {}, s = 0; s < i; ++s) {
for (var l = 0, u = 0; l < e; ++l)
u += t[l][s][1];
a < u && (a = u),
n.push(u)
}
for (var h = 0; h < i; ++h)
o[h] = (a - n[h]) / 2;
for (var c = a = 0; c < i; ++c) {
var d = n[c] + o[c];
a < d && (a = d)
}
return r.y0 = o,
r.max = a,
r
}(l), h = u.y0, c = e / u.max, d = a.length, f = a[0].indices.length, p = 0; p < f; ++p) {
n = h[p] * c,
i.setItemLayout(a[0].indices[p], {
layerIndex: 0,
x: l[0][p][0],
y0: n,
y: l[0][p][1] * c
});
for (var g = 1; g < d; ++g)
n += l[g - 1][p][1] * c,
i.setItemLayout(a[g].indices[p], {
layerIndex: g,
x: l[g][p][0],
y0: n,
y: l[g][p][1] * c
})
}
}
bf(function(t, e) {
t.eachSeriesByType("themeRiver", function(t) {
var e = t.getData()
, i = t.coordinateSystem
, n = {}
, o = i.getRect();
n.rect = o;
var a = t.get("boundaryGap")
, r = i.getAxis();
(n.boundaryGap = a,
"horizontal" === r.orient) ? (a[0] = Rl(a[0], o.height),
a[1] = Rl(a[1], o.height),
UI(e, t, o.height - a[0] - a[1])) : (a[0] = Rl(a[0], o.width),
a[1] = Rl(a[1], o.width),
UI(e, t, o.width - a[0] - a[1]));
e.setLayout("layoutInfo", n)
})
}),
Sf(function(t) {
t.eachSeriesByType("themeRiver", function(o) {
var a = o.getData()
, r = o.getRawData()
, s = o.get("color")
, l = Q();
a.each(function(t) {
l.set(a.getRawIndex(t), t)
}),
r.each(function(t) {
var e = r.getName(t)
, i = s[(o.nameMap.get(e) - 1) % s.length];
r.setItemVisual(t, "color", i);
var n = l.get(t);
null != n && a.setItemVisual(n, "color", i)
})
})
}),
xf(uy("themeRiver")),
sc.extend({
type: "series.sunburst",
_viewRoot: null,
getInitialData: function(t, e) {
var i = {
name: t.name,
children: t.data
};
!function i(t) {
var n = 0;
E(t.children, function(t) {
i(t);
var e = t.value;
L(e) && (e = e[0]),
n += e
});
var e = t.value;
L(e) && (e = e[0]);
null != e && !isNaN(e) || (e = n);
e < 0 && (e = 0);
L(t.value) ? t.value[0] = e : t.value = e
}(i);
var n = t.levels || []
, o = {};
return o.levels = n,
Ax.createTree(i, this, o).data
},
optionUpdated: function() {
this.resetViewRoot()
},
getDataParams: function(t) {
var e = sc.prototype.getDataParams.apply(this, arguments)
, i = this.getData().tree.getNodeByDataIndex(t);
return e.treePathInfo = Yx(i, this),
e
},
defaultOption: {
zlevel: 0,
z: 2,
center: ["50%", "50%"],
radius: [0, "75%"],
clockwise: !0,
startAngle: 90,
minAngle: 0,
percentPrecision: 2,
stillShowZeroSum: !0,
highlightPolicy: "descendant",
nodeClick: "rootToNode",
renderLabelForZeroData: !1,
label: {
rotate: "radial",
show: !0,
opacity: 1,
align: "center",
position: "inside",
distance: 5,
silent: !0
},
itemStyle: {
borderWidth: 1,
borderColor: "white",
borderType: "solid",
shadowBlur: 0,
shadowColor: "rgba(0, 0, 0, 0.2)",
shadowOffsetX: 0,
shadowOffsetY: 0,
opacity: 1
},
highlight: {
itemStyle: {
opacity: 1
}
},
downplay: {
itemStyle: {
opacity: .5
},
label: {
opacity: .6
}
},
animationType: "expansion",
animationDuration: 1e3,
animationDurationUpdate: 500,
animationEasing: "cubicOut",
data: [],
levels: [],
sort: "desc"
},
getViewRoot: function() {
return this._viewRoot
},
resetViewRoot: function(t) {
t ? this._viewRoot = t : t = this._viewRoot;
var e = this.getRawData().tree.root;
t && (t === e || e.contains(t)) || (this._viewRoot = e)
}
});
var XI = "none"
, YI = "ancestor"
, jI = "self"
, qI = 2
, KI = 4;
function $I(t, e, i) {
Ci.call(this);
var n = new qr({
z2: qI
});
n.seriesIndex = e.seriesIndex;
var o = new Ur({
z2: KI,
silent: t.getModel("label").get("silent")
});
function a() {
o.ignore = o.hoverIgnore
}
function r() {
o.ignore = o.normalIgnore
}
this.add(n),
this.add(o),
this.updateData(!0, t, "normal", e, i),
this.on("emphasis", a).on("normal", r).on("mouseover", a).on("mouseout", r)
}
var JI = $I.prototype;
JI.updateData = function(t, e, i, n, o) {
(this.node = e).piece = this,
n = n || this._seriesModel,
o = o || this._ecModel;
var a = this.childAt(0);
a.dataIndex = e.dataIndex;
var r = e.getModel()
, s = e.getLayout()
, l = P({}, s);
l.label = null;
var u = function(t, e, i) {
var n = t.getVisual("color")
, o = t.getVisual("visualMeta");
o && 0 !== o.length || (n = null);
var a = t.getModel("itemStyle").get("color");
{
if (a)
return a;
if (n)
return n;
if (0 === t.depth)
return i.option.color[0];
var r = i.option.color.length;
a = i.option.color[function(t) {
var e = t;
for (; 1 < e.depth; )
e = e.parentNode;
return _(t.getAncestors()[0].children, e)
}(t) % r]
}
return a
}(e, 0, o);
!function(t, e, i) {
e.getData().setItemVisual(t.dataIndex, "color", i)
}(e, n, u);
var h, c = r.getModel("itemStyle").getItemStyle();
"normal" === i ? h = c : h = m(r.getModel(i + ".itemStyle").getItemStyle(), c);
h = D({
lineJoin: "bevel",
fill: h.fill || u
}, h),
t ? (a.setShape(l),
a.shape.r = s.r0,
cl(a, {
shape: {
r: s.r
}
}, n, e.dataIndex),
a.useStyle(h)) : "object" == typeof h.fill && h.fill.type || "object" == typeof a.style.fill && a.style.fill.type ? (cl(a, {
shape: l
}, n),
a.useStyle(h)) : cl(a, {
shape: l,
style: h
}, n),
this._updateLabel(n, u, i);
var d = r.getShallow("cursor");
if (d && a.attr("cursor", d),
t) {
var f = n.getShallow("highlightPolicy");
this._initEvents(a, e, n, f)
}
this._seriesModel = n || this._seriesModel,
this._ecModel = o || this._ecModel,
$s(this)
}
,
JI.onEmphasis = function(e) {
var i = this;
this.node.hostTree.root.eachNode(function(t) {
t.piece && (i.node === t ? t.piece.updateData(!1, t, "emphasis") : !function(t, e, i) {
return i !== XI && (i === jI ? t === e : i === YI ? t === e || t.isAncestorOf(e) : t === e || t.isDescendantOf(e))
}(t, i.node, e) ? e !== XI && t.piece.childAt(0).trigger("downplay") : t.piece.childAt(0).trigger("highlight"))
})
}
,
JI.onNormal = function() {
this.node.hostTree.root.eachNode(function(t) {
t.piece && t.piece.updateData(!1, t, "normal")
})
}
,
JI.onHighlight = function() {
this.updateData(!1, this.node, "highlight")
}
,
JI.onDownplay = function() {
this.updateData(!1, this.node, "downplay")
}
,
JI._updateLabel = function(t, e, i) {
var n = this.node.getModel()
, o = n.getModel("label")
, a = "normal" === i || "emphasis" === i ? o : n.getModel(i + ".label")
, r = n.getModel("emphasis.label")
, s = W(t.getFormattedLabel(this.node.dataIndex, i, null, null, "label"), this.node.name);
!1 === S("show") && (s = "");
var l = this.node.getLayout()
, u = a.get("minAngle");
null == u && (u = o.get("minAngle")),
u = u / 180 * Math.PI;
var h = l.endAngle - l.startAngle;
null != u && Math.abs(h) < u && (s = "");
var c = this.childAt(1);
el(c.style, c.hoverStyle || {}, o, r, {
defaultText: a.getShallow("show") ? s : null,
autoColor: e,
useInsideStyle: !0
});
var d, f = (l.startAngle + l.endAngle) / 2, p = Math.cos(f), g = Math.sin(f), m = S("position"), v = S("distance") || 0, y = S("align");
"outside" === m ? (d = l.r + v,
y = f > Math.PI / 2 ? "right" : "left") : y && "center" !== y ? "left" === y ? (d = l.r0 + v,
f > Math.PI / 2 && (y = "right")) : "right" === y && (d = l.r - v,
f > Math.PI / 2 && (y = "left")) : (d = (l.r + l.r0) / 2,
y = "center"),
c.attr("style", {
text: s,
textAlign: y,
textVerticalAlign: S("verticalAlign") || "middle",
opacity: S("opacity")
});
var x = d * p + l.cx
, _ = d * g + l.cy;
c.attr("position", [x, _]);
var w = S("rotate")
, b = 0;
function S(t) {
var e = a.get(t);
return null == e ? o.get(t) : e
}
"radial" === w ? (b = -f) < -Math.PI / 2 && (b += Math.PI) : "tangential" === w ? (b = Math.PI / 2 - f) > Math.PI / 2 ? b -= Math.PI : b < -Math.PI / 2 && (b += Math.PI) : "number" == typeof w && (b = w * Math.PI / 180),
c.attr("rotation", b)
}
,
JI._initEvents = function(t, e, i, n) {
t.off("mouseover").off("mouseout").off("emphasis").off("normal");
function o() {
r.onEmphasis(n)
}
function a() {
r.onNormal()
}
var r = this;
i.isAnimationEnabled() && t.on("mouseover", o).on("mouseout", a).on("emphasis", o).on("normal", a).on("downplay", function() {
r.onDownplay()
}).on("highlight", function() {
r.onHighlight()
})
}
,
w($I, Ci);
_c.extend({
type: "sunburst",
init: function() {},
render: function(o, a, t, e) {
var n = this;
this.seriesModel = o,
this.api = t,
this.ecModel = a;
var r = o.getData()
, s = r.tree.root
, i = o.getViewRoot()
, l = this.group
, u = o.get("renderLabelForZeroData")
, h = [];
i.eachNode(function(t) {
h.push(t)
});
var c = this._oldChildren || [];
if (function(i, n) {
if (0 === i.length && 0 === n.length)
return;
function t(t) {
return t.getId()
}
function e(t, e) {
!function(t, e) {
u || !t || t.getValue() || (t = null);
if (t !== s && e !== s)
if (e && e.piece)
t ? (e.piece.updateData(!1, t, "normal", o, a),
r.setItemGraphicEl(t.dataIndex, e.piece)) : function(t) {
if (!t)
return;
t.piece && (l.remove(t.piece),
t.piece = null)
}(e);
else if (t) {
var i = new $I(t,o,a);
l.add(i),
r.setItemGraphicEl(t.dataIndex, i)
}
}(null == t ? null : i[t], null == e ? null : n[e])
}
new kf(n,i,t,t).add(e).update(e).remove(T(e, null)).execute()
}(h, c),
function(t, e) {
if (0 < e.depth) {
n.virtualPiece ? n.virtualPiece.updateData(!1, t, "normal", o, a) : (n.virtualPiece = new $I(t,o,a),
l.add(n.virtualPiece)),
e.piece._onclickEvent && e.piece.off("click", e.piece._onclickEvent);
var i = function(t) {
n._rootToNode(e.parentNode)
};
e.piece._onclickEvent = i,
n.virtualPiece.on("click", i)
} else
n.virtualPiece && (l.remove(n.virtualPiece),
n.virtualPiece = null)
}(s, i),
e && e.highlight && e.highlight.piece) {
var d = o.getShallow("highlightPolicy");
e.highlight.piece.onEmphasis(d)
} else if (e && e.unhighlight) {
var f = this.virtualPiece;
!f && s.children.length && (f = s.children[0].piece),
f && f.onNormal()
}
this._initEvents(),
this._oldChildren = h
},
dispose: function() {},
_initEvents: function() {
function t(o) {
var a = !1;
r.seriesModel.getViewRoot().eachNode(function(t) {
if (!a && t.piece && t.piece.childAt(0) === o.target) {
var e = t.getModel().get("nodeClick");
if ("rootToNode" === e)
r._rootToNode(t);
else if ("link" === e) {
var i = t.getModel()
, n = i.get("link");
if (n)
gu(n, i.get("target", !0) || "_blank")
}
a = !0
}
})
}
var r = this;
this.group._onclickEvent && this.group.off("click", this.group._onclickEvent),
this.group.on("click", t),
this.group._onclickEvent = t
},
_rootToNode: function(t) {
t !== this.seriesModel.getViewRoot() && this.api.dispatchAction({
type: "sunburstRootToNode",
from: this.uid,
seriesId: this.seriesModel.id,
targetNode: t
})
},
containPoint: function(t, e) {
var i = e.getData().getItemLayout(0);
if (i) {
var n = t[0] - i.cx
, o = t[1] - i.cy
, a = Math.sqrt(n * n + o * o);
return a <= i.r && a >= i.r0
}
}
});
var QI = "sunburstRootToNode";
_f({
type: QI,
update: "updateView"
}, function(o, t) {
t.eachComponent({
mainType: "series",
subType: "sunburst",
query: o
}, function(t, e) {
var i = Zx(o, [QI], t);
if (i) {
var n = t.getViewRoot();
n && (o.direction = Xx(n, i.node) ? "rollUp" : "drillDown"),
t.resetViewRoot(i.node)
}
})
});
var tT = "sunburstHighlight";
_f({
type: tT,
update: "updateView"
}, function(n, t) {
t.eachComponent({
mainType: "series",
subType: "sunburst",
query: n
}, function(t, e) {
var i = Zx(n, [tT], t);
i && (n.highlight = i.node)
})
});
_f({
type: "sunburstUnhighlight",
update: "updateView"
}, function(i, t) {
t.eachComponent({
mainType: "series",
subType: "sunburst",
query: i
}, function(t, e) {
i.unhighlight = !0
})
});
var eT = Math.PI / 180;
function iT(t, e) {
if ("function" == typeof e)
return t.sort(e);
var n = "asc" === e;
return t.sort(function(t, e) {
var i = (t.getValue() - e.getValue()) * (n ? 1 : -1);
return 0 == i ? (t.dataIndex - e.dataIndex) * (n ? -1 : 1) : i
})
}
function nT(a, r) {
return r = r || [0, 0],
O(["x", "y"], function(t, e) {
var i = this.getAxis(t)
, n = r[e]
, o = a[e] / 2;
return "category" === i.type ? i.getBandWidth() : Math.abs(i.dataToCoord(n - o) - i.dataToCoord(n + o))
}, this)
}
Sf(T(iy, "sunburst")),
bf(T(function(t, e, C, i) {
e.eachSeriesByType(t, function(t) {
var e = t.get("center")
, i = t.get("radius");
L(i) || (i = [0, i]),
L(e) || (e = [e, e]);
var n = C.getWidth()
, o = C.getHeight()
, h = Math.min(n, o)
, c = Rl(e[0], n)
, d = Rl(e[1], o)
, f = Rl(i[0], h / 2)
, a = Rl(i[1], h / 2)
, r = -t.get("startAngle") * eT
, p = t.get("minAngle") * eT
, g = t.getData().tree.root
, s = t.getViewRoot()
, m = s.depth
, l = t.get("sort");
null != l && !function e(t, i) {
var n = t.children || [];
t.children = iT(n, i);
n.length && E(t.children, function(t) {
e(t, i)
})
}(s, l);
var u = 0;
E(s.children, function(t) {
isNaN(t.getValue()) || u++
});
var v = s.getValue()
, y = Math.PI / (v || u) * 2
, x = 0 < s.depth
, _ = s.height - (x ? -1 : 1)
, w = (a - f) / (_ || 1)
, b = t.get("clockwise")
, S = t.get("stillShowZeroSum")
, M = b ? 1 : -1
, I = function(t, e) {
if (t) {
var i = e;
if (t !== g) {
var n = t.getValue()
, o = 0 === v && S ? y : n * y;
o < p && (o = p),
i = e + M * o;
var a = t.depth - m - (x ? -1 : 1)
, r = f + w * a
, s = f + w * (1 + a)
, l = t.getModel();
null != l.get("r0") && (r = Rl(l.get("r0"), h / 2)),
null != l.get("r") && (s = Rl(l.get("r"), h / 2)),
t.setLayout({
angle: o,
startAngle: e,
endAngle: i,
clockwise: b,
cx: c,
cy: d,
r0: r,
r: s
})
}
if (t.children && t.children.length) {
var u = 0;
E(t.children, function(t) {
u += I(t, e + u)
})
}
return i - e
}
};
if (x) {
var T = f
, A = f + w
, D = 2 * Math.PI;
g.setLayout({
angle: D,
startAngle: r,
endAngle: r + D,
clockwise: b,
cx: c,
cy: d,
r0: T,
r: A
})
}
I(s, r)
})
}, "sunburst")),
xf(T(uy, "sunburst"));
function oT(a, r) {
return r = r || [0, 0],
O([0, 1], function(t) {
var e = r[t]
, i = a[t] / 2
, n = []
, o = [];
return n[t] = e - i,
o[t] = e + i,
n[1 - t] = o[1 - t] = r[1 - t],
Math.abs(this.dataToPoint(n)[t] - this.dataToPoint(o)[t])
}, this)
}
function aT(t, e) {
var i = this.getAxis()
, n = e instanceof Array ? e[0] : e
, o = (t instanceof Array ? t[0] : t) / 2;
return "category" === i.type ? i.getBandWidth() : Math.abs(i.dataToCoord(n - o) - i.dataToCoord(n + o))
}
function rT(s, l) {
return O(["Radius", "Angle"], function(t, e) {
var i = this["get" + t + "Axis"]()
, n = l[e]
, o = s[e] / 2
, a = "dataTo" + t
, r = "category" === i.type ? i.getBandWidth() : Math.abs(i[a](n - o) - i[a](n + o));
return "Angle" === t && (r = r * Math.PI / 180),
r
}, this)
}
var sT = Ss
, lT = ["itemStyle"]
, uT = ["emphasis", "itemStyle"]
, hT = ["label"]
, cT = ["emphasis", "label"]
, dT = "e\0\0"
, fT = {
cartesian2d: function(e) {
var t = e.grid.getRect();
return {
coordSys: {
type: "cartesian2d",
x: t.x,
y: t.y,
width: t.width,
height: t.height
},
api: {
coord: function(t) {
return e.dataToPoint(t)
},
size: A(nT, e)
}
}
},
geo: function(e) {
var t = e.getBoundingRect();
return {
coordSys: {
type: "geo",
x: t.x,
y: t.y,
width: t.width,
height: t.height,
zoom: e.getZoom()
},
api: {
coord: function(t) {
return e.dataToPoint(t)
},
size: A(oT, e)
}
}
},
singleAxis: function(e) {
var t = e.getRect();
return {
coordSys: {
type: "singleAxis",
x: t.x,
y: t.y,
width: t.width,
height: t.height
},
api: {
coord: function(t) {
return e.dataToPoint(t)
},
size: A(aT, e)
}
}
},
polar: function(o) {
var a = o.getRadiusAxis()
, r = o.getAngleAxis()
, t = a.getExtent();
return t[0] > t[1] && t.reverse(),
{
coordSys: {
type: "polar",
cx: o.cx,
cy: o.cy,
r: t[1],
r0: t[0]
},
api: {
coord: A(function(t) {
var e = a.dataToRadius(t[0])
, i = r.dataToAngle(t[1])
, n = o.coordToPoint([e, i]);
return n.push(e, i * Math.PI / 180),
n
}),
size: A(rT, o)
}
}
},
calendar: function(i) {
var t = i.getRect()
, e = i.getRangeInfo();
return {
coordSys: {
type: "calendar",
x: t.x,
y: t.y,
width: t.width,
height: t.height,
cellWidth: i.getCellWidth(),
cellHeight: i.getCellHeight(),
rangeInfo: {
start: e.start,
end: e.end,
weeks: e.weeks,
dayCount: e.allDay
}
},
api: {
coord: function(t, e) {
return i.dataToPoint(t, e)
}
}
}
}
};
function pT(t, e, i, n, o) {
null == i[t] || o || (e[t] = i[t],
i[t] = n[t])
}
function gT(a, r, e, t) {
var i = a.get("renderItem")
, n = a.coordinateSystem
, o = {};
n && (o = n.prepareCustoms ? n.prepareCustoms() : fT[n.type](n));
var s, l, u, h, c, d = D({
getWidth: t.getWidth,
getHeight: t.getHeight,
getZr: t.getZr,
getDevicePixelRatio: t.getDevicePixelRatio,
value: function(t, e) {
return null == e && (e = s),
r.get(r.getDimension(t || 0), e)
},
style: function(t, e) {
null == e && (e = s),
g(e);
var i = l.getModel(lT).getItemStyle();
null != c && (i.fill = c);
var n = r.getItemVisual(e, "opacity");
null != n && (i.opacity = n);
var o = t ? _T(t, u) : u;
return nl(i, o, null, {
autoColor: c,
isRectText: !0
}),
i.text = o.getShallow("show") ? H(a.getFormattedLabel(e, "normal"), Ug(r, e)) : null,
t && wT(i, t),
i
},
styleEmphasis: function(t, e) {
null == e && (e = s),
g(e);
var i = l.getModel(uT).getItemStyle()
, n = t ? _T(t, h) : h;
return nl(i, n, null, {
isRectText: !0
}, !0),
i.text = n.getShallow("show") ? Z(a.getFormattedLabel(e, "emphasis"), a.getFormattedLabel(e, "normal"), Ug(r, e)) : null,
t && wT(i, t),
i
},
visual: function(t, e) {
return null == e && (e = s),
r.getItemVisual(e, t)
},
barLayout: function(t) {
if (n.getBaseAxis) {
return function(t) {
var e = []
, i = t.axis;
if ("category" === i.type) {
for (var n = i.getBandWidth(), o = 0; o < t.count; o++)
e.push(D({
bandWidth: n,
axisKey: "axis0",
stackId: Cp + o
}, t));
var a = Ep(e)
, r = [];
for (o = 0; o < t.count; o++) {
var s = a.axis0[Cp + o];
s.offsetCenter = s.offset + s.width / 2,
r.push(s)
}
return r
}
}(D({
axis: n.getBaseAxis()
}, t))
}
},
currentSeriesIndices: function() {
return e.getCurrentSeriesIndices()
},
font: function(t) {
return ul(t, e)
}
}, o.api || {}), f = {
context: {},
seriesId: a.id,
seriesName: a.name,
seriesIndex: a.seriesIndex,
coordSys: o.coordSys,
dataInsideLength: r.count(),
encode: function(o) {
var a = {};
return E(o.dimensions, function(t, e) {
var i = o.getDimensionInfo(t);
if (!i.isExtraCoord) {
var n = i.coordDim;
(a[n] = a[n] || [])[i.coordDimIndex] = e
}
}),
a
}(a.getData())
}, p = !0;
return function(t, e) {
return s = t,
p = !0,
i && i(D({
dataIndexInside: t,
dataIndex: r.getRawIndex(t),
actionType: e ? e.type : null
}, f), d)
}
;
function g(t) {
null == t && (t = s),
p && (l = r.getItemModel(t),
u = l.getModel(hT),
h = l.getModel(cT),
c = r.getItemVisual(t, "color"),
p = !1)
}
}
function mT(t, e, i, n, o, a) {
return (t = vT(t, e, i, n, o, a, !0)) && a.setItemGraphicEl(e, t),
t
}
function vT(t, e, i, n, o, a, r) {
var s = !i
, l = (i = i || {}).type
, u = i.shape
, h = i.style;
if (t && (s || null != l && l !== t.__customGraphicType || "path" === l && function(t) {
return t && (t.hasOwnProperty("pathData") || t.hasOwnProperty("d"))
}(u) && ST(u) !== t.__customPathData || "image" === l && MT(h, "image") && h.image !== t.__customImagePath || "text" === l && MT(u, "text") && h.text !== t.__customText) && (o.remove(t),
t = null),
!s) {
var c = !t;
return function(e, t, i, n, o, a, r) {
var s = {}
, l = i.style || {};
if (i.shape && (s.shape = k(i.shape)),
i.position && (s.position = i.position.slice()),
i.scale && (s.scale = i.scale.slice()),
i.origin && (s.origin = i.origin.slice()),
i.rotation && (s.rotation = i.rotation),
"image" === e.type && i.style) {
var u = s.style = {};
E(["x", "y", "width", "height"], function(t) {
pT(t, u, l, e.style, a)
})
}
if ("text" === e.type && i.style) {
u = s.style = {};
E(["x", "y"], function(t) {
pT(t, u, l, e.style, a)
}),
!l.hasOwnProperty("textFill") && l.fill && (l.textFill = l.fill),
!l.hasOwnProperty("textStroke") && l.stroke && (l.textStroke = l.stroke)
}
if ("group" !== e.type && (e.useStyle(l),
a)) {
e.style.opacity = 0;
var h = l.opacity;
null == h && (h = 1),
dl(e, {
style: {
opacity: h
}
}, n, t)
}
a ? e.attr(s) : cl(e, s, n, t),
i.hasOwnProperty("z2") && e.attr("z2", i.z2 || 0),
i.hasOwnProperty("silent") && e.attr("silent", i.silent),
i.hasOwnProperty("invisible") && e.attr("invisible", i.invisible),
i.hasOwnProperty("ignore") && e.attr("ignore", i.ignore),
i.hasOwnProperty("info") && e.attr("info", i.info);
var c = i.styleEmphasis;
Us(e, c),
r && Js(e, !1 !== c)
}(t = t || function(t) {
var e, i = t.type;
if ("path" === i) {
var n = t.shape
, o = null != n.width && null != n.height ? {
x: n.x || 0,
y: n.y || 0,
width: n.width,
height: n.height
} : null
, a = ST(n);
(e = Ps(a, null, o, n.layout || "center")).__customPathData = a
} else if ("image" === i)
(e = new Qn({})).__customImagePath = t.style.image;
else if ("text" === i)
(e = new Ur({})).__customText = t.style.text;
else if ("group" === i)
e = new Ci;
else {
if ("compoundPath" === i)
throw new Error('"compoundPath" is not supported yet.');
e = new (ks(i))
}
return e.__customGraphicType = i,
e.name = t.name,
e
}(i), e, i, n, 0, c, r),
"group" === l && function(t, e, i, n, o) {
var a = i.children
, r = a ? a.length : 0
, s = i.$mergeChildren
, l = "byName" === s || i.diffChildrenByName
, u = !1 === s;
if (!r && !l && !u)
return;
if (l)
return function(t) {
new kf(t.oldChildren,t.newChildren,yT,yT,t).add(xT).update(xT).remove(bT).execute()
}({
oldChildren: t.children() || [],
newChildren: a || [],
dataIndex: e,
animatableModel: n,
group: t,
data: o
});
u && t.removeAll();
for (var h = 0; h < r; h++)
a[h] && vT(t.childAt(h), e, a[h], n, t, o)
}(t, e, i, n, a),
o.add(t),
t
}
}
function yT(t, e) {
var i = t && t.name;
return null != i ? i : dT + e
}
function xT(t, e) {
var i = this.context
, n = null != t ? i.newChildren[t] : null;
vT(null != e ? i.oldChildren[e] : null, i.dataIndex, n, i.animatableModel, i.group, i.data)
}
function _T(i, t) {
var n = new Cl({},t);
return E(sT, function(t, e) {
i.hasOwnProperty(t) && (n.option[e] = i[t])
}),
n
}
function wT(t, e) {
for (var i in e)
!e.hasOwnProperty(i) && sT.hasOwnProperty(i) || (t[i] = e[i])
}
function bT(t) {
var e = this.context
, i = e.oldChildren[t];
i && e.group.remove(i)
}
function ST(t) {
return t && (t.pathData || t.d)
}
function MT(t, e) {
return t && t.hasOwnProperty(e)
}
function IT(t) {
return t.get("stack") || "__ec_stack_" + t.seriesIndex
}
function TT(t, e) {
return e.dim + t.model.componentIndex
}
function AT(t, e) {
Gg.call(this, "radius", t, e),
this.type = "category"
}
sc.extend({
type: "series.custom",
dependencies: ["grid", "polar", "geo", "singleAxis", "calendar"],
defaultOption: {
coordinateSystem: "cartesian2d",
zlevel: 0,
z: 2,
legendHoverLink: !0,
useTransform: !0,
clip: !1
},
getInitialData: function(t, e) {
return gp(this.getSource(), this)
},
getDataParams: function(t, e, i) {
var n = sc.prototype.getDataParams.apply(this, arguments);
return i && (n.info = i.info),
n
}
}),
_c.extend({
type: "custom",
_data: null,
render: function(i, t, e, n) {
var o = this._data
, a = i.getData()
, r = this.group
, s = gT(i, a, t, e);
a.diff(o).add(function(t) {
mT(null, t, s(t, n), i, r, a)
}).update(function(t, e) {
mT(o.getItemGraphicEl(e), t, s(t, n), i, r, a)
}).remove(function(t) {
var e = o.getItemGraphicEl(t);
e && r.remove(e)
}).execute();
var l = i.get("clip", !0) ? Sm(i.coordinateSystem, !1, i) : null;
l ? r.setClipPath(l) : r.removeClipPath(),
this._data = a
},
incrementalPrepareRender: function(t, e, i) {
this.group.removeAll(),
this._data = null
},
incrementalRender: function(t, e, i, n, o) {
var a = e.getData()
, r = gT(e, a, i, n);
function s(t) {
t.isGroup || (t.incremental = !0,
t.useHoverLayer = !0)
}
for (var l = t.start; l < t.end; l++) {
mT(null, l, r(l, o), e, this.group, a).traverse(s)
}
},
dispose: et,
filterForExposedEvent: function(t, e, i, n) {
var o = e.element;
if (null == o || i.name === o)
return !0;
for (; (i = i.parent) && i !== this.group; )
if (i.name === o)
return !0;
return !1
}
}),
AT.prototype = {
constructor: AT,
pointToData: function(t, e) {
return this.polar.pointToData(t, e)["radius" === this.dim ? 0 : 1]
},
dataToRadius: Gg.prototype.dataToCoord,
radiusToData: Gg.prototype.coordToData
},
w(AT, Gg);
var DT = jo();
function CT(t, e) {
e = e || [0, 360],
Gg.call(this, "angle", t, e),
this.type = "category"
}
CT.prototype = {
constructor: CT,
pointToData: function(t, e) {
return this.polar.pointToData(t, e)["radius" === this.dim ? 0 : 1]
},
dataToAngle: Gg.prototype.dataToCoord,
angleToData: Gg.prototype.coordToData,
calculateCategoryInterval: function() {
var t = this.getLabelModel()
, e = this.scale
, i = e.getExtent()
, n = e.count();
if (i[1] - i[0] < 1)
return 0;
var o = i[0]
, a = this.dataToCoord(o + 1) - this.dataToCoord(o)
, r = Math.abs(a)
, s = gn(o, t.getFont(), "center", "top")
, l = Math.max(s.height, 7) / r;
isNaN(l) && (l = 1 / 0);
var u = Math.max(0, Math.floor(l))
, h = DT(this.model)
, c = h.lastAutoInterval
, d = h.lastTickCount;
return null != c && null != d && Math.abs(c - u) <= 1 && Math.abs(d - n) <= 1 && u < c ? u = c : (h.lastTickCount = n,
h.lastAutoInterval = u),
u
}
},
w(CT, Gg);
function LT(t) {
this.name = t || "",
this.cx = 0,
this.cy = 0,
this._radiusAxis = new AT,
this._angleAxis = new CT,
this._radiusAxis.polar = this._angleAxis.polar = this
}
LT.prototype = {
type: "polar",
axisPointerEnabled: !0,
constructor: LT,
dimensions: ["radius", "angle"],
model: null,
containPoint: function(t) {
var e = this.pointToCoord(t);
return this._radiusAxis.contain(e[0]) && this._angleAxis.contain(e[1])
},
containData: function(t) {
return this._radiusAxis.containData(t[0]) && this._angleAxis.containData(t[1])
},
getAxis: function(t) {
return this["_" + t + "Axis"]
},
getAxes: function() {
return [this._radiusAxis, this._angleAxis]
},
getAxesByScale: function(t) {
var e = []
, i = this._angleAxis
, n = this._radiusAxis;
return i.scale.type === t && e.push(i),
n.scale.type === t && e.push(n),
e
},
getAngleAxis: function() {
return this._angleAxis
},
getRadiusAxis: function() {
return this._radiusAxis
},
getOtherAxis: function(t) {
var e = this._angleAxis;
return t === e ? this._radiusAxis : e
},
getBaseAxis: function() {
return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAngleAxis()
},
getTooltipAxes: function(t) {
var e = null != t && "auto" !== t ? this.getAxis(t) : this.getBaseAxis();
return {
baseAxes: [e],
otherAxes: [this.getOtherAxis(e)]
}
},
dataToPoint: function(t, e) {
return this.coordToPoint([this._radiusAxis.dataToRadius(t[0], e), this._angleAxis.dataToAngle(t[1], e)])
},
pointToData: function(t, e) {
var i = this.pointToCoord(t);
return [this._radiusAxis.radiusToData(i[0], e), this._angleAxis.angleToData(i[1], e)]
},
pointToCoord: function(t) {
var e = t[0] - this.cx
, i = t[1] - this.cy
, n = this.getAngleAxis()
, o = n.getExtent()
, a = Math.min(o[0], o[1])
, r = Math.max(o[0], o[1]);
n.inverse ? a = r - 360 : r = a + 360;
var s = Math.sqrt(e * e + i * i);
e /= s,
i /= s;
for (var l = Math.atan2(-i, e) / Math.PI * 180, u = l < a ? 1 : -1; l < a || r < l; )
l += 360 * u;
return [s, l]
},
coordToPoint: function(t) {
var e = t[0]
, i = t[1] / 180 * Math.PI;
return [Math.cos(i) * e + this.cx, -Math.sin(i) * e + this.cy]
},
getArea: function() {
var t = this.getAngleAxis()
, e = this.getRadiusAxis().getExtent().slice();
e[0] > e[1] && e.reverse();
var i = t.getExtent()
, n = Math.PI / 180;
return {
cx: this.cx,
cy: this.cy,
r0: e[0],
r: e[1],
startAngle: -i[0] * n,
endAngle: -i[1] * n,
clockwise: t.inverse,
contain: function(t, e) {
var i = t - this.cx
, n = e - this.cy
, o = i * i + n * n
, a = this.r
, r = this.r0;
return o <= a * a && r * r <= o
}
}
}
};
var kT = ku.extend({
type: "polarAxis",
axis: null,
getCoordSysModel: function() {
return this.ecModel.queryComponents({
mainType: "polar",
index: this.option.polarIndex,
id: this.option.polarId
})[0]
}
});
m(kT.prototype, dg);
var PT = {
splitNumber: 5
};
function NT(t, e) {
return e.type || (e.data ? "category" : "value")
}
function OT(t, e) {
var i = this
, n = i.getAngleAxis()
, o = i.getRadiusAxis();
if (n.scale.setExtent(1 / 0, -1 / 0),
o.scale.setExtent(1 / 0, -1 / 0),
t.eachSeries(function(t) {
if (t.coordinateSystem === i) {
var e = t.getData();
E(e.mapDimension("radius", !0), function(t) {
o.scale.unionExtentFromData(e, pp(e, t))
}),
E(e.mapDimension("angle", !0), function(t) {
n.scale.unionExtentFromData(e, pp(e, t))
})
}
}),
rg(n.scale, n.model),
rg(o.scale, o.model),
"category" === n.type && !n.onBand) {
var a = n.getExtent()
, r = 360 / n.scale.count();
n.inverse ? a[1] += r : a[1] -= r,
n.setExtent(a[0], a[1])
}
}
function ET(t, e) {
if (t.type = e.get("type"),
t.scale = sg(e),
t.onBand = e.get("boundaryGap") && "category" === t.type,
t.inverse = e.get("inverse"),
"angleAxis" === e.mainType) {
t.inverse ^= e.get("clockwise");
var i = e.get("startAngle");
t.setExtent(i, i + (t.inverse ? -360 : 360))
}
(e.axis = t).model = e
}
Gm("angle", kT, NT, {
startAngle: 90,
clockwise: !0,
splitNumber: 12,
axisLabel: {
rotate: !1
}
}),
Gm("radius", kT, NT, PT),
Tf({
type: "polar",
dependencies: ["polarAxis", "angleAxis"],
coordinateSystem: null,
findAxisModel: function(t) {
var e;
return this.ecModel.eachComponent(t, function(t) {
t.getCoordSysModel() === this && (e = t)
}, this),
e
},
defaultOption: {
zlevel: 0,
z: 0,
center: ["50%", "50%"],
radius: "80%"
}
}),
lh.register("polar", {
dimensions: LT.prototype.dimensions,
create: function(i, s) {
var l = [];
return i.eachComponent("polar", function(t, e) {
var i = new LT(e);
i.update = OT;
var n = i.getRadiusAxis()
, o = i.getAngleAxis()
, a = t.findAxisModel("radiusAxis")
, r = t.findAxisModel("angleAxis");
ET(n, a),
ET(o, r),
function(t, e, i) {
var n = e.get("center")
, o = i.getWidth()
, a = i.getHeight();
t.cx = Rl(n[0], o),
t.cy = Rl(n[1], a);
var r = t.getRadiusAxis()
, s = Math.min(o, a) / 2
, l = e.get("radius");
null == l ? l = [0, "100%"] : L(l) || (l = [0, l]),
l = [Rl(l[0], s), Rl(l[1], s)],
r.inverse ? r.setExtent(l[1], l[0]) : r.setExtent(l[0], l[1])
}(i, t, s),
l.push(i),
(t.coordinateSystem = i).model = t
}),
i.eachSeries(function(t) {
if ("polar" === t.get("coordinateSystem")) {
var e = i.queryComponents({
mainType: "polar",
index: t.get("polarIndex"),
id: t.get("polarId")
})[0];
t.coordinateSystem = e.coordinateSystem
}
}),
l
}
});
var RT = ["axisLine", "axisLabel", "axisTick", "minorTick", "splitLine", "minorSplitLine", "splitArea"];
function zT(t, e, i) {
e[1] > e[0] && (e = e.slice().reverse());
var n = t.coordToPoint([e[0], i])
, o = t.coordToPoint([e[1], i]);
return {
x1: n[0],
y1: n[1],
x2: o[0],
y2: o[1]
}
}
function BT(t) {
return t.getRadiusAxis().inverse ? 0 : 1
}
function VT(t) {
var e = t[0]
, i = t[t.length - 1];
e && i && Math.abs(Math.abs(e.coord - i.coord) - 360) < 1e-4 && t.pop()
}
mv.extend({
type: "angleAxis",
axisPointerClass: "PolarAxisPointer",
render: function(e, t) {
if (this.group.removeAll(),
e.get("show")) {
var i = e.axis
, n = i.polar
, o = n.getRadiusAxis().getExtent()
, a = i.getTicksCoords()
, r = i.getMinorTicksCoords()
, s = O(i.getViewLabels(), function(t) {
return (t = k(t)).coord = i.dataToCoord(t.tickValue),
t
});
VT(s),
VT(a),
E(RT, function(t) {
!e.get(t + ".show") || i.scale.isBlank() && "axisLine" !== t || this["_" + t](e, n, a, r, o, s)
}, this)
}
},
_axisLine: function(t, e, i, n, o) {
var a, r = t.getModel("axisLine.lineStyle"), s = BT(e), l = s ? 0 : 1;
(a = 0 === o[l] ? new Yr({
shape: {
cx: e.cx,
cy: e.cy,
r: o[s]
},
style: r.getLineStyle(),
z2: 1,
silent: !0
}) : new Kr({
shape: {
cx: e.cx,
cy: e.cy,
r: o[s],
r0: o[l]
},
style: r.getLineStyle(),
z2: 1,
silent: !0
})).style.fill = null,
this.group.add(a)
},
_axisTick: function(t, e, i, n, o) {
var a = t.getModel("axisTick")
, r = (a.get("inside") ? -1 : 1) * a.get("length")
, s = o[BT(e)]
, l = O(i, function(t) {
return new ls({
shape: zT(e, [s, s + r], t.coord)
})
});
this.group.add(Es(l, {
style: D(a.getModel("lineStyle").getLineStyle(), {
stroke: t.get("axisLine.lineStyle.color")
})
}))
},
_minorTick: function(t, e, i, n, o) {
if (n.length) {
for (var a = t.getModel("axisTick"), r = t.getModel("minorTick"), s = (a.get("inside") ? -1 : 1) * r.get("length"), l = o[BT(e)], u = [], h = 0; h < n.length; h++)
for (var c = 0; c < n[h].length; c++)
u.push(new ls({
shape: zT(e, [l, l + s], n[h][c].coord)
}));
this.group.add(Es(u, {
style: D(r.getModel("lineStyle").getLineStyle(), D(a.getLineStyle(), {
stroke: t.get("axisLine.lineStyle.color")
}))
}))
}
},
_axisLabel: function(c, d, t, e, f, i) {
var p = c.getCategories(!0)
, g = c.getModel("axisLabel")
, m = g.get("margin")
, v = c.get("triggerEvent");
E(i, function(t, e) {
var i = g
, n = t.tickValue
, o = f[BT(d)]
, a = d.coordToPoint([o + m, t.coord])
, r = d.cx
, s = d.cy
, l = Math.abs(a[0] - r) / o < .3 ? "center" : a[0] > r ? "left" : "right"
, u = Math.abs(a[1] - s) / o < .3 ? "middle" : a[1] > s ? "top" : "bottom";
p && p[n] && p[n].textStyle && (i = new Cl(p[n].textStyle,g,g.ecModel));
var h = new Ur({
silent: Qm.isLabelSilent(c)
});
this.group.add(h),
nl(h.style, i, {
x: a[0],
y: a[1],
textFill: i.getTextColor() || c.get("axisLine.lineStyle.color"),
text: t.formattedLabel,
textAlign: l,
textVerticalAlign: u
}),
v && (h.eventData = Qm.makeAxisEventDataBase(c),
h.eventData.targetType = "axisLabel",
h.eventData.value = t.rawLabel)
}, this)
},
_splitLine: function(t, e, i, n, o) {
var a = t.getModel("splitLine").getModel("lineStyle")
, r = a.get("color")
, s = 0;
r = r instanceof Array ? r : [r];
for (var l = [], u = 0; u < i.length; u++) {
var h = s++ % r.length;
l[h] = l[h] || [],
l[h].push(new ls({
shape: zT(e, o, i[u].coord)
}))
}
for (u = 0; u < l.length; u++)
this.group.add(Es(l[u], {
style: D({
stroke: r[u % r.length]
}, a.getLineStyle()),
silent: !0,
z: t.get("z")
}))
},
_minorSplitLine: function(t, e, i, n, o) {
if (n.length) {
for (var a = t.getModel("minorSplitLine").getModel("lineStyle"), r = [], s = 0; s < n.length; s++)
for (var l = 0; l < n[s].length; l++)
r.push(new ls({
shape: zT(e, o, n[s][l].coord)
}));
this.group.add(Es(r, {
style: a.getLineStyle(),
silent: !0,
z: t.get("z")
}))
}
},
_splitArea: function(t, e, i, n, o) {
if (i.length) {
var a = t.getModel("splitArea").getModel("areaStyle")
, r = a.get("color")
, s = 0;
r = r instanceof Array ? r : [r];
for (var l = [], u = Math.PI / 180, h = -i[0].coord * u, c = Math.min(o[0], o[1]), d = Math.max(o[0], o[1]), f = t.get("clockwise"), p = 1; p < i.length; p++) {
var g = s++ % r.length;
l[g] = l[g] || [],
l[g].push(new qr({
shape: {
cx: e.cx,
cy: e.cy,
r0: c,
r: d,
startAngle: h,
endAngle: -i[p].coord * u,
clockwise: f
},
silent: !0
})),
h = -i[p].coord * u
}
for (p = 0; p < l.length; p++)
this.group.add(Es(l[p], {
style: D({
fill: r[p % r.length]
}, a.getAreaStyle()),
silent: !0
}))
}
}
});
var GT = ["axisLine", "axisTickLabel", "axisName"]
, FT = ["splitLine", "splitArea", "minorSplitLine"];
mv.extend({
type: "radiusAxis",
axisPointerClass: "PolarAxisPointer",
render: function(e, t) {
if (this.group.removeAll(),
e.get("show")) {
var i = e.axis
, n = i.polar
, o = n.getAngleAxis()
, a = i.getTicksCoords()
, r = i.getMinorTicksCoords()
, s = o.getExtent()[0]
, l = i.getExtent()
, u = function(t, e, i) {
return {
position: [t.cx, t.cy],
rotation: i / 180 * Math.PI,
labelDirection: -1,
tickDirection: -1,
nameDirection: 1,
labelRotate: e.getModel("axisLabel").get("rotate"),
z2: 1
}
}(n, e, s)
, h = new Qm(e,u);
E(GT, h.add, h),
this.group.add(h.getGroup()),
E(FT, function(t) {
e.get(t + ".show") && !i.scale.isBlank() && this["_" + t](e, n, s, l, a, r)
}, this)
}
},
_splitLine: function(t, e, i, n, o) {
var a = t.getModel("splitLine").getModel("lineStyle")
, r = a.get("color")
, s = 0;
r = r instanceof Array ? r : [r];
for (var l = [], u = 0; u < o.length; u++) {
var h = s++ % r.length;
l[h] = l[h] || [],
l[h].push(new Yr({
shape: {
cx: e.cx,
cy: e.cy,
r: o[u].coord
}
}))
}
for (u = 0; u < l.length; u++)
this.group.add(Es(l[u], {
style: D({
stroke: r[u % r.length],
fill: null
}, a.getLineStyle()),
silent: !0
}))
},
_minorSplitLine: function(t, e, i, n, o, a) {
if (a.length) {
for (var r = t.getModel("minorSplitLine").getModel("lineStyle"), s = [], l = 0; l < a.length; l++)
for (var u = 0; u < a[l].length; u++)
s.push(new Yr({
shape: {
cx: e.cx,
cy: e.cy,
r: a[l][u].coord
}
}));
this.group.add(Es(s, {
style: D({
fill: null
}, r.getLineStyle()),
silent: !0
}))
}
},
_splitArea: function(t, e, i, n, o) {
if (o.length) {
var a = t.getModel("splitArea").getModel("areaStyle")
, r = a.get("color")
, s = 0;
r = r instanceof Array ? r : [r];
for (var l = [], u = o[0].coord, h = 1; h < o.length; h++) {
var c = s++ % r.length;
l[c] = l[c] || [],
l[c].push(new qr({
shape: {
cx: e.cx,
cy: e.cy,
r0: u,
r: o[h].coord,
startAngle: 0,
endAngle: 2 * Math.PI
},
silent: !0
})),
u = o[h].coord
}
for (h = 0; h < l.length; h++)
this.group.add(Es(l[h], {
style: D({
fill: r[h % r.length]
}, a.getAreaStyle()),
silent: !0
}))
}
}
});
var WT = wI.extend({
makeElOption: function(t, e, i, n, o) {
var a = i.axis;
"angle" === a.dim && (this.animationThreshold = Math.PI / 18);
var r, s = a.polar, l = s.getOtherAxis(a).getExtent();
r = a["dataTo" + fu(a.dim)](e);
var u = n.get("type");
if (u && "none" !== u) {
var h = TI(n)
, c = HT[u](a, s, r, l, h);
c.style = h,
t.graphicKey = c.type,
t.pointer = c
}
var d = n.get("label.margin");
AI(t, i, n, o, function(t, e, i, n, o) {
var a = e.axis
, r = a.dataToCoord(t)
, s = n.getAngleAxis().getExtent()[0];
s = s / 180 * Math.PI;
var l, u, h, c = n.getRadiusAxis().getExtent();
if ("radius" === a.dim) {
var d = ae();
he(d, d, s),
ue(d, d, [n.cx, n.cy]),
l = pl([r, -o], d);
var f = e.getModel("axisLabel").get("rotate") || 0
, p = Qm.innerTextLayout(s, f * Math.PI / 180, -1);
u = p.textAlign,
h = p.textVerticalAlign
} else {
var g = c[1];
l = n.coordToPoint([g + o, r]);
var m = n.cx
, v = n.cy;
u = Math.abs(l[0] - m) / g < .3 ? "center" : l[0] > m ? "left" : "right",
h = Math.abs(l[1] - v) / g < .3 ? "middle" : l[1] > v ? "top" : "bottom"
}
return {
position: l,
align: u,
verticalAlign: h
}
}(e, i, 0, s, d))
}
});
var HT = {
line: function(t, e, i, n, o) {
return "angle" === t.dim ? {
type: "Line",
shape: kI(e.coordToPoint([n[0], i]), e.coordToPoint([n[1], i]))
} : {
type: "Circle",
shape: {
cx: e.cx,
cy: e.cy,
r: i
}
}
},
shadow: function(t, e, i, n, o) {
var a = Math.max(1, t.getBandWidth())
, r = Math.PI / 180;
return "angle" === t.dim ? {
type: "Sector",
shape: NI(e.cx, e.cy, n[0], n[1], (-i - a / 2) * r, (a / 2 - i) * r)
} : {
type: "Sector",
shape: NI(e.cx, e.cy, i - a / 2, i + a / 2, 0, 2 * Math.PI)
}
}
};
function ZT(n, t) {
t.update = "updateView",
_f(t, function(t, e) {
var i = {};
return e.eachComponent({
mainType: "geo",
query: t
}, function(e) {
e[n](t.name),
E(e.coordinateSystem.regions, function(t) {
i[t.name] = e.isSelected(t.name) || !1
})
}),
{
selected: i,
name: t.name
}
})
}
mv.registerAxisPointerClass("PolarAxisPointer", WT),
bf(T(function(t, e, i) {
var N = {}
, O = function(t) {
var g = {};
E(t, function(t, e) {
var i = t.getData()
, n = t.coordinateSystem
, o = n.getBaseAxis()
, a = TT(n, o)
, r = o.getExtent()
, s = "category" === o.type ? o.getBandWidth() : Math.abs(r[1] - r[0]) / i.count()
, l = g[a] || {
bandWidth: s,
remainedWidth: s,
autoWidthCount: 0,
categoryGap: "20%",
gap: "30%",
stacks: {}
}
, u = l.stacks;
g[a] = l;
var h = IT(t);
u[h] || l.autoWidthCount++,
u[h] = u[h] || {
width: 0,
maxWidth: 0
};
var c = Rl(t.get("barWidth"), s)
, d = Rl(t.get("barMaxWidth"), s)
, f = t.get("barGap")
, p = t.get("barCategoryGap");
c && !u[h].width && (c = Math.min(l.remainedWidth, c),
u[h].width = c,
l.remainedWidth -= c),
d && (u[h].maxWidth = d),
null != f && (l.gap = f),
null != p && (l.categoryGap = p)
});
var d = {};
return E(g, function(t, i) {
d[i] = {};
var e = t.stacks
, n = t.bandWidth
, o = Rl(t.categoryGap, n)
, a = Rl(t.gap, 1)
, r = t.remainedWidth
, s = t.autoWidthCount
, l = (r - o) / (s + (s - 1) * a);
l = Math.max(l, 0),
E(e, function(t, e) {
var i = t.maxWidth;
i && i < l && (i = Math.min(i, r),
t.width && (i = Math.min(i, t.width)),
r -= i,
t.width = i,
s--)
}),
l = (r - o) / (s + (s - 1) * a),
l = Math.max(l, 0);
var u, h = 0;
E(e, function(t, e) {
t.width || (t.width = l),
h += (u = t).width * (1 + a)
}),
u && (h -= u.width * a);
var c = -h / 2;
E(e, function(t, e) {
d[i][e] = d[i][e] || {
offset: c,
width: t.width
},
c += t.width * (1 + a)
})
}),
d
}(M(e.getSeriesByType(t), function(t) {
return !e.isSeriesFiltered(t) && t.coordinateSystem && "polar" === t.coordinateSystem.type
}));
e.eachSeriesByType(t, function(t) {
if ("polar" === t.coordinateSystem.type) {
var e = t.getData()
, i = t.coordinateSystem
, n = i.getBaseAxis()
, o = TT(i, n)
, a = IT(t)
, r = O[o][a]
, s = r.offset
, l = r.width
, u = i.getOtherAxis(n)
, h = t.coordinateSystem.cx
, c = t.coordinateSystem.cy
, d = t.get("barMinHeight") || 0
, f = t.get("barMinAngle") || 0;
N[a] = N[a] || [];
for (var p = e.mapDimension(u.dim), g = e.mapDimension(n.dim), m = fp(e, p), v = "radius" !== n.dim || !t.get("roundCap", !0), y = u.getExtent()[0], x = 0, _ = e.count(); x < _; x++) {
var w, b, S, M, I = e.get(p, x), T = e.get(g, x), A = 0 <= I ? "p" : "n", D = y;
if (m && (N[a][T] || (N[a][T] = {
p: y,
n: y
}),
D = N[a][T][A]),
"radius" === u.dim) {
var C = u.dataToRadius(I) - y
, L = n.dataToAngle(T);
Math.abs(C) < d && (C = (C < 0 ? -1 : 1) * d),
b = (w = D) + C,
M = (S = L - s) - l,
m && (N[a][T][A] = b)
} else {
var k = u.dataToAngle(I, v) - y
, P = n.dataToRadius(T);
Math.abs(k) < f && (k = (k < 0 ? -1 : 1) * f),
b = (w = P + s) + l,
M = (S = D) + k,
m && (N[a][T][A] = M)
}
e.setItemLayout(x, {
cx: h,
cy: c,
r0: w,
r: b,
startAngle: -S * Math.PI / 180,
endAngle: -M * Math.PI / 180
})
}
}
}, this)
}, "bar")),
Af({
type: "polar"
}),
b(ku.extend({
type: "geo",
coordinateSystem: null,
layoutMode: "box",
init: function(t) {
ku.prototype.init.apply(this, arguments),
Go(t, "label", ["show"])
},
optionUpdated: function() {
var t = this.option
, i = this;
t.regions = px.getFilledRegions(t.regions, t.map, t.nameMap),
this._optionModelMap = S(t.regions || [], function(t, e) {
return e.name && t.set(e.name, new Cl(e,i)),
t
}, Q()),
this.updateSelectedMap(t.regions)
},
defaultOption: {
zlevel: 0,
z: 0,
show: !0,
left: "center",
top: "center",
aspectScale: null,
silent: !1,
map: "",
boundingCoords: null,
center: null,
zoom: 1,
scaleLimit: null,
label: {
show: !1,
color: "#000"
},
itemStyle: {
borderWidth: .5,
borderColor: "#444",
color: "#eee"
},
emphasis: {
label: {
show: !0,
color: "rgb(100,0,0)"
},
itemStyle: {
color: "rgba(255,215,0,0.8)"
}
},
regions: []
},
getRegionModel: function(t) {
return this._optionModelMap.get(t) || new Cl(null,this,this.ecModel)
},
getFormattedLabel: function(t, e) {
var i = this.getRegionModel(t).get("label" + ("normal" === e ? "." : e + ".") + "formatter")
, n = {
name: t
};
return "function" == typeof i ? (n.status = e,
i(n)) : "string" == typeof i ? i.replace("{a}", null != t ? t : "") : void 0
},
setZoom: function(t) {
this.option.zoom = t
},
setCenter: function(t) {
this.option.center = t
}
}), jv),
Af({
type: "geo",
init: function(t, e) {
var i = new tx(e,!0);
this._mapDraw = i,
this.group.add(i.group)
},
render: function(t, e, i, n) {
if (!n || "geoToggleSelect" !== n.type || n.from !== this.uid) {
var o = this._mapDraw;
t.get("show") ? o.draw(t, e, i, this, n) : this._mapDraw.group.removeAll(),
this.group.silent = t.get("silent")
}
},
dispose: function() {
this._mapDraw && this._mapDraw.remove()
}
}),
ZT("toggleSelected", {
type: "geoToggleSelect",
event: "geoselectchanged"
}),
ZT("select", {
type: "geoSelect",
event: "geoselected"
}),
ZT("unSelect", {
type: "geoUnSelect",
event: "geounselected"
});
function UT(t, e, i) {
this._model = t
}
function XT(t, e, i, n) {
var o = i.calendarModel
, a = i.seriesModel
, r = o ? o.coordinateSystem : a ? a.coordinateSystem : null;
return r === this ? r[t](n) : null
}
UT.prototype = {
constructor: UT,
type: "calendar",
dimensions: ["time", "value"],
getDimensionsInfo: function() {
return [{
name: "time",
type: "time"
}, "value"]
},
getRangeInfo: function() {
return this._rangeInfo
},
getModel: function() {
return this._model
},
getRect: function() {
return this._rect
},
getCellWidth: function() {
return this._sw
},
getCellHeight: function() {
return this._sh
},
getOrient: function() {
return this._orient
},
getFirstDayOfWeek: function() {
return this._firstDayOfWeek
},
getDateInfo: function(t) {
var e = (t = Yl(t)).getFullYear()
, i = t.getMonth() + 1;
i = i < 10 ? "0" + i : i;
var n = t.getDate();
n = n < 10 ? "0" + n : n;
var o = t.getDay();
return {
y: e,
m: i,
d: n,
day: o = Math.abs((o + 7 - this.getFirstDayOfWeek()) % 7),
time: t.getTime(),
formatedDate: e + "-" + i + "-" + n,
date: t
}
},
getNextNDay: function(t, e) {
return 0 === (e = e || 0) || (t = new Date(this.getDateInfo(t).time)).setDate(t.getDate() + e),
this.getDateInfo(t)
},
update: function(t, e) {
this._firstDayOfWeek = +this._model.getModel("dayLabel").get("firstDay"),
this._orient = this._model.get("orient"),
this._lineWidth = this._model.getModel("itemStyle").getItemStyle().lineWidth || 0,
this._rangeInfo = this._getRangeInfo(this._initRangeOption());
var i = this._rangeInfo.weeks || 1
, n = ["width", "height"]
, o = this._model.get("cellSize").slice()
, a = this._model.getBoxLayoutParams()
, r = "horizontal" === this._orient ? [i, 7] : [7, i];
E([0, 1], function(t) {
u(o, t) && (a[n[t]] = o[t] * r[t])
});
var s = {
width: e.getWidth(),
height: e.getHeight()
}
, l = this._rect = bu(a, s);
function u(t, e) {
return null != t[e] && "auto" !== t[e]
}
E([0, 1], function(t) {
u(o, t) || (o[t] = l[n[t]] / r[t])
}),
this._sw = o[0],
this._sh = o[1]
},
dataToPoint: function(t, e) {
L(t) && (t = t[0]),
null == e && (e = !0);
var i = this.getDateInfo(t)
, n = this._rangeInfo
, o = i.formatedDate;
if (e && !(i.time >= n.start.time && i.time < n.end.time + 864e5))
return [NaN, NaN];
var a = i.day
, r = this._getRangeInfo([n.start.time, o]).nthWeek;
return "vertical" === this._orient ? [this._rect.x + a * this._sw + this._sw / 2, this._rect.y + r * this._sh + this._sh / 2] : [this._rect.x + r * this._sw + this._sw / 2, this._rect.y + a * this._sh + this._sh / 2]
},
pointToData: function(t) {
var e = this.pointToDate(t);
return e && e.time
},
dataToRect: function(t, e) {
var i = this.dataToPoint(t, e);
return {
contentShape: {
x: i[0] - (this._sw - this._lineWidth) / 2,
y: i[1] - (this._sh - this._lineWidth) / 2,
width: this._sw - this._lineWidth,
height: this._sh - this._lineWidth
},
center: i,
tl: [i[0] - this._sw / 2, i[1] - this._sh / 2],
tr: [i[0] + this._sw / 2, i[1] - this._sh / 2],
br: [i[0] + this._sw / 2, i[1] + this._sh / 2],
bl: [i[0] - this._sw / 2, i[1] + this._sh / 2]
}
},
pointToDate: function(t) {
var e = Math.floor((t[0] - this._rect.x) / this._sw) + 1
, i = Math.floor((t[1] - this._rect.y) / this._sh) + 1
, n = this._rangeInfo.range;
return "vertical" === this._orient ? this._getDateByWeeksAndDay(i, e - 1, n) : this._getDateByWeeksAndDay(e, i - 1, n)
},
convertToPixel: T(XT, "dataToPoint"),
convertFromPixel: T(XT, "pointToData"),
_initRangeOption: function() {
var t = this._model.get("range")
, e = t;
if (L(e) && 1 === e.length && (e = e[0]),
/^\d{4}$/.test(e) && (t = [e + "-01-01", e + "-12-31"]),
/^\d{4}[\/|-]\d{1,2}$/.test(e)) {
var i = this.getDateInfo(e)
, n = i.date;
n.setMonth(n.getMonth() + 1);
var o = this.getNextNDay(n, -1);
t = [i.formatedDate, o.formatedDate]
}
/^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(e) && (t = [e, e]);
var a = this._getRangeInfo(t);
return a.start.time > a.end.time && t.reverse(),
t
},
_getRangeInfo: function(t) {
var e;
(t = [this.getDateInfo(t[0]), this.getDateInfo(t[1])])[0].time > t[1].time && (e = !0,
t.reverse());
var i = Math.floor(t[1].time / 864e5) - Math.floor(t[0].time / 864e5) + 1
, n = new Date(t[0].time)
, o = n.getDate()
, a = t[1].date.getDate();
n.setDate(o + i - 1);
var r = n.getDate();
if (r !== a)
for (var s = 0 < n.getTime() - t[1].time ? 1 : -1; (r = n.getDate()) !== a && 0 < (n.getTime() - t[1].time) * s; )
i -= s,
n.setDate(r - s);
var l = Math.floor((i + t[0].day + 6) / 7)
, u = e ? 1 - l : l - 1;
return e && t.reverse(),
{
range: [t[0].formatedDate, t[1].formatedDate],
start: t[0],
end: t[1],
allDay: i,
weeks: l,
nthWeek: u,
fweek: t[0].day,
lweek: t[1].day
}
},
_getDateByWeeksAndDay: function(t, e, i) {
var n = this._getRangeInfo(i);
if (t > n.weeks || 0 === t && e < n.fweek || t === n.weeks && e > n.lweek)
return !1;
var o = 7 * (t - 1) - n.fweek + e
, a = new Date(n.start.time);
return a.setDate(n.start.d + o),
this.getDateInfo(a)
}
},
UT.dimensions = UT.prototype.dimensions,
UT.getDimensionsInfo = UT.prototype.getDimensionsInfo,
UT.create = function(i, n) {
var o = [];
return i.eachComponent("calendar", function(t) {
var e = new UT(t,i,n);
o.push(e),
t.coordinateSystem = e
}),
i.eachSeries(function(t) {
"calendar" === t.get("coordinateSystem") && (t.coordinateSystem = o[t.get("calendarIndex") || 0])
}),
o
}
,
lh.register("calendar", UT);
var YT = ku.extend({
type: "calendar",
coordinateSystem: null,
defaultOption: {
zlevel: 0,
z: 2,
left: 80,
top: 60,
cellSize: 20,
orient: "horizontal",
splitLine: {
show: !0,
lineStyle: {
color: "#000",
width: 1,
type: "solid"
}
},
itemStyle: {
color: "#fff",
borderWidth: 1,
borderColor: "#ccc"
},
dayLabel: {
show: !0,
firstDay: 0,
position: "start",
margin: "50%",
nameMap: "en",
color: "#000"
},
monthLabel: {
show: !0,
position: "start",
margin: 5,
align: "center",
nameMap: "en",
formatter: null,
color: "#000"
},
yearLabel: {
show: !0,
position: null,
margin: 30,
formatter: null,
color: "#ccc",
fontFamily: "sans-serif",
fontWeight: "bolder",
fontSize: 20
}
},
init: function(t, e, i, n) {
var o = Iu(t);
YT.superApply(this, "init", arguments),
jT(t, o)
},
mergeOption: function(t, e) {
YT.superApply(this, "mergeOption", arguments),
jT(this.option, t)
}
});
function jT(t, e) {
var i = t.cellSize;
L(i) ? 1 === i.length && (i[1] = i[0]) : i = t.cellSize = [i, i];
var n = O([0, 1], function(t) {
return function(t, e) {
return null != t[xu[e][0]] || null != t[xu[e][1]] && null != t[xu[e][2]]
}(e, t) && (i[t] = "auto"),
null != i[t] && "auto" !== i[t]
});
Mu(t, e, {
type: "box",
ignoreSize: n
})
}
var qT = {
EN: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
CN: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
}
, KT = {
EN: ["S", "M", "T", "W", "T", "F", "S"],
CN: ["日", "一", "二", "三", "四", "五", "六"]
};
Af({
type: "calendar",
_tlpoints: null,
_blpoints: null,
_firstDayOfMonth: null,
_firstDayPoints: null,
render: function(t, e, i) {
var n = this.group;
n.removeAll();
var o = t.coordinateSystem
, a = o.getRangeInfo()
, r = o.getOrient();
this._renderDayRect(t, a, n),
this._renderLines(t, a, r, n),
this._renderYearText(t, a, r, n),
this._renderMonthText(t, r, n),
this._renderWeekText(t, a, r, n)
},
_renderDayRect: function(t, e, i) {
for (var n = t.coordinateSystem, o = t.getModel("itemStyle").getItemStyle(), a = n.getCellWidth(), r = n.getCellHeight(), s = e.start.time; s <= e.end.time; s = n.getNextNDay(s, 1).time) {
var l = n.dataToRect([s], !1).tl
, u = new rs({
shape: {
x: l[0],
y: l[1],
width: a,
height: r
},
cursor: "default",
style: o
});
i.add(u)
}
},
_renderLines: function(i, t, n, o) {
var a = this
, r = i.coordinateSystem
, s = i.getModel("splitLine.lineStyle").getLineStyle()
, l = i.get("splitLine.show")
, e = s.lineWidth;
this._tlpoints = [],
this._blpoints = [],
this._firstDayOfMonth = [],
this._firstDayPoints = [];
for (var u = t.start, h = 0; u.time <= t.end.time; h++) {
d(u.formatedDate),
0 === h && (u = r.getDateInfo(t.start.y + "-" + t.start.m));
var c = u.date;
c.setMonth(c.getMonth() + 1),
u = r.getDateInfo(c)
}
function d(t) {
a._firstDayOfMonth.push(r.getDateInfo(t)),
a._firstDayPoints.push(r.dataToRect([t], !1).tl);
var e = a._getLinePointsOfOneWeek(i, t, n);
a._tlpoints.push(e[0]),
a._blpoints.push(e[e.length - 1]),
l && a._drawSplitline(e, s, o)
}
d(r.getNextNDay(t.end.time, 1).formatedDate),
l && this._drawSplitline(a._getEdgesPoints(a._tlpoints, e, n), s, o),
l && this._drawSplitline(a._getEdgesPoints(a._blpoints, e, n), s, o)
},
_getEdgesPoints: function(t, e, i) {
var n = [t[0].slice(), t[t.length - 1].slice()]
, o = "horizontal" === i ? 0 : 1;
return n[0][o] = n[0][o] - e / 2,
n[1][o] = n[1][o] + e / 2,
n
},
_drawSplitline: function(t, e, i) {
var n = new ts({
z2: 20,
shape: {
points: t
},
style: e
});
i.add(n)
},
_getLinePointsOfOneWeek: function(t, e, i) {
var n = t.coordinateSystem;
e = n.getDateInfo(e);
for (var o = [], a = 0; a < 7; a++) {
var r = n.getNextNDay(e.time, a)
, s = n.dataToRect([r.time], !1);
o[2 * r.day] = s.tl,
o[2 * r.day + 1] = s["horizontal" === i ? "bl" : "tr"]
}
return o
},
_formatterLabel: function(t, e) {
return "string" == typeof t && t ? uu(t, e) : "function" == typeof t ? t(e) : e.nameMap
},
_yearTextPositionControl: function(t, e, i, n, o) {
e = e.slice();
var a = ["center", "bottom"];
"bottom" === n ? (e[1] += o,
a = ["center", "top"]) : "left" === n ? e[0] -= o : "right" === n ? (e[0] += o,
a = ["center", "top"]) : e[1] -= o;
var r = 0;
return "left" !== n && "right" !== n || (r = Math.PI / 2),
{
rotation: r,
position: e,
style: {
textAlign: a[0],
textVerticalAlign: a[1]
}
}
},
_renderYearText: function(t, e, i, n) {
var o = t.getModel("yearLabel");
if (o.get("show")) {
var a = o.get("margin")
, r = o.get("position");
r = r || ("horizontal" !== i ? "top" : "left");
var s = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]]
, l = (s[0][0] + s[1][0]) / 2
, u = (s[0][1] + s[1][1]) / 2
, h = "horizontal" === i ? 0 : 1
, c = {
top: [l, s[h][1]],
bottom: [l, s[1 - h][1]],
left: [s[1 - h][0], u],
right: [s[h][0], u]
}
, d = e.start.y;
+e.end.y > +e.start.y && (d = d + "-" + e.end.y);
var f = o.get("formatter")
, p = {
start: e.start.y,
end: e.end.y,
nameMap: d
}
, g = this._formatterLabel(f, p)
, m = new Ur({
z2: 30
});
nl(m.style, o, {
text: g
}),
m.attr(this._yearTextPositionControl(m, c[r], i, r, a)),
n.add(m)
}
},
_monthTextPositionControl: function(t, e, i, n, o) {
var a = "left"
, r = "top"
, s = t[0]
, l = t[1];
return "horizontal" === i ? (l += o,
e && (a = "center"),
"start" === n && (r = "bottom")) : (s += o,
e && (r = "middle"),
"start" === n && (a = "right")),
{
x: s,
y: l,
textAlign: a,
textVerticalAlign: r
}
},
_renderMonthText: function(t, e, i) {
var n = t.getModel("monthLabel");
if (n.get("show")) {
var o = n.get("nameMap")
, a = n.get("margin")
, r = n.get("position")
, s = n.get("align")
, l = [this._tlpoints, this._blpoints];
R(o) && (o = qT[o.toUpperCase()] || []);
var u = "start" === r ? 0 : 1
, h = "horizontal" === e ? 0 : 1;
a = "start" === r ? -a : a;
for (var c = "center" === s, d = 0; d < l[u].length - 1; d++) {
var f = l[u][d].slice()
, p = this._firstDayOfMonth[d];
if (c) {
var g = this._firstDayPoints[d];
f[h] = (g[h] + l[0][d + 1][h]) / 2
}
var m = n.get("formatter")
, v = o[+p.m - 1]
, y = {
yyyy: p.y,
yy: (p.y + "").slice(2),
MM: p.m,
M: +p.m,
nameMap: v
}
, x = this._formatterLabel(m, y)
, _ = new Ur({
z2: 30
});
P(nl(_.style, n, {
text: x
}), this._monthTextPositionControl(f, c, e, r, a)),
i.add(_)
}
}
},
_weekTextPositionControl: function(t, e, i, n, o) {
var a = "center"
, r = "middle"
, s = t[0]
, l = t[1]
, u = "start" === i;
return "horizontal" === e ? (s = s + n + (u ? 1 : -1) * o[0] / 2,
a = u ? "right" : "left") : (l = l + n + (u ? 1 : -1) * o[1] / 2,
r = u ? "bottom" : "top"),
{
x: s,
y: l,
textAlign: a,
textVerticalAlign: r
}
},
_renderWeekText: function(t, e, i, n) {
var o = t.getModel("dayLabel");
if (o.get("show")) {
var a = t.coordinateSystem
, r = o.get("position")
, s = o.get("nameMap")
, l = o.get("margin")
, u = a.getFirstDayOfWeek();
R(s) && (s = KT[s.toUpperCase()] || []);
var h = a.getNextNDay(e.end.time, 7 - e.lweek).time
, c = [a.getCellWidth(), a.getCellHeight()];
l = Rl(l, c["horizontal" === i ? 0 : 1]),
"start" === r && (h = a.getNextNDay(e.start.time, -(7 + e.fweek)).time,
l = -l);
for (var d = 0; d < 7; d++) {
var f, p = a.getNextNDay(h, d), g = a.dataToRect([p.time], !1).center;
f = Math.abs((d + u) % 7);
var m = new Ur({
z2: 30
});
P(nl(m.style, o, {
text: s[f]
}), this._weekTextPositionControl(g, i, r, l, c)),
n.add(m)
}
}
}
});
var $T = {
path: null,
compoundPath: null,
group: Ci,
image: Qn,
text: Ur
};
yf(function(t) {
var e = t.graphic;
L(e) ? e[0] && e[0].elements ? t.graphic = [t.graphic[0]] : t.graphic = [{
elements: e
}] : e && !e.elements && (t.graphic = [{
elements: [e]
}])
});
var JT = Tf({
type: "graphic",
defaultOption: {
elements: [],
parentId: null
},
_elOptionsToUpdate: null,
mergeOption: function(t) {
var e = this.option.elements;
this.option.elements = null,
JT.superApply(this, "mergeOption", arguments),
this.option.elements = e
},
optionUpdated: function(t, e) {
var i = this.option
, n = (e ? i : t).elements
, o = i.elements = e ? [] : i.elements
, a = [];
this._flatten(n, a);
var r = Ho(o, a);
Zo(r);
var s = this._elOptionsToUpdate = [];
E(r, function(t, e) {
var i = t.option;
i && (s.push(i),
function(t, e) {
var i = t.exist;
if (e.id = t.keyInfo.id,
!e.type && i && (e.type = i.type),
null == e.parentId) {
var n = e.parentOption;
n ? e.parentId = n.id : i && (e.parentId = i.parentId)
}
e.parentOption = null
}(t, i),
function(t, e, i) {
var n = P({}, i)
, o = t[e]
, a = i.$action || "merge";
"merge" === a ? o ? (m(o, n, !0),
Mu(o, n, {
ignoreSize: !0
}),
Tu(i, o)) : t[e] = n : "replace" === a ? t[e] = n : "remove" === a && o && (t[e] = null)
}(o, e, i),
function(t, e) {
if (!t)
return;
t.hv = e.hv = [eA(e, ["left", "right"]), eA(e, ["top", "bottom"])],
"group" === t.type && (null == t.width && (t.width = e.width = 0),
null == t.height && (t.height = e.height = 0))
}(o[e], i))
}, this);
for (var l = o.length - 1; 0 <= l; l--)
null == o[l] ? o.splice(l, 1) : delete o[l].$action
},
_flatten: function(t, i, n) {
E(t, function(t) {
if (t) {
n && (t.parentOption = n),
i.push(t);
var e = t.children;
"group" === t.type && e && this._flatten(e, i, t),
delete t.children
}
}, this)
},
useElOptionsToUpdate: function() {
var t = this._elOptionsToUpdate;
return this._elOptionsToUpdate = null,
t
}
});
function QT(t, e, i, n) {
var o = i.type
, a = new ($T.hasOwnProperty(o) ? $T[o] : ks(o))(i);
e.add(a),
n.set(t, a),
a.__ecGraphicId = t
}
function tA(t, e) {
var i = t && t.parent;
i && ("group" === t.type && t.traverse(function(t) {
tA(t, e)
}),
e.removeKey(t.__ecGraphicId),
i.remove(t))
}
function eA(e, t) {
var i;
return E(t, function(t) {
null != e[t] && "auto" !== e[t] && (i = !0)
}),
i
}
Af({
type: "graphic",
init: function(t, e) {
this._elMap = Q(),
this._lastGraphicModel
},
render: function(t, e, i) {
t !== this._lastGraphicModel && this._clear(),
this._lastGraphicModel = t,
this._updateElements(t),
this._relocate(t, i)
},
_updateElements: function(u) {
var t = u.useElOptionsToUpdate();
if (t) {
var h = this._elMap
, c = this.group;
E(t, function(t) {
var e = t.$action
, i = t.id
, n = h.get(i)
, o = t.parentId
, a = null != o ? h.get(o) : c
, r = t.style;
"text" === t.type && r && (t.hv && t.hv[1] && (r.textVerticalAlign = r.textBaseline = null),
!r.hasOwnProperty("textFill") && r.fill && (r.textFill = r.fill),
!r.hasOwnProperty("textStroke") && r.stroke && (r.textStroke = r.stroke));
var s = function(e) {
return e = P({}, e),
E(["id", "parentId", "$action", "hv", "bounding"].concat(yu), function(t) {
delete e[t]
}),
e
}(t);
e && "merge" !== e ? "replace" === e ? (tA(n, h),
QT(i, a, s, h)) : "remove" === e && tA(n, h) : n ? n.attr(s) : QT(i, a, s, h);
var l = h.get(i);
l && (l.__ecGraphicWidthOption = t.width,
l.__ecGraphicHeightOption = t.height,
function(t, e) {
var i = t.eventData;
t.silent || t.ignore || i || (i = t.eventData = {
componentType: "graphic",
componentIndex: e.componentIndex,
name: t.name
});
i && (i.info = t.info)
}(l, u))
})
}
},
_relocate: function(t, e) {
for (var i = t.option.elements, n = this.group, o = this._elMap, a = e.getWidth(), r = e.getHeight(), s = 0; s < i.length; s++) {
var l = i[s];
if ((h = o.get(l.id)) && h.isGroup) {
var u = (c = h.parent) === n;
h.__ecGraphicWidth = Rl(h.__ecGraphicWidthOption, u ? a : c.__ecGraphicWidth) || 0,
h.__ecGraphicHeight = Rl(h.__ecGraphicHeightOption, u ? r : c.__ecGraphicHeight) || 0
}
}
for (s = i.length - 1; 0 <= s; s--) {
var h, c;
l = i[s];
if (h = o.get(l.id))
Su(h, l, (c = h.parent) === n ? {
width: a,
height: r
} : {
width: c.__ecGraphicWidth,
height: c.__ecGraphicHeight
}, null, {
hv: l.hv,
boundingMode: l.bounding
})
}
},
_clear: function() {
var e = this._elMap;
e.each(function(t) {
tA(t, e)
}),
this._elMap = Q()
},
dispose: function() {
this._clear()
}
});
var iA = {};
function nA(t, e) {
iA[t] = e
}
function oA(t) {
return iA[t]
}
var aA = Tf({
type: "toolbox",
layoutMode: {
type: "box",
ignoreSize: !0
},
optionUpdated: function() {
aA.superApply(this, "optionUpdated", arguments),
E(this.option.feature, function(t, e) {
var i = oA(e);
i && m(t, i.defaultOption)
})
},
defaultOption: {
show: !0,
z: 6,
zlevel: 0,
orient: "horizontal",
left: "right",
top: "top",
backgroundColor: "transparent",
borderColor: "#ccc",
borderRadius: 0,
borderWidth: 0,
padding: 5,
itemSize: 15,
itemGap: 8,
showTitle: !0,
iconStyle: {
borderColor: "#666",
color: "none"
},
emphasis: {
iconStyle: {
borderColor: "#3E98C5"
}
},
tooltip: {
show: !1
}
}
});
function rA(t, e) {
var i = iu(e.get("padding"))
, n = e.getItemStyle(["color", "opacity"]);
return n.fill = e.get("backgroundColor"),
t = new rs({
shape: {
x: t.x - i[3],
y: t.y - i[0],
width: t.width + i[1] + i[3],
height: t.height + i[0] + i[2],
r: e.get("borderRadius")
},
style: n,
silent: !0,
z2: -1
})
}
Af({
type: "toolbox",
render: function(h, c, d, l) {
var f = this.group;
if (f.removeAll(),
h.get("show")) {
var p = +h.get("itemSize")
, u = h.get("feature") || {}
, g = this._features || (this._features = {})
, m = [];
E(u, function(t, e) {
m.push(e)
}),
new kf(this._featureNames || [],m).add(t).update(t).remove(T(t, null)).execute(),
this._featureNames = m,
function(t, e, i) {
var n = e.getBoxLayoutParams()
, o = e.get("padding")
, a = {
width: i.getWidth(),
height: i.getHeight()
}
, r = bu(n, a, o);
wu(e.get("orient"), t, e.get("itemGap"), r.width, r.height),
Su(t, n, a, o)
}(f, h, d),
f.add(rA(f.getBoundingRect(), h)),
f.eachChild(function(t) {
var e = t.__title
, i = t.hoverStyle;
if (i && e) {
var n = gn(e, An(i))
, o = t.position[0] + f.position[0]
, a = !1;
t.position[1] + f.position[1] + p + n.height > d.getHeight() && (i.textPosition = "top",
a = !0);
var r = a ? -5 - n.height : p + 8;
o + n.width / 2 > d.getWidth() ? (i.textPosition = ["100%", r],
i.textAlign = "right") : o - n.width / 2 < 0 && (i.textPosition = [0, r],
i.textAlign = "left")
}
})
}
function t(t, e) {
var i, n = m[t], o = m[e], a = u[n], r = new Cl(a,h,h.ecModel);
if (l && null != l.newTitle && l.featureName === n && (a.title = l.newTitle),
n && !o) {
if (function(t) {
return 0 === t.indexOf("my")
}(n))
i = {
model: r,
onclick: r.option.onclick,
featureName: n
};
else {
var s = oA(n);
if (!s)
return;
i = new s(r,c,d)
}
g[n] = i
} else {
if (!(i = g[o]))
return;
i.model = r,
i.ecModel = c,
i.api = d
}
n || !o ? r.get("show") && !i.unusable ? (function(o, a, t) {
var r = o.getModel("iconStyle")
, s = o.getModel("emphasis.iconStyle")
, e = a.getIcons ? a.getIcons() : o.get("icon")
, l = o.get("title") || {};
if ("string" == typeof e) {
var i = e
, n = l;
l = {},
(e = {})[t] = i,
l[t] = n
}
var u = o.iconPaths = {};
E(e, function(t, e) {
var i = yl(t, {}, {
x: -p / 2,
y: -p / 2,
width: p,
height: p
});
i.setStyle(r.getItemStyle()),
i.hoverStyle = s.getItemStyle(),
i.setStyle({
text: l[e],
textAlign: s.get("textAlign"),
textBorderRadius: s.get("textBorderRadius"),
textPadding: s.get("textPadding"),
textFill: null
});
var n = h.getModel("tooltip");
n && n.get("show") && i.attr("tooltip", P({
content: l[e],
formatter: n.get("formatter", !0) || function() {
return l[e]
}
,
formatterParams: {
componentType: "toolbox",
name: e,
title: l[e],
$vars: ["name", "title"]
},
position: n.get("position", !0) || "bottom"
}, n.option)),
$s(i),
h.get("showTitle") && (i.__title = l[e],
i.on("mouseover", function() {
var t = s.getItemStyle()
, e = "vertical" === h.get("orient") ? null == h.get("right") ? "right" : "left" : null == h.get("bottom") ? "bottom" : "top";
i.setStyle({
textFill: s.get("textFill") || t.fill || t.stroke || "#000",
textBackgroundColor: s.get("textBackgroundColor"),
textPosition: s.get("textPosition") || e
})
}).on("mouseout", function() {
i.setStyle({
textFill: null,
textBackgroundColor: null
})
})),
i.trigger(o.get("iconStatus." + e) || "normal"),
f.add(i),
i.on("click", A(a.onclick, a, c, d, e)),
u[e] = i
})
}(r, i, n),
r.setIconStatus = function(t, e) {
var i = this.option
, n = this.iconPaths;
i.iconStatus = i.iconStatus || {},
i.iconStatus[t] = e,
n[t] && n[t].trigger(e)
}
,
i.render && i.render(r, c, d, l)) : i.remove && i.remove(c, d) : i.dispose && i.dispose(c, d)
}
},
updateView: function(t, e, i, n) {
E(this._features, function(t) {
t.updateView && t.updateView(t.model, e, i, n)
})
},
remove: function(e, i) {
E(this._features, function(t) {
t.remove && t.remove(e, i)
}),
this.group.removeAll()
},
dispose: function(e, i) {
E(this._features, function(t) {
t.dispose && t.dispose(e, i)
})
}
});
var sA = Oc.toolbox.saveAsImage;
function lA(t) {
this.model = t
}
lA.defaultOption = {
show: !0,
icon: "M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",
title: sA.title,
type: "png",
connectedBackgroundColor: "#fff",
name: "",
excludeComponents: ["toolbox"],
pixelRatio: 1,
lang: sA.lang.slice()
},
lA.prototype.unusable = !v.canvasSupported,
lA.prototype.onclick = function(t, e) {
var i = this.model
, n = i.get("name") || t.get("title.0.text") || "echarts"
, o = "svg" === e.getZr().painter.getType() ? "svg" : i.get("type", !0) || "png"
, a = e.getConnectedDataURL({
type: o,
backgroundColor: i.get("backgroundColor", !0) || t.get("backgroundColor") || "#fff",
connectedBackgroundColor: i.get("connectedBackgroundColor"),
excludeComponents: i.get("excludeComponents"),
pixelRatio: i.get("pixelRatio")
});
if ("function" != typeof MouseEvent || v.browser.ie || v.browser.edge)
if (window.navigator.msSaveOrOpenBlob) {
for (var r = atob(a.split(",")[1]), s = r.length, l = new Uint8Array(s); s--; )
l[s] = r.charCodeAt(s);
var u = new Blob([l]);
window.navigator.msSaveOrOpenBlob(u, n + "." + o)
} else {
var h = i.get("lang")
, c = '