/*
* 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.]+))/),
a = t.match(/Edge\/([\d.]+)/),
o = /micromessenger/i.test(t);
i && (e.firefox = !0, e.version = i[1]);
n && (e.ie = !0, e.version = n[1]);
a && (e.edge = !0, e.version = a[1]);
o && (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,
a = i.slice,
c = i.map,
d = i.reduce,
o = {};
function f(t, e) {
"createCanvas" === t && (y = null), o[t] = e
}
function D(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, a = t.length; n < a; n++) e[n] = D(t[n])
}
} else if (l[i]) {
if (!$(t)) {
var o = t.constructor;
if (t.constructor.from) e = o.from(t);
else {
e = new o(t.length);
for (n = 0, a = t.length; n < a; n++) e[n] = D(t[n])
}
}
} else if (!s[i] && !$(t) && !G(t))
for (var r in e = {}, t) t.hasOwnProperty(r) && (e[r] = D(t[r]));
return e
}
function m(t, e, i) {
if (!E(e) || !E(t)) return i ? D(e) : t;
for (var n in e)
if (e.hasOwnProperty(n)) {
var a = t[n],
o = e[n];
!E(o) || !E(a) || k(o) || k(a) || G(o) || G(a) || B(o) || B(a) || $(o) || $(a) ? !i && n in t || (t[n] = D(e[n])) : m(a, o, i)
} return t
}
function p(t, e) {
for (var i = t[0], n = 1, a = t.length; n < a; n++) i = m(i, t[n], e);
return i
}
function L(t, e) {
for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]);
return t
}
function C(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 g() {
return o.createCanvas()
}
var y;
function x() {
return y = y || g().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 a in n.prototype = e.prototype, t.prototype = new n, i) i.hasOwnProperty(a) && (t.prototype[a] = i[a]);
(t.prototype.constructor = t).superClass = e
}
function b(t, e, i) {
C(t = "prototype" in t ? t.prototype : t, e = "prototype" in e ? e.prototype : e, i)
}
function P(t) {
if (t) return "string" != typeof t && "number" == typeof t.length
}
function O(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, a = t.length; n < a; n++) e.call(i, t[n], n, t);
else
for (var o in t) t.hasOwnProperty(o) && e.call(i, t[o], o, t)
}
function N(t, e, i) {
if (t && e) {
if (t.map && t.map === c) return t.map(e, i);
for (var n = [], a = 0, o = t.length; a < o; a++) n.push(e.call(i, t[a], a, 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 a = 0, o = t.length; a < o; a++) i = e.call(n, i, t[a], a, 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 = [], a = 0, o = t.length; a < o; a++) e.call(i, t[a], a, t) && n.push(t[a]);
return n
}
}
function I(t, e, i) {
if (t && e)
for (var n = 0, a = t.length; n < a; n++)
if (e.call(i, t[n], n, t)) return t[n]
}
function T(t, e) {
var i = a.call(arguments, 2);
return function() {
return t.apply(e, i.concat(a.call(arguments)))
}
}
function A(t) {
var e = a.call(arguments, 1);
return function() {
return t.apply(this, e.concat(a.call(arguments)))
}
}
function k(t) {
return "[object Array]" === u.call(t)
}
function R(t) {
return "function" == typeof t
}
function z(t) {
return "[object String]" === u.call(t)
}
function E(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(a, 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, "")
}
o.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 = k(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 && O(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 a = t.length;
for (n = 0; n < e.length; n++) i[n + a] = 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 = T(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: D,
merge: m,
mergeAll: p,
extend: L,
defaults: C,
createCanvas: g,
getContext: x,
indexOf: _,
inherits: w,
mixin: b,
isArrayLike: P,
each: O,
map: N,
reduce: S,
filter: M,
find: I,
bind: T,
curry: A,
isArray: k,
isFunction: R,
isString: z,
isObject: E,
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 at(t, e) {
var i = new nt(2);
return null == t && (t = 0), null == e && (e = 0), i[0] = t, i[1] = e, i
}
function ot(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],
a = e[1];
return t[0] = i[0] * n + i[2] * a + i[4], t[1] = i[1] * n + i[3] * a + 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: at,
copy: ot,
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 At() {
this.on("mousedown", this._dragStart, this), this.on("mousemove", this._drag, this), this.on("mouseup", this._dragEnd, this), this.on("globalout", this._dragEnd, this)
}
function Tt(t, e) {
return {
target: t,
topTarget: e && e.topTarget
}
}
At.prototype = {
constructor: At,
_dragStart: function(t) {
var e = t.target;
e && e.draggable && ((this._draggingTarget = e).dragging = !0, this._x = t.offsetX, this._y = t.offsetY, this.dispatchToElement(Tt(e, t), "dragstart", t.event))
},
_drag: function(t) {
var e = this._draggingTarget;
if (e) {
var i = t.offsetX,
n = t.offsetY,
a = i - this._x,
o = n - this._y;
this._x = i, this._y = n, e.drift(a, o, t), this.dispatchToElement(Tt(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(Tt(s, t), "dragleave", t.event), r && r !== s && this.dispatchToElement(Tt(r, t), "dragenter", t.event))
}
},
_dragEnd: function(t) {
var e = this._draggingTarget;
e && (e.dragging = !1), this.dispatchToElement(Tt(e, t), "dragend", t.event), this._dropTarget && this.dispatchToElement(Tt(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, a, o) {
var r = t._$handlers;
if ("function" == typeof i && (a = 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: o,
query: i,
ctx: a || 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 = [], a = 0, o = i[t].length; a < o; a++) i[t][a].h !== e && n.push(i[t][a]);
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,
a = n.length;
3 < a && (n = Dt.call(n, 1));
for (var o = e.length, r = 0; r < o;) {
var s = e[r];
if (i && i.filter && null != s.query && !i.filter(t, s.query)) r++;
else {
switch (a) {
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), o--) : 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,
a = n.length;
4 < a && (n = Dt.call(n, 1, n.length - 1));
for (var o = 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 (a) {
case 1:
l.h.call(o);
break;
case 2:
l.h.call(o, n[1]);
break;
case 3:
l.h.call(o, n[1], n[2]);
break;
default:
l.h.apply(o, 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, a, o) {
var r = n + "-" + a,
s = t.length;
if (o.hasOwnProperty(r)) return o[r];
if (1 === e) {
var l = Math.round(Math.log((1 << s) - 1 & ~a) / 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 & a || (c += (f % 2 ? -1 : 1) * t[i][d] * Pt(t, e - 1, h, u, a | p, o), f++)
}
return o[r] = c
}
var Nt = "undefined" != typeof window && !!window.addEventListener,
Ot = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
Rt = "___zrEVENTSAVED",
zt = [];
function Et(t, e, i, n) {
return i = i || {}, n || !v.canvasSupported ? Bt(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) : Bt(t, e, i), i
}
function Bt(t, e, i) {
if (t.getBoundingClientRect && v.domSupported) {
var n = e.clientX,
a = e.clientY;
if ("CANVAS" === t.nodeName.toUpperCase()) {
var o = t.getBoundingClientRect();
return i.zrX = n - o.left, void(i.zrY = a - o.top)
}
var r = t[Rt] || (t[Rt] = {}),
s = function(t, e) {
for (var i = e.transformer, n = e.srcCoords, a = !0, o = [], r = [], s = 0; s < 4; s++) {
var l = t[s].getBoundingClientRect(),
u = 2 * s,
h = l.left,
c = l.top;
o.push(h, c), a &= n && h === n[u] && c === n[1 + u], r.push(t[s].offsetLeft, t[s].offsetTop)
}
return a ? i : (e.srcCoords = o, e.transformer = function(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 = {},
a = Pt(i, 8, 0, 0, 0, n);
if (0 !== a) {
for (var o = [], r = 0; r < 8; r++)
for (var s = 0; s < 8; s++) null == o[s] && (o[s] = 0), o[s] += ((r + s) % 2 ? -1 : 1) * Pt(i, 7, 0 === r ? 1 : 0, 1 << r, 1 << s, n) / a * e[r];
return function(t, e, i) {
var n = e * o[6] + i * o[7] + 1;
t[0] = (e * o[0] + i * o[1] + o[2]) / n, t[1] = (e * o[3] + i * o[4] + o[5]) / n
}
}
}(o, r))
}(function(t, e) {
var i = e.markers;
if (i) return i;
i = e.markers = [];
for (var n = ["left", "right"], a = ["top", "bottom"], o = 0; o < 4; o++) {
var r = document.createElement("div"),
s = r.style,
l = o % 2,
u = (o >> 1) % 2;
s.cssText = ["position:absolute", "visibility: hidden", "padding: 0", "margin: 0", "border-width: 0", "width:0", "height:0", n[l] + ":0", a[u] + ":0", n[1 - l] + ":auto", a[1 - u] + ":auto", ""].join("!important;"), t.appendChild(r), i.push(r)
}
return i
}(t, r), r);
if (s) return s(zt, n, a), i.zrX = zt[0], void(i.zrY = zt[1])
}
i.zrX = i.zrY = 0
}
function Vt(t, e, i) {
if (null != (e = e || window.event).zrX) return e;
var n = e.type;
if (n && 0 <= n.indexOf("touch")) {
var a = "touchend" !== n ? e.targetTouches[0] : e.changedTouches[0];
a && Et(t, a, e, i)
} else Et(t, e, e, i), e.zrDelta = e.wheelDelta ? e.wheelDelta / 120 : -(e.detail || 0) / 3;
var o = e.button;
return null == e.which && void 0 !== o && Ot.test(e.type) && (e.which = 1 & o ? 1 : 2 & o ? 3 : 4 & o ? 2 : 0), e
}
function Gt(t, e, i) {
Nt ? t.addEventListener(e, i) : t.attachEvent("on" + e, i)
}
var Ft = Nt ? function(t) {
t.preventDefault(), t.stopPropagation(), t.cancelBubble = !0
} : function(t) {
t.returnValue = !1, t.cancelBubble = !0
};
function Wt(t) {
return 2 === t.which || 3 === t.which
}
function Ht() {
this._track = []
}
function Zt(t) {
var e = t[1][0] - t[0][0],
i = t[1][1] - t[0][1];
return Math.sqrt(e * e + i * i)
}
Ht.prototype = {
constructor: Ht,
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 a = {
points: [],
touches: [],
target: e,
event: t
}, o = 0, r = n.length; o < r; o++) {
var s = n[o],
l = Et(i, s, {});
a.points.push([l.zrX, l.zrY]), a.touches.push(s)
}
this._track.push(a)
}
},
_recognize: function(t) {
for (var e in Ut)
if (Ut.hasOwnProperty(e)) {
var i = Ut[e](this._track, t);
if (i) return i
}
}
};
var Ut = {
pinch: function(t, e) {
var i = t.length;
if (i) {
var n = (t[i - 1] || {}).points,
a = (t[i - 2] || {}).points || n;
if (a && 1 < a.length && n && 1 < n.length) {
var o = Zt(n) / Zt(a);
isFinite(o) || (o = 1), e.pinchScale = o;
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
}
}
}
}
},
Xt = "silent";
function Yt(t) {
Ft(this.event)
}
function jt() {}
jt.prototype.dispose = function() {};
function qt(t, e, i, n) {
Ct.call(this), this.storage = t, this.painter = e, this.painterRoot = n, i = i || new jt, this.proxy = null, this._hovered = {}, this._lastTouchMoment, this._lastX, this._lastY, this._gestureMgr, At.call(this), this.setHandlerProxy(i)
}
var Kt = ["click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu"];
function $t(t, e, i) {
if (t[t.rectHover ? "rectContain" : "contain"](e, i)) {
for (var n, a = t; a;) {
if (a.clipPath && !a.clipPath.contain(e, i)) return !1;
a.silent && (n = !0), a = a.parent
}
return !n || Xt
}
return !1
}
qt.prototype = {
constructor: qt,
setHandlerProxy: function(e) {
this.proxy && this.proxy.dispose(), e && (O(Kt, 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 = this._hovered,
a = n.target;
a && !a.__zr && (a = (n = this.findHover(n.x, n.y)).target);
var o = this._hovered = this.findHover(e, i),
r = o.target,
s = this.proxy;
s.setCursor && s.setCursor(r ? r.cursor : "default"), a && r !== a && this.dispatchToElement(n, "mouseout", t), this.dispatchToElement(o, "mousemove", t), r && r !== a && this.dispatchToElement(o, "mouseover", t)
},
mouseout: function(t) {
this.dispatchToElement(this._hovered, "mouseout", t);
for (var e, i = t.toElement || t.relatedTarget;
(i = i && i.parentNode) && 9 !== i.nodeType && !(e = i === this.painterRoot););
e || this.trigger("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 a = "on" + e, o = 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: Yt
}
}(e, t, i); n && (n[a] && (o.cancelBubble = n[a].call(n, o)), n.trigger(e, o), n = n.parent, !o.cancelBubble););
o.cancelBubble || (this.trigger(e, o), this.painter && this.painter.eachOtherLayer(function(t) {
"function" == typeof t[a] && t[a].call(t, o), t.trigger && t.trigger(e, o)
}))
}
},
findHover: function(t, e, i) {
for (var n = this.storage.getDisplayList(), a = {
x: t,
y: e
}, o = n.length - 1; 0 <= o; o--) {
var r;
if (n[o] !== i && !n[o].ignore && (r = $t(n[o], t, e)) && (a.topTarget || (a.topTarget = n[o]), r !== Xt)) {
a.target = n[o];
break
}
}
return a
},
processGesture: function(t, e) {
this._gestureMgr || (this._gestureMgr = new Ht);
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 a = n.type;
t.gestureEvent = a, this.dispatchToElement({
target: n.target
}, a, n.event)
}
}
}, O(["click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu"], function(n) {
qt.prototype[n] = function(t) {
var e = this.findHover(t.zrX, t.zrY),
i = e.target;
if ("mousedown" === n) this._downEl = i, this._downPoint = [t.zrX, t.zrY], this._upEl = i;
else if ("mouseup" === n) this._upEl = i;
else if ("click" === n) {
if (this._downEl !== this._upEl || !this._downPoint || 4 < yt(this._downPoint, [t.zrX, t.zrY])) return;
this._downPoint = null
}
this.dispatchToElement(e, n, t)
}
}), b(qt, Ct), b(qt, At);
var Jt = "undefined" == typeof Float32Array ? Array : Float32Array;
function Qt() {
var t = new Jt(6);
return te(t), t
}
function te(t) {
return t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 1, t[4] = 0, t[5] = 0, t
}
function ee(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 ie(t, e, i) {
var n = e[0] * i[0] + e[2] * i[1],
a = e[1] * i[0] + e[3] * i[1],
o = 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] = a, t[2] = o, t[3] = r, t[4] = s, t[5] = l, t
}
function ne(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 ae(t, e, i) {
var n = e[0],
a = e[2],
o = 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] = a * h + s * u, t[3] = -a * u + h * s, t[4] = h * o + u * l, t[5] = h * l - u * o, t
}
function oe(t, e, i) {
var n = i[0],
a = i[1];
return t[0] = e[0] * n, t[1] = e[1] * a, t[2] = e[2] * n, t[3] = e[3] * a, t[4] = e[4] * n, t[5] = e[5] * a, t
}
function re(t, e) {
var i = e[0],
n = e[2],
a = e[4],
o = e[1],
r = e[3],
s = e[5],
l = i * r - o * n;
return l ? (l = 1 / l, t[0] = r * l, t[1] = -o * l, t[2] = -n * l, t[3] = i * l, t[4] = (n * s - r * a) * l, t[5] = (o * a - i * s) * l, t) : null
}
function se(t) {
var e = Qt();
return ee(e, t), e
}
var le = (Object.freeze || Object)({
create: Qt,
identity: te,
copy: ee,
mul: ie,
translate: ne,
rotate: ae,
scale: oe,
invert: re,
clone: se
}),
ue = te;
function he(t) {
return 5e-5 < t || t < -5e-5
}
var ce = 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
},
de = ce.prototype;
de.transform = null, de.needLocalTransform = function() {
return he(this.rotation) || he(this.position[0]) || he(this.position[1]) || he(this.scale[0] - 1) || he(this.scale[1] - 1)
};
var fe = [];
de.updateTransform = function() {
var t = this.parent,
e = t && t.transform,
i = this.needLocalTransform(),
n = this.transform;
if (i || e) {
n = n || Qt(), i ? this.getLocalTransform(n) : ue(n), e && (i ? ie(n, t.transform, n) : ee(n, t.transform)), this.transform = n;
var a = this.globalScaleRatio;
if (null != a && 1 !== a) {
this.getGlobalScale(fe);
var o = fe[0] < 0 ? -1 : 1,
r = fe[1] < 0 ? -1 : 1,
s = ((fe[0] - o) * a + o) / fe[0] || 0,
l = ((fe[1] - r) * a + r) / fe[1] || 0;
n[0] *= s, n[1] *= s, n[2] *= l, n[3] *= l
}
this.invTransform = this.invTransform || Qt(), re(this.invTransform, n)
} else n && ue(n)
}, de.getLocalTransform = function(t) {
return ce.getLocalTransform(this, t)
}, de.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)
}, de.restoreTransform = function(t) {
var e = t.dpr || 1;
t.setTransform(e, 0, 0, e, 0, 0)
};
var pe = [],
ge = Qt();
de.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,
a = this.scale;
he(e - 1) && (e = Math.sqrt(e)), he(i - 1) && (i = Math.sqrt(i)), t[0] < 0 && (e = -e), t[3] < 0 && (i = -i), n[0] = t[4], n[1] = t[5], a[0] = e, a[1] = i, this.rotation = Math.atan2(-t[1] / i, t[0] / e)
}
}, de.decomposeTransform = function() {
if (this.transform) {
var t = this.parent,
e = this.transform;
t && t.transform && (ie(pe, t.invTransform, e), e = pe);
var i = this.origin;
i && (i[0] || i[1]) && (ge[4] = i[0], ge[5] = i[1], ie(pe, e, ge), pe[4] -= i[0], pe[5] -= i[1], e = pe), this.setLocalTransform(e)
}
}, de.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
}, de.transformCoordToLocal = function(t, e) {
var i = [t, e],
n = this.invTransform;
return n && bt(i, i, n), i
}, de.transformCoordToGlobal = function(t, e) {
var i = [t, e],
n = this.transform;
return n && bt(i, i, n), i
}, ce.getLocalTransform = function(t, e) {
ue(e = e || []);
var i = t.origin,
n = t.scale || [1, 1],
a = t.rotation || 0,
o = t.position || [0, 0];
return i && (e[4] -= i[0], e[5] -= i[1]), oe(e, e, n), a && ae(e, e, a), i && (e[4] += i[0], e[5] += i[1]), e[4] += o[0], e[5] += o[1], e
};
var me = {
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 - me.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 * me.bounceIn(2 * t) : .5 * me.bounceOut(2 * t - 1) + .5
}
};
function ve(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
}
ve.prototype = {
constructor: ve,
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,
a = "string" == typeof n ? me[n] : n,
o = "function" == typeof a ? a(i) : i;
return this.fire("frame", o), 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 ye() {
this.head = null, this.tail = null, this._len = 0
}
var xe = ye.prototype;
xe.insert = function(t) {
var e = new we(t);
return this.insertEntry(e), e
}, xe.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++
}, xe.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--
}, xe.len = function() {
return this._len
}, xe.clear = function() {
this.head = this.tail = null, this._len = 0
};
function _e(t) {
this._list = new ye, this._map = {}, this._maxSize = t || 10, this._lastRemovedEntry = null
}
var we = function(t) {
this.value = t, this.next, this.prev
},
be = _e.prototype;
be.put = function(t, e) {
var i = this._list,
n = this._map,
a = null;
if (null == n[t]) {
var o = i.len(),
r = this._lastRemovedEntry;
if (o >= this._maxSize && 0 < o) {
var s = i.head;
i.remove(s), delete n[s.key], a = s.value, this._lastRemovedEntry = s
}
r ? r.value = e : r = new we(e), r.key = t, i.insertEntry(r), n[t] = r
}
return a
}, be.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
}, be.clear = function() {
this._list.clear(), this._map = {}
};
var Se = {
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 Me(t) {
return (t = Math.round(t)) < 0 ? 0 : 255 < t ? 255 : t
}
function Ie(t) {
return t < 0 ? 0 : 1 < t ? 1 : t
}
function Ae(t) {
return t.length && "%" === t.charAt(t.length - 1) ? Me(parseFloat(t) / 100 * 255) : Me(parseInt(t, 10))
}
function Te(t) {
return t.length && "%" === t.charAt(t.length - 1) ? Ie(parseFloat(t) / 100) : Ie(parseFloat(t))
}
function De(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 Ce(t, e, i) {
return t + (e - t) * i
}
function Le(t, e, i, n, a) {
return t[0] = e, t[1] = i, t[2] = n, t[3] = a, t
}
function ke(t, e) {
return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t
}
var Pe = new _e(20),
Ne = null;
function Oe(t, e) {
Ne && ke(Ne, e), Ne = Pe.put(t, Ne || e.slice())
}
function Re(t, e) {
if (t) {
e = e || [];
var i = Pe.get(t);
if (i) return ke(e, i);
var n, a = (t += "").replace(/ /g, "").toLowerCase();
if (a in Se) return ke(e, Se[a]), Oe(t, e), e;
if ("#" === a.charAt(0)) return 4 === a.length ? 0 <= (n = parseInt(a.substr(1), 16)) && n <= 4095 ? (Le(e, (3840 & n) >> 4 | (3840 & n) >> 8, 240 & n | (240 & n) >> 4, 15 & n | (15 & n) << 4, 1), Oe(t, e), e) : void Le(e, 0, 0, 0, 1) : 7 === a.length ? 0 <= (n = parseInt(a.substr(1), 16)) && n <= 16777215 ? (Le(e, (16711680 & n) >> 16, (65280 & n) >> 8, 255 & n, 1), Oe(t, e), e) : void Le(e, 0, 0, 0, 1) : void 0;
var o = a.indexOf("("),
r = a.indexOf(")");
if (-1 !== o && r + 1 === a.length) {
var s = a.substr(0, o),
l = a.substr(o + 1, r - (o + 1)).split(","),
u = 1;
switch (s) {
case "rgba":
if (4 !== l.length) return void Le(e, 0, 0, 0, 1);
u = Te(l.pop());
case "rgb":
return 3 !== l.length ? void Le(e, 0, 0, 0, 1) : (Le(e, Ae(l[0]), Ae(l[1]), Ae(l[2]), u), Oe(t, e), e);
case "hsla":
return 4 !== l.length ? void Le(e, 0, 0, 0, 1) : (l[3] = Te(l[3]), ze(l, e), Oe(t, e), e);
case "hsl":
return 3 !== l.length ? void Le(e, 0, 0, 0, 1) : (ze(l, e), Oe(t, e), e);
default:
return
}
}
Le(e, 0, 0, 0, 1)
}
}
function ze(t, e) {
var i = (parseFloat(t[0]) % 360 + 360) % 360 / 360,
n = Te(t[1]),
a = Te(t[2]),
o = a <= .5 ? a * (n + 1) : a + n - a * n,
r = 2 * a - o;
return Le(e = e || [], Me(255 * De(r, o, i + 1 / 3)), Me(255 * De(r, o, i)), Me(255 * De(r, o, i - 1 / 3)), 1), 4 === t.length && (e[3] = t[3]), e
}
function Ee(t, e) {
var i = Re(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 Ue(i, 4 === i.length ? "rgba" : "rgb")
}
}
function Be(t) {
var e = Re(t);
if (e) return ((1 << 24) + (e[0] << 16) + (e[1] << 8) + +e[2]).toString(16).slice(1)
}
function Ve(t, e, i) {
if (e && e.length && 0 <= t && t <= 1) {
i = i || [];
var n = t * (e.length - 1),
a = Math.floor(n),
o = Math.ceil(n),
r = e[a],
s = e[o],
l = n - a;
return i[0] = Me(Ce(r[0], s[0], l)), i[1] = Me(Ce(r[1], s[1], l)), i[2] = Me(Ce(r[2], s[2], l)), i[3] = Ie(Ce(r[3], s[3], l)), i
}
}
var Ge = Ve;
function Fe(t, e, i) {
if (e && e.length && 0 <= t && t <= 1) {
var n = t * (e.length - 1),
a = Math.floor(n),
o = Math.ceil(n),
r = Re(e[a]),
s = Re(e[o]),
l = n - a,
u = Ue([Me(Ce(r[0], s[0], l)), Me(Ce(r[1], s[1], l)), Me(Ce(r[2], s[2], l)), Ie(Ce(r[3], s[3], l))], "rgba");
return i ? {
color: u,
leftIndex: a,
rightIndex: o,
value: n
} : u
}
}
var We = Fe;
function He(t, e, i, n) {
if (t = Re(t)) return t = function(t) {
if (t) {
var e, i, n = t[0] / 255,
a = t[1] / 255,
o = t[2] / 255,
r = Math.min(n, a, o),
s = Math.max(n, a, o),
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 - a) / 6 + l / 2) / l,
d = ((s - o) / 6 + l / 2) / l;
n === s ? e = d - c : a === s ? e = 1 / 3 + h - d : o === 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] = Te(i)), null != n && (t[2] = Te(n)), Ue(ze(t), "rgba")
}
function Ze(t, e) {
if ((t = Re(t)) && null != e) return t[3] = Ie(e), Ue(t, "rgba")
}
function Ue(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 Xe = (Object.freeze || Object)({
parse: Re,
lift: Ee,
toHex: Be,
fastLerp: Ve,
fastMapToColor: Ge,
lerp: Fe,
mapToColor: We,
modifyHSL: He,
modifyAlpha: Ze,
stringify: Ue
}),
Ye = Array.prototype.slice;
function je(t, e) {
return t[e]
}
function qe(t, e, i) {
t[e] = i
}
function Ke(t, e, i) {
return (e - t) * i + t
}
function $e(t, e, i) {
return .5 < i ? e : t
}
function Je(t, e, i, n, a) {
var o = t.length;
if (1 === a)
for (var r = 0; r < o; r++) n[r] = Ke(t[r], e[r], i);
else {
var s = o && t[0].length;
for (r = 0; r < o; r++)
for (var l = 0; l < s; l++) n[r][l] = Ke(t[r][l], e[r][l], i)
}
}
function Qe(t, e, i) {
var n = t.length,
a = e.length;
if (n !== a)
if (a < n) t.length = a;
else
for (var o = n; o < a; o++) t.push(1 === i ? e[o] : Ye.call(e[o]));
var r = t[0] && t[0].length;
for (o = 0; o < t.length; o++)
if (1 === i) isNaN(t[o]) && (t[o] = e[o]);
else
for (var s = 0; s < r; s++) isNaN(t[o][s]) && (t[o][s] = e[o][s])
}
function ti(t, e, i) {
if (t === e) return !0;
var n = t.length;
if (n !== e.length) return !1;
if (1 === i) {
for (var a = 0; a < n; a++)
if (t[a] !== e[a]) return !1
} else {
var o = t[0].length;
for (a = 0; a < n; a++)
for (var r = 0; r < o; r++)
if (t[a][r] !== e[a][r]) return !1
}
return !0
}
function ei(t, e, i, n, a, o, r, s, l) {
var u = t.length;
if (1 === l)
for (var h = 0; h < u; h++) s[h] = ii(t[h], e[h], i[h], n[h], a, o, r);
else {
var c = t[0].length;
for (h = 0; h < u; h++)
for (var d = 0; d < c; d++) s[h][d] = ii(t[h][d], e[h][d], i[h][d], n[h][d], a, o, r)
}
}
function ii(t, e, i, n, a, o, r) {
var s = .5 * (i - t),
l = .5 * (n - e);
return (2 * (e - i) + s + l) * r + (-3 * (e - i) - 2 * s - l) * o + s * a + e
}
function ni(t) {
if (P(t)) {
var e = t.length;
if (P(t[0])) {
for (var i = [], n = 0; n < e; n++) i.push(Ye.call(t[n]));
return i
}
return Ye.call(t)
}
return t
}
function ai(t) {
return t[0] = Math.floor(t[0]), t[1] = Math.floor(t[1]), t[2] = Math.floor(t[2]), "rgba(" + t.join(",") + ")"
}
function oi(t, e, i, n, o, a) {
var r = t._getter,
s = t._setter,
l = "spline" === e,
u = n.length;
if (u) {
var h, c = P(n[0].value),
d = !1,
f = !1,
p = c ? function(t) {
var e = t[t.length - 1].value;
return P(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 && ti(_, v, p) || !c && _ === v || (y = !1), "string" == typeof(v = _)) {
var w = Re(_);
w ? (_ = w, d = !0) : f = !0
}
m.push(_)
}
if (a || !y) {
var b = m[u - 1];
for (x = 0; x < u - 1; x++) c ? Qe(m[x], b, p) : !isNaN(m[x]) || isNaN(b) || f || d || (m[x] = b);
c && Qe(r(t._target, o), b, p);
var S, M, I, A, T, D = 0,
C = 0;
if (d) var L = [0, 0, 0, 0];
var k = new ve({
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], A = m[u - 2 < i ? u - 1 : i + 1], T = m[u - 3 < i ? u - 1 : i + 2], c) ei(M, I, A, T, S, S * S, S * S * S, r(t, o), p);
else {
if (d) a = ei(M, I, A, T, S, S * S, S * S * S, L, 1), a = ai(L);
else {
if (f) return $e(I, A, S);
a = ii(M, I, A, T, S, S * S, S * S * S)
}
s(t, o, a)
}
else if (c) Je(m[i], m[i + 1], S, r(t, o), p);
else {
var a;
if (d) Je(m[i], m[i + 1], S, L, 1), a = ai(L);
else {
if (f) return $e(m[i], m[i + 1], S);
a = Ke(m[i], m[i + 1], S)
}
s(t, o, a)
}
},
ondestroy: i
});
return e && "spline" !== e && (k.easing = e), k
}
}
}
function ri(t, e, i, n) {
this._tracks = {}, this._target = t, this._loop = e || !1, this._getter = i || je, this._setter = n || qe, this._clipCount = 0, this._delay = 0, this._doneList = [], this._onframeList = [], this._clipList = []
}
ri.prototype = {
when: function(t, e) {
var i = this._tracks;
for (var n in e)
if (e.hasOwnProperty(n)) {
if (!i[n]) {
i[n] = [];
var a = this._getter(this._target, n);
if (null == a) continue;
0 !== t && i[n].push({
time: 0,
value: ni(a)
})
}
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() {
--o || a._doneCallback()
}
var n, a = this,
o = 0;
for (var r in this._tracks)
if (this._tracks.hasOwnProperty(r)) {
var s = oi(this, t, i, this._tracks[r], r, e);
s && (this._clipList.push(s), o++, 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 < a._onframeList.length; i++) a._onframeList[i](t, e)
}
}
return o || this._doneCallback(), this
},
stop: function(t) {
for (var e = this._clipList, i = this.animation, n = 0; n < e.length; n++) {
var a = e[n];
t && a.onframe(this._target, 1), i && i.removeClip(a)
}
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 si = 1;
"undefined" != typeof window && (si = Math.max(window.devicePixelRatio || 1, 1));
var li = si,
ui = function() {};
function hi() {
this.animators = []
}
var ci = ui;
function di(t, e, i, n, a, o, r, s) {
z(n) ? (o = a, a = n, n = 0) : R(a) ? (o = a, a = "linear", n = 0) : R(n) ? (o = n, n = 0) : i = R(i) ? (o = i, 500) : i || 500, t.stopAnimation(),
function t(e, i, n, a, o, r, s) {
var l = {};
var u = 0;
for (var h in a) a.hasOwnProperty(h) && (null != n[h] ? E(a[h]) && !P(a[h]) ? t(e, i ? i + "." + h : h, n[h], a[h], o, r, s) : (s ? (l[h] = n[h], fi(e, i, h, a[h])) : l[h] = a[h], u++) : null == a[h] || s || fi(e, i, h, a[h]));
0 < u && e.animate(i, !1).when(null == o ? 500 : o, l).delay(r || 0)
}(t, "", t, e, i, n, s);
var l = t.animators.slice(),
u = l.length;
function h() {
--u || o && o()
}
u || o && o();
for (var c = 0; c < l.length; c++) l[c].done(h).start(a, r)
}
function fi(t, e, i, n) {
if (e) {
var a = {};
a[e] = {}, a[e][i] = n, t.attr(a)
} else t.attr(i, n)
}
hi.prototype = {
constructor: hi,
animate: function(t, e) {
var i, n = !1,
a = this,
o = this.__zr;
if (t) {
var r = t.split("."),
s = a;
n = "shape" === r[0];
for (var l = 0, u = r.length; l < u; l++) s = s && s[r[l]];
s && (i = s)
} else i = a;
if (i) {
var h = a.animators,
c = new ri(i, e);
return c.during(function(t) {
a.dirty(n)
}).done(function() {
h.splice(_(h, c), 1)
}), h.push(c), o && o.animation.addAnimator(c), c
}
ci('Property "' + t + '" is not existed in element ' + a.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, a, o) {
di(this, t, e, i, n, a, o)
},
animateFrom: function(t, e, i, n, a, o) {
di(this, t, e, i, n, a, o, !0)
}
};
var pi = function(t) {
ce.call(this, t), Ct.call(this, t), hi.call(this, t), this.id = t.id || n()
};
pi.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 (E(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(pi, hi), b(pi, ce), b(pi, Ct);
var gi, mi, vi, yi, xi = bt,
_i = Math.min,
wi = Math.max;
function bi(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
}
bi.prototype = {
constructor: bi,
union: function(t) {
var e = _i(t.x, this.x),
i = _i(t.y, this.y);
this.width = wi(t.x + t.width, this.x + this.width) - e, this.height = wi(t.y + t.height, this.y + this.height) - i, this.x = e, this.y = i
},
applyTransform: (gi = [], mi = [], vi = [], yi = [], function(t) {
if (t) {
gi[0] = vi[0] = this.x, gi[1] = yi[1] = this.y, mi[0] = yi[0] = this.x + this.width, mi[1] = vi[1] = this.y + this.height, xi(gi, gi, t), xi(mi, mi, t), xi(vi, vi, t), xi(yi, yi, t), this.x = _i(gi[0], mi[0], vi[0], yi[0]), this.y = _i(gi[1], mi[1], vi[1], yi[1]);
var e = wi(gi[0], mi[0], vi[0], yi[0]),
i = wi(gi[1], mi[1], vi[1], yi[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 = Qt();
return ne(n, n, [-this.x, -this.y]), oe(n, n, [e, i]), ne(n, n, [t.x, t.y]), n
},
intersect: function(t) {
if (!t) return !1;
t instanceof bi || (t = bi.create(t));
var e = this,
i = e.x,
n = e.x + e.width,
a = e.y,
o = 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 || o < l || u < a)
},
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 bi(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
}
}
}, bi.create = function(t) {
return new bi(t.x, t.y, t.width, t.height)
};
var Si = function(t) {
for (var e in t = t || {}, pi.call(this, t), t) t.hasOwnProperty(e) && (this[e] = t[e]);
this._children = [], this.__storage = null, this.__dirty = !0
};
Si.prototype = {
constructor: Si,
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 Si && t.addChildrenToStorage(e)), i && i.refresh()
},
remove: function(t) {
var e = this.__zr,
i = this.__storage,
n = this._children,
a = _(n, t);
return a < 0 || (n.splice(a, 1), t.parent = null, i && (i.delFromStorage(t), t instanceof Si && 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 Si && 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 a = i[n];
t.call(e, a, 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 Si && 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 Si && i.delChildrenFromStorage(t)
}
},
dirty: function() {
return this.__dirty = !0, this.__zr && this.__zr.refresh(), this
},
getBoundingRect: function(t) {
for (var e = null, i = new bi(0, 0, 0, 0), n = t || this._children, a = [], o = 0; o < n.length; o++) {
var r = n[o];
if (!r.ignore && !r.invisible) {
var s = r.getBoundingRect(),
l = r.getLocalTransform(a);
l ? (i.copy(s), i.applyTransform(l), (e = e || i.clone()).union(i)) : (e = e || s.clone()).union(s)
}
}
return e || i
}
}, w(Si, pi);
var Mi = 32,
Ii = 7;
function Ai(t, e, i, n) {
var a = e + 1;
if (a === i) return 1;
if (n(t[a++], t[e]) < 0) {
for (; a < i && n(t[a], t[a - 1]) < 0;) a++;
! function(t, e, i) {
i--;
for (; e < i;) {
var n = t[e];
t[e++] = t[i], t[i--] = n
}
}(t, e, a)
} else
for (; a < i && 0 <= n(t[a], t[a - 1]);) a++;
return a - e
}
function Ti(t, e, i, n, a) {
for (n === e && n++; n < i; n++) {
for (var o, r = t[n], s = e, l = n; s < l;) a(r, t[o = s + l >>> 1]) < 0 ? l = o : s = 1 + o;
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 Di(t, e, i, n, a, o) {
var r = 0,
s = 0,
l = 1;
if (0 < o(t, e[i + a])) {
for (s = n - a; l < s && 0 < o(t, e[i + a + l]);)(l = 1 + ((r = l) << 1)) <= 0 && (l = s);
s < l && (l = s), r += a, l += a
} else {
for (s = a + 1; l < s && o(t, e[i + a - l]) <= 0;)(l = 1 + ((r = l) << 1)) <= 0 && (l = s);
s < l && (l = s);
var u = r;
r = a - l, l = a - u
}
for (r++; r < l;) {
var h = r + (l - r >>> 1);
0 < o(t, e[i + h]) ? r = h + 1 : l = h
}
return l
}
function Ci(t, e, i, n, a, o) {
var r = 0,
s = 0,
l = 1;
if (o(t, e[i + a]) < 0) {
for (s = a + 1; l < s && o(t, e[i + a - l]) < 0;)(l = 1 + ((r = l) << 1)) <= 0 && (l = s);
s < l && (l = s);
var u = r;
r = a - l, l = a - u
} else {
for (s = n - a; l < s && 0 <= o(t, e[i + a + l]);)(l = 1 + ((r = l) << 1)) <= 0 && (l = s);
s < l && (l = s), r += a, l += a
}
for (r++; r < l;) {
var h = r + (l - r >>> 1);
o(t, e[i + h]) < 0 ? l = h : r = h + 1
}
return l
}
function Li(p, g) {
var r, s, m = Ii,
l = 0,
v = [];
function e(t) {
var e = r[t],
i = s[t],
n = r[t + 1],
a = s[t + 1];
s[t] = i + a, t === l - 3 && (r[t + 1] = r[t + 2], s[t + 1] = s[t + 2]), l--;
var o = Ci(p[n], p, e, i, 0, g);
e += o, 0 !== (i -= o) && 0 !== (a = Di(p[e + i - 1], p, n, a, a - 1, g)) && (i <= a ? function(t, e, i, n) {
var a = 0;
for (a = 0; a < e; a++) v[a] = p[t + a];
var o = 0,
r = i,
s = t;
if (p[s++] = p[r++], 0 == --n) {
for (a = 0; a < e; a++) p[s + a] = v[o + a];
return
}
if (1 === e) {
for (a = 0; a < n; a++) p[s + a] = p[r + a];
return p[s + n] = v[o]
}
var l, u, h, c = m;
for (;;) {
u = l = 0, h = !1;
do {
if (g(p[r], v[o]) < 0) {
if (p[s++] = p[r++], u++, (l = 0) == --n) {
h = !0;
break
}
} else if (p[s++] = v[o++], l++, u = 0, 1 == --e) {
h = !0;
break
}
} while ((l | u) < c);
if (h) break;
do {
if (0 !== (l = Ci(p[r], v, o, e, 0, g))) {
for (a = 0; a < l; a++) p[s + a] = v[o + a];
if (s += l, o += l, (e -= l) <= 1) {
h = !0;
break
}
}
if (p[s++] = p[r++], 0 == --n) {
h = !0;
break
}
if (0 !== (u = Di(v[o], p, r, n, 0, g))) {
for (a = 0; a < u; a++) p[s + a] = p[r + a];
if (s += u, r += u, 0 === (n -= u)) {
h = !0;
break
}
}
if (p[s++] = v[o++], 1 == --e) {
h = !0;
break
}
c--
} while (Ii <= l || Ii <= u);
if (h) break;
c < 0 && (c = 0), c += 2
}
if ((m = c) < 1 && (m = 1), 1 === e) {
for (a = 0; a < n; a++) p[s + a] = p[r + a];
p[s + n] = v[o]
} else {
if (0 === e) throw new Error;
for (a = 0; a < e; a++) p[s + a] = v[o + a]
}
}(e, i, n, a) : function(t, e, i, n) {
var a = 0;
for (a = 0; a < n; a++) v[a] = p[i + a];
var o = t + e - 1,
r = n - 1,
s = i + n - 1,
l = 0,
u = 0;
if (p[s--] = p[o--], 0 == --e) {
for (l = s - (n - 1), a = 0; a < n; a++) p[l + a] = v[a];
return
}
if (1 === n) {
for (u = (s -= e) + 1, l = (o -= e) + 1, a = e - 1; 0 <= a; a--) p[u + a] = p[l + a];
return p[s] = v[r]
}
var h = m;
for (;;) {
var c = 0,
d = 0,
f = !1;
do {
if (g(v[r], p[o]) < 0) {
if (p[s--] = p[o--], 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 - Ci(v[r], p, t, e, e - 1, g))) {
for (e -= c, u = (s -= c) + 1, l = (o -= c) + 1, a = c - 1; 0 <= a; a--) p[u + a] = p[l + a];
if (0 === e) {
f = !0;
break
}
}
if (p[s--] = v[r--], 1 == --n) {
f = !0;
break
}
if (0 !== (d = n - Di(p[o], v, 0, n, n - 1, g))) {
for (n -= d, u = (s -= d) + 1, l = (r -= d) + 1, a = 0; a < d; a++) p[u + a] = v[l + a];
if (n <= 1) {
f = !0;
break
}
}
if (p[s--] = p[o--], 0 == --e) {
f = !0;
break
}
h--
} while (Ii <= c || Ii <= d);
if (f) break;
h < 0 && (h = 0), h += 2
}(m = h) < 1 && (m = 1);
if (1 === n) {
for (u = (s -= e) + 1, l = (o -= e) + 1, a = e - 1; 0 <= a; a--) p[u + a] = p[l + a];
p[s] = v[r]
} else {
if (0 === n) throw new Error;
for (l = s - (n - 1), a = 0; a < n; a++) p[l + a] = v[a]
}
}(e, i, n, a))
}
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 ki(t, e, i, n) {
i = i || 0;
var a = (n = n || t.length) - i;
if (!(a < 2)) {
var o = 0;
if (a < Mi) Ti(t, i, n, i + (o = Ai(t, i, n, e)), e);
else {
var r = new Li(t, e),
s = function(t) {
for (var e = 0; Mi <= t;) e |= 1 & t, t >>= 1;
return t + e
}(a);
do {
if ((o = Ai(t, i, n, e)) < s) {
var l = a;
s < l && (l = s), Ti(t, i, i + l, i + o, e), o = l
}
r.pushRun(i, o), r.mergeRuns(), a -= o, i += o
} while (0 !== a);
r.forceMergeRuns()
}
}
}
function Pi(t, e) {
return t.zlevel === e.zlevel ? t.z === e.z ? t.z2 - e.z2 : t.z - e.z : t.zlevel - e.zlevel
}
function Ni() {
this._roots = [], this._displayList = [], this._displayListLen = 0
}
Ni.prototype = {
constructor: Ni,
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, a = e.length; n < a; n++) this._updateAndAddDisplayable(e[n], null, t);
i.length = this._displayListLen, v.canvasSupported && ki(i, Pi)
},
_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 a = n, o = t; a;) a.parent = o, a.updateTransform(), e.push(a), a = (o = a).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 Si && 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 Si && 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 a = _(this._roots, t);
0 <= a && (this.delFromStorage(t), this._roots.splice(a, 1), t instanceof Si && 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: Pi
};
var Oi = {
shadowBlur: 1,
shadowOffsetX: 1,
shadowOffsetY: 1,
textShadowBlur: 1,
textShadowOffsetX: 1,
textShadowOffsetY: 1,
textBoxShadowBlur: 1,
textBoxShadowOffsetX: 1,
textBoxShadowOffsetY: 1
},
Ri = function(t, e, i) {
return Oi.hasOwnProperty(e) ? i * t.dpr : i
},
zi = {
NONE: 0,
STYLE_BIND: 1,
PLAIN_TEXT: 2
},
Ei = 9,
Bi = [
["shadowBlur", 0],
["shadowOffsetX", 0],
["shadowOffsetY", 0],
["shadowColor", "#000"],
["lineCap", "butt"],
["lineJoin", "miter"],
["miterLimit", 10]
],
Vi = function(t) {
this.extendFrom(t, !1)
};
function Gi(t, e, i) {
var n = null == e.x ? 0 : e.x,
a = null == e.x2 ? 1 : e.x2,
o = null == e.y ? 0 : e.y,
r = null == e.y2 ? 0 : e.y2;
return e.global || (n = n * i.width + i.x, a = a * i.width + i.x, o = o * i.height + i.y, r = r * i.height + i.y), n = isNaN(n) ? 0 : n, a = isNaN(a) ? 1 : a, o = isNaN(o) ? 0 : o, r = isNaN(r) ? 0 : r, t.createLinearGradient(n, o, a, r)
}
function Fi(t, e, i) {
var n = i.width,
a = i.height,
o = Math.min(n, a),
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 * a + i.y, l *= o), t.createRadialGradient(r, s, 0, r, s, l)
}
Vi.prototype = {
constructor: Vi,
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,
a = i && i.style,
o = !a || t.__attrCachedBy !== zi.STYLE_BIND;
t.__attrCachedBy = zi.STYLE_BIND;
for (var r = 0; r < Bi.length; r++) {
var s = Bi[r],
l = s[0];
!o && n[l] === a[l] || (t[l] = Ri(t, l, n[l] || s[1]))
}
if (!o && n.fill === a.fill || (t.fillStyle = n.fill), !o && n.stroke === a.stroke || (t.strokeStyle = n.stroke), !o && n.opacity === a.opacity || (t.globalAlpha = null == n.opacity ? 1 : n.opacity), !o && n.blend === a.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 ? Fi : Gi)(t, e, i), a = e.colorStops, o = 0; o < a.length; o++) n.addColorStop(a[o].offset, a[o].color);
return n
}
};
for (var Wi = Vi.prototype, Hi = 0; Hi < Bi.length; Hi++) {
var Zi = Bi[Hi];
Zi[0] in Wi || (Wi[Zi[0]] = Zi[1])
}
Vi.getGradient = Wi.getGradient;
function Ui(t, e) {
this.image = t, this.repeat = e, this.type = "pattern"
}
function Xi() {
return !1
}
function Yi(t, e, i) {
var n = g(),
a = e.getWidth(),
o = e.getHeight(),
r = n.style;
return r && (r.position = "absolute", r.left = 0, r.top = 0, r.width = a + "px", r.height = o + "px", n.setAttribute("data-zr-dom-id", t)), n.width = a * i, n.height = o * i, n
}
function ji(t, e, i) {
var n;
i = i || li, "string" == typeof t ? n = Yi(t, e, i) : E(t) && (t = (n = t).id), this.id = t;
var a = (this.dom = n).style;
a && (n.onselectstart = Xi, a["-webkit-user-select"] = "none", a["user-select"] = "none", a["-webkit-touch-callout"] = "none", a["-webkit-tap-highlight-color"] = "rgba(0,0,0,0)", a.padding = 0, a.margin = 0, a["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
}
ji.prototype = {
constructor: ji,
__dirty: !0,
__used: !(Ui.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 = Yi("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,
a = n.style,
o = this.domBack;
a && (a.width = t + "px", a.height = e + "px"), n.width = t * i, n.height = e * i, o && (o.width = t * i, o.height = e * i, 1 !== i && this.ctxBack.scale(i, i))
},
clear: function(t, e) {
var i, n = this.dom,
a = this.ctx,
o = 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, o / u, r / u)), a.clearRect(0, 0, o, r), e && "transparent" !== e && (e.colorStops ? (i = e.__canvasGradient || Vi.getGradient(a, e, {
x: 0,
y: 0,
width: o,
height: r
}), e.__canvasGradient = i) : e.image && (i = Ui.prototype.getCanvasPattern.call(e, a)), a.save(), a.fillStyle = i || e, a.fillRect(0, 0, o, r), a.restore());
if (s) {
var h = this.domBack;
a.save(), a.globalAlpha = l, a.drawImage(h, 0, 0, o, r), a.restore()
}
}
};
var qi = "undefined" != typeof window && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function(t) {
setTimeout(t, 16)
},
Ki = new _e(50);
function $i(t) {
if ("string" != typeof t) return t;
var e = Ki.get(t);
return e && e.image
}
function Ji(t, e, i, n, a) {
if (t) {
if ("string" != typeof t) return t;
if (e && e.__zrImageSrc === t || !i) return e;
var o = Ki.get(t),
r = {
hostEl: i,
cb: n,
cbPayload: a
};
return o ? tn(e = o.image) || o.pending.push(r) : ((e = new Image).onload = e.onerror = Qi, Ki.put(t, e.__cachedImgObj = {
image: e,
pending: [r]
}), e.src = e.__zrImageSrc = t), e
}
return e
}
function Qi() {
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 tn(t) {
return t && t.width && t.height
}
var en = {},
nn = 0,
an = 5e3,
on = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g,
rn = "12px sans-serif",
sn = {};
function ln(t, e) {
var i = t + ":" + (e = e || rn);
if (en[i]) return en[i];
for (var n, a, o = (t + "").split("\n"), r = 0, s = 0, l = o.length; s < l; s++) r = Math.max((n = o[s], a = e, sn.measureText(n, a)).width, r);
return an < nn && (nn = 0, en = {}), nn++, en[i] = r
}
function un(t, e, i, n, a, o, r, s) {
return r ? function(t, e, i, n, a, o, r, s) {
var l = xn(t, {
rich: r,
truncate: s,
font: e,
textAlign: i,
textPadding: a,
textLineHeight: o
}),
u = l.outerWidth,
h = l.outerHeight,
c = hn(0, u, i),
d = cn(0, h, n);
return new bi(c, d, u, h)
}(t, e, i, n, a, o, r, s) : function(t, e, i, n, a, o, r) {
var s = yn(t, e, a, o, r),
l = ln(t, e);
a && (l += a[1] + a[3]);
var u = s.outerHeight,
h = hn(0, l, i),
c = cn(0, u, n),
d = new bi(h, c, l, u);
return d.lineHeight = s.lineHeight, d
}(t, e, i, n, a, o, s)
}
function hn(t, e, i) {
return "right" === i ? t -= e : "center" === i && (t -= e / 2), t
}
function cn(t, e, i) {
return "middle" === i ? t -= e / 2 : "bottom" === i && (t -= e), t
}
function dn(t, e, i) {
var n = e.textPosition,
a = e.textDistance,
o = i.x,
r = i.y,
s = i.height,
l = i.width,
u = s / 2,
h = "left",
c = "top";
switch (n) {
case "left":
o -= a, r += u, h = "right", c = "middle";
break;
case "right":
o += a + l, r += u, c = "middle";
break;
case "top":
o += l / 2, r -= a, h = "center", c = "bottom";
break;
case "bottom":
o += l / 2, r += s + a, h = "center";
break;
case "inside":
o += l / 2, r += u, h = "center", c = "middle";
break;
case "insideLeft":
o += a, r += u, c = "middle";
break;
case "insideRight":
o += l - a, r += u, h = "right", c = "middle";
break;
case "insideTop":
o += l / 2, r += a, h = "center";
break;
case "insideBottom":
o += l / 2, r += s - a, h = "center", c = "bottom";
break;
case "insideTopLeft":
o += a, r += a;
break;
case "insideTopRight":
o += l - a, r += a, h = "right";
break;
case "insideBottomLeft":
o += a, r += s - a, c = "bottom";
break;
case "insideBottomRight":
o += l - a, r += s - a, h = "right", c = "bottom"
}
return (t = t || {}).x = o, t.y = r, t.textAlign = h, t.textVerticalAlign = c, t
}
function fn(t, e, i, n, a) {
if (!e) return "";
var o = (t + "").split("\n");
a = pn(e, i, n, a);
for (var r = 0, s = o.length; r < s; r++) o[r] = gn(o[r], a);
return o.join("\n")
}
function pn(t, e, i, n) {
(n = L({}, n)).font = e;
i = H(i, "...");
n.maxIterations = H(n.maxIterations, 2);
var a = n.minChar = H(n.minChar, 0);
n.cnCharWidth = ln("国", e);
var o = n.ascCharWidth = ln("a", e);
n.placeholder = H(n.placeholder, "");
for (var r = t = Math.max(0, t - 1), s = 0; s < a && o <= r; s++) r -= o;
var l = ln(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 gn(t, e) {
var i = e.containerWidth,
n = e.font,
a = e.contentWidth;
if (!i) return "";
var o = ln(t, n);
if (o <= i) return t;
for (var r = 0;; r++) {
if (o <= a || r >= e.maxIterations) {
t += e.ellipsis;
break
}
var s = 0 === r ? mn(t, a, e.ascCharWidth, e.cnCharWidth) : 0 < o ? Math.floor(t.length * a / o) : 0;
o = ln(t = t.substr(0, s), n)
}
return "" === t && (t = e.placeholder), t
}
function mn(t, e, i, n) {
for (var a = 0, o = 0, r = t.length; o < r && a < e; o++) {
var s = t.charCodeAt(o);
a += 0 <= s && s <= 127 ? i : n
}
return o
}
function vn(t) {
return ln("国", t)
}
function yn(t, e, i, n, a) {
null != t && (t += "");
var o = H(n, vn(e)),
r = t ? t.split("\n") : [],
s = r.length * o,
l = s;
if (i && (l += i[0] + i[2]), t && a) {
var u = a.outerHeight,
h = a.outerWidth;
if (null != u && u < l) t = "", r = [];
else if (null != h)
for (var c = pn(h - (i ? i[1] + i[3] : 0), e, a.ellipsis, {
minChar: a.minChar,
placeholder: a.placeholder
}), d = 0, f = r.length; d < f; d++) r[d] = gn(r[d], c)
}
return {
lines: r,
height: s,
outerHeight: l,
lineHeight: o
}
}
function xn(t, e) {
var i = {
lines: [],
width: 0,
height: 0
};
if (null != t && (t += ""), !t) return i;
for (var n, a = on.lastIndex = 0; null != (n = on.exec(t));) {
var o = n.index;
a < o && _n(i, t.substring(a, o)), _n(i, n[2], n[1]), a = on.lastIndex
}
a < t.length && _n(i, t.substring(a, 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, vn(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 = ln(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,
A = I && I.image;
A && tn(A = $i(A)) && (S = Math.max(S, A.width * b / A.height))
}
var T = _ ? _[1] + _[3] : 0;
S += T;
var D = null != d ? d - v : null;
null != D && D < S && (!M || D < T ? (C.text = "", C.textWidth = S = 0) : (C.text = fn(C.text, D - T, w, c.ellipsis, {
minChar: c.minChar
}), C.textWidth = ln(C.text, w), S = C.textWidth + T))
}
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 _n(t, e, i) {
for (var n = "" === e, a = e.split("\n"), o = t.lines, r = 0; r < a.length; r++) {
var s = a[r],
l = {
styleName: i,
text: s,
isLineHolder: !s && !n
};
if (r) o.push({
tokens: [l]
});
else {
var u = (o[o.length - 1] || (o[0] = {
tokens: []
})).tokens,
h = u.length;
1 === h && u[0].isLineHolder ? u[0] = l : !s && h && !n || u.push(l)
}
}
}
function wn(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 bn(t, e) {
var i, n, a, o, 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 = a = o = c : c instanceof Array ? 1 === c.length ? i = n = a = o = c[0] : 2 === c.length ? (i = a = c[0], n = o = c[1]) : 3 === c.length ? (i = c[0], n = o = c[1], a = c[2]) : (i = c[0], n = c[1], a = c[2], o = c[3]) : i = n = a = o = 0, u < i + n && (i *= u / (r = i + n), n *= u / r), u < a + o && (a *= u / (r = a + o), o *= u / r), h < n + a && (n *= h / (r = n + a), a *= h / r), h < i + o && (i *= h / (r = i + o), o *= 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 - a), 0 !== a && t.arc(s + u - a, l + h - a, a, 0, Math.PI / 2), t.lineTo(s + o, l + h), 0 !== o && t.arc(s + o, l + h - o, o, 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)
}
sn.measureText = function(t, e) {
var i = x();
return i.font = e || rn, i.measureText(t)
};
var Sn = rn,
Mn = {
left: 1,
right: 1,
center: 1
},
In = {
top: 1,
bottom: 1,
middle: 1
},
An = [
["textShadowBlur", "shadowBlur", 0],
["textShadowOffsetX", "shadowOffsetX", 0],
["textShadowOffsetY", "shadowOffsetY", 0],
["textShadowColor", "shadowColor", "transparent"]
],
Tn = {},
Dn = {};
function Cn(t) {
return Ln(t), O(t.rich, Ln), t
}
function Ln(t) {
if (t) {
t.font = wn(t);
var e = t.textAlign;
"middle" === e && (e = "center"), t.textAlign = null == e || Mn[e] ? e : "left";
var i = t.textVerticalAlign || t.textBaseline;
"center" === i && (i = "middle"), t.textVerticalAlign = null == i || In[i] ? i : "top", t.textPadding && (t.textPadding = X(t.textPadding))
}
}
function kn(t, e, i, n, a, o) {
n.rich ? function(t, e, i, n, a, o) {
o !== Ei && (e.__attrCachedBy = zi.NONE);
var r = t.__textCotentBlock;
r && !t.__dirtyText || (r = t.__textCotentBlock = xn(i, n));
! function(t, e, i, n, a) {
var o = i.width,
r = i.outerWidth,
s = i.outerHeight,
l = n.textPadding,
u = En(Dn, t, n, a),
h = u.baseX,
c = u.baseY,
d = u.textAlign,
f = u.textVerticalAlign;
Pn(e, n, a, h, c);
var p = hn(h, r, d),
g = cn(c, s, f),
m = p,
v = g;
l && (m += l[3], v += l[0]);
var y = m + o;
On(n) && Rn(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, A = 0, T = m, D = y, C = S - 1; A < S && (!(_ = b[A]).textAlign || "left" === _.textAlign);) Nn(t, e, _, n, M, v, T, "left"), I -= _.width, T += _.width, A++;
for (; 0 <= C && "right" === (_ = b[C]).textAlign;) Nn(t, e, _, n, M, v, D, "right"), I -= _.width, D -= _.width, C--;
for (T += (o - (T - m) - (y - D) - I) / 2; A <= C;) _ = b[A], Nn(t, e, _, n, M, v, T + _.width / 2, "center"), T += _.width, A++;
v += M
}
}(t, e, r, n, a)
}(t, e, i, n, a, o) : function(t, e, i, n, a, o) {
var r, s = On(n),
l = !1,
u = e.__attrCachedBy === zi.PLAIN_TEXT;
o !== Ei ? (o && (r = o.style, l = !s && u && r), e.__attrCachedBy = s ? zi.NONE : zi.PLAIN_TEXT) : u && (e.__attrCachedBy = zi.NONE);
var h = n.font || Sn;
l && h === (r.font || Sn) || (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 = yn(i, c, d, f, n.truncate));
var g = p.outerHeight,
m = p.lines,
v = p.lineHeight,
y = En(Dn, t, n, a),
x = y.baseX,
_ = y.baseY,
w = y.textAlign || "left",
b = y.textVerticalAlign;
Pn(e, n, a, x, _);
var S = cn(_, g, b),
M = x,
I = S;
if (s || d) {
var A = ln(i, c);
d && (A += d[1] + d[3]);
var T = hn(x, A, w);
s && Rn(t, e, n, T, S, A, g), d && (M = Wn(x, w, d), I += d[0])
}
e.textAlign = w, e.textBaseline = "middle", e.globalAlpha = n.opacity || 1;
for (var D = 0; D < An.length; D++) {
var C = An[D],
L = C[0],
k = C[1],
P = n[L];
l && P === r[L] || (e[k] = Ri(e, k, P || C[2]))
}
I += v / 2;
var N = n.textStrokeWidth,
O = l ? r.textStrokeWidth : null,
R = !l || N !== O,
z = !l || R || n.textStroke !== r.textStroke,
E = Vn(n.textStroke, N),
B = Gn(n.textFill);
E && (R && (e.lineWidth = N), z && (e.strokeStyle = E));
B && (l && n.textFill === r.textFill || (e.fillStyle = B));
if (1 === m.length) E && e.strokeText(m[0], M, I), B && e.fillText(m[0], M, I);
else
for (D = 0; D < m.length; D++) E && e.strokeText(m[D], M, I), B && e.fillText(m[D], M, I), I += v
}(t, e, i, n, a, o)
}
function Pn(t, e, i, n, a) {
if (i && e.textRotation) {
var o = e.textOrigin;
"center" === o ? (n = i.width / 2 + i.x, a = i.height / 2 + i.y) : o && (n = o[0] + i.x, a = o[1] + i.y), t.translate(n, a), t.rotate(-e.textRotation), t.translate(-n, -a)
}
}
function Nn(t, e, i, n, a, o, r, s) {
var l = n.rich[i.styleName] || {};
l.text = i.text;
var u = i.textVerticalAlign,
h = o + a / 2;
"top" === u ? h = o + i.height / 2 : "bottom" === u && (h = o + a - i.height / 2), !i.isLineHolder && On(l) && Rn(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 = Wn(r, s, c), h -= i.height / 2 - c[2] - i.textHeight / 2), Bn(e, "shadowBlur", Z(l.textShadowBlur, n.textShadowBlur, 0)), Bn(e, "shadowColor", l.textShadowColor || n.textShadowColor || "transparent"), Bn(e, "shadowOffsetX", Z(l.textShadowOffsetX, n.textShadowOffsetX, 0)), Bn(e, "shadowOffsetY", Z(l.textShadowOffsetY, n.textShadowOffsetY, 0)), Bn(e, "textAlign", s), Bn(e, "textBaseline", "middle"), Bn(e, "font", i.font || Sn);
var d = Vn(l.textStroke || n.textStroke, p),
f = Gn(l.textFill || n.textFill),
p = H(l.textStrokeWidth, n.textStrokeWidth);
d && (Bn(e, "lineWidth", p), Bn(e, "strokeStyle", d), e.strokeText(i.text, r, h)), f && (Bn(e, "fillStyle", f), e.fillText(i.text, r, h))
}
function On(t) {
return !!(t.textBackgroundColor || t.textBorderWidth && t.textBorderColor)
}
function Rn(t, e, i, n, a, o, r) {
var s = i.textBackgroundColor,
l = i.textBorderWidth,
u = i.textBorderColor,
h = z(s);
if (Bn(e, "shadowBlur", i.textBoxShadowBlur || 0), Bn(e, "shadowColor", i.textBoxShadowColor || "transparent"), Bn(e, "shadowOffsetX", i.textBoxShadowOffsetX || 0), Bn(e, "shadowOffsetY", i.textBoxShadowOffsetY || 0), h || l && u) {
e.beginPath();
var c = i.textBorderRadius;
c ? bn(e, {
x: n,
y: a,
width: o,
height: r,
r: c
}) : e.rect(n, a, o, r), e.closePath()
}
if (h)
if (Bn(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 (E(s)) {
var f = s.image;
(f = Ji(f, null, t, zn, s)) && tn(f) && e.drawImage(f, n, a, o, r)
}
if (l && u)
if (Bn(e, "lineWidth", l), Bn(e, "strokeStyle", u), null != i.strokeOpacity) {
d = e.globalAlpha;
e.globalAlpha = i.strokeOpacity * i.opacity, e.stroke(), e.globalAlpha = d
} else e.stroke()
}
function zn(t, e) {
e.image = t
}
function En(t, e, i, n) {
var a = i.x || 0,
o = i.y || 0,
r = i.textAlign,
s = i.textVerticalAlign;
if (n) {
var l = i.textPosition;
if (l instanceof Array) a = n.x + Fn(l[0], n.width), o = n.y + Fn(l[1], n.height);
else {
var u = e && e.calculateTextPosition ? e.calculateTextPosition(Tn, i, n) : dn(Tn, i, n);
a = u.x, o = u.y, r = r || u.textAlign, s = s || u.textVerticalAlign
}
var h = i.textOffset;
h && (a += h[0], o += h[1])
}
return (t = t || {}).baseX = a, t.baseY = o, t.textAlign = r, t.textVerticalAlign = s, t
}
function Bn(t, e, i) {
return t[e] = Ri(t, e, i), t[e]
}
function Vn(t, e) {
return null == t || e <= 0 || "transparent" === t || "none" === t ? null : t.image || t.colorStops ? "#000" : t
}
function Gn(t) {
return null == t || "none" === t ? null : t.image || t.colorStops ? "#000" : t
}
function Fn(t, e) {
return "string" == typeof t ? 0 <= t.lastIndexOf("%") ? parseFloat(t) / 100 * e : parseFloat(t) : t
}
function Wn(t, e, i) {
return "right" === e ? t - i[1] : "center" === e ? t + i[3] / 2 - i[1] / 2 : t + i[3]
}
function Hn(t, e) {
return null != t && (t || e.textBackgroundColor || e.textBorderWidth && e.textBorderColor || e.textPadding)
}
function Zn() {}
var Un = new bi;
function Xn(t) {
for (var e in t = t || {}, pi.call(this, t), t) t.hasOwnProperty(e) && "style" !== e && (this[e] = t[e]);
this.style = new Vi(t.style, this), this._rect = null, this.__clipPaths = null
}
function Yn(t) {
Xn.call(this, t)
}
Xn.prototype = {
constructor: Xn,
type: "displayable",
__dirty: !0,
invisible: !(Zn.prototype = {
constructor: Zn,
drawRectText: function(t, e) {
var i = this.style;
e = i.textRect || e, this.__dirty && Cn(i);
var n = i.text;
if (null != n && (n += ""), Hn(n, i)) {
t.save();
var a = this.transform;
i.transformText ? this.setTransform(t) : a && (Un.copy(e), Un.applyTransform(a), e = Un), kn(this, t, n, i, e, Ei), 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 ? pi.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 Vi(t, this), this.dirty(!1), this
},
calculateTextPosition: null
}, w(Xn, pi), b(Xn, Zn), Yn.prototype = {
constructor: Yn,
type: "image",
brush: function(t, e) {
var i = this.style,
n = i.image;
i.bind(t, this, e);
var a = this._image = Ji(n, this._image, this, this.onload);
if (a && tn(a)) {
var o = i.x || 0,
r = i.y || 0,
s = i.width,
l = i.height,
u = a.width / a.height;
if (null == s && null != l ? s = l * u : null == l && null != s ? l = s / u : null == s && null == l && (s = a.width, l = a.height), this.setTransform(t), i.sWidth && i.sHeight) {
var h = i.sx || 0,
c = i.sy || 0;
t.drawImage(a, h, c, i.sWidth, i.sHeight, o, r, s, l)
} else if (i.sx && i.sy) {
var d = s - (h = i.sx),
f = l - (c = i.sy);
t.drawImage(a, h, c, d, f, o, r, s, l)
} else t.drawImage(a, o, 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 bi(t.x || 0, t.y || 0, t.width || 0, t.height || 0)), this._rect
}
}, w(Yn, Xn);
var jn = 314159;
function qn(t) {
return parseInt(t, 10)
}
var Kn = new bi(0, 0, 0, 0),
$n = new bi(0, 0, 0, 0);
function Jn(t, e, i) {
this.type = "canvas";
var n = !t.nodeName || "CANVAS" === t.nodeName.toUpperCase();
this._opts = i = L({}, i || {}), this.dpr = i.devicePixelRatio || li, this._singleCanvas = n;
var a = (this.root = t).style;
a && (a["-webkit-tap-highlight-color"] = "transparent", a["-webkit-user-select"] = a["user-select"] = a["-webkit-touch-callout"] = "none", t.innerHTML = ""), this.storage = e;
var o = 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 ji(t, this, this.dpr);
u.__builtin__ = !0, u.initContext(), (r[jn] = u).zlevel = jn, o.push(jn), 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", "overflow:hidden", "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 = []
}
Jn.prototype = {
constructor: Jn,
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 a = i[n],
o = this._layers[a];
if (!o.__builtin__ && o.refresh) {
var r = 0 === n ? this._backgroundColor : null;
o.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) {
ki(t, this.storage.displayableSortFunc);
var n = {};
(i = i || (this._hoverlayer = this.getLayer(1e5))).ctx.save();
for (var a = 0; a < e;) {
var o = t[a],
r = o.__from;
r && r.__zr ? (a++, r.invisible || (o.transform = r.transform, o.invTransform = r.invTransform, o.__clipPaths = r.__clipPaths, this._doPaintEl(o, i, !0, n))) : (t.splice(a, 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 a = this;
qi(function() {
a._paintList(t, e, i)
})
}
}
},
_compositeManually: function() {
var e = this.getLayer(jn).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 a = this._zlevelList[n];
(s = this._layers[a]).__builtin__ && s !== this._hoverlayer && (s.__dirty || e) && i.push(s)
}
for (var o = !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 && (o = !1), u.prevElClipPaths && l.restore(), l.restore()
}
return v.wxa && O(this._layers, function(t) {
t && t.ctx && t.ctx.draw && t.ctx.draw()
}), o
},
_doPaintEl: function(t, e, i, n) {
var a = e.ctx,
o = t.transform;
if ((e.__dirty || i) && !t.invisible && 0 !== t.style.opacity && (!o || o[0] || o[3]) && (!t.culling || ! function(t, e, i) {
return Kn.copy(t.getBoundingRect()), t.transform && Kn.applyTransform(t.transform), $n.width = e, $n.height = i, !Kn.intersect($n)
}(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 && (a.restore(), n.prevElClipPaths = null, n.prevEl = null), r && (a.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, a), n.prevElClipPaths = r)), t.beforeBrush && t.beforeBrush(a), t.brush(a, n.prevEl || null), (n.prevEl = t).afterBrush && t.afterBrush(a)
}
},
getLayer: function(t, e) {
this._singleCanvas && !this._needsManuallyCompositing && (t = jn);
var i = this._layers[t];
return i || ((i = new ji("zr_" + t, this, this.dpr)).zlevel = t, i.__builtin__ = !0, this._layerConfig[t] && m(i, this._layerConfig[t], !0), e && (i.virtual = e), this.insertLayer(t, i), i.initContext()), i
},
insertLayer: function(t, e) {
var i = this._layers,
n = this._zlevelList,
a = n.length,
o = null,
r = -1,
s = this._domRoot;
if (i[t]) ci("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 < a && t > n[0]) {
for (r = 0; r < a - 1 && !(n[r] < t && n[r + 1] > t); r++);
o = i[n[r]]
}
if (n.splice(r + 1, 0, t), !(i[t] = e).virtual)
if (o) {
var l = o.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 ci("Layer of zlevel " + t + " is not valid")
},
eachLayer: function(t, e) {
var i, n, a = this._zlevelList;
for (n = 0; n < a.length; n++) i = a[n], t.call(e, this._layers[i], i)
},
eachBuiltinLayer: function(t, e) {
var i, n, a, o = this._zlevelList;
for (a = 0; a < o.length; a++) n = o[a], (i = this._layers[n]).__builtin__ && t.call(e, i, n)
},
eachOtherLayer: function(t, e) {
var i, n, a, o = this._zlevelList;
for (a = 0; a < o.length; a++) n = o[a], (i = this._layers[n]).__builtin__ || t.call(e, i, n)
},
getLayers: function() {
return this._layers
},
_updateLayerStatus: function(t) {
function e(t) {
n && (n.__endIndex !== t && (n.__dirty = !0), n.__endIndex = t)
}
if (this.eachBuiltinLayer(function(t, e) {
t.__dirty = t.__used = !1
}), this._singleCanvas)
for (var i = 1; i < t.length; i++) {
if ((o = t[i]).zlevel !== t[i - 1].zlevel || o.incremental) {
this._needsManuallyCompositing = !0;
break
}
}
var n = null,
a = 0;
for (i = 0; i < t.length; i++) {
var o, r, s = (o = t[i]).zlevel;
o.incremental ? ((r = this.getLayer(s + .001, this._needsManuallyCompositing)).incremental = !0, a = 1) : r = this.getLayer(s + (0 < a ? .01 : 0), this._needsManuallyCompositing), r.__builtin__ || ci("ZLevel " + s + " has been used by unkown layer " + r.id), r !== n && (r.__used = !0, r.__startIndex !== i && (r.__dirty = !0), r.__startIndex = i, r.incremental ? r.__drawIndex = -1 : r.__drawIndex = i, e(i), n = r), o.__dirty && (r.__dirty = !0, r.incremental && r.__drawIndex < 0 && (r.__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 a = this._zlevelList[n];
if (a === t || a === t + .01) m(this._layers[a], 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 a in t.style.width = e + "px", t.style.height = i + "px", this._layers) this._layers.hasOwnProperty(a) && this._layers[a].resize(e, i);
O(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(jn).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[jn].dom;
var e = new ji("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,
a = e.ctx;
this.eachLayer(function(t) {
t.__builtin__ ? a.drawImage(t.dom, 0, 0, i, n) : t.renderToCanvas && (e.ctx.save(), t.renderToCanvas(e.ctx), e.ctx.restore())
})
} else
for (var o = {}, r = this.storage.getDisplayList(!0), s = 0; s < r.length; s++) {
var l = r[s];
this._doPaintEl(l, e, !0, o)
}
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],
a = ["paddingLeft", "paddingTop"][t],
o = ["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] || qn(s[i]) || qn(r.style[i])) - (qn(s[a]) || 0) - (qn(s[o]) || 0) | 0
},
pathToImage: function(t, e) {
e = e || this.dpr;
var i = document.createElement("canvas"),
n = i.getContext("2d"),
a = t.getBoundingRect(),
o = t.style,
r = o.shadowBlur * e,
s = o.shadowOffsetX * e,
l = o.shadowOffsetY * e,
u = o.hasStroke() ? o.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 = a.width + h + c,
g = a.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 - a.x, d - a.y], t.rotation = 0, t.scale = [1, 1], t.updateTransform(), t && t.brush(n);
var v = new Yn({
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 Qn(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)
}
Qn.prototype = {
constructor: Qn,
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, a = [], o = [], r = 0; r < n; r++) {
var s = i[r],
l = s.step(t, e);
l && (a.push(l), o.push(s))
}
for (r = 0; r < n;) i[r]._needsRemove ? (i[r] = i[n - 1], i.pop(), n--) : r++;
n = a.length;
for (r = 0; r < n; r++) o[r].fire(a[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, qi(function t() {
e._running && (qi(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 ri(t, (e = e || {}).loop, e.getter, e.setter);
return this.addAnimator(i), i
}
}, b(Qn, Ct);
var ta = ["click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu"],
ea = ["touchstart", "touchend", "touchmove"],
ia = {
pointerdown: 1,
pointerup: 1,
pointermove: 1,
pointerout: 1
},
na = N(ta, function(t) {
var e = t.replace("mouse", "pointer");
return ia[e] ? e : t
});
function aa(t) {
return "mousewheel" === t && v.browser.firefox ? "DOMMouseScroll" : t
}
function oa(t) {
t._touching = !0, clearTimeout(t._touchTimer), t._touchTimer = setTimeout(function() {
t._touching = !1
}, 700)
}
var ra = {
mousemove: function(t) {
t = Vt(this.dom, t), this.trigger("mousemove", t)
},
mouseout: function(t) {
var e = (t = Vt(this.dom, t)).toElement || t.relatedTarget;
if (e !== this.dom)
for (; e && 9 !== e.nodeType;) {
if (e === this.dom) return;
e = e.parentNode
}
this.trigger("mouseout", t)
},
touchstart: function(t) {
(t = Vt(this.dom, t)).zrByTouch = !0, this._lastTouchMoment = new Date, this.handler.processGesture(this, t, "start"), ra.mousemove.call(this, t), ra.mousedown.call(this, t), oa(this)
},
touchmove: function(t) {
(t = Vt(this.dom, t)).zrByTouch = !0, this.handler.processGesture(this, t, "change"), ra.mousemove.call(this, t), oa(this)
},
touchend: function(t) {
(t = Vt(this.dom, t)).zrByTouch = !0, this.handler.processGesture(this, t, "end"), ra.mouseup.call(this, t), +new Date - this._lastTouchMoment < 300 && ra.click.call(this, t), oa(this)
},
pointerdown: function(t) {
ra.mousedown.call(this, t)
},
pointermove: function(t) {
sa(t) || ra.mousemove.call(this, t)
},
pointerup: function(t) {
ra.mouseup.call(this, t)
},
pointerout: function(t) {
sa(t) || ra.mouseout.call(this, t)
}
};
function sa(t) {
var e = t.pointerType;
return "pen" === e || "touch" === e
}
function la(i) {
function t(t, e) {
O(t, function(t) {
Gt(i, aa(t), e._handlers[t])
}, e)
}
Ct.call(this), this.dom = i, this._touching = !1, this._touchTimer, this._handlers = {},
function(e) {
O(ea, function(t) {
e._handlers[t] = T(ra[t], e)
}), O(na, function(t) {
e._handlers[t] = T(ra[t], e)
}), O(ta, function(t) {
e._handlers[t] = function(t, e) {
return function() {
if (!e._touching) return t.apply(e, arguments)
}
}(ra[t], e)
})
}(this), v.pointerEventsSupported ? t(na, this) : (v.touchEventsSupported && t(ea, this), t(ta, this))
}
O(["click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu"], function(e) {
ra[e] = function(t) {
t = Vt(this.dom, t), this.trigger(e, t)
}
});
var ua = la.prototype;
ua.dispose = function() {
for (var t, e, i, n = ta.concat(ea), a = 0; a < n.length; a++) {
var o = n[a];
t = this.dom, e = aa(o), i = this._handlers[o], Nt ? t.removeEventListener(e, i) : t.detachEvent("on" + e, i)
}
}, ua.setCursor = function(t) {
this.dom.style && (this.dom.style.cursor = t || "default")
}, b(la, Ct);
var ha = !v.canvasSupported,
ca = {
canvas: Jn
},
da = {};
function fa(t, e) {
var i = new ga(n(), t, e);
return da[i.id] = i
}
function pa(t, e) {
ca[t] = e
}
var ga = function(t, e, i) {
i = i || {}, this.dom = e, this.id = t;
var n = this,
a = new Ni,
o = i.renderer;
if (ha) {
if (!ca.vml) throw new Error("You need to require 'zrender/vml/vml' to support IE8");
o = "vml"
} else o && ca[o] || (o = "canvas");
var r = new ca[o](e, a, i, t);
this.storage = a, this.painter = r;
var s = v.node || v.worker ? null : new la(r.getViewportRoot());
this.handler = new qt(a, r, s, r.root), this.animation = new Qn({
stage: {
update: T(this.flush, this)
}
}), this.animation.start(), this._needsRefresh;
var l = a.delFromStorage,
u = a.addToStorage;
a.delFromStorage = function(t) {
l.call(a, t), t && t.removeSelfFromZr(n)
}, a.addToStorage = function(t) {
u.call(a, t), t.addSelfToZr(n)
}
};
ga.prototype = {
constructor: ga,
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 da[t]
}(this.id)
}
};
var ma = (Object.freeze || Object)({
version: "4.1.1",
init: fa,
dispose: function(t) {
if (t) t.dispose();
else {
for (var e in da) da.hasOwnProperty(e) && da[e].dispose();
da = {}
}
return this
},
getInstance: function(t) {
return da[t]
},
registerPainter: pa
}),
va = O,
ya = E,
xa = k,
_a = "series\0";
function wa(t) {
return t instanceof Array ? t : null == t ? [] : [t]
}
function ba(t, e, i) {
if (t) {
t[e] = t[e] || {}, t.emphasis = t.emphasis || {}, t.emphasis[e] = t.emphasis[e] || {};
for (var n = 0, a = i.length; n < a; n++) {
var o = i[n];
!t.emphasis[e].hasOwnProperty(o) && t[e].hasOwnProperty(o) && (t.emphasis[e][o] = t[e][o])
}
}
}
var Sa = ["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 Ma(t) {
return !ya(t) || xa(t) || t instanceof Date ? t : t.value
}
function Ia(t, a) {
a = (a || []).slice();
var o = N(t || [], function(t, e) {
return {
exist: t
}
});
return va(a, function(t, e) {
if (ya(t)) {
for (var i = 0; i < o.length; i++)
if (!o[i].option && null != t.id && o[i].exist.id === t.id + "") return o[i].option = t, void(a[e] = null);
for (i = 0; i < o.length; i++) {
var n = o[i].exist;
if (!(o[i].option || null != n.id && null != t.id || null == t.name || Da(t) || Da(n) || n.name !== t.name + "")) return o[i].option = t, void(a[e] = null)
}
}
}), va(a, function(t, e) {
if (ya(t)) {
for (var i = 0; i < o.length; i++) {
var n = o[i].exist;
if (!o[i].option && !Da(n) && null == t.id) {
o[i].option = t;
break
}
}
i >= o.length && o.push({
option: t
})
}
}), o
}
function Aa(t) {
var r = Q();
va(t, function(t, e) {
var i = t.exist;
i && r.set(i.id, t)
}), va(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 = {})
}), va(t, function(t, e) {
var i = t.exist,
n = t.option,
a = t.keyInfo;
if (ya(n)) {
if (a.name = null != n.name ? n.name + "" : i ? i.name : _a + e, i) a.id = i.id;
else if (null != n.id) a.id = n.id + "";
else
for (var o = 0; a.id = "\0" + a.name + "\0" + o++, r.get(a.id););
r.set(a.id, t)
}
})
}
function Ta(t) {
var e = t.name;
return !(!e || !e.indexOf(_a))
}
function Da(t) {
return ya(t) && t.id && 0 === (t.id + "").indexOf("\0_ec_\0")
}
function Ca(e, t) {
return null != t.dataIndexInside ? t.dataIndexInside : null != t.dataIndex ? k(t.dataIndex) ? N(t.dataIndex, function(t) {
return e.indexOfRawIndex(t)
}) : e.indexOfRawIndex(t.dataIndex) : null != t.name ? k(t.name) ? N(t.name, function(t) {
return e.indexOfName(t)
}) : e.indexOfName(t.name) : void 0
}
function La() {
var e = "__\0ec_inner_" + ka++ + "_" + Math.random().toFixed(5);
return function(t) {
return t[e] || (t[e] = {})
}
}
var ka = 0;
function Pa(s, l, u) {
if (z(l)) {
var t = {};
t[l + "Index"] = 0, l = t
}
var e = u && u.defaultMainType;
!e || Na(l, e + "Index") || Na(l, e + "Id") || Na(l, e + "Name") || (l[e + "Index"] = 0);
var h = {};
return va(l, function(t, e) {
t = l[e];
if ("dataIndex" !== e && "dataIndexInside" !== e) {
var i = e.match(/^(\w+)(Index|Id|Name)$/) || [],
n = i[1],
a = (i[2] || "").toLowerCase();
if (!(!n || !a || null == t || "index" === a && "none" === t || u && u.includeMainTypes && _(u.includeMainTypes, n) < 0)) {
var o = {
mainType: n
};
"index" === a && "all" === t || (o[a] = t);
var r = s.queryComponents(o);
h[n + "Models"] = r, h[n + "Model"] = r[0]
}
} else h[e] = t
}), h
}
function Na(t, e) {
return t && t.hasOwnProperty(e)
}
function Oa(t, e, i) {
t.setAttribute ? t.setAttribute(e, i) : t[e] = i
}
function Ra(t) {
return "auto" === t ? v.domSupported ? "html" : "richText" : t || "html"
}
function za(t, i) {
var n = Q(),
a = [];
return O(t, function(t) {
var e = i(t);
(n.get(e) || (a.push(e), n.set(e, []))).push(t)
}), {
keys: a,
buckets: n
}
}
var Ea = ".",
Ba = "___EC__COMPONENT__CONTAINER___";
function Va(t) {
var e = {
main: "",
sub: ""
};
return t && (t = t.split(Ea), e.main = t[0] || "", e.sub = t[1] || ""), e
}
function Ga(t) {
(t.$constructor = t).extend = function(t) {
function e() {
t.$constructor ? t.$constructor.apply(this, arguments) : i.apply(this, arguments)
}
var i = this;
return L(e.prototype, t), e.extend = this.extend, e.superCall = Ha, e.superApply = Za, w(e, this), e.superClass = i, e
}
}
var Fa = 0;
function Wa(t) {
var e = ["__\0is_clz", Fa++, Math.random().toFixed(3)].join("_");
t.prototype[e] = !0, t.isInstance = function(t) {
return !(!t || !t[e])
}
}
function Ha(t, e) {
var i = U(arguments, 2);
return this.superClass.prototype[e].apply(t, i)
}
function Za(t, e, i) {
return this.superClass.prototype[e].apply(t, i)
}
function Ua(i, t) {
t = t || {};
var a = {};
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 = Va(e)).sub) {
if (e.sub !== Ba) {
(function(t) {
var e = a[t.main];
e && e[Ba] || ((e = a[t.main] = {})[Ba] = !0);
return e
})(e)[e.sub] = t
}
} else a[e.main] = t;
return t
}, i.getClass = function(t, e, i) {
var n = a[t];
if (n && n[Ba] && (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 = Va(t);
var i = [],
e = a[t.main];
return e && e[Ba] ? O(e, function(t, e) {
e !== Ba && i.push(t)
}) : i.push(e), i
}, i.hasClass = function(t) {
return t = Va(t), !!a[t.main]
}, i.getAllClassMainTypes = function() {
var i = [];
return O(a, function(t, e) {
i.push(e)
}), i
}, i.hasSubTypes = function(t) {
t = Va(t);
var e = a[t.main];
return e && e[Ba]
}, i.parseClassType = Va, 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 Xa(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 = {}, a = 0; a < s.length; a++) {
var o = s[a][1];
if (!(e && 0 <= _(e, o) || i && _(i, o) < 0)) {
var r = t.getShallow(o);
null != r && (n[s[a][0]] = r)
}
}
return n
}
}
var Ya = Xa([
["lineWidth", "width"],
["stroke", "color"],
["opacity"],
["shadowBlur"],
["shadowOffsetX"],
["shadowOffsetY"],
["shadowColor"]
]),
ja = {
getLineStyle: function(t) {
var e = Ya(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])
}
},
qa = Xa([
["fill", "color"],
["shadowBlur"],
["shadowOffsetX"],
["shadowOffsetY"],
["opacity"],
["shadowColor"]
]),
Ka = {
getAreaStyle: function(t, e) {
return qa(this, t, e)
}
},
$a = Math.pow,
Ja = Math.sqrt,
Qa = 1e-8,
to = 1e-4,
eo = Ja(3),
io = 1 / 3,
no = at(),
ao = at(),
oo = at();
function ro(t) {
return -Qa < t && t < Qa
}
function so(t) {
return Qa < t || t < -Qa
}
function lo(t, e, i, n, a) {
var o = 1 - a;
return o * o * (o * t + 3 * a * e) + a * a * (a * n + 3 * o * i)
}
function uo(t, e, i, n, a) {
var o = 1 - a;
return 3 * (((e - t) * o + 2 * (i - e) * a) * o + (n - i) * a * a)
}
function ho(t, e, i, n, a) {
var o = 6 * i - 12 * e + 6 * t,
r = 9 * e + 3 * n - 3 * t - 9 * i,
s = 3 * e - 3 * t,
l = 0;
if (ro(r)) {
if (so(o)) 0 <= (h = -s / o) && h <= 1 && (a[l++] = h)
} else {
var u = o * o - 4 * r * s;
if (ro(u)) a[0] = -o / (2 * r);
else if (0 < u) {
var h, c = Ja(u),
d = (-o - c) / (2 * r);
0 <= (h = (-o + c) / (2 * r)) && h <= 1 && (a[l++] = h), 0 <= d && d <= 1 && (a[l++] = d)
}
}
return l
}
function co(t, e, i, n, a, o) {
var r = (e - t) * a + t,
s = (i - e) * a + e,
l = (n - i) * a + i,
u = (s - r) * a + r,
h = (l - s) * a + s,
c = (h - u) * a + u;
o[0] = t, o[1] = r, o[2] = u, o[3] = c, o[4] = c, o[5] = h, o[6] = l, o[7] = n
}
function fo(t, e, i, n) {
var a = 1 - n;
return a * (a * t + 2 * n * e) + n * n * i
}
function po(t, e, i, n) {
return 2 * ((1 - n) * (e - t) + n * (i - e))
}
function go(t, e, i) {
var n = t + i - 2 * e;
return 0 == n ? .5 : (t - e) / n
}
function mo(t, e, i, n, a) {
var o = (e - t) * n + t,
r = (i - e) * n + e,
s = (r - o) * n + o;
a[0] = t, a[1] = o, a[2] = s, a[3] = s, a[4] = r, a[5] = i
}
var vo = Math.min,
yo = Math.max,
xo = Math.sin,
_o = Math.cos,
wo = 2 * Math.PI,
bo = at(),
So = at(),
Mo = at();
function Io(t, e, i) {
if (0 !== t.length) {
var n, a = t[0],
o = a[0],
r = a[0],
s = a[1],
l = a[1];
for (n = 1; n < t.length; n++) a = t[n], o = vo(o, a[0]), r = yo(r, a[0]), s = vo(s, a[1]), l = yo(l, a[1]);
e[0] = o, e[1] = s, i[0] = r, i[1] = l
}
}
function Ao(t, e, i, n, a, o) {
a[0] = vo(t, i), a[1] = vo(e, n), o[0] = yo(t, i), o[1] = yo(e, n)
}
var To = [],
Do = [];
function Co(t, e, i, n, a, o, r, s, l, u) {
var h, c = ho,
d = lo,
f = c(t, i, a, r, To);
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, a, r, To[h]);
l[0] = vo(p, l[0]), u[0] = yo(p, u[0])
}
for (f = c(e, n, o, s, Do), h = 0; h < f; h++) {
var g = d(e, n, o, s, Do[h]);
l[1] = vo(g, l[1]), u[1] = yo(g, u[1])
}
l[0] = vo(t, l[0]), u[0] = yo(t, u[0]), l[0] = vo(r, l[0]), u[0] = yo(r, u[0]), l[1] = vo(e, l[1]), u[1] = yo(e, u[1]), l[1] = vo(s, l[1]), u[1] = yo(s, u[1])
}
function Lo(t, e, i, n, a, o, r, s, l) {
var u = St,
h = Mt,
c = Math.abs(a - o);
if (c % wo < 1e-4 && 1e-4 < c) return s[0] = t - i, s[1] = e - n, l[0] = t + i, void(l[1] = e + n);
if (bo[0] = _o(a) * i + t, bo[1] = xo(a) * n + e, So[0] = _o(o) * i + t, So[1] = xo(o) * n + e, u(s, bo, So), h(l, bo, So), (a %= wo) < 0 && (a += wo), (o %= wo) < 0 && (o += wo), o < a && !r ? o += wo : a < o && r && (a += wo), r) {
var d = o;
o = a, a = d
}
for (var f = 0; f < o; f += Math.PI / 2) a < f && (Mo[0] = _o(f) * i + t, Mo[1] = xo(f) * n + e, u(s, Mo, s), h(l, Mo, l))
}
var ko = {
M: 1,
L: 2,
C: 3,
Q: 4,
A: 5,
Z: 6,
R: 7
},
Po = [],
No = [],
Oo = [],
Ro = [],
zo = Math.min,
Eo = Math.max,
Bo = Math.cos,
Vo = Math.sin,
Go = Math.sqrt,
Fo = Math.abs,
Wo = "undefined" != typeof Float32Array,
Ho = function(t) {
this._saveData = !t, this._saveData && (this.data = []), this._ctx = null
};
function Zo(t, e, i, n, a, o, r) {
if (0 === a) return !1;
var s = a,
l = 0;
if (e + s < r && n + s < r || r < e - s && r < n - s || t + s < o && i + s < o || o < t - s && o < i - s) return !1;
if (t === i) return Math.abs(o - t) <= s / 2;
var u = (l = (e - n) / (t - i)) * o - r + (t * n - i * e) / (t - i);
return u * u / (l * l + 1) <= s / 2 * s / 2
}
function Uo(t, e, i, n, a, o, r, s, l, u, h) {
if (0 === l) return !1;
var c = l;
return !(e + c < h && n + c < h && o + c < h && s + c < h || h < e - c && h < n - c && h < o - c && h < s - c || t + c < u && i + c < u && a + c < u && r + c < u || u < t - c && u < i - c && u < a - c && u < r - c) && function(t, e, i, n, a, o, r, s, l, u, h) {
var c, d, f, p, g, m = .005,
v = 1 / 0;
no[0] = l, no[1] = u;
for (var y = 0; y < 1; y += .05) ao[0] = lo(t, i, a, r, y), ao[1] = lo(e, n, o, s, y), (p = _t(no, ao)) < v && (c = y, v = p);
v = 1 / 0;
for (var x = 0; x < 32 && !(m < to); x++) d = c - m, f = c + m, ao[0] = lo(t, i, a, r, d), ao[1] = lo(e, n, o, s, d), p = _t(ao, no), 0 <= d && p < v ? (c = d, v = p) : (oo[0] = lo(t, i, a, r, f), oo[1] = lo(e, n, o, s, f), g = _t(oo, no), f <= 1 && g < v ? (c = f, v = g) : m *= .5);
return h && (h[0] = lo(t, i, a, r, c), h[1] = lo(e, n, o, s, c)), Ja(v)
}(t, e, i, n, a, o, r, s, u, h, null) <= c / 2
}
function Xo(t, e, i, n, a, o, r, s, l) {
if (0 === r) return !1;
var u = r;
return !(e + u < l && n + u < l && o + u < l || l < e - u && l < n - u && l < o - u || t + u < s && i + u < s && a + u < s || s < t - u && s < i - u && s < a - u) && function(t, e, i, n, a, o, r, s, l) {
var u, h = .005,
c = 1 / 0;
no[0] = r, no[1] = s;
for (var d = 0; d < 1; d += .05) {
ao[0] = fo(t, i, a, d), ao[1] = fo(e, n, o, d), (m = _t(no, ao)) < c && (u = d, c = m)
}
c = 1 / 0;
for (var f = 0; f < 32 && !(h < to); f++) {
var p = u - h,
g = u + h;
ao[0] = fo(t, i, a, p), ao[1] = fo(e, n, o, p);
var m = _t(ao, no);
if (0 <= p && m < c) u = p, c = m;
else {
oo[0] = fo(t, i, a, g), oo[1] = fo(e, n, o, g);
var v = _t(oo, no);
g <= 1 && v < c ? (u = g, c = v) : h *= .5
}
}
return l && (l[0] = fo(t, i, a, u), l[1] = fo(e, n, o, u)), Ja(c)
}(t, e, i, n, a, o, s, l, null) <= u / 2
}
Ho.prototype = {
constructor: Ho,
_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 = Fo(i / li / t) || 0, this._uy = Fo(i / li / 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(ko.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 = Fo(t - this._xi) > this._ux || Fo(e - this._yi) > this._uy || this._len < 5;
return this.addData(ko.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, a, o) {
return this.addData(ko.C, t, e, i, n, a, o), this._ctx && (this._needsDash() ? this._dashedBezierTo(t, e, i, n, a, o) : this._ctx.bezierCurveTo(t, e, i, n, a, o)), this._xi = a, this._yi = o, this
},
quadraticCurveTo: function(t, e, i, n) {
return this.addData(ko.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, a, o) {
return this.addData(ko.A, t, e, i, i, n, a - n, 0, o ? 0 : 1), this._ctx && this._ctx.arc(t, e, i, n, a, o), this._xi = Bo(a) * i + t, this._yi = Vo(a) * i + e, this
},
arcTo: function(t, e, i, n, a) {
return this._ctx && this._ctx.arcTo(t, e, i, n, a), this
},
rect: function(t, e, i, n) {
return this._ctx && this._ctx.rect(t, e, i, n), this.addData(ko.R, t, e, i, n), this
},
closePath: function() {
this.addData(ko.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 || !Wo || (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, a = 0; a < e; a++) i += t[a].len();
Wo && this.data instanceof Float32Array && (this.data = new Float32Array(n + i));
for (a = 0; a < e; a++)
for (var o = t[a].data, r = 0; r < o.length; r++) this.data[n++] = o[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, a = this._dashSum,
o = this._dashOffset,
r = this._lineDash,
s = this._ctx,
l = this._xi,
u = this._yi,
h = t - l,
c = e - u,
d = Go(h * h + c * c),
f = l,
p = u,
g = r.length;
for (o < 0 && (o = a + o), f -= (o %= a) * (h /= d), p -= o * (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 ? zo(f, t) : Eo(f, t), 0 <= c ? zo(p, e) : Eo(p, e));
h = f - t, c = p - e, this._dashOffset = -Go(h * h + c * c)
},
_dashedBezierTo: function(t, e, i, n, a, o) {
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 = lo,
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, a, r + .1) - v(g, t, i, a, r), l = v(m, e, n, o, r + .1) - v(m, e, n, o, r), y += Go(s * s + l * l);
for (; x < _ && !(d < (w += f[x])); x++);
for (r = (w - d) / y; r <= 1;) u = v(g, t, i, a, r), h = v(m, e, n, o, r), x % 2 ? p.moveTo(u, h) : p.lineTo(u, h), r += f[x] / y, x = (x + 1) % _;
x % 2 != 0 && p.lineTo(a, o), s = a - u, l = o - h, this._dashOffset = -Go(s * s + l * l)
},
_dashedQuadraticTo: function(t, e, i, n) {
var a = i,
o = 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, a, o)
},
toStatic: function() {
var t = this.data;
t instanceof Array && (t.length = this._len, Wo && (this.data = new Float32Array(t)))
},
getBoundingRect: function() {
Po[0] = Po[1] = Oo[0] = Oo[1] = Number.MAX_VALUE, No[0] = No[1] = Ro[0] = Ro[1] = -Number.MAX_VALUE;
for (var t, e, i, n, a, o, 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 ko.M:
g = v = p[x++], m = y = p[x++], Oo[0] = v, Oo[1] = y, Ro[0] = v, Ro[1] = y;
break;
case ko.L:
Ao(g, m, p[x], p[x + 1], Oo, Ro), g = p[x++], m = p[x++];
break;
case ko.C:
Co(g, m, p[x++], p[x++], p[x++], p[x++], p[x], p[x + 1], Oo, Ro), g = p[x++], m = p[x++];
break;
case ko.Q:
t = g, e = m, i = p[x++], n = p[x++], a = p[x], o = p[x + 1], r = Oo, s = Ro, u = l = void 0, u = fo, h = yo(vo((l = go)(t, i, a), 1), 0), c = yo(vo(l(e, n, o), 1), 0), d = u(t, i, a, h), f = u(e, n, o, c), r[0] = vo(t, a, d), r[1] = vo(e, o, f), s[0] = yo(t, a, d), s[1] = yo(e, o, f), g = p[x++], m = p[x++];
break;
case ko.A:
var w = p[x++],
b = p[x++],
S = p[x++],
M = p[x++],
I = p[x++],
A = p[x++] + I;
x += 1;
var T = 1 - p[x++];
1 === x && (v = Bo(I) * S + w, y = Vo(I) * M + b), Lo(w, b, S, M, I, A, T, Oo, Ro), g = Bo(A) * S + w, m = Vo(A) * M + b;
break;
case ko.R:
Ao(v = g = p[x++], y = m = p[x++], v + p[x++], y + p[x++], Oo, Ro);
break;
case ko.Z:
g = v, m = y
}
St(Po, Po, Oo), Mt(No, No, Ro)
}
return 0 === x && (Po[0] = Po[1] = No[0] = No[1] = 0), new bi(Po[0], Po[1], No[0] - Po[0], No[1] - Po[1])
},
rebuildPath: function(t) {
for (var e, i, n, a, o, 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 = a = s[c + 1]), d) {
case ko.M:
e = n = s[c++], i = a = s[c++], t.moveTo(n, a);
break;
case ko.L:
o = s[c++], r = s[c++], (Fo(o - n) > l || Fo(r - a) > u || c === h - 1) && (t.lineTo(o, r), n = o, a = r);
break;
case ko.C:
t.bezierCurveTo(s[c++], s[c++], s[c++], s[c++], s[c++], s[c++]), n = s[c - 2], a = s[c - 1];
break;
case ko.Q:
t.quadraticCurveTo(s[c++], s[c++], s[c++], s[c++]), n = s[c - 2], a = s[c - 1];
break;
case ko.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 = Bo(v) * g + f, i = Vo(v) * m + p), n = Bo(M) * g + f, a = Vo(M) * m + p;
break;
case ko.R:
e = n = s[c], i = a = s[c + 1], t.rect(s[c++], s[c++], s[c++], s[c++]);
break;
case ko.Z:
t.closePath(), n = e, a = i
}
}
}
}, Ho.CMD = ko;
var Yo = 2 * Math.PI;
function jo(t) {
return (t %= Yo) < 0 && (t += Yo), t
}
var qo = 2 * Math.PI;
function Ko(t, e, i, n, a, o, 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 - a) % qo < 1e-4) return !0;
if (o) {
var c = n;
n = jo(a), a = jo(c)
} else n = jo(n), a = jo(a);
a < n && (a += qo);
var d = Math.atan2(l, s);
return d < 0 && (d += qo), n <= d && d <= a || n <= d + qo && d + qo <= a
}
function $o(t, e, i, n, a, o) {
if (e < o && n < o || o < e && o < n) return 0;
if (n === e) return 0;
var r = n < e ? 1 : -1,
s = (o - e) / (n - e);
1 != s && 0 != s || (r = n < e ? .5 : -.5);
var l = s * (i - t) + t;
return l === a ? 1 / 0 : a < l ? r : 0
}
var Jo = Ho.CMD,
Qo = 2 * Math.PI,
tr = 1e-4;
var er = [-1, -1, -1],
ir = [-1, -1];
function nr(t, e, i, n, a, o, r, s, l, u) {
if (e < u && n < u && o < u && s < u || u < e && u < n && u < o && u < s) return 0;
var h, c = function(t, e, i, n, a, o) {
var r = n + 3 * (e - i) - t,
s = 3 * (i - 2 * e + t),
l = 3 * (e - t),
u = t - a,
h = s * s - 3 * r * l,
c = s * l - 9 * r * u,
d = l * l - 3 * s * u,
f = 0;
if (ro(h) && ro(c)) {
if (ro(s)) o[0] = 0;
else 0 <= (M = -l / s) && M <= 1 && (o[f++] = M)
} else {
var p = c * c - 4 * h * d;
if (ro(p)) {
var g = c / h,
m = -g / 2;
0 <= (M = -s / r + g) && M <= 1 && (o[f++] = M), 0 <= m && m <= 1 && (o[f++] = m)
} else if (0 < p) {
var v = Ja(p),
y = h * s + 1.5 * r * (-c + v),
x = h * s + 1.5 * r * (-c - v);
0 <= (M = (-s - ((y = y < 0 ? -$a(-y, io) : $a(y, io)) + (x = x < 0 ? -$a(-x, io) : $a(x, io)))) / (3 * r)) && M <= 1 && (o[f++] = M)
} else {
var _ = (2 * h * s - 3 * r * c) / (2 * Ja(h * h * h)),
w = Math.acos(_) / 3,
b = Ja(h),
S = Math.cos(w),
M = (-s - 2 * b * S) / (3 * r),
I = (m = (-s + b * (S + eo * Math.sin(w))) / (3 * r), (-s + b * (S - eo * Math.sin(w))) / (3 * r));
0 <= M && M <= 1 && (o[f++] = M), 0 <= m && m <= 1 && (o[f++] = m), 0 <= I && I <= 1 && (o[f++] = I)
}
}
return f
}(e, n, o, s, u, er);
if (0 === c) return 0;
for (var d, f, p = 0, g = -1, m = 0; m < c; m++) {
var v = er[m],
y = 0 === v || 1 === v ? .5 : 1;
lo(t, i, a, r, v) < l || (g < 0 && (g = ho(e, n, o, s, ir), ir[1] < ir[0] && 1 < g && (void 0, h = ir[0], ir[0] = ir[1], ir[1] = h), d = lo(e, n, o, s, ir[0]), 1 < g && (f = lo(e, n, o, s, ir[1]))), 2 === g ? v < ir[0] ? p += d < e ? y : -y : v < ir[1] ? p += f < d ? y : -y : p += s < f ? y : -y : v < ir[0] ? p += d < e ? y : -y : p += s < d ? y : -y)
}
return p
}
function ar(t, e, i, n, a, o, r, s) {
if (e < s && n < s && o < s || s < e && s < n && s < o) return 0;
var l = function(t, e, i, n, a) {
var o = t - 2 * e + i,
r = 2 * (e - t),
s = t - n,
l = 0;
if (ro(o)) {
if (so(r)) 0 <= (h = -s / r) && h <= 1 && (a[l++] = h)
} else {
var u = r * r - 4 * o * s;
if (ro(u)) 0 <= (h = -r / (2 * o)) && h <= 1 && (a[l++] = h);
else if (0 < u) {
var h, c = Ja(u),
d = (-r - c) / (2 * o);
0 <= (h = (-r + c) / (2 * o)) && h <= 1 && (a[l++] = h), 0 <= d && d <= 1 && (a[l++] = d)
}
}
return l
}(e, n, o, s, er);
if (0 === l) return 0;
var u = go(e, n, o);
if (0 <= u && u <= 1) {
for (var h = 0, c = fo(e, n, o, u), d = 0; d < l; d++) {
var f = 0 === er[d] || 1 === er[d] ? .5 : 1;
fo(t, i, a, er[d]) < r || (er[d] < u ? h += c < e ? f : -f : h += o < c ? f : -f)
}
return h
}
f = 0 === er[0] || 1 === er[0] ? .5 : 1;
return fo(t, i, a, er[0]) < r ? 0 : o < e ? f : -f
}
function or(t, e, i, n, a, o, r, s) {
if (i < (s -= e) || s < -i) return 0;
var l = Math.sqrt(i * i - s * s);
er[0] = -l, er[1] = l;
var u = Math.abs(n - a);
if (u < 1e-4) return 0;
if (u % Qo < 1e-4) {
a = Qo;
var h = o ? 1 : -1;
return r >= er[n = 0] + t && r <= er[1] + t ? h : 0
}
if (o) {
l = n;
n = jo(a), a = jo(l)
} else n = jo(n), a = jo(a);
a < n && (a += Qo);
for (var c = 0, d = 0; d < 2; d++) {
var f = er[d];
if (r < f + t) {
var p = Math.atan2(s, f);
h = o ? 1 : -1;
p < 0 && (p = Qo + p), (n <= p && p <= a || n <= p + Qo && p + Qo <= a) && (p > Math.PI / 2 && p < 1.5 * Math.PI && (h = -h), c += h)
}
}
return c
}
function rr(t, e, i, n, a) {
for (var o = 0, r = 0, s = 0, l = 0, u = 0, h = 0; h < t.length;) {
var c = t[h++];
switch (c === Jo.M && 1 < h && (i || (o += $o(r, s, l, u, n, a))), 1 === h && (l = r = t[h], u = s = t[h + 1]), c) {
case Jo.M:
r = l = t[h++], s = u = t[h++];
break;
case Jo.L:
if (i) {
if (Zo(r, s, t[h], t[h + 1], e, n, a)) return !0
} else o += $o(r, s, t[h], t[h + 1], n, a) || 0;
r = t[h++], s = t[h++];
break;
case Jo.C:
if (i) {
if (Uo(r, s, t[h++], t[h++], t[h++], t[h++], t[h], t[h + 1], e, n, a)) return !0
} else o += nr(r, s, t[h++], t[h++], t[h++], t[h++], t[h], t[h + 1], n, a) || 0;
r = t[h++], s = t[h++];
break;
case Jo.Q:
if (i) {
if (Xo(r, s, t[h++], t[h++], t[h], t[h + 1], e, n, a)) return !0
} else o += ar(r, s, t[h++], t[h++], t[h], t[h + 1], n, a) || 0;
r = t[h++], s = t[h++];
break;
case Jo.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 ? o += $o(r, s, x, _, n, a) : (l = x, u = _);
var w = (n - d) * g / p + d;
if (i) {
if (Ko(d, f, g, m, m + v, y, e, w, a)) return !0
} else o += or(d, f, g, m, m + v, y, w, a);
r = Math.cos(m + v) * p + d, s = Math.sin(m + v) * g + f;
break;
case Jo.R:
l = r = t[h++], u = s = t[h++];
x = l + t[h++], _ = u + t[h++];
if (i) {
if (Zo(l, u, x, u, e, n, a) || Zo(x, u, x, _, e, n, a) || Zo(x, _, l, _, e, n, a) || Zo(l, _, l, u, e, n, a)) return !0
} else o += $o(x, u, x, _, n, a), o += $o(l, _, l, u, n, a);
break;
case Jo.Z:
if (i) {
if (Zo(r, s, l, u, e, n, a)) return !0
} else o += $o(r, s, l, u, n, a);
r = l, s = u
}
}
return i || function(t, e) {
return Math.abs(t - e) < tr
}(s, u) || (o += $o(r, s, l, u, n, a) || 0), 0 !== o
}
var sr = Ui.prototype.getCanvasPattern,
lr = Math.abs,
ur = new Ho(!0);
function hr(t) {
Xn.call(this, t), this.path = null
}
hr.prototype = {
constructor: hr,
type: "path",
__dirtyPath: !0,
strokeContainThreshold: 5,
segmentIgnoreThreshold: 0,
subPixelOptimize: !1,
brush: function(t, e) {
var i, n = this.style,
a = this.path || ur,
o = n.hasStroke(),
r = n.hasFill(),
s = n.fill,
l = n.stroke,
u = r && !!s.colorStops,
h = o && !!l.colorStops,
c = r && !!s.image,
d = o && !!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 = sr.call(s, t)), h ? t.strokeStyle = this._strokeGradient : d && (t.strokeStyle = sr.call(l, t));
var f = n.lineDash,
p = n.lineDashOffset,
g = !!t.setLineDash,
m = this.getGlobalScale();
if (a.setScale(m[0], m[1], this.segmentIgnoreThreshold), this.__dirtyPath || f && !g && o ? (a.beginPath(t), f && !g && (a.setLineDash(f), a.setLineDashOffset(p)), this.buildPath(a, 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, a.fill(t), t.globalAlpha = v
} else a.fill(t);
if (f && g && (t.setLineDash(f), t.lineDashOffset = p), o)
if (null != n.strokeOpacity) {
v = t.globalAlpha;
t.globalAlpha = n.strokeOpacity * n.opacity, a.stroke(t), t.globalAlpha = v
} else a.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 Ho
},
getBoundingRect: function() {
var t = this._rect,
e = this.style,
i = !t;
if (i) {
var n = this.path;
n = n || (this.path = new Ho), this.__dirtyPath && (n.beginPath(), this.buildPath(n, this.shape, !1)), t = n.getBoundingRect()
}
if (this._rect = t, e.hasStroke()) {
var a = this._rectWithStroke || (this._rectWithStroke = t.clone());
if (this.__dirty || i) {
a.copy(t);
var o = e.lineWidth,
r = e.strokeNoScale ? this.getLineScale() : 1;
e.hasFill() || (o = Math.max(o, this.strokeContainThreshold || 4)), 1e-10 < r && (a.width += o / r, a.height += o / r, a.x -= o / r / 2, a.y -= o / r / 2)
}
return a
}
return t
},
contain: function(t, e) {
var i = this.transformCoordToLocal(t, e),
n = this.getBoundingRect(),
a = this.style;
if (t = i[0], e = i[1], n.contain(t, e)) {
var o = this.path.data;
if (a.hasStroke()) {
var r = a.lineWidth,
s = a.strokeNoScale ? this.getLineScale() : 1;
if (1e-10 < s && (a.hasFill() || (r = Math.max(r, this.strokeContainThreshold)), function(t, e, i, n) {
return rr(t, e, !0, i, n)
}(o, r / s, t, e))) return !0
}
if (a.hasFill()) return function(t, e, i) {
return rr(t, 0, !1, e, i)
}(o, 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) : Xn.prototype.attrKV.call(this, t, e)
},
setShape: function(t, e) {
var i = this.shape;
if (i) {
if (E(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 < lr(t[0] - 1) && 1e-10 < lr(t[3] - 1) ? Math.sqrt(lr(t[0] * t[3] - t[2] * t[1])) : 1
}
}, hr.extend = function(a) {
function t(t) {
hr.call(this, t), a.style && this.style.extendFrom(a.style, !1);
var e = a.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])
}
a.init && a.init.call(this, t)
}
for (var e in w(t, hr), a) "style" !== e && "shape" !== e && (t.prototype[e] = a[e]);
return t
}, w(hr, Xn);
function cr(t) {
return Math.sqrt(t[0] * t[0] + t[1] * t[1])
}
var dr = Ho.CMD,
fr = [
[],
[],
[]
],
pr = Math.sqrt,
gr = Math.atan2,
mr = function(t, e) {
var i, n, a, o, r, s = t.data,
l = dr.M,
u = dr.C,
h = dr.L,
c = dr.R,
d = dr.A,
f = dr.Q;
for (o = a = 0; a < s.length;) {
switch (i = s[a++], o = a, 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 = pr(e[0] * e[0] + e[1] * e[1]),
v = pr(e[2] * e[2] + e[3] * e[3]),
y = gr(-e[1] / v, e[0] / m);
s[a] *= m, s[a++] += p, s[a] *= v, s[a++] += g, s[a++] *= m, s[a++] *= v, s[a++] += y, s[a++] += y, o = a += 2;
break;
case c:
x[0] = s[a++], x[1] = s[a++], bt(x, x, e), s[o++] = x[0], s[o++] = x[1], x[0] += s[a++], x[1] += s[a++], bt(x, x, e), s[o++] = x[0], s[o++] = x[1]
}
for (r = 0; r < n; r++) {
var x;
(x = fr[r])[0] = s[a++], x[1] = s[a++], bt(x, x, e), s[o++] = x[0], s[o++] = x[1]
}
}
},
vr = Math.sqrt,
yr = Math.sin,
xr = Math.cos,
_r = Math.PI,
wr = function(t, e) {
return (t[0] * e[0] + t[1] * e[1]) / (cr(t) * cr(e))
},
br = function(t, e) {
return (t[0] * e[1] < t[1] * e[0] ? -1 : 1) * Math.acos(wr(t, e))
};
function Sr(t, e, i, n, a, o, r, s, l, u, h) {
var c = l * (_r / 180),
d = xr(c) * (t - i) / 2 + yr(c) * (e - n) / 2,
f = -1 * yr(c) * (t - i) / 2 + xr(c) * (e - n) / 2,
p = d * d / (r * r) + f * f / (s * s);
1 < p && (r *= vr(p), s *= vr(p));
var g = (a === o ? -1 : 1) * vr((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 + xr(c) * m - yr(c) * v,
x = (e + n) / 2 + yr(c) * m + xr(c) * v,
_ = br([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 = br(w, b);
wr(w, b) <= -1 && (S = _r), 1 <= wr(w, b) && (S = 0), 0 === o && 0 < S && (S -= 2 * _r), 1 === o && S < 0 && (S += 2 * _r), h.addData(u, y, x, r, s, _, S, c, o)
}
var Mr = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,
Ir = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;
function Ar(t, e) {
var i = function(t) {
if (!t) return new Ho;
for (var e, i = 0, n = 0, a = i, o = n, r = new Ho, s = Ho.CMD, l = t.match(Mr), u = 0; u < l.length; u++) {
for (var h, c = l[u], d = c.charAt(0), f = c.match(Ir) || [], 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), a = i, o = n, d = "l";
break;
case "M":
i = f[m++], n = f[m++], h = s.M, r.addData(h, i, n), a = i, o = 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 A = r.len(),
T = r.data;
e === s.C && (v += i - T[A - 4], y += n - T[A - 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;
A = r.len(), T = r.data;
e === s.C && (v += i - T[A - 4], y += n - T[A - 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;
A = r.len(), T = r.data;
e === s.Q && (v += i - T[A - 4], y += n - T[A - 3]), i = f[m++], n = f[m++], h = s.Q, r.addData(h, v, y, i, n);
break;
case "t":
v = i, y = n;
A = r.len(), T = r.data;
e === s.Q && (v += i - T[A - 4], y += n - T[A - 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++], Sr(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++], Sr(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 = a, n = o), 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) {
mr(i, t), this.dirty(!0)
}, e
}
function Tr(t, e) {
return new hr(Ar(t, e))
}
var Dr = function(t) {
Xn.call(this, t)
};
Dr.prototype = {
constructor: Dr,
type: "text",
brush: function(t, e) {
var i = this.style;
this.__dirty && Cn(i), i.fill = i.stroke = i.shadowBlur = i.shadowColor = i.shadowOffsetX = i.shadowOffsetY = null;
var n = i.text;
null != n && (n += ""), Hn(n, i) ? (this.setTransform(t), kn(this, t, n, i, null, e), this.restoreTransform(t)) : t.__attrCachedBy = zi.NONE
},
getBoundingRect: function() {
var t = this.style;
if (this.__dirty && Cn(t), !this._rect) {
var e = t.text;
null != e ? e += "" : e = "";
var i = un(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, Vn(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(Dr, Xn);
function Cr(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 a = e[n],
o = a && a.shape,
r = a && a.type;
if (o && ("sector" === r && o.startAngle === o.endAngle || "rect" === r && (!o.width || !o.height))) {
for (var s = 0; s < kr.length; s++) kr[s][2] = i[kr[s][0]], i[kr[s][0]] = kr[s][1];
t = !0;
break
}
}
if (l.apply(this, arguments), t)
for (s = 0; s < kr.length; s++) i[kr[s][0]] = kr[s][2]
} : l
}
var Lr = hr.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)
}
}),
kr = [
["shadowBlur", 0],
["shadowColor", "#000"],
["shadowOffsetX", 0],
["shadowOffsetY", 0]
],
Pr = hr.extend({
type: "sector",
shape: {
cx: 0,
cy: 0,
r0: 0,
r: 0,
startAngle: 0,
endAngle: 2 * Math.PI,
clockwise: !0
},
brush: Cr(hr.prototype.brush),
buildPath: function(t, e) {
var i = e.cx,
n = e.cy,
a = Math.max(e.r0 || 0, 0),
o = 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 * a + i, h * a + n), t.lineTo(u * o + i, h * o + n), t.arc(i, n, o, r, s, !l), t.lineTo(Math.cos(s) * a + i, Math.sin(s) * a + n), 0 !== a && t.arc(i, n, a, s, r, l), t.closePath()
}
}),
Nr = hr.extend({
type: "ring",
shape: {
cx: 0,
cy: 0,
r: 0,
r0: 0
},
buildPath: function(t, e) {
var i = e.cx,
n = e.cy,
a = 2 * Math.PI;
t.moveTo(i + e.r, n), t.arc(i, n, e.r, 0, a, !1), t.moveTo(i + e.r0, n), t.arc(i, n, e.r0, 0, a, !0)
}
});
function Or(t, e, i, n, a, o, r) {
var s = .5 * (i - t),
l = .5 * (n - e);
return (2 * (e - i) + s + l) * r + (-3 * (e - i) - 2 * s - l) * o + s * a + e
}
function Rr(t, e, i) {
var n = e.points,
a = e.smooth;
if (n && 2 <= n.length) {
if (a && "spline" !== a) {
var o = function(t, e, i, n) {
var a, o, 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) a = t[d ? d - 1 : f - 1], o = t[(d + 1) % f];
else {
if (0 === d || d === f - 1) {
l.push(rt(t[d]));
continue
}
a = t[d - 1], o = t[d + 1]
}
ht(u, o, a), gt(u, u, e);
var g = vt(p, a),
m = vt(p, o),
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, a, 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 = o[2 * s],
u = o[2 * s + 1],
h = n[(s + 1) % r];
t.bezierCurveTo(l[0], l[1], u[0], u[1], h[0], h[1])
}
} else {
"spline" === a && (n = function(t, e) {
for (var i = t.length, n = [], a = 0, o = 1; o < i; o++) a += vt(t[o - 1], t[o]);
var r = a / 2;
r = r < i ? i : r;
for (o = 0; o < r; o++) {
var s, l, u, h = o / (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([Or(s[0], f[0], l[0], u[0], d, p, g), Or(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 zr = hr.extend({
type: "polygon",
shape: {
points: null,
smooth: !1,
smoothConstraint: null
},
buildPath: function(t, e) {
Rr(t, e, !0)
}
}),
Er = hr.extend({
type: "polyline",
shape: {
points: null,
smooth: !1,
smoothConstraint: null
},
style: {
stroke: "#000",
fill: null
},
buildPath: function(t, e) {
Rr(t, e, !1)
}
}),
Br = Math.round;
function Vr(t, e, i) {
var n = i && i.lineWidth;
if (e && n) {
var a = e.x1,
o = e.x2,
r = e.y1,
s = e.y2;
Br(2 * a) === Br(2 * o) ? t.x1 = t.x2 = Fr(a, n, !0) : (t.x1 = a, t.x2 = o), Br(2 * r) === Br(2 * s) ? t.y1 = t.y2 = Fr(r, n, !0) : (t.y1 = r, t.y2 = s)
}
}
function Gr(t, e, i) {
var n = i && i.lineWidth;
if (e && n) {
var a = e.x,
o = e.y,
r = e.width,
s = e.height;
t.x = Fr(a, n, !0), t.y = Fr(o, n, !0), t.width = Math.max(Fr(a + r, n, !1) - t.x, 0 === r ? 0 : 1), t.height = Math.max(Fr(o + s, n, !1) - t.y, 0 === s ? 0 : 1)
}
}
function Fr(t, e, i) {
var n = Br(2 * t);
return (n + Br(e)) % 2 == 0 ? n / 2 : (n + (i ? 1 : -1)) / 2
}
var Wr = {},
Hr = hr.extend({
type: "rect",
shape: {
r: 0,
x: 0,
y: 0,
width: 0,
height: 0
},
buildPath: function(t, e) {
var i, n, a, o;
this.subPixelOptimize ? (Gr(Wr, e, this.style), i = Wr.x, n = Wr.y, a = Wr.width, o = Wr.height, Wr.r = e.r, e = Wr) : (i = e.x, n = e.y, a = e.width, o = e.height), e.r ? bn(t, e) : t.rect(i, n, a, o), t.closePath()
}
}),
Zr = {},
Ur = hr.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, a, o;
o = this.subPixelOptimize ? (Vr(Zr, e, this.style), i = Zr.x1, n = Zr.y1, a = Zr.x2, Zr.y2) : (i = e.x1, n = e.y1, a = e.x2, e.y2);
var r = e.percent;
0 !== r && (t.moveTo(i, n), r < 1 && (a = i * (1 - r) + a * r, o = n * (1 - r) + o * r), t.lineTo(a, o))
},
pointAt: function(t) {
var e = this.shape;
return [e.x1 * (1 - t) + e.x2 * t, e.y1 * (1 - t) + e.y2 * t]
}
}),
Xr = [];
function Yr(t, e, i) {
var n = t.cpx2,
a = t.cpy2;
return null === n || null === a ? [(i ? uo : lo)(t.x1, t.cpx1, t.cpx2, t.x2, e), (i ? uo : lo)(t.y1, t.cpy1, t.cpy2, t.y2, e)] : [(i ? po : fo)(t.x1, t.cpx1, t.x2, e), (i ? po : fo)(t.y1, t.cpy1, t.y2, e)]
}
function jr(t) {
this.colorStops = t || []
}
var qr = hr.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,
a = e.x2,
o = 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 && (mo(i, r, a, h, Xr), r = Xr[1], a = Xr[2], mo(n, s, o, h, Xr), s = Xr[1], o = Xr[2]), t.quadraticCurveTo(r, s, a, o)) : (h < 1 && (co(i, r, l, a, h, Xr), r = Xr[1], l = Xr[2], a = Xr[3], co(n, s, u, o, h, Xr), s = Xr[1], u = Xr[2], o = Xr[3]), t.bezierCurveTo(r, s, l, u, a, o)))
},
pointAt: function(t) {
return Yr(this.shape, t, !1)
},
tangentAt: function(t) {
var e = Yr(this.shape, t, !0);
return mt(e, e)
}
}),
Kr = hr.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,
a = Math.max(e.r, 0),
o = e.startAngle,
r = e.endAngle,
s = e.clockwise,
l = Math.cos(o),
u = Math.sin(o);
t.moveTo(l * a + i, u * a + n), t.arc(i, n, a, o, r, !s)
}
}),
$r = hr.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(), hr.prototype.getBoundingRect.call(this)
}
});
jr.prototype = {
constructor: jr,
addColorStop: function(t, e) {
this.colorStops.push({
offset: t,
color: e
})
}
};
function Jr(t, e, i, n, a, o) {
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 = o || !1, jr.call(this, a)
}
Jr.prototype = {
constructor: Jr
}, w(Jr, jr);
function Qr(t, e, i, n, a) {
this.x = null == t ? .5 : t, this.y = null == e ? .5 : e, this.r = null == i ? .5 : i, this.type = "radial", this.global = a || !1, jr.call(this, n)
}
function ts(t) {
Xn.call(this, t), this._displayables = [], this._temporaryDisplayables = [], this._cursor = 0, this.notClear = !0
}
Qr.prototype = {
constructor: Qr
}, w(Qr, jr), ts.prototype.incremental = !0, ts.prototype.clearDisplaybles = function() {
this._displayables = [], this._temporaryDisplayables = [], this._cursor = 0, this.dirty(), this.notClear = !1
}, ts.prototype.addDisplayable = function(t, e) {
e ? this._temporaryDisplayables.push(t) : this._displayables.push(t), this.dirty()
}, ts.prototype.addDisplayables = function(t, e) {
e = e || !1;
for (var i = 0; i < t.length; i++) this.addDisplayable(t[i], e)
}, ts.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])
}, ts.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
}
}, ts.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 es = [];
ts.prototype.getBoundingRect = function() {
if (!this._rect) {
for (var t = new bi(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(es)), t.union(n)
}
this._rect = t
}
return this._rect
}, ts.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(ts, Xn);
var is = Math.max,
ns = Math.min,
as = {},
os = 1,
rs = {
color: "textFill",
textBorderColor: "textStroke",
textBorderWidth: "textStrokeWidth"
},
ss = "emphasis",
ls = "normal",
us = 1,
hs = {},
cs = {};
function ds(t) {
return hr.extend(t)
}
function fs(t, e) {
cs[t] = e
}
function ps(t) {
if (cs.hasOwnProperty(t)) return cs[t]
}
function gs(t, e, i, n) {
var a = Tr(t, e);
return i && ("center" === n && (i = vs(i, a.getBoundingRect())), xs(a, i)), a
}
function ms(t, i, n) {
var a = new Yn({
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
};
a.setStyle(vs(i, e))
}
}
});
return a
}
function vs(t, e) {
var i, n = e.width / e.height,
a = t.height * n;
return i = a <= t.width ? t.height : (a = t.width) / n, {
x: t.x + t.width / 2 - a / 2,
y: t.y + t.height / 2 - i / 2,
width: a,
height: i
}
}
var ys = function(t, e) {
for (var i = [], n = t.length, a = 0; a < n; a++) {
var o = t[a];
o.path || o.createPathProxy(), o.__dirtyPath && o.buildPath(o.path, o.shape, !0), i.push(o.path)
}
var r = new hr(e);
return r.createPathProxy(), r.buildPath = function(t) {
t.appendPath(i);
var e = t.getContext();
e && t.rebuildPath(e)
}, r
};
function xs(t, e) {
if (t.applyTransform) {
var i = t.getBoundingRect().calculateTransform(e);
t.applyTransform(i)
}
}
var _s = Fr;
function ws(t) {
return null != t && "none" !== t
}
var bs = Q(),
Ss = 0;
function Ms(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 a = t,
o = t.style;
n && (o = (a = i.addHover(t)).style), Us(o), 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 a in e) null != e[a] && (i[a] = n[a]);
i.fill = n.fill, i.stroke = n.stroke
} else t.__cachedNormalStl = t.__cachedNormalZ2 = null
}
}(a), o.extendFrom(e), Is(o, e, "fill"), Is(o, e, "stroke"), Zs(o), n || (t.dirty(!1), t.z2 += os)
}
}
}
function Is(t, e, i) {
!ws(e[i]) && ws(t[i]) && (t[i] = function(t) {
if ("string" != typeof t) return t;
var e = bs.get(t);
return e || (e = Ee(t, -.1), Ss < 1e4 && (bs.set(t, e), Ss++)), e
}(t[i]))
}
function As(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 && (Us(i), t.setStyle(n), Zs(i));
var a = t.__cachedNormalZ2;
null != a && t.z2 - a === os && (t.z2 = a)
}
}
function Ts(t, e, i) {
var n, a = ls,
o = ls;
t.__highlighted && (a = ss, n = !0), e(t, i), t.__highlighted && (o = ss, n = !0), t.isGroup && t.traverse(function(t) {
t.isGroup || e(t, i)
}), n && t.__highDownOnUpdate && t.__highDownOnUpdate(a, o)
}
function Ds(t, e) {
e = t.__hoverStl = !1 !== e && (t.hoverStyle || e || {}), t.__hoverStlDirty = !0, t.__highlighted && (t.__cachedNormalStl = null, As(t), Ms(t))
}
function Cs(t) {
Ns(this, t) || this.__highByOuter || Ts(this, Ms)
}
function Ls(t) {
Ns(this, t) || this.__highByOuter || Ts(this, As)
}
function ks(t) {
this.__highByOuter |= 1 << (t || 0), Ts(this, Ms)
}
function Ps(t) {
(this.__highByOuter &= ~(1 << (t || 0))) || Ts(this, As)
}
function Ns(t, e) {
return t.__highDownSilentOnTouch && e.zrByTouch
}
function Os(t, e) {
Rs(t, !0), Ts(t, Ds, e)
}
function Rs(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", Cs)[n]("mouseout", Ls), t[n]("emphasis", ks)[n]("normal", Ps), t.__highByOuter = t.__highByOuter || 0, t.__highDownDispatcher = !i
}
}
function zs(t) {
return !(!t || !t.__highDownDispatcher)
}
function Es(t) {
var e = hs[t];
return null == e && us <= 32 && (e = hs[t] = us++), e
}
function Bs(t, e, i, n, a, o, r) {
var s, l = (a = a || as).labelFetcher,
u = a.labelDataIndex,
h = a.labelDimIndex,
c = i.getShallow("show"),
d = n.getShallow("show");
(c || d) && (l && (s = l.getFormattedLabel(u, "normal", null, h)), null == s && (s = R(a.defaultText) ? a.defaultText(u, a) : a.defaultText));
var f = c ? s : null,
p = d ? H(l ? l.getFormattedLabel(u, "emphasis", null, h) : null, s) : null;
null == f && null == p || (Gs(t, i, o, a), Gs(e, n, r, a, !0)), t.text = f, e.text = p
}
function Vs(t, e, i) {
var n = t.style;
e && (Us(n), t.setStyle(e), Zs(n)), n = t.__hoverStl, i && n && (Us(n), L(n, i), Zs(n))
}
function Gs(t, e, i, n, a) {
return Fs(t, e, n, a), i && L(t, i), t
}
function Fs(t, e, i, n) {
if ((i = i || as).isRectText) {
var a;
i.getTextPosition ? a = i.getTextPosition(e, n) : "outside" === (a = e.getShallow("position") || (n ? null : "inside")) && (a = "top"), t.textPosition = a, t.textOffset = e.getShallow("offset");
var o = e.getShallow("rotate");
null != o && (o *= Math.PI / 180), t.textRotation = o, 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 || as).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]);
Ws(r[h] = {}, c, l, i, n)
} return t.rich = r, Ws(t, e, l, i, n, !0), i.forceRich && !i.textStyle && (i.textStyle = {}), t
}
function Ws(t, e, i, n, a, o) {
i = !a && i || as, t.textFill = Hs(e.getShallow("color"), n) || i.color, t.textStroke = Hs(e.getShallow("textBorderColor"), n) || i.textBorderColor, t.textStrokeWidth = H(e.getShallow("textBorderWidth"), i.textBorderWidth), a || (o && (t.insideRollbackOpt = n, Zs(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"), o && n.disableBox || (t.textBackgroundColor = Hs(e.getShallow("backgroundColor"), n), t.textPadding = e.getShallow("padding"), t.textBorderColor = Hs(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 Hs(t, e) {
return "auto" !== t ? t : e && e.autoColor ? e.autoColor : null
}
function Zs(t) {
var e, i = t.textPosition,
n = t.insideRollbackOpt;
if (n && null == t.textFill) {
var a = n.autoColor,
o = n.isRectText,
r = n.useInsideStyle,
s = !1 !== r && (!0 === r || o && i && "string" == typeof i && 0 <= i.indexOf("inside")),
l = !s && null != a;
(s || l) && (e = {
textFill: t.textFill,
textStroke: t.textStroke,
textStrokeWidth: t.textStrokeWidth
}), s && (t.textFill = "#fff", null == t.textStroke && (t.textStroke = a, null == t.textStrokeWidth && (t.textStrokeWidth = 2))), l && (t.textFill = a)
}
t.insideRollback = e
}
function Us(t) {
var e = t.insideRollback;
e && (t.textFill = e.textFill, t.textStroke = e.textStroke, t.textStrokeWidth = e.textStrokeWidth, t.insideRollback = null)
}
function Xs(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 Ys(t, e, i, n, a, o) {
if ("function" == typeof a && (o = a, a = 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(a, n.getAnimationDelayParams ? n.getAnimationDelayParams(e, a) : null)), "function" == typeof s && (s = s(a)), 0 < s ? e.animateTo(i, s, u || 0, l, o, !!o) : (e.stopAnimation(), e.attr(i), o && o())
} else e.stopAnimation(), e.attr(i), o && o()
}
function js(t, e, i, n, a) {
Ys(!0, t, e, i, n, a)
}
function qs(t, e, i, n, a) {
Ys(!1, t, e, i, n, a)
}
function Ks(t, e) {
for (var i = te([]); t && t !== e;) ie(i, t.getLocalTransform(), i), t = t.parent;
return i
}
function $s(t, e, i) {
return e && !P(e) && (e = ce.getLocalTransform(e)), i && (e = re([], e)), bt([], t, e)
}
function Js(t, e, i) {
var n = 0 === e[4] || 0 === e[5] || 0 === e[0] ? 1 : Math.abs(2 * e[4] / e[0]),
a = 0 === e[4] || 0 === e[5] || 0 === e[2] ? 1 : Math.abs(2 * e[4] / e[2]),
o = ["left" === t ? -n : "right" === t ? n : 0, "top" === t ? -a : "bottom" === t ? a : 0];
return o = $s(o, e, i), Math.abs(o[0]) > Math.abs(o[1]) ? 0 < o[0] ? "right" : "left" : 0 < o[1] ? "bottom" : "top"
}
function Qs(t, e, n, i) {
if (t && e) {
var a, o = (a = {}, t.traverse(function(t) {
!t.isGroup && t.anid && (a[t.anid] = t)
}), a);
e.traverse(function(t) {
if (!t.isGroup && t.anid) {
var e = o[t.anid];
if (e) {
var i = r(t);
t.attr(r(e)), js(t, i, n, t.dataIndex)
}
}
})
}
function r(t) {
var e = {
position: rt(t.position),
rotation: t.rotation
};
return t.shape && (e.shape = L({}, t.shape)), e
}
}
function tl(t, n) {
return N(t, function(t) {
var e = t[0];
e = is(e, n.x), e = ns(e, n.x + n.width);
var i = t[1];
return i = is(i, n.y), [e, i = ns(i, n.y + n.height)]
})
}
function el(t, e, i) {
var n = (e = L({
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), C(n, i), new Yn(e)) : gs(t.replace("path://", ""), e, i, "center")
}
function il(t, e, i, n, a) {
for (var o = 0, r = a[a.length - 1]; o < a.length; o++) {
var s = a[o];
if (nl(t, e, i, n, s[0], s[1], r[0], r[1])) return !0;
r = s
}
}
function nl(t, e, i, n, a, o, r, s) {
var l = i - t,
u = n - e,
h = r - a,
c = s - o,
d = al(h, c, l, u);
if (function(t) {
return t <= 1e-6 && -1e-6 <= t
}(d)) return !1;
var f = t - a,
p = e - o,
g = al(f, p, l, u) / d;
if (g < 0 || 1 < g) return !1;
var m = al(f, p, h, c) / d;
return !(m < 0 || 1 < m)
}
function al(t, e, i, n) {
return t * n - i * e
}
fs("circle", Lr), fs("sector", Pr), fs("ring", Nr), fs("polygon", zr), fs("polyline", Er), fs("rect", Hr), fs("line", Ur), fs("bezierCurve", qr), fs("arc", Kr);
var ol = (Object.freeze || Object)({
Z2_EMPHASIS_LIFT: os,
CACHED_LABEL_STYLE_PROPERTIES: rs,
extendShape: ds,
extendPath: function(t, e) {
return function(t, e) {
return hr.extend(Ar(t, e))
}(t, e)
},
registerShape: fs,
getShapeClass: ps,
makePath: gs,
makeImage: ms,
mergePath: ys,
resizePath: xs,
subPixelOptimizeLine: function(t) {
return Vr(t.shape, t.shape, t.style), t
},
subPixelOptimizeRect: function(t) {
return Gr(t.shape, t.shape, t.style), t
},
subPixelOptimize: _s,
setElementHoverStyle: Ds,
setHoverStyle: Os,
setAsHighDownDispatcher: Rs,
isHighDownDispatcher: zs,
getHighlightDigit: Es,
setLabelStyle: Bs,
modifyLabelStyle: Vs,
setTextStyle: Gs,
setText: function(t, e, i) {
var n, a = {
isRectText: !0
};
!1 === i ? n = !0 : a.autoColor = i, Fs(t, e, a, n)
},
getFont: Xs,
updateProps: js,
initProps: qs,
getTransform: Ks,
applyTransform: $s,
transformDirection: Js,
groupTransition: Qs,
clipPointsByRect: tl,
clipRectByRect: function(t, e) {
var i = is(t.x, e.x),
n = ns(t.x + t.width, e.x + e.width),
a = is(t.y, e.y),
o = ns(t.y + t.height, e.y + e.height);
if (i <= n && a <= o) return {
x: i,
y: a,
width: n - i,
height: o - a
}
},
createIcon: el,
linePolygonIntersect: il,
lineLineIntersect: nl,
Group: Si,
Image: Yn,
Text: Dr,
Circle: Lr,
Sector: Pr,
Ring: Nr,
Polygon: zr,
Polyline: Er,
Rect: Hr,
Line: Ur,
BezierCurve: qr,
Arc: Kr,
IncrementalDisplayable: ts,
CompoundPath: $r,
LinearGradient: Jr,
RadialGradient: Qr,
BoundingRect: bi
}),
rl = ["textStyle", "color"],
sl = {
getTextColor: function(t) {
var e = this.ecModel;
return this.getShallow("color") || (!t && e ? e.get(rl) : null)
},
getFont: function() {
return Xs({
fontStyle: this.getShallow("fontStyle"),
fontWeight: this.getShallow("fontWeight"),
fontSize: this.getShallow("fontSize"),
fontFamily: this.getShallow("fontFamily")
}, this.ecModel)
},
getTextRect: function(t) {
return un(t, this.getFont(), this.getShallow("align"), this.getShallow("verticalAlign") || this.getShallow("baseline"), this.getShallow("padding"), this.getShallow("lineHeight"), this.getShallow("rich"), this.getShallow("truncateText"))
}
},
ll = Xa([
["fill", "color"],
["stroke", "borderColor"],
["lineWidth", "borderWidth"],
["opacity"],
["shadowBlur"],
["shadowOffsetX"],
["shadowOffsetY"],
["shadowColor"],
["textPosition"],
["textAlign"]
]),
ul = {
getItemStyle: function(t, e) {
var i = ll(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]
}
},
hl = b,
cl = La();
function dl(t, e, i) {
this.parentModel = e, this.ecModel = i, this.option = t
}
function fl(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 pl(t, e) {
var i = cl(t).getParent;
return i ? i.call(t, e) : t.parentModel
}
dl.prototype = {
constructor: dl,
init: null,
mergeOption: function(t) {
m(this.option, t, !0)
},
get: function(t, e) {
return null == t ? this.option : fl(this.option, this.parsePath(t), !e && pl(this, t))
},
getShallow: function(t, e) {
var i = this.option,
n = null == i ? i : i[t],
a = !e && pl(this, t);
return null == n && a && (n = a.getShallow(t)), n
},
getModel: function(t, e) {
var i;
return new dl(null == t ? this.option : fl(this.option, t = this.parsePath(t)), e = e || (i = pl(this, t)) && i.getModel(t), this.ecModel)
},
isEmpty: function() {
return null == this.option
},
restoreData: function() {},
clone: function() {
return new this.constructor(D(this.option))
},
setReadOnly: function(t) {},
parsePath: function(t) {
return "string" == typeof t && (t = t.split(".")), t
},
customizeGetParent: function(t) {
cl(this).getParent = t
},
isAnimationEnabled: function() {
if (!v.node) {
if (null != this.option.animation) return !!this.option.animation;
if (this.parentModel) return this.parentModel.isAnimationEnabled()
}
}
}, Ga(dl), Wa(dl), hl(dl, ja), hl(dl, Ka), hl(dl, sl), hl(dl, ul);
var gl = 0;
function ml(t) {
return [t || "", gl++, Math.random().toFixed(5)].join("_")
}
var vl = 1e-4;
function yl(t, e, i, n) {
var a = e[1] - e[0],
o = i[1] - i[0];
if (0 == a) return 0 == o ? i[0] : (i[0] + i[1]) / 2;
if (n)
if (0 < a) {
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]) / a * o + i[0]
}
function xl(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 _l(t, e, i) {
return null == e && (e = 10), e = Math.min(Math.max(0, e), 20), t = (+t).toFixed(e), i ? t : +t
}
function wl(t) {
return t.sort(function(t, e) {
return t - e
}), t
}
function bl(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 Sl(t) {
var e = t.toString(),
i = e.indexOf("e");
if (0 < i) {
var n = +e.slice(i + 1);
return n < 0 ? -n : 0
}
var a = e.indexOf(".");
return a < 0 ? 0 : e.length - 1 - a
}
function Ml(t, e) {
var i = Math.log,
n = Math.LN10,
a = Math.floor(i(t[1] - t[0]) / n),
o = Math.round(i(Math.abs(e[1] - e[0])) / n),
r = Math.min(Math.max(-a + o, 0), 20);
return isFinite(r) ? r : 20
}
function Il(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 a = Math.pow(10, i), o = N(t, function(t) {
return (isNaN(t) ? 0 : t) / n * a * 100
}), r = 100 * a, s = N(o, function(t) {
return Math.floor(t)
}), l = S(s, function(t, e) {
return t + e
}, 0), u = N(o, 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] / a
}
var Al = 9007199254740991;
function Tl(t) {
var e = 2 * Math.PI;
return (t % e + e) % e
}
function Dl(t) {
return -vl < t && t < vl
}
var Cl = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/;
function Ll(t) {
if (t instanceof Date) return t;
if ("string" != typeof t) return null == t ? new Date(NaN) : new Date(Math.round(t));
var e = Cl.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 kl(t) {
return Math.pow(10, Pl(t))
}
function Pl(t) {
return Math.floor(Math.log(t) / Math.LN10)
}
function Nl(t, e) {
var i = Pl(t),
n = Math.pow(10, i),
a = t / n;
return t = (e ? a < 1.5 ? 1 : a < 2.5 ? 2 : a < 4 ? 3 : a < 7 ? 5 : 10 : a < 1 ? 1 : a < 2 ? 2 : a < 3 ? 3 : a < 5 ? 5 : 10) * n, -20 <= i ? +t.toFixed(i < 0 ? -i : 0) : t
}
function Ol(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 a = t[n].interval, o = t[n].close, r = 0; r < 2; r++) a[r] <= e && (a[r] = e, o[r] = r ? 1 : 1 - i), e = a[r], i = o[r];
a[0] === a[1] && o[0] * o[1] != 1 ? t.splice(n, 1) : n++
}
return t
}
function Rl(t) {
return 0 <= t - parseFloat(t)
}
var zl = (Object.freeze || Object)({
linearMap: yl,
parsePercent: xl,
round: _l,
asc: wl,
getPrecision: bl,
getPrecisionSafe: Sl,
getPixelPrecision: Ml,
getPercentWithPrecision: Il,
MAX_SAFE_INTEGER: Al,
remRadian: Tl,
isRadianAroundZero: Dl,
parseDate: Ll,
quantity: kl,
nice: Nl,
quantile: function(t, e) {
var i = (t.length - 1) * e + 1,
n = Math.floor(i),
a = +t[n - 1],
o = i - n;
return o ? a + o * (t[n] - a) : a
},
reformIntervals: Ol,
isNumeric: Rl
});
function El(t) {
return isNaN(t) ? "-" : (t = (t + "").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, "$1,") + (1 < t.length ? "." + t[1] : "")
}
function Bl(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 Vl = X,
Gl = /([&<>"'])/g,
Fl = {
"&": "&",
"<": "<",
">": ">",
'"': """,
"'": "'"
};
function Wl(t) {
return null == t ? "" : (t + "").replace(Gl, function(t, e) {
return Fl[e]
})
}
function Hl(t, e) {
return "{" + t + (null == e ? "" : e) + "}"
}
var Zl = ["a", "b", "c", "d", "e", "f", "g"];
function Ul(t, e, i) {
k(e) || (e = [e]);
var n = e.length;
if (!n) return "";
for (var a = e[0].$vars || [], o = 0; o < a.length; o++) {
var r = Zl[o];
t = t.replace(Hl(r), Hl(r, 0))
}
for (var s = 0; s < n; s++)
for (var l = 0; l < a.length; l++) {
var u = e[s][a[l]];
t = t.replace(Hl(Zl[l], s), i ? Wl(u) : u)
}
return t
}
function Xl(i, t, n) {
return O(t, function(t, e) {
i = i.replace("{" + e + "}", n ? Wl(t) : t)
}), i
}
function Yl(t, e) {
var i = (t = z(t) ? {
color: t,
extraCssText: e
} : t || {}).color,
n = t.type,
a = (e = t.extraCssText, t.renderMode || "html"),
o = t.markerId || "X";
return i ? "html" === a ? "subItem" === n ? '' : '' : {
renderMode: a,
content: "{marker" + o + "|} ",
style: {
color: i
}
} : ""
}
function jl(t, e) {
return "0000".substr(0, e - (t += "").length) + t
}
function ql(t, e, i) {
"week" !== t && "month" !== t && "quarter" !== t && "half-year" !== t && "year" !== t || (t = "MM-dd\nyyyy");
var n = Ll(e),
a = i ? "UTC" : "",
o = n["get" + a + "FullYear"](),
r = n["get" + a + "Month"]() + 1,
s = n["get" + a + "Date"](),
l = n["get" + a + "Hours"](),
u = n["get" + a + "Minutes"](),
h = n["get" + a + "Seconds"](),
c = n["get" + a + "Milliseconds"]();
return t = t.replace("MM", jl(r, 2)).replace("M", r).replace("yyyy", o).replace("yy", o % 100).replace("dd", jl(s, 2)).replace("d", s).replace("hh", jl(l, 2)).replace("h", l).replace("mm", jl(u, 2)).replace("m", u).replace("ss", jl(h, 2)).replace("s", h).replace("SSS", jl(c, 3))
}
function Kl(t) {
return t ? t.charAt(0).toUpperCase() + t.substr(1) : t
}
var $l = fn;
var Jl = (Object.freeze || Object)({
addCommas: El,
toCamelCase: Bl,
normalizeCssArray: Vl,
encodeHTML: Wl,
formatTpl: Ul,
formatTplSimple: Xl,
getTooltipMarker: Yl,
formatTime: ql,
capitalFirst: Kl,
truncateText: $l,
getTextBoundingRect: function(t) {
return un(t.text, t.font, t.textAlign, t.textVerticalAlign, t.textPadding, t.textLineHeight, t.rich, t.truncate)
},
getTextRect: function(t, e, i, n, a, o, r, s) {
return un(t, e, i, n, a, s, o, r)
}
}),
Ql = O,
tu = ["left", "right", "top", "bottom", "width", "height"],
eu = [
["width", "left", "right"],
["height", "top", "bottom"]
];
function iu(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, a = t.position,
o = t.getBoundingRect(),
r = c.childAt(e + 1),
s = r && r.getBoundingRect();
if ("horizontal" === h) {
var l = o.width + (s ? -s.x + o.x : 0);
v = f < (i = g + l) || t.newline ? (g = 0, i = l, m += v + d, o.height) : Math.max(v, o.height)
} else {
var u = o.height + (s ? -s.y + o.y : 0);
v = p < (n = m + u) || t.newline ? (g += v + d, m = 0, n = u, o.width) : Math.max(v, o.width)
}
t.newline || (a[0] = g, a[1] = m, "horizontal" === h ? g = i + d : m = n + d)
})
}
var nu = iu;
A(iu, "vertical"), A(iu, "horizontal");
function au(t, e, i) {
i = Vl(i || 0);
var n = e.width,
a = e.height,
o = xl(t.left, n),
r = xl(t.top, a),
s = xl(t.right, n),
l = xl(t.bottom, a),
u = xl(t.width, n),
h = xl(t.height, a),
c = i[2] + i[0],
d = i[1] + i[3],
f = t.aspect;
switch (isNaN(u) && (u = n - s - d - o), isNaN(h) && (h = a - l - c - r), null != f && (isNaN(u) && isNaN(h) && (n / a < f ? u = .8 * n : h = .8 * a), isNaN(u) && (u = f * h), isNaN(h) && (h = u / f)), isNaN(o) && (o = n - s - u - d), isNaN(r) && (r = a - l - h - c), t.left || t.right) {
case "center":
o = n / 2 - u / 2 - i[3];
break;
case "right":
o = n - u - d
}
switch (t.top || t.bottom) {
case "middle":
case "center":
r = a / 2 - h / 2 - i[0];
break;
case "bottom":
r = a - h - c
}
o = o || 0, r = r || 0, isNaN(u) && (u = n - d - o - (s || 0)), isNaN(h) && (h = a - c - r - (l || 0));
var p = new bi(o + i[3], r + i[0], u, h);
return p.margin = i, p
}
function ou(t, e, i, n, a) {
var o = !a || !a.hv || a.hv[0],
r = !a || !a.hv || a.hv[1],
s = a && a.boundingMode || "all";
if (o || r) {
var l;
if ("raw" === s) l = "group" === t.type ? new bi(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 = au(C({
width: l.width,
height: l.height
}, e), i, n);
var h = t.position,
c = o ? 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 ru(l, u, t) {
E(t) || (t = {});
var h = t.ignoreSize;
k(h) || (h = [h, h]);
var e = n(eu[0], 0),
i = n(eu[1], 1);
function n(t, e) {
var i = {},
n = 0,
a = {},
o = 0;
if (Ql(t, function(t) {
a[t] = l[t]
}), Ql(t, function(t) {
c(u, t) && (i[t] = a[t] = u[t]), d(i, t) && n++, d(a, t) && o++
}), h[e]) return d(u, t[1]) ? a[t[2]] = null : d(u, t[2]) && (a[t[1]] = null), a;
if (2 !== o && 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 a
}
function c(t, e) {
return t.hasOwnProperty(e)
}
function d(t, e) {
return null != t[e] && "auto" !== t[e]
}
function a(t, e, i) {
Ql(t, function(t) {
e[t] = i[t]
})
}
a(eu[0], l, e), a(eu[1], l, i)
}
function su(t) {
return lu({}, t)
}
function lu(e, i) {
return i && e && Ql(tu, function(t) {
i.hasOwnProperty(t) && (e[t] = i[t])
}), e
}
var uu, hu, cu, du = La(),
fu = dl.extend({
type: "component",
id: "",
name: "",
mainType: "",
subType: "",
componentIndex: 0,
defaultOption: null,
ecModel: null,
dependentModels: [],
uid: null,
layoutMode: null,
$constructor: function(t, e, i, n) {
dl.call(this, t, e, i, n), this.uid = ml("ec_cpt_model")
},
init: function(t, e, i, n) {
this.mergeDefaultAndTheme(t, i)
},
mergeDefaultAndTheme: function(t, e) {
var i = this.layoutMode,
n = i ? su(t) : {};
m(t, e.getTheme().get(this.mainType)), m(t, this.getDefaultOption()), i && ru(t, n, i)
},
mergeOption: function(t, e) {
m(this.option, t, !0);
var i = this.layoutMode;
i && ru(this.option, t, i)
},
optionUpdated: function(t, e) {},
getDefaultOption: function() {
var t = du(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 a = {}, o = e.length - 1; 0 <= o; o--) a = m(a, e[o], !0);
t.defaultOption = a
}
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(fu, {
registerWhenExtend: !0
}), hu = {}, (uu = fu).registerSubTypeDefaulter = function(t, e) {
t = Va(t), hu[t.main] = e
}, uu.determineSubType = function(t, e) {
var i = e.type;
if (!i) {
var n = Va(t).main;
uu.hasSubTypes(t) && hu[n] && (i = hu[n](e))
}
return i
}, cu = function(t) {
var e = [];
O(fu.getClassesByMainType(t), function(t) {
e = e.concat(t.prototype.dependencies || [])
}), e = N(e, function(t) {
return Va(t).main
}), "dataset" !== t && _(e, "dataset") <= 0 && e.unshift("dataset");
return e
}, fu.topologicalTravel = function(t, e, i, n) {
if (t.length) {
var a = function(e) {
var a = {},
o = [];
return O(e, function(i) {
var n = pu(a, i),
t = function(t, e) {
var i = [];
return O(t, function(t) {
0 <= _(e, t) && i.push(t)
}), i
}(n.originalDeps = cu(i), e);
n.entryCount = t.length, 0 === n.entryCount && o.push(i), O(t, function(t) {
_(n.predecessor, t) < 0 && n.predecessor.push(t);
var e = pu(a, t);
_(e.successor, t) < 0 && e.successor.push(i)
})
}), {
graph: a,
noEntryList: o
}
}(e),
o = a.graph,
r = a.noEntryList,
s = {};
for (O(t, function(t) {
s[t] = !0
}); r.length;) {
var l = r.pop(),
u = o[l],
h = !!s[l];
h && (i.call(n, l, u.originalDeps.slice()), delete s[l]), O(u.successor, h ? d : c)
}
O(s, function() {
throw new Error("Circle dependency may exists")
})
}
function c(t) {
o[t].entryCount--, 0 === o[t].entryCount && r.push(t)
}
function d(t) {
s[t] = !0, c(t)
}
}, b(fu, {
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 gu = "";
"undefined" != typeof navigator && (gu = navigator.platform || "");
var mu = {
color: ["#c23531", "#2f4554", "#61a0a8", "#d48265", "#91c7ae", "#749f83", "#ca8622", "#bda29a", "#6e7074", "#546570", "#c4ccd3"],
gradientColor: ["#f6efa6", "#d88273", "#bf444c"],
textStyle: {
fontFamily: gu.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
},
vu = La();
var yu = {
clearColorPalette: function() {
vu(this).colorIdx = 0, vu(this).colorNameMap = {}
},
getColorFromPalette: function(t, e, i) {
var n = vu(e = e || this),
a = n.colorIdx || 0,
o = n.colorNameMap = n.colorNameMap || {};
if (o.hasOwnProperty(t)) return o[t];
var r = wa(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[a];
return t && (o[t] = u), n.colorIdx = (a + 1) % l.length, u
}
}
};
function xu(t) {
var e = t.get("coordinateSystem"),
i = {
coordSysName: e,
coordSysDims: [],
axisMap: Q(),
categoryAxisMap: Q()
},
n = _u[e];
if (n) return n(t, i, i.axisMap, i.categoryAxisMap), i
}
var _u = {
cartesian2d: function(t, e, i, n) {
var a = t.getReferringComponents("xAxis")[0],
o = t.getReferringComponents("yAxis")[0];
e.coordSysDims = ["x", "y"], i.set("x", a), i.set("y", o), wu(a) && (n.set("x", a), e.firstCategoryDimIndex = 0), wu(o) && (n.set("y", o), e.firstCategoryDimIndex = 1)
},
singleAxis: function(t, e, i, n) {
var a = t.getReferringComponents("singleAxis")[0];
e.coordSysDims = ["single"], i.set("single", a), wu(a) && (n.set("single", a), e.firstCategoryDimIndex = 0)
},
polar: function(t, e, i, n) {
var a = t.getReferringComponents("polar")[0],
o = a.findAxisModel("radiusAxis"),
r = a.findAxisModel("angleAxis");
e.coordSysDims = ["radius", "angle"], i.set("radius", o), i.set("angle", r), wu(o) && (n.set("radius", o), e.firstCategoryDimIndex = 0), wu(r) && (n.set("angle", r), e.firstCategoryDimIndex = 1)
},
geo: function(t, e, i, n) {
e.coordSysDims = ["lng", "lat"]
},
parallel: function(t, a, o, r) {
var s = t.ecModel,
e = s.getComponent("parallel", t.get("parallelIndex")),
l = a.coordSysDims = e.dimensions.slice();
O(e.parallelAxisIndex, function(t, e) {
var i = s.getComponent("parallelAxis", t),
n = l[e];
o.set(n, i), wu(i) && null == a.firstCategoryDimIndex && (r.set(n, i), a.firstCategoryDimIndex = e)
})
}
};
function wu(t) {
return "category" === t.get("type")
}
var bu = "original",
Su = "arrayRows",
Mu = "objectRows",
Iu = "keyedColumns",
Au = "unknown",
Tu = "typedArray",
Du = "column",
Cu = "row";
function Lu(t) {
this.fromDataset = t.fromDataset, this.data = t.data || (t.sourceFormat === Iu ? {} : []), this.sourceFormat = t.sourceFormat || Au, this.seriesLayoutBy = t.seriesLayoutBy || Du, this.dimensionsDefine = t.dimensionsDefine, this.encodeDefine = t.encodeDefine && Q(t.encodeDefine), this.startIndex = t.startIndex || 0, this.dimensionsDetectCount = t.dimensionsDetectCount
}
Lu.seriesDataToSource = function(t) {
return new Lu({
data: t,
sourceFormat: V(t) ? Tu : bu,
fromDataset: !1
})
}, Wa(Lu);
var ku = La();
function Pu(t) {
var e = t.option,
i = e.data,
n = V(i) ? Tu : bu,
a = !1,
o = e.seriesLayoutBy,
r = e.sourceHeader,
s = e.dimensions,
l = function(t) {
var e = t.option;
if (!e.data) return t.ecModel.getComponent("dataset", e.datasetIndex || 0)
}(t);
if (l) {
var u = l.option;
i = u.source, n = ku(l).sourceFormat, a = !0, o = o || u.seriesLayoutBy, null == r && (r = u.sourceHeader), s = s || u.dimensions
}
var h = function(t, e, i, n, a) {
if (!t) return {
dimensionsDefine: Nu(a)
};
var o, r, s, l;
if (e === Su) "auto" === n || null == n ? Ou(function(t) {
null != t && "-" !== t && (z(t) ? null == r && (r = 1) : r = 0)
}, i, t, 10) : r = n ? 1 : 0, a || 1 !== r || (a = [], Ou(function(t, e) {
a[e] = null != t ? t : ""
}, i, t)), o = a ? a.length : i === Cu ? t.length : t[0] ? t[0].length : null;
else if (e === Mu) a || (a = function(t) {
var e, i = 0;
for (; i < t.length && !(e = t[i++]););
if (e) {
var n = [];
return O(e, function(t, e) {
n.push(e)
}), n
}
}(t), s = !0);
else if (e === Iu) a || (a = [], s = !0, O(t, function(t, e) {
a.push(e)
}));
else if (e === bu) {
var u = Ma(t[0]);
o = k(u) && u.length || 1
}
s && O(a, function(t, e) {
"name" === (E(t) ? t.name : t) && (l = e)
});
return {
startIndex: r,
dimensionsDefine: Nu(a),
dimensionsDetectCount: o,
potentialNameDimIndex: l
}
}(i, n, o, r, s),
c = e.encode;
!c && l && (c = function(t, e, i, n, a, o) {
var r = xu(t),
s = {},
l = [],
u = [],
h = t.subType,
c = Q(["pie", "map", "funnel"]),
d = Q(["line", "bar", "pictorialBar", "scatter", "effectScatter", "candlestick", "boxplot"]);
if (r && null != d.get(h)) {
var f = t.ecModel,
p = ku(f).datasetMap,
g = e.uid + "_" + a,
m = p.get(g) || p.set(g, {
categoryWayDim: 1,
valueWayDim: 0
});
O(r.coordSysDims, function(t) {
if (null == r.firstCategoryDimIndex) {
var e = m.valueWayDim++;
s[t] = e, u.push(e)
} else if (r.categoryAxisMap.get(t)) s[t] = 0, l.push(0);
else {
e = m.categoryWayDim++;
s[t] = e, u.push(e)
}
})
} else if (null != c.get(h)) {
for (var v, y = 0; y < 5 && null == v; y++) Ru(i, n, a, o.dimensionsDefine, o.startIndex, y) || (v = y);
if (null != v) {
s.value = v;
var x = o.potentialNameDimIndex || Math.max(v - 1, 0);
u.push(x), l.push(x)
}
}
return l.length && (s.itemName = l), u.length && (s.seriesName = u), s
}(t, l, i, n, o, h)), ku(t).source = new Lu({
data: i,
fromDataset: a,
seriesLayoutBy: o,
sourceFormat: n,
dimensionsDefine: h.dimensionsDefine,
startIndex: h.startIndex,
dimensionsDetectCount: h.dimensionsDetectCount,
encodeDefine: c
})
}
function Nu(t) {
if (t) {
var n = Q();
return N(t, function(t, e) {
if (null == (t = L({}, E(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 Ou(t, e, i, n) {
if (null == n && (n = 1 / 0), e === Cu)
for (var a = 0; a < i.length && a < n; a++) t(i[a] ? i[a][0] : null, a);
else {
var o = i[0] || [];
for (a = 0; a < o.length && a < n; a++) t(o[a], a)
}
}
function Ru(t, e, i, n, a, o) {
var r, s;
if (V(t)) return !1;
if (n && (s = E(s = n[o]) ? s.name : s), e === Su)
if (i === Cu) {
for (var l = t[o], u = 0; u < (l || []).length && u < 5; u++)
if (null != (r = f(l[a + u]))) return r
} else
for (u = 0; u < t.length && u < 5; u++) {
var h = t[a + u];
if (h && null != (r = f(h[o]))) return r
} else if (e === Mu) {
if (!s) return;
for (u = 0; u < t.length && u < 5; u++) {
if ((c = t[u]) && null != (r = f(c[s]))) return r
}
} else if (e === Iu) {
if (!s) return;
if (!(l = t[s]) || V(l)) return !1;
for (u = 0; u < l.length && u < 5; u++)
if (null != (r = f(l[u]))) return r
} else if (e === bu)
for (u = 0; u < t.length && u < 5; u++) {
var c, d = Ma(c = t[u]);
if (!k(d)) return !1;
if (null != (r = f(d[o]))) return r
}
function f(t) {
return (null == t || !isFinite(t) || "" === t) && (!(!z(t) || "-" === t) || void 0)
}
return !1
}
var zu = "\0_ec_inner",
Eu = dl.extend({
init: function(t, e, i, n) {
i = i || {}, this.option = null, this._theme = new dl(i), this._optionManager = n
},
setOption: function(t, e) {
Y(!(zu 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[zu] = 1, this._componentsMap = Q({
series: []
}), this._seriesIndices, this._seriesIndicesMap,
function(i, t) {
var n = i.color && !i.colorLayer;
O(t, function(t, e) {
"colorLayer" === e && n || fu.hasClass(e) || ("object" == typeof t ? i[e] = i[e] ? m(i[e], t, !1) : D(t) : null == i[e] && (i[e] = t))
})
}(t, this._theme.option), m(t, mu, !1), this.mergeOption(t)
}.call(this, n), e = !0
}
if ("timeline" !== t && "media" !== t || this.restoreData(), !t || "recreate" === t || "timeline" === t) {
var a = i.getTimelineOption(this);
a && (this.mergeOption(a), e = !0)
}
if (!t || "recreate" === t || "media" === t) {
var o = i.getMediaOption(this, this._api);
o.length && O(o, function(t) {
this.mergeOption(t, e = !0)
}, this)
}
return e
},
mergeOption: function(n) {
var l = this.option,
u = this._componentsMap,
i = [];
! function(t) {
ku(t).datasetMap = Q()
}(this), O(n, function(t, e) {
null != t && (fu.hasClass(e) ? e && i.push(e) : l[e] = null == l[e] ? D(t) : m(l[e], t, !0))
}), fu.topologicalTravel(i, fu.getAllClassMainTypes(), function(r, t) {
var e = wa(n[r]),
i = Ia(u.get(r), e);
Aa(i), O(i, function(t, e) {
var i = t.option;
E(i) && (t.keyInfo.mainType = r, t.keyInfo.subType = function(t, e, i) {
return e.type ? e.type : i ? i.subType : fu.determineSubType(t, e)
}(r, i, t.exist))
});
var s = function(e, t) {
k(t) || (t = t ? [t] : []);
var i = {};
return O(t, function(t) {
i[t] = (e.get(t) || []).slice()
}), i
}(u, t);
l[r] = [], u.set(r, []), O(i, function(t, e) {
var i = t.exist,
n = t.option;
if (Y(E(n) || i, "Empty component definition"), n) {
var a = fu.getClass(r, t.keyInfo.subType, !0);
if (i && i instanceof a) i.name = t.keyInfo.name, i.mergeOption(n, this), i.optionUpdated(n, !1);
else {
var o = L({
dependentModels: s,
componentIndex: e
}, t.keyInfo);
L(i = new a(n, this, this, o), o), i.init(n, this, this, o), i.optionUpdated(null, !0)
}
} else i.mergeOption({}, this), i.optionUpdated({}, !1);
u.get(r)[e] = i, l[r][e] = i.option
}, this), "series" === r && Bu(this, u.get("series"))
}, this), this._seriesIndicesMap = Q(this._seriesIndices = this._seriesIndices || [])
},
getOption: function() {
var n = D(this.option);
return O(n, function(t, e) {
if (fu.hasClass(e)) {
for (var i = (t = wa(t)).length - 1; 0 <= i; i--) Da(t[i]) && t.splice(i, 1);
n[e] = t
}
}), delete n[zu], 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,
a = t.id,
o = t.name,
r = this._componentsMap.get(e);
if (!r || !r.length) return [];
if (null != n) k(n) || (n = [n]), i = M(N(n, function(t) {
return r[t]
}), function(t) {
return !!t
});
else if (null != a) {
var s = k(a);
i = M(r, function(t) {
return s && 0 <= _(a, t.id) || !s && t.id === a
})
} else if (null != o) {
var l = k(o);
i = M(r, function(t) {
return l && 0 <= _(o, t.name) || !l && t.name === o
})
} else i = r.slice();
return Vu(i, t)
},
findComponents: function(t) {
var e, i, n, a, o, r = t.query,
s = t.mainType,
l = (i = s + "Index", n = s + "Id", a = s + "Name", !(e = r) || null == e[i] && null == e[n] && null == e[a] ? null : {
mainType: s,
index: e[i],
id: e[n],
name: e[a]
}),
u = l ? this.queryComponents(l) : this._componentsMap.get(s);
return o = Vu(u, t), t.filter ? M(o, t.filter) : o
},
eachComponent: function(t, n, a) {
var e = this._componentsMap;
if ("function" == typeof t) a = n, n = t, e.each(function(t, i) {
O(t, function(t, e) {
n.call(a, i, t, e)
})
});
else if (z(t)) O(e.get(t), n, a);
else if (E(t)) {
O(this.findComponents(t), n, a)
}
},
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) {
O(this._seriesIndices, function(t) {
var e = this._componentsMap.get("series")[t];
i.call(n, e, t)
}, this)
},
eachRawSeries: function(t, e) {
O(this._componentsMap.get("series"), t, e)
},
eachSeriesByType: function(i, n, a) {
O(this._seriesIndices, function(t) {
var e = this._componentsMap.get("series")[t];
e.subType === i && n.call(a, e, t)
}, this)
},
eachRawSeriesByType: function(t, e, i) {
return O(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);
Bu(this, i)
},
restoreData: function(i) {
var n = this._componentsMap;
Bu(this, n.get("series"));
var a = [];
n.each(function(t, e) {
a.push(e)
}), fu.topologicalTravel(a, fu.getAllClassMainTypes(), function(e, t) {
O(n.get(e), function(t) {
"series" === e && function(t, e) {
if (e) {
var i = e.seiresIndex,
n = e.seriesId,
a = e.seriesName;
return null != i && t.componentIndex !== i || null != n && t.id !== n || null != a && t.name !== a
}
}(t, i) || t.restoreData()
})
})
}
});
function Bu(t, e) {
t._seriesIndicesMap = Q(t._seriesIndices = N(e, function(t) {
return t.componentIndex
}) || [])
}
function Vu(t, e) {
return e.hasOwnProperty("subType") ? M(t, function(t) {
return t.subType === e.subType
}) : t
}
b(Eu, yu);
var Gu = ["getDom", "getZr", "getWidth", "getHeight", "getDevicePixelRatio", "dispatchAction", "isDisposed", "on", "off", "getDataURL", "getConnectedDataURL", "getModel", "getOption", "getViewOfComponentModel", "getViewOfSeriesModel"];
function Fu(e) {
O(Gu, function(t) {
this[t] = T(e[t], e)
}, this)
}
var Wu = {};
function Hu() {
this._coordinateSystems = []
}
Hu.prototype = {
constructor: Hu,
create: function(n, a) {
var o = [];
O(Wu, function(t, e) {
var i = t.create(n, a);
o = o.concat(i || [])
}), this._coordinateSystems = o
},
update: function(e, i) {
O(this._coordinateSystems, function(t) {
t.update && t.update(e, i)
})
},
getCoordinateSystems: function() {
return this._coordinateSystems.slice()
}
}, Hu.register = function(t, e) {
Wu[t] = e
}, Hu.get = function(t) {
return Wu[t]
};
var Zu = O,
Uu = D,
Xu = N,
Yu = m,
ju = /^(min|max)?(.+)$/;
function qu(t) {
this._api = t, this._timelineOptions = [], this._mediaList = [], this._mediaDefault, this._currentMediaIndices = [], this._optionBackup, this._newBaseOption
}
function Ku(t, e, i) {
var o = {
width: e,
height: i,
aspectratio: e / i
},
r = !0;
return O(t, function(t, e) {
var i = e.match(ju);
if (i && i[1] && i[2]) {
var n = i[1],
a = i[2].toLowerCase();
! function(t, e, i) {
return "min" === i ? e <= t : "max" === i ? t <= e : t === e
}(o[a], t, n) && (r = !1)
}
}), r
}
qu.prototype = {
constructor: qu,
setOption: function(t, e) {
t && O(wa(t.series), function(t) {
t && t.data && V(t.data) && K(t.data)
}), t = Uu(t);
var i = this._optionBackup,
n = function(t, i, n) {
var e, a, o = [],
r = [],
s = t.timeline;
t.baseOption && (a = t.baseOption);
(s || t.options) && (a = a || {}, o = (t.options || []).slice());
if (t.media) {
a = a || {};
var l = t.media;
Zu(l, function(t) {
t && t.option && (t.query ? r.push(t) : e = e || t)
})
}
a = a || t;
a.timeline || (a.timeline = s);
return Zu([a].concat(o).concat(N(r, function(t) {
return t.option
})), function(e) {
Zu(i, function(t) {
t(e, n)
})
}), {
baseOption: a,
timelineOptions: o,
mediaDefault: e,
mediaList: r
}
}.call(this, t, e, !i);
this._newBaseOption = n.baseOption, i ? (function(a, t) {
Zu(t = t || {}, function(t, e) {
if (null != t) {
var i = a[e];
if (fu.hasClass(e)) {
t = wa(t);
var n = Ia(i = wa(i), t);
a[e] = Xu(n, function(t) {
return t.option && t.exist ? Yu(t.exist, t.option, !0) : t.exist || t.option
})
} else a[e] = Yu(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 = Xu(e.timelineOptions, Uu), this._mediaList = Xu(e.mediaList, Uu), this._mediaDefault = Uu(e.mediaDefault), this._currentMediaIndices = [], Uu(t ? e.baseOption : this._newBaseOption)
},
getTimelineOption: function(t) {
var e, i = this._timelineOptions;
if (i.length) {
var n = t.getComponent("timeline");
n && (e = Uu(i[n.getCurrentIndex()], !0))
}
return e
},
getMediaOption: function(t) {
var e = this._api.getWidth(),
i = this._api.getHeight(),
n = this._mediaList,
a = this._mediaDefault,
o = [],
r = [];
if (!n.length && !a) return r;
for (var s = 0, l = n.length; s < l; s++) Ku(n[s].query, e, i) && o.push(s);
return !o.length && a && (o = [-1]), o.length && ! function(t, e) {
return t.join(",") === e.join(",")
}(o, this._currentMediaIndices) && (r = Xu(o, function(t) {
return Uu(-1 === t ? a.option : n[t].option)
})), this._currentMediaIndices = o, r
}
};
var $u = O,
Ju = E,
Qu = ["areaStyle", "lineStyle", "nodeStyle", "linkStyle", "chordStyle", "label", "labelLine"];
function th(t) {
var e = t && t.itemStyle;
if (e)
for (var i = 0, n = Qu.length; i < n; i++) {
var a = Qu[i],
o = e.normal,
r = e.emphasis;
o && o[a] && (t[a] = t[a] || {}, t[a].normal ? m(t[a].normal, o[a]) : t[a].normal = o[a], o[a] = null), r && r[a] && (t[a] = t[a] || {}, t[a].emphasis ? m(t[a].emphasis, r[a]) : t[a].emphasis = r[a], r[a] = null)
}
}
function eh(t, e, i) {
if (t && t[e] && (t[e].normal || t[e].emphasis)) {
var n = t[e].normal,
a = t[e].emphasis;
n && (i ? (t[e].normal = t[e].emphasis = null, C(t[e], n)) : t[e] = n), a && (t.emphasis = t.emphasis || {}, t.emphasis[e] = a)
}
}
function ih(t) {
eh(t, "itemStyle"), eh(t, "lineStyle"), eh(t, "areaStyle"), eh(t, "label"), eh(t, "labelLine"), eh(t, "upperLabel"), eh(t, "edgeLabel")
}
function nh(t, e) {
var i = Ju(t) && t[e],
n = Ju(i) && i.textStyle;
if (n)
for (var a = 0, o = Sa.length; a < o; a++) {
e = Sa[a];
n.hasOwnProperty(e) && (i[e] = n[e])
}
}
function ah(t) {
t && (ih(t), nh(t, "label"), t.emphasis && nh(t.emphasis, "label"))
}
function oh(t) {
return k(t) ? t : t ? [t] : []
}
function rh(t) {
return (k(t) ? t[0] : t) || {}
}
function sh(e, t) {
$u(oh(e.series), function(t) {
Ju(t) && function(t) {
if (Ju(t)) {
th(t), ih(t), nh(t, "label"), nh(t, "upperLabel"), nh(t, "edgeLabel"), t.emphasis && (nh(t.emphasis, "label"), nh(t.emphasis, "upperLabel"), nh(t.emphasis, "edgeLabel")), (i = t.markPoint) && (th(i), ah(i)), (n = t.markLine) && (th(n), ah(n));
var e = t.markArea;
e && ah(e);
var i, n, a = t.data;
if ("graph" === t.type) {
a = a || t.nodes;
var o = t.links || t.edges;
if (o && !V(o))
for (var r = 0; r < o.length; r++) ah(o[r]);
O(t.categories, function(t) {
ih(t)
})
}
if (a && !V(a))
for (r = 0; r < a.length; r++) ah(a[r]);
if ((i = t.markPoint) && i.data) {
var s = i.data;
for (r = 0; r < s.length; r++) ah(s[r])
}
if ((n = t.markLine) && n.data) {
var l = n.data;
for (r = 0; r < l.length; r++) k(l[r]) ? (ah(l[r][0]), ah(l[r][1])) : ah(l[r])
}
"gauge" === t.type ? (nh(t, "axisLabel"), nh(t, "title"), nh(t, "detail")) : "treemap" === t.type ? (eh(t.breadcrumb, "itemStyle"), O(t.levels, function(t) {
ih(t)
})) : "tree" === t.type && ih(t.leaves)
}
}(t)
});
var i = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "parallelAxis", "radar"];
t && i.push("valueAxis", "categoryAxis", "logAxis", "timeAxis"), $u(i, function(t) {
$u(oh(e[t]), function(t) {
t && (nh(t, "axisLabel"), nh(t.axisPointer, "label"))
})
}), $u(oh(e.parallel), function(t) {
var e = t && t.parallelAxisDefault;
nh(e, "axisLabel"), nh(e && e.axisPointer, "label")
}), $u(oh(e.calendar), function(t) {
eh(t, "itemStyle"), nh(t, "dayLabel"), nh(t, "monthLabel"), nh(t, "yearLabel")
}), $u(oh(e.radar), function(t) {
nh(t, "name")
}), $u(oh(e.geo), function(t) {
Ju(t) && (ah(t), $u(oh(t.regions), function(t) {
ah(t)
}))
}), $u(oh(e.timeline), function(t) {
ah(t), eh(t, "label"), eh(t, "itemStyle"), eh(t, "controlStyle", !0);
var e = t.data;
k(e) && O(e, function(t) {
E(t) && (eh(t, "label"), eh(t, "itemStyle"))
})
}), $u(oh(e.toolbox), function(t) {
eh(t, "iconStyle"), $u(t.feature, function(t) {
eh(t, "iconStyle")
})
}), nh(rh(e.axisPointer), "label"), nh(rh(e.tooltip).axisPointer, "label")
}
function lh(e) {
O(uh, function(t) {
t[0] in e && !(t[1] in e) && (e[t[1]] = e[t[0]])
})
}
var uh = [
["x", "left"],
["y", "top"],
["x2", "right"],
["y2", "bottom"]
],
hh = ["grid", "geo", "parallel", "legend", "toolbox", "title", "visualMap", "dataZoom", "timeline"],
ch = function(i, t) {
sh(i, t), i.series = wa(i.series), O(i.series, function(t) {
if (E(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 a, o = t, r = 0; r < e.length - 1; r++) null == o[a = e[r]] && (o[a] = {}), o = o[a];
!n && null != o[e[r]] || (o[e[r]] = i)
}(t, "itemStyle.color", i)
}
lh(t)
}
}), i.dataRange && (i.visualMap = i.dataRange), O(hh, function(t) {
var e = i[t];
e && (k(e) || (e = [e]), O(e, function(t) {
lh(t)
}))
})
};
function dh(m) {
O(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, a, o = p.get(h.stackedDimension, i);
if (isNaN(o)) return f;
g ? a = 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 || (a = l.data.rawIndexOf(l.stackedByDimension, n)), 0 <= a) {
var u = l.data.getByRawIndex(l.stackResultDimension, a);
if (0 <= o && 0 < u || o <= 0 && u < 0) {
o += u, r = u;
break
}
}
}
return d[0] = o, d[1] = r, d
});
p.hostModel.setData(e), h.data = e
})
}
function fh(t, e) {
Lu.isInstance(t) || (t = Lu.seriesDataToSource(t)), this._source = t;
var i = this._data = t.data,
n = t.sourceFormat;
n === Tu && (this._offset = 0, this._dimSize = e, this._data = i), L(this, gh[n === Su ? n + "_" + t.seriesLayoutBy : n])
}
var ph = fh.prototype;
ph.pure = !1;
var gh = {
arrayRows_column: {
pure: ph.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: yh
},
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 a = i[n];
e.push(a ? a[t] : null)
}
return e
},
appendData: function() {
throw new Error('Do not support appendData when set seriesLayoutBy: "row".')
}
},
objectRows: {
pure: !0,
count: mh,
getItem: vh,
appendData: yh
},
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 a = this._data[i[n].name];
e.push(a ? a[t] : null)
}
return e
},
appendData: function(t) {
var a = this._data;
O(t, function(t, e) {
for (var i = a[e] || (a[e] = []), n = 0; n < (t || []).length; n++) i.push(t[n])
})
}
},
original: {
count: mh,
getItem: vh,
appendData: yh
},
typedArray: {
persistent: !(ph.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 mh() {
return this._data.length
}
function vh(t) {
return this._data[t]
}
function yh(t) {
for (var e = 0; e < t.length; e++) this._data.push(t[e])
}
var xh = {
arrayRows: _h,
objectRows: function(t, e, i, n) {
return null != i ? t[n] : t
},
keyedColumns: _h,
original: function(t, e, i, n) {
var a = Ma(t);
return null != i && a instanceof Array ? a[i] : a
},
typedArray: _h
};
function _h(t, e, i, n) {
return null != i ? t[i] : t
}
var wh = {
arrayRows: bh,
objectRows: function(t, e, i, n) {
return Sh(t[e], this._dimensionInfos[e])
},
keyedColumns: bh,
original: function(t, e, i, n) {
var a = t && (null == t.value ? t : t.value);
return !this._rawData.pure && function(t) {
return ya(t) && !(t instanceof Array)
}(t) && (this.hasItemOption = !0), Sh(a instanceof Array ? a[n] : a, this._dimensionInfos[e])
},
typedArray: function(t, e, i, n) {
return t[n]
}
};
function bh(t, e, i, n) {
return Sh(t[n], this._dimensionInfos[e])
}
function Sh(t, e) {
var i = e && e.type;
if ("ordinal" !== i) return "time" === i && "number" != typeof t && null != t && "-" !== t && (t = +Ll(t)), null == t || "" === t ? NaN : +t;
var n = e && e.ordinalMeta;
return n ? n.parseAndCollect(t) : t
}
function Mh(t, e, i) {
if (t) {
var n = t.getRawDataItem(e);
if (null != n) {
var a, o, r = t.getProvider().getSource().sourceFormat,
s = t.getDimensionInfo(i);
return s && (a = s.name, o = s.index), xh[r](n, e, o, a)
}
}
}
function Ih(t, e, i) {
if (t) {
var n = t.getProvider().getSource().sourceFormat;
if (n === bu || n === Mu) {
var a = t.getRawDataItem(e);
return n !== bu || E(a) || (a = null), a ? a[i] : void 0
}
}
}
var Ah = /\{@(.+?)\}/g,
Th = {
getDataParams: function(t, e) {
var i = this.getData(e),
n = this.getRawValue(t, e),
a = i.getRawIndex(t),
o = i.getName(t),
r = i.getRawDataItem(t),
s = i.getItemVisual(t, "color"),
l = i.getItemVisual(t, "borderColor"),
u = this.ecModel.getComponent("tooltip"),
h = Ra(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: o,
dataIndex: a,
data: r,
dataType: e,
value: n,
color: s,
borderColor: l,
dimensionNames: f ? f.dimensionNames : null,
encode: f ? f.encode : null,
marker: Yl({
color: s,
renderMode: h
}),
$vars: ["seriesName", "name", "value"]
}
},
getFormattedLabel: function(n, t, e, i, a) {
t = t || "normal";
var o = this.getData(e),
r = o.getItemModel(n),
s = this.getDataParams(n, e);
null != i && s.value instanceof Array && (s.value = s.value[i]);
var l = r.get("normal" === t ? [a || "label", "formatter"] : [t, a || "label", "formatter"]);
return "function" == typeof l ? (s.status = t, s.dimensionIndex = i, l(s)) : "string" == typeof l ? Ul(l, s).replace(Ah, function(t, e) {
var i = e.length;
return "[" === e.charAt(0) && "]" === e.charAt(i - 1) && (e = +e.slice(1, i - 1)), Mh(o, n, e)
}) : void 0
},
getRawValue: function(t, e) {
return Mh(this.getData(e), t)
},
formatTooltip: function() {}
};
function Dh(t) {
return new Ch(t)
}
function Ch(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 Lh = Ch.prototype;
Lh.perform = function(t) {
var e, i = this._upstream,
n = t && t.skip;
if (this._dirty && i) {
var a = this.context;
a.data = a.outputData = i.context.outputData
}
this.__pipeline && (this.__pipeline.currentTask = this), this._plan && !n && (e = this._plan(this.context));
var o, 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, o = 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), k(i) && !i.length && (i = null));
t._progress = i, t._modBy = t._modDataCount = null;
var a = t._downstream;
return a && a.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 && (o || d < f)) {
var p = this._progress;
if (k(p))
for (var g = 0; g < p.length; g++) Gh(this, p[g], d, f, l, u);
else Gh(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, Ph, Nh, Oh, Rh, zh, Eh = zh = {
reset: function(t, e, i, n) {
Ph = t, kh = e, Nh = i, Oh = n, Rh = Math.ceil(Oh / Nh), zh.next = 1 < Nh && 0 < Oh ? Vh : Bh
}
};
function Bh() {
return Ph < kh ? Ph++ : null
}
function Vh() {
var t = Ph % Rh * Nh + Math.ceil(Ph / Rh),
e = kh <= Ph ? null : t < Oh ? t : Ph;
return Ph++, e
}
function Gh(t, e, i, n, a, o) {
Eh.reset(i, n, a, o), t._callingProgress = e, t._callingProgress({
start: i,
end: n,
count: n - i,
next: Eh.next
}, t.context)
}
Lh.dirty = function() {
this._dirty = !0, this._onDirty && this._onDirty(this.context)
}, Lh.unfinished = function() {
return this._progress && this._dueIndex < this._dueEnd
}, Lh.pipe = function(t) {
this._downstream === t && !this._dirty || ((this._downstream = t)._upstream = this, t.dirty())
}, Lh.dispose = function() {
this._disposed || (this._upstream && (this._upstream._downstream = null), this._downstream && (this._downstream._upstream = null), this._dirty = !1, this._disposed = !0)
}, Lh.getUpstream = function() {
return this._upstream
}, Lh.getDownstream = function() {
return this._downstream
}, Lh.setOutputEnd = function(t) {
this._outputDueEnd = this._settedOutputEnd = t
};
var Fh = La(),
Wh = fu.extend({
type: "series.__base__",
seriesIndex: 0,
coordinateSystem: null,
defaultOption: null,
legendDataProvider: null,
visualColorAccessPath: "itemStyle.color",
visualBorderColorAccessPath: "itemStyle.borderColor",
layoutMode: null,
init: function(t, e, i, n) {
this.seriesIndex = this.componentIndex, this.dataTask = Dh({
count: Zh,
reset: Uh
}), this.dataTask.context = {
model: this
}, this.mergeDefaultAndTheme(t, i), Pu(this);
var a = this.getInitialData(t, i);
Yh(a, this), this.dataTask.context.data = a, Fh(this).dataBeforeProcessed = a, Hh(this)
},
mergeDefaultAndTheme: function(t, e) {
var i = this.layoutMode,
n = i ? su(t) : {},
a = this.subType;
fu.hasClass(a) && (a += "Series"), m(t, e.getTheme().get(this.subType)), m(t, this.getDefaultOption()), ba(t, "label", ["show"]), this.fillDataTextStyle(t.data), i && ru(t, n, i)
},
mergeOption: function(t, e) {
t = m(this.option, t, !0), this.fillDataTextStyle(t.data);
var i = this.layoutMode;
i && ru(this.option, t, i), Pu(this);
var n = this.getInitialData(t, e);
Yh(n, this), this.dataTask.dirty(), this.dataTask.context.data = n, Fh(this).dataBeforeProcessed = n, Hh(this)
},
fillDataTextStyle: function(t) {
if (t && !V(t))
for (var e = ["show"], i = 0; i < t.length; i++) t[i] && t[i].label && ba(t[i], "label", e)
},
getInitialData: function() {},
appendData: function(t) {
this.getRawData().appendData(t.data)
},
getData: function(t) {
var e = qh(this);
if (e) {
var i = e.context.data;
return null == t ? i : i.getLinkedData(t)
}
return Fh(this).data
},
setData: function(t) {
var e = qh(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)
}
Fh(this).data = t
},
getSource: function() {
return function(t) {
return ku(t).source
}(this)
},
getRawData: function() {
return Fh(this).dataBeforeProcessed
},
getBaseAxis: function() {
var t = this.coordinateSystem;
return t && t.getBaseAxis && t.getBaseAxis()
},
formatTooltip: function(a, 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: Wl(El(t)),
style: p
}
}
var m = this.getData(),
o = m.mapDimension("defaultedTooltip", !0),
n = o.length,
r = this.getRawValue(a),
s = k(r),
v = m.getItemVisual(a, "color");
E(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,
a = "sub" + d.seriesIndex + "at" + g,
o = Yl({
color: v,
type: "subItem",
renderMode: c,
markerId: a
}),
r = "string" == typeof o ? o : o.content,
s = (l ? r + Wl(i.displayName || "-") + ": " : "") + Wl("ordinal" === n ? t + "" : "time" === n ? h ? "" : ql("yyyy/MM/dd hh:mm:ss", t) : El(t));
s && u.push(s), f && (p[a] = v, ++g)
}
}
o.length ? O(o, function(t) {
e(Mh(m, a, t), t)
}) : O(t, e);
var i = l ? f ? "\n" : "
" : "",
n = i + u.join(i || ", ");
return {
renderMode: c,
content: n,
style: p
}
}(r) : i(n ? Mh(m, a, o[0]) : s ? r[0] : r)).content,
u = d.seriesIndex + "at" + g,
y = Yl({
color: v,
type: "item",
renderMode: c,
markerId: u
});
p[u] = v, ++g;
var x = m.getName(a),
_ = this.name;
Ta(this) || (_ = ""), _ = _ ? Wl(_) + (h ? ": " : e) : "";
var w = "string" == typeof y ? y : y.content;
return {
html: h ? w + _ + l : _ + w + (x ? Wl(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,
a = yu.getColorFromPalette.call(this, t, e, i);
return a = a || 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 Hh(t) {
var e = t.name;
Ta(t) || (t.name = function(t) {
var i = t.getRawData(),
e = i.mapDimension("seriesName", !0),
n = [];
return O(e, function(t) {
var e = i.getDimensionInfo(t);
e.displayName && n.push(e.displayName)
}), n.join(" ")
}(t) || e)
}
function Zh(t) {
return t.model.getRawData().count()
}
function Uh(t) {
var e = t.model;
return e.setData(e.getRawData().cloneShallow()), Xh
}
function Xh(t, e) {
t.end > e.outputData.count() && e.model.getRawData().cloneShallow(e.outputData)
}
function Yh(e, i) {
O(e.CHANGABLE_METHODS, function(t) {
e.wrapMethod(t, A(jh, i))
})
}
function jh(t) {
var e = qh(t);
e && e.setOutputEnd(this.count())
}
function qh(t) {
var e = (t.ecModel || {}).scheduler,
i = e && e.getPipeline(t.uid);
if (i) {
var n = i.currentTask;
if (n) {
var a = n.agentStubMap;
a && (n = a.get(t.uid))
}
return n
}
}
b(Wh, Th), b(Wh, yu);
var Kh = function() {
this.group = new Si, this.uid = ml("viewComponent")
};
Kh.prototype = {
constructor: Kh,
init: function(t, e) {},
render: function(t, e, i, n) {},
dispose: function() {},
filterForExposedEvent: null
};
var $h = Kh.prototype;
$h.updateView = $h.updateLayout = $h.updateVisual = function(t, e, i, n) {}, Ga(Kh), Ua(Kh, {
registerWhenExtend: !0
});
function Jh() {
var s = La();
return function(t) {
var e = s(t),
i = t.pipelineContext,
n = e.large,
a = e.progressiveRender,
o = e.large = i.large,
r = e.progressiveRender = i.progressiveRender;
return !!(n ^ o || a ^ r) && "reset"
}
}
var Qh = La(),
tc = Jh();
function ec() {
this.group = new Si, this.uid = ml("viewChart"), this.renderTask = Dh({
plan: oc,
reset: rc
}), this.renderTask.context = {
view: this
}
}
var ic = ec.prototype = {
type: "chart",
init: function(t, e) {},
render: function(t, e, i, n) {},
highlight: function(t, e, i, n) {
ac(t.getData(), n, "emphasis")
},
downplay: function(t, e, i, n) {
ac(t.getData(), n, "normal")
},
remove: function(t, e) {
this.group.removeAll()
},
dispose: function() {},
incrementalPrepareRender: null,
incrementalRender: null,
updateTransform: null,
filterForExposedEvent: null
};
function nc(t, e, i) {
if (t && (t.trigger(e, i), t.isGroup && !zs(t)))
for (var n = 0, a = t.childCount(); n < a; n++) nc(t.childAt(n), e, i)
}
function ac(e, t, i) {
var n = Ca(e, t),
a = t && null != t.highlightKey ? Es(t.highlightKey) : null;
null != n ? O(wa(n), function(t) {
nc(e.getItemGraphicEl(t), i, a)
}) : e.eachItemGraphicEl(function(t) {
nc(t, i, a)
})
}
function oc(t) {
return tc(t.model)
}
function rc(t) {
var e = t.model,
i = t.ecModel,
n = t.api,
a = t.payload,
o = e.pipelineContext.progressiveRender,
r = t.view,
s = a && Qh(a).updateMethod,
l = o ? "incrementalPrepareRender" : s && r[s] ? s : "render";
return "render" !== l && r[l](e, i, n, a), sc[l]
}
ic.updateView = ic.updateLayout = ic.updateVisual = function(t, e, i, n) {
this.render(t, e, i, n)
}, Ga(ec), Ua(ec, {
registerWhenExtend: !0
}), ec.markUpdateMethod = function(t, e) {
Qh(t).updateMethod = e
};
var sc = {
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)
}
}
},
lc = "\0__throttleOriginMethod",
uc = "\0__throttleRate",
hc = "\0__throttleType";
function cc(t, i, n) {
var a, o, 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() {
a = (new Date).getTime(), r = this, s = arguments;
var t = l || i,
e = l || n;
l = null, o = a - (e ? u : h) - t, clearTimeout(c), e ? c = setTimeout(d, t) : 0 <= o ? d() : c = setTimeout(d, -o), u = a
}
return e.clear = function() {
c && (clearTimeout(c), c = null)
}, e.debounceNextCall = function(t) {
l = t
}, e
}
function dc(t, e, i, n) {
var a = t[e];
if (a) {
var o = a[lc] || a,
r = a[hc];
if (a[uc] !== i || r !== n) {
if (null == i || !n) return t[e] = o;
(a = t[e] = cc(o, i, "debounce" === n))[lc] = o, a[hc] = n, a[uc] = i
}
return a
}
}
function fc(t, e) {
var i = t[e];
i && i[lc] && (t[e] = i[lc])
}
var pc = {
createOnAllSeries: !0,
performRawSeries: !0,
reset: function(e, t) {
var i = e.getData(),
o = (e.visualColorAccessPath || "itemStyle.color").split("."),
n = e.get(o) || e.getColorFromPalette(e.name, null, t.getSeriesCount());
i.setVisual("color", n);
var r = (e.visualBorderColorAccessPath || "itemStyle.borderColor").split("."),
a = e.get(r);
if (i.setVisual("borderColor", a), !t.isSeriesFiltered(e)) {
"function" != typeof n || n instanceof jr || i.each(function(t) {
i.setItemVisual(t, "color", n(e.getDataParams(t)))
});
return {
dataEach: i.hasItemOption ? function(t, e) {
var i = t.getItemModel(e),
n = i.get(o, !0),
a = i.get(r, !0);
null != n && t.setItemVisual(e, "color", n), null != a && t.setItemVisual(e, "borderColor", a)
} : null
}
}
}
},
gc = {
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: ""
}
}
}
},
mc = function(t, e) {
var o = e.getModel("aria");
if (o.get("show"))
if (o.get("description")) t.setAttribute("aria-label", o.get("description"));
else {
var h = 0;
e.eachSeries(function(t, e) {
++h
}, this);
var i, c = o.get("data.maxCount") || 10,
n = o.get("series.maxCount") || 10,
d = Math.min(h, n);
if (!(h < 1)) {
var a = function() {
var t = e.getModel("title").option;
t && t.length && (t = t[0]);
return t && t.text
}();
i = a ? p(g("general.withTitle"), {
title: a
}) : 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"),
a = "series." + (1 < h ? "multiple" : "single") + ".";
i = p(i = g(n ? a + "withName" : a + "withoutName"), {
seriesId: t.seriesIndex,
seriesName: t.get("name"),
seriesType: function(t) {
return gc.series.typeNames[t] || "自定义图"
}(t.subType)
});
var o = t.getData();
(window.data = o).count() > c ? i += p(g("data.partialData"), {
displayCnt: c
}) : i += g("data.allData");
for (var r = [], s = 0; s < o.count(); s++)
if (s < c) {
var l = o.getName(s),
u = Mh(o, 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 O(e, function(t, e) {
i = i.replace(new RegExp("\\{\\s*" + e + "\\s*\\}", "g"), t)
}), i
}
function g(t) {
var e = o.get(t);
if (null != e) return e;
for (var i = t.split("."), n = gc.aria, a = 0; a < i.length; ++a) n = n[i[a]];
return n
}
},
vc = Math.PI;
function yc(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 xc = yc.prototype;
function _c(l, t, u, h, c) {
var d;
function f(t, e) {
return t.setDirty && (!t.dirtyMap || t.dirtyMap.get(e.__pipeline.id))
}
c = c || {}, O(t, function(n, t) {
if (!c.visualType || c.visualType === n.visualType) {
var e = l._stageTaskMap.get(n.uid),
i = e.seriesTaskMap,
a = e.overallTask;
if (a) {
var o, r = a.agentStubMap;
r.each(function(t) {
f(c, t) && (t.dirty(), o = !0)
}), o && a.dirty(), wc(a, h);
var s = l.getPerformArgs(a, c.block);
r.each(function(t) {
t.perform(s)
}), d |= a.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), wc(t, h), d |= t.perform(i)
})
}
}), l.unfinished |= d
}
xc.restoreData = function(t, e) {
t.restoreData(e), this._stageTaskMap.each(function(t) {
var e = t.overallTask;
e && e.dirty()
})
}, xc.getPerformArgs = function(t, e) {
if (t.__pipeline) {
var i = this._pipelineMap.get(t.__pipeline.id),
n = i.context,
a = !e && i.progressiveEnabled && (!n || n.progressiveRender) && t.__idxInPipeline > i.blockIndex ? i.step : null,
o = n && n.modDataCount;
return {
step: a,
modBy: null != o ? Math.ceil(o / a) : null,
modDataCount: o
}
}
}, xc.getPipeline = function(t) {
return this._pipelineMap.get(t)
}, xc.updateStreamModes = function(t, e) {
var i = this._pipelineMap.get(t.uid),
n = t.getData().count(),
a = i.progressiveEnabled && e.incrementalPrepareRender && n >= i.threshold,
o = t.get("large") && n >= t.get("largeThreshold"),
r = "mod" === t.get("progressiveChunkMode") ? n : null;
t.pipelineContext = i.context = {
progressiveRender: a,
modDataCount: r,
large: o
}
}, xc.restorePipelines = function(t) {
var n = this,
a = n._pipelineMap = Q();
t.eachSeries(function(t) {
var e = t.getProgressive(),
i = t.uid;
a.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)
})
}, xc.prepareStageTasks = function() {
var i = this._stageTaskMap,
n = this.ecInstance.getModel(),
a = this.api;
O(this._allHandlers, function(t) {
var e = i.get(t.uid) || i.set(t.uid, []);
t.reset && function(n, a, t, o, r) {
var s = t.seriesTaskMap || (t.seriesTaskMap = Q()),
e = a.seriesType,
i = a.getTargetSeries;
a.createOnAllSeries ? o.eachRawSeries(l) : e ? o.eachRawSeriesByType(e, l) : i && i(o, r).each(l);
function l(t) {
var e = t.uid,
i = s.get(e) || s.set(e, Dh({
plan: Ac,
reset: Tc,
count: Lc
}));
i.context = {
model: t,
ecModel: o,
api: r,
useClearVisual: a.isVisual && !a.isLayout,
plan: a.plan,
reset: a.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, a), t.overallReset && function(n, t, e, i, a) {
var o = e.overallTask = e.overallTask || Dh({
reset: bc
});
o.context = {
ecModel: i,
api: a,
overallReset: t.overallReset,
scheduler: n
};
var r = o.agentStubMap = o.agentStubMap || Q(),
s = t.seriesType,
l = t.getTargetSeries,
u = !0,
h = t.modifyOutputEnd;
s ? i.eachRawSeriesByType(s, c) : l ? l(i, a).each(c) : (u = !1, O(i.getSeries(), c));
function c(t) {
var e = t.uid,
i = r.get(e);
i || (i = r.set(e, Dh({
reset: Sc,
onDirty: Ic
})), o.dirty()), i.context = {
model: t,
overallProgress: u,
modifyOutputEnd: h
}, i.agent = o, i.__block = u, kc(n, t, i)
}
var d = n._pipelineMap;
r.each(function(t, e) {
d.get(e) || (t.dispose(), o.dirty(), r.removeKey(e))
})
}(this, t, e, n, a)
}, this)
}, xc.prepareView = function(t, e, i, n) {
var a = t.renderTask,
o = a.context;
o.model = e, o.ecModel = i, o.api = n, a.__block = !t.incrementalPrepareRender, kc(this, e, a)
}, xc.performDataProcessorTasks = function(t, e) {
_c(this, this._dataProcessorHandlers, t, e, {
block: !0
})
}, xc.performVisualTasks = function(t, e, i) {
_c(this, this._visualHandlers, t, e, i)
}, xc.performSeriesTasks = function(t) {
var e;
t.eachSeries(function(t) {
e |= t.dataTask.perform()
}), this.unfinished |= e
}, xc.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 wc = xc.updatePayload = function(t, e) {
"remain" !== e && (t.context.payload = e)
};
function bc(t) {
t.overallReset(t.ecModel, t.api, t.payload)
}
function Sc(t, e) {
return t.overallProgress && Mc
}
function Mc() {
this.agent.dirty(), this.getDownstream().dirty()
}
function Ic() {
this.agent && this.agent.dirty()
}
function Ac(t) {
return t.plan && t.plan(t.model, t.ecModel, t.api, t.payload)
}
function Tc(t) {
t.useClearVisual && t.data.clearAllVisual();
var e = t.resetDefines = wa(t.reset(t.model, t.ecModel, t.api, t.payload));
return 1 < e.length ? N(e, function(t, e) {
return Cc(e)
}) : Dc
}
var Dc = Cc(0);
function Cc(o) {
return function(t, e) {
var i = e.data,
n = e.resetDefines[o];
if (n && n.dataEach)
for (var a = t.start; a < t.end; a++) n.dataEach(i, a);
else n && n.progress && n.progress(t, i)
}
}
function Lc(t) {
return t.data.count()
}
function kc(t, e, i) {
var n = e.uid,
a = t._pipelineMap.get(n);
a.head || (a.head = i), a.tail && a.tail.pipe(i), (a.tail = i).__idxInPipeline = a.count++, i.__pipeline = a
}
yc.wrapStageHandler = function(t, e) {
return R(t) && (t = {
overallReset: t,
seriesType: function(t) {
Pc = null;
try {
t(Nc, Oc)
} catch (t) {}
return Pc
}(t)
}), t.uid = ml("stageHandler"), e && (t.visualType = e), t
};
var Pc, Nc = {},
Oc = {};
function Rc(t, e) {
for (var i in e.prototype) t[i] = et
}
Rc(Nc, Eu), Rc(Oc, Fu), Nc.eachSeriesByType = Nc.eachRawSeriesByType = function(t) {
Pc = t
}, Nc.eachComponent = function(t) {
"series" === t.mainType && t.subType && (Pc = t.subType)
};
function zc() {
return {
axisLine: {
lineStyle: {
color: Vc
}
},
axisTick: {
lineStyle: {
color: Vc
}
},
axisLabel: {
textStyle: {
color: Vc
}
},
splitLine: {
lineStyle: {
type: "dashed",
color: "#aaa"
}
},
splitArea: {
areaStyle: {
color: Vc
}
}
}
}
var Ec = ["#37A2DA", "#32C5E9", "#67E0E3", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#E062AE", "#E690D1", "#e7bcf3", "#9d96f5", "#8378EA", "#96BFFF"],
Bc = {
color: Ec,
colorLayer: [
["#37A2DA", "#ffd85c", "#fd7b5f"],
["#37A2DA", "#67E0E3", "#FFDB5C", "#ff9f7f", "#E062AE", "#9d96f5"],
["#37A2DA", "#32C5E9", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#e7bcf3", "#8378EA", "#96BFFF"], Ec
]
},
Vc = "#eee",
Gc = ["#dd6b66", "#759aa0", "#e69d87", "#8dc1a9", "#ea7e53", "#eedd78", "#73a373", "#73b9bc", "#7289ab", "#91ca8c", "#f49f42"],
Fc = {
color: Gc,
backgroundColor: "#333",
tooltip: {
axisPointer: {
lineStyle: {
color: Vc
},
crossStyle: {
color: Vc
}
}
},
legend: {
textStyle: {
color: Vc
}
},
textStyle: {
color: Vc
},
title: {
textStyle: {
color: Vc
}
},
toolbox: {
iconStyle: {
normal: {
borderColor: Vc
}
}
},
dataZoom: {
textStyle: {
color: Vc
}
},
visualMap: {
textStyle: {
color: Vc
}
},
timeline: {
lineStyle: {
color: Vc
},
itemStyle: {
normal: {
color: Gc[1]
}
},
label: {
normal: {
textStyle: {
color: Vc
}
}
},
controlStyle: {
normal: {
color: Vc,
borderColor: Vc
}
}
},
timeAxis: zc(),
logAxis: zc(),
valueAxis: zc(),
categoryAxis: zc(),
line: {
symbol: "circle"
},
graph: {
color: Gc
},
gauge: {
title: {
textStyle: {
color: Vc
}
}
},
candlestick: {
itemStyle: {
normal: {
color: "#FD1050",
color0: "#0CF49B",
borderColor: "#FD1050",
borderColor0: "#0CF49B"
}
}
}
};
Fc.categoryAxis.splitLine.show = !1, fu.extend({
type: "dataset",
defaultOption: {
seriesLayoutBy: Du,
sourceHeader: null,
dimensions: null,
source: null
},
optionUpdated: function() {
! function(t) {
var e = t.option.source,
i = Au;
if (V(e)) i = Tu;
else if (k(e)) {
0 === e.length && (i = Su);
for (var n = 0, a = e.length; n < a; n++) {
var o = e[n];
if (null != o) {
if (k(o)) {
i = Su;
break
}
if (E(o)) {
i = Mu;
break
}
}
}
} else if (E(e)) {
for (var r in e)
if (e.hasOwnProperty(r) && P(e[r])) {
i = Iu;
break
}
} else if (null != e) throw new Error("Invalid data");
ku(t).sourceFormat = i
}(this)
}
}), Kh.extend({
type: "dataset"
});
var Wc = hr.extend({
type: "ellipse",
shape: {
cx: 0,
cy: 0,
rx: 0,
ry: 0
},
buildPath: function(t, e) {
var i = e.cx,
n = e.cy,
a = e.rx,
o = e.ry,
r = .5522848 * a,
s = .5522848 * o;
t.moveTo(i - a, n), t.bezierCurveTo(i - a, n - s, i - r, n - o, i, n - o), t.bezierCurveTo(i + r, n - o, i + a, n - s, i + a, n), t.bezierCurveTo(i + a, n + s, i + r, n + o, i, n + o), t.bezierCurveTo(i - r, n + o, i - a, n + s, i - a, n), t.closePath()
}
}),
Hc = /[\s,]+/;
function Zc(t) {
z(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 Uc() {
this._defs = {}, this._root = null, this._isDefine = !1, this._isText = !1
}
Uc.prototype.parse = function(t, e) {
e = e || {};
var i = Zc(t);
if (!i) throw new Error("Illegal svg");
var n = new Si;
this._root = n;
var a = i.getAttribute("viewBox") || "",
o = parseFloat(i.getAttribute("width") || e.width),
r = parseFloat(i.getAttribute("height") || e.height);
isNaN(o) && (o = null), isNaN(r) && (r = null), $c(i, n, null, !0);
for (var s, l, u = i.firstChild; u;) this._parseNode(u, n), u = u.nextSibling;
if (a) {
var h = j(a).split(Hc);
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 != o && null != r && (l = id(s, o, r), !e.ignoreViewBox)) {
var c = n;
(n = new Si).add(c), c.scale = l.scale.slice(), c.position = l.position.slice()
}
return e.ignoreRootClip || null == o || null == r || n.setClipPath(new Hr({
shape: {
x: 0,
y: 0,
width: o,
height: r
}
})), {
root: n,
width: o,
height: r,
viewBoxRect: s,
viewBoxTransform: l
}
}, Uc.prototype._parseNode = function(t, e) {
var i, n, a = t.nodeName.toLowerCase();
if ("defs" === a ? this._isDefine = !0 : "text" === a && (this._isText = !0), this._isDefine) {
if (n = Yc[a]) {
var o = n.call(this, t),
r = t.getAttribute("id");
r && (this._defs[r] = o)
}
} else(n = Xc[a]) && (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" === a ? this._isDefine = !1 : "text" === a && (this._isText = !1)
}, Uc.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 a = new Dr({
style: {
text: t.textContent,
transformText: !0
},
position: [this._textX || 0, this._textY || 0]
});
jc(e, a), $c(t, a, this._defs);
var o = a.style.fontSize;
o && o < 9 && (a.style.fontSize = 9, a.scale = a.scale || [1, 1], a.scale[0] *= o / 9, a.scale[1] *= o / 9);
var r = a.getBoundingRect();
return this._textX += r.width, e.add(a), a
};
var Xc = {
g: function(t, e) {
var i = new Si;
return jc(e, i), $c(t, i, this._defs), i
},
rect: function(t, e) {
var i = new Hr;
return jc(e, i), $c(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 Lr;
return jc(e, i), $c(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 Ur;
return jc(e, i), $c(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 Wc;
return jc(e, i), $c(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 && qc(i);
var n = new zr({
shape: {
points: i || []
}
});
return jc(e, n), $c(t, n, this._defs), n
},
polyline: function(t, e) {
var i = new hr;
jc(e, i), $c(t, i, this._defs);
var n = t.getAttribute("points");
return n = n && qc(n), new Er({
shape: {
points: n || []
}
})
},
image: function(t, e) {
var i = new Yn;
return jc(e, i), $c(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,
a = t.getAttribute("dx") || 0,
o = t.getAttribute("dy") || 0;
this._textX = parseFloat(i) + parseFloat(a), this._textY = parseFloat(n) + parseFloat(o);
var r = new Si;
return jc(e, r), $c(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 a = t.getAttribute("dx") || 0,
o = t.getAttribute("dy") || 0,
r = new Si;
return jc(e, r), $c(t, r, this._defs), this._textX += a, this._textY += o, r
},
path: function(t, e) {
var i = Tr(t.getAttribute("d") || "");
return jc(e, i), $c(t, i, this._defs), i
}
},
Yc = {
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),
a = parseInt(t.getAttribute("y2") || 0, 10),
o = new Jr(e, i, n, a);
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 a = i.getAttribute("stop-color") || "#000000";
e.addColorStop(n, a)
}
i = i.nextSibling
}
}(t, o), o
},
radialgradient: function(t) {}
};
function jc(t, e) {
t && t.__inheritedStyle && (e.__inheritedStyle || (e.__inheritedStyle = {}), C(e.__inheritedStyle, t.__inheritedStyle))
}
function qc(t) {
for (var e = j(t).split(Hc), i = [], n = 0; n < e.length; n += 2) {
var a = parseFloat(e[n]),
o = parseFloat(e[n + 1]);
i.push([a, o])
}
return i
}
var Kc = {
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 $c(t, e, i, n) {
var a = e.__inheritedStyle || {},
o = "text" === e.type;
if (1 === t.nodeType && (function(t, e) {
var i = t.getAttribute("transform");
if (i) {
i = i.replace(/,/g, " ");
var n = null,
a = [];
i.replace(td, function(t, e, i) {
a.push(e, i)
});
for (var o = a.length - 1; 0 < o; o -= 2) {
var r = a[o],
s = a[o - 1];
switch (n = n || Qt(), s) {
case "translate":
r = j(r).split(Hc), ne(n, n, [parseFloat(r[0]), parseFloat(r[1] || 0)]);
break;
case "scale":
r = j(r).split(Hc), oe(n, n, [parseFloat(r[0]), parseFloat(r[1] || r[0])]);
break;
case "rotate":
r = j(r).split(Hc), ae(n, n, parseFloat(r[0]));
break;
case "skew":
r = j(r).split(Hc), console.warn("Skew transform is not supported yet");
break;
case "matrix":
r = j(r).split(Hc);
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), L(a, function(t) {
var e = t.getAttribute("style"),
i = {};
if (!e) return i;
var n, a = {};
ed.lastIndex = 0;
for (; null != (n = ed.exec(e));) a[n[1]] = n[2];
for (var o in Kc) Kc.hasOwnProperty(o) && null != a[o] && (i[Kc[o]] = a[o]);
return i
}(t)), !n))
for (var r in Kc)
if (Kc.hasOwnProperty(r)) {
var s = t.getAttribute(r);
null != s && (a[Kc[r]] = s)
} var l = o ? "textFill" : "fill",
u = o ? "textStroke" : "stroke";
e.style = e.style || new Vi;
var h = e.style;
null != a.fill && h.set(l, Qc(a.fill, i)), null != a.stroke && h.set(u, Qc(a.stroke, i)), O(["lineWidth", "opacity", "fillOpacity", "strokeOpacity", "miterLimit", "fontSize"], function(t) {
var e = "lineWidth" === t && o ? "textStrokeWidth" : t;
null != a[t] && h.set(e, parseFloat(a[t]))
}), a.textBaseline && "auto" !== a.textBaseline || (a.textBaseline = "alphabetic"), "alphabetic" === a.textBaseline && (a.textBaseline = "bottom"), "start" === a.textAlign && (a.textAlign = "left"), "end" === a.textAlign && (a.textAlign = "right"), O(["lineDashOffset", "lineCap", "lineJoin", "fontWeight", "fontFamily", "fontStyle", "textAlign", "textBaseline"], function(t) {
null != a[t] && h.set(t, a[t])
}), a.lineDash && (e.style.lineDash = j(a.lineDash).split(Hc)), h[u] && "none" !== h[u] && (e[u] = !0), e.__inheritedStyle = a
}
var Jc = /url\(\s*#(.*?)\)/;
function Qc(t, e) {
var i = e && t && t.match(Jc);
return i ? e[j(i[1])] : t
}
var td = /(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g;
var ed = /([^\s:;]+)\s*:\s*([^:;]+)/g;
function id(t, e, i) {
var n = e / t.width,
a = i / t.height,
o = Math.min(n, a);
return {
scale: [o, o],
position: [-(t.x + t.width / 2) * o + e / 2, -(t.y + t.height / 2) * o + i / 2]
}
}
var nd = Q(),
ad = {
registerMap: function(t, e, i) {
var n;
return O(n = k(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, od[e])(t)
}), nd.set(t, n)
},
retrieveMap: function(t) {
return nd.get(t)
}
},
od = {
geoJSON: function(t) {
var e = t.source;
t.geoJSON = z(e) ? "undefined" != typeof JSON && JSON.parse ? JSON.parse(e) : new Function("return (" + e + ");")() : e
},
svg: function(t) {
t.svgXML = Zc(t.source)
}
},
rd = Y,
sd = O,
ld = R,
ud = E,
hd = fu.parseClassType,
cd = {
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
}
},
dd = "__flagInMainProcess",
fd = "__optionUpdated",
pd = /^[a-zA-Z0-9_]+$/;
function gd(n, a) {
return function(t, e, i) {
!a && this._disposed || (t = t && t.toLowerCase(), Ct.prototype[n].call(this, t, e, i))
}
}
function md() {
Ct.call(this)
}
function vd(t, e, i) {
i = i || {}, "string" == typeof e && (e = Fd[e]), this.id, this.group, this._dom = t;
var n = this._zr = fa(t, {
renderer: i.renderer || "canvas",
devicePixelRatio: i.devicePixelRatio,
width: i.width,
height: i.height
});
this._throttledZrFlush = cc(T(n.flush, n), 17), (e = D(e)) && ch(e, !0), this._theme = e, this._chartsViews = [], this._chartsMap = {}, this._componentsViews = [], this._componentsMap = {}, this._coordSysMgr = new Hu;
var a = this._api = function(i) {
var t = i._coordSysMgr;
return L(new Fu(i), {
getCoordinateSystems: T(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 o(t, e) {
return t.__prio - e.__prio
}
ki(Gd, o), ki(Ed, o), this._scheduler = new yc(this, a, Ed, Gd), Ct.call(this, this._ecEventProcessor = new Od), this._messageCenter = new md, this._initEvents(), this.resize = T(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[fd] || e._scheduler.unfinished || e._pendingActions.length || e.trigger("finished")
})
}(n, this), K(this)
}
md.prototype.on = gd("on", !0), md.prototype.off = gd("off", !0), md.prototype.one = gd("one", !0), b(md, Ct);
var yd = vd.prototype;
function xd(t, e, i) {
if (!this._disposed) {
var n, a = this._model,
o = this._coordSysMgr.getCoordinateSystems();
e = Pa(a, e);
for (var r = 0; r < o.length; r++) {
var s = o[r];
if (s[t] && null != (n = s[t](a, e, i))) return n
}
}
}
yd._onframe = function() {
if (!this._disposed) {
var t = this._scheduler;
if (this[fd]) {
var e = this[fd].silent;
this[dd] = !0, wd(this), _d.update.call(this), this[dd] = !1, this[fd] = !1, Id.call(this, e), Ad.call(this, e)
} else if (t.unfinished) {
var i = 1,
n = this._model,
a = this._api;
t.unfinished = !1;
do {
var o = +new Date;
t.performSeriesTasks(n), t.performDataProcessorTasks(n), Sd(this, n), t.performVisualTasks(n), Ld(this, this._model, a, "remain"), i -= +new Date - o
} while (0 < i && t.unfinished);
t.unfinished || this._zr.flush()
}
}
}, yd.getDom = function() {
return this._dom
}, yd.getZr = function() {
return this._zr
}, yd.setOption = function(t, e, i) {
if (!this._disposed) {
var n;
if (ud(e) && (i = e.lazyUpdate, n = e.silent, e = e.notMerge), this[dd] = !0, !this._model || e) {
var a = new qu(this._api),
o = this._theme,
r = this._model = new Eu;
r.scheduler = this._scheduler, r.init(null, null, o, a)
}
this._model.setOption(t, Bd), i ? (this[fd] = {
silent: n
}, this[dd] = !1) : (wd(this), _d.update.call(this), this._zr.flush(), this[fd] = !1, this[dd] = !1, Id.call(this, n), Ad.call(this, n))
}
}, yd.setTheme = function() {
console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")
}, yd.getModel = function() {
return this._model
}, yd.getOption = function() {
return this._model && this._model.getOption()
}, yd.getWidth = function() {
return this._zr.getWidth()
}, yd.getHeight = function() {
return this._zr.getHeight()
}, yd.getDevicePixelRatio = function() {
return this._zr.painter.dpr || window.devicePixelRatio || 1
}, yd.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)
}, yd.getSvgDataUrl = function() {
if (v.svgSupported) {
var t = this._zr;
return O(t.storage.getDisplayList(), function(t) {
t.stopAnimation(!0)
}), t.painter.pathToDataUrl()
}
}, yd.getDataURL = function(t) {
if (!this._disposed) {
var e = (t = t || {}).excludeComponents,
i = this._model,
n = [],
a = this;
sd(e, function(t) {
i.eachComponent({
mainType: t
}, function(t) {
var e = a._componentsMap[t.__viewId];
e.group.ignore || (n.push(e), e.group.ignore = !0)
})
});
var o = "svg" === this._zr.painter.getType() ? this.getSvgDataUrl() : this.getRenderedCanvas(t).toDataURL("image/" + (t && t.type || "png"));
return sd(n, function(t) {
t.group.ignore = !1
}), o
}
}, yd.getConnectedDataURL = function(a) {
if (!this._disposed && v.canvasSupported) {
var o = this.group,
r = Math.min,
s = Math.max;
if (Zd[o]) {
var l = 1 / 0,
u = 1 / 0,
h = -1 / 0,
c = -1 / 0,
d = [],
i = a && a.pixelRatio || 1;
O(Hd, function(t, e) {
if (t.group === o) {
var i = t.getRenderedCanvas(D(a)),
n = t.getDom().getBoundingClientRect();
l = r(n.left, l), u = r(n.top, u), h = s(n.right, h), c = s(n.bottom, c), d.push({
dom: i,
left: n.left,
top: n.top
})
}
});
var t = (h *= i) - (l *= i),
e = (c *= i) - (u *= i),
n = g();
n.width = t, n.height = e;
var f = fa(n);
return a.connectedBackgroundColor && f.add(new Hr({
shape: {
x: 0,
y: 0,
width: t,
height: e
},
style: {
fill: a.connectedBackgroundColor
}
})), sd(d, function(t) {
var e = new Yn({
style: {
x: t.left * i - l,
y: t.top * i - u,
image: t.dom
}
});
f.add(e)
}), f.refreshImmediately(), n.toDataURL("image/" + (a && a.type || "png"))
}
return this.getDataURL(a)
}
}, yd.convertToPixel = A(xd, "convertToPixel"), yd.convertFromPixel = A(xd, "convertFromPixel"), yd.containPixel = function(t, a) {
var o;
if (!this._disposed) return O(t = Pa(this._model, t), function(t, n) {
0 <= n.indexOf("Models") && O(t, function(t) {
var e = t.coordinateSystem;
if (e && e.containPoint) o |= !!e.containPoint(a);
else if ("seriesModels" === n) {
var i = this._chartsMap[t.__viewId];
i && i.containPoint && (o |= i.containPoint(a, t))
}
}, this)
}, this), !!o
}, yd.getVisual = function(t, e) {
var i = (t = Pa(this._model, t, {
defaultMainType: "series"
})).seriesModel.getData(),
n = t.hasOwnProperty("dataIndexInside") ? t.dataIndexInside : t.hasOwnProperty("dataIndex") ? i.indexOfRawIndex(t.dataIndex) : null;
return null != n ? i.getItemVisual(n, e) : i.getVisual(e)
}, yd.getViewOfComponentModel = function(t) {
return this._componentsMap[t.__viewId]
}, yd.getViewOfSeriesModel = function(t) {
return this._chartsMap[t.__viewId]
};
var _d = {
prepareAndUpdate: function(t) {
wd(this), _d.update.call(this, t)
},
update: function(t) {
var e = this._model,
i = this._api,
n = this._zr,
a = this._coordSysMgr,
o = this._scheduler;
if (e) {
o.restoreData(e, t), o.performSeriesTasks(e), a.create(e, i), o.performDataProcessorTasks(e, t), Sd(this, e), a.update(e, i), Dd(e), o.performVisualTasks(e, t), Cd(this, e, i, t);
var r = e.get("backgroundColor") || "transparent";
if (v.canvasSupported) n.setBackgroundColor(r);
else {
var s = Re(r);
r = Ue(s, "rgb"), 0 === s[3] && (r = "transparent")
}
kd(e, i)
}
},
updateTransform: function(a) {
var o = this._model,
r = this,
s = this._api;
if (o) {
var l = [];
o.eachComponent(function(t, e) {
var i = r.getViewOfComponentModel(e);
if (i && i.__alive)
if (i.updateTransform) {
var n = i.updateTransform(e, o, s, a);
n && n.update && l.push(i)
} else l.push(i)
});
var n = Q();
o.eachSeries(function(t) {
var e = r._chartsMap[t.__viewId];
if (e.updateTransform) {
var i = e.updateTransform(t, o, s, a);
i && i.update && n.set(t.uid, 1)
} else n.set(t.uid, 1)
}), Dd(o), this._scheduler.performVisualTasks(o, a, {
setDirty: !0,
dirtyMap: n
}), Ld(r, o, s, a, n), kd(o, this._api)
}
},
updateView: function(t) {
var e = this._model;
e && (ec.markUpdateMethod(t, "updateView"), Dd(e), this._scheduler.performVisualTasks(e, t, {
setDirty: !0
}), Cd(this, this._model, this._api, t), kd(e, this._api))
},
updateVisual: function(t) {
_d.update.call(this, t)
},
updateLayout: function(t) {
_d.update.call(this, t)
}
};
function wd(t) {
var e = t._model,
i = t._scheduler;
i.restorePipelines(e), i.prepareStageTasks(), Td(t, "component", e, i), Td(t, "chart", e, i), i.plan()
}
function bd(e, i, n, a, t) {
var o = e._model;
if (a) {
var r = {};
r[a + "Id"] = n[a + "Id"], r[a + "Index"] = n[a + "Index"], r[a + "Name"] = n[a + "Name"];
var s = {
mainType: a,
query: r
};
t && (s.subType = t);
var l = n.excludeSeriesId;
null != l && (l = Q(wa(l))), o && o.eachComponent(s, function(t) {
l && null != l.get(t.id) || u(e["series" === a ? "_chartsMap" : "_componentsMap"][t.__viewId])
}, e)
} else sd(e._componentsViews.concat(e._chartsViews), u);
function u(t) {
t && t.__alive && t[i] && t[i](t.__model, o, e._api, n)
}
}
function Sd(t, e) {
var i = t._chartsMap,
n = t._scheduler;
e.eachSeries(function(t) {
n.updateStreamModes(t, i[t.__viewId])
})
}
function Md(e, t) {
var i = e.type,
n = e.escapeConnect,
a = Rd[i],
o = a.actionInfo,
r = (o.update || "update").split(":"),
s = r.pop();
r = null != r[0] && hd(r[0]), this[dd] = !0;
var l = [e],
u = !1;
e.batch && (u = !0, l = N(e.batch, function(t) {
return (t = C(L({}, t), e)).batch = null, t
}));
var h, c = [],
d = "highlight" === i || "downplay" === i;
sd(l, function(t) {
(h = (h = a.action(t, this._model, this._api)) || L({}, t)).type = o.event || h.type, c.push(h), d ? bd(this, s, t, "series") : r && bd(this, s, t, r.main, r.sub)
}, this), "none" === s || d || r || (this[fd] ? (wd(this), _d.update.call(this, e), this[fd] = !1) : _d[s].call(this, e)), h = u ? {
type: o.event || i,
escapeConnect: n,
batch: c
} : c[0], this[dd] = !1, t || this._messageCenter.trigger(h.type, h)
}
function Id(t) {
for (var e = this._pendingActions; e.length;) {
var i = e.shift();
Md.call(this, i, t)
}
}
function Ad(t) {
t || this.trigger("updated")
}
function Td(t, e, a, o) {
for (var r = "component" === e, s = r ? t._componentsViews : t._chartsViews, l = r ? t._componentsMap : t._chartsMap, u = t._zr, h = t._api, i = 0; i < s.length; i++) s[i].__alive = !1;
function n(t) {
var e = "_ec_" + t.id + "_" + t.type,
i = l[e];
if (!i) {
var n = hd(t.type);
(i = new(r ? Kh.getClass(n.main, n.sub) : ec.getClass(n.sub))).init(a, h), l[e] = i, s.push(i), u.add(i.group)
}
t.__viewId = i.__id = e, i.__alive = !0, i.__model = t, i.group.__ecComponentInfo = {
mainType: t.mainType,
index: t.componentIndex
}, r || o.prepareView(i, t, a, h)
}
r ? a.eachComponent(function(t, e) {
"series" !== t && n(e)
}) : a.eachSeries(n);
for (i = 0; i < s.length;) {
var c = s[i];
c.__alive ? i++ : (r || c.renderTask.dispose(), u.remove(c.group), c.dispose(a, h), s.splice(i, 1), delete l[c.__id], c.__id = c.group.__ecComponentInfo = null)
}
}
function Dd(t) {
t.clearColorPalette(), t.eachSeries(function(t) {
t.clearColorPalette()
})
}
function Cd(t, e, i, n) {
! function(t, i, n, a, e) {
sd(e || t._componentsViews, function(t) {
var e = t.__model;
t.render(e, i, n, a), Nd(e, t)
})
}(t, e, i, n), sd(t._chartsViews, function(t) {
t.__alive = !1
}), Ld(t, e, i, n), sd(t._chartsViews, function(t) {
t.__alive || t.remove(e, i)
})
}
function Ld(n, t, e, a, o) {
var r, s = n._scheduler;
t.eachSeries(function(t) {
var e = n._chartsMap[t.__viewId];
e.__alive = !0;
var i = e.renderTask;
s.updatePayload(i, a), o && o.get(t.uid) && i.dirty(), r |= i.perform(s.getPerformArgs(i)), e.group.silent = !!t.get("silent"), Nd(t, e),
function(t, e) {
var i = t.get("blendMode") || null;
e.group.traverse(function(t) {
t.isGroup || t.style.blend !== i && t.setStyle("blend", i), t.eachPendingDisplayable && t.eachPendingDisplayable(function(t) {
t.setStyle("blend", i)
})
})
}(t, e)
}), s.unfinished |= r,
function(i, t) {
var e = i._zr.storage,
n = 0;
e.traverse(function(t) {
n++
}), n > t.get("hoverLayerThreshold") && !v.node && t.eachSeries(function(t) {
if (!t.preventUsingHoverLayer) {
var e = i._chartsMap[t.__viewId];
e.__alive && e.group.traverse(function(t) {
t.useHoverLayer = !0
})
}
})
}(n, t), mc(n._zr.dom, t)
}
function kd(e, i) {
sd(Vd, function(t) {
t(e, i)
})
}
yd.resize = function(t) {
if (!this._disposed) {
this._zr.resize(t);
var e = this._model;
if (this._loadingFX && this._loadingFX.resize(), e) {
var i = e.resetOption("media"),
n = t && t.silent;
this[dd] = !0, i && wd(this), _d.update.call(this), this[dd] = !1, Id.call(this, n), Ad.call(this, n)
}
}
}, yd.showLoading = function(t, e) {
if (!this._disposed && (ud(t) && (e = t, t = ""), t = t || "default", this.hideLoading(), Wd[t])) {
var i = Wd[t](this._api, e),
n = this._zr;
this._loadingFX = i, n.add(i)
}
}, yd.hideLoading = function() {
this._disposed || (this._loadingFX && this._zr.remove(this._loadingFX), this._loadingFX = null)
}, yd.makeActionFromEvent = function(t) {
var e = L({}, t);
return e.type = zd[t.type], e
}, yd.dispatchAction = function(t, e) {
this._disposed || (ud(e) || (e = {
silent: !!e
}), Rd[t.type] && this._model && (this[dd] ? this._pendingActions.push(t) : (Md.call(this, t, e.silent), e.flush ? this._zr.flush(!0) : !1 !== e.flush && v.browser.weChat && this._throttledZrFlush(), Id.call(this, e.silent), Ad.call(this, e.silent))))
}, yd.appendData = function(t) {
if (!this._disposed) {
var e = t.seriesIndex;
this.getModel().getSeriesByIndex(e).appendData(t), this._scheduler.unfinished = !0
}
}, yd.on = gd("on", !1), yd.off = gd("off", !1), yd.one = gd("one", !1);
var Pd = ["click", "dblclick", "mouseover", "mouseout", "mousemove", "mousedown", "mouseup", "globalout", "contextmenu"];
function Nd(t, e) {
var i = t.get("z"),
n = t.get("zlevel");
e.group.traverse(function(t) {
"group" !== t.type && (null != i && (t.z = i), null != n && (t.zlevel = n))
})
}
function Od() {
this.eventInfo
}
yd._initEvents = function() {
sd(Pd, function(u) {
function t(t) {
var e, i = this.getModel(),
n = t.target;
if ("globalout" === u) e = {};
else if (n && null != n.dataIndex) {
var a = n.dataModel || i.getSeriesByIndex(n.seriesIndex);
e = a && a.getDataParams(n.dataIndex, n.dataType, n) || {}
} else n && n.eventData && (e = L({}, n.eventData));
if (e) {
var o = e.componentType,
r = e.componentIndex;
"markLine" !== o && "markPoint" !== o && "markArea" !== o || (o = "series", r = e.seriesIndex);
var s = o && null != r && i.getComponent(o, r),
l = s && this["series" === s.mainType ? "_chartsMap" : "_componentsMap"][s.__viewId];
e.event = t, e.type = u, this._ecEventProcessor.eventInfo = {
targetEl: n,
packedEvent: e,
model: s,
view: l
}, this.trigger(u, e)
}
}
t.zrEventfulCallAtLast = !0, this._zr.on(u, t, this)
}, this), sd(zd, function(t, e) {
this._messageCenter.on(e, function(t) {
this.trigger(e, t)
}, this)
}, this)
}, yd.isDisposed = function() {
return this._disposed
}, yd.clear = function() {
this._disposed || this.setOption({
series: []
}, !0)
}, yd.dispose = function() {
if (!this._disposed) {
this._disposed = !0, Oa(this.getDom(), Yd, "");
var e = this._api,
i = this._model;
sd(this._componentsViews, function(t) {
t.dispose(i, e)
}), sd(this._chartsViews, function(t) {
t.dispose(i, e)
}), this._zr.dispose(), delete Hd[this.id]
}
}, b(vd, Ct), Od.prototype = {
constructor: Od,
normalizeQuery: function(t) {
var s = {},
l = {},
u = {};
if (z(t)) {
var e = hd(t);
s.mainType = e.main || null, s.subType = e.sub || null
} else {
var h = ["Index", "Name", "Id"],
c = {
name: 1,
dataIndex: 1,
dataType: 1
};
O(t, function(t, e) {
for (var i = !1, n = 0; n < h.length; n++) {
var a = h[n],
o = e.lastIndexOf(a);
if (0 < o && o === e.length - a.length) {
var r = e.slice(0, o);
"data" !== r && (s.mainType = r, s[a.toLowerCase()] = t, i = !0)
}
}
c.hasOwnProperty(e) && (l[e] = t, i = !0), i || (u[e] = t)
})
}
return {
cptQuery: s,
dataQuery: l,
otherQuery: u
}
},
filter: function(t, e, i) {
var n = this.eventInfo;
if (!n) return !0;
var a = n.targetEl,
o = n.packedEvent,
r = n.model,
s = n.view;
if (!r || !s) return !0;
var l = e.cptQuery,
u = e.dataQuery;
return h(l, r, "mainType") && h(l, r, "subType") && h(l, r, "index", "componentIndex") && h(l, r, "name") && h(l, r, "id") && h(u, o, "name") && h(u, o, "dataIndex") && h(u, o, "dataType") && (!s.filterForExposedEvent || s.filterForExposedEvent(t, e.otherQuery, a, o));
function h(t, e, i, n) {
return null == t[i] || e[n || i] === t[i]
}
},
afterTrigger: function() {
this.eventInfo = null
}
};
var Rd = {},
zd = {},
Ed = [],
Bd = [],
Vd = [],
Gd = [],
Fd = {},
Wd = {},
Hd = {},
Zd = {},
Ud = new Date - 0,
Xd = new Date - 0,
Yd = "_echarts_instance_";
function jd(t) {
Zd[t] = !1
}
var qd = jd;
function Kd(t) {
return Hd[function(t, e) {
return t.getAttribute ? t.getAttribute(e) : t[e]
}(t, Yd)]
}
function $d(t, e) {
Fd[t] = e
}
function Jd(t) {
Bd.push(t)
}
function Qd(t, e) {
of (Ed, t, e, 1e3)
}
function tf(t, e, i) {
"function" == typeof e && (i = e, e = "");
var n = ud(t) ? t.type : [t, t = {
event: e
}][0];
t.event = (t.event || n).toLowerCase(), e = t.event, rd(pd.test(n) && pd.test(e)), Rd[n] || (Rd[n] = {
action: i,
actionInfo: t
}), zd[e] = n
}
function ef(t, e) {
Hu.register(t, e)
}
function nf(t, e) {
of (Gd, t, e, 1e3, "layout")
}
function af(t, e) {
of (Gd, t, e, 3e3, "visual")
}
function of (t, e, i, n, a) {
(ld(e) || ud(e)) && (i = e, e = n);
var o = yc.wrapStageHandler(i, a);
return o.__prio = e, o.__raw = i, t.push(o), o
}
function rf(t, e) {
Wd[t] = e
}
function sf(t) {
return fu.extend(t)
}
function lf(t) {
return Kh.extend(t)
}
function uf(t) {
return Wh.extend(t)
}
function hf(t) {
return ec.extend(t)
}
af(2e3, pc), Jd(ch), Qd(900, function(t) {
var o = Q();
t.eachSeries(function(t) {
var e = t.get("stack");
if (e) {
var i = o.get(e) || o.set(e, []),
n = t.getData(),
a = {
stackResultDimension: n.getCalculationInfo("stackResultDimension"),
stackedOverDimension: n.getCalculationInfo("stackedOverDimension"),
stackedDimension: n.getCalculationInfo("stackedDimension"),
stackedByDimension: n.getCalculationInfo("stackedByDimension"),
isStackedByIndex: n.getCalculationInfo("isStackedByIndex"),
data: n,
seriesModel: t
};
if (!a.stackedDimension || !a.isStackedByIndex && !a.stackedByDimension) return;
i.length && n.setCalculationInfo("stackedOnSeries", i[i.length - 1].seriesModel), i.push(a)
}
}), o.each(dh)
}), rf("default", function(n, t) {
C(t = t || {}, {
text: "loading",
color: "#c23531",
textColor: "#000",
maskColor: "rgba(255, 255, 255, 0.8)",
zlevel: 0
});
var a = new Hr({
style: {
fill: t.maskColor
},
zlevel: t.zlevel,
z: 1e4
}),
o = new Kr({
shape: {
startAngle: -vc / 2,
endAngle: -vc / 2 + .1,
r: 10
},
style: {
stroke: t.color,
lineCap: "round",
lineWidth: 5
},
zlevel: t.zlevel,
z: 10001
}),
r = new Hr({
style: {
fill: "none",
text: t.text,
textPosition: "right",
textDistance: 10,
textFill: t.textColor
},
zlevel: t.zlevel,
z: 10001
});
o.animateShape(!0).when(1e3, {
endAngle: 3 * vc / 2
}).start("circularInOut"), o.animateShape(!0).when(1e3, {
startAngle: 3 * vc / 2
}).delay(300).start("circularInOut");
var e = new Si;
return e.add(o), e.add(r), e.add(a), e.resize = function() {
var t = n.getWidth() / 2,
e = n.getHeight() / 2;
o.setShape({
cx: t,
cy: e
});
var i = o.shape.r;
r.setShape({
x: t - i,
y: e - i,
width: 2 * i,
height: 2 * i
}), a.setShape({
x: 0,
y: 0,
width: n.getWidth(),
height: n.getHeight()
})
}, e.resize(), e
}), tf({
type: "highlight",
event: "highlight",
update: "highlight"
}, et), tf({
type: "downplay",
event: "downplay",
update: "downplay"
}, et), $d("light", Bc), $d("dark", Fc);
function cf(t) {
return t
}
function df(t, e, i, n, a) {
this._old = t, this._new = e, this._oldKeyGetter = i || cf, this._newKeyGetter = n || cf, this.context = a
}
function ff(t, e, i, n, a) {
for (var o = 0; o < t.length; o++) {
var r = "_ec_" + a[n](t[o], o),
s = e[r];
null == s ? (i.push(r), e[r] = o) : (s.length || (e[r] = s = [s]), s.push(o))
}
}
df.prototype = {
constructor: df,
add: function(t) {
return this._add = t, this
},
update: function(t) {
return this._update = t, this
},
remove: function(t) {
return this._remove = t, this
},
execute: function() {
var t = this._old,
e = this._new,
i = {},
n = [],
a = [];
for (ff(t, {}, n, "_oldKeyGetter", this), ff(e, i, a, "_newKeyGetter", this), o = 0; o < t.length; o++) {
if (null != (s = i[r = n[o]]))(u = s.length) ? (1 === u && (i[r] = null), s = s.unshift()) : i[r] = null, this._update && this._update(s, o);
else this._remove && this._remove(o)
}
for (var o = 0; o < a.length; o++) {
var r = a[o];
if (i.hasOwnProperty(r)) {
var s;
if (null == (s = i[r])) continue;
if (s.length)
for (var l = 0, u = s.length; l < u; l++) this._add && this._add(s[l]);
else this._add && this._add(s)
}
}
}
};
var pf = Q(["tooltip", "label", "itemName", "itemId", "seriesName"]);
function gf(t, e) {
return t.hasOwnProperty(e) || (t[e] = []), t[e]
}
function mf(t) {
return "category" === t ? "ordinal" : "time" === t ? "time" : "float"
}
var vf = E,
yf = "undefined",
xf = {
float: typeof Float64Array == yf ? Array : Float64Array,
int: typeof Int32Array == yf ? Array : Int32Array,
ordinal: Array,
number: Array,
time: Array
},
_f = typeof Uint32Array == yf ? Array : Uint32Array,
wf = typeof Int32Array == yf ? Array : Int32Array,
bf = typeof Uint16Array == yf ? Array : Uint16Array;
function Sf(t) {
return 65535 < t._rawCount ? _f : bf
}
var Mf = ["hasItemOption", "_nameList", "_idList", "_invertedIndicesMap", "_rawData", "_chunkSize", "_chunkCount", "_dimValueGetter", "_count", "_rawCount", "_nameDimIdx", "_idDimIdx"],
If = ["_extent", "_approximateExtent", "_rawExtent"];
function Af(e, i) {
O(Mf.concat(i.__wrappedMethods || []), function(t) {
i.hasOwnProperty(t) && (e[t] = i[t])
}), e.__wrappedMethods = i.__wrappedMethods, O(If, function(t) {
e[t] = D(i[t])
}), e._calculationInfo = L(i._calculationInfo)
}
var Tf = function(t, e) {
t = t || ["x", "y"];
for (var i = {}, n = [], a = {}, o = 0; o < t.length; o++) {
var r = t[o];
z(r) && (r = {
name: r
});
var s = r.name;
r.type = r.type || "float", r.coordDim || (r.coordDim = s, r.coordDimIndex = 0), r.otherDims = r.otherDims || {}, n.push(s), (i[s] = r).index = o, r.createInvertedIndices && (a[s] = [])
}
this.dimensions = n, this._dimensionInfos = i, this.hostModel = e, this.dataType, this._indices = null, this._count = 0, this._rawCount = 0, this._storage = {}, this._nameList = [], this._idList = [], this._optionModels = [], this._visual = {}, this._layout = {}, this._itemVisuals = [], this.hasItemVisual = {}, this._itemLayouts = [], this._graphicEls = [], this._chunkSize = 1e5, this._chunkCount = 0, this._rawData, this._rawExtent = {}, this._extent = {}, this._approximateExtent = {}, this._dimensionsSummary = function(n) {
var t = {},
o = t.encode = {},
r = Q(),
s = [],
l = [],
u = t.userOutput = {
dimensionNames: n.dimensions.slice(),
encode: {}
};
O(n.dimensions, function(t) {
var a = n.getDimensionInfo(t),
e = a.coordDim;
if (e) {
var i = a.coordDimIndex;
gf(o, e)[i] = t, a.isExtraCoord || (r.set(e, 1), function(t) {
return !("ordinal" === t || "time" === t)
}(a.type) && (s[0] = t), gf(u.encode, e)[i] = a.index), a.defaultTooltip && l.push(t)
}
pf.each(function(t, e) {
var i = gf(o, e),
n = a.otherDims[e];
null != n && !1 !== n && (i[n] = a.name)
})
});
var a = [],
h = {};
r.each(function(t, e) {
var i = o[e];
h[e] = i[0], a = a.concat(i)
}), t.dataDimsOnCoord = a, t.encodeFirstDimNotExtra = h;
var e = o.label;
e && e.length && (s = e.slice());
var i = o.tooltip;
return i && i.length ? l = i.slice() : l.length || (l = s.slice()), o.defaultedLabel = s, o.defaultedTooltip = l, t
}(this), this._invertedIndicesMap = a, this._calculationInfo = {}, this.userOutput = this._dimensionsSummary.userOutput
},
Df = Tf.prototype;
function Cf(t, e, i, n, a) {
var o = xf[e.type],
r = n - 1,
s = e.name,
l = t[s][r];
if (l && l.length < i) {
for (var u = new o(Math.min(a - r * i, i)), h = 0; h < l.length; h++) u[h] = l[h];
t[s][r] = u
}
for (var c = n * i; c < a; c += i) t[s].push(new o(Math.min(a - c, i)))
}
function Lf(a) {
var o = a._invertedIndicesMap;
O(o, function(t, e) {
var i = a._dimensionInfos[e].ordinalMeta;
if (i) {
t = o[e] = new wf(i.categories.length);
for (var n = 0; n < t.length; n++) t[n] = -1;
for (n = 0; n < a._count; n++) t[a.get(e, n)] = n
}
})
}
function kf(t, e, i) {
var n;
if (null != e) {
var a = t._chunkSize,
o = Math.floor(i / a),
r = i % a,
s = t.dimensions[e],
l = t._storage[s][o];
if (l) {
n = l[r];
var u = t._dimensionInfos[s].ordinalMeta;
u && u.categories.length && (n = u.categories[n])
}
}
return n
}
function Pf(t) {
return t
}
function Nf(t) {
return t < this._count && 0 <= t ? this._indices[t] : -1
}
function Of(t, e) {
var i = t._idList[e];
return null == i && (i = kf(t, t._idDimIdx, e)), null == i && (i = "e\0\0" + e), i
}
function Rf(t) {
return k(t) || (t = [t]), t
}
function zf(t, e) {
var i = t.dimensions,
n = new Tf(N(i, t.getDimensionInfo, t), t.hostModel);
Af(n, t);
for (var a = n._storage = {}, o = t._storage, r = 0; r < i.length; r++) {
var s = i[r];
o[s] && (0 <= _(e, s) ? (a[s] = Ef(o[s]), n._rawExtent[s] = Bf(), n._extent[s] = null) : a[s] = o[s])
}
return n
}
function Ef(t) {
for (var e, i, n = new Array(t.length), a = 0; a < t.length; a++) n[a] = (e = t[a], i = void 0, (i = e.constructor) === Array ? e.slice() : new i(e));
return n
}
function Bf() {
return [1 / 0, -1 / 0]
}
Df.type = "list", Df.hasItemOption = !0, Df.getDimension = function(t) {
return "number" != typeof t && (isNaN(t) || this._dimensionInfos.hasOwnProperty(t)) || (t = this.dimensions[t]), t
}, Df.getDimensionInfo = function(t) {
return this._dimensionInfos[this.getDimension(t)]
}, Df.getDimensionsOnCoord = function() {
return this._dimensionsSummary.dataDimsOnCoord.slice()
}, Df.mapDimension = function(t, e) {
var i = this._dimensionsSummary;
if (null == e) return i.encodeFirstDimNotExtra[t];
var n = i.encode[t];
return !0 === e ? (n || []).slice() : n && n[e]
}, Df.initData = function(t, e, i) {
(Lu.isInstance(t) || P(t)) && (t = new fh(t, this.dimensions.length)), this._rawData = t, this._storage = {}, this._indices = null, this._nameList = e || [], this._idList = [], this._nameRepeatCount = {}, i || (this.hasItemOption = !1), this.defaultDimValueGetter = wh[this._rawData.getSource().sourceFormat], this._dimValueGetter = i = i || this.defaultDimValueGetter, this._dimValueGetterArrayRows = wh.arrayRows, this._rawExtent = {}, this._initDataFromProvider(0, t.count()), t.pure && (this.hasItemOption = !1)
}, Df.getProvider = function() {
return this._rawData
}, Df.appendData = function(t) {
var e = this._rawData,
i = this.count();
e.appendData(t);
var n = e.count();
e.persistent || (n += i), this._initDataFromProvider(i, n)
}, Df.appendValues = function(t, e) {
for (var i = this._chunkSize, n = this._storage, a = this.dimensions, o = a.length, r = this._rawExtent, s = this.count(), l = s + Math.max(t.length, e ? e.length : 0), u = this._chunkCount, h = 0; h < o; h++) {
r[v = a[h]] || (r[v] = Bf()), n[v] || (n[v] = []), Cf(n, this._dimensionInfos[v], i, u, l), this._chunkCount = n[v].length
}
for (var c = new Array(o), d = s; d < l; d++) {
for (var f = d - s, p = Math.floor(d / i), g = d % i, m = 0; m < o; m++) {
var v = a[m],
y = this._dimValueGetterArrayRows(t[f] || c, v, f, m);
n[v][p][g] = y;
var x = r[v];
y < x[0] && (x[0] = y), y > x[1] && (x[1] = y)
}
e && (this._nameList[d] = e[f])
}
this._rawCount = this._count = l, this._extent = {}, Lf(this)
}, Df._initDataFromProvider = function(t, e) {
if (!(e <= t)) {
for (var i, n = this._chunkSize, a = this._rawData, o = this._storage, r = this.dimensions, s = r.length, l = this._dimensionInfos, u = this._nameList, h = this._idList, c = this._rawExtent, d = this._nameRepeatCount = {}, f = this._chunkCount, p = 0; p < s; p++) {
c[w = r[p]] || (c[w] = Bf());
var g = l[w];
0 === g.otherDims.itemName && (i = this._nameDimIdx = p), 0 === g.otherDims.itemId && (this._idDimIdx = p), o[w] || (o[w] = []), Cf(o, g, n, f, e), this._chunkCount = o[w].length
}
for (var m = new Array(s), v = t; v < e; v++) {
m = a.getItem(v, m);
for (var y = Math.floor(v / n), x = v % n, _ = 0; _ < s; _++) {
var w, b = o[w = r[_]][y],
S = this._dimValueGetter(m, w, v, _);
b[x] = S;
var M = c[w];
S < M[0] && (M[0] = S), S > M[1] && (M[1] = S)
}
if (!a.pure) {
var I = u[v];
if (m && null == I)
if (null != m.name) u[v] = I = m.name;
else if (null != i) {
var A = r[i],
T = o[A][y];
if (T) {
I = T[x];
var D = l[A].ordinalMeta;
D && D.categories.length && (I = D.categories[I])
}
}
var C = null == m ? null : m.id;
null == C && null != I && (d[I] = d[I] || 0, 0 < d[C = I] && (C += "__ec__" + d[I]), d[I]++), null != C && (h[v] = C)
}
}!a.persistent && a.clean && a.clean(), this._rawCount = this._count = e, this._extent = {}, Lf(this)
}
}, Df.count = function() {
return this._count
}, Df.getIndices = function() {
var t = this._indices;
if (t) {
var e = t.constructor,
i = this._count;
if (e === Array) {
a = new e(i);
for (var n = 0; n < i; n++) a[n] = t[n]
} else a = new e(t.buffer, 0, i)
} else {
var a = new(e = Sf(this))(this.count());
for (n = 0; n < a.length; n++) a[n] = n
}
return a
}, Df.get = function(t, e) {
if (!(0 <= e && e < this._count)) return NaN;
var i = this._storage;
if (!i[t]) return NaN;
e = this.getRawIndex(e);
var n = Math.floor(e / this._chunkSize),
a = e % this._chunkSize;
return i[t][n][a]
}, Df.getByRawIndex = function(t, e) {
if (!(0 <= e && e < this._rawCount)) return NaN;
var i = this._storage[t];
if (!i) return NaN;
var n = Math.floor(e / this._chunkSize),
a = e % this._chunkSize;
return i[n][a]
}, Df._getFast = function(t, e) {
var i = Math.floor(e / this._chunkSize),
n = e % this._chunkSize;
return this._storage[t][i][n]
}, Df.getValues = function(t, e) {
var i = [];
k(t) || (e = t, t = this.dimensions);
for (var n = 0, a = t.length; n < a; n++) i.push(this.get(t[n], e));
return i
}, Df.hasValue = function(t) {
for (var e = this._dimensionsSummary.dataDimsOnCoord, i = 0, n = e.length; i < n; i++)
if (isNaN(this.get(e[i], t))) return !1;
return !0
}, Df.getDataExtent = function(t) {
t = this.getDimension(t);
var e = this._storage[t],
i = Bf();
if (!e) return i;
var n, a = this.count();
if (!this._indices) return this._rawExtent[t].slice();
if (n = this._extent[t]) return n.slice();
for (var o = (n = i)[0], r = n[1], s = 0; s < a; s++) {
var l = this._getFast(t, this.getRawIndex(s));
l < o && (o = l), r < l && (r = l)
}
return n = [o, r], this._extent[t] = n
}, Df.getApproximateExtent = function(t) {
return t = this.getDimension(t), this._approximateExtent[t] || this.getDataExtent(t)
}, Df.setApproximateExtent = function(t, e) {
e = this.getDimension(e), this._approximateExtent[e] = t.slice()
}, Df.getCalculationInfo = function(t) {
return this._calculationInfo[t]
}, Df.setCalculationInfo = function(t, e) {
vf(t) ? L(this._calculationInfo, t) : this._calculationInfo[t] = e
}, Df.getSum = function(t) {
var e = 0;
if (this._storage[t])
for (var i = 0, n = this.count(); i < n; i++) {
var a = this.get(t, i);
isNaN(a) || (e += a)
}
return e
}, Df.getMedian = function(t) {
var i = [];
this.each(t, function(t, e) {
isNaN(t) || i.push(t)
});
var e = [].concat(i).sort(function(t, e) {
return t - e
}),
n = this.count();
return 0 === n ? 0 : n % 2 == 1 ? e[(n - 1) / 2] : (e[n / 2] + e[n / 2 - 1]) / 2
}, Df.rawIndexOf = function(t, e) {
var i = (t && this._invertedIndicesMap[t])[e];
return null == i || isNaN(i) ? -1 : i
}, Df.indexOfName = function(t) {
for (var e = 0, i = this.count(); e < i; e++)
if (this.getName(e) === t) return e;
return -1
}, Df.indexOfRawIndex = function(t) {
if (!this._indices) return t;
if (t >= this._rawCount || t < 0) return -1;
var e = this._indices,
i = e[t];
if (null != i && i < this._count && i === t) return t;
for (var n = 0, a = this._count - 1; n <= a;) {
var o = (n + a) / 2 | 0;
if (e[o] < t) n = 1 + o;
else {
if (!(e[o] > t)) return o;
a = o - 1
}
}
return -1
}, Df.indicesOfNearest = function(t, e, i) {
var n = [];
if (!this._storage[t]) return n;
null == i && (i = 1 / 0);
for (var a = Number.MAX_VALUE, o = -1, r = 0, s = this.count(); r < s; r++) {
var l = e - this.get(t, r),
u = Math.abs(l);
l <= i && u <= a && ((u < a || 0 <= l && o < 0) && (a = u, o = l, n.length = 0), n.push(r))
}
return n
}, Df.getRawIndex = Pf, Df.getRawDataItem = function(t) {
if (this._rawData.persistent) return this._rawData.getItem(this.getRawIndex(t));
for (var e = [], i = 0; i < this.dimensions.length; i++) {
var n = this.dimensions[i];
e.push(this.get(n, t))
}
return e
}, Df.getName = function(t) {
var e = this.getRawIndex(t);
return this._nameList[e] || kf(this, this._nameDimIdx, e) || ""
}, Df.getId = function(t) {
return Of(this, this.getRawIndex(t))
}, Df.each = function(t, e, i, n) {
if (this._count) {
"function" == typeof t && (n = i, i = e, e = t, t = []), i = i || n || this;
for (var a = (t = N(Rf(t), this.getDimension, this)).length, o = 0; o < this.count(); o++) switch (a) {
case 0:
e.call(i, o);
break;
case 1:
e.call(i, this.get(t[0], o), o);
break;
case 2:
e.call(i, this.get(t[0], o), this.get(t[1], o), o);
break;
default:
for (var r = 0, s = []; r < a; r++) s[r] = this.get(t[r], o);
s[r] = o, e.apply(i, s)
}
}
}, Df.filterSelf = function(t, e, i, n) {
if (this._count) {
"function" == typeof t && (n = i, i = e, e = t, t = []), i = i || n || this, t = N(Rf(t), this.getDimension, this);
for (var a = this.count(), o = new(Sf(this))(a), r = [], s = t.length, l = 0, u = t[0], h = 0; h < a; h++) {
var c, d = this.getRawIndex(h);
if (0 === s) c = e.call(i, h);
else if (1 === s) {
var f = this._getFast(u, d);
c = e.call(i, f, h)
} else {
for (var p = 0; p < s; p++) r[p] = this._getFast(u, d);
r[p] = h, c = e.apply(i, r)
}
c && (o[l++] = d)
}
return l < a && (this._indices = o), this._count = l, this._extent = {}, this.getRawIndex = this._indices ? Nf : Pf, this
}
}, Df.selectRange = function(t) {
if (this._count) {
var e = [];
for (var i in t) t.hasOwnProperty(i) && e.push(i);
var n = e.length;
if (n) {
var a = this.count(),
o = new(Sf(this))(a),
r = 0,
s = e[0],
l = t[s][0],
u = t[s][1],
h = !1;
if (!this._indices) {
var c = 0;
if (1 === n) {
for (var d = this._storage[e[0]], f = 0; f < this._chunkCount; f++)
for (var p = d[f], g = Math.min(this._count - f * this._chunkSize, this._chunkSize), m = 0; m < g; m++) {
(l <= (w = p[m]) && w <= u || isNaN(w)) && (o[r++] = c), c++
}
h = !0
} else if (2 === n) {
d = this._storage[s];
var v = this._storage[e[1]],
y = t[e[1]][0],
x = t[e[1]][1];
for (f = 0; f < this._chunkCount; f++) {
p = d[f];
var _ = v[f];
for (g = Math.min(this._count - f * this._chunkSize, this._chunkSize), m = 0; m < g; m++) {
var w = p[m],
b = _[m];
(l <= w && w <= u || isNaN(w)) && (y <= b && b <= x || isNaN(b)) && (o[r++] = c), c++
}
}
h = !0
}
}
if (!h)
if (1 === n)
for (m = 0; m < a; m++) {
var S = this.getRawIndex(m);
(l <= (w = this._getFast(s, S)) && w <= u || isNaN(w)) && (o[r++] = S)
} else
for (m = 0; m < a; m++) {
var M = !0;
for (S = this.getRawIndex(m), f = 0; f < n; f++) {
var I = e[f];
((w = this._getFast(i, S)) < t[I][0] || w > t[I][1]) && (M = !1)
}
M && (o[r++] = this.getRawIndex(m))
}
return r < a && (this._indices = o), this._count = r, this._extent = {}, this.getRawIndex = this._indices ? Nf : Pf, this
}
}
}, Df.mapArray = function(t, e, i, n) {
"function" == typeof t && (n = i, i = e, e = t, t = []), i = i || n || this;
var a = [];
return this.each(t, function() {
a.push(e && e.apply(this, arguments))
}, i), a
}, Df.map = function(t, e, i, n) {
i = i || n || this;
var a = zf(this, t = N(Rf(t), this.getDimension, this));
a._indices = this._indices, a.getRawIndex = a._indices ? Nf : Pf;
for (var o = a._storage, r = [], s = this._chunkSize, l = t.length, u = this.count(), h = [], c = a._rawExtent, d = 0; d < u; d++) {
for (var f = 0; f < l; f++) h[f] = this.get(t[f], d);
h[l] = d;
var p = e && e.apply(i, h);
if (null != p) {
"object" != typeof p && (r[0] = p, p = r);
for (var g = this.getRawIndex(d), m = Math.floor(g / s), v = g % s, y = 0; y < p.length; y++) {
var x = t[y],
_ = p[y],
w = c[x],
b = o[x];
b && (b[m][v] = _), _ < w[0] && (w[0] = _), _ > w[1] && (w[1] = _)
}
}
}
return a
}, Df.downSample = function(t, e, i, n) {
for (var a = zf(this, [t]), o = a._storage, r = [], s = Math.floor(1 / e), l = o[t], u = this.count(), h = this._chunkSize, c = a._rawExtent[t], d = new(Sf(this))(u), f = 0, p = 0; p < u; p += s) {
u - p < s && (s = u - p, r.length = s);
for (var g = 0; g < s; g++) {
var m = this.getRawIndex(p + g),
v = Math.floor(m / h),
y = m % h;
r[g] = l[v][y]
}
var x = i(r),
_ = this.getRawIndex(Math.min(p + n(r, x) || 0, u - 1)),
w = _ % h;
(l[Math.floor(_ / h)][w] = x) < c[0] && (c[0] = x), x > c[1] && (c[1] = x), d[f++] = _
}
return a._count = f, a._indices = d, a.getRawIndex = Nf, a
}, Df.getItemModel = function(t) {
var e = this.hostModel;
return new dl(this.getRawDataItem(t), e, e && e.ecModel)
}, Df.diff = function(e) {
var i = this;
return new df(e ? e.getIndices() : [], this.getIndices(), function(t) {
return Of(e, t)
}, function(t) {
return Of(i, t)
})
}, Df.getVisual = function(t) {
var e = this._visual;
return e && e[t]
}, Df.setVisual = function(t, e) {
if (vf(t))
for (var i in t) t.hasOwnProperty(i) && this.setVisual(i, t[i]);
else this._visual = this._visual || {}, this._visual[t] = e
}, Df.setLayout = function(t, e) {
if (vf(t))
for (var i in t) t.hasOwnProperty(i) && this.setLayout(i, t[i]);
else this._layout[t] = e
}, Df.getLayout = function(t) {
return this._layout[t]
}, Df.getItemLayout = function(t) {
return this._itemLayouts[t]
}, Df.setItemLayout = function(t, e, i) {
this._itemLayouts[t] = i ? L(this._itemLayouts[t] || {}, e) : e
}, Df.clearItemLayouts = function() {
this._itemLayouts.length = 0
}, Df.getItemVisual = function(t, e, i) {
var n = this._itemVisuals[t],
a = n && n[e];
return null != a || i ? a : this.getVisual(e)
}, Df.setItemVisual = function(t, e, i) {
var n = this._itemVisuals[t] || {},
a = this.hasItemVisual;
if (this._itemVisuals[t] = n, vf(e))
for (var o in e) e.hasOwnProperty(o) && (n[o] = e[o], a[o] = !0);
else n[e] = i, a[e] = !0
}, Df.clearAllVisual = function() {
this._visual = {}, this._itemVisuals = [], this.hasItemVisual = {}
};
function Vf(t) {
t.seriesIndex = this.seriesIndex, t.dataIndex = this.dataIndex, t.dataType = this.dataType
}
function Gf(t, e, i) {
Lu.isInstance(e) || (e = Lu.seriesDataToSource(e)), i = i || {}, t = (t || []).slice();
for (var n = (i.dimsDef || []).slice(), l = Q(i.encodeDef), a = Q(), o = Q(), u = [], r = function(t, e, i, n) {
var a = Math.max(t.dimensionsDetectCount || 1, e.length, i.length, n || 0);
return O(e, function(t) {
var e = t.dimsDef;
e && (a = Math.max(a, e.length))
}), a
}(e, t, n, i.dimCount), s = 0; s < r; s++) {
var h = n[s] = L({}, E(n[s]) ? n[s] : {
name: n[s]
}),
c = h.name,
d = u[s] = {
otherDims: {}
};
null != c && null == a.get(c) && (d.name = d.displayName = c, a.set(c, s)), null != h.type && (d.type = h.type), null != h.displayName && (d.displayName = h.displayName)
}
l.each(function(t, i) {
if (1 === (t = wa(t).slice()).length && !z(t[0]) && t[0] < 0) l.set(i, !1);
else {
var n = l.set(i, []);
O(t, function(t, e) {
z(t) && (t = a.get(t)), null != t && t < r && (n[e] = t, p(u[t], i, e))
})
}
});
var f = 0;
function p(t, e, i) {
null != pf.get(e) ? t.otherDims[e] = i : (t.coordDim = e, t.coordDimIndex = i, o.set(e, !0))
}
O(t, function(a, t) {
var o, r, s;
if (z(a)) o = a, a = {};
else {
o = a.name;
var e = a.ordinalMeta;
a.ordinalMeta = null, (a = D(a)).ordinalMeta = e, r = a.dimsDef, s = a.otherDims, a.name = a.coordDim = a.coordDimIndex = a.dimsDef = a.otherDims = null
}
if (!1 !== (i = l.get(o))) {
var i;
if (!(i = wa(i)).length)
for (var n = 0; n < (r && r.length || 1); n++) {
for (; f < u.length && null != u[f].coordDim;) f++;
f < u.length && i.push(f++)
}
O(i, function(t, e) {
var i = u[t];
if (p(C(i, a), o, e), null == i.name && r) {
var n = r[e];
E(n) || (n = {
name: n
}), i.name = i.displayName = n.name, i.defaultTooltip = n.defaultTooltip
}
s && C(i.otherDims, s)
})
}
});
var g = i.generateCoord,
m = i.generateCoordCount,
v = null != m;
m = g ? m || 1 : 0;
for (var y, x, _ = g || "value", w = 0; w < r; w++) {
null == (d = u[w] = u[w] || {}).coordDim && (d.coordDim = Ff(_, o, v), d.coordDimIndex = 0, (!g || m <= 0) && (d.isExtraCoord = !0), m--), null == d.name && (d.name = Ff(d.coordDim, a)), null == d.type && (y = e, x = w, d.name, Ru(y.data, y.sourceFormat, y.seriesLayoutBy, y.dimensionsDefine, y.startIndex, x)) && (d.type = "ordinal")
}
return u
}
function Ff(t, e, i) {
if (i || null != e.get(t)) {
for (var n = 0; null != e.get(t + n);) n++;
t += n
}
return e.set(t, !0), t
}
Df.setItemGraphicEl = function(t, e) {
var i = this.hostModel;
e && (e.dataIndex = t, e.dataType = this.dataType, e.seriesIndex = i && i.seriesIndex, "group" === e.type && e.traverse(Vf, e)), this._graphicEls[t] = e
}, Df.getItemGraphicEl = function(t) {
return this._graphicEls[t]
}, Df.eachItemGraphicEl = function(i, n) {
O(this._graphicEls, function(t, e) {
t && i && i.call(n, t, e)
})
}, Df.cloneShallow = function(t) {
if (!t) {
var e = N(this.dimensions, this.getDimensionInfo, this);
t = new Tf(e, this.hostModel)
}
if (t._storage = this._storage, Af(t, this), this._indices) {
var i = this._indices.constructor;
t._indices = new i(this._indices)
} else t._indices = null;
return t.getRawIndex = t._indices ? Nf : Pf, t
}, Df.wrapMethod = function(t, e) {
var i = this[t];
"function" == typeof i && (this.__wrappedMethods = this.__wrappedMethods || [], this.__wrappedMethods.push(t), this[t] = function() {
var t = i.apply(this, arguments);
return e.apply(this, [t].concat(U(arguments)))
})
}, Df.TRANSFERABLE_METHODS = ["cloneShallow", "downSample", "map"], Df.CHANGABLE_METHODS = ["filterSelf", "selectRange"];
var Wf = function(t, e) {
return Gf((e = e || {}).coordDimensions || [], t, {
dimsDef: e.dimensionsDefine || t.dimensionsDefine,
encodeDef: e.encodeDefine || t.encodeDefine,
dimCount: e.dimensionsCount,
generateCoord: e.generateCoord,
generateCoordCount: e.generateCoordCount
})
};
function Hf(t, i, e) {
var n, a, o, r, s = (e = e || {}).byIndex,
l = e.stackedCoordDimension,
u = !(!t || !t.get("stack"));
if (O(i, function(t, e) {
z(t) && (i[e] = t = {
name: t
}), u && !t.isExtraCoord && (s || n || !t.ordinalMeta || (n = t), a || "ordinal" === t.type || "time" === t.type || l && l !== t.coordDim || (a = t))
}), !a || s || n || (s = !0), a) {
o = "__\0ecstackresult", r = "__\0ecstackedover", n && (n.createInvertedIndices = !0);
var h = a.coordDim,
c = a.type,
d = 0;
O(i, function(t) {
t.coordDim === h && d++
}), i.push({
name: o,
coordDim: h,
coordDimIndex: d,
type: c,
isExtraCoord: !0,
isCalculationCoord: !0
}), d++, i.push({
name: r,
coordDim: r,
coordDimIndex: d,
type: c,
isExtraCoord: !0,
isCalculationCoord: !0
})
}
return {
stackedDimension: a && a.name,
stackedByDimension: n && n.name,
isStackedByIndex: s,
stackedOverDimension: r,
stackResultDimension: o
}
}
function Zf(t, e) {
return !!e && e === t.getCalculationInfo("stackedDimension")
}
function Uf(t, e) {
return Zf(t, e) ? t.getCalculationInfo("stackResultDimension") : e
}
function Xf(t, e, i) {
i = i || {}, Lu.isInstance(t) || (t = Lu.seriesDataToSource(t));
var n, a = e.get("coordinateSystem"),
o = Hu.get(a),
r = xu(e);
r && (n = N(r.coordSysDims, function(t) {
var e = {
name: t
},
i = r.axisMap.get(t);
if (i) {
var n = i.get("type");
e.type = mf(n)
}
return e
})), n = n || (o && (o.getDimensionsInfo ? o.getDimensionsInfo() : o.dimensions.slice()) || ["x", "y"]);
var s, l, u = Wf(t, {
coordDimensions: n,
generateCoord: i.generateCoord
});
r && O(u, function(t, e) {
var i = t.coordDim,
n = r.categoryAxisMap.get(i);
n && (null == s && (s = e), t.ordinalMeta = n.getOrdinalMeta()), null != t.otherDims.itemName && (l = !0)
}), l || null == s || (u[s].otherDims.itemName = 0);
var h = Hf(e, u),
c = new Tf(u, e);
c.setCalculationInfo(h);
var d = null != s && function(t) {
if (t.sourceFormat === bu) {
var e = function(t) {
var e = 0;
for (; e < t.length && null == t[e];) e++;
return t[e]
}(t.data || []);
return null != e && !k(Ma(e))
}
}(t) ? function(t, e, i, n) {
return n === s ? i : this.defaultDimValueGetter(t, e, i, n)
} : null;
return c.hasItemOption = !1, c.initData(t, null, d), c
}
function Yf(t) {
this._setting = t || {}, this._extent = [1 / 0, -1 / 0], this._interval = 0, this.init && this.init.apply(this, arguments)
}
function jf(t) {
this.categories = t.categories || [], this._needCollect = t.needCollect, this._deduplication = t.deduplication, this._map
}
Yf.prototype.parse = function(t) {
return t
}, Yf.prototype.getSetting = function(t) {
return this._setting[t]
}, Yf.prototype.contain = function(t) {
var e = this._extent;
return t >= e[0] && t <= e[1]
}, Yf.prototype.normalize = function(t) {
var e = this._extent;
return e[1] === e[0] ? .5 : (t - e[0]) / (e[1] - e[0])
}, Yf.prototype.scale = function(t) {
var e = this._extent;
return t * (e[1] - e[0]) + e[0]
}, Yf.prototype.unionExtent = function(t) {
var e = this._extent;
t[0] < e[0] && (e[0] = t[0]), t[1] > e[1] && (e[1] = t[1])
}, Yf.prototype.unionExtentFromData = function(t, e) {
this.unionExtent(t.getApproximateExtent(e))
}, Yf.prototype.getExtent = function() {
return this._extent.slice()
}, Yf.prototype.setExtent = function(t, e) {
var i = this._extent;
isNaN(t) || (i[0] = t), isNaN(e) || (i[1] = e)
}, Yf.prototype.isBlank = function() {
return this._isBlank
}, Yf.prototype.setBlank = function(t) {
this._isBlank = t
}, Yf.prototype.getLabel = null, Ga(Yf), Ua(Yf, {
registerWhenExtend: !0
}), jf.createByAxisModel = function(t) {
var e = t.option,
i = e.data,
n = i && N(i, $f);
return new jf({
categories: n,
needCollect: !n,
deduplication: !1 !== e.dedplication
})
};
var qf = jf.prototype;
function Kf(t) {
return t._map || (t._map = Q(t.categories))
}
function $f(t) {
return E(t) && null != t.value ? t.value : t + ""
}
qf.getOrdinal = function(t) {
return Kf(this).get(t)
}, qf.parseAndCollect = function(t) {
var e, i = this._needCollect;
if ("string" != typeof t && !i) return t;
if (i && !this._deduplication) return e = this.categories.length, this.categories[e] = t, e;
var n = Kf(this);
return null == (e = n.get(t)) && (i ? (e = this.categories.length, this.categories[e] = t, n.set(t, e)) : e = NaN), e
};
var Jf = Yf.prototype,
Qf = Yf.extend({
type: "ordinal",
init: function(t, e) {
t && !k(t) || (t = new jf({
categories: t
})), this._ordinalMeta = t, this._extent = e || [0, t.categories.length - 1]
},
parse: function(t) {
return "string" == typeof t ? this._ordinalMeta.getOrdinal(t) : Math.round(t)
},
contain: function(t) {
return t = this.parse(t), Jf.contain.call(this, t) && null != this._ordinalMeta.categories[t]
},
normalize: function(t) {
return Jf.normalize.call(this, this.parse(t))
},
scale: function(t) {
return Math.round(Jf.scale.call(this, t))
},
getTicks: function() {
for (var t = [], e = this._extent, i = e[0]; i <= e[1];) t.push(i), i++;
return t
},
getLabel: function(t) {
if (!this.isBlank()) return this._ordinalMeta.categories[t]
},
count: function() {
return this._extent[1] - this._extent[0] + 1
},
unionExtentFromData: function(t, e) {
this.unionExtent(t.getApproximateExtent(e))
},
getOrdinalMeta: function() {
return this._ordinalMeta
},
niceTicks: et,
niceExtent: et
});
Qf.create = function() {
return new Qf
};
var tp = _l;
function ep(t) {
return Sl(t) + 2
}
function ip(t, e, i) {
t[e] = Math.max(Math.min(t[e], i[1]), i[0])
}
function np(t, e) {
isFinite(t[0]) || (t[0] = e[0]), isFinite(t[1]) || (t[1] = e[1]), ip(t, 0, e), ip(t, 1, e), t[0] > t[1] && (t[0] = t[1])
}
var ap = _l,
op = Yf.extend({
type: "interval",
_interval: 0,
_intervalPrecision: 2,
setExtent: function(t, e) {
var i = this._extent;
isNaN(t) || (i[0] = parseFloat(t)), isNaN(e) || (i[1] = parseFloat(e))
},
unionExtent: function(t) {
var e = this._extent;
t[0] < e[0] && (e[0] = t[0]), t[1] > e[1] && (e[1] = t[1]), op.prototype.setExtent.call(this, e[0], e[1])
},
getInterval: function() {
return this._interval
},
setInterval: function(t) {
this._interval = t, this._niceExtent = this._extent.slice(), this._intervalPrecision = ep(t)
},
getTicks: function() {
return function(t, e, i, n) {
var a = [];
if (!t) return a;
e[0] < i[0] && a.push(e[0]);
for (var o = i[0]; o <= i[1] && (a.push(o), (o = tp(o + t, n)) !== a[a.length - 1]);)
if (1e4 < a.length) return [];
return e[1] > (a.length ? a[a.length - 1] : i[1]) && a.push(e[1]), a
}(this._interval, this._extent, this._niceExtent, this._intervalPrecision)
},
getLabel: function(t, e) {
if (null == t) return "";
var i = e && e.precision;
return null == i ? i = Sl(t) || 0 : "auto" === i && (i = this._intervalPrecision), El(t = ap(t, i, !0))
},
niceTicks: function(t, e, i) {
t = t || 5;
var n = this._extent,
a = n[1] - n[0];
if (isFinite(a)) {
a < 0 && (a = -a, n.reverse());
var o = function(t, e, i, n) {
var a = {},
o = t[1] - t[0],
r = a.interval = Nl(o / e, !0);
null != i && r < i && (r = a.interval = i), null != n && n < r && (r = a.interval = n);
var s = a.intervalPrecision = ep(r);
return np(a.niceTickExtent = [tp(Math.ceil(t[0] / r) * r, s), tp(Math.floor(t[1] / r) * r, s)], t), a
}(n, t, e, i);
this._intervalPrecision = o.intervalPrecision, this._interval = o.interval, this._niceExtent = o.niceTickExtent
}
},
niceExtent: function(t) {
var e = this._extent;
if (e[0] === e[1])
if (0 !== e[0]) {
var i = e[0];
t.fixMax || (e[1] += i / 2), e[0] -= i / 2
} else e[1] = 1;
var n = e[1] - e[0];
isFinite(n) || (e[0] = 0, e[1] = 1), this.niceTicks(t.splitNumber, t.minInterval, t.maxInterval);
var a = this._interval;
t.fixMin || (e[0] = ap(Math.floor(e[0] / a) * a)), t.fixMax || (e[1] = ap(Math.ceil(e[1] / a) * a))
}
});
op.create = function() {
return new op
};
var rp = "__ec_stack_",
sp = "undefined" != typeof Float32Array ? Float32Array : Array;
function lp(t) {
return t.get("stack") || rp + t.seriesIndex
}
function up(t) {
return t.dim + t.index
}
function hp(t, e) {
var i = [];
return e.eachSeriesByType(t, function(t) {
mp(t) && !vp(t) && i.push(t)
}), i
}
function cp(t) {
var u = [];
return O(t, function(t) {
var e = t.getData(),
i = t.coordinateSystem.getBaseAxis(),
n = i.getExtent(),
a = "category" === i.type ? i.getBandWidth() : Math.abs(n[1] - n[0]) / e.count(),
o = xl(t.get("barWidth"), a),
r = xl(t.get("barMaxWidth"), a),
s = t.get("barGap"),
l = t.get("barCategoryGap");
u.push({
bandWidth: a,
barWidth: o,
barMaxWidth: r,
barGap: s,
barCategoryGap: l,
axisKey: up(i),
stackId: lp(t)
})
}), dp(u)
}
function dp(t) {
var c = {};
O(t, function(t, e) {
var i = t.axisKey,
n = t.bandWidth,
a = c[i] || {
bandWidth: n,
remainedWidth: n,
autoWidthCount: 0,
categoryGap: "20%",
gap: "30%",
stacks: {}
},
o = a.stacks;
c[i] = a;
var r = t.stackId;
o[r] || a.autoWidthCount++, o[r] = o[r] || {
width: 0,
maxWidth: 0
};
var s = t.barWidth;
s && !o[r].width && (o[r].width = s, s = Math.min(a.remainedWidth, s), a.remainedWidth -= s);
var l = t.barMaxWidth;
l && (o[r].maxWidth = l);
var u = t.barGap;
null != u && (a.gap = u);
var h = t.barCategoryGap;
null != h && (a.categoryGap = h)
});
var d = {};
return O(c, function(t, i) {
d[i] = {};
var e = t.stacks,
n = t.bandWidth,
a = xl(t.categoryGap, n),
o = xl(t.gap, 1),
r = t.remainedWidth,
s = t.autoWidthCount,
l = (r - a) / (s + (s - 1) * o);
l = Math.max(l, 0), O(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 - a) / (s + (s - 1) * o), l = Math.max(l, 0);
var u, h = 0;
O(e, function(t, e) {
t.width || (t.width = l), h += (u = t).width * (1 + o)
}), u && (h -= u.width * o);
var c = -h / 2;
O(e, function(t, e) {
d[i][e] = d[i][e] || {
bandWidth: n,
offset: c,
width: t.width
}, c += t.width * (1 + o)
})
}), d
}
function fp(t, e, i) {
if (t && e) {
var n = t[up(e)];
return null != n && null != i && (n = n[lp(i)]), n
}
}
function pp(t, e) {
var i = hp(t, e),
A = cp(i),
T = {};
O(i, function(t) {
var e = t.getData(),
i = t.coordinateSystem,
n = i.getBaseAxis(),
a = lp(t),
o = A[up(n)][a],
r = o.offset,
s = o.width,
l = i.getOtherAxis(n),
u = t.get("barMinHeight") || 0;
T[a] = T[a] || [], e.setLayout({
bandWidth: o.bandWidth,
offset: r,
size: s
});
for (var h = e.mapDimension(l.dim), c = e.mapDimension(n.dim), d = Zf(e, h), f = l.isHorizontal(), p = yp(n, l, d), g = 0, m = e.count(); g < m; g++) {
var v = e.get(h, g),
y = e.get(c, g);
if (!isNaN(v) && !isNaN(y)) {
var x, _, w, b, S, M = 0 <= v ? "p" : "n",
I = p;
if (d && (T[a][y] || (T[a][y] = {
p: p,
n: p
}), I = T[a][y][M]), f) x = I, _ = (S = i.dataToPoint([v, y]))[1] + r, w = S[0] - p, b = s, Math.abs(w) < u && (w = (w < 0 ? -1 : 1) * u), d && (T[a][y][M] += w);
else x = (S = i.dataToPoint([y, v]))[0] + r, _ = I, w = s, b = S[1] - p, Math.abs(b) < u && (b = (b <= 0 ? -1 : 1) * u), d && (T[a][y][M] += b);
e.setItemLayout(g, {
x: x,
y: _,
width: w,
height: b
})
}
}
}, this)
}
var gp = {
seriesType: "bar",
plan: Jh(),
reset: function(t) {
if (mp(t) && vp(t)) {
var e = t.getData(),
h = t.coordinateSystem,
c = h.getBaseAxis(),
d = h.getOtherAxis(c),
f = e.mapDimension(d.dim),
p = e.mapDimension(c.dim),
g = d.isHorizontal(),
m = g ? 0 : 1,
v = fp(cp([t]), c, t).width;
return .5 < v || (v = .5), {
progress: function(t, e) {
var i, n = t.count,
a = new sp(2 * n),
o = new sp(n),
r = [],
s = [],
l = 0,
u = 0;
for (; null != (i = t.next());) s[m] = e.get(f, i), s[1 - m] = e.get(p, i), r = h.dataToPoint(s, null, r), a[l++] = r[0], a[l++] = r[1], o[u++] = i;
e.setLayout({
largePoints: a,
largeDataIndices: o,
barWidth: v,
valueAxisStart: yp(c, d, !1),
valueAxisHorizontal: g
})
}
}
}
}
};
function mp(t) {
return t.coordinateSystem && "cartesian2d" === t.coordinateSystem.type
}
function vp(t) {
return t.pipelineContext && t.pipelineContext.large
}
function yp(t, e) {
return e.toGlobalCoord(e.dataToCoord(0))
}
var xp = op.prototype,
_p = Math.ceil,
wp = Math.floor,
bp = 36e5,
Sp = 864e5,
Mp = op.extend({
type: "time",
getLabel: function(t) {
var e = this._stepLvl,
i = new Date(t);
return ql(e[0], i, this.getSetting("useUTC"))
},
niceExtent: function(t) {
var e = this._extent;
if (e[0] === e[1] && (e[0] -= Sp, e[1] += Sp), e[1] === -1 / 0 && e[0] === 1 / 0) {
var i = new Date;
e[1] = +new Date(i.getFullYear(), i.getMonth(), i.getDate()), e[0] = e[1] - Sp
}
this.niceTicks(t.splitNumber, t.minInterval, t.maxInterval);
var n = this._interval;
t.fixMin || (e[0] = _l(wp(e[0] / n) * n)), t.fixMax || (e[1] = _l(_p(e[1] / n) * n))
},
niceTicks: function(t, e, i) {
t = t || 10;
var n = this._extent,
a = n[1] - n[0],
o = a / t;
null != e && o < e && (o = e), null != i && i < o && (o = i);
var r = Ip.length,
s = function(t, e, i, n) {
for (; i < n;) {
var a = i + n >>> 1;
t[a][1] < e ? i = 1 + a : n = a
}
return i
}(Ip, o, 0, r),
l = Ip[Math.min(s, r - 1)],
u = l[1];
"year" === l[0] && (u *= Nl(a / u / t, !0));
var h = this.getSetting("useUTC") ? 0 : 60 * new Date(+n[0] || +n[1]).getTimezoneOffset() * 1e3,
c = [Math.round(_p((n[0] - h) / u) * u + h), Math.round(wp((n[1] - h) / u) * u + h)];
np(c, n), this._stepLvl = l, this._interval = u, this._niceExtent = c
},
parse: function(t) {
return +Ll(t)
}
});
O(["contain", "normalize"], function(e) {
Mp.prototype[e] = function(t) {
return xp[e].call(this, this.parse(t))
}
});
var Ip = [
["hh:mm:ss", 1e3],
["hh:mm:ss", 5e3],
["hh:mm:ss", 1e4],
["hh:mm:ss", 15e3],
["hh:mm:ss", 3e4],
["hh:mm\nMM-dd", 6e4],
["hh:mm\nMM-dd", 3e5],
["hh:mm\nMM-dd", 6e5],
["hh:mm\nMM-dd", 9e5],
["hh:mm\nMM-dd", 18e5],
["hh:mm\nMM-dd", bp],
["hh:mm\nMM-dd", 72e5],
["hh:mm\nMM-dd", 6 * bp],
["hh:mm\nMM-dd", 432e5],
["MM-dd\nyyyy", Sp],
["MM-dd\nyyyy", 2 * Sp],
["MM-dd\nyyyy", 3 * Sp],
["MM-dd\nyyyy", 4 * Sp],
["MM-dd\nyyyy", 5 * Sp],
["MM-dd\nyyyy", 6 * Sp],
["week", 7 * Sp],
["MM-dd\nyyyy", 864e6],
["week", 14 * Sp],
["week", 21 * Sp],
["month", 31 * Sp],
["week", 42 * Sp],
["month", 62 * Sp],
["week", 70 * Sp],
["quarter", 95 * Sp],
["month", 31 * Sp * 4],
["month", 13392e6],
["half-year", 16416e6],
["month", 31 * Sp * 8],
["month", 26784e6],
["year", 380 * Sp]
];
Mp.create = function(t) {
return new Mp({
useUTC: t.ecModel.get("useUTC")
})
};
var Ap = Yf.prototype,
Tp = op.prototype,
Dp = Sl,
Cp = _l,
Lp = Math.floor,
kp = Math.ceil,
Pp = Math.pow,
Np = Math.log,
Op = Yf.extend({
type: "log",
base: 10,
$constructor: function() {
Yf.apply(this, arguments), this._originalScale = new op
},
getTicks: function() {
var i = this._originalScale,
n = this._extent,
a = i.getExtent();
return N(Tp.getTicks.call(this), function(t) {
var e = _l(Pp(this.base, t));
return e = t === n[0] && i.__fixMin ? Rp(e, a[0]) : e, e = t === n[1] && i.__fixMax ? Rp(e, a[1]) : e
}, this)
},
getLabel: Tp.getLabel,
scale: function(t) {
return t = Ap.scale.call(this, t), Pp(this.base, t)
},
setExtent: function(t, e) {
var i = this.base;
t = Np(t) / Np(i), e = Np(e) / Np(i), Tp.setExtent.call(this, t, e)
},
getExtent: function() {
var t = this.base,
e = Ap.getExtent.call(this);
e[0] = Pp(t, e[0]), e[1] = Pp(t, e[1]);
var i = this._originalScale,
n = i.getExtent();
return i.__fixMin && (e[0] = Rp(e[0], n[0])), i.__fixMax && (e[1] = Rp(e[1], n[1])), e
},
unionExtent: function(t) {
this._originalScale.unionExtent(t);
var e = this.base;
t[0] = Np(t[0]) / Np(e), t[1] = Np(t[1]) / Np(e), Ap.unionExtent.call(this, t)
},
unionExtentFromData: function(t, e) {
this.unionExtent(t.getApproximateExtent(e))
},
niceTicks: function(t) {
t = t || 10;
var e = this._extent,
i = e[1] - e[0];
if (!(i == 1 / 0 || i <= 0)) {
var n = kl(i);
for (t / i * n <= .5 && (n *= 10); !isNaN(n) && Math.abs(n) < 1 && 0 < Math.abs(n);) n *= 10;
var a = [_l(kp(e[0] / n) * n), _l(Lp(e[1] / n) * n)];
this._interval = n, this._niceExtent = a
}
},
niceExtent: function(t) {
Tp.niceExtent.call(this, t);
var e = this._originalScale;
e.__fixMin = t.fixMin, e.__fixMax = t.fixMax
}
});
function Rp(t, e) {
return Cp(t, Dp(e))
}
function zp(t, e) {
var i, n, a, o = t.type,
r = e.getMin(),
s = e.getMax(),
l = null != r,
u = null != s,
h = t.getExtent();
"ordinal" === o ? i = e.getCategories().length : (k(n = e.get("boundaryGap")) || (n = [n || 0, n || 0]), "boolean" == typeof n[0] && (n = [0, 0]), n[0] = xl(n[0], 1), n[1] = xl(n[1], 1), a = h[1] - h[0] || Math.abs(h[0])), null == r && (r = "ordinal" === o ? i ? 0 : NaN : h[0] - n[0] * a), null == s && (s = "ordinal" === o ? i ? i - 1 : NaN : h[1] + n[1] * a), "dataMin" === r ? r = h[0] : "function" == typeof r && (r = r({
min: h[0],
max: h[1]
})), "dataMax" === s ? s = h[1] : "function" == typeof s && (s = s({
min: h[0],
max: h[1]
})), null != r && isFinite(r) || (r = NaN), null != s && isFinite(s) || (s = NaN), t.setBlank(F(r) || F(s) || "ordinal" === o && !t.getOrdinalMeta().categories.length), e.getNeedCrossZero() && (0 < r && 0 < s && !l && (r = 0), r < 0 && s < 0 && !u && (s = 0));
var c = e.ecModel;
if (c && "time" === o) {
var d, f = hp("bar", c);
if (O(f, function(t) {
d |= t.getBaseAxis() === e.axis
}), d) {
var p = cp(f),
g = function(t, e, i, n) {
var a = i.axis.getExtent(),
o = a[1] - a[0],
r = fp(n, i.axis);
if (void 0 === r) return {
min: t,
max: e
};
var s = 1 / 0;
O(r, function(t) {
s = Math.min(t.offset, s)
});
var l = -1 / 0;
O(r, function(t) {
l = Math.max(t.offset + t.width, l)
}), s = Math.abs(s), l = Math.abs(l);
var u = s + l,
h = e - t,
c = h / (1 - (s + l) / o) - h;
return {
min: t -= s / u * c,
max: e += l / u * c
}
}(r, s, e, p);
r = g.min, s = g.max
}
}
return [r, s]
}
function Ep(t, e) {
var i = zp(t, e),
n = null != e.getMin(),
a = null != e.getMax(),
o = e.get("splitNumber");
"log" === t.type && (t.base = e.get("logBase"));
var r = t.type;
t.setExtent(i[0], i[1]), t.niceExtent({
splitNumber: o,
fixMin: n,
fixMax: a,
minInterval: "interval" === r || "time" === r ? e.get("minInterval") : null,
maxInterval: "interval" === r || "time" === r ? e.get("maxInterval") : null
});
var s = e.get("interval");
null != s && t.setInterval && t.setInterval(s)
}
function Bp(t, e) {
if (e = e || t.get("type")) switch (e) {
case "category":
return new Qf(t.getOrdinalMeta ? t.getOrdinalMeta() : t.getCategories(), [1 / 0, -1 / 0]);
case "value":
return new op;
default:
return (Yf.getClass(e) || op).create(t)
}
}
function Vp(i) {
var e, n = i.getLabelModel().get("formatter"),
a = "category" === i.type ? i.scale.getExtent()[0] : null;
return "string" == typeof n ? (e = n, n = function(t) {
return t = i.scale.getLabel(t), e.replace("{value}", null != t ? t : "")
}) : "function" == typeof n ? function(t, e) {
return null != a && (e = t - a), n(Gp(i, t), e)
} : function(t) {
return i.scale.getLabel(t)
}
}
function Gp(t, e) {
return "category" === t.type ? t.scale.getLabel(e) : e
}
function Fp(t) {
var e = t.get("interval");
return null == e ? "auto" : e
}
function Wp(t) {
return "category" === t.type && 0 === Fp(t.getLabelModel())
}
O(["contain", "normalize"], function(e) {
Op.prototype[e] = function(t) {
return t = Np(t) / Np(this.base), Ap[e].call(this, t)
}
}), Op.create = function() {
return new Op
};
var Hp = {
getMin: function(t) {
var e = this.option,
i = t || null == e.rangeStart ? e.min : e.rangeStart;
return this.axis && null != i && "dataMin" !== i && "function" != typeof i && !F(i) && (i = this.axis.scale.parse(i)), i
},
getMax: function(t) {
var e = this.option,
i = t || null == e.rangeEnd ? e.max : e.rangeEnd;
return this.axis && null != i && "dataMax" !== i && "function" != typeof i && !F(i) && (i = this.axis.scale.parse(i)), i
},
getNeedCrossZero: function() {
var t = this.option;
return null == t.rangeStart && null == t.rangeEnd && !t.scale
},
getCoordSysModel: et,
setRange: function(t, e) {
this.option.rangeStart = t, this.option.rangeEnd = e
},
resetRange: function() {
this.option.rangeStart = this.option.rangeEnd = null
}
},
Zp = ds({
type: "triangle",
shape: {
cx: 0,
cy: 0,
width: 0,
height: 0
},
buildPath: function(t, e) {
var i = e.cx,
n = e.cy,
a = e.width / 2,
o = e.height / 2;
t.moveTo(i, n - o), t.lineTo(i + a, n + o), t.lineTo(i - a, n + o), t.closePath()
}
}),
Up = ds({
type: "diamond",
shape: {
cx: 0,
cy: 0,
width: 0,
height: 0
},
buildPath: function(t, e) {
var i = e.cx,
n = e.cy,
a = e.width / 2,
o = e.height / 2;
t.moveTo(i, n - o), t.lineTo(i + a, n), t.lineTo(i, n + o), t.lineTo(i - a, n), t.closePath()
}
}),
Xp = ds({
type: "pin",
shape: {
x: 0,
y: 0,
width: 0,
height: 0
},
buildPath: function(t, e) {
var i = e.x,
n = e.y,
a = e.width / 5 * 3,
o = Math.max(a, e.height),
r = a / 2,
s = r * r / (o - r),
l = n - o + r + s,
u = Math.asin(s / r),
h = Math.cos(u) * r,
c = Math.sin(u),
d = Math.cos(u),
f = .6 * r,
p = .7 * r;
t.moveTo(i - h, l + s), t.arc(i, l, r, Math.PI - u, 2 * Math.PI + u), t.bezierCurveTo(i + h - c * f, l + s + d * f, i, n - p, i, n), t.bezierCurveTo(i, n - p, i - h + c * f, l + s + d * f, i - h, l + s), t.closePath()
}
}),
Yp = ds({
type: "arrow",
shape: {
x: 0,
y: 0,
width: 0,
height: 0
},
buildPath: function(t, e) {
var i = e.height,
n = e.width,
a = e.x,
o = e.y,
r = n / 3 * 2;
t.moveTo(a, o), t.lineTo(a + r, o + i), t.lineTo(a, o + i / 4 * 3), t.lineTo(a - r, o + i), t.lineTo(a, o), t.closePath()
}
}),
jp = {
line: function(t, e, i, n, a) {
a.x1 = t, a.y1 = e + n / 2, a.x2 = t + i, a.y2 = e + n / 2
},
rect: function(t, e, i, n, a) {
a.x = t, a.y = e, a.width = i, a.height = n
},
roundRect: function(t, e, i, n, a) {
a.x = t, a.y = e, a.width = i, a.height = n, a.r = Math.min(i, n) / 4
},
square: function(t, e, i, n, a) {
var o = Math.min(i, n);
a.x = t, a.y = e, a.width = o, a.height = o
},
circle: function(t, e, i, n, a) {
a.cx = t + i / 2, a.cy = e + n / 2, a.r = Math.min(i, n) / 2
},
diamond: function(t, e, i, n, a) {
a.cx = t + i / 2, a.cy = e + n / 2, a.width = i, a.height = n
},
pin: function(t, e, i, n, a) {
a.x = t + i / 2, a.y = e + n / 2, a.width = i, a.height = n
},
arrow: function(t, e, i, n, a) {
a.x = t + i / 2, a.y = e + n / 2, a.width = i, a.height = n
},
triangle: function(t, e, i, n, a) {
a.cx = t + i / 2, a.cy = e + n / 2, a.width = i, a.height = n
}
},
qp = {};
O({
line: Ur,
rect: Hr,
roundRect: Hr,
square: Hr,
circle: Lr,
diamond: Up,
pin: Xp,
arrow: Yp,
triangle: Zp
}, function(t, e) {
qp[e] = new t
});
var Kp = ds({
type: "symbol",
shape: {
symbolType: "",
x: 0,
y: 0,
width: 0,
height: 0
},
calculateTextPosition: function(t, e, i) {
var n = dn(t, e, i),
a = this.shape;
return a && "pin" === a.symbolType && "inside" === e.textPosition && (n.y = i.y + .4 * i.height), n
},
buildPath: function(t, e, i) {
var n = e.symbolType;
if ("none" !== n) {
var a = qp[n];
a = a || qp[n = "rect"], jp[n](e.x, e.y, e.width, e.height, a.shape), a.buildPath(t, a.shape, i)
}
}
});
function $p(t, e) {
if ("image" !== this.type) {
var i = this.style,
n = this.shape;
n && "line" === n.symbolType ? i.stroke = t : this.__isEmptyBrush ? (i.stroke = t, i.fill = e || "#fff") : (i.fill && (i.fill = t), i.stroke && (i.stroke = t)), this.dirty(!1)
}
}
function Jp(t, e, i, n, a, o, r) {
var s, l = 0 === t.indexOf("empty");
return l && (t = t.substr(5, 1).toLowerCase() + t.substr(6)), (s = 0 === t.indexOf("image://") ? ms(t.slice(8), new bi(e, i, n, a), r ? "center" : "cover") : 0 === t.indexOf("path://") ? gs(t.slice(7), {}, new bi(e, i, n, a), r ? "center" : "cover") : new Kp({
shape: {
symbolType: t,
x: e,
y: i,
width: n,
height: a
}
})).__isEmptyBrush = l, s.setColor = $p, s.setColor(o), s
}
var Qp = {
isDimensionStacked: Zf,
enableDataStack: Hf,
getStackedDimension: Uf
};
var tg = (Object.freeze || Object)({
createList: function(t) {
return Xf(t.getSource(), t)
},
getLayoutRect: au,
dataStack: Qp,
createScale: function(t, e) {
var i = e;
dl.isInstance(e) || b(i = new dl(e), Hp);
var n = Bp(i);
return n.setExtent(t[0], t[1]), Ep(n, i), n
},
mixinAxisModelCommonMethods: function(t) {
b(t, Hp)
},
completeDimensions: Gf,
createDimensions: Wf,
createSymbol: Jp
}),
eg = 1e-8;
function ig(t, e) {
return Math.abs(t - e) < eg
}
function ng(t, e, i) {
var n = 0,
a = t[0];
if (!a) return !1;
for (var o = 1; o < t.length; o++) {
var r = t[o];
n += $o(a[0], a[1], r[0], r[1], e, i), a = r
}
var s = t[0];
return ig(a[0], s[0]) && ig(a[1], s[1]) || (n += $o(a[0], a[1], s[0], s[1], e, i)), 0 !== n
}
function ag(t, e, i) {
if (this.name = t, this.geometries = e, i) i = [i[0], i[1]];
else {
var n = this.getBoundingRect();
i = [n.x + n.width / 2, n.y + n.height / 2]
}
this.center = i
}
function og(t, e, i) {
for (var n = [], a = e[0], o = e[1], r = 0; r < t.length; r += 2) {
var s = t.charCodeAt(r) - 64,
l = t.charCodeAt(r + 1) - 64;
s = s >> 1 ^ -(1 & s), l = l >> 1 ^ -(1 & l), a = s += a, o = l += o, n.push([s / i, l / i])
}
return n
}
ag.prototype = {
constructor: ag,
properties: null,
getBoundingRect: function() {
var t = this._rect;
if (t) return t;
for (var e = Number.MAX_VALUE, i = [e, e], n = [-e, -e], a = [], o = [], r = this.geometries, s = 0; s < r.length; s++) {
if ("polygon" === r[s].type) Io(r[s].exterior, a, o), St(i, i, a), Mt(n, n, o)
}
return 0 === s && (i[0] = i[1] = n[0] = n[1] = 0), this._rect = new bi(i[0], i[1], n[0] - i[0], n[1] - i[1])
},
contain: function(t) {
var e = this.getBoundingRect(),
i = this.geometries;
if (!e.contain(t[0], t[1])) return !1;
t: for (var n = 0, a = i.length; n < a; n++)
if ("polygon" === i[n].type) {
var o = i[n].exterior,
r = i[n].interiors;
if (ng(o, t[0], t[1])) {
for (var s = 0; s < (r ? r.length : 0); s++)
if (ng(r[s])) continue t;
return !0
}
}
return !1
},
transformTo: function(t, e, i, n) {
var a = this.getBoundingRect(),
o = a.width / a.height;
i ? n = n || i / o : i = o * n;
for (var r = new bi(t, e, i, n), s = a.calculateTransform(r), l = this.geometries, u = 0; u < l.length; u++)
if ("polygon" === l[u].type) {
for (var h = l[u].exterior, c = l[u].interiors, d = 0; d < h.length; d++) bt(h[d], h[d], s);
for (var f = 0; f < (c ? c.length : 0); f++)
for (d = 0; d < c[f].length; d++) bt(c[f][d], c[f][d], s)
}(a = this._rect). copy(r), this.center = [a.x + a.width / 2, a.y + a.height / 2]
},
cloneShallow: function(t) {
null == t && (t = this.name);
var e = new ag(t, this.geometries, this.center);
return e._rect = this._rect, e.transformTo = null, e
}
};
function rg(t) {
return function(t) {
if (!t.UTF8Encoding) return;
var e = t.UTF8Scale;
null == e && (e = 1024);
for (var i = t.features, n = 0; n < i.length; n++)
for (var a = i[n].geometry, o = a.coordinates, r = a.encodeOffsets, s = 0; s < o.length; s++) {
var l = o[s];
if ("Polygon" === a.type) o[s] = og(l, r[s], e);
else if ("MultiPolygon" === a.type)
for (var u = 0; u < l.length; u++) {
var h = l[u];
l[u] = og(h, r[s][u], e)
}
}
t.UTF8Encoding = !1
}(t), N(M(t.features, function(t) {
return t.geometry && t.properties && 0 < t.geometry.coordinates.length
}), function(t) {
var e = t.properties,
i = t.geometry,
n = i.coordinates,
a = [];
"Polygon" === i.type && a.push({
type: "polygon",
exterior: n[0],
interiors: n.slice(1)
}), "MultiPolygon" === i.type && O(n, function(t) {
t[0] && a.push({
type: "polygon",
exterior: t[0],
interiors: t.slice(1)
})
});
var o = new ag(e.name, a, e.cp);
return o.properties = e, o
})
}
var sg = La();
function lg(t) {
return "category" === t.type ? function(t) {
var e = t.getLabelModel(),
i = hg(t, e);
return !e.get("show") || t.scale.isBlank() ? {
labels: [],
labelCategoryInterval: i.labelCategoryInterval
} : i
}(t) : function(i) {
var t = i.scale.getTicks(),
n = Vp(i);
return {
labels: N(t, function(t, e) {
return {
formattedLabel: n(t, e),
rawLabel: i.scale.getLabel(t),
tickValue: t
}
})
}
}(t)
}
function ug(t, e) {
return "category" === t.type ? function(t, e) {
var i, n, a = cg(t, "ticks"),
o = Fp(e),
r = dg(a, o);
if (r) return r;
e.get("show") && !t.scale.isBlank() || (i = []);
if (R(o)) i = gg(t, o, !0);
else if ("auto" === o) {
var s = hg(t, t.getLabelModel());
n = s.labelCategoryInterval, i = N(s.labels, function(t) {
return t.tickValue
})
} else i = pg(t, n = o, !0);
return fg(a, o, {
ticks: i,
tickCategoryInterval: n
})
}(t, e) : {
ticks: t.scale.getTicks()
}
}
function hg(t, e) {
var i, n = cg(t, "labels"),
a = Fp(e),
o = dg(n, a);
return o || fg(n, a, {
labels: R(a) ? gg(t, a) : pg(t, i = "auto" === a ? function(t) {
var e = sg(t).autoInterval;
return null != e ? e : sg(t).autoInterval = t.calculateCategoryInterval()
}(t) : a),
labelCategoryInterval: i
})
}
function cg(t, e) {
return sg(t)[e] || (sg(t)[e] = [])
}
function dg(t, e) {
for (var i = 0; i < t.length; i++)
if (t[i].key === e) return t[i].value
}
function fg(t, e, i) {
return t.push({
key: e,
value: i
}), i
}
function pg(t, e, i) {
var n = Vp(t),
a = t.scale,
o = a.getExtent(),
r = t.getLabelModel(),
s = [],
l = Math.max((e || 0) + 1, 1),
u = o[0],
h = a.count();
0 !== u && 1 < l && 2 < h / l && (u = Math.round(Math.ceil(u / l) * l));
var c = Wp(t),
d = r.get("showMinLabel") || c,
f = r.get("showMaxLabel") || c;
d && u !== o[0] && g(o[0]);
for (var p = u; p <= o[1]; p += l) g(p);
function g(t) {
s.push(i ? t : {
formattedLabel: n(t),
rawLabel: a.getLabel(t),
tickValue: t
})
}
return f && p - l !== o[1] && g(o[1]), s
}
function gg(t, i, n) {
var a = t.scale,
o = Vp(t),
r = [];
return O(a.getTicks(), function(t) {
var e = a.getLabel(t);
i(t, e) && r.push(n ? t : {
formattedLabel: o(t),
rawLabel: e,
tickValue: t
})
}), r
}
var mg = [0, 1],
vg = function(t, e, i) {
this.dim = t, this.scale = e, this._extent = i || [0, 0], this.inverse = !1, this.onBand = !1
};
function yg(t, e) {
var i = (t[1] - t[0]) / e / 2;
t[0] += i, t[1] -= i
}
vg.prototype = {
constructor: vg,
contain: function(t) {
var e = this._extent,
i = Math.min(e[0], e[1]),
n = Math.max(e[0], e[1]);
return i <= t && t <= n
},
containData: function(t) {
return this.contain(this.dataToCoord(t))
},
getExtent: function() {
return this._extent.slice()
},
getPixelPrecision: function(t) {
return Ml(t || this.scale.getExtent(), this._extent)
},
setExtent: function(t, e) {
var i = this._extent;
i[0] = t, i[1] = e
},
dataToCoord: function(t, e) {
var i = this._extent,
n = this.scale;
return t = n.normalize(t), this.onBand && "ordinal" === n.type && yg(i = i.slice(), n.count()), yl(t, mg, i, e)
},
coordToData: function(t, e) {
var i = this._extent,
n = this.scale;
this.onBand && "ordinal" === n.type && yg(i = i.slice(), n.count());
var a = yl(t, i, mg, e);
return this.scale.scale(a)
},
pointToData: function(t, e) {},
getTicksCoords: function(t) {
var e = (t = t || {}).tickModel || this.getTickModel(),
i = ug(this, e),
n = N(i.ticks, function(t) {
return {
coord: this.dataToCoord(t),
tickValue: t
}
}, this),
a = e.get("alignWithLabel");
return function(t, e, i, n, a) {
var o = e.length;
if (!t.onBand || n || !o) return;
var r, s = t.getExtent();
if (1 === o) e[0].coord = s[0], r = e[1] = {
coord: s[0]
};
else {
var l = e[1].coord - e[0].coord;
O(e, function(t) {
t.coord -= l / 2;
var e = e || 0;
0 < e % 2 && (t.coord -= l / (2 * (e + 1)))
}), r = {
coord: e[o - 1].coord + l
}, e.push(r)
}
var u = s[0] > s[1];
h(e[0].coord, s[0]) && (a ? e[0].coord = s[0] : e.shift());
a && h(s[0], e[0].coord) && e.unshift({
coord: s[0]
});
h(s[1], r.coord) && (a ? r.coord = s[1] : e.pop());
a && h(r.coord, s[1]) && e.push({
coord: s[1]
});
function h(t, e) {
return u ? e < t : t < e
}
}(this, n, i.tickCategoryInterval, a, t.clamp), n
},
getViewLabels: function() {
return lg(this).labels
},
getLabelModel: function() {
return this.model.getModel("axisLabel")
},
getTickModel: function() {
return this.model.getModel("axisTick")
},
getBandWidth: function() {
var t = this._extent,
e = this.scale.getExtent(),
i = e[1] - e[0] + (this.onBand ? 1 : 0);
0 === i && (i = 1);
var n = Math.abs(t[1] - t[0]);
return Math.abs(n) / i
},
isHorizontal: null,
getRotate: null,
calculateCategoryInterval: function() {
return function(t) {
var e = function(t) {
var e = t.getLabelModel();
return {
axisRotate: t.getRotate ? t.getRotate() : t.isHorizontal && !t.isHorizontal() ? 90 : 0,
labelRotate: e.get("rotate") || 0,
font: e.getFont()
}
}(t),
i = Vp(t),
n = (e.axisRotate - e.labelRotate) / 180 * Math.PI,
a = t.scale,
o = a.getExtent(),
r = a.count();
if (o[1] - o[0] < 1) return 0;
var s = 1;
40 < r && (s = Math.max(1, Math.floor(r / 40)));
for (var l = o[0], u = t.dataToCoord(l + 1) - t.dataToCoord(l), h = Math.abs(u * Math.cos(n)), c = Math.abs(u * Math.sin(n)), d = 0, f = 0; l <= o[1]; l += s) {
var p, g, m = un(i(l), e.font, "center", "top");
p = 1.3 * m.width, g = 1.3 * m.height, d = Math.max(d, p, 7), f = Math.max(f, g, 7)
}
var v = d / h,
y = f / c;
isNaN(v) && (v = 1 / 0), isNaN(y) && (y = 1 / 0);
var x = Math.max(0, Math.floor(Math.min(v, y))),
_ = sg(t.model),
w = _.lastAutoInterval,
b = _.lastTickCount;
return null != w && null != b && Math.abs(w - x) <= 1 && Math.abs(b - r) <= 1 && x < w ? x = w : (_.lastTickCount = r, _.lastAutoInterval = x), x
}(this)
}
};
var xg = rg,
_g = {};
O(["map", "each", "filter", "indexOf", "inherits", "reduce", "filter", "bind", "curry", "isArray", "isString", "isObject", "isFunction", "extend", "defaults", "clone", "merge"], function(t) {
_g[t] = it[t]
});
var wg = {};
function bg(t, e) {
var i = t.mapDimension("defaultedLabel", !0),
n = i.length;
if (1 === n) return Mh(t, e, i[0]);
if (n) {
for (var a = [], o = 0; o < i.length; o++) {
var r = Mh(t, e, i[o]);
a.push(r)
}
return a.join(" ")
}
}
function Sg(t, e, i) {
Si.call(this), this.updateData(t, e, i)
}
O(["extendShape", "extendPath", "makePath", "makeImage", "mergePath", "resizePath", "createIcon", "setHoverStyle", "setLabelStyle", "setTextStyle", "setText", "getFont", "updateProps", "initProps", "getTransform", "clipPointsByRect", "clipRectByRect", "registerShape", "getShapeClass", "Group", "Image", "Text", "Circle", "Sector", "Ring", "Polygon", "Polyline", "Rect", "Line", "BezierCurve", "Arc", "IncrementalDisplayable", "CompoundPath", "LinearGradient", "RadialGradient", "BoundingRect"], function(t) {
wg[t] = ol[t]
}), Wh.extend({
type: "series.line",
dependencies: ["grid", "polar"],
getInitialData: function(t, e) {
return Xf(this.getSource(), this)
},
defaultOption: {
zlevel: 0,
z: 2,
coordinateSystem: "cartesian2d",
legendHoverLink: !0,
hoverAnimation: !0,
clip: !0,
label: {
position: "top"
},
lineStyle: {
width: 2,
type: "solid"
},
step: !1,
smooth: !1,
smoothMonotone: null,
symbol: "emptyCircle",
symbolSize: 4,
symbolRotate: null,
showSymbol: !0,
showAllSymbol: "auto",
connectNulls: !1,
sampling: "none",
animationEasing: "linear",
progressive: 0,
hoverLayerThreshold: 1 / 0
}
});
var Mg = Sg.prototype,
Ig = Sg.getSymbolSize = function(t, e) {
var i = t.getItemVisual(e, "symbolSize");
return i instanceof Array ? i.slice() : [+i, +i]
};
function Ag(t) {
return [t[0] / 2, t[1] / 2]
}
function Tg(t, e) {
this.parent.drift(t, e)
}
Mg._createSymbol = function(t, e, i, n, a) {
this.removeAll();
var o = Jp(t, -1, -1, 2, 2, e.getItemVisual(i, "color"), a);
o.attr({
z2: 100,
culling: !0,
scale: Ag(n)
}), o.drift = Tg, this._symbolType = t, this.add(o)
}, Mg.stopSymbolAnimation = function(t) {
this.childAt(0).stopAnimation(t)
}, Mg.getSymbolPath = function() {
return this.childAt(0)
}, Mg.getScale = function() {
return this.childAt(0).scale
}, Mg.highlight = function() {
this.childAt(0).trigger("emphasis")
}, Mg.downplay = function() {
this.childAt(0).trigger("normal")
}, Mg.setZ = function(t, e) {
var i = this.childAt(0);
i.zlevel = t, i.z = e
}, Mg.setDraggable = function(t) {
var e = this.childAt(0);
e.draggable = t, e.cursor = t ? "move" : e.cursor
}, Mg.updateData = function(t, e, i) {
this.silent = !1;
var n = t.getItemVisual(e, "symbol") || "circle",
a = t.hostModel,
o = Ig(t, e),
r = n !== this._symbolType;
if (r) {
var s = t.getItemVisual(e, "symbolKeepAspect");
this._createSymbol(n, t, e, o, s)
} else {
(l = this.childAt(0)).silent = !1, js(l, {
scale: Ag(o)
}, a, e)
}
if (this._updateCommon(t, e, o, i), r) {
var l = this.childAt(0),
u = i && i.fadeIn,
h = {
scale: l.scale.slice()
};
u && (h.style = {
opacity: l.style.opacity
}), l.scale = [0, 0], u && (l.style.opacity = 0), qs(l, h, a, e)
}
this._seriesModel = a
};
var Dg = ["itemStyle"],
Cg = ["emphasis", "itemStyle"],
Lg = ["label"],
kg = ["emphasis", "label"];
function Pg(t, e) {
if (!this.incremental && !this.useHoverLayer)
if ("emphasis" === e) {
var i = this.__symbolOriginalScale,
n = i[1] / i[0],
a = {
scale: [Math.max(1.1 * i[0], i[0] + 3), Math.max(1.1 * i[1], i[1] + 3 * n)]
};
this.animateTo(a, 400, "elasticOut")
} else "normal" === e && this.animateTo({
scale: this.__symbolOriginalScale
}, 400, "elasticOut")
}
function Ng(t) {
this.group = new Si, this._symbolCtor = t || Sg
}
Mg._updateCommon = function(i, t, e, n) {
var a = this.childAt(0),
o = i.hostModel,
r = i.getItemVisual(t, "color");
"image" !== a.type && a.useStyle({
strokeNoScale: !0
});
var s = n && n.itemStyle,
l = n && n.hoverItemStyle,
u = n && n.symbolRotate,
h = n && n.symbolOffset,
c = n && n.labelModel,
d = n && n.hoverLabelModel,
f = n && n.hoverAnimation,
p = n && n.cursorStyle;
if (!n || i.hasItemOption) {
var g = n && n.itemModel ? n.itemModel : i.getItemModel(t);
s = g.getModel(Dg).getItemStyle(["color"]), l = g.getModel(Cg).getItemStyle(), u = g.getShallow("symbolRotate"), h = g.getShallow("symbolOffset"), c = g.getModel(Lg), d = g.getModel(kg), f = g.getShallow("hoverAnimation"), p = g.getShallow("cursor")
} else l = L({}, l);
var m = a.style;
a.attr("rotation", (u || 0) * Math.PI / 180 || 0), h && a.attr("position", [xl(h[0], e[0]), xl(h[1], e[1])]), p && a.attr("cursor", p), a.setColor(r, n && n.symbolInnerColor), a.setStyle(s);
var v = i.getItemVisual(t, "opacity");
null != v && (m.opacity = v);
var y = i.getItemVisual(t, "liftZ"),
x = a.__z2Origin;
null != y ? null == x && (a.__z2Origin = a.z2, a.z2 += y) : null != x && (a.z2 = x, a.__z2Origin = null);
var _ = n && n.useNameLabel;
Bs(m, l, c, d, {
labelFetcher: o,
labelDataIndex: t,
defaultText: function(t, e) {
return _ ? i.getName(t) : bg(i, t)
},
isRectText: !0,
autoColor: r
}), a.__symbolOriginalScale = Ag(e), a.hoverStyle = l, a.highDownOnUpdate = f && o.isAnimationEnabled() ? Pg : null, Os(a)
}, Mg.fadeOut = function(t, e) {
var i = this.childAt(0);
this.silent = i.silent = !0, e && e.keepLabel || (i.style.text = null), js(i, {
style: {
opacity: 0
},
scale: [0, 0]
}, this._seriesModel, this.dataIndex, t)
}, w(Sg, Si);
var Og = Ng.prototype;
function Rg(t, e, i, n) {
return e && !isNaN(e[0]) && !isNaN(e[1]) && !(n.isIgnore && n.isIgnore(i)) && !(n.clipShape && !n.clipShape.contain(e[0], e[1])) && "none" !== t.getItemVisual(i, "symbol")
}
function zg(t) {
return null == t || E(t) || (t = {
isIgnore: t
}), t || {}
}
function Eg(t) {
var e = t.hostModel;
return {
itemStyle: e.getModel("itemStyle").getItemStyle(["color"]),
hoverItemStyle: e.getModel("emphasis.itemStyle").getItemStyle(),
symbolRotate: e.get("symbolRotate"),
symbolOffset: e.get("symbolOffset"),
hoverAnimation: e.get("hoverAnimation"),
labelModel: e.getModel("label"),
hoverLabelModel: e.getModel("emphasis.label"),
cursorStyle: e.get("cursor")
}
}
function Bg(t, e, i) {
var n, a = t.getBaseAxis(),
o = t.getOtherAxis(a),
r = function(t, e) {
var i = 0,
n = t.scale.getExtent();
"start" === e ? i = n[0] : "end" === e ? i = n[1] : 0 < n[0] ? i = n[0] : n[1] < 0 && (i = n[1]);
return i
}(o, i),
s = a.dim,
l = o.dim,
u = e.mapDimension(l),
h = e.mapDimension(s),
c = "x" === l || "radius" === l ? 1 : 0,
d = N(t.dimensions, function(t) {
return e.mapDimension(t)
}),
f = e.getCalculationInfo("stackResultDimension");
return (n |= Zf(e, d[0])) && (d[0] = f), (n |= Zf(e, d[1])) && (d[1] = f), {
dataDimsForPoint: d,
valueStart: r,
valueAxisDim: l,
baseAxisDim: s,
stacked: !!n,
valueDim: u,
baseDim: h,
baseDataOffset: c,
stackedOverDimension: e.getCalculationInfo("stackedOverDimension")
}
}
function Vg(t, e, i, n) {
var a = NaN;
t.stacked && (a = i.get(i.getCalculationInfo("stackedOverDimension"), n)), isNaN(a) && (a = t.valueStart);
var o = t.baseDataOffset,
r = [];
return r[o] = i.get(t.baseDim, n), r[1 - o] = a, e.dataToPoint(r)
}
Og.updateData = function(a, o) {
o = zg(o);
var r = this.group,
s = a.hostModel,
l = this._data,
u = this._symbolCtor,
h = Eg(a);
l || r.removeAll(), a.diff(l).add(function(t) {
var e = a.getItemLayout(t);
if (Rg(a, e, t, o)) {
var i = new u(a, t, h);
i.attr("position", e), a.setItemGraphicEl(t, i), r.add(i)
}
}).update(function(t, e) {
var i = l.getItemGraphicEl(e),
n = a.getItemLayout(t);
Rg(a, n, t, o) ? (i ? (i.updateData(a, t, h), js(i, {
position: n
}, s)) : (i = new u(a, t)).attr("position", n), r.add(i), a.setItemGraphicEl(t, i)) : r.remove(i)
}).remove(function(t) {
var e = l.getItemGraphicEl(t);
e && e.fadeOut(function() {
r.remove(e)
})
}).execute(), this._data = a
}, Og.isPersistent = function() {
return !0
}, Og.updateLayout = function() {
var n = this._data;
n && n.eachItemGraphicEl(function(t, e) {
var i = n.getItemLayout(e);
t.attr("position", i)
})
}, Og.incrementalPrepareUpdate = function(t) {
this._seriesScope = Eg(t), this._data = null, this.group.removeAll()
}, Og.incrementalUpdate = function(t, e, i) {
function n(t) {
t.isGroup || (t.incremental = t.useHoverLayer = !0)
}
i = zg(i);
for (var a = t.start; a < t.end; a++) {
var o = e.getItemLayout(a);
if (Rg(e, o, a, i)) {
var r = new this._symbolCtor(e, a, this._seriesScope);
r.traverse(n), r.attr("position", o), this.group.add(r), e.setItemGraphicEl(a, r)
}
}
}, Og.remove = function(t) {
var e = this.group,
i = this._data;
i && t ? i.eachItemGraphicEl(function(t) {
t.fadeOut(function() {
e.remove(t)
})
}) : e.removeAll()
};
var Gg = St,
Fg = Mt,
Wg = ut,
Hg = ot,
Zg = [],
Ug = [],
Xg = [];
function Yg(t) {
return isNaN(t[0]) || isNaN(t[1])
}
function jg(t, e, i, n, a, o, r, s, l, u) {
return "none" !== u && u ? function(t, e, i, n, a, o, r, s, l, u, h) {
for (var c = 0, d = i, f = 0; f < n; f++) {
var p = e[d];
if (a <= d || d < 0) break;
if (Yg(p)) {
if (h) {
d += o;
continue
}
break
}
if (d === i) t[0 < o ? "moveTo" : "lineTo"](p[0], p[1]);
else if (0 < l) {
var g = e[c],
m = "y" === u ? 1 : 0,
v = (p[m] - g[m]) * l;
Hg(Ug, g), Ug[m] = g[m] + v, Hg(Xg, p), Xg[m] = p[m] - v, t.bezierCurveTo(Ug[0], Ug[1], Xg[0], Xg[1], p[0], p[1])
} else t.lineTo(p[0], p[1]);
c = d, d += o
}
return f
}.apply(this, arguments) : function(t, e, i, n, a, o, r, s, l, u, h) {
for (var c = 0, d = i, f = 0; f < n; f++) {
var p = e[d];
if (a <= d || d < 0) break;
if (Yg(p)) {
if (h) {
d += o;
continue
}
break
}
if (d === i) t[0 < o ? "moveTo" : "lineTo"](p[0], p[1]), Hg(Ug, p);
else if (0 < l) {
var g = d + o,
m = e[g];
if (h)
for (; m && Yg(e[g]);) m = e[g += o];
var v = .5,
y = e[c];
if (!(m = e[g]) || Yg(m)) Hg(Xg, p);
else {
var x, _;
if (Yg(m) && !h && (m = p), ht(Zg, m, y), "x" === u || "y" === u) {
var w = "x" === u ? 0 : 1;
x = Math.abs(p[w] - y[w]), _ = Math.abs(p[w] - m[w])
} else x = yt(p, y), _ = yt(p, m);
Wg(Xg, p, Zg, -l * (1 - (v = _ / (_ + x))))
}
Gg(Ug, Ug, s), Fg(Ug, Ug, r), Gg(Xg, Xg, s), Fg(Xg, Xg, r), t.bezierCurveTo(Ug[0], Ug[1], Xg[0], Xg[1], p[0], p[1]), Wg(Ug, p, Zg, l * v)
} else t.lineTo(p[0], p[1]);
c = d, d += o
}
return f
}.apply(this, arguments)
}
function qg(t, e) {
var i = [1 / 0, 1 / 0],
n = [-1 / 0, -1 / 0];
if (e)
for (var a = 0; a < t.length; a++) {
var o = t[a];
o[0] < i[0] && (i[0] = o[0]), o[1] < i[1] && (i[1] = o[1]), o[0] > n[0] && (n[0] = o[0]), o[1] > n[1] && (n[1] = o[1])
}
return {
min: e ? i : n,
max: e ? n : i
}
}
var Kg = hr.extend({
type: "ec-polyline",
shape: {
points: [],
smooth: 0,
smoothConstraint: !0,
smoothMonotone: null,
connectNulls: !1
},
style: {
fill: null,
stroke: "#000"
},
brush: Cr(hr.prototype.brush),
buildPath: function(t, e) {
var i = e.points,
n = 0,
a = i.length,
o = qg(i, e.smoothConstraint);
if (e.connectNulls) {
for (; 0 < a && Yg(i[a - 1]); a--);
for (; n < a && Yg(i[n]); n++);
}
for (; n < a;) n += jg(t, i, n, a, a, 1, o.min, o.max, e.smooth, e.smoothMonotone, e.connectNulls) + 1
}
}),
$g = hr.extend({
type: "ec-polygon",
shape: {
points: [],
stackedOnPoints: [],
smooth: 0,
stackedOnSmooth: 0,
smoothConstraint: !0,
smoothMonotone: null,
connectNulls: !1
},
brush: Cr(hr.prototype.brush),
buildPath: function(t, e) {
var i = e.points,
n = e.stackedOnPoints,
a = 0,
o = i.length,
r = e.smoothMonotone,
s = qg(i, e.smoothConstraint),
l = qg(n, e.smoothConstraint);
if (e.connectNulls) {
for (; 0 < o && Yg(i[o - 1]); o--);
for (; a < o && Yg(i[a]); a++);
}
for (; a < o;) {
var u = jg(t, i, a, o, o, 1, s.min, s.max, e.smooth, r, e.connectNulls);
jg(t, n, a + u - 1, u, o, -1, l.min, l.max, e.stackedOnSmooth, r, e.connectNulls), a += u + 1, t.closePath()
}
}
});
function Jg(t, e, i) {
var n = t.getArea(),
a = t.getBaseAxis().isHorizontal(),
o = n.x,
r = n.y,
s = n.width,
l = n.height,
u = i.get("lineStyle.width") || 2,
h = new Hr({
shape: {
x: o -= u / 2,
y: r -= u / 2,
width: s += u,
height: l += u
}
});
return e && (h.shape[a ? "width" : "height"] = 0, qs(h, {
shape: {
width: s,
height: l
}
}, i)), h
}
function Qg(t, e, i) {
var n = t.getArea(),
a = new Pr({
shape: {
cx: _l(t.cx, 1),
cy: _l(t.cy, 1),
r0: _l(n.r0, 1),
r: _l(n.r, 1),
startAngle: n.startAngle,
endAngle: n.endAngle,
clockwise: n.clockwise
}
});
return e && (a.shape.endAngle = n.startAngle, qs(a, {
shape: {
endAngle: n.endAngle
}
}, i)), a
}
function tm(t, e, i) {
return t ? "polar" === t.type ? Qg(t, e, i) : "cartesian2d" === t.type ? Jg(t, e, i) : null : null
}
function em(t, e) {
if (t.length === e.length) {
for (var i = 0; i < t.length; i++) {
var n = t[i],
a = e[i];
if (n[0] !== a[0] || n[1] !== a[1]) return
}
return !0
}
}
function im(t) {
return "number" == typeof t ? t : t ? .5 : 0
}
function nm(t, e, i) {
for (var n = e.getBaseAxis(), a = "x" === n.dim || "radius" === n.dim ? 0 : 1, o = [], r = 0; r < t.length - 1; r++) {
var s = t[r + 1],
l = t[r];
o.push(l);
var u = [];
switch (i) {
case "end":
u[a] = s[a], u[1 - a] = l[1 - a], o.push(u);
break;
case "middle":
var h = (l[a] + s[a]) / 2,
c = [];
u[a] = c[a] = h, u[1 - a] = l[1 - a], c[1 - a] = s[1 - a], o.push(u), o.push(c);
break;
default:
u[a] = l[a], u[1 - a] = s[1 - a], o.push(u)
}
}
return t[r] && o.push(t[r]), o
}
function am(t, e, i) {
var n = t.get("showAllSymbol"),
a = "auto" === n;
if (!n || a) {
var o = i.getAxesByScale("ordinal")[0];
if (o && (!a || ! function(t, e) {
var i = t.getExtent(),
n = Math.abs(i[1] - i[0]) / t.scale.count();
isNaN(n) && (n = 0);
for (var a = e.count(), o = Math.max(1, Math.round(a / 5)), r = 0; r < a; r += o)
if (1.5 * Sg.getSymbolSize(e, r)[t.isHorizontal() ? 1 : 0] > n) return !1;
return !0
}(o, e))) {
var r = e.mapDimension(o.dim),
s = {};
return O(o.getViewLabels(), function(t) {
s[t.tickValue] = 1
}),
function(t) {
return !s.hasOwnProperty(e.get(r, t))
}
}
}
}
function om(t, e, i) {
if ("cartesian2d" !== t.type) return Qg(t, e, i);
var n = t.getBaseAxis().isHorizontal(),
a = Jg(t, e, i);
if (!i.get("clip", !0)) {
var o = a.shape,
r = Math.max(o.width, o.height);
n ? (o.y -= r, o.height += 2 * r) : (o.x -= r, o.width += 2 * r)
}
return a
}
ec.extend({
type: "line",
init: function() {
var t = new Si,
e = new Ng;
this.group.add(e.group), this._symbolDraw = e, this._lineGroup = t
},
render: function(t, e, i) {
var n = t.coordinateSystem,
a = this.group,
o = t.getData(),
r = t.getModel("lineStyle"),
s = t.getModel("areaStyle"),
l = o.mapArray(o.getItemLayout),
u = "polar" === n.type,
h = this._coordSys,
c = this._symbolDraw,
d = this._polyline,
f = this._polygon,
p = this._lineGroup,
g = t.get("animation"),
m = !s.isEmpty(),
v = s.get("origin"),
y = function(t, e, i) {
if (!i.valueDim) return [];
for (var n = [], a = 0, o = e.count(); a < o; a++) n.push(Vg(i, t, e, a));
return n
}(n, o, Bg(n, o, v)),
x = t.get("showSymbol"),
_ = x && !u && am(t, o, n),
w = this._data;
w && w.eachItemGraphicEl(function(t, e) {
t.__temp && (a.remove(t), w.setItemGraphicEl(e, null))
}), x || c.remove(), a.add(p);
var b, S = !u && t.get("step");
n && n.getArea && (null != (b = n.getArea()).width ? (b.x -= .1, b.y -= .1, b.width += .2, b.height += .2) : b.r0 && (b.r0 -= .5, b.r1 += .5)), d && h.type === n.type && S === this._step ? (m && !f ? f = this._newPolygon(l, y, n, g) : f && !m && (p.remove(f), f = this._polygon = null), p.setClipPath(om(n, !1, t)), x && c.updateData(o, {
isIgnore: _,
clipShape: b
}), o.eachItemGraphicEl(function(t) {
t.stopAnimation(!0)
}), em(this._stackedOnPoints, y) && em(this._points, l) || (g ? this._updateAnimation(o, y, n, i, S, v) : (S && (l = nm(l, n, S), y = nm(y, n, S)), d.setShape({
points: l
}), f && f.setShape({
points: l,
stackedOnPoints: y
})))) : (x && c.updateData(o, {
isIgnore: _,
clipShape: b
}), S && (l = nm(l, n, S), y = nm(y, n, S)), d = this._newPolyline(l, n, g), m && (f = this._newPolygon(l, y, n, g)), p.setClipPath(om(n, !0, t)));
var M = function(t, e) {
var i = t.getVisual("visualMeta");
if (i && i.length && t.count() && "cartesian2d" === e.type) {
for (var n, a, o = i.length - 1; 0 <= o; o--) {
var r = i[o].dimension,
s = t.dimensions[r],
l = t.getDimensionInfo(s);
if ("x" === (n = l && l.coordDim) || "y" === n) {
a = i[o];
break
}
}
if (a) {
var u = e.getAxis(n),
h = N(a.stops, function(t) {
return {
coord: u.toGlobalCoord(u.dataToCoord(t.value)),
color: t.color
}
}),
c = h.length,
d = a.outerColors.slice();
c && h[0].coord > h[c - 1].coord && (h.reverse(), d.reverse());
var f = h[0].coord - 10,
p = h[c - 1].coord + 10,
g = p - f;
if (g < .001) return "transparent";
O(h, function(t) {
t.offset = (t.coord - f) / g
}), h.push({
offset: c ? h[c - 1].offset : .5,
color: d[1] || "transparent"
}), h.unshift({
offset: c ? h[0].offset : .5,
color: d[0] || "transparent"
});
var m = new Jr(0, 0, 0, 0, h, !0);
return m[n] = f, m[n + "2"] = p, m
}
}
}(o, n) || o.getVisual("color");
d.useStyle(C(r.getLineStyle(), {
fill: "none",
stroke: M,
lineJoin: "bevel"
}));
var I = t.get("smooth");
if (I = im(t.get("smooth")), d.setShape({
smooth: I,
smoothMonotone: t.get("smoothMonotone"),
connectNulls: t.get("connectNulls")
}), f) {
var A = o.getCalculationInfo("stackedOnSeries"),
T = 0;
f.useStyle(C(s.getAreaStyle(), {
fill: M,
opacity: .7,
lineJoin: "bevel"
})), A && (T = im(A.get("smooth"))), f.setShape({
smooth: I,
stackedOnSmooth: T,
smoothMonotone: t.get("smoothMonotone"),
connectNulls: t.get("connectNulls")
})
}
this._data = o, this._coordSys = n, this._stackedOnPoints = y, this._points = l, this._step = S, this._valueOrigin = v
},
dispose: function() {},
highlight: function(t, e, i, n) {
var a = t.getData(),
o = Ca(a, n);
if (!(o instanceof Array) && null != o && 0 <= o) {
var r = a.getItemGraphicEl(o);
if (!r) {
var s = a.getItemLayout(o);
if (!s) return;
(r = new Sg(a, o)).position = s, r.setZ(t.get("zlevel"), t.get("z")), r.ignore = isNaN(s[0]) || isNaN(s[1]), r.__temp = !0, a.setItemGraphicEl(o, r), r.stopSymbolAnimation(!0), this.group.add(r)
}
r.highlight()
} else ec.prototype.highlight.call(this, t, e, i, n)
},
downplay: function(t, e, i, n) {
var a = t.getData(),
o = Ca(a, n);
if (null != o && 0 <= o) {
var r = a.getItemGraphicEl(o);
r && (r.__temp ? (a.setItemGraphicEl(o, null), this.group.remove(r)) : r.downplay())
} else ec.prototype.downplay.call(this, t, e, i, n)
},
_newPolyline: function(t) {
var e = this._polyline;
return e && this._lineGroup.remove(e), e = new Kg({
shape: {
points: t
},
silent: !0,
z2: 10
}), this._lineGroup.add(e), this._polyline = e
},
_newPolygon: function(t, e) {
var i = this._polygon;
return i && this._lineGroup.remove(i), i = new $g({
shape: {
points: t,
stackedOnPoints: e
},
silent: !0
}), this._lineGroup.add(i), this._polygon = i
},
_updateAnimation: function(t, e, i, n, a, o) {
var r = this._polyline,
s = this._polygon,
l = t.hostModel,
u = function(t, e, i, n, a, o, r, s) {
for (var l = function(t, e) {
var i = [];
return e.diff(t).add(function(t) {
i.push({
cmd: "+",
idx: t
})
}).update(function(t, e) {
i.push({
cmd: "=",
idx: e,
idx1: t
})
}).remove(function(t) {
i.push({
cmd: "-",
idx: t
})
}).execute(), i
}(t, e), u = [], h = [], c = [], d = [], f = [], p = [], g = [], m = Bg(a, e, r), v = Bg(o, t, s), y = 0; y < l.length; y++) {
var x = l[y],
_ = !0;
switch (x.cmd) {
case "=":
var w = t.getItemLayout(x.idx),
b = e.getItemLayout(x.idx1);
(isNaN(w[0]) || isNaN(w[1])) && (w = b.slice()), u.push(w), h.push(b), c.push(i[x.idx]), d.push(n[x.idx1]), g.push(e.getRawIndex(x.idx1));
break;
case "+":
var S = x.idx;
u.push(a.dataToPoint([e.get(m.dataDimsForPoint[0], S), e.get(m.dataDimsForPoint[1], S)])), h.push(e.getItemLayout(S).slice()), c.push(Vg(m, a, e, S)), d.push(n[S]), g.push(e.getRawIndex(S));
break;
case "-":
S = x.idx;
var M = t.getRawIndex(S);
M !== S ? (u.push(t.getItemLayout(S)), h.push(o.dataToPoint([t.get(v.dataDimsForPoint[0], S), t.get(v.dataDimsForPoint[1], S)])), c.push(i[S]), d.push(Vg(v, o, t, S)), g.push(M)) : _ = !1
}
_ && (f.push(x), p.push(p.length))
}
p.sort(function(t, e) {
return g[t] - g[e]
});
var I = [],
A = [],
T = [],
D = [],
C = [];
for (y = 0; y < p.length; y++) {
S = p[y];
I[y] = u[S], A[y] = h[S], T[y] = c[S], D[y] = d[S], C[y] = f[S]
}
return {
current: I,
next: A,
stackedOnCurrent: T,
stackedOnNext: D,
status: C
}
}(this._data, t, this._stackedOnPoints, e, this._coordSys, i, this._valueOrigin, o),
h = u.current,
c = u.stackedOnCurrent,
d = u.next,
f = u.stackedOnNext;
a && (h = nm(u.current, i, a), c = nm(u.stackedOnCurrent, i, a), d = nm(u.next, i, a), f = nm(u.stackedOnNext, i, a)), r.shape.__points = u.current, r.shape.points = h, js(r, {
shape: {
points: d
}
}, l), s && (s.setShape({
points: h,
stackedOnPoints: c
}), js(s, {
shape: {
points: d,
stackedOnPoints: f
}
}, l));
for (var p = [], g = u.status, m = 0; m < g.length; m++) {
if ("=" === g[m].cmd) {
var v = t.getItemGraphicEl(g[m].idx1);
v && p.push({
el: v,
ptIdx: m
})
}
}
r.animators && r.animators.length && r.animators[0].during(function() {
for (var t = 0; t < p.length; t++) {
p[t].el.attr("position", r.shape.__points[p[t].ptIdx])
}
})
},
remove: function(t) {
var i = this.group,
n = this._data;
this._lineGroup.removeAll(), this._symbolDraw.remove(!0), n && n.eachItemGraphicEl(function(t, e) {
t.__temp && (i.remove(t), n.setItemGraphicEl(e, null))
}), this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._data = null
}
});
function rm(t, r, s) {
return {
seriesType: t,
performRawSeries: !0,
reset: function(l, t, e) {
var i = l.getData(),
u = l.get("symbol"),
h = l.get("symbolSize"),
n = l.get("symbolKeepAspect"),
c = R(u),
d = R(h),
f = c || d,
a = !c && u ? u : r,
o = d ? null : h;
if (i.setVisual({
legendSymbol: s || a,
symbol: a,
symbolSize: o,
symbolKeepAspect: n
}), !t.isSeriesFiltered(l)) return {
dataEach: i.hasItemOption || f ? function(t, e) {
if (f) {
var i = l.getRawValue(e),
n = l.getDataParams(e);
c && t.setItemVisual(e, "symbol", u(i, n)), d && t.setItemVisual(e, "symbolSize", h(i, n))
}
if (t.hasItemOption) {
var a = t.getItemModel(e),
o = a.getShallow("symbol", !0),
r = a.getShallow("symbolSize", !0),
s = a.getShallow("symbolKeepAspect", !0);
null != o && t.setItemVisual(e, "symbol", o), null != r && t.setItemVisual(e, "symbolSize", r), null != s && t.setItemVisual(e, "symbolKeepAspect", s)
}
} : null
}
}
}
}
function sm(t) {
return {
seriesType: t,
plan: Jh(),
reset: function(t) {
var e = t.getData(),
c = t.coordinateSystem,
d = t.pipelineContext.large;
if (c) {
var f = N(c.dimensions, function(t) {
return e.mapDimension(t)
}).slice(0, 2),
p = f.length,
i = e.getCalculationInfo("stackResultDimension");
return Zf(e, f[0]) && (f[0] = i), Zf(e, f[1]) && (f[1] = i), p && {
progress: function(t, e) {
for (var i = t.end - t.start, n = d && new Float32Array(i * p), a = t.start, o = 0, r = [], s = []; a < t.end; a++) {
var l;
if (1 === p) {
var u = e.get(f[0], a);
l = !isNaN(u) && c.dataToPoint(u, null, s)
} else {
u = r[0] = e.get(f[0], a);
var h = r[1] = e.get(f[1], a);
l = !isNaN(u) && !isNaN(h) && c.dataToPoint(r, null, s)
}
d ? (n[o++] = l ? l[0] : NaN, n[o++] = l ? l[1] : NaN) : e.setItemLayout(a, l && l.slice() || [NaN, NaN])
}
d && e.setLayout("symbolPoints", n)
}
}
}
}
}
}
function lm(t, e) {
return Math.round(t.length / 2)
}
var um = {
average: function(t) {
for (var e = 0, i = 0, n = 0; n < t.length; n++) isNaN(t[n]) || (e += t[n], i++);
return 0 === i ? NaN : e / i
},
sum: function(t) {
for (var e = 0, i = 0; i < t.length; i++) e += t[i] || 0;
return e
},
max: function(t) {
for (var e = -1 / 0, i = 0; i < t.length; i++) t[i] > e && (e = t[i]);
return isFinite(e) ? e : NaN
},
min: function(t) {
for (var e = 1 / 0, i = 0; i < t.length; i++) t[i] < e && (e = t[i]);
return isFinite(e) ? e : NaN
},
nearest: function(t) {
return t[0]
}
};
function hm(t) {
return this._axes[t]
}
function cm(t) {
this._axes = {}, this._dimList = [], this.name = t || ""
}
function dm(t) {
cm.call(this, t)
}
cm.prototype = {
constructor: cm,
type: "cartesian",
getAxis: function(t) {
return this._axes[t]
},
getAxes: function() {
return N(this._dimList, hm, this)
},
getAxesByScale: function(e) {
return e = e.toLowerCase(), M(this.getAxes(), function(t) {
return t.scale.type === e
})
},
addAxis: function(t) {
var e = t.dim;
this._axes[e] = t, this._dimList.push(e)
},
dataToCoord: function(t) {
return this._dataCoordConvert(t, "dataToCoord")
},
coordToData: function(t) {
return this._dataCoordConvert(t, "coordToData")
},
_dataCoordConvert: function(t, e) {
for (var i = this._dimList, n = t instanceof Array ? [] : {}, a = 0; a < i.length; a++) {
var o = i[a],
r = this._axes[o];
n[o] = r[e](t[o])
}
return n
}
}, dm.prototype = {
constructor: dm,
type: "cartesian2d",
dimensions: ["x", "y"],
getBaseAxis: function() {
return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAxis("x")
},
containPoint: function(t) {
var e = this.getAxis("x"),
i = this.getAxis("y");
return e.contain(e.toLocalCoord(t[0])) && i.contain(i.toLocalCoord(t[1]))
},
containData: function(t) {
return this.getAxis("x").containData(t[0]) && this.getAxis("y").containData(t[1])
},
dataToPoint: function(t, e, i) {
var n = this.getAxis("x"),
a = this.getAxis("y");
return (i = i || [])[0] = n.toGlobalCoord(n.dataToCoord(t[0])), i[1] = a.toGlobalCoord(a.dataToCoord(t[1])), i
},
clampData: function(t, e) {
var i = this.getAxis("x").scale,
n = this.getAxis("y").scale,
a = i.getExtent(),
o = n.getExtent(),
r = i.parse(t[0]),
s = n.parse(t[1]);
return (e = e || [])[0] = Math.min(Math.max(Math.min(a[0], a[1]), r), Math.max(a[0], a[1])), e[1] = Math.min(Math.max(Math.min(o[0], o[1]), s), Math.max(o[0], o[1])), e
},
pointToData: function(t, e) {
var i = this.getAxis("x"),
n = this.getAxis("y");
return (e = e || [])[0] = i.coordToData(i.toLocalCoord(t[0])), e[1] = n.coordToData(n.toLocalCoord(t[1])), e
},
getOtherAxis: function(t) {
return this.getAxis("x" === t.dim ? "y" : "x")
},
getArea: function() {
var t = this.getAxis("x").getGlobalExtent(),
e = this.getAxis("y").getGlobalExtent(),
i = Math.min(t[0], t[1]),
n = Math.min(e[0], e[1]);
return new bi(i, n, Math.max(t[0], t[1]) - i, Math.max(e[0], e[1]) - n)
}
}, w(dm, cm);
function fm(t, e, i, n, a) {
vg.call(this, t, e, i), this.type = n || "value", this.position = a || "bottom"
}
fm.prototype = {
constructor: fm,
index: 0,
getAxesOnZeroOf: null,
model: null,
isHorizontal: function() {
var t = this.position;
return "top" === t || "bottom" === t
},
getGlobalExtent: function(t) {
var e = this.getExtent();
return e[0] = this.toGlobalCoord(e[0]), e[1] = this.toGlobalCoord(e[1]), t && e[0] > e[1] && e.reverse(), e
},
getOtherAxis: function() {
this.grid.getOtherAxis()
},
pointToData: function(t, e) {
return this.coordToData(this.toLocalCoord(t["x" === this.dim ? 0 : 1]), e)
},
toLocalCoord: null,
toGlobalCoord: null
}, w(fm, vg);
var pm = {
show: !0,
zlevel: 0,
z: 0,
inverse: !1,
name: "",
nameLocation: "end",
nameRotate: null,
nameTruncate: {
maxWidth: null,
ellipsis: "...",
placeholder: "."
},
nameTextStyle: {},
nameGap: 15,
silent: !1,
triggerEvent: !1,
tooltip: {
show: !1
},
axisPointer: {},
axisLine: {
show: !0,
onZero: !0,
onZeroAxisIndex: null,
lineStyle: {
color: "#333",
width: 1,
type: "solid"
},
symbol: ["none", "none"],
symbolSize: [10, 15]
},
axisTick: {
show: !0,
inside: !1,
length: 5,
lineStyle: {
width: 1
}
},
axisLabel: {
show: !0,
inside: !1,
rotate: 0,
showMinLabel: null,
showMaxLabel: null,
margin: 8,
fontSize: 12
},
splitLine: {
show: !0,
lineStyle: {
color: ["#ccc"],
width: 1,
type: "solid"
}
},
splitArea: {
show: !1,
areaStyle: {
color: ["rgba(250,250,250,0.3)", "rgba(200,200,200,0.3)"]
}
}
},
gm = {};
gm.categoryAxis = m({
boundaryGap: !0,
deduplication: null,
splitLine: {
show: !1
},
axisTick: {
alignWithLabel: !1,
interval: "auto"
},
axisLabel: {
interval: "auto"
}
}, pm), gm.valueAxis = m({
boundaryGap: [0, 0],
splitNumber: 5
}, pm), gm.timeAxis = C({
scale: !0,
min: "dataMin",
max: "dataMax"
}, gm.valueAxis), gm.logAxis = C({
scale: !0,
logBase: 10
}, gm.valueAxis);
function mm(o, t, r, e) {
O(vm, function(a) {
t.extend({
type: o + "Axis." + a,
mergeDefaultAndTheme: function(t, e) {
var i = this.layoutMode,
n = i ? su(t) : {};
m(t, e.getTheme().get(a + "Axis")), m(t, this.getDefaultOption()), t.type = r(o, t), i && ru(t, n, i)
},
optionUpdated: function() {
"category" === this.option.type && (this.__ordinalMeta = jf.createByAxisModel(this))
},
getCategories: function(t) {
var e = this.option;
if ("category" === e.type) return t ? e.data : this.__ordinalMeta.categories
},
getOrdinalMeta: function() {
return this.__ordinalMeta
},
defaultOption: p([{}, gm[a + "Axis"], e], !0)
})
}), fu.registerSubTypeDefaulter(o + "Axis", A(r, o))
}
var vm = ["value", "category", "time", "log"],
ym = fu.extend({
type: "cartesian2dAxis",
axis: null,
init: function() {
ym.superApply(this, "init", arguments), this.resetRange()
},
mergeOption: function() {
ym.superApply(this, "mergeOption", arguments), this.resetRange()
},
restoreData: function() {
ym.superApply(this, "restoreData", arguments), this.resetRange()
},
getCoordSysModel: function() {
return this.ecModel.queryComponents({
mainType: "grid",
index: this.option.gridIndex,
id: this.option.gridId
})[0]
}
});
function xm(t, e) {
return e.type || (e.data ? "category" : "value")
}
m(ym.prototype, Hp);
var _m = {
offset: 0
};
function wm(t, e) {
return t.getCoordSysModel() === e
}
function bm(t, e, i) {
this._coordsMap = {}, this._coordsList = [], this._axesMap = {}, this._axesList = [], this._initCartesian(t, e, i), this.model = t
}
mm("x", ym, xm, _m), mm("y", ym, xm, _m), fu.extend({
type: "grid",
dependencies: ["xAxis", "yAxis"],
layoutMode: "box",
coordinateSystem: null,
defaultOption: {
show: !1,
zlevel: 0,
z: 0,
left: "10%",
top: 60,
right: "10%",
bottom: 60,
containLabel: !1,
backgroundColor: "rgba(0,0,0,0)",
borderWidth: 1,
borderColor: "#ccc"
}
});
var Sm = bm.prototype;
function Mm(t, e, i, n) {
i.getAxesOnZeroOf = function() {
return a ? [a] : []
};
var a, o = t[e],
r = i.model,
s = r.get("axisLine.onZero"),
l = r.get("axisLine.onZeroAxisIndex");
if (s) {
if (null != l) Im(o[l]) && (a = o[l]);
else
for (var u in o)
if (o.hasOwnProperty(u) && Im(o[u]) && !n[h(o[u])]) {
a = o[u];
break
} a && (n[h(a)] = !0)
}
function h(t) {
return t.dim + "_" + t.index
}
}
function Im(t) {
return t && "category" !== t.type && "time" !== t.type && function(t) {
var e = t.scale.getExtent(),
i = e[0],
n = e[1];
return !(0 < i && 0 < n || i < 0 && n < 0)
}(t)
}
Sm.type = "grid", Sm.axisPointerEnabled = !0, Sm.getRect = function() {
return this._rect
}, Sm.update = function(t, e) {
var i = this._axesMap;
this._updateScale(t, this.model), O(i.x, function(t) {
Ep(t.scale, t.model)
}), O(i.y, function(t) {
Ep(t.scale, t.model)
});
var n = {};
O(i.x, function(t) {
Mm(i, "y", t, n)
}), O(i.y, function(t) {
Mm(i, "x", t, n)
}), this.resize(this.model, e)
}, Sm.resize = function(t, e, i) {
var a = au(t.getBoxLayoutParams(), {
width: e.getWidth(),
height: e.getHeight()
});
this._rect = a;
var n = this._axesList;
function o() {
O(n, function(t) {
var e = t.isHorizontal(),
i = e ? [0, a.width] : [0, a.height],
n = t.inverse ? 1 : 0;
t.setExtent(i[n], i[1 - n]),
function(t, e) {
var i = t.getExtent(),
n = i[0] + i[1];
t.toGlobalCoord = "x" === t.dim ? function(t) {
return t + e
} : function(t) {
return n - t + e
}, t.toLocalCoord = "x" === t.dim ? function(t) {
return t - e
} : function(t) {
return n - t + e
}
}(t, e ? a.x : a.y)
})
}
o(), !i && t.get("containLabel") && (O(n, function(t) {
if (!t.model.get("axisLabel.inside")) {
var e = function(t) {
var e = t.model,
i = t.scale;
if (e.get("axisLabel.show") && !i.isBlank()) {
var n, a, o = "category" === t.type,
r = i.getExtent();
a = o ? i.count() : (n = i.getTicks()).length;
var s, l, u, h, c, d, f, p, g, m = t.getLabelModel(),
v = Vp(t),
y = 1;
40 < a && (y = Math.ceil(a / 40));
for (var x = 0; x < a; x += y) {
var _ = v(n ? n[x] : r[0] + x),
w = m.getTextRect(_),
b = (l = w, u = m.get("rotate") || 0, void 0, h = u * Math.PI / 180, c = l.plain(), d = c.width, f = c.height, p = d * Math.cos(h) + f * Math.sin(h), g = d * Math.sin(h) + f * Math.cos(h), new bi(c.x, c.y, p, g));
s ? s.union(b) : s = b
}
return s
}
}(t);
if (e) {
var i = t.isHorizontal() ? "height" : "width",
n = t.model.get("axisLabel.margin");
a[i] -= e[i] + n, "top" === t.position ? a.y += e.height + n : "left" === t.position && (a.x += e.width + n)
}
}
}), o())
}, Sm.getAxis = function(t, e) {
var i = this._axesMap[t];
if (null != i) {
if (null == e)
for (var n in i)
if (i.hasOwnProperty(n)) return i[n];
return i[e]
}
}, Sm.getAxes = function() {
return this._axesList.slice()
}, Sm.getCartesian = function(t, e) {
if (null != t && null != e) {
var i = "x" + t + "y" + e;
return this._coordsMap[i]
}
E(t) && (e = t.yAxisIndex, t = t.xAxisIndex);
for (var n = 0, a = this._coordsList; n < a.length; n++)
if (a[n].getAxis("x").index === t || a[n].getAxis("y").index === e) return a[n]
}, Sm.getCartesians = function() {
return this._coordsList.slice()
}, Sm.convertToPixel = function(t, e, i) {
var n = this._findConvertTarget(t, e);
return n.cartesian ? n.cartesian.dataToPoint(i) : n.axis ? n.axis.toGlobalCoord(n.axis.dataToCoord(i)) : null
}, Sm.convertFromPixel = function(t, e, i) {
var n = this._findConvertTarget(t, e);
return n.cartesian ? n.cartesian.pointToData(i) : n.axis ? n.axis.coordToData(n.axis.toLocalCoord(i)) : null
}, Sm._findConvertTarget = function(t, e) {
var i, n, a = e.seriesModel,
o = e.xAxisModel || a && a.getReferringComponents("xAxis")[0],
r = e.yAxisModel || a && a.getReferringComponents("yAxis")[0],
s = e.gridModel,
l = this._coordsList;
if (a) _(l, i = a.coordinateSystem) < 0 && (i = null);
else if (o && r) i = this.getCartesian(o.componentIndex, r.componentIndex);
else if (o) n = this.getAxis("x", o.componentIndex);
else if (r) n = this.getAxis("y", r.componentIndex);
else if (s) {
s.coordinateSystem === this && (i = this._coordsList[0])
}
return {
cartesian: i,
axis: n
}
}, Sm.containPoint = function(t) {
var e = this._coordsList[0];
if (e) return e.containPoint(t)
}, Sm._initCartesian = function(r, t, e) {
var s = {
left: !1,
right: !1,
top: !1,
bottom: !1
},
l = {
x: {},
y: {}
},
u = {
x: 0,
y: 0
};
if (t.eachComponent("xAxis", i("x"), this), t.eachComponent("yAxis", i("y"), this), !u.x || !u.y) return this._axesMap = {}, void(this._axesList = []);
function i(o) {
return function(t, e) {
if (wm(t, r)) {
var i = t.get("position");
"x" === o ? "top" !== i && "bottom" !== i && (i = s.bottom ? "top" : "bottom") : "left" !== i && "right" !== i && (i = s.left ? "right" : "left"), s[i] = !0;
var n = new fm(o, Bp(t), [0, 0], t.get("type"), i),
a = "category" === n.type;
n.onBand = a && t.get("boundaryGap"), n.inverse = t.get("inverse"), (t.axis = n).model = t, n.grid = this, n.index = e, this._axesList.push(n), l[o][e] = n, u[o]++
}
}
}
O((this._axesMap = l).x, function(a, o) {
O(l.y, function(t, e) {
var i = "x" + o + "y" + e,
n = new dm(i);
n.grid = this, n.model = r, this._coordsMap[i] = n, this._coordsList.push(n), n.addAxis(a), n.addAxis(t)
}, this)
}, this)
}, Sm._updateScale = function(l, u) {
function h(e, i) {
O(e.mapDimension(i.dim, !0), function(t) {
i.scale.unionExtentFromData(e, Uf(e, t))
})
}
O(this._axesList, function(t) {
t.scale.setExtent(1 / 0, -1 / 0)
}), l.eachSeries(function(t) {
if (Dm(t)) {
var e = Tm(t, l),
i = e[0],
n = e[1];
if (!wm(i, u) || !wm(n, u)) return;
var a = this.getCartesian(i.componentIndex, n.componentIndex),
o = t.getData(),
r = a.getAxis("x"),
s = a.getAxis("y");
"list" === o.type && (h(o, r, t), h(o, s, t))
}
}, this)
}, Sm.getTooltipAxes = function(n) {
var a = [],
o = [];
return O(this.getCartesians(), function(t) {
var e = null != n && "auto" !== n ? t.getAxis(n) : t.getBaseAxis(),
i = t.getOtherAxis(e);
_(a, e) < 0 && a.push(e), _(o, i) < 0 && o.push(i)
}), {
baseAxes: a,
otherAxes: o
}
};
var Am = ["xAxis", "yAxis"];
function Tm(e) {
return N(Am, function(t) {
return e.getReferringComponents(t)[0]
})
}
function Dm(t) {
return "cartesian2d" === t.get("coordinateSystem")
}
bm.create = function(n, a) {
var o = [];
return n.eachComponent("grid", function(t, e) {
var i = new bm(t, n, a);
i.name = "grid_" + e, i.resize(t, a, !0), t.coordinateSystem = i, o.push(i)
}), n.eachSeries(function(t) {
if (Dm(t)) {
var e = Tm(t),
i = e[0],
n = e[1],
a = i.getCoordSysModel().coordinateSystem;
t.coordinateSystem = a.getCartesian(i.componentIndex, n.componentIndex)
}
}), o
}, bm.dimensions = bm.prototype.dimensions = dm.prototype.dimensions, Hu.register("cartesian2d", bm);
function Cm(t, e) {
this.opt = e, this.axisModel = t, C(e, {
labelOffset: 0,
nameDirection: 1,
tickDirection: 1,
labelDirection: 1,
silent: !0
}), this.group = new Si;
var i = new Si({
position: e.position.slice(),
rotation: e.rotation
});
i.updateTransform(), this._transform = i.transform, this._dumbGroup = i
}
var Lm = Math.PI;
Cm.prototype = {
constructor: Cm,
hasBuilder: function(t) {
return !!km[t]
},
add: function(t) {
km[t].call(this)
},
getGroup: function() {
return this.group
}
};
var km = {
axisLine: function() {
var o = this.opt,
t = this.axisModel;
if (t.get("axisLine.show")) {
var e = this.axisModel.axis.getExtent(),
i = this._transform,
r = [e[0], 0],
n = [e[1], 0];
i && (bt(r, r, i), bt(n, n, i));
var s = L({
lineCap: "round"
}, t.getModel("axisLine.lineStyle").getLineStyle());
this.group.add(new Ur({
anid: "line",
subPixelOptimize: !0,
shape: {
x1: r[0],
y1: r[1],
x2: n[0],
y2: n[1]
},
style: s,
strokeContainThreshold: o.strokeContainThreshold || 5,
silent: !0,
z2: 1
}));
var l = t.get("axisLine.symbol"),
a = t.get("axisLine.symbolSize"),
u = t.get("axisLine.symbolOffset") || 0;
if ("number" == typeof u && (u = [u, u]), null != l) {
"string" == typeof l && (l = [l, l]), "string" != typeof a && "number" != typeof a || (a = [a, a]);
var h = a[0],
c = a[1];
O([{
rotate: o.rotation + Math.PI / 2,
offset: u[0],
r: 0
}, {
rotate: o.rotation - Math.PI / 2,
offset: u[1],
r: Math.sqrt((r[0] - n[0]) * (r[0] - n[0]) + (r[1] - n[1]) * (r[1] - n[1]))
}], function(t, e) {
if ("none" !== l[e] && null != l[e]) {
var i = Jp(l[e], -h / 2, -c / 2, h, c, s.stroke, !0),
n = t.r + t.offset,
a = [r[0] + n * Math.cos(o.rotation), r[1] - n * Math.sin(o.rotation)];
i.attr({
rotation: t.rotate,
position: a,
silent: !0,
z2: 11
}), this.group.add(i)
}
}, this)
}
}
},
axisTickLabel: function() {
var t = this.axisModel,
e = this.opt,
i = function(t, e, i) {
var n = e.axis;
if (!e.get("axisTick.show") || n.scale.isBlank()) return;
for (var a = e.getModel("axisTick"), o = a.getModel("lineStyle"), r = a.get("length"), s = n.getTicksCoords(), l = [], u = [], h = t._transform, c = [], d = 0; d < s.length; d++) {
var f = s[d].coord;
l[0] = f, l[1] = 0, u[0] = f, u[1] = i.tickDirection * r, h && (bt(l, l, h), bt(u, u, h));
var p = new Ur({
anid: "tick_" + s[d].tickValue,
subPixelOptimize: !0,
shape: {
x1: l[0],
y1: l[1],
x2: u[0],
y2: u[1]
},
style: C(o.getLineStyle(), {
stroke: e.get("axisLine.lineStyle.color")
}),
z2: 2,
silent: !0
});
t.group.add(p), c.push(p)
}
return c
}(this, t, e);
! function(t, e, i) {
if (Wp(t.axis)) return;
var n = t.get("axisLabel.showMinLabel"),
a = t.get("axisLabel.showMaxLabel");
i = i || [];
var o = (e = e || [])[0],
r = e[1],
s = e[e.length - 1],
l = e[e.length - 2],
u = i[0],
h = i[1],
c = i[i.length - 1],
d = i[i.length - 2];
!1 === n ? (Rm(o), Rm(u)) : zm(o, r) && (n ? (Rm(r), Rm(h)) : (Rm(o), Rm(u)));
!1 === a ? (Rm(s), Rm(c)) : zm(l, s) && (a ? (Rm(l), Rm(d)) : (Rm(s), Rm(c)))
}(t, function(u, h, c) {
var d = h.axis;
if (!W(c.axisLabelShow, h.get("axisLabel.show")) || d.scale.isBlank()) return;
var f = h.getModel("axisLabel"),
p = f.get("margin"),
t = d.getViewLabels(),
e = (W(c.labelRotate, f.get("rotate")) || 0) * Lm / 180,
g = Nm(c.rotation, e, c.labelDirection),
m = h.getCategories && h.getCategories(!0),
v = [],
y = Om(h),
x = h.get("triggerEvent");
return O(t, function(t, e) {
var i = t.tickValue,
n = t.formattedLabel,
a = t.rawLabel,
o = f;
m && m[i] && m[i].textStyle && (o = new dl(m[i].textStyle, f, h.ecModel));
var r = o.getTextColor() || h.get("axisLine.lineStyle.color"),
s = [d.dataToCoord(i), c.labelOffset + c.labelDirection * p],
l = new Dr({
anid: "label_" + i,
position: s,
rotation: g.rotation,
silent: y,
z2: 10
});
Gs(l.style, o, {
text: n,
textAlign: o.getShallow("align", !0) || g.textAlign,
textVerticalAlign: o.getShallow("verticalAlign", !0) || o.getShallow("baseline", !0) || g.textVerticalAlign,
textFill: "function" == typeof r ? r("category" === d.type ? a : "value" === d.type ? i + "" : i, e) : r
}), x && (l.eventData = Pm(h), l.eventData.targetType = "axisLabel", l.eventData.value = a), u._dumbGroup.add(l), l.updateTransform(), v.push(l), u.group.add(l), l.decomposeTransform()
}), v
}(this, t, e), i)
},
axisName: function() {
var t = this.opt,
e = this.axisModel,
i = W(t.axisName, e.get("name"));
if (i) {
var n, a, o = e.get("nameLocation"),
r = t.nameDirection,
s = e.getModel("nameTextStyle"),
l = e.get("nameGap") || 0,
u = this.axisModel.axis.getExtent(),
h = u[0] > u[1] ? -1 : 1,
c = ["start" === o ? u[0] - h * l : "end" === o ? u[1] + h * l : (u[0] + u[1]) / 2, Em(o) ? t.labelOffset + r * l : 0],
d = e.get("nameRotate");
null != d && (d = d * Lm / 180), Em(o) ? n = Nm(t.rotation, null != d ? d : t.rotation, r) : (n = function(t, e, i, n) {
var a, o, r = Tl(i - t.rotation),
s = n[0] > n[1],
l = "start" === e && !s || "start" !== e && s;
a = Dl(r - Lm / 2) ? (o = l ? "bottom" : "top", "center") : Dl(r - 1.5 * Lm) ? (o = l ? "top" : "bottom", "center") : (o = "middle", r < 1.5 * Lm && Lm / 2 < r ? l ? "left" : "right" : l ? "right" : "left");
return {
rotation: r,
textAlign: a,
textVerticalAlign: o
}
}(t, o, d || 0, u), null != (a = t.axisNameAvailableWidth) && (a = Math.abs(a / Math.sin(n.rotation)), isFinite(a) || (a = null)));
var f = s.getFont(),
p = e.get("nameTruncate", !0) || {},
g = p.ellipsis,
m = W(t.nameTruncateMaxWidth, p.maxWidth, a),
v = null != g && null != m ? $l(i, m, f, g, {
minChar: 2,
placeholder: p.placeholder
}) : i,
y = e.get("tooltip", !0),
x = e.mainType,
_ = {
componentType: x,
name: i,
$vars: ["name"]
};
_[x + "Index"] = e.componentIndex;
var w = new Dr({
anid: "name",
__fullText: i,
__truncatedText: v,
position: c,
rotation: n.rotation,
silent: Om(e),
z2: 1,
tooltip: y && y.show ? L({
content: i,
formatter: function() {
return i
},
formatterParams: _
}, y) : null
});
Gs(w.style, s, {
text: v,
textFont: f,
textFill: s.getTextColor() || e.get("axisLine.lineStyle.color"),
textAlign: s.get("align") || n.textAlign,
textVerticalAlign: s.get("verticalAlign") || n.textVerticalAlign
}), e.get("triggerEvent") && (w.eventData = Pm(e), w.eventData.targetType = "axisName", w.eventData.name = i), this._dumbGroup.add(w), w.updateTransform(), this.group.add(w), w.decomposeTransform()
}
}
},
Pm = Cm.makeAxisEventDataBase = function(t) {
var e = {
componentType: t.mainType,
componentIndex: t.componentIndex
};
return e[t.mainType + "Index"] = t.componentIndex, e
},
Nm = Cm.innerTextLayout = function(t, e, i) {
var n, a = Tl(e - t);
return {
rotation: a,
textAlign: Dl(a) ? (n = 0 < i ? "top" : "bottom", "center") : Dl(a - Lm) ? (n = 0 < i ? "bottom" : "top", "center") : (n = "middle", 0 < a && a < Lm ? 0 < i ? "right" : "left" : 0 < i ? "left" : "right"),
textVerticalAlign: n
}
};
var Om = Cm.isLabelSilent = function(t) {
var e = t.get("tooltip");
return t.get("silent") || !(t.get("triggerEvent") || e && e.show)
};
function Rm(t) {
t && (t.ignore = !0)
}
function zm(t, e) {
var i = t && t.getBoundingRect().clone(),
n = e && e.getBoundingRect().clone();
if (i && n) {
var a = te([]);
return ae(a, a, -t.rotation), i.applyTransform(ie([], a, t.getLocalTransform())), n.applyTransform(ie([], a, e.getLocalTransform())), i.intersect(n)
}
}
function Em(t) {
return "middle" === t || "center" === t
}
var Bm = O,
Vm = A;
function Gm(t, e) {
var i = {
axesInfo: {},
seriesInvolved: !1,
coordSysAxesInfo: {},
coordSysMap: {}
};
return function(p, g, t) {
var o = g.getComponent("tooltip"),
m = g.getComponent("axisPointer"),
v = m.get("link", !0) || [],
y = [];
Bm(t.getCoordinateSystems(), function(c) {
if (c.axisPointerEnabled) {
var t = Zm(c.model),
d = p.coordSysAxesInfo[t] = {},
f = (p.coordSysMap[t] = c).model.getModel("tooltip", o);
if (Bm(c.getAxes(), Vm(a, !1, null)), c.getTooltipAxes && o && f.get("show")) {
var e = "axis" === f.get("trigger"),
i = "cross" === f.get("axisPointer.type"),
n = c.getTooltipAxes(f.get("axisPointer.axis"));
(e || i) && Bm(n.baseAxes, Vm(a, !i || "cross", e)), i && Bm(n.otherAxes, Vm(a, "cross", !1))
}
}
function a(t, e, i) {
var n = i.model.getModel("axisPointer", m),
a = n.get("show");
if (a && ("auto" !== a || t || Hm(n))) {
null == e && (e = n.get("triggerTooltip"));
var o = (n = t ? function(t, e, i, n, a, o) {
var r = e.getModel("axisPointer"),
s = {};
Bm(["type", "snap", "lineStyle", "shadowStyle", "label", "animation", "animationDurationUpdate", "animationEasingUpdate", "z"], function(t) {
s[t] = D(r.get(t))
}), s.snap = "category" !== t.type && !!o, "cross" === r.get("type") && (s.type = "line");
var l = s.label || (s.label = {});
if (null == l.show && (l.show = !1), "cross" === a) {
var u = r.get("label.show");
if (l.show = null == u || u, !o) {
var h = s.lineStyle = r.get("crossStyle");
h && C(l, h.textStyle)
}
}
return t.model.getModel("axisPointer", new dl(s, i, n))
}(i, f, m, g, t, e) : n).get("snap"),
r = Zm(i.model),
s = e || o || "category" === i.type,
l = p.axesInfo[r] = {
key: r,
axis: i,
coordSys: c,
axisPointerModel: n,
triggerTooltip: e,
involveSeries: s,
snap: o,
useHandle: Hm(n),
seriesModels: []
};
d[r] = l, p.seriesInvolved |= s;
var u = function(t, e) {
for (var i = e.model, n = e.dim, a = 0; a < t.length; a++) {
var o = t[a] || {};
if (Fm(o[n + "AxisId"], i.id) || Fm(o[n + "AxisIndex"], i.componentIndex) || Fm(o[n + "AxisName"], i.name)) return a
}
}(v, i);
if (null != u) {
var h = y[u] || (y[u] = {
axesInfo: {}
});
h.axesInfo[r] = l, h.mapper = v[u].mapper, l.linkGroup = h
}
}
}
})
}(i, t, e), i.seriesInvolved && function(a, t) {
t.eachSeries(function(i) {
var n = i.coordinateSystem,
t = i.get("tooltip.trigger", !0),
e = i.get("tooltip.show", !0);
n && "none" !== t && !1 !== t && "item" !== t && !1 !== e && !1 !== i.get("axisPointer.show", !0) && Bm(a.coordSysAxesInfo[Zm(n.model)], function(t) {
var e = t.axis;
n.getAxis(e.dim) === e && (t.seriesModels.push(i), null == t.seriesDataCount && (t.seriesDataCount = 0), t.seriesDataCount += i.getData().count())
})
}, this)
}(i, t), i
}
function Fm(t, e) {
return "all" === t || k(t) && 0 <= _(t, e) || t === e
}
function Wm(t) {
var e = (t.ecModel.getComponent("axisPointer") || {}).coordSysAxesInfo;
return e && e.axesInfo[Zm(t)]
}
function Hm(t) {
return !!t.get("handle.show")
}
function Zm(t) {
return t.type + "||" + t.id
}
var Um = lf({
type: "axis",
_axisPointer: null,
axisPointerClass: null,
render: function(t, e, i, n) {
this.axisPointerClass && function(t) {
var e = Wm(t);
if (e) {
var i = e.axisPointerModel,
n = e.axis.scale,
a = i.option,
o = i.get("status"),
r = i.get("value");
null != r && (r = n.parse(r));
var s = Hm(i);
null == o && (a.status = s ? "show" : "hide");
var l = n.getExtent().slice();
l[0] > l[1] && l.reverse(), (null == r || r > l[1]) && (r = l[1]), r < l[0] && (r = l[0]), a.value = r, s && (a.status = e.axis.scale.isBlank() ? "hide" : "show")
}
}(t), Um.superApply(this, "render", arguments), Xm(this, t, e, i, n, !0)
},
updateAxisPointer: function(t, e, i, n, a) {
Xm(this, t, e, i, n, !1)
},
remove: function(t, e) {
var i = this._axisPointer;
i && i.remove(e), Um.superApply(this, "remove", arguments)
},
dispose: function(t, e) {
Ym(this, e), Um.superApply(this, "dispose", arguments)
}
});
function Xm(t, e, i, n, a, o) {
var r = Um.getAxisPointerClass(t.axisPointerClass);
if (r) {
var s = function(t) {
var e = Wm(t);
return e && e.axisPointerModel
}(e);
s ? (t._axisPointer || (t._axisPointer = new r)).render(e, s, n, o) : Ym(t, n)
}
}
function Ym(t, e, i) {
var n = t._axisPointer;
n && n.dispose(e, i), t._axisPointer = null
}
var jm = [];
function qm(t, e, i) {
i = i || {};
var n = t.coordinateSystem,
a = e.axis,
o = {},
r = a.getAxesOnZeroOf()[0],
s = a.position,
l = r ? "onZero" : s,
u = a.dim,
h = n.getRect(),
c = [h.x, h.x + h.width, h.y, h.y + h.height],
d = {
left: 0,
right: 1,
top: 0,
bottom: 1,
onZero: 2
},
f = e.get("offset") || 0,
p = "x" === u ? [c[2] - f, c[3] + f] : [c[0] - f, c[1] + f];
if (r) {
var g = r.toGlobalCoord(r.dataToCoord(0));
p[d.onZero] = Math.max(Math.min(g, p[1]), p[0])
}
o.position = ["y" === u ? p[d[l]] : c[0], "x" === u ? p[d[l]] : c[3]], o.rotation = Math.PI / 2 * ("x" === u ? 0 : 1);
o.labelDirection = o.tickDirection = o.nameDirection = {
top: -1,
bottom: 1,
left: -1,
right: 1
} [s], o.labelOffset = r ? p[d[s]] - p[d.onZero] : 0, e.get("axisTick.inside") && (o.tickDirection = -o.tickDirection), W(i.labelInside, e.get("axisLabel.inside")) && (o.labelDirection = -o.labelDirection);
var m = e.get("axisLabel.rotate");
return o.labelRotate = "top" === l ? -m : m, o.z2 = 1, o
}
Um.registerAxisPointerClass = function(t, e) {
jm[t] = e
}, Um.getAxisPointerClass = function(t) {
return t && jm[t]
};
var Km = ["axisLine", "axisTickLabel", "axisName"],
$m = ["splitArea", "splitLine"],
Jm = Um.extend({
type: "cartesianAxis",
axisPointerClass: "CartesianAxisPointer",
render: function(e, t, i, n) {
this.group.removeAll();
var a = this._axisGroup;
if (this._axisGroup = new Si, this.group.add(this._axisGroup), e.get("show")) {
var o = e.getCoordSysModel(),
r = qm(o, e),
s = new Cm(e, r);
O(Km, s.add, s), this._axisGroup.add(s.getGroup()), O($m, function(t) {
e.get(t + ".show") && this["_" + t](e, o)
}, this), Qs(a, this._axisGroup, e), Jm.superCall(this, "render", e, t, i, n)
}
},
remove: function() {
this._splitAreaColors = null
},
_splitLine: function(t, e) {
var i = t.axis;
if (!i.scale.isBlank()) {
var n = t.getModel("splitLine"),
a = n.getModel("lineStyle"),
o = a.get("color");
o = k(o) ? o : [o];
for (var r = e.coordinateSystem.getRect(), s = i.isHorizontal(), l = 0, u = i.getTicksCoords({
tickModel: n
}), h = [], c = [], d = a.getLineStyle(), f = 0; f < u.length; f++) {
var p = i.toGlobalCoord(u[f].coord);
s ? (h[0] = p, h[1] = r.y, c[0] = p, c[1] = r.y + r.height) : (h[0] = r.x, h[1] = p, c[0] = r.x + r.width, c[1] = p);
var g = l++ % o.length,
m = u[f].tickValue;
this._axisGroup.add(new Ur({
anid: null != m ? "line_" + u[f].tickValue : null,
subPixelOptimize: !0,
shape: {
x1: h[0],
y1: h[1],
x2: c[0],
y2: c[1]
},
style: C({
stroke: o[g]
}, d),
silent: !0
}))
}
}
},
_splitArea: function(t, e) {
var i = t.axis;
if (!i.scale.isBlank()) {
var n = t.getModel("splitArea"),
a = n.getModel("areaStyle"),
o = a.get("color"),
r = e.coordinateSystem.getRect(),
s = i.getTicksCoords({
tickModel: n,
clamp: !0
});
if (s.length) {
var l = o.length,
u = this._splitAreaColors,
h = Q(),
c = 0;
if (u)
for (var d = 0; d < s.length; d++) {
var f = u.get(s[d].tickValue);
if (null != f) {
c = (f + (l - 1) * d) % l;
break
}
}
var p = i.toGlobalCoord(s[0].coord),
g = a.getAreaStyle();
o = k(o) ? o : [o];
for (d = 1; d < s.length; d++) {
var m, v, y, x, _ = i.toGlobalCoord(s[d].coord);
p = i.isHorizontal() ? (m = p, v = r.y, y = _ - m, x = r.height, m + y) : (m = r.x, v = p, y = r.width, v + (x = _ - v));
var w = s[d - 1].tickValue;
null != w && h.set(w, c), this._axisGroup.add(new Hr({
anid: null != w ? "area_" + w : null,
shape: {
x: m,
y: v,
width: y,
height: x
},
style: C({
fill: o[c]
}, g),
silent: !0
})), c = (c + 1) % l
}
this._splitAreaColors = h
}
}
}
});
Jm.extend({
type: "xAxis"
}), Jm.extend({
type: "yAxis"
}), lf({
type: "grid",
render: function(t, e) {
this.group.removeAll(), t.get("show") && this.group.add(new Hr({
shape: t.coordinateSystem.getRect(),
style: C({
fill: t.get("backgroundColor")
}, t.getItemStyle()),
silent: !0,
z2: -1
}))
}
}), Jd(function(t) {
t.xAxis && t.yAxis && !t.grid && (t.grid = {})
}), af(rm("line", "circle", "line")), nf(sm("line")), Qd(cd.PROCESSOR.STATISTIC, {
seriesType: "line",
modifyOutputEnd: !0,
reset: function(t, e, i) {
var n = t.getData(),
a = t.get("sampling"),
o = t.coordinateSystem;
if ("cartesian2d" === o.type && a) {
var r, s = o.getBaseAxis(),
l = o.getOtherAxis(s),
u = s.getExtent(),
h = u[1] - u[0],
c = Math.round(n.count() / h);
1 < c && ("string" == typeof a ? r = um[a] : "function" == typeof a && (r = a), r && t.setData(n.downSample(n.mapDimension(l.dim), 1 / c, r, lm)))
}
}
});
var Qm = Wh.extend({
type: "series.__base_bar__",
getInitialData: function(t, e) {
return Xf(this.getSource(), this)
},
getMarkerPosition: function(t) {
var e = this.coordinateSystem;
if (e) {
var i = e.dataToPoint(e.clampData(t)),
n = this.getData(),
a = n.getLayout("offset"),
o = n.getLayout("size");
return i[e.getBaseAxis().isHorizontal() ? 0 : 1] += a + o / 2, i
}
return [NaN, NaN]
},
defaultOption: {
zlevel: 0,
z: 2,
coordinateSystem: "cartesian2d",
legendHoverLink: !0,
barMinHeight: 0,
barMinAngle: 0,
large: !1,
largeThreshold: 400,
progressive: 3e3,
progressiveChunkMode: "mod",
itemStyle: {},
emphasis: {}
}
});
function tv(t, e, i, n, a, o) {
Bs(t, e, i.getModel("label"), i.getModel("emphasis.label"), {
labelFetcher: a,
labelDataIndex: o,
defaultText: bg(a.getData(), o),
isRectText: !0,
autoColor: n
}), ev(t), ev(e)
}
function ev(t, e) {
"outside" === t.textPosition && (t.textPosition = e)
}
Qm.extend({
type: "series.bar",
dependencies: ["grid", "polar"],
brushSelector: "rect",
getProgressive: function() {
return !!this.get("large") && this.get("progressive")
},
getProgressiveThreshold: function() {
var t = this.get("progressiveThreshold"),
e = this.get("largeThreshold");
return t < e && (t = e), t
},
defaultOption: {
clip: !0
}
});
var iv = Xa([
["fill", "color"],
["stroke", "borderColor"],
["lineWidth", "borderWidth"],
["stroke", "barBorderColor"],
["lineWidth", "barBorderWidth"],
["opacity"],
["shadowBlur"],
["shadowOffsetX"],
["shadowOffsetY"],
["shadowColor"]
]),
nv = ["itemStyle", "barBorderWidth"],
av = [0, 0];
L(dl.prototype, {
getBarItemStyle: function(t) {
var e = iv(this, t);
if (this.getBorderLineDash) {
var i = this.getBorderLineDash();
i && (e.lineDash = i)
}
return e
}
}), hf({
type: "bar",
render: function(t, e, i) {
this._updateDrawMode(t);
var n = t.get("coordinateSystem");
return "cartesian2d" !== n && "polar" !== n || (this._isLargeDraw ? this._renderLarge(t, e, i) : this._renderNormal(t, e, i)), this.group
},
incrementalPrepareRender: function(t, e, i) {
this._clear(), this._updateDrawMode(t)
},
incrementalRender: function(t, e, i, n) {
this._incrementalRenderLarge(t, e)
},
_updateDrawMode: function(t) {
var e = t.pipelineContext.large;
(null == this._isLargeDraw || e ^ this._isLargeDraw) && (this._isLargeDraw = e, this._clear())
},
_renderNormal: function(o, t, e) {
var r, s = this.group,
l = o.getData(),
u = this._data,
h = o.coordinateSystem,
i = h.getBaseAxis();
"cartesian2d" === h.type ? r = i.isHorizontal() : "polar" === h.type && (r = "angle" === i.dim);
var c = o.isAnimationEnabled() ? o : null,
d = o.get("clip", !0),
f = function(t, e) {
var i = t.getArea && t.getArea();
if ("cartesian2d" === t.type) {
var n = t.getBaseAxis();
if ("category" !== n.type || !n.onBand) {
var a = e.getLayout("bandWidth");
n.isHorizontal() ? (i.x -= a, i.width += 2 * a) : (i.y -= a, i.height += 2 * a)
}
}
return i
}(h, l);
s.removeClipPath(), l.diff(u).add(function(t) {
if (l.hasValue(t)) {
var e = l.getItemModel(t),
i = cv[h.type](l, t, e);
if (d)
if (sv[h.type](f, i)) return void s.remove(n);
var n = lv[h.type](l, t, e, i, r, c);
l.setItemGraphicEl(t, n), s.add(n), dv(n, l, t, e, i, o, r, "polar" === h.type)
}
}).update(function(t, e) {
var i = u.getItemGraphicEl(e);
if (l.hasValue(t)) {
var n = l.getItemModel(t),
a = cv[h.type](l, t, n);
if (d)
if (sv[h.type](f, a)) return void s.remove(i);
i ? js(i, {
shape: a
}, c, t) : i = lv[h.type](l, t, n, a, r, c, !0), l.setItemGraphicEl(t, i), s.add(i), dv(i, l, t, n, a, o, r, "polar" === h.type)
} else s.remove(i)
}).remove(function(t) {
var e = u.getItemGraphicEl(t);
"cartesian2d" === h.type ? e && uv(t, c, e) : e && hv(t, c, e)
}).execute(), this._data = l
},
_renderLarge: function(t, e, i) {
this._clear(), pv(t, this.group);
var n = t.get("clip", !0) ? tm(t.coordinateSystem, !1, t) : null;
n ? this.group.setClipPath(n) : this.group.removeClipPath()
},
_incrementalRenderLarge: function(t, e) {
pv(e, this.group, !0)
},
dispose: et,
remove: function(t) {
this._clear(t)
},
_clear: function(e) {
var t = this.group,
i = this._data;
e && e.get("animation") && i && !this._isLargeDraw ? i.eachItemGraphicEl(function(t) {
"sector" === t.type ? hv(t.dataIndex, e, t) : uv(t.dataIndex, e, t)
}) : t.removeAll(), this._data = null
}
});
var ov = Math.max,
rv = Math.min,
sv = {
cartesian2d: function(t, e) {
var i = e.width < 0 ? -1 : 1,
n = e.height < 0 ? -1 : 1;
i < 0 && (e.x += e.width, e.width = -e.width), n < 0 && (e.y += e.height, e.height = -e.height);
var a = ov(e.x, t.x),
o = rv(e.x + e.width, t.x + t.width),
r = ov(e.y, t.y),
s = rv(e.y + e.height, t.y + t.height);
e.x = a, e.y = r, e.width = o - a, e.height = s - r;
var l = e.width < 0 || e.height < 0;
return i < 0 && (e.x += e.width, e.width = -e.width), n < 0 && (e.y += e.height, e.height = -e.height), l
},
polar: function(t) {
return !1
}
},
lv = {
cartesian2d: function(t, e, i, n, a, o, r) {
var s = new Hr({
shape: L({}, n)
});
if (o) {
var l = a ? "height" : "width",
u = {};
s.shape[l] = 0, u[l] = n[l], ol[r ? "updateProps" : "initProps"](s, {
shape: u
}, o, e)
}
return s
},
polar: function(t, e, i, n, a, o, r) {
var s = n.startAngle < n.endAngle,
l = new Pr({
shape: C({
clockwise: s
}, n)
});
if (o) {
var u = a ? "r" : "endAngle",
h = {};
l.shape[u] = a ? 0 : n.startAngle, h[u] = n[u], ol[r ? "updateProps" : "initProps"](l, {
shape: h
}, o, e)
}
return l
}
};
function uv(t, e, i) {
i.style.text = null, js(i, {
shape: {
width: 0
}
}, e, t, function() {
i.parent && i.parent.remove(i)
})
}
function hv(t, e, i) {
i.style.text = null, js(i, {
shape: {
r: i.shape.r0
}
}, e, t, function() {
i.parent && i.parent.remove(i)
})
}
var cv = {
cartesian2d: function(t, e, i) {
var n = t.getItemLayout(e),
a = function(t, e) {
var i = t.get(nv) || 0;
return Math.min(i, Math.abs(e.width), Math.abs(e.height))
}(i, n),
o = 0 < n.width ? 1 : -1,
r = 0 < n.height ? 1 : -1;
return {
x: n.x + o * a / 2,
y: n.y + r * a / 2,
width: n.width - o * a,
height: n.height - r * a
}
},
polar: function(t, e, i) {
var n = t.getItemLayout(e);
return {
cx: n.cx,
cy: n.cy,
r0: n.r0,
r: n.r,
startAngle: n.startAngle,
endAngle: n.endAngle
}
}
};
function dv(t, e, i, n, a, o, r, s) {
var l = e.getItemVisual(i, "color"),
u = e.getItemVisual(i, "opacity"),
h = n.getModel("itemStyle"),
c = n.getModel("emphasis.itemStyle").getBarItemStyle();
s || t.setShape("r", h.get("barBorderRadius") || 0), t.useStyle(C({
fill: l,
opacity: u
}, h.getBarItemStyle()));
var d = n.getShallow("cursor");
d && t.attr("cursor", d);
r ? a.height : a.width;
s || tv(t.style, c, n, l, o, i), Os(t, c)
}
var fv = hr.extend({
type: "largeBar",
shape: {
points: []
},
buildPath: function(t, e) {
for (var i = e.points, n = this.__startPoint, a = this.__baseDimIdx, o = 0; o < i.length; o += 2) n[a] = i[o + a], t.moveTo(n[0], n[1]), t.lineTo(i[o], i[o + 1])
}
});
function pv(t, e, i) {
var n = t.getData(),
a = [],
o = n.getLayout("valueAxisHorizontal") ? 1 : 0;
a[1 - o] = n.getLayout("valueAxisStart");
var r = new fv({
shape: {
points: n.getLayout("largePoints")
},
incremental: !!i,
__startPoint: a,
__baseDimIdx: o,
__largeDataIndices: n.getLayout("largeDataIndices"),
__barWidth: n.getLayout("barWidth")
});
e.add(r),
function(t, e, i) {
var n = i.getVisual("borderColor") || i.getVisual("color"),
a = e.getModel("itemStyle").getItemStyle(["color", "borderColor"]);
t.useStyle(a), t.style.fill = null, t.style.stroke = n, t.style.lineWidth = i.getLayout("barWidth")
}(r, t, n), r.seriesIndex = t.seriesIndex, t.get("silent") || (r.on("mousedown", gv), r.on("mousemove", gv))
}
var gv = cc(function(t) {
var e = function(t, e, i) {
var n = t.__baseDimIdx,
a = 1 - n,
o = t.shape.points,
r = t.__largeDataIndices,
s = Math.abs(t.__barWidth / 2),
l = t.__startPoint[a];
av[0] = e, av[1] = i;
for (var u = av[n], h = av[1 - n], c = u - s, d = u + s, f = 0, p = o.length / 2; f < p; f++) {
var g = 2 * f,
m = o[g + n],
v = o[g + a];
if (c <= m && m <= d && (l <= v ? l <= h && h <= v : v <= h && h <= l)) return r[f]
}
return -1
}(this, t.offsetX, t.offsetY);
this.dataIndex = 0 <= e ? e : null
}, 30, !1);
nf(cd.VISUAL.LAYOUT, A(pp, "bar")), nf(cd.VISUAL.PROGRESSIVE_LAYOUT, gp), af({
seriesType: "bar",
reset: function(t) {
t.getData().setVisual("legendSymbol", "roundRect")
}
});
function mv(t, e, i) {
e = k(e) && {
coordDimensions: e
} || L({}, e);
var n = t.getSource(),
a = Wf(n, e),
o = new Tf(a, t);
return o.initData(n, i), o
}
var vv = {
updateSelectedMap: function(t) {
this._targetList = k(t) ? t.slice() : [], this._selectTargetMap = S(t || [], function(t, e) {
return t.set(e.name, e), t
}, Q())
},
select: function(t, e) {
var i = null != e ? this._targetList[e] : this._selectTargetMap.get(t);
"single" === this.get("selectedMode") && this._selectTargetMap.each(function(t) {
t.selected = !1
}), i && (i.selected = !0)
},
unSelect: function(t, e) {
var i = null != e ? this._targetList[e] : this._selectTargetMap.get(t);
i && (i.selected = !1)
},
toggleSelected: function(t, e) {
var i = null != e ? this._targetList[e] : this._selectTargetMap.get(t);
if (null != i) return this[i.selected ? "unSelect" : "select"](t, e), i.selected
},
isSelected: function(t, e) {
var i = null != e ? this._targetList[e] : this._selectTargetMap.get(t);
return i && i.selected
}
},
yv = uf({
type: "series.pie",
init: function(t) {
yv.superApply(this, "init", arguments), this.legendDataProvider = function() {
return this.getRawData()
}, this.updateSelectedMap(this._createSelectableList()), this._defaultLabelLine(t)
},
mergeOption: function(t) {
yv.superCall(this, "mergeOption", t), this.updateSelectedMap(this._createSelectableList())
},
getInitialData: function(t, e) {
return mv(this, ["value"])
},
_createSelectableList: function() {
for (var t = this.getRawData(), e = t.mapDimension("value"), i = [], n = 0, a = t.count(); n < a; n++) i.push({
name: t.getName(n),
value: t.get(e, n),
selected: Ih(t, n, "selected")
});
return i
},
getDataParams: function(t) {
var e = this.getData(),
i = yv.superCall(this, "getDataParams", t),
n = [];
return e.each(e.mapDimension("value"), function(t) {
n.push(t)
}), i.percent = Il(n, t, e.hostModel.get("percentPrecision")), i.$vars.push("percent"), i
},
_defaultLabelLine: function(t) {
ba(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
},
defaultOption: {
zlevel: 0,
z: 2,
legendHoverLink: !0,
hoverAnimation: !0,
center: ["50%", "50%"],
radius: [0, "75%"],
clockwise: !0,
startAngle: 90,
minAngle: 0,
minShowLabelAngle: 0,
selectedOffset: 10,
hoverOffset: 10,
avoidLabelOverlap: !0,
percentPrecision: 2,
stillShowZeroSum: !0,
label: {
rotate: !1,
show: !0,
position: "outer"
},
labelLine: {
show: !0,
length: 15,
length2: 15,
smooth: !1,
lineStyle: {
width: 1,
type: "solid"
}
},
itemStyle: {
borderWidth: 1
},
animationType: "expansion",
animationTypeUpdate: "transition",
animationEasing: "cubicOut"
}
});
function xv(t, e, i, n) {
var a = e.getData(),
o = this.dataIndex,
r = a.getName(o),
s = e.get("selectedOffset");
n.dispatchAction({
type: "pieToggleSelect",
from: t,
name: r,
seriesId: e.id
}), a.each(function(t) {
_v(a.getItemGraphicEl(t), a.getItemLayout(t), e.isSelected(a.getName(t)), s, i)
})
}
function _v(t, e, i, n, a) {
var o = (e.startAngle + e.endAngle) / 2,
r = i ? n : 0,
s = [Math.cos(o) * r, Math.sin(o) * r];
a ? t.animate().when(200, {
position: s
}).start("bounceOut") : t.attr("position", s)
}
function wv(t, e) {
Si.call(this);
var i = new Pr({
z2: 2
}),
n = new Er,
a = new Dr;
this.add(i), this.add(n), this.add(a), this.updateData(t, e, !0)
}
b(yv, vv);
var bv = wv.prototype;
bv.updateData = function(t, e, i) {
var n = this.childAt(0),
a = this.childAt(1),
o = this.childAt(2),
r = t.hostModel,
s = t.getItemModel(e),
l = t.getItemLayout(e),
u = L({}, l);
u.label = null;
var h = r.getShallow("animationTypeUpdate");
i ? (n.setShape(u), "scale" === r.getShallow("animationType") ? (n.shape.r = l.r0, qs(n, {
shape: {
r: l.r
}
}, r, e)) : (n.shape.endAngle = l.startAngle, js(n, {
shape: {
endAngle: l.endAngle
}
}, r, e))) : "expansion" === h ? n.setShape(u) : js(n, {
shape: u
}, r, e);
var c = t.getItemVisual(e, "color");
n.useStyle(C({
lineJoin: "bevel",
fill: c
}, s.getModel("itemStyle").getItemStyle())), n.hoverStyle = s.getModel("emphasis.itemStyle").getItemStyle();
var d = s.getShallow("cursor");
d && n.attr("cursor", d), _v(this, t.getItemLayout(e), r.isSelected(null, e), r.get("selectedOffset"), r.get("animation"));
var f = !i && "transition" === h;
this._updateLabel(t, e, f), this.highDownOnUpdate = s.get("hoverAnimation") && r.isAnimationEnabled() ? function(t, e) {
"emphasis" === e ? (a.ignore = a.hoverIgnore, o.ignore = o.hoverIgnore, n.stopAnimation(!0), n.animateTo({
shape: {
r: l.r + r.get("hoverOffset")
}
}, 300, "elasticOut")) : (a.ignore = a.normalIgnore, o.ignore = o.normalIgnore, n.stopAnimation(!0), n.animateTo({
shape: {
r: l.r
}
}, 300, "elasticOut"))
} : null, Os(this)
}, bv._updateLabel = function(t, e, i) {
var n = this.childAt(1),
a = this.childAt(2),
o = t.hostModel,
r = t.getItemModel(e),
s = t.getItemLayout(e).label,
l = t.getItemVisual(e, "color");
if (!s || isNaN(s.x) || isNaN(s.y)) a.ignore = a.normalIgnore = a.hoverIgnore = n.ignore = n.normalIgnore = n.hoverIgnore = !0;
else {
var u = {
points: s.linePoints || [
[s.x, s.y],
[s.x, s.y],
[s.x, s.y]
]
},
h = {
x: s.x,
y: s.y
};
i ? (js(n, {
shape: u
}, o, e), js(a, {
style: h
}, o, e)) : (n.attr({
shape: u
}), a.attr({
style: h
})), a.attr({
rotation: s.rotation,
origin: [s.x, s.y],
z2: 10
});
var c = r.getModel("label"),
d = r.getModel("emphasis.label"),
f = r.getModel("labelLine"),
p = r.getModel("emphasis.labelLine");
l = t.getItemVisual(e, "color");
Bs(a.style, a.hoverStyle = {}, c, d, {
labelFetcher: t.hostModel,
labelDataIndex: e,
defaultText: t.getName(e),
autoColor: l,
useInsideStyle: !!s.inside
}, {
textAlign: s.textAlign,
textVerticalAlign: s.verticalAlign,
opacity: t.getItemVisual(e, "opacity")
}), a.ignore = a.normalIgnore = !c.get("show"), a.hoverIgnore = !d.get("show"), n.ignore = n.normalIgnore = !f.get("show"), n.hoverIgnore = !p.get("show"), n.setStyle({
stroke: l,
opacity: t.getItemVisual(e, "opacity")
}), n.setStyle(f.getModel("lineStyle").getLineStyle()), n.hoverStyle = p.getModel("lineStyle").getLineStyle();
var g = f.get("smooth");
g && !0 === g && (g = .4), n.setShape({
smooth: g
})
}
}, w(wv, Si);
function Sv(i, t) {
O(t, function(o) {
o.update = "updateView", tf(o, function(t, e) {
var a = {};
return e.eachComponent({
mainType: "series",
subType: i,
query: t
}, function(i) {
i[o.method] && i[o.method](t.name, t.dataIndex);
var n = i.getData();
n.each(function(t) {
var e = n.getName(t);
a[e] = i.isSelected(e) || !1
})
}), {
name: t.name,
selected: a,
seriesId: t.seriesId
}
})
})
}
function Mv(n) {
return {
getTargetSeries: function(t) {
var e = {},
i = Q();
return t.eachSeriesByType(n, function(t) {
t.__paletteScope = e, i.set(t.uid, t)
}), i
},
reset: function(s, t) {
var l = s.getRawData(),
u = {},
h = s.getData();
h.each(function(t) {
var e = h.getRawIndex(t);
u[e] = t
}), l.each(function(t) {
var e, i = u[t],
n = null != i && h.getItemVisual(i, "color", !0),
a = null != i && h.getItemVisual(i, "borderColor", !0);
if (n && a || (e = l.getItemModel(t)), n) l.setItemVisual(t, "color", n);
else {
var o = e.get("itemStyle.color") || s.getColorFromPalette(l.getName(t) || t + "", s.__paletteScope, l.count());
l.setItemVisual(t, "color", o), null != i && h.setItemVisual(i, "color", o)
}
if (a) l.setItemVisual(t, "borderColor", a);
else {
var r = e.get("itemStyle.borderColor");
l.setItemVisual(t, "borderColor", r), null != i && h.setItemVisual(i, "borderColor", r)
}
})
}
}
}
ec.extend({
type: "pie",
init: function() {
var t = new Si;
this._sectorGroup = t
},
render: function(t, e, i, n) {
if (!n || n.from !== this.uid) {
var a = t.getData(),
o = this._data,
r = this.group,
s = e.get("animation"),
l = !o,
u = t.get("animationType"),
h = t.get("animationTypeUpdate"),
c = A(xv, this.uid, t, s, i),
d = t.get("selectedMode");
if (a.diff(o).add(function(t) {
var e = new wv(a, t);
l && "scale" !== u && e.eachChild(function(t) {
t.stopAnimation(!0)
}), d && e.on("click", c), a.setItemGraphicEl(t, e), r.add(e)
}).update(function(t, e) {
var i = o.getItemGraphicEl(e);
l || "transition" === h || i.eachChild(function(t) {
t.stopAnimation(!0)
}), i.updateData(a, t), i.off("click"), d && i.on("click", c), r.add(i), a.setItemGraphicEl(t, i)
}).remove(function(t) {
var e = o.getItemGraphicEl(t);
r.remove(e)
}).execute(), s && 0 < a.count() && (l ? "scale" !== u : "transition" !== h)) {
for (var f = a.getItemLayout(0), p = 1; isNaN(f.startAngle) && p < a.count(); ++p) f = a.getItemLayout(p);
var g = Math.max(i.getWidth(), i.getHeight()) / 2,
m = T(r.removeClipPath, r);
r.setClipPath(this._createClipPath(f.cx, f.cy, g, f.startAngle, f.clockwise, m, t, l))
} else r.removeClipPath();
this._data = a
}
},
dispose: function() {},
_createClipPath: function(t, e, i, n, a, o, r, s) {
var l = new Pr({
shape: {
cx: t,
cy: e,
r0: 0,
r: i,
startAngle: n,
endAngle: n,
clockwise: a
}
});
return (s ? qs : js)(l, {
shape: {
endAngle: n + (a ? 1 : -1) * Math.PI * 2
}
}, r, o), l
},
containPoint: function(t, e) {
var i = e.getData().getItemLayout(0);
if (i) {
var n = t[0] - i.cx,
a = t[1] - i.cy,
o = Math.sqrt(n * n + a * a);
return o <= i.r && o >= i.r0
}
}
});
var Iv = Math.PI / 180;
function Av(a, t, e, i, n, o, r) {
function s(t, e, i) {
for (var n = t; n < e; n++)
if (a[n].y += i, t < n && n + 1 < e && a[n + 1].y > a[n].y + a[n].height) return void l(n, i / 2);
l(e - 1, i / 2)
}
function l(t, e) {
for (var i = t; 0 <= i && (a[i].y -= e, !(0 < i && a[i].y > a[i - 1].y + a[i - 1].height)); i--);
}
function u(t, e, i, n, a, o) {
for (var r = e ? Number.MAX_VALUE : 0, s = 0, l = t.length; s < l; s++) {
var u = Math.abs(t[s].y - n),
h = t[s].len,
c = t[s].len2,
d = u < a + h ? Math.sqrt((a + h + c) * (a + h + c) - u * u) : Math.abs(t[s].x - i);
e && r <= d && (d = r - 10), !e && d <= r && (d = r + 10), t[s].x = i + d * o, r = d
}
}
a.sort(function(t, e) {
return t.y - e.y
});
for (var h, c = 0, d = a.length, f = [], p = [], g = 0; g < d; g++)(h = a[g].y - c) < 0 && s(g, d, -h), c = a[g].y + a[g].height;
r - c < 0 && l(d - 1, c - r);
for (g = 0; g < d; g++) a[g].y >= e ? p.push(a[g]) : f.push(a[g]);
u(f, !1, t, e, i, n), u(p, !0, t, e, i, n)
}
function Tv(t) {
return "center" === t.position
}
function Dv(I, A, t, e, i) {
var T, D, C = I.getData(),
L = [],
k = !1,
P = (I.get("minShowLabelAngle") || 0) * Iv;
C.each(function(t) {
var e = C.getItemLayout(t),
i = C.getItemModel(t),
n = i.getModel("label"),
a = n.get("position") || i.get("emphasis.label.position"),
o = i.getModel("labelLine"),
r = o.get("length"),
s = o.get("length2");
if (!(e.angle < P)) {
var l, u, h, c, d = (e.startAngle + e.endAngle) / 2,
f = Math.cos(d),
p = Math.sin(d);
T = e.cx, D = e.cy;
var g = "inside" === a || "inner" === a;
if ("center" === a) l = e.cx, u = e.cy, c = "center";
else {
var m = (g ? (e.r + e.r0) / 2 * f : e.r * f) + T,
v = (g ? (e.r + e.r0) / 2 * p : e.r * p) + D;
if (l = m + 3 * f, u = v + 3 * p, !g) {
var y = m + f * (r + A - e.r),
x = v + p * (r + A - e.r),
_ = y + (f < 0 ? -1 : 1) * s;
l = _ + (f < 0 ? -5 : 5), h = [
[m, v],
[y, x],
[_, u = x]
]
}
c = g ? "center" : 0 < f ? "left" : "right"
}
var w, b = n.getFont(),
S = n.get("rotate");
w = "number" == typeof S ? S * (Math.PI / 180) : S ? f < 0 ? -d + Math.PI : -d : 0;
var M = un(I.getFormattedLabel(t, "normal") || C.getName(t), b, c, "top");
k = !!w, e.label = {
x: l,
y: u,
position: a,
height: M.height,
len: r,
len2: s,
linePoints: h,
textAlign: c,
verticalAlign: "middle",
rotation: w,
inside: g
}, g || L.push(e.label)
}
}), !k && I.get("avoidLabelOverlap") && function(t, e, i, n, a, o) {
for (var r = [], s = [], l = 0; l < t.length; l++) Tv(t[l]) || (t[l].x < e ? r.push(t[l]) : s.push(t[l]));
for (Av(s, e, i, n, 1, 0, o), Av(r, e, i, n, -1, 0, o), l = 0; l < t.length; l++)
if (!Tv(t[l])) {
var u = t[l].linePoints;
if (u) {
var h = u[1][0] - u[2][0];
t[l].x < e ? u[2][0] = t[l].x + 3 : u[2][0] = t[l].x - 3, u[1][1] = u[2][1] = t[l].y, u[1][0] = u[2][0] + h
}
}
}(L, T, D, A, 0, e)
}
function Cv(t) {
return {
seriesType: t,
reset: function(t, e) {
var n = e.findComponents({
mainType: "legend"
});
if (n && n.length) {
var a = t.getData();
a.filterSelf(function(t) {
for (var e = a.getName(t), i = 0; i < n.length; i++)
if (!n[i].isSelected(e)) return !1;
return !0
})
}
}
}
}
var Lv = 2 * Math.PI,
kv = Math.PI / 180;
Sv("pie", [{
type: "pieToggleSelect",
event: "pieselectchanged",
method: "toggleSelected"
}, {
type: "pieSelect",
event: "pieselected",
method: "select"
}, {
type: "pieUnSelect",
event: "pieunselected",
method: "unSelect"
}]), af(Mv("pie")), nf(A(function(t, e, A, i) {
e.eachSeriesByType(t, function(t) {
var a = t.getData(),
e = a.mapDimension("value"),
i = t.get("center"),
n = t.get("radius");
k(n) || (n = [0, n]), k(i) || (i = [i, i]);
var o = A.getWidth(),
r = A.getHeight(),
s = Math.min(o, r),
l = xl(i[0], o),
u = xl(i[1], r),
h = xl(n[0], s / 2),
c = xl(n[1], s / 2),
d = -t.get("startAngle") * kv,
f = t.get("minAngle") * kv,
p = 0;
a.each(e, function(t) {
isNaN(t) || p++
});
var g = a.getSum(e),
m = Math.PI / (g || p) * 2,
v = t.get("clockwise"),
y = t.get("roseType"),
x = t.get("stillShowZeroSum"),
_ = a.getDataExtent(e);
_[0] = 0;
var w = Lv,
b = 0,
S = d,
M = v ? 1 : -1;
if (a.each(e, function(t, e) {
var i;
if (isNaN(t)) a.setItemLayout(e, {
angle: NaN,
startAngle: NaN,
endAngle: NaN,
clockwise: v,
cx: l,
cy: u,
r0: h,
r: y ? NaN : c
});
else {
(i = "area" !== y ? 0 === g && x ? m : t * m : Lv / p) < f ? w -= i = f : b += t;
var n = S + M * i;
a.setItemLayout(e, {
angle: i,
startAngle: S,
endAngle: n,
clockwise: v,
cx: l,
cy: u,
r0: h,
r: y ? yl(t, _, [h, c]) : c
}), S = n
}
}), w < Lv && p)
if (w <= .001) {
var I = Lv / p;
a.each(e, function(t, e) {
if (!isNaN(t)) {
var i = a.getItemLayout(e);
i.angle = I, i.startAngle = d + M * e * I, i.endAngle = d + M * (e + 1) * I
}
})
} else m = w / b, S = d, a.each(e, function(t, e) {
if (!isNaN(t)) {
var i = a.getItemLayout(e),
n = i.angle === f ? f : t * m;
i.startAngle = S, i.endAngle = S + M * n, S += M * n
}
});
Dv(t, c, 0, r)
})
}, "pie")), Qd(Cv("pie")), Wh.extend({
type: "series.scatter",
dependencies: ["grid", "polar", "geo", "singleAxis", "calendar"],
getInitialData: function(t, e) {
return Xf(this.getSource(), this)
},
brushSelector: "point",
getProgressive: function() {
var t = this.option.progressive;
return null == t ? this.option.large ? 5e3 : this.get("progressive") : t
},
getProgressiveThreshold: function() {
var t = this.option.progressiveThreshold;
return null == t ? this.option.large ? 1e4 : this.get("progressiveThreshold") : t
},
defaultOption: {
coordinateSystem: "cartesian2d",
zlevel: 0,
z: 2,
legendHoverLink: !0,
hoverAnimation: !0,
symbolSize: 10,
large: !1,
largeThreshold: 2e3,
itemStyle: {
opacity: .8
},
clip: !0
}
});
var Pv = ds({
shape: {
points: null
},
symbolProxy: null,
softClipShape: null,
buildPath: function(t, e) {
var i = e.points,
n = e.size,
a = this.symbolProxy,
o = a.shape;
if (!((t.getContext ? t.getContext() : t) && n[0] < 4))
for (var r = 0; r < i.length;) {
var s = i[r++],
l = i[r++];
isNaN(s) || isNaN(l) || this.softClipShape && !this.softClipShape.contain(s, l) || (o.x = s - n[0] / 2, o.y = l - n[1] / 2, o.width = n[0], o.height = n[1], a.buildPath(t, o, !0))
}
},
afterBrush: function(t) {
var e = this.shape,
i = e.points,
n = e.size;
if (n[0] < 4) {
this.setTransform(t);
for (var a = 0; a < i.length;) {
var o = i[a++],
r = i[a++];
isNaN(o) || isNaN(r) || this.softClipShape && !this.softClipShape.contain(o, r) || t.fillRect(o - n[0] / 2, r - n[1] / 2, n[0], n[1])
}
this.restoreTransform(t)
}
},
findDataIndex: function(t, e) {
for (var i = this.shape, n = i.points, a = i.size, o = Math.max(a[0], 4), r = Math.max(a[1], 4), s = n.length / 2 - 1; 0 <= s; s--) {
var l = 2 * s,
u = n[l] - o / 2,
h = n[1 + l] - r / 2;
if (u <= t && h <= e && t <= u + o && e <= h + r) return s
}
return -1
}
});
function Nv() {
this.group = new Si
}
var Ov = Nv.prototype;
function Rv(t, e, i) {
vg.call(this, t, e, i), this.type = "value", this.angle = 0, this.name = "", this.model
}
function zv(t, e, i) {
this._model = t, this.dimensions = [], this._indicatorAxes = N(t.getIndicatorModels(), function(t, e) {
var i = "indicator_" + e,
n = new Rv(i, new op);
return n.name = t.get("name"), (n.model = t).axis = n, this.dimensions.push(i), n
}, this), this.resize(t, i), this.cx, this.cy, this.r, this.r0, this.startAngle
}
Ov.isPersistent = function() {
return !this._incremental
}, Ov.updateData = function(t, e) {
this.group.removeAll();
var i = new Pv({
rectHover: !0,
cursor: "default"
});
i.setShape({
points: t.getLayout("symbolPoints")
}), this._setCommon(i, t, !1, e), this.group.add(i), this._incremental = null
}, Ov.updateLayout = function(t) {
if (!this._incremental) {
var n = t.getLayout("symbolPoints");
this.group.eachChild(function(t) {
if (null != t.startIndex) {
var e = 2 * (t.endIndex - t.startIndex),
i = 4 * t.startIndex * 2;
n = new Float32Array(n.buffer, i, e)
}
t.setShape("points", n)
})
}
}, Ov.incrementalPrepareUpdate = function(t) {
this.group.removeAll(), this._clearIncremental(), 2e6 < t.count() ? (this._incremental || (this._incremental = new ts({
silent: !0
})), this.group.add(this._incremental)) : this._incremental = null
}, Ov.incrementalUpdate = function(t, e, i) {
var n;
this._incremental ? (n = new Pv, this._incremental.addDisplayable(n, !0)) : ((n = new Pv({
rectHover: !0,
cursor: "default",
startIndex: t.start,
endIndex: t.end
})).incremental = !0, this.group.add(n)), n.setShape({
points: e.getLayout("symbolPoints")
}), this._setCommon(n, e, !!this._incremental, i)
}, Ov._setCommon = function(i, t, e, n) {
var a = t.hostModel;
n = n || {};
var o = t.getVisual("symbolSize");
i.setShape("size", o instanceof Array ? o : [o, o]), i.softClipShape = n.clipShape || null, i.symbolProxy = Jp(t.getVisual("symbol"), 0, 0, 0, 0), i.setColor = i.symbolProxy.setColor;
var r = i.shape.size[0] < 4;
i.useStyle(a.getModel("itemStyle").getItemStyle(r ? ["color", "shadowBlur", "shadowColor"] : ["color"]));
var s = t.getVisual("color");
s && i.setColor(s), e || (i.seriesIndex = a.seriesIndex, i.on("mousemove", function(t) {
i.dataIndex = null;
var e = i.findDataIndex(t.offsetX, t.offsetY);
0 <= e && (i.dataIndex = e + (i.startIndex || 0))
}))
}, Ov.remove = function() {
this._clearIncremental(), this._incremental = null, this.group.removeAll()
}, Ov._clearIncremental = function() {
var t = this._incremental;
t && t.clearDisplaybles()
}, hf({
type: "scatter",
render: function(t, e, i) {
var n = t.getData();
this._updateSymbolDraw(n, t).updateData(n, {
clipShape: this._getClipShape(t)
}), this._finished = !0
},
incrementalPrepareRender: function(t, e, i) {
var n = t.getData();
this._updateSymbolDraw(n, t).incrementalPrepareUpdate(n), this._finished = !1
},
incrementalRender: function(t, e, i) {
this._symbolDraw.incrementalUpdate(t, e.getData(), {
clipShape: this._getClipShape(e)
}), this._finished = t.end === e.getData().count()
},
updateTransform: function(t, e, i) {
var n = t.getData();
if (this.group.dirty(), !this._finished || 1e4 < n.count() || !this._symbolDraw.isPersistent()) return {
update: !0
};
var a = sm().reset(t);
a.progress && a.progress({
start: 0,
end: n.count()
}, n), this._symbolDraw.updateLayout(n)
},
_getClipShape: function(t) {
var e = t.coordinateSystem,
i = e && e.getArea && e.getArea();
return t.get("clip", !0) ? i : null
},
_updateSymbolDraw: function(t, e) {
var i = this._symbolDraw,
n = e.pipelineContext.large;
return i && n === this._isLargeDraw || (i && i.remove(), i = this._symbolDraw = n ? new Nv : new Ng, this._isLargeDraw = n, this.group.removeAll()), this.group.add(i.group), i
},
remove: function(t, e) {
this._symbolDraw && this._symbolDraw.remove(!0), this._symbolDraw = null
},
dispose: function() {}
}), af(rm("scatter", "circle")), nf(sm("scatter")), w(Rv, vg), zv.prototype.getIndicatorAxes = function() {
return this._indicatorAxes
}, zv.prototype.dataToPoint = function(t, e) {
var i = this._indicatorAxes[e];
return this.coordToPoint(i.dataToCoord(t), e)
}, zv.prototype.coordToPoint = function(t, e) {
var i = this._indicatorAxes[e].angle;
return [this.cx + t * Math.cos(i), this.cy - t * Math.sin(i)]
}, zv.prototype.pointToData = function(t) {
var e = t[0] - this.cx,
i = t[1] - this.cy,
n = Math.sqrt(e * e + i * i);
e /= n, i /= n;
for (var a, o = Math.atan2(-i, e), r = 1 / 0, s = -1, l = 0; l < this._indicatorAxes.length; l++) {
var u = this._indicatorAxes[l],
h = Math.abs(o - u.angle);
h < r && (a = u, s = l, r = h)
}
return [s, +(a && a.coordToData(n))]
}, zv.prototype.resize = function(t, e) {
var i = t.get("center"),
n = e.getWidth(),
a = e.getHeight(),
o = Math.min(n, a) / 2;
this.cx = xl(i[0], n), this.cy = xl(i[1], a), this.startAngle = t.get("startAngle") * Math.PI / 180;
var r = t.get("radius");
"string" != typeof r && "number" != typeof r || (r = [0, r]), this.r0 = xl(r[0], o), this.r = xl(r[1], o), O(this._indicatorAxes, function(t, e) {
t.setExtent(this.r0, this.r);
var i = this.startAngle + e * Math.PI * 2 / this._indicatorAxes.length;
i = Math.atan2(Math.sin(i), Math.cos(i)), t.angle = i
}, this)
}, zv.prototype.update = function(n, t) {
var a = this._indicatorAxes,
o = this._model;
O(a, function(t) {
t.scale.setExtent(1 / 0, -1 / 0)
}), n.eachSeriesByType("radar", function(t, e) {
if ("radar" === t.get("coordinateSystem") && n.getComponent("radar", t.get("radarIndex")) === o) {
var i = t.getData();
O(a, function(t) {
t.scale.unionExtentFromData(i, i.mapDimension(t.dim))
})
}
}, this);
var f = o.get("splitNumber");
function p(t) {
var e = Math.pow(10, Math.floor(Math.log(t) / Math.LN10)),
i = t / e;
return 2 === i ? i = 5 : i *= 2, i * e
}
O(a, function(t, e) {
var i = zp(t.scale, t.model);
Ep(t.scale, t.model);
var n = t.model,
a = t.scale,
o = n.getMin(),
r = n.getMax(),
s = a.getInterval();
if (null != o && null != r) a.setExtent(+o, +r), a.setInterval((r - o) / f);
else if (null != o)
for (var l; l = o + s * f, a.setExtent(+o, l), a.setInterval(s), s = p(s), l < i[1] && isFinite(l) && isFinite(i[1]););
else if (null != r)
for (var u; u = r - s * f, a.setExtent(u, +r), a.setInterval(s), s = p(s), u > i[0] && isFinite(u) && isFinite(i[0]););
else {
var h = a.getTicks().length - 1;
f < h && (s = p(s));
var c = Math.round((i[0] + i[1]) / 2 / s) * s,
d = Math.round(f / 2);
a.setExtent(_l(c - d * s), _l(c + (f - d) * s)), a.setInterval(s)
}
})
}, zv.dimensions = [], zv.create = function(i, n) {
var a = [];
return i.eachComponent("radar", function(t) {
var e = new zv(t, i, n);
a.push(e), t.coordinateSystem = e
}), i.eachSeriesByType("radar", function(t) {
"radar" === t.get("coordinateSystem") && (t.coordinateSystem = a[t.get("radarIndex") || 0])
}), a
}, Hu.register("radar", zv);
var Ev = gm.valueAxis;
function Bv(t, e) {
return C({
show: e
}, t)
}
sf({
type: "radar",
optionUpdated: function() {
var a = this.get("boundaryGap"),
o = this.get("splitNumber"),
r = this.get("scale"),
s = this.get("axisLine"),
l = this.get("axisTick"),
u = this.get("axisLabel"),
h = this.get("name"),
c = this.get("name.show"),
d = this.get("name.formatter"),
f = this.get("nameGap"),
p = this.get("triggerEvent"),
t = N(this.get("indicator") || [], function(t) {
null != t.max && 0 < t.max && !t.min ? t.min = 0 : null != t.min && t.min < 0 && !t.max && (t.max = 0);
var e = h;
if (null != t.color && (e = C({
color: t.color
}, h)), t = m(D(t), {
boundaryGap: a,
splitNumber: o,
scale: r,
axisLine: s,
axisTick: l,
axisLabel: u,
name: t.text,
nameLocation: "end",
nameGap: f,
nameTextStyle: e,
triggerEvent: p
}, !1), c || (t.name = ""), "string" == typeof d) {
var i = t.name;
t.name = d.replace("{value}", null != i ? i : "")
} else "function" == typeof d && (t.name = d(t.name, t));
var n = L(new dl(t, null, this.ecModel), Hp);
return n.mainType = "radar", n.componentIndex = this.componentIndex, n
}, this);
this.getIndicatorModels = function() {
return t
}
},
defaultOption: {
zlevel: 0,
z: 0,
center: ["50%", "50%"],
radius: "75%",
startAngle: 90,
name: {
show: !0
},
boundaryGap: [0, 0],
splitNumber: 5,
nameGap: 15,
scale: !1,
shape: "polygon",
axisLine: m({
lineStyle: {
color: "#bbb"
}
}, Ev.axisLine),
axisLabel: Bv(Ev.axisLabel, !1),
axisTick: Bv(Ev.axisTick, !1),
splitLine: Bv(Ev.splitLine, !0),
splitArea: Bv(Ev.splitArea, !0),
indicator: []
}
});
var Vv = ["axisLine", "axisTickLabel", "axisName"];
lf({
type: "radar",
render: function(t, e, i) {
this.group.removeAll(), this._buildAxes(t), this._buildSplitLineAndArea(t)
},
_buildAxes: function(t) {
var e = t.coordinateSystem;
O(N(e.getIndicatorAxes(), function(t) {
return new Cm(t.model, {
position: [e.cx, e.cy],
rotation: t.angle,
labelDirection: -1,
tickDirection: -1,
nameDirection: 1
})
}), function(t) {
O(Vv, t.add, t), this.group.add(t.getGroup())
}, this)
},
_buildSplitLineAndArea: function(t) {
var n = t.coordinateSystem,
e = n.getIndicatorAxes();
if (e.length) {
var i = t.get("shape"),
a = t.getModel("splitLine"),
o = t.getModel("splitArea"),
r = a.getModel("lineStyle"),
s = o.getModel("areaStyle"),
l = a.get("show"),
u = o.get("show"),
h = r.get("color"),
c = s.get("color");
h = k(h) ? h : [h], c = k(c) ? c : [c];
var d = [],
f = [];
if ("circle" === i)
for (var p = e[0].getTicksCoords(), g = n.cx, m = n.cy, v = 0; v < p.length; v++) {
if (l) d[I(d, h, v)].push(new Lr({
shape: {
cx: g,
cy: m,
r: p[v].coord
}
}));
if (u && v < p.length - 1) f[I(f, c, v)].push(new Nr({
shape: {
cx: g,
cy: m,
r0: p[v].coord,
r: p[v + 1].coord
}
}))
} else {
var y, x = N(e, function(t, e) {
var i = t.getTicksCoords();
return y = null == y ? i.length - 1 : Math.min(i.length - 1, y), N(i, function(t) {
return n.coordToPoint(t.coord, e)
})
}),
_ = [];
for (v = 0; v <= y; v++) {
for (var w = [], b = 0; b < e.length; b++) w.push(x[b][v]);
if (w[0] && w.push(w[0].slice()), l) d[I(d, h, v)].push(new Er({
shape: {
points: w
}
}));
if (u && _) f[I(f, c, v - 1)].push(new zr({
shape: {
points: w.concat(_)
}
}));
_ = w.slice().reverse()
}
}
var S = r.getLineStyle(),
M = s.getAreaStyle();
O(f, function(t, e) {
this.group.add(ys(t, {
style: C({
stroke: "none",
fill: c[e % c.length]
}, M),
silent: !0
}))
}, this), O(d, function(t, e) {
this.group.add(ys(t, {
style: C({
fill: "none",
stroke: h[e % h.length]
}, S),
silent: !0
}))
}, this)
}
function I(t, e, i) {
var n = i % e.length;
return t[n] = t[n] || [], n
}
}
});
var Gv = Wh.extend({
type: "series.radar",
dependencies: ["radar"],
init: function(t) {
Gv.superApply(this, "init", arguments), this.legendDataProvider = function() {
return this.getRawData()
}
},
getInitialData: function(t, e) {
return mv(this, {
generateCoord: "indicator_",
generateCoordCount: 1 / 0
})
},
formatTooltip: function(n) {
var a = this.getData(),
t = this.coordinateSystem.getIndicatorAxes(),
e = this.getData().getName(n);
return Wl("" === e ? this.name : e) + "
" + N(t, function(t, e) {
var i = a.get(a.mapDimension(t.dim), n);
return Wl(t.name + " : " + i)
}).join("
")
},
defaultOption: {
zlevel: 0,
z: 2,
coordinateSystem: "radar",
legendHoverLink: !0,
radarIndex: 0,
lineStyle: {
width: 2,
type: "solid"
},
label: {
position: "top"
},
symbol: "emptyCircle",
symbolSize: 4
}
});
hf({
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 a = function(t) {
return k(t) || (t = [+t, +t]), t
}(t.getItemVisual(e, "symbolSize")),
o = Jp(i, -1, -1, 2, 2, n);
return o.attr({
style: {
strokeNoScale: !0
},
z2: 100,
scale: [a[0] / 2, a[1] / 2]
}), o
}
}
function h(t, e, i, n, a, o) {
i.removeAll();
for (var r = 0; r < e.length - 1; r++) {
var s = u(n, a);
s && (t[s.__dimIdx = r] ? (s.attr("position", t[r]), ol[o ? "initProps" : "updateProps"](s, {
position: e[r]
}, l, a)) : s.attr("position", e[r]), i.add(s))
}
}
function c(t) {
return N(t, function(t) {
return [i.cx, i.cy]
})
}
m.diff(s).add(function(t) {
var e = m.getItemLayout(t);
if (e) {
var i = new zr,
n = new Er,
a = {
shape: {
points: e
}
};
i.shape.points = c(e), n.shape.points = c(e), qs(i, a, l, t), qs(n, a, l, t);
var o = new Si,
r = new Si;
o.add(n), o.add(i), o.add(r), h(n.shape.points, e, r, m, t, !0), m.setItemGraphicEl(t, o)
}
}).update(function(t, e) {
var i = s.getItemGraphicEl(e),
n = i.childAt(0),
a = i.childAt(1),
o = i.childAt(2),
r = {
shape: {
points: m.getItemLayout(t)
}
};
r.shape.points && (h(n.shape.points, r.shape.points, o, m, t, !1), js(n, r, l), js(a, 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),
a = t.childAt(1),
o = t.childAt(2),
r = m.getItemVisual(i, "color");
g.add(t), n.useStyle(C(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, a.ignore = u, a.useStyle(C(s.getAreaStyle(), {
fill: r,
opacity: .7
})), a.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");
o.eachChild(function(t) {
t.setStyle(c), t.hoverStyle = D(d);
var e = m.get(m.dimensions[t.__dimIdx], i);
null != e && !isNaN(e) || (e = ""), Bs(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) {
a.attr("ignore", "emphasis" === e ? h : u)
}, Os(t)
}), this._data = m
},
remove: function() {
this.group.removeAll(), this._data = null
},
dispose: function() {}
});
function Fv(t) {
return !isNaN(t[0]) && !isNaN(t[1])
}
function Wv(t) {
return [t.cx, t.cy]
}
af(Mv("radar")), af(rm("radar", "circle")), nf(function(t) {
t.eachSeriesByType("radar", function(t) {
var i = t.getData(),
a = [],
o = t.coordinateSystem;
if (o) {
var e = o.getIndicatorAxes();
O(e, function(t, n) {
i.each(i.mapDimension(e[n].dim), function(t, e) {
a[e] = a[e] || [];
var i = o.dataToPoint(t, n);
a[e][n] = Fv(i) ? i : Wv(o)
})
}), i.each(function(t) {
var e = I(a[t], function(t) {
return Fv(t)
}) || Wv(o);
a[t].push(e.slice()), i.setItemLayout(t, a[t])
})
}
})
}), Qd(Cv("radar")), Jd(function(i) {
var t = i.polar;
if (t) {
k(t) || (t = [t]);
var n = [];
O(t, function(t, e) {
t.indicator ? (t.type && !t.shape && (t.shape = t.type), i.radar = i.radar || [], k(i.radar) || (i.radar = [i.radar]), i.radar.push(t)) : n.push(t)
}), i.polar = n
}
O(i.series, function(t) {
t && "radar" === t.type && t.polarIndex && (t.radarIndex = t.polarIndex)
})
});
for (var Hv = [126, 25], Zv = [
[
[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]
]
], Uv = 0; Uv < Zv.length; Uv++)
for (var Xv = 0; Xv < Zv[Uv].length; Xv++) Zv[Uv][Xv][0] /= 10.5, Zv[Uv][Xv][1] /= -14, Zv[Uv][Xv][0] += Hv[0], Zv[Uv][Xv][1] += Hv[1];
var Yv = {
"南海诸岛": [32, 80],
"广东": [0, -10],
"香港": [10, 5],
"澳门": [-10, 10],
"天津": [5, 5]
},
jv = {
Russia: [100, 60],
"United States": [-99, 38],
"United States of America": [-99, 38]
},
qv = [
[
[123.45165252685547, 25.73527164402261],
[123.49731445312499, 25.73527164402261],
[123.49731445312499, 25.750734064600884],
[123.45165252685547, 25.750734064600884],
[123.45165252685547, 25.73527164402261]
]
],
Kv = La(),
$v = {
load: function(n, t) {
var e = Kv(t).parsed;
if (e) return e;
var i, a = t.specialAreas || {},
o = t.geoJSON;
try {
i = o ? rg(o) : []
} catch (t) {
throw new Error("Invalid geoJson format\n" + t.message)
}
return O(i, function(t) {
var e = t.name;
! function(t, e) {
if ("china" === t) {
var i = Yv[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 = jv[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: qv[0]
})
}(n, t);
var i = a[e];
i && t.transformTo(i.left, i.top, i.width, i.height)
}),
function(t, e) {
"china" === t && e.push(new ag("南海诸岛", N(Zv, function(t) {
return {
type: "polygon",
exterior: t
}
}), Hv))
}(n, i), Kv(t).parsed = {
regions: i,
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
}(i)
}
}
};
var Jv = La();
function Qv(t, e) {
var i, n, a = t.svgXML;
try {
Y(null != (n = (i = a && function(t, e) {
return (new Uc).parse(t, e)
}(a, {
ignoreViewBox: !0,
ignoreRootClip: !0
}) || {}).root))
} catch (t) {
throw new Error("Invalid svg format\n" + t.message)
}
var o = i.width,
r = i.height,
s = i.viewBoxRect;
if (e || (e = null == o || null == r ? n.getBoundingRect() : new bi(0, 0, 0, 0), null != o && (e.width = o), null != r && (e.height = r)), s) {
var l = id(s, e.width, e.height),
u = n;
(n = new Si).add(u), u.scale = l.scale, u.position = l.position
}
return n.setClipPath(new Hr({
shape: e.plain()
})), {
root: n,
boundingRect: e
}
}
var ty = {
geoJSON: $v,
svg: {
load: function(t, e) {
var i = Jv(e).originRoot;
if (i) return {
root: i,
boundingRect: Jv(e).boundingRect
};
var n = Qv(e);
return Jv(e).originRoot = n.root, Jv(e).boundingRect = n.boundingRect, n
},
makeGraphic: function(t, e, i) {
var n = Jv(e),
a = n.rootMap || (n.rootMap = Q()),
o = a.get(i);
if (o) return o;
var r = n.originRoot,
s = n.boundingRect;
return o = n.originRootHostKey ? Qv(e, s).root : (n.originRootHostKey = i, r), a.set(i, o)
},
removeGraphic: function(t, e, i) {
var n = Jv(e),
a = n.rootMap;
a && a.removeKey(i), i === n.originRootHostKey && (n.originRootHostKey = null)
}
}
},
ey = {
load: function(n, a) {
var o, r = [],
s = Q(),
l = Q();
return O(ny(n), function(t) {
var e = ty[t.type].load(n, t);
O(e.regions, function(t) {
var e = t.name;
a && a.hasOwnProperty(e) && (t = t.cloneShallow(e = a[e])), r.push(t), s.set(e, t), l.set(e, t.center)
});
var i = e.boundingRect;
i && (o ? o.union(i) : o = i.clone())
}), {
regions: r,
regionsMap: s,
nameCoordMap: l,
boundingRect: o || new bi(0, 0, 0, 0)
}
},
makeGraphic: iy("makeGraphic"),
removeGraphic: iy("removeGraphic")
};
function iy(o) {
return function(i, n) {
var t = ny(i),
a = [];
return O(t, function(t) {
var e = ty[t.type][o];
e && a.push(e(i, t, n))
}), a
}
}
function ny(t) {
return ad.retrieveMap(t) || []
}
b(Wh.extend({
type: "series.map",
dependencies: ["geo"],
layoutMode: "box",
needsDrawMap: !1,
seriesGroup: [],
getInitialData: function(t) {
for (var e = mv(this, ["value"]), i = e.mapDimension("value"), n = Q(), a = [], o = [], r = 0, s = e.count(); r < s; r++) {
var l = e.getName(r);
n.set(l, !0), a.push({
name: l,
value: e.get(i, r),
selected: Ih(e, r, "selected")
})
}
return O(ey.load(this.getMapType(), this.option.nameMap).regions, function(t) {
var e = t.name;
n.get(e) || (a.push({
name: e
}), o.push(e))
}), this.updateSelectedMap(a), e.appendValues([], o), 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 = El(this.getRawValue(t)), n = e.getName(t), a = this.seriesGroup, o = [], r = 0; r < a.length; r++) {
var s = a[r].originalData.indexOfName(n),
l = e.mapDimension("value");
isNaN(a[r].originalData.get(l, s)) || o.push(Wl(a[r].name))
}
return o.join(", ") + "
" + Wl(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)"
}
}
}
}), vv);
var ay = "\0_ec_interaction_mutex";
function oy(t, e) {
return !!ry(t)[e]
}
function ry(t) {
return t[ay] || (t[ay] = {})
}
function sy(i) {
this.pointerChecker, this._zr = i, this._opt = {};
var t = T,
n = t(ly, this),
a = t(uy, this),
o = t(hy, this),
r = t(cy, this),
s = t(dy, this);
Ct.call(this), this.setPointerChecker = function(t) {
this.pointerChecker = t
}, this.enable = function(t, e) {
this.disable(), this._opt = C(D(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", a), i.on("mouseup", o)), !0 !== t && "scale" !== t && "zoom" !== t || (i.on("mousewheel", r), i.on("pinch", s))
}, this.disable = function() {
i.off("mousedown", n), i.off("mousemove", a), i.off("mouseup", o), 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 ly(t) {
if (!(Wt(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 uy(t) {
if (this._dragging && gy("moveOnMouseMove", t, this._opt) && "pinch" !== t.gestureEvent && !oy(this._zr, "globalPan")) {
var e = t.offsetX,
i = t.offsetY,
n = this._x,
a = this._y,
o = e - n,
r = i - a;
this._x = e, this._y = i, this._opt.preventDefaultMouseMove && Ft(t.event), py(this, "pan", "moveOnMouseMove", t, {
dx: o,
dy: r,
oldX: n,
oldY: a,
newX: e,
newY: i
})
}
}
function hy(t) {
Wt(t) || (this._dragging = !1)
}
function cy(t) {
var e = gy("zoomOnMouseWheel", t, this._opt),
i = gy("moveOnMouseWheel", t, this._opt),
n = t.wheelDelta,
a = Math.abs(n),
o = t.offsetX,
r = t.offsetY;
if (0 !== n && (e || i)) {
if (e) {
var s = 3 < a ? 1.4 : 1 < a ? 1.2 : 1.1;
fy(this, "zoom", "zoomOnMouseWheel", t, {
scale: 0 < n ? s : 1 / s,
originX: o,
originY: r
})
}
if (i) {
var l = Math.abs(n);
fy(this, "scrollMove", "moveOnMouseWheel", t, {
scrollDelta: (0 < n ? 1 : -1) * (3 < l ? .4 : 1 < l ? .15 : .05),
originX: o,
originY: r
})
}
}
}
function dy(t) {
oy(this._zr, "globalPan") || fy(this, "zoom", null, t, {
scale: 1 < t.pinchScale ? 1.1 : 1 / 1.1,
originX: t.pinchX,
originY: t.pinchY
})
}
function fy(t, e, i, n, a) {
t.pointerChecker && t.pointerChecker(n, a.originX, a.originY) && (Ft(n.event), py(t, e, i, n, a))
}
function py(t, e, i, n, a) {
a.isAvailableBehavior = T(gy, null, i, n), t.trigger(e, a)
}
function gy(t, e, i) {
var n = i[t];
return !t || n && (!z(n) || e.event[n + "Key"])
}
function my(t, e, i) {
var n = t.target,
a = n.position;
a[0] += e, a[1] += i, n.dirty()
}
function vy(t, e, i, n) {
var a = t.target,
o = t.zoomLimit,
r = a.position,
s = a.scale,
l = t.zoom = t.zoom || 1;
if (l *= e, o) {
var u = o.min || 0,
h = o.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, a.dirty()
}
tf({
type: "takeGlobalCursor",
event: "globalCursorTaken",
update: "update"
}, function() {}), b(sy, Ct);
var yy = {
axisPointer: 1,
tooltip: 1,
brush: 1
};
function xy(t, e, i) {
var n = e.getComponentByElement(t.topTarget),
a = n && n.coordinateSystem;
return n && n !== i && !yy[n.mainType] && a && a.model !== i
}
function _y(t) {
var e = t.getItemStyle(),
i = t.get("areaColor");
return null != i && (e.fill = i), e
}
function wy(i, t) {
t.eachChild(function(e) {
O(e.__regions, function(t) {
e.trigger(i.isSelected(t.name) ? "emphasis" : "normal")
})
})
}
function by(t, e) {
var i = new Si;
this.uid = ml("ec_map_draw"), this._controller = new sy(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 Si), i.add(this._backgroundGroup = new Si)
}
by.prototype = {
constructor: by,
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 a = _.coordinateSystem;
this._updateBackground(a);
var S = this._regionsGroup,
M = this.group;
a._roamTransformable.transform && (M.transform = a._roamTransformable.transform.slice(), M.decomposeTransform());
var I = a._rawTransformable.scale,
A = a._rawTransformable.position;
S.removeAll();
var T = ["itemStyle"],
D = ["emphasis", "itemStyle"],
C = ["label"],
L = ["emphasis", "label"],
k = Q();
O(a.regions, function(t) {
var e = k.get(t.name) || k.set(t.name, new Si),
o = new $r({
segmentIgnoreThreshold: 1,
shape: {
paths: []
}
});
e.add(o);
var i, n = (x = _.getRegionModel(t.name) || _).getModel(T),
a = x.getModel(D),
r = _y(n),
s = _y(a),
l = x.getModel(C),
u = x.getModel(L);
if (b) {
i = b.indexOfName(t.name);
var h = b.getItemVisual(i, "color", !0);
h && (r.fill = h)
}
function c(t) {
return [t[0] * I[0] + A[0], t[1] * I[1] + A[1]]
}
O(t.geometries, function(t) {
if ("polygon" === t.type) {
for (var e = [], i = 0; i < t.exterior.length; ++i) e.push(c(t.exterior[i]));
o.shape.paths.push(new zr({
segmentIgnoreThreshold: 1,
shape: {
points: e
}
}));
for (i = 0; i < (t.interiors ? t.interiors.length : 0); ++i) {
for (var n = t.interiors[i], a = (e = [], 0); a < n.length; ++a) e.push(c(n[a]));
o.shape.paths.push(new zr({
segmentIgnoreThreshold: 1,
shape: {
points: e
}
}))
}
}
}), o.setStyle(r), o.style.strokeNoScale = !0, o.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 Dr({
position: c(t.center.slice()),
scale: [1 / M.scale[0], 1 / M.scale[1]],
z2: 10,
silent: !0
});
Bs(y.style, y.hoverStyle = {}, l, u, {
labelFetcher: m,
labelDataIndex: v,
defaultText: t.name,
useInsideStyle: !1
}, {
textAlign: "center",
textVerticalAlign: "middle"
}), e.add(y)
}
if (b) b.setItemGraphicEl(i, e);
else {
var x = _.getRegionModel(t.name);
o.eventData = {
componentType: "geo",
componentIndex: _.componentIndex,
geoIndex: _.componentIndex,
name: t.name,
region: x && x.option || {}
}
}(e.__regions || (e.__regions = [])).push(t), e.highDownSilentOnTouch = !!_.get("selectedMode"), Os(e, s), S.add(e)
}), this._updateController(_, t, e),
function(n, a, o, r, s) {
o.off("click"), o.off("mousedown"), a.get("selectedMode") && (o.on("mousedown", function() {
n._mouseDownFlag = !0
}), o.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" === a.mainType ? "geo" : "map") + "ToggleSelect",
batch: N(e.__regions, function(t) {
return {
name: t.name,
from: s.uid
}
})
};
i[a.mainType + "Id"] = a.id, r.dispatchAction(i), wy(a, o)
}
}
}))
}(this, _, S, e, i), wy(_, S)
},
remove: function() {
this._regionsGroup.removeAll(), this._backgroundGroup.removeAll(), this._controller.dispose(), this._mapName && ey.removeGraphic(this._mapName, this.uid), this._mapName = null, this._controllerHost = {}
},
_updateBackground: function(t) {
var e = t.map;
this._mapName !== e && O(ey.makeGraphic(e, this.uid), function(t) {
this._backgroundGroup.add(t)
}, this), this._mapName = e
},
_updateController: function(n, t, a) {
var o = n.coordinateSystem,
e = this._controller,
i = this._controllerHost;
i.zoomLimit = n.get("scaleLimit"), i.zoom = o.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, my(i, t.dx, t.dy), a.dispatchAction(L(s(), {
dx: t.dx,
dy: t.dy
}))
}, this), e.off("zoom").on("zoom", function(t) {
if (this._mouseDownFlag = !1, vy(i, t.scale, t.originX, t.originY), a.dispatchAction(L(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 o.getViewRectAfterRoam().contain(e, i) && !xy(t, a, n)
})
}
};
var Sy = "__seriesMapHighDown",
My = "__seriesMapCallKey";
function Iy(t) {
var e = this[Sy];
e && e.recordVersion === this[My] && Ay(e, t)
}
function Ay(t, e) {
var i = t.circle,
n = t.labelModel,
a = t.hoverLabelModel,
o = t.emphasisText,
r = t.normalText;
e ? (i.style.extendFrom(Gs({}, a, {
text: a.get("show") ? o : null
}, {
isRectText: !0,
useInsideStyle: !1
}, !0)), i.__mapOriginalZ2 = i.z2, i.z2 += os) : (Gs(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 Ty(t, e, i) {
var n = t.getZoom(),
a = t.getCenter(),
o = e.zoom,
r = t.dataToPoint(a);
if (null != e.dx && null != e.dy) {
r[0] -= e.dx, r[1] -= e.dy;
a = t.pointToData(r);
t.setCenter(a)
}
if (null != o) {
if (i) {
var s = i.min || 0,
l = i.max || 1 / 0;
o = Math.max(Math.min(n * o, l), s) / n
}
t.scale[0] *= o, t.scale[1] *= o;
var u = t.position,
h = (e.originX - u[0]) * (o - 1),
c = (e.originY - u[1]) * (o - 1);
u[0] -= h, u[1] -= c, t.updateTransform();
a = t.pointToData(r);
t.setCenter(a), t.setZoom(o * n)
}
return {
center: t.getCenter(),
zoom: t.getZoom()
}
}
hf({
type: "map",
render: function(t, e, i, n) {
if (!n || "mapToggleSelect" !== n.type || n.from !== this.uid) {
var a = this.group;
if (a.removeAll(), !t.getHostGeoModel()) {
if (n && "geoRoam" === n.type && "series" === n.componentType && n.seriesId === t.id)(o = this._mapDraw) && a.add(o.group);
else if (t.needsDrawMap) {
var o = this._mapDraw || new by(i, !0);
a.add(o.group), o.draw(t, e, i, this, n), this._mapDraw = o
} 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,
a = i.offset,
o = new Lr({
style: {
fill: x.getData().getVisual("color")
},
shape: {
cx: n[0] + 9 * a,
cy: n[1],
r: 3
},
silent: !0,
z2: 8 + (a ? 0 : os + 1)
});
if (!a) {
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[Sy],
m = Math.random();
if (!g) {
g = d[Sy] = {};
var v = A(Iy, !0),
y = A(Iy, !1);
d.on("mouseover", v).on("mouseout", y).on("emphasis", v).on("normal", y)
}
L(g, {
recordVersion: d[My] = m,
circle: o,
labelModel: h,
hoverLabelModel: c,
emphasisText: p,
normalText: f
}), Ay(g, !1)
}
w.add(o)
}
}
})
}
}), tf({
type: "geoRoam",
event: "geoRoam",
update: "updateTransform"
}, function(n, t) {
var a = n.componentType || "series";
t.eachComponent({
mainType: a,
query: n
}, function(t) {
var e = t.coordinateSystem;
if ("geo" === e.type) {
var i = Ty(e, n, t.get("scaleLimit"));
t.setCenter && t.setCenter(i.center), t.setZoom && t.setZoom(i.zoom), "series" === a && O(t.seriesGroup, function(t) {
t.setCenter(i.center), t.setZoom(i.zoom)
})
}
})
});
var Dy = bt;
function Cy() {
ce.call(this)
}
function Ly(t) {
this.name = t, this.zoomLimit, ce.call(this), this._roamTransformable = new Cy, this._rawTransformable = new Cy, this._center, this._zoom
}
function ky(t, e, i, n) {
var a = i.seriesModel,
o = a ? a.coordinateSystem : null;
return o === this ? o[t](n) : null
}
function Py(t, e, i, n) {
Ly.call(this, t), this.map = e;
var a = ey.load(e, i);
this._nameCoordMap = a.nameCoordMap, this._regionsMap = a.regionsMap, this._invertLongitute = null == n || n, this.regions = a.regions, this._rect = a.boundingRect
}
function Ny(t, e, i, n) {
var a = i.geoModel,
o = i.seriesModel,
r = a ? a.coordinateSystem : o ? o.coordinateSystem || (o.getReferringComponents("geo")[0] || {}).coordinateSystem : null;
return r === this ? r[t](n) : null
}
function Oy(t, e) {
var i = t.get("boundingCoords");
if (null != i) {
var n = i[0],
a = i[1];
isNaN(n[0]) || isNaN(n[1]) || isNaN(a[0]) || isNaN(a[1]) || this.setBoundingRect(n[0], n[1], a[0] - n[0], a[1] - n[1])
}
var o, 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 = [xl(s[0], u), xl(s[1], h)], l = xl(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(o = t.getBoxLayoutParams()).aspect = c, f = au(o, {
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 Ry(i, t) {
O(t.get("geoCoord"), function(t, e) {
i.addGeoCoord(e, t)
})
}
b(Cy, ce), Ly.prototype = {
constructor: Ly,
type: "view",
dimensions: ["x", "y"],
setBoundingRect: function(t, e, i, n) {
return this._rect = new bi(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 bi(t, e, i, n)
},
transformTo: function(t, e, i, n) {
var a = this.getBoundingRect(),
o = this._rawTransformable;
o.transform = a.calculateTransform(new bi(t, e, i, n)), o.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(),
a = 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 = [a, a], this._updateTransform()
},
_updateTransform: function() {
var t = this._roamTransformable,
e = this._rawTransformable;
(e.parent = t).updateTransform(), e.updateTransform(), ee(this.transform || (this.transform = []), e.transform || Qt()), this._rawTransform = e.getLocalTransform(), this.invTransform = this.invTransform || [], re(this.invTransform, this.transform), this.decomposeTransform()
},
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 ? Dy(i, t, n) : ot(i, t)
},
pointToData: function(t) {
var e = this.invTransform;
return e ? Dy([], t, e) : [t[0], t[1]]
},
convertToPixel: A(ky, "dataToPoint"),
convertFromPixel: A(ky, "pointToData"),
containPoint: function(t) {
return this.getViewRectAfterRoam().contain(t[0], t[1])
}
}, b(Ly, ce), Py.prototype = {
constructor: Py,
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 a = this.getBoundingRect(),
o = this._invertLongitute;
a = a.clone(), o && (a.y = -a.y - a.height);
var r = this._rawTransformable;
if (r.transform = a.calculateTransform(new bi(t, e, i, n)), r.decomposeTransform(), o) {
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 Ly.prototype.dataToPoint.call(this, t, e, i)
},
convertToPixel: A(Ny, "dataToPoint"),
convertFromPixel: A(Ny, "pointToData")
}, b(Py, Ly);
var zy = {
dimensions: Py.prototype.dimensions,
create: function(t, s) {
var l = [];
t.eachComponent("geo", function(t, e) {
var i = t.get("map"),
n = t.get("aspectScale"),
a = !0,
o = ad.retrieveMap(i);
o && o[0] && "svg" === o[0].type ? (null == n && (n = 1), a = !1) : null == n && (n = .75);
var r = new Py(i + e, i, t.get("nameMap"), a);
r.aspectScale = n, r.zoomLimit = t.get("scaleLimit"), l.push(r), Ry(r, t), (t.coordinateSystem = r).model = t, r.resize = Oy, 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)
}
}), O(i, function(t, e) {
var i = new Py(e, e, p(N(t, function(t) {
return t.get("nameMap")
})));
i.zoomLimit = W.apply(null, N(t, function(t) {
return t.get("scaleLimit")
})), l.push(i), i.resize = Oy, i.aspectScale = t[0].get("aspectScale"), i.resize(t[0], s), O(t, function(t) {
Ry(t.coordinateSystem = i, t)
})
}), l
},
getFilledRegions: function(t, e, i) {
for (var n = (t || []).slice(), a = Q(), o = 0; o < n.length; o++) a.set(n[o].name, n[o]);
return O(ey.load(e, i).regions, function(t) {
var e = t.name;
a.get(e) || n.push({
name: e
})
}), n
}
};
ef("geo", zy);
nf(function(i) {
var a = {};
i.eachSeriesByType("map", function(t) {
var e = t.getMapType();
if (!t.getHostGeoModel() && !a[e]) {
var l = {};
O(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 a = l[i] || 0,
o = r.dataToPoint(n.center);
l[i] = a + 1, s.setItemLayout(e, {
point: o,
offset: a
})
}
})
});
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)
}), a[e] = !0
}
})
}), af(function(t) {
t.eachSeriesByType("map", function(t) {
var e = t.get("color"),
i = t.getModel("itemStyle"),
n = i.get("areaColor"),
a = i.get("color") || e[t.seriesIndex % e.length];
t.getData().setVisual({
areaColor: n,
color: a
})
})
}), Qd(cd.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)
}), O(n, function(t, e) {
for (var i = function(u, h) {
var c = {};
return O(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), a = 0, o = 1 / 0, r = -1 / 0, s = c[n].length, l = 0; l < s; l++) o = Math.min(o, c[n][l]), r = Math.max(r, c[n][l]), a += c[n][l];
return i = "min" === h ? o : "max" === h ? r : "average" === h ? a / s : a, 0 === s ? NaN : i
})
}(N(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]
})
}), Jd(function(t) {
var e = [];
O(t.series, function(t) {
t && "map" === t.type && (e.push(t), t.map = t.map || t.mapType, C(t, t.mapLocation))
})
}), Sv("map", [{
type: "mapToggleSelect",
event: "mapselectchanged",
method: "toggleSelected"
}, {
type: "mapSelect",
event: "mapselected",
method: "select"
}, {
type: "mapUnSelect",
event: "mapunselected",
method: "unSelect"
}]);
var Ey = O,
By = "\0__link_datas",
Vy = "\0__link_mainData";
function Gy(i) {
var n = i.mainData,
t = i.datas;
t || (t = {
main: n
}, i.datasAttr = {
main: "data"
}), i.datas = i.mainData = null, Uy(n, t, i), Ey(t, function(e) {
Ey(n.TRANSFERABLE_METHODS, function(t) {
e.wrapMethod(t, A(Fy, i))
})
}), n.wrapMethod("cloneShallow", A(Hy, i)), Ey(n.CHANGABLE_METHODS, function(t) {
n.wrapMethod(t, A(Wy, i))
}), Y(t[n.dataType] === n)
}
function Fy(t, e) {
if (function(t) {
return t[Vy] === t
}(this)) {
var i = L({}, this[By]);
Uy(i[this.dataType] = e, i, t)
} else Xy(e, this.dataType, this[Vy], t);
return e
}
function Wy(t, e) {
return t.struct && t.struct.update(this), e
}
function Hy(i, n) {
return Ey(n[By], function(t, e) {
t !== n && Xy(t.cloneShallow(), e, n, i)
}), n
}
function Zy(t) {
var e = this[Vy];
return null == t || null == e ? e : e[By][t]
}
function Uy(i, t, n) {
i[By] = {}, Ey(t, function(t, e) {
Xy(t, e, i, n)
})
}
function Xy(t, e, i, n) {
(i[By][e] = t)[Vy] = i, t.dataType = e, n.struct && (t[n.structAttr] = n.struct, n.struct[n.datasAttr[e]] = t), t.getLinkedData = Zy
}
function Yy(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 jy(e, t, i) {
this.root, this.data, this._nodes = [], this.hostModel = e, this.levelModels = N(t || [], function(t) {
return new dl(t, e, e.ecModel)
}), this.leavesModel = new dl(i || {}, e, e.ecModel)
}
function qy(t, e) {
var i = e.children;
t.parentNode !== e && (i.push(t), t.parentNode = e)
}
function Ky(t, e) {
var i = t.isExpand ? t.children : [],
n = t.parentNode.children,
a = t.hierNode.i ? n[t.hierNode.i - 1] : null;
if (i.length) {
! function(t) {
var e = t.children,
i = e.length,
n = 0,
a = 0;
for (; 0 <= --i;) {
var o = e[i];
o.hierNode.prelim += n, o.hierNode.modifier += n, a += o.hierNode.change, n += o.hierNode.shift + a
}
}(t);
var o = (i[0].hierNode.prelim + i[i.length - 1].hierNode.prelim) / 2;
a ? (t.hierNode.prelim = a.hierNode.prelim + e(t, a), t.hierNode.modifier = t.hierNode.prelim - o) : t.hierNode.prelim = o
} else a && (t.hierNode.prelim = a.hierNode.prelim + e(t, a));
t.parentNode.hierNode.defaultAncestor = function(t, e, i, n) {
if (e) {
for (var a = t, o = t, r = o.parentNode.children[0], s = e, l = a.hierNode.modifier, u = o.hierNode.modifier, h = r.hierNode.modifier, c = s.hierNode.modifier; s = tx(s), o = ex(o), s && o;) {
a = tx(a), r = ex(r), a.hierNode.ancestor = t;
var d = s.hierNode.prelim + c - o.hierNode.prelim - u + n(s, o);
0 < d && (ix((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 += o.hierNode.modifier, l += a.hierNode.modifier, h += r.hierNode.modifier
}
s && !tx(a) && (a.hierNode.thread = s, a.hierNode.modifier += c - l), o && !ex(r) && (r.hierNode.thread = o, r.hierNode.modifier += u - h, i = t)
}
var f, p, g;
return i
}(t, a, t.parentNode.hierNode.defaultAncestor || n[0], e)
}
function $y(t) {
var e = t.hierNode.prelim + t.parentNode.hierNode.modifier;
t.setLayout({
x: e
}, !0), t.hierNode.modifier += t.parentNode.hierNode.modifier
}
function Jy(t) {
return arguments.length ? t : nx
}
function Qy(t, e) {
var i = {};
return t -= Math.PI / 2, i.x = e * Math.cos(t), i.y = e * Math.sin(t), i
}
function tx(t) {
var e = t.children;
return e.length && t.isExpand ? e[e.length - 1] : t.hierNode.thread
}
function ex(t) {
var e = t.children;
return e.length && t.isExpand ? e[0] : t.hierNode.thread
}
function ix(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 nx(t, e) {
return t.parentNode === e.parentNode ? 1 : 2
}
function ax(t, e) {
var i = t.getItemLayout(e);
return i && !isNaN(i.x) && !isNaN(i.y) && "none" !== t.getItemVisual(e, "symbol")
}
function ox(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 rx(t, e, i, n, a, o) {
var r = !i,
s = t.tree.getNodeByDataIndex(e),
l = s.getModel(),
u = (o = ox(s, l, o), 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 Sg(t, e, o)).attr("position", [f.x, f.y]) : i.updateData(t, e, o), i.__radialOldRawX = i.__radialRawX, i.__radialOldRawY = i.__radialRawY, i.__radialRawX = p.rawX, i.__radialRawY = p.rawY, n.add(i), t.setItemGraphicEl(e, i), js(i, {
position: [p.x, p.y]
}, a);
var g = i.getSymbolPath();
if ("radial" === o.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";
g.setStyle({
textPosition: b,
textRotation: -m,
textOrigin: "center",
verticalAlign: "middle"
})
}
if (s.parentNode && s.parentNode !== u) {
var S = i.__edge;
js(S = S || (i.__edge = new qr({
shape: lx(o, f, f),
style: C({
opacity: 0,
strokeNoScale: !0
}, o.lineStyle)
})), {
shape: lx(o, d, p),
style: {
opacity: 1
}
}, a), n.add(S)
}
}
function sx(t, e, i, n, a, o) {
for (var r, s = t.tree.getNodeByDataIndex(e), l = t.tree.root, u = s.getModel(), h = (o = ox(s, u, o), s.parentNode === l ? s : s.parentNode || s); null == (r = h.getLayout());) h = h.parentNode === l ? h : h.parentNode || h;
js(i, {
position: [r.x + 1, r.y + 1]
}, a, function() {
n.remove(i), t.setItemGraphicEl(e, null)
}), i.fadeOut(null, {
keepLabel: !0
});
var c = i.__edge;
c && js(c, {
shape: lx(o, r, r),
style: {
opacity: 0
}
}, a, function() {
n.remove(c)
})
}
function lx(t, e, i) {
var n, a, o, 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, a = u, o = l + (s - l) * t.curvature, r = h), "TB" !== c && "BT" !== c || (n = s, a = u + (h - u) * t.curvature, o = l, r = h + (u - h) * t.curvature), {
x1: s,
y1: u,
x2: l,
y2: h,
cpx1: n,
cpy1: a,
cpx2: o,
cpy2: r
};
s = e.rawX, u = e.rawY, l = i.rawX, h = i.rawY;
var d = Qy(s, u),
f = Qy(s, u + (h - u) * t.curvature),
p = Qy(l, h + (u - h) * t.curvature),
g = Qy(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 ux(t, e) {
for (var i, n = [t]; i = n.pop();)
if (e(i), i.isExpand) {
var a = i.children;
if (a.length)
for (var o = a.length - 1; 0 <= o; o--) n.push(a[o])
}
}
Yy.prototype = {
constructor: Yy,
isRemoved: function() {
return this.dataIndex < 0
},
eachNode: function(t, e, i) {
"function" == typeof t && (i = e, e = t, t = null), z(t = t || {}) && (t = {
order: t
});
var n, a = t.order || "preorder",
o = this[t.attr || "children"];
"preorder" === a && (n = e.call(i, this));
for (var r = 0; !n && r < o.length; r++) o[r].eachNode(t, e, i);
"postorder" === a && 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 a = i[e].getNodeById(t);
if (a) return a
}
},
contains: function(t) {
if (t === this) return !0;
for (var e = 0, i = this.children, n = i.length; e < n; e++) {
var a = i[e].contains(t);
if (a) return a
}
},
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, i = this.hostTree,
n = i.data.getItemModel(this.dataIndex),
a = this.getLevelModel();
return a || 0 !== this.children.length && (0 === this.children.length || !1 !== this.isExpand) || (e = this.getLeavesModel()), n.getModel(t, (a || e || i.hostModel).getModel(t))
}
},
getLevelModel: function() {
return (this.hostTree.levelModels || [])[this.depth]
},
getLeavesModel: function() {
return this.hostTree.leavesModel
},
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)
}
}, jy.prototype = {
constructor: jy,
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()
}
}, jy.createTree = function(t, e, i) {
var s = new jy(e, i.levels, i.leaves),
l = [],
u = 1;
! function t(e, i) {
var n = e.value;
u = Math.max(u, k(n) ? n.length : 1);
l.push(e);
var a = new Yy(e.name, s);
i ? qy(a, i) : s.root = a;
s._nodes.push(a);
var o = e.children;
if (o)
for (var r = 0; r < o.length; r++) t(o[r], a)
}(t), s.root.updateDepthAndHeight(0);
var n = Wf(l, {
coordDimensions: ["value"],
dimensionsCount: u
}),
a = new Tf(n, e);
return a.initData(l), Gy({
mainData: a,
struct: s,
structAttr: "tree"
}), s.update(), s
}, Wh.extend({
type: "series.tree",
layoutInfo: null,
layoutMode: "box",
getInitialData: function(t) {
var e = {
name: t.name,
children: t.data
},
i = t.leaves || {},
n = {};
n.leaves = i;
var a = jy.createTree(e, this, n),
o = 0;
a.eachNode("preorder", function(t) {
t.depth > o && (o = t.depth)
});
var r = t.expandAndCollapse && 0 <= t.initialTreeDepth ? t.initialTreeDepth : o;
return a.root.eachNode("preorder", function(t) {
var e = t.hostTree.data.getRawDataItem(t.dataIndex);
t.isExpand = e && null != e.collapsed ? !e.collapsed : t.depth <= r
}), a.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), a = n.getValue(), o = n.name; n && n !== i;) o = n.parentNode.name + "." + o, n = n.parentNode;
return Wl(o + (isNaN(a) || null == a ? "" : " : " + a))
},
defaultOption: {
zlevel: 0,
z: 2,
coordinateSystem: "view",
left: "12%",
top: "12%",
right: "12%",
bottom: "12%",
layout: "orthogonal",
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
}
}), hf({
type: "tree",
init: function(t, e) {
this._oldTree, this._mainGroup = new Si, this._controller = new sy(e.getZr()), this._controllerHost = {
target: this.group
}, this.group.add(this._mainGroup)
},
render: function(n, t, i, e) {
var a = n.getData(),
o = n.layoutInfo,
r = this._mainGroup,
s = n.get("layout");
"radial" === s ? r.attr("position", [o.x + o.width / 2, o.y + o.height / 2]) : r.attr("position", [o.x, o.y]), this._updateViewCoordSys(n, o, s), this._updateController(n, t, i);
var l = this._data,
u = {
expandAndCollapse: n.get("expandAndCollapse"),
layout: s,
orient: n.getOrient(),
curvature: n.get("lineStyle.curveness"),
symbolRotate: n.get("symbolRotate"),
symbolOffset: n.get("symbolOffset"),
hoverAnimation: n.get("hoverAnimation"),
useNameLabel: !0,
fadeIn: !0
};
a.diff(l).add(function(t) {
ax(a, t) && rx(a, t, null, r, n, u)
}).update(function(t, e) {
var i = l.getItemGraphicEl(e);
ax(a, t) ? rx(a, t, i, r, n, u) : i && sx(l, e, i, r, n, u)
}).remove(function(t) {
var e = l.getItemGraphicEl(t);
e && sx(l, t, e, r, n, u)
}).execute(), this._nodeScaleRatio = n.get("nodeScaleRatio"), this._updateNodeAndLinkScale(n), !0 === u.expandAndCollapse && a.eachItemGraphicEl(function(t, e) {
t.off("click").on("click", function() {
i.dispatchAction({
type: "treeExpandAndCollapse",
seriesId: n.id,
dataIndex: e
})
})
}), this._data = a
},
_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 = [],
a = [];
Io(n, e, a);
var o = this._min,
r = this._max;
a[0] - e[0] == 0 && (e[0] = o ? o[0] : e[0] - 1, a[0] = r ? r[0] : a[0] + 1), a[1] - e[1] == 0 && (e[1] = o ? o[1] : e[1] - 1, a[1] = r ? r[1] : a[1] + 1);
var s = t.coordinateSystem = new Ly;
s.zoomLimit = t.get("scaleLimit"), s.setBoundingRect(e[0], e[1], a[0] - e[0], a[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 = a
},
_updateController: function(a, t, o) {
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) && !xy(t, o, a)
}), e.enable(a.get("roam")), i.zoomLimit = a.get("scaleLimit"), i.zoom = a.coordinateSystem.getZoom(), e.off("pan").off("zoom").on("pan", function(t) {
my(i, t.dx, t.dy), o.dispatchAction({
seriesId: a.id,
type: "treeRoam",
dx: t.dx,
dy: t.dy
})
}, this).on("zoom", function(t) {
vy(i, t.scale, t.originX, t.originY), o.dispatchAction({
seriesId: a.id,
type: "treeRoam",
zoom: t.scale,
originX: t.originX,
originY: t.originY
}), this._updateNodeAndLinkScale(a)
}, 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,
a = n && n[0] || 1;
return ((e.getZoom() - 1) * i + 1) / a
},
dispose: function() {
this._controller && this._controller.dispose(), this._controllerHost = {}
},
remove: function() {
this._mainGroup.removeAll(), this._data = null
}
}), tf({
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
})
}), tf({
type: "treeRoam",
event: "treeRoam",
update: "none"
}, function(i, t) {
t.eachComponent({
mainType: "series",
subType: "tree",
query: i
}, function(t) {
var e = Ty(t.coordinateSystem, i);
t.setCenter && t.setCenter(e.center), t.setZoom && t.setZoom(e.zoom)
})
});
function hx(t, e, i) {
if (t && 0 <= _(e, t.type)) {
var n = i.getData().tree.root,
a = t.targetNode;
if ("string" == typeof a && (a = n.getNodeById(a)), a && n.contains(a)) return {
node: a
};
var o = t.targetNodeId;
if (null != o && (a = n.getNodeById(o))) return {
node: a
}
}
}
function cx(t) {
for (var e = []; t;)(t = t.parentNode) && e.push(t);
return e.reverse()
}
function dx(t, e) {
return 0 <= _(cx(t), e)
}
function fx(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
}
af(rm("tree", "circle")), nf(function(t, e) {
t.eachSeriesByType("tree", function(t) {
! function(t, e) {
var i = function(t, e) {
return au(t.getBoxLayoutParams(), {
width: e.getWidth(),
height: e.getHeight()
})
}(t, e);
t.layoutInfo = i;
var n = t.get("layout"),
a = 0,
o = 0,
r = null;
r = "radial" === n ? (a = 2 * Math.PI, o = Math.min(i.height, i.width) / 2, Jy(function(t, e) {
return (t.parentNode === e.parentNode ? 1 : 2) / t.depth
})) : (a = i.width, o = i.height, Jy());
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 a = i.length - 1; 0 <= a; a--) {
var o = i[a];
o.hierNode = {
defaultAncestor: null,
ancestor: o,
prelim: 0,
modifier: 0,
change: 0,
shift: 0,
i: a,
thread: null
}, n.push(o)
}
}(s),
function(t, e, i) {
for (var n, a = [t], o = []; n = a.pop();)
if (o.push(n), n.isExpand) {
var r = n.children;
if (r.length)
for (var s = 0; s < r.length; s++) a.push(r[s])
} for (; n = o.pop();) e(n, i)
}(l, Ky, r), s.hierNode.modifier = -l.hierNode.prelim, ux(l, $y);
var u = l,
h = l,
c = l;
ux(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 = a / (h.getLayout().x + d + f), g = o / (c.depth - 1 || 1), ux(l, function(t) {
m = (t.getLayout().x + f) * p, v = (t.depth - 1) * g;
var e = Qy(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 = o / (h.getLayout().x + d + f), p = a / (c.depth - 1 || 1), ux(l, function(t) {
v = (t.getLayout().x + f) * g, m = "LR" === y ? (t.depth - 1) * p : a - (t.depth - 1) * p, t.setLayout({
x: m,
y: v
}, !0)
})) : "TB" !== y && "BT" !== y || (p = a / (h.getLayout().x + d + f), g = o / (c.depth - 1 || 1), ux(l, function(t) {
m = (t.getLayout().x + f) * p, v = "TB" === y ? (t.depth - 1) * g : o - (t.depth - 1) * g, t.setLayout({
x: m,
y: v
}, !0)
}))
}
}
}(t, e)
})
}), Wh.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;
O(t.children, function(t) {
i(t);
var e = t.value;
k(e) && (e = e[0]), n += e
});
var e = t.value;
k(e) && (e = e[0]);
null != e && !isNaN(e) || (e = n);
e < 0 && (e = 0);
k(t.value) ? t.value[0] = e : t.value = e
}(i);
var n = t.levels || [];
n = t.levels = function(t, e) {
var n, i = e.get("color");
if (!i) return;
if (O(t = t || [], function(t) {
var e = new dl(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);
var a = {};
return a.levels = n, jy.createTree(i, this, a).data
},
optionUpdated: function() {
this.resetViewRoot()
},
formatTooltip: function(t) {
var e = this.getData(),
i = this.getRawValue(t),
n = k(i) ? El(i[0]) : El(i);
return Wl(e.getName(t) + ": " + n)
},
getDataParams: function(t) {
var e = Wh.prototype.getDataParams.apply(this, arguments),
i = this.getData().tree.getNodeByDataIndex(t);
return e.treePathInfo = fx(i, this), e
},
setLayoutInfo: function(t) {
this.layoutInfo = this.layoutInfo || {}, L(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 px = 5;
function gx(t) {
this.group = new Si, t.add(this.group)
}
function mx(t, e, i, n, a, o) {
var r = [
[a ? t : t - px, e],
[t + i, e],
[t + i, e + n],
[a ? t : t - px, e + n]
];
return o || r.splice(2, 0, [t + i + px, e + n / 2]), a || r.push([t, e + n / 2]), r
}
gx.prototype = {
constructor: gx,
render: function(t, e, i, n) {
var a = t.getModel("breadcrumb"),
o = this.group;
if (o.removeAll(), a.get("show") && i) {
var r = a.getModel("itemStyle"),
s = r.getModel("textStyle"),
l = {
pos: {
left: a.get("left"),
right: a.get("right"),
top: a.get("top"),
bottom: a.get("bottom")
},
box: {
width: e.getWidth(),
height: e.getHeight()
},
emptyItemWidth: a.get("emptyItemWidth"),
totalWidth: 0,
renderList: []
};
this._prepare(i, l, s), this._renderContent(t, l, r, s, n), ou(o, l.pos, l.box)
}
},
_prepare: function(t, e, i) {
for (var n = t; n; n = n.parentNode) {
var a = n.getModel().get("name"),
o = i.getTextRect(a),
r = Math.max(o.width + 16, e.emptyItemWidth);
e.totalWidth += r + 8, e.renderList.push({
node: n,
text: a,
width: r
})
}
},
_renderContent: function(t, e, i, n, a) {
for (var o, r, s = 0, l = e.emptyItemWidth, u = t.get("breadcrumb.height"), h = function(t, e, i) {
var n = e.width,
a = e.height,
o = xl(t.x, n),
r = xl(t.y, a),
s = xl(t.x2, n),
l = xl(t.y2, a);
return (isNaN(o) || isNaN(parseFloat(t.x))) && (o = 0), (isNaN(s) || isNaN(parseFloat(t.x2))) && (s = n), (isNaN(r) || isNaN(parseFloat(t.y))) && (r = 0), (isNaN(l) || isNaN(parseFloat(t.y2))) && (l = a), i = Vl(i || 0), {
width: Math.max(s - o - 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 zr({
shape: {
points: mx(s, 0, m, u, f === d.length - 1, 0 === f)
},
style: C(i.getItemStyle(), {
lineJoin: "bevel",
text: v,
textFill: n.getTextColor(),
textFont: n.getFont()
}),
z: 10,
onclick: A(a, g)
});
this.group.add(y), o = t, r = g, y.eventData = {
componentType: "series",
componentSubType: "treemap",
componentIndex: o.componentIndex,
seriesIndex: o.componentIndex,
seriesName: o.name,
seriesType: "treemap",
selfType: "breadcrumb",
nodeData: {
dataIndex: r && r.dataIndex,
name: r && r.name
},
treePathInfo: r && fx(r, o)
}, s += m + 8
}
},
remove: function() {
this.group.removeAll()
}
};
function vx(t) {
var e = Dx(t);
return e.stroke = e.fill = e.lineWidth = null, e
}
var yx = T,
xx = Si,
_x = Hr,
bx = O,
Sx = ["label"],
Mx = ["emphasis", "label"],
Ix = ["upperLabel"],
Ax = ["emphasis", "upperLabel"],
Tx = 10,
Dx = Xa([
["fill", "color"],
["stroke", "strokeColor"],
["lineWidth", "strokeWidth"],
["shadowBlur"],
["shadowOffsetX"],
["shadowOffsetY"],
["shadowColor"]
]);
function Cx(d, r, s, l, u, i, f, t, e, n) {
if (f) {
var p = f.getLayout();
if (p && p.isInView) {
var h = p.width,
c = p.height,
g = p.borderWidth,
m = p.invisible,
v = f.getRawIndex(),
y = t && t.getRawIndex(),
a = f.viewChildren,
x = p.upperHeight,
o = a && a.length,
_ = f.getModel("itemStyle"),
w = f.getModel("emphasis.itemStyle"),
b = T("nodeGroup", xx);
if (b) {
if (e.add(b), b.attr("position", [p.x || 0, p.y || 0]), b.__tmNodeWidth = h, b.__tmNodeHeight = c, p.isAboveViewRoot) return b;
var S = T("background", _x, n, 1);
if (S && function(t, n, a) {
n.dataIndex = f.dataIndex, n.seriesIndex = d.seriesIndex, n.setShape({
x: 0,
y: 0,
width: h,
height: c
});
var o = f.getVisual("borderColor", !0),
r = w.get("borderColor");
I(n, function() {
var t = vx(_);
t.fill = o;
var e = Dx(w);
if (e.fill = r, a) {
var i = h - 2 * g;
A(t, e, o, i, x, {
x: g,
y: 0,
width: i,
height: x
})
} else t.text = e.text = null;
n.setStyle(t), Os(n, e)
}), t.add(n)
}(b, S, o && p.upperHeight), !o) {
var M = T("content", _x, n, 2);
M && function(t, i) {
i.dataIndex = f.dataIndex, i.seriesIndex = d.seriesIndex;
var n = Math.max(h - 2 * g, 0),
a = Math.max(c - 2 * g, 0);
i.culling = !0, i.setShape({
x: g,
y: g,
width: n,
height: a
});
var o = f.getVisual("color", !0);
I(i, function() {
var t = vx(_);
t.fill = o;
var e = Dx(w);
A(t, e, o, n, a), i.setStyle(t), Os(i, e)
}), t.add(i)
}(b, M)
}
return b
}
}
}
function I(t, e) {
m ? t.invisible || i.push(t) : (e(), t.__tmWillVisible || (t.invisible = !1))
}
function A(t, e, i, n, a, o) {
var r = f.getModel(),
s = W(d.getFormattedLabel(f.dataIndex, "normal", null, null, o ? "upperLabel" : "label"), r.get("name"));
if (!o && p.isLeafRoot) {
var l = d.get("drillDownIcon", !0);
s = l ? l + " " + s : s
}
var u = r.getModel(o ? Ix : Sx),
h = r.getModel(o ? Ax : Mx),
c = u.getShallow("show");
Bs(t, e, u, h, {
defaultText: c ? s : null,
autoColor: i,
isRectText: !0
}), o && (t.textRect = D(o)), t.truncate = c && u.get("ellipsis") ? {
outerWidth: n,
outerHeight: a,
minChar: 2
} : null
}
function T(t, e, i, n) {
var a = null != y && s[t][y],
o = u[t];
return a ? (s[t][y] = null, function(t, e, i) {
(t[v] = {}).old = "nodeGroup" === i ? e.position.slice() : L({}, e.shape)
}(o, a, t)) : m || ((a = new e({
z: function(t, e) {
var i = t * Tx + e;
return (i - 1) / i
}(i, n)
})).__tmDepth = i, function(t, e, i) {
var n = t[v] = {},
a = f.parentNode;
if (a && (!l || "drillDown" === l.direction)) {
var o = 0,
r = 0,
s = u.background[a.getRawIndex()];
!l && s && s.old && (o = s.old.width, r = s.old.height), n.old = "nodeGroup" === i ? [0, r] : {
x: o,
y: r,
width: 0,
height: 0
}
}
n.fadein = "nodeGroup" !== i
}(o, 0, a.__tmStorageName = t)), r[t][v] = a
}
}
hf({
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 a = hx(n, ["treemapZoomToNode", "treemapRootToNode"], t),
o = n && n.type,
r = t.layoutInfo,
s = !this._oldTree,
l = this._storage,
u = "treemapRootToNode" === o && a && l ? {
rootNodeGroup: l.nodeGroup[a.node.getRawIndex()],
direction: n.direction
} : null,
h = this._giveContainerGroup(r),
c = this._doRender(h, t, u);
s || o && "treemapZoomToNode" !== o && "treemapRootToNode" !== o ? c.renderFinally() : this._doAnimation(h, c, t, u), this._resetController(i), this._renderBreadcrumb(t, i, a)
}
},
_giveContainerGroup: function(t) {
var e = this._containerGroup;
return e || (e = this._containerGroup = new xx, 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,
a = this._oldTree,
o = {
nodeGroup: [],
background: [],
content: []
},
r = {
nodeGroup: [],
background: [],
content: []
},
s = this._storage,
l = [],
c = A(Cx, e, r, s, i, o, l);
! function o(r, s, l, u, h) {
u ? bx(s = r, function(t, e) {
t.isRemoved() || i(e, e)
}) : new df(s, r, t, t).add(i).update(i).remove(A(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,
a = c(i, n, l, h);
a && o(i && i.viewChildren || [], n && n.viewChildren || [], a, u, h + 1)
}
}(n.root ? [n.root] : [], a && a.root ? [a.root] : [], t, n === a || !a, 0);
var u, h, d = (h = {
nodeGroup: [],
background: [],
content: []
}, (u = s) && bx(u, function(t, e) {
var i = h[e];
bx(t, function(t) {
t && (i.push(t), t.__tmWillDelete = 1)
})
}), h);
return this._oldTree = n, this._storage = r, {
lastsForAnimation: o,
willDeleteEls: d,
renderFinally: function() {
bx(d, function(t) {
bx(t, function(t) {
t.parent && t.parent.remove(t)
})
}), bx(l, function(t) {
t.invisible = !0, t.dirty()
})
}
}
},
_doAnimation: function(t, o, e, s) {
if (e.get("animation")) {
var l = e.get("animationDurationUpdate"),
u = e.get("animationEasing"),
h = function() {
var o, r = [],
s = {};
return {
add: function(t, e, i, n, a) {
return z(n) && (a = n, n = 0), !s[t.id] && (s[t.id] = 1, r.push({
el: t,
target: e,
time: i,
delay: n,
easing: a
}), !0)
},
done: function(t) {
return o = 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, a)
}
return this;
function a() {
--t || (r.length = 0, s = {}, o && o())
}
}
}
}();
bx(o.willDeleteEls, function(t, r) {
bx(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 a = 0,
o = 0;
n.__tmWillDelete || (a = n.__tmNodeWidth / 2, o = n.__tmNodeHeight / 2), i = "nodeGroup" === r ? {
position: [a, o],
style: {
opacity: 0
}
} : {
shape: {
x: a,
y: o,
width: 0,
height: 0
},
style: {
opacity: 0
}
}
}
i && h.add(t, i, l, u)
}
})
}), bx(this._storage, function(t, a) {
bx(t, function(t, e) {
var i = o.lastsForAnimation[a][e],
n = {};
i && ("nodeGroup" === a ? i.old && (n.position = t.position.slice(), t.attr("position", i.old)) : (i.old && (n.shape = L({}, 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(yx(function() {
this._state = "ready", o.renderFinally()
}, this)).start()
}
},
_resetController: function(t) {
var e = this._controller;
e || ((e = this._controller = new sy(t.getZr())).enable(this.seriesModel.get("roam")), e.on("pan", yx(this._onPan, this)), e.on("zoom", yx(this._onZoom, this)));
var n = new bi(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 a = n.getLayout();
if (!a) return;
var o = new bi(a.x, a.y, a.width, a.height),
r = this.seriesModel.layoutInfo;
e -= r.x, i -= r.y;
var s = Qt();
ne(s, s, [-e, -i]), oe(s, s, [t.scale, t.scale]), ne(s, s, [e, i]), o.applyTransform(s), this.api.dispatchAction({
type: "treemapRender",
from: this.uid,
seriesId: this.seriesModel.id,
rootRect: {
x: o.x,
y: o.y,
width: o.width,
height: o.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 a = n.hostTree.data.getItemModel(n.dataIndex),
o = a.get("link", !0),
r = a.get("target", !0) || "blank";
o && window.open(o, 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 gx(this.group))).render(e, t, i.node, yx(function(t) {
"animating" !== this._state && (dx(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(a, o) {
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(a, o),
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 Lx = function() {}, kx = ["treemapZoomToNode", "treemapRender", "treemapMove"], Px = 0; Px < kx.length; Px++) tf({
type: kx[Px],
update: "updateView"
}, Lx);
tf({
type: "treemapRootToNode",
update: "updateView"
}, function(a, t) {
t.eachComponent({
mainType: "series",
subType: "treemap",
query: a
}, function(t, e) {
var i = hx(a, ["treemapZoomToNode", "treemapRootToNode"], t);
if (i) {
var n = t.getViewRoot();
n && (a.direction = dx(n, i.node) ? "rollUp" : "drillDown"), t.resetViewRoot(i.node)
}
})
});
var Nx = O,
Ox = E,
Rx = -1,
zx = function(t) {
var e = t.mappingMethod,
i = t.type,
n = this.option = D(t);
this.type = i, this.mappingMethod = e, this._normalizeData = Yx[e];
var a = Ex[i];
this.applyVisual = a.applyVisual, this.getColorMapper = a.getColorMapper, this._doMap = a._doMap[e], "piecewise" === e ? (Bx(n), function(i) {
var t = i.pieceList;
i.hasSpecialVisual = !1, O(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 (Nx(e, function(t, e) {
n[t] = e
}), !k(i)) {
var a = [];
E(i) ? Nx(i, function(t, e) {
var i = n[e];
a[null != i ? i : Rx] = t
}) : a[Rx] = i, i = Xx(t, a)
}
for (var o = e.length - 1; 0 <= o; o--) null == i[o] && (delete n[e[o]], e.pop())
}(n) : Bx(n, !0) : (Y("linear" !== e || n.dataExtent), Bx(n))
};
zx.prototype = {
constructor: zx,
mapValueToVisual: function(t) {
var e = this._normalizeData(t);
return this._doMap(e, t)
},
getNormalizer: function() {
return T(this._normalizeData, this)
}
};
var Ex = zx.visualHandlers = {
color: {
applyVisual: Fx("color"),
getColorMapper: function() {
var a = this.option;
return T("category" === a.mappingMethod ? function(t, e) {
return e || (t = this._normalizeData(t)), Wx.call(this, t)
} : function(t, e, i) {
var n = !!i;
return e || (t = this._normalizeData(t)), i = Ve(t, a.parsedVisual, i), n ? i : Ue(i, "rgba")
}, this)
},
_doMap: {
linear: function(t) {
return Ue(Ve(t, this.option.parsedVisual), "rgba")
},
category: Wx,
piecewise: function(t, e) {
var i = Ux.call(this, e);
return null == i && (i = Ue(Ve(t, this.option.parsedVisual), "rgba")), i
},
fixed: Hx
}
},
colorHue: Vx(function(t, e) {
return He(t, e)
}),
colorSaturation: Vx(function(t, e) {
return He(t, null, e)
}),
colorLightness: Vx(function(t, e) {
return He(t, null, null, e)
}),
colorAlpha: Vx(function(t, e) {
return Ze(t, e)
}),
opacity: {
applyVisual: Fx("opacity"),
_doMap: Zx([0, 1])
},
liftZ: {
applyVisual: Fx("liftZ"),
_doMap: {
linear: Hx,
category: Hx,
piecewise: Hx,
fixed: Hx
}
},
symbol: {
applyVisual: function(t, e, i) {
var n = this.mapValueToVisual(t);
if (z(n)) i("symbol", n);
else if (Ox(n))
for (var a in n) n.hasOwnProperty(a) && i(a, n[a])
},
_doMap: {
linear: Gx,
category: Wx,
piecewise: function(t, e) {
var i = Ux.call(this, e);
return null == i && (i = Gx.call(this, t)), i
},
fixed: Hx
}
},
symbolSize: {
applyVisual: Fx("symbolSize"),
_doMap: Zx([0, 1])
}
};
function Bx(t, e) {
var i = t.visual,
n = [];
E(i) ? Nx(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]), Xx(t, n)
}
function Vx(n) {
return {
applyVisual: function(t, e, i) {
t = this.mapValueToVisual(t), i("color", n(e("color"), t))
},
_doMap: Zx([0, 1])
}
}
function Gx(t) {
var e = this.option.visual;
return e[Math.round(yl(t, [0, 1], [0, e.length - 1], !0))] || {}
}
function Fx(n) {
return function(t, e, i) {
i(n, this.mapValueToVisual(t))
}
}
function Wx(t) {
var e = this.option.visual;
return e[this.option.loop && t !== Rx ? t % e.length : t]
}
function Hx() {
return this.option.visual[0]
}
function Zx(n) {
return {
linear: function(t) {
return yl(t, n, this.option.visual, !0)
},
category: Wx,
piecewise: function(t, e) {
var i = Ux.call(this, e);
return null == i && (i = yl(t, n, this.option.visual, !0)), i
},
fixed: Hx
}
}
function Ux(t) {
var e = this.option,
i = e.pieceList;
if (e.hasSpecialVisual) {
var n = i[zx.findPieceIndex(t, i)];
if (n && n.visual) return n.visual[this.type]
}
}
function Xx(t, e) {
return t.visual = e, "color" === t.type && (t.parsedVisual = N(e, function(t) {
return Re(t)
})), e
}
var Yx = {
linear: function(t) {
return yl(t, this.option.dataExtent, [0, 1], !0)
},
piecewise: function(t) {
var e = this.option.pieceList,
i = zx.findPieceIndex(t, e, !0);
if (null != i) return yl(i, [0, e.length - 1], [0, 1], !0)
},
category: function(t) {
var e = this.option.categories ? this.option.categoryMap[t] : t;
return null == e ? Rx : e
},
fixed: et
};
function jx(t, e, i) {
return t ? e <= i : e < i
}
zx.listVisualTypes = function() {
var i = [];
return O(Ex, function(t, e) {
i.push(e)
}), i
}, zx.addVisualHandler = function(t, e) {
Ex[t] = e
}, zx.isValidType = function(t) {
return Ex.hasOwnProperty(t)
}, zx.eachVisual = function(t, e, i) {
E(t) ? O(t, e, i) : e.call(i, t)
}, zx.mapVisual = function(t, n, a) {
var o, r = k(t) ? [] : E(t) ? {} : (o = !0, null);
return zx.eachVisual(t, function(t, e) {
var i = n.call(a, t, e);
o ? r = i : r[e] = i
}), r
}, zx.retrieveVisuals = function(i) {
var n, a = {};
return i && Nx(Ex, function(t, e) {
i.hasOwnProperty(e) && (a[e] = i[e], n = !0)
}), n ? a : null
}, zx.prepareVisualTypes = function(t) {
if (Ox(t)) {
var i = [];
Nx(t, function(t, e) {
i.push(e)
}), t = i
} else {
if (!k(t)) return [];
t = t.slice()
}
return t.sort(function(t, e) {
return "color" === e && "color" !== t && 0 === t.indexOf("color") ? 1 : -1
}), t
}, zx.dependsOn = function(t, e) {
return "color" === e ? !(!t || 0 !== t.indexOf(e)) : t === e
}, zx.findPieceIndex = function(n, t, e) {
for (var a, o = 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 (jx(h[1], n, u[1])) return i
} else if (u[1] === 1 / 0) {
if (jx(h[0], u[0], n)) return i
} else if (jx(h[0], u[0], n) && jx(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 : a;
function c(t, e) {
var i = Math.abs(t - n);
i < o && (o = i, a = e)
}
};
var qx = k,
Kx = "itemStyle",
$x = {
seriesType: "treemap",
reset: function(t, e, i, n) {
var a = t.getData().tree,
o = a.root,
r = t.getModel(Kx);
o.isRemoved() || ! function n(t, e, a, o, r, s) {
var l = t.getModel();
var i = t.getLayout();
if (!i || i.invisible || !i.isInView) return;
var u = t.getModel(Kx);
var h = a[t.depth];
var c = Jx(u, e, h, o);
var d = u.get("borderColor");
var f = u.get("borderColorSaturation");
var p;
null != f && (p = Qx(c), g = f, d = null != (m = p) ? He(m, null, null, g) : null);
var g, m;
t.setVisual("borderColor", d);
var v = t.viewChildren;
if (v && v.length) {
var y = e_(t, l, i, u, c, v);
O(v, function(t, e) {
if (t.depth >= r.length || t === r[t.depth]) {
var i = n_(l, c, t, e, y, s);
n(t, i, a, o, r, s)
}
})
} else p = Qx(c), t.setVisual("color", p)
}(o, {}, N(a.levelModels, function(t) {
return t ? t.get(Kx) : null
}), r, t.getViewRoot().getAncestors(), t)
}
};
function Jx(i, n, a, o) {
var r = L({}, n);
return O(["color", "colorAlpha", "colorSaturation"], function(t) {
var e = i.get(t, !0);
null == e && a && (e = a[t]), null == e && (e = n[t]), null == e && (e = o.get(t)), null != e && (r[t] = e)
}), r
}
function Qx(t) {
var e = t_(t, "color");
if (e) {
var i = t_(t, "colorAlpha"),
n = t_(t, "colorSaturation");
return n && (e = He(e, null, null, n)), i && (e = Ze(e, i)), e
}
}
function t_(t, e) {
var i = t[e];
if (null != i && "none" !== i) return i
}
function e_(t, e, i, n, a, o) {
if (o && o.length) {
var r = i_(e, "color") || null != a.color && "none" !== a.color && (i_(e, "colorAlpha") || i_(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 zx(c);
return d.__drColorMappingBy = h, d
}
}
}
function i_(t, e) {
var i = t.get(e);
return qx(i) && i.length ? {
name: e,
range: i
} : null
}
function n_(t, e, i, n, a, o) {
var r = L({}, e);
if (a) {
var s = a.type,
l = "color" === s && a.__drColorMappingBy,
u = "index" === l ? n : "id" === l ? o.mapIdToIndex(i.getId()) : i.getValue(t.get("visualDimension"));
r[s] = a.mapValueToVisual(u)
}
return r
}
var a_ = Math.max,
o_ = Math.min,
r_ = W,
s_ = O,
l_ = ["itemStyle", "borderWidth"],
u_ = ["itemStyle", "gapWidth"],
h_ = ["upperLabel", "show"],
c_ = ["upperLabel", "height"],
d_ = {
seriesType: "treemap",
reset: function(t, e, i, n) {
var a = i.getWidth(),
o = i.getHeight(),
r = t.option,
s = au(t.getBoxLayoutParams(), {
width: i.getWidth(),
height: i.getHeight()
}),
l = r.size || [],
u = xl(r_(s.width, l[0]), a),
h = xl(r_(s.height, l[1]), o),
c = n && n.type,
d = hx(n, ["treemapZoomToNode", "treemapRootToNode"], t),
f = "treemapRender" === c || "treemapMove" === c ? n.rootRect : null,
p = t.getViewRoot(),
g = cx(p);
if ("treemapMove" !== c) {
var m = "treemapZoomToNode" === c ? function(t, e, i, n, a) {
var o, r = (e || {}).node,
s = [n, a];
if (!r || r === i) return s;
var l = n * a,
u = l * t.option.zoomToNodeRatio;
for (; o = r.parentNode;) {
for (var h = 0, c = o.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 = o.getModel(),
m = g.get(l_),
v = Math.max(m, m_(g));
u += 4 * m * m + (3 * m + v) * Math.pow(u, .5), Al < u && (u = Al), r = o
}
u < l && (u = l);
var y = Math.pow(u / l, .5);
return [n * y, a * 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, a) {
var o;
var r;
if (e.isRemoved()) return;
var s = e.getLayout();
o = s.width;
r = s.height;
var l = e.getModel();
var u = l.get(l_);
var h = l.get(u_) / 2;
var c = m_(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);
o = a_(o - 2 * f, 0);
r = a_(r - f - p, 0);
var g = o * r;
var m = f_(e, l, g, i, n, a);
if (!m.length) return;
var v = {
x: f,
y: p,
width: o,
height: r
};
var y = o_(o, 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 = p_(_, y, i.squareRatio);
x = M <= x ? (w++, M) : (_.area -= _.pop().getLayout().area, g_(_, y, v, h, !1), y = o_(v.width, v.height), _.length = _.area = 0, 1 / 0)
}
_.length && g_(_, 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, a + 1)
}(p, y, !1, 0);
x = p.getLayout();
s_(g, function(t, e) {
var i = (g[e + 1] || p).getValue();
t.setLayout(L({
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 a = i.node,
o = a.getLayout();
if (!o) return n;
var r = [o.width / 2, o.height / 2],
s = a;
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, a, o) {
var r = t.getLayout();
var s = n[o];
var l = s && s === t;
if (s && !l || o === n.length && t !== a) return;
t.setLayout({
isInView: !0,
invisible: !l && !i.intersect(r),
isAboveViewRoot: l
}, !0);
var u = new bi(i.x - r.x, i.y - r.y, i.width, i.height);
s_(t.viewChildren || [], function(t) {
e(t, u, n, a, o + 1)
})
}(_, new bi(-s.x, -s.y, a, o), g, p, 0)
}
};
function f_(t, e, i, n, a, o) {
var r = t.children || [],
s = n.sort;
"asc" !== s && "desc" !== s && (s = null);
var l = null != n.leafDepth && n.leafDepth <= o;
if (a && !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, a = 0, o = e.length; a < o; a++) n += e[a].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];
s_(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, a) {
if (!n) return i;
for (var o = t.get("visibleMin"), r = a.length, s = r, l = r - 1; 0 <= l; l--) {
var u = a["asc" === n ? r - l - 1 : l].getValue();
u / i * e < o && (s = l, i -= u)
}
return "asc" === n ? a.splice(0, r - s) : a.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 p_(t, e, i) {
for (var n, a = 0, o = 1 / 0, r = 0, s = t.length; r < s; r++)(n = t[r].getLayout().area) && (n < o && (o = n), a < n && (a = n));
var l = t.area * t.area,
u = e * e * i;
return l ? a_(u * a / l, l / (u * o)) : 1 / 0
}
function g_(t, e, i, n, a) {
var o = e === i.width ? 0 : 1,
r = 1 - o,
s = ["x", "y"],
l = ["width", "height"],
u = i[s[o]],
h = e ? t.area / e : 0;
(a || 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]] = a_(h - 2 * n, 0),
v = i[s[o]] + i[l[o]] - u,
y = c === d - 1 || v < g ? v : g,
x = p[l[o]] = a_(y - 2 * n, 0);
p[s[r]] = i[s[r]] + o_(n, m / 2), p[s[o]] = u + o_(n, x / 2), u += y, f.setLayout(p, !0)
}
i[s[r]] += h, i[l[r]] -= h
}
function m_(t) {
return t.get(h_) ? t.get(c_) : 0
}
function v_(t) {
return "_EC_" + t
}
af($x), nf(d_);
function y_(t) {
this._directed = t || !1, this.nodes = [], this.edges = [], this._nodesMap = {}, this._edgesMap = {}, this.data, this.edgeData
}
var x_ = y_.prototype;
function __(t, e) {
this.id = null == t ? "" : t, this.inEdges = [], this.outEdges = [], this.edges = [], this.hostGraph, this.dataIndex = null == e ? -1 : e
}
function w_(t, e, i) {
this.node1 = t, this.node2 = e, this.dataIndex = null == i ? -1 : i
}
x_.type = "graph", x_.isDirected = function() {
return this._directed
}, x_.addNode = function(t, e) {
t = null == t ? "" + e : "" + t;
var i = this._nodesMap;
if (!i[v_(t)]) {
var n = new __(t, e);
return (n.hostGraph = this).nodes.push(n), i[v_(t)] = n
}
}, x_.getNodeByIndex = function(t) {
var e = this.data.getRawIndex(t);
return this.nodes[e]
}, x_.getNodeById = function(t) {
return this._nodesMap[v_(t)]
}, x_.addEdge = function(t, e, i) {
var n = this._nodesMap,
a = this._edgesMap;
if ("number" == typeof t && (t = this.nodes[t]), "number" == typeof e && (e = this.nodes[e]), __.isInstance(t) || (t = n[v_(t)]), __.isInstance(e) || (e = n[v_(e)]), t && e) {
var o = t.id + "-" + e.id;
if (!a[o]) {
var r = new w_(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), a[o] = r
}
}
}, x_.getEdgeByIndex = function(t) {
var e = this.edgeData.getRawIndex(t);
return this.edges[e]
}, x_.getEdge = function(t, e) {
__.isInstance(t) && (t = t.id), __.isInstance(e) && (e = e.id);
var i = this._edgesMap;
return this._directed ? i[t + "-" + e] : i[t + "-" + e] || i[e + "-" + t]
}, x_.eachNode = function(t, e) {
for (var i = this.nodes, n = i.length, a = 0; a < n; a++) 0 <= i[a].dataIndex && t.call(e, i[a], a)
}, x_.eachEdge = function(t, e) {
for (var i = this.edges, n = i.length, a = 0; a < n; a++) 0 <= i[a].dataIndex && 0 <= i[a].node1.dataIndex && 0 <= i[a].node2.dataIndex && t.call(e, i[a], a)
}, x_.breadthFirstTraverse = function(t, e, i, n) {
if (__.isInstance(e) || (e = this._nodesMap[v_(e)]), e) {
for (var a = "out" === i ? "outEdges" : "in" === i ? "inEdges" : "edges", o = 0; o < this.nodes.length; o++) this.nodes[o].__visited = !1;
if (!t.call(n, e, null))
for (var r = [e]; r.length;) {
var s = r.shift(),
l = s[a];
for (o = 0; o < l.length; o++) {
var u = l[o],
h = u.node1 === s ? u.node2 : u.node1;
if (!h.__visited) {
if (t.call(n, h, s)) return;
r.push(h), h.__visited = !0
}
}
}
}
}, x_.update = function() {
for (var t = this.data, i = this.edgeData, e = this.nodes, n = this.edges, a = 0, o = e.length; a < o; a++) e[a].dataIndex = -1;
for (a = 0, o = t.count(); a < o; a++) e[t.getRawIndex(a)].dataIndex = a;
i.filterSelf(function(t) {
var e = n[i.getRawIndex(t)];
return 0 <= e.node1.dataIndex && 0 <= e.node2.dataIndex
});
for (a = 0, o = n.length; a < o; a++) n[a].dataIndex = -1;
for (a = 0, o = i.count(); a < o; a++) n[i.getRawIndex(a)].dataIndex = a
}, x_.clone = function() {
for (var t = new y_(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 a = i[n];
t.addEdge(a.node1.id, a.node2.id, a.dataIndex)
}
return t
}, __.prototype = {
constructor: __,
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)
}
}, w_.prototype.getModel = function(t) {
if (!(this.dataIndex < 0)) return this.hostGraph.edgeData.getItemModel(this.dataIndex).getModel(t)
};
function b_(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(__, b_("hostGraph", "data")), b(w_, b_("hostGraph", "edgeData")), y_.Node = __, y_.Edge = w_, Wa(__), Wa(w_);
function S_(t, e, i, n, a) {
for (var o = new y_(n), r = 0; r < t.length; r++) o.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;
o.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 = Xf(t, i);
else {
var g = Hu.get(p),
m = g && "view" !== g.type && g.dimensions || [];
_(m, "value") < 0 && m.concat(["value"]);
var v = Wf(t, {
coordDimensions: m
});
(f = new Tf(v, i)).initData(t)
}
var y = new Tf(["value"], i);
return y.initData(l, s), a && a(f, y), Gy({
mainData: f,
struct: o,
structAttr: "graph",
datas: {
node: f,
edge: y
},
datasAttr: {
node: "data",
edge: "edgeData"
}
}), o.update(), o
}
var M_ = uf({
type: "series.graph",
init: function(t) {
M_.superApply(this, "init", arguments), this.legendDataProvider = function() {
return this._categoriesData
}, this.fillDataTextStyle(t.edges || t.links), this._updateCategoriesData()
},
mergeOption: function(t) {
M_.superApply(this, "mergeOption", arguments), this.fillDataTextStyle(t.edges || t.links), this._updateCategoriesData()
},
mergeDefaultAndTheme: function(t) {
M_.superApply(this, "mergeDefaultAndTheme", arguments), ba(t, ["edgeLabel"], ["show"])
},
getInitialData: function(t, s) {
var e = t.edges || t.links || [],
i = t.data || t.nodes || [],
l = this;
if (i && e) return S_(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 dl({
label: i.option
}, i.parentModel, s),
a = l.getModel("emphasis.edgeLabel"),
o = new dl({
emphasis: {
label: a.option
}
}, a.parentModel, s);
function r(t) {
return (t = this.parsePath(t)) && "label" === t[0] ? n : t && "emphasis" === t[0] && "label" === t[1] ? o : 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 M_.superApply(this, "formatTooltip", arguments);
var n = this.getData(),
a = this.getDataParams(t, i),
o = n.graph.getEdgeByIndex(t),
r = n.getName(o.node1.dataIndex),
s = n.getName(o.node2.dataIndex),
l = [];
return null != r && l.push(r), null != s && l.push(s), l = Wl(l.join(" > ")), a.value && (l += " : " + Wl(a.value)), l
},
_updateCategoriesData: function() {
var t = N(this.option.categories || [], function(t) {
return null != t.value ? t : L({
value: 0
}, t)
}),
e = new Tf(["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 M_.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,
edgeLength: 30,
layoutAnimation: !0
},
left: "center",
top: "center",
symbol: "circle",
symbolSize: 10,
edgeSymbol: ["none", "none"],
edgeSymbolSize: 10,
edgeLabel: {
position: "middle"
},
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
}
}
}
}),
I_ = Ur.prototype,
A_ = qr.prototype;
function T_(t) {
return isNaN(+t.cpx1) || isNaN(+t.cpy1)
}
var D_ = ds({
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[T_(e) ? "_buildPathLine" : "_buildPathCurve"](t, e)
},
_buildPathLine: I_.buildPath,
_buildPathCurve: A_.buildPath,
pointAt: function(t) {
return this[T_(this.shape) ? "_pointAtLine" : "_pointAtCurve"](t)
},
_pointAtLine: I_.pointAt,
_pointAtCurve: A_.pointAt,
tangentAt: function(t) {
var e = this.shape,
i = T_(e) ? [e.x2 - e.x1, e.y2 - e.y1] : this._tangentAtCurve(t);
return mt(i, i)
},
_tangentAtCurve: A_.tangentAt
}),
C_ = ["fromSymbol", "toSymbol"];
function L_(t) {
return "_" + t + "Type"
}
function k_(t, e, i) {
var n = e.getItemVisual(i, "color"),
a = e.getItemVisual(i, t),
o = e.getItemVisual(i, t + "Size");
if (a && "none" !== a) {
k(o) || (o = [o, o]);
var r = Jp(a, -o[0] / 2, -o[1] / 2, o[0], o[1], n);
return r.name = t, r
}
}
function P_(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 N_(t, e, i) {
Si.call(this), this._createLine(t, e, i)
}
var O_ = N_.prototype;
function R_(t) {
this._ctor = t || N_, this.group = new Si
}
O_.beforeUpdate = function() {
var t = this.childOfName("fromSymbol"),
e = this.childOfName("toSymbol"),
i = this.childOfName("label");
if (t || e || !i.ignore) {
for (var n = 1, a = this.parent; a;) a.scale && (n /= a.scale[0]), a = a.parent;
var o = this.childOfName("line");
if (this.__dirty || o.__dirty) {
var r = o.shape.percent,
s = o.pointAt(0),
l = o.pointAt(r),
u = ht([], l, s);
if (mt(u, u), t) {
t.attr("position", s);
var h = o.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 = o.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;
i.attr("position", l);
var p = 5 * n;
if ("end" === i.__position) c = [u[0] * p + l[0], u[1] * p + l[1]], d = .8 < u[0] ? "left" : u[0] < -.8 ? "right" : "center", f = .8 < u[1] ? "top" : u[1] < -.8 ? "bottom" : "middle";
else if ("middle" === i.__position) {
var g = r / 2,
m = [(h = o.tangentAt(g))[1], -h[0]],
v = o.pointAt(g);
0 < m[1] && (m[0] = -m[0], m[1] = -m[1]), c = [v[0] + m[0] * p, v[1] + m[1] * p], d = "center", f = "bottom";
var y = -Math.atan2(h[1], h[0]);
l[0] < s[0] && (y = Math.PI + y), i.attr("rotation", y)
} else c = [-u[0] * p + s[0], -u[1] * p + s[1]], d = .8 < u[0] ? "right" : u[0] < -.8 ? "left" : "center", f = .8 < u[1] ? "bottom" : u[1] < -.8 ? "top" : "middle";
i.attr({
style: {
textVerticalAlign: i.__verticalAlign || f,
textAlign: i.__textAlign || d
},
position: c,
scale: [n, n]
})
}
}
}
}, O_._createLine = function(i, n, t) {
var e = i.hostModel,
a = function(t) {
var e = new D_({
name: "line",
subPixelOptimize: !0
});
return P_(e.shape, t), e
}(i.getItemLayout(n));
a.shape.percent = 0, qs(a, {
shape: {
percent: 1
}
}, e, n), this.add(a);
var o = new Dr({
name: "label",
lineLabelOriginalOpacity: 1
});
this.add(o), O(C_, function(t) {
var e = k_(t, i, n);
this.add(e), this[L_(t)] = i.getItemVisual(n, t)
}, this), this._updateCommonStl(i, n, t)
}, O_.updateData = function(a, o, t) {
var e = a.hostModel,
i = this.childOfName("line"),
n = a.getItemLayout(o),
r = {
shape: {}
};
P_(r.shape, n), js(i, r, e, o), O(C_, function(t) {
var e = a.getItemVisual(o, t),
i = L_(t);
if (this[i] !== e) {
this.remove(this.childOfName(t));
var n = k_(t, a, o);
this.add(n)
}
this[i] = e
}, this), this._updateCommonStl(a, o, t)
}, O_._updateCommonStl = function(t, e, i) {
var n = t.hostModel,
a = this.childOfName("line"),
o = i && i.lineStyle,
r = i && i.hoverLineStyle,
s = i && i.labelModel,
l = i && i.hoverLabelModel;
if (!i || t.hasItemOption) {
var u = t.getItemModel(e);
o = 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"), o.opacity, 1);
a.useStyle(C({
strokeNoScale: !0,
fill: "none",
stroke: h,
opacity: c
}, o)), a.hoverStyle = r, O(C_, 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) ? _l(v) : v
}
var y = p ? f : null,
x = g ? H(n.getFormattedLabel(e, "emphasis", t.dataType), f) : null,
_ = m.style;
null == y && null == x || (Gs(m.style, s, {
text: y
}, {
autoColor: d
}), m.__textAlign = _.textAlign, m.__verticalAlign = _.textVerticalAlign, m.__position = s.get("position") || "middle"), 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, Os(this)
}, O_.highlight = function() {
this.trigger("emphasis")
}, O_.downplay = function() {
this.trigger("normal")
}, O_.updateLayout = function(t, e) {
this.setLinePoints(t.getItemLayout(e))
}, O_.setLinePoints = function(t) {
var e = this.childOfName("line");
P_(e.shape, t), e.dirty()
}, w(N_, Si);
var z_ = R_.prototype;
function E_(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 B_(t) {
return isNaN(t[0]) || isNaN(t[1])
}
function V_(t) {
return !B_(t[0]) && !B_(t[1])
}
function G_(t) {
var e = t.coordinateSystem;
if ("view" !== e.type) return 1;
var i = t.option.nodeScaleRatio,
n = e.scale,
a = n && n[0] || 1;
return ((e.getZoom() - 1) * i + 1) / a
}
function F_(t) {
var e = t.getVisual("symbolSize");
return e instanceof Array && (e = (e[0] + e[1]) / 2), +e
}
z_.isPersistent = function() {
return !0
}, z_.updateData = function(i) {
var n = this,
e = n.group,
a = n._lineData;
n._lineData = i, a || e.removeAll();
var o = E_(i);
i.diff(a).add(function(t) {
! function(t, e, i, n) {
if (!V_(e.getItemLayout(i))) return;
var a = new t._ctor(e, i, n);
e.setItemGraphicEl(i, a), t.group.add(a)
}(n, i, t, o)
}).update(function(t, e) {
! function(t, e, i, n, a, o) {
var r = e.getItemGraphicEl(n);
if (!V_(i.getItemLayout(a))) return t.group.remove(r);
r ? r.updateData(i, a, o) : r = new t._ctor(i, a, o);
i.setItemGraphicEl(a, r), t.group.add(r)
}(n, a, i, e, t, o)
}).remove(function(t) {
e.remove(a.getItemGraphicEl(t))
}).execute()
}, z_.updateLayout = function() {
var i = this._lineData;
i && i.eachItemGraphicEl(function(t, e) {
t.updateLayout(i, e)
}, this)
}, z_.incrementalPrepareUpdate = function(t) {
this._seriesScope = E_(t), this._lineData = null, this.group.removeAll()
}, z_.incrementalUpdate = function(t, e) {
function i(t) {
t.isGroup || (t.incremental = t.useHoverLayer = !0)
}
for (var n = t.start; n < t.end; n++) {
if (V_(e.getItemLayout(n))) {
var a = new this._ctor(e, n, this._seriesScope);
a.traverse(i), this.group.add(a), e.setItemGraphicEl(n, a)
}
}
}, z_.remove = function() {
this._clearIncremental(), this._incremental = null, this.group.removeAll()
}, z_._clearIncremental = function() {
var t = this._incremental;
t && t.clearDisplaybles()
};
var W_ = [],
H_ = [],
Z_ = [],
U_ = fo,
X_ = _t,
Y_ = Math.abs;
function j_(t, e, i) {
for (var n, a = t[0], o = t[1], r = t[2], s = 1 / 0, l = i * i, u = .1, h = .1; h <= .9; h += .1) {
W_[0] = U_(a[0], o[0], r[0], h), W_[1] = U_(a[1], o[1], r[1], h), (f = Y_(X_(W_, e) - l)) < s && (s = f, n = h)
}
for (var c = 0; c < 32; c++) {
var d = n + u;
H_[0] = U_(a[0], o[0], r[0], n), H_[1] = U_(a[1], o[1], r[1], n), Z_[0] = U_(a[0], o[0], r[0], d), Z_[1] = U_(a[1], o[1], r[1], d);
var f = X_(H_, e) - l;
if (Y_(f) < .01) break;
var p = X_(Z_, e) - l;
u /= 2, f < 0 ? 0 <= p ? n += u : n -= u : 0 <= p ? n -= u : n += u
}
return n
}
function q_(t, l) {
var u = [],
h = mo,
c = [
[],
[],
[]
],
d = [
[],
[]
],
f = [];
l /= 2, t.eachEdge(function(t, e) {
var i = t.getLayout(),
n = t.getVisual("fromSymbol"),
a = t.getVisual("toSymbol");
i.__original || (i.__original = [rt(i[0]), rt(i[1])], i[2] && i.__original.push(rt(i[2])));
var o = i.__original;
if (null != i[2]) {
if (ot(c[0], o[0]), ot(c[1], o[2]), ot(c[2], o[1]), n && "none" !== n) {
var r = F_(t.node1),
s = j_(c, o[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 (a && "none" !== a) {
r = F_(t.node2), s = j_(c, o[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]
}
ot(i[0], c[0]), ot(i[1], c[2]), ot(i[2], c[1])
} else {
if (ot(d[0], o[0]), ot(d[1], o[1]), ht(f, d[1], d[0]), mt(f, f), n && "none" !== n) {
r = F_(t.node1);
ut(d[0], d[0], f, r * l)
}
if (a && "none" !== a) {
r = F_(t.node2);
ut(d[1], d[1], f, -r * l)
}
ot(i[0], d[0]), ot(i[1], d[1])
}
})
}
var K_ = "__focusNodeAdjacency",
$_ = "__unfocusNodeAdjacency",
J_ = ["itemStyle", "opacity"],
Q_ = ["lineStyle", "opacity"];
function tw(t, e) {
var i = t.getVisual("opacity");
return null != i ? i : t.getModel().get(e)
}
function ew(t, e, i) {
var n = t.getGraphicEl(),
a = tw(t, e);
null != i && (null == a && (a = 1), a *= i), n.downplay && n.downplay(), n.traverse(function(t) {
if (!t.isGroup) {
var e = t.lineLabelOriginalOpacity;
null != e && null == i || (e = a), t.setStyle("opacity", e)
}
})
}
function iw(t, e) {
var i = tw(t, e),
n = t.getGraphicEl();
n.traverse(function(t) {
t.isGroup || t.setStyle("opacity", i)
}), n.highlight && n.highlight()
}
hf({
type: "graph",
init: function(t, e) {
var i = new Ng,
n = new R_,
a = this.group;
this._controller = new sy(e.getZr()), this._controllerHost = {
target: a
}, a.add(i.group), a.add(n.group), this._symbolDraw = i, this._lineDraw = n, this._firstRender = !0
},
render: function(a, t, o) {
var e = a.coordinateSystem;
this._model = a;
var i = this._symbolDraw,
n = this._lineDraw,
r = this.group;
if ("view" === e.type) {
var s = {
position: e.position,
scale: e.scale
};
this._firstRender ? r.attr(s) : js(r, s, a)
}
q_(a.getGraph(), G_(a));
var l = a.getData();
i.updateData(l);
var u = a.getEdgeData();
n.updateData(u), this._updateNodeAndLinkScale(), this._updateController(a, t, o), clearTimeout(this._layoutTimeout);
var h = a.forceLayout,
c = a.get("force.layoutAnimation");
h && this._startForceLayoutIteration(h, c), l.eachItemGraphicEl(function(t, e) {
var i = l.getItemModel(e);
t.off("drag").off("dragend");
var n = i.get("draggable");
n && t.on("drag", function() {
h && (h.warmUp(), this._layouting || this._startForceLayoutIteration(h, c), h.setFixed(e), l.setItemLayout(e, t.position))
}, this).on("dragend", function() {
h && h.setUnfixed(e)
}, this), t.setDraggable(n && h), t[K_] && t.off("mouseover", t[K_]), t[$_] && t.off("mouseout", t[$_]), i.get("focusNodeAdjacency") && (t.on("mouseover", t[K_] = function() {
o.dispatchAction({
type: "focusNodeAdjacency",
seriesId: a.id,
dataIndex: t.dataIndex
})
}), t.on("mouseout", t[$_] = function() {
o.dispatchAction({
type: "unfocusNodeAdjacency",
seriesId: a.id
})
}))
}, this), l.graph.eachEdge(function(t) {
var e = t.getGraphicEl();
e[K_] && e.off("mouseover", e[K_]), e[$_] && e.off("mouseout", e[$_]), t.getModel().get("focusNodeAdjacency") && (e.on("mouseover", e[K_] = function() {
o.dispatchAction({
type: "focusNodeAdjacency",
seriesId: a.id,
edgeDataIndex: t.dataIndex
})
}), e.on("mouseout", e[$_] = function() {
o.dispatchAction({
type: "unfocusNodeAdjacency",
seriesId: a.id
})
}))
});
var d = "circular" === a.get("layout") && a.get("circular.rotateLabel"),
f = l.getLayout("cx"),
p = l.getLayout("cy");
l.eachItemGraphicEl(function(t, e) {
var i = l.getItemModel(e).get("label.rotate") || 0,
n = t.getSymbolPath();
if (d) {
var a = l.getItemLayout(e),
o = Math.atan2(a[1] - p, a[0] - f);
o < 0 && (o = 2 * Math.PI + o);
var r = a[0] < f;
r && (o -= Math.PI);
var s = r ? "left" : "right";
Vs(n, {
textRotation: -o,
textPosition: s,
textOrigin: "center"
}, {
textPosition: s
})
} else Vs(n, {
textRotation: i *= Math.PI / 180
})
}), this._firstRender = !1
},
dispose: function() {
this._controller && this._controller.dispose(), this._controllerHost = {}
},
focusNodeAdjacency: function(t, e, i, n) {
var a = this._model.getData().graph,
o = n.dataIndex,
r = n.edgeDataIndex,
s = a.getNodeByIndex(o),
l = a.getEdgeByIndex(r);
(s || l) && (a.eachNode(function(t) {
ew(t, J_, .1)
}), a.eachEdge(function(t) {
ew(t, Q_, .1)
}), s && (iw(s, J_), O(s.edges, function(t) {
t.dataIndex < 0 || (iw(t, Q_), iw(t.node1, J_), iw(t.node2, J_))
})), l && (iw(l, Q_), iw(l.node1, J_), iw(l.node2, J_)))
},
unfocusNodeAdjacency: function(t, e, i, n) {
var a = this._model.getData().graph;
a.eachNode(function(t) {
ew(t, J_)
}), a.eachEdge(function(t) {
ew(t, Q_)
})
},
_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(a, t, o) {
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) && !xy(t, o, a)
}), "view" === a.coordinateSystem.type ? (e.enable(a.get("roam")), i.zoomLimit = a.get("scaleLimit"), i.zoom = a.coordinateSystem.getZoom(), e.off("pan").off("zoom").on("pan", function(t) {
my(i, t.dx, t.dy), o.dispatchAction({
seriesId: a.id,
type: "graphRoam",
dx: t.dx,
dy: t.dy
})
}).on("zoom", function(t) {
vy(i, t.scale, t.originX, t.originY), o.dispatchAction({
seriesId: a.id,
type: "graphRoam",
zoom: t.scale,
originX: t.originX,
originY: t.originY
}), this._updateNodeAndLinkScale(), q_(a.getGraph(), G_(a)), this._lineDraw.updateLayout()
}, this)) : e.disable()
},
_updateNodeAndLinkScale: function() {
var t = this._model,
e = t.getData(),
i = G_(t),
n = [i, i];
e.eachItemGraphicEl(function(t, e) {
t.attr("scale", n)
})
},
updateLayout: function(t) {
q_(t.getGraph(), G_(t)), this._symbolDraw.updateLayout(), this._lineDraw.updateLayout()
},
remove: function(t, e) {
this._symbolDraw && this._symbolDraw.remove(), this._lineDraw && this._lineDraw.remove()
}
}), tf({
type: "focusNodeAdjacency",
event: "focusNodeAdjacency",
update: "series:focusNodeAdjacency"
}, function() {}), tf({
type: "unfocusNodeAdjacency",
event: "unfocusNodeAdjacency",
update: "series:unfocusNodeAdjacency"
}, function() {});
tf({
type: "graphRoam",
event: "graphRoam",
update: "none"
}, function(i, t) {
t.eachComponent({
mainType: "series",
query: i
}, function(t) {
var e = Ty(t.coordinateSystem, i);
t.setCenter && t.setCenter(e.center), t.setZoom && t.setZoom(e.zoom)
})
});
function nw(t) {
return t instanceof Array || (t = [t, t]), t
}
function aw(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")])
}), ow(i)
}
}
function ow(t) {
t.eachEdge(function(t) {
var e = t.getModel().get("lineStyle.curveness") || 0,
i = rt(t.node1.getLayout()),
n = rt(t.node2.getLayout()),
a = [i, n]; + e && a.push([(i[0] + n[0]) / 2 - (i[1] - n[1]) * e, (i[1] + n[1]) / 2 - (n[0] - i[0]) * e]), t.setLayout(a)
})
}
var rw = Math.PI,
sw = [];
function lw(t, e) {
var i = t.coordinateSystem;
if (!i || "view" === i.type) {
var n = i.getBoundingRect(),
a = t.getData(),
o = a.graph,
s = n.width / 2 + n.x,
l = n.height / 2 + n.y,
r = Math.min(n.width, n.height) / 2,
u = a.count();
a.setLayout({
cx: s,
cy: l
}), u && (uw[e](t, i, o, a, r, s, l, u), o.eachEdge(function(t) {
var e, i = t.getModel().get("lineStyle.curveness") || 0,
n = rt(t.node1.getLayout()),
a = rt(t.node2.getLayout()),
o = (n[0] + a[0]) / 2,
r = (n[1] + a[1]) / 2; + i && (e = [s * (i *= 3) + o * (1 - i), l * i + r * (1 - i)]), t.setLayout([n, a, e])
}))
}
}
var uw = {
value: function(t, e, i, n, a, o, 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([a * Math.cos(l) + o, a * Math.sin(l) + r]), l += i
})
},
symbolSize: function(t, e, i, n, a, o, r, s) {
var l = 0;
sw.length = s;
var u = G_(t);
i.eachNode(function(t) {
var e = F_(t);
isNaN(e) && (e = 2), e < 0 && (e = 0), e *= u;
var i = Math.asin(e / 2 / a);
isNaN(i) && (i = rw / 2), sw[t.dataIndex] = i, l += 2 * i
});
var h = (2 * rw - l) / s / 2,
c = 0;
i.eachNode(function(t) {
var e = h + sw[t.dataIndex];
c += e, t.setLayout([a * Math.cos(c) + o, a * Math.sin(c) + r]), c += e
})
}
},
hw = ut;
Qd(function(t) {
var o = t.findComponents({
mainType: "legend"
});
o && o.length && t.eachSeriesByType("graph", function(t) {
var e = t.getCategoriesData(),
n = t.getGraph().data,
a = e.mapArray(e.getName);
n.filterSelf(function(t) {
var e = n.getItemModel(t).getShallow("category");
if (null != e) {
"number" == typeof e && (e = a[e]);
for (var i = 0; i < o.length; i++)
if (!o[i].isSelected(e)) return !1
}
return !0
})
}, this)
}), af(rm("graph", "circle", null)), af(function(t) {
var h = {};
t.eachSeriesByType("graph", function(s) {
var l = s.getCategoriesData(),
a = 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 a = ["opacity", "symbol", "symbolSize", "symbolKeepAspect"], o = 0; o < a.length; o++) {
var r = i.getShallow(a[o], !0);
null != r && l.setItemVisual(t, a[o], r)
}
}), l.count() && a.each(function(t) {
var e = a.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 == a.getItemVisual(t, i[n], !0) && a.setItemVisual(t, i[n], l.getItemVisual(e, i[n]))
}
})
})
}), af(function(t) {
t.eachSeriesByType("graph", function(t) {
var s = t.getGraph(),
l = t.getEdgeData(),
e = nw(t.get("edgeSymbol")),
i = nw(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 = nw(e.getShallow("symbol", !0)),
a = nw(e.getShallow("symbolSize", !0)),
o = e.get(u),
r = e.get(h);
switch (o) {
case "source":
o = i.node1.getVisual("color");
break;
case "target":
o = i.node2.getVisual("color")
}
n[0] && i.setVisual("fromSymbol", n[0]), n[1] && i.setVisual("toSymbol", n[1]), a[0] && i.setVisual("fromSymbolSize", a[0]), a[1] && i.setVisual("toSymbolSize", a[1]), i.setVisual("color", o), i.setVisual("opacity", r)
})
})
}), nf(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(),
a = [];
O(i.dimensions, function(t) {
a = a.concat(n.mapDimension(t, !0))
});
for (var o = 0; o < n.count(); o++) {
for (var r = [], s = !1, l = 0; l < a.length; l++) {
var u = n.get(a[l], o);
isNaN(u) || (s = !0), r.push(u)
}
s ? n.setItemLayout(o, i.dataToPoint(r)) : n.setItemLayout(o, [NaN, NaN])
}
ow(n.graph)
} else e && "none" !== e || aw(t)
})
}), nf(cd.VISUAL.POST_CHART_LAYOUT, function(t) {
t.eachSeriesByType("graph", function(t) {
"circular" === t.get("layout") && lw(t, "symbolSize")
})
}), nf(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 && lw(t, "value") : aw(t);
var a = f.getDataExtent("value"),
o = e.getDataExtent("value"),
r = i.get("repulsion"),
s = i.get("edgeLength");
k(r) || (r = [r, r]), k(s) || (s = [s, s]), s = [s[1], s[0]];
var l, u = f.mapArray("value", function(t, e) {
var i = f.getItemLayout(e),
n = yl(t, a, 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 = yl(t, o, s);
return isNaN(n) && (n = (s[0] + s[1]) / 2), {
n1: u[i.node1.dataIndex],
n2: u[i.node2.dataIndex],
d: n,
curveness: i.getModel().get("lineStyle.curveness") || 0
}
}),
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, a = 0; a < f.length; a++) {
var o = f[a];
o.p || (o.p = at(i * (Math.random() - .5) + g[0], n * (Math.random() - .5) + g[1])), o.pp = rt(o.p), o.edges = null
}
var v = .6;
return {
warmUp: function() {
v = .5
},
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 a = p[n],
o = a.n1;
ht(e, (u = a.n2).p, o.p);
var r = ct(e) - a.d,
s = u.w / (o.w + u.w);
isNaN(s) && (s = 0), mt(e, e), o.fixed || hw(o.p, o.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++) {
o = f[n];
for (var l = n + 1; l < i; l++) {
var u;
ht(e, (u = f[l]).p, o.p), 0 === (r = ct(e)) && (st(e, Math.random() - .5, Math.random() - .5), r = 1);
var h = (o.rep + u.rep) / r / r;
o.fixed || hw(o.pp, o.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), ot(d.pp, d.p))
}
v *= .992, t && t(f, p, v < .01)
}
}
}(u, h, {
rect: p,
gravity: i.get("gravity")
}),
m = g.step;
g.step = function(h) {
for (var t = 0, e = u.length; t < e; t++) u[t].fixed && ot(u[t].p, d.getNodeByIndex(t).getLayout());
m(function(t, e, i) {
for (var n = 0, a = t.length; n < a; n++) t[n].fixed || d.getNodeByIndex(n).setLayout(t[n].p), c[f.getId(n)] = t[n].p;
for (n = 0, a = e.length; n < a; n++) {
var o = e[n],
r = d.getEdgeByIndex(n),
s = o.n1.p,
l = o.n2.p,
u = r.getLayout();
(u = u ? u.slice() : [])[0] = u[0] || [], u[1] = u[1] || [], ot(u[0], s), ot(u[1], l), +o.curveness && (u[2] = [(s[0] + l[0]) / 2 - (s[1] - l[1]) * o.curveness, (s[1] + l[1]) / 2 - (l[0] - s[0]) * o.curveness]), r.setLayout(u)
}
h && h(i)
})
}, t.forceLayout = g, t.preservedPoints = c, g.step()
} else t.forceLayout = null
})
}), ef("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 = [],
a = [];
Io(i.mapArray(function(t) {
var e = i.getItemModel(t);
return [+e.get("x"), +e.get("y")]
}), n, a), a[0] - n[0] == 0 && (a[0] += 1, n[0] -= 1), a[1] - n[1] == 0 && (a[1] += 1, n[1] -= 1);
var o = (a[0] - n[0]) / (a[1] - n[1]),
r = function(t, e, i) {
var n = t.getBoxLayoutParams();
return n.aspect = i, au(n, {
width: e.getWidth(),
height: e.getHeight()
})
}(t, d, o);
isNaN(o) && (n = [r.x, r.y], a = [r.x + r.width, r.y + r.height]);
var s = a[0] - n[0],
l = a[1] - n[1],
u = r.width,
h = r.height,
c = t.coordinateSystem = new Ly;
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
}
});
Wh.extend({
type: "series.gauge",
getInitialData: function(t, e) {
var i = t.data || [];
return k(i) || (i = [i]), t.data = i, mv(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 cw = hr.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,
a = e.r,
o = e.width,
r = e.angle,
s = e.x - i(r) * o * (a / 3 <= o ? 1 : 2),
l = e.y - n(r) * o * (a / 3 <= o ? 1 : 2);
r = e.angle - Math.PI / 2, t.moveTo(s, l), t.lineTo(e.x + i(r) * o, e.y + n(r) * o), t.lineTo(e.x + i(e.angle) * a, e.y + n(e.angle) * a), t.lineTo(e.x - i(r) * o, e.y - n(r) * o), t.lineTo(s, l)
}
});
function dw(t, e) {
return e && ("string" == typeof e ? t = e.replace("{value}", null != t ? t : "") : "function" == typeof e && (t = e(t))), t
}
var fw = 2 * Math.PI,
pw = (ec.extend({
type: "gauge",
render: function(t, e, i) {
this.group.removeAll();
var n = t.get("axisLine.lineStyle.color"),
a = function(t, e) {
var i = t.get("center"),
n = e.getWidth(),
a = e.getHeight(),
o = Math.min(n, a);
return {
cx: xl(i[0], e.getWidth()),
cy: xl(i[1], e.getHeight()),
r: xl(t.get("radius"), o / 2)
}
}(t, i);
this._renderMain(t, e, i, n, a)
},
dispose: function() {},
_renderMain: function(t, e, i, n, a) {
for (var o = 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) % fw, 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 Pr({
shape: {
startAngle: c,
endAngle: g = u + h * m,
cx: a.cx,
cy: a.cy,
clockwise: l,
r0: a.r - d,
r: a.r
},
silent: !0
});
v.setStyle({
fill: n[p][1]
}), v.setStyle(s.getLineStyle(["color", "borderWidth", "borderColor"])), o.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, a, u, g, l), this._renderPointer(t, e, i, y, a, u, g, l), this._renderTitle(t, e, i, y, a), this._renderDetail(t, e, i, y, a)
},
_renderTicks: function(t, e, i, n, a, o, r, s) {
for (var l = this.group, u = a.cx, h = a.cy, c = a.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 = xl(p.get("length"), c), _ = xl(g.get("length"), c), w = o, b = (r - o) / v, S = b / y, M = p.getModel("lineStyle").getLineStyle(), I = g.getModel("lineStyle").getLineStyle(), A = 0; A <= v; A++) {
var T = Math.cos(w),
D = Math.sin(w);
if (p.get("show")) {
var C = new Ur({
shape: {
x1: T * c + u,
y1: D * c + h,
x2: T * (c - x) + u,
y2: D * (c - x) + h
},
style: M,
silent: !0
});
"auto" === M.stroke && C.setStyle({
stroke: n(A / v)
}), l.add(C)
}
if (m.get("show")) {
var L = dw(_l(A / v * (f - d) + d), m.get("formatter")),
k = m.get("distance"),
P = n(A / v);
l.add(new Dr({
style: Gs({}, m, {
text: L,
x: T * (c - x - k) + u,
y: D * (c - x - k) + h,
textVerticalAlign: D < -.4 ? "top" : .4 < D ? "bottom" : "middle",
textAlign: T < -.4 ? "left" : .4 < T ? "right" : "center"
}, {
autoColor: P
}),
silent: !0
}))
}
if (g.get("show") && A !== v) {
for (var N = 0; N <= y; N++) {
T = Math.cos(w), D = Math.sin(w);
var O = new Ur({
shape: {
x1: T * c + u,
y1: D * c + h,
x2: T * (c - _) + u,
y2: D * (c - _) + h
},
silent: !0,
style: I
});
"auto" === I.stroke && O.setStyle({
stroke: n((A + N / y) / v)
}), l.add(O), w += S
}
w -= S
} else w += b
}
},
_renderPointer: function(n, t, e, a, o, 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 cw({
shape: {
angle: i
}
});
qs(e, {
shape: {
angle: yl(d.get(f, t), h, c, !0)
}
}, n), l.add(e), d.setItemGraphicEl(t, e)
}).update(function(t, e) {
var i = u.getItemGraphicEl(e);
js(i, {
shape: {
angle: yl(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: o.cx,
y: o.cy,
width: xl(n.get("width"), o.r),
r: xl(n.get("length"), o.r)
}), t.useStyle(i.getModel("itemStyle").getItemStyle()), "auto" === t.style.fill && t.setStyle("fill", a(yl(d.get(f, e), h, [0, 1], !0))), Os(t, i.getModel("emphasis.itemStyle").getItemStyle())
}), this._data = d
} else u && u.eachItemGraphicEl(function(t) {
l.remove(t)
})
},
_renderTitle: function(t, e, i, n, a) {
var o = t.getData(),
r = o.mapDimension("value"),
s = t.getModel("title");
if (s.get("show")) {
var l = s.get("offsetCenter"),
u = a.cx + xl(l[0], a.r),
h = a.cy + xl(l[1], a.r),
c = +t.get("min"),
d = +t.get("max"),
f = n(yl(t.getData().get(r, 0), [c, d], [0, 1], !0));
this.group.add(new Dr({
silent: !0,
style: Gs({}, s, {
x: u,
y: h,
text: o.getName(0),
textAlign: "center",
textVerticalAlign: "middle"
}, {
autoColor: f,
forceRich: !0
})
}))
}
},
_renderDetail: function(t, e, i, n, a) {
var o = t.getModel("detail"),
r = +t.get("min"),
s = +t.get("max");
if (o.get("show")) {
var l = o.get("offsetCenter"),
u = a.cx + xl(l[0], a.r),
h = a.cy + xl(l[1], a.r),
c = xl(o.get("width"), a.r),
d = xl(o.get("height"), a.r),
f = t.getData(),
p = f.get(f.mapDimension("value"), 0),
g = n(yl(p, [r, s], [0, 1], !0));
this.group.add(new Dr({
silent: !0,
style: Gs({}, o, {
x: u,
y: h,
text: dw(p, o.get("formatter")),
textWidth: isNaN(c) ? null : c,
textHeight: isNaN(d) ? null : d,
textAlign: "center",
textVerticalAlign: "middle"
}, {
autoColor: g,
forceRich: !0
})
}))
}
}
}), uf({
type: "series.funnel",
init: function(t) {
pw.superApply(this, "init", arguments), this.legendDataProvider = function() {
return this.getRawData()
}, this._defaultLabelLine(t)
},
getInitialData: function(t, e) {
return mv(this, ["value"])
},
_defaultLabelLine: function(t) {
ba(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 = pw.superCall(this, "getDataParams", t),
n = e.mapDimension("value"),
a = e.getSum(n);
return i.percent = a ? +(e.get(n, t) / a * 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 gw(t, e) {
Si.call(this);
var i = new zr,
n = new Er,
a = new Dr;
this.add(i), this.add(n), this.add(a), this.highDownOnUpdate = function(t, e) {
"emphasis" === e ? (n.ignore = n.hoverIgnore, a.ignore = a.hoverIgnore) : (n.ignore = n.normalIgnore, a.ignore = a.normalIgnore)
}, this.updateData(t, e, !0)
}
var mw = gw.prototype,
vw = ["itemStyle", "opacity"];
mw.updateData = function(t, e, i) {
var n = this.childAt(0),
a = t.hostModel,
o = t.getItemModel(e),
r = t.getItemLayout(e),
s = t.getItemModel(e).get(vw);
s = null == s ? 1 : s, n.useStyle({}), i ? (n.setShape({
points: r.points
}), n.setStyle({
opacity: 0
}), qs(n, {
style: {
opacity: s
}
}, a, e)) : js(n, {
style: {
opacity: s
},
shape: {
points: r.points
}
}, a, e);
var l = o.getModel("itemStyle"),
u = t.getItemVisual(e, "color");
n.setStyle(C({
lineJoin: "round",
fill: u
}, l.getItemStyle(["opacity"]))), n.hoverStyle = l.getModel("emphasis").getItemStyle(), this._updateLabel(t, e), Os(this)
}, mw._updateLabel = function(t, e) {
var i = this.childAt(1),
n = this.childAt(2),
a = t.hostModel,
o = t.getItemModel(e),
r = t.getItemLayout(e).label,
s = t.getItemVisual(e, "color");
js(i, {
shape: {
points: r.linePoints || r.linePoints
}
}, a, e), js(n, {
style: {
x: r.x,
y: r.y
}
}, a, e), n.attr({
rotation: r.rotation,
origin: [r.x, r.y],
z2: 10
});
var l = o.getModel("label"),
u = o.getModel("emphasis.label"),
h = o.getModel("labelLine"),
c = o.getModel("emphasis.labelLine");
s = t.getItemVisual(e, "color");
Bs(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(gw, Si);
ec.extend({
type: "funnel",
render: function(t, e, i) {
var n = t.getData(),
a = this._data,
o = this.group;
n.diff(a).add(function(t) {
var e = new gw(n, t);
n.setItemGraphicEl(t, e), o.add(e)
}).update(function(t, e) {
var i = a.getItemGraphicEl(e);
i.updateData(n, t), o.add(i), n.setItemGraphicEl(t, i)
}).remove(function(t) {
var e = a.getItemGraphicEl(t);
o.remove(e)
}).execute(), this._data = n
},
remove: function() {
this.group.removeAll(), this._data = null
},
dispose: function() {}
});
af(Mv("funnel")), nf(function(t, w, e) {
t.eachSeriesByType("funnel", function(t) {
var a = t.getData(),
o = a.mapDimension("value"),
e = t.get("sort"),
r = function(t, e) {
return au(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
}), a = [], o = "ascending" === e, r = 0, s = t.count(); r < s; r++) a[r] = r;
return "function" == typeof e ? a.sort(e) : "none" !== e && a.sort(function(t, e) {
return o ? n[t] - n[e] : n[e] - n[t]
}), a
}(a, e),
s = [xl(t.get("minSize"), r.width), xl(t.get("maxSize"), r.width)],
n = a.getDataExtent(o),
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 = yl(a.get(o, 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 * (a.count() - 1)) / a.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 = a.getItemModel(m).get("itemStyle.height");
null == y ? y = f : (y = xl(y, r.height), "ascending" === e && (y = -y));
var x = h(m, p),
_ = h(v, p + y);
p += y + d, a.setItemLayout(m, {
points: x.concat(_.slice().reverse())
})
}! function(g) {
g.each(function(t) {
var e, i, n, a, o = g.getItemModel(t),
r = o.getModel("label").get("position"),
s = o.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"), a = [
[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");
a = [
[c, d],
[f, d]
], n = d
}
l.label = {
linePoints: a,
x: i,
y: n,
verticalAlign: "middle",
textAlign: e,
inside: h
}
})
}(a)
})
}), Qd(Cv("funnel"));
function yw(t, e, i, n, a) {
vg.call(this, t, e, i), this.type = n || "value", this.axisIndex = a
}
yw.prototype = {
constructor: yw,
model: null,
isHorizontal: function() {
return "horizontal" !== this.coordinateSystem.getModel().get("layout")
}
}, w(yw, vg);
function xw(t, e, i, n, a, o) {
t = t || 0;
var r = i[1] - i[0];
if (null != a && (a = ww(a, [0, r])), null != o && (o = Math.max(o, null != a ? a : 0)), "all" === n) {
var s = Math.abs(e[1] - e[0]);
a = o = ww(s = ww(s, [0, r]), [a, o]), n = 0
}
e[0] = ww(e[0], i), e[1] = ww(e[1], i);
var l = _w(e, n);
e[n] += t;
var u = a || 0,
h = i.slice();
l.sign < 0 ? h[0] += u : h[1] -= u, e[n] = ww(e[n], h);
var c = _w(e, n);
return null != a && (c.sign !== l.sign || c.span < a) && (e[1 - n] = e[n] + l.sign * a), c = _w(e, n), null != o && c.span > o && (e[1 - n] = e[n] + c.sign * o), e
}
function _w(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 ww(t, e) {
return Math.min(null != e[1] ? e[1] : 1 / 0, Math.max(null != e[0] ? e[0] : -1 / 0, t))
}
var bw = O,
Sw = Math.min,
Mw = Math.max,
Iw = Math.floor,
Aw = Math.ceil,
Tw = _l,
Dw = Math.PI;
function Cw(t, e, i) {
this._axesMap = Q(), this._axesLayout = {}, this.dimensions = t.dimensions, this._rect, this._model = t, this._init(t, e, i)
}
function Lw(t, e) {
return Sw(Mw(t, e[0]), e[1])
}
Cw.prototype = {
type: "parallel",
constructor: Cw,
_init: function(t, r, e) {
var i = t.dimensions,
s = t.parallelAxisIndex;
bw(i, function(t, e) {
var i = s[e],
n = r.getComponent("parallelAxis", i),
a = this._axesMap.set(t, new yw(t, Bp(n), [0, 0], n.get("type"), i)),
o = "category" === a.type;
a.onBand = o && n.get("boundaryGap"), a.inverse = n.get("inverse"), (n.axis = a).model = n, a.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,
a = e.pixelDimIndex,
o = t[1 - a],
r = t[a];
return i <= o && o <= 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();
bw(this.dimensions, function(t) {
var e = this._axesMap.get(t);
e.scale.unionExtentFromData(i, i.mapDimension(t)), Ep(e.scale, e.model)
}, this)
}
}, this)
},
resize: function(t, e) {
this._rect = au(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"],
a = ["width", "height"],
o = e.get("layout"),
r = "horizontal" === o ? 0 : 1,
s = i[a[r]],
l = [0, s],
u = this.dimensions.length,
h = Lw(e.get("axisExpandWidth"), l),
c = Lw(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 = Lw(f[1] - f[0], l), f[1] = f[0] + t) : (t = Lw(h * (c - 1), l), (f = [h * (e.get("axisExpandCenter") || Iw(u / 2)) - t / 2])[1] = f[0] + t);
var p = (s - t) / (u - c);
p < 3 && (p = 0);
var g = [Iw(Tw(f[0] / h, 1)) + 1, Aw(Tw(f[1] / h, 1)) - 1],
m = p / h * f[0];
return {
layout: o,
pixelDimIndex: r,
layoutBase: i[n[r]],
layoutLength: s,
axisBase: i[n[1 - r]],
axisLength: i[a[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])
}), bw(e, function(t, e) {
var i = (u.axisExpandable ? function(t, e) {
var i, n, a = e.layoutLength,
o = 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 * o - e.axisExpandWindow[0], u = o, h = !0) : (i = a - (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
}
},
a = {
horizontal: Dw / 2,
vertical: 0
},
o = [n[h].x + l.x, n[h].y + l.y],
r = a[h],
s = Qt();
ae(s, s, r), ne(s, s, o), this._axesLayout[t] = {
position: o,
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 a = this._axesMap,
o = this.dimensions,
r = [],
s = [];
O(o, function(t) {
r.push(e.mapDimension(t)), s.push(a.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 = o.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, a = t.length; n < a; n++) "normal" !== e.get(t[n]).model.getActiveState() && (i = !0);
return i
},
axisCoordToPoint: function(t, e) {
return $s([t, 0], this._axesLayout[e].transform)
},
getAxisLayout: function(t) {
return D(this._axesLayout[t])
},
getSlidedAxisExpandWindow: function(t) {
var e = this._makeLayoutInfo(),
i = e.pixelDimIndex,
n = e.axisExpandWindow.slice(),
a = n[1] - n[0],
o = [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 < a * h[0] ? (l = "jump", r = s - a * h[2]) : c && u && s > a * (1 - h[0]) ? (l = "jump", r = s - a * (1 - h[2])) : 0 <= (r = s - a * h[1]) && (r = s - a * (1 - h[1])) <= 0 && (r = 0), (r *= e.axisExpandWidth / u) ? xw(r, n, o, "all") : l = "none";
else {
a = n[1] - n[0];
(n = [Mw(0, o[1] * s / a - a / 2)])[1] = Sw(o[1], n[0] + a), n[0] = n[1] - a
}
return {
axisExpandWindow: n,
behavior: l
}
}
}, Hu.register("parallel", {
create: function(n, a) {
var o = [];
return n.eachComponent("parallel", function(t, e) {
var i = new Cw(t, n, a);
i.name = "parallel_" + e, i.resize(t, a), (t.coordinateSystem = i).model = t, o.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
}
}), o
}
});
var kw = fu.extend({
type: "baseParallelAxis",
axis: null,
activeIntervals: [],
getAreaSelectStyle: function() {
return Xa([
["fill", "color"],
["lineWidth", "borderWidth"],
["stroke", "borderColor"],
["width", "width"],
["opacity", "opacity"]
])(this.getModel("areaSelectStyle"))
},
setActiveIntervals: function(t) {
var e = this.activeIntervals = D(t);
if (e)
for (var i = e.length - 1; 0 <= i; i--) wl(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, a = e.length; n < a; n++)
if (e[n][0] <= t && t <= e[n][1]) return "active";
return "inactive"
}
});
m(kw.prototype, Hp), mm("parallel", kw, 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
}), fu.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() {
fu.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) {
O(["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 = [];
O(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)
})
}
});
tf({
type: "axisAreaSelect",
event: "axisAreaSelected"
}, function(e, t) {
t.eachComponent({
mainType: "parallelAxis",
query: e
}, function(t) {
t.axis.model.setActiveIntervals(e.intervals)
})
}), tf("parallelAxisExpand", function(e, t) {
t.eachComponent({
mainType: "parallel",
query: e
}, function(t) {
t.setAxisExpand(e)
})
});
var Pw = A,
Nw = O,
Ow = N,
Rw = Math.min,
zw = Math.max,
Ew = Math.pow,
Bw = 1e4,
Vw = 6,
Gw = 6,
Fw = "globalPan",
Ww = {
w: [0, 0],
e: [0, 1],
n: [1, 0],
s: [1, 1]
},
Hw = {
w: "ew",
e: "ew",
n: "ns",
s: "ns",
ne: "nesw",
sw: "nesw",
nw: "nwse",
se: "nwse"
},
Zw = {
brushStyle: {
lineWidth: 2,
stroke: "rgba(0,0,0,0.3)",
fill: "rgba(0,0,0,0.1)"
},
transformable: !0,
brushMode: "single",
removeOnClick: !1
},
Uw = 0;
function Xw(t) {
Ct.call(this), this._zr = t, this.group = new Si, this._brushType, this._brushOption, this._panels, this._track = [], this._dragging, this._covers = [], this._creatingCover, this._creatingPanel, this._enableGlobalPan, this._uid = "brushController_" + Uw++, this._handlers = {}, Nw(yb, function(t, e) {
this._handlers[e] = T(t, this)
}, this)
}
function Yw(t, e) {
var i = _b[e.brushType].createCover(t, e);
return i.__brushOption = e, Kw(i, e), t.group.add(i), i
}
function jw(t, e) {
var i = Jw(e);
return i.endCreating && (i.endCreating(t, e), Kw(e, e.__brushOption)), e
}
function qw(t, e) {
var i = e.__brushOption;
Jw(e).updateCoverShape(t, e, i.range, i)
}
function Kw(t, e) {
var i = e.z;
null == i && (i = Bw), t.traverse(function(t) {
t.z = i, t.z2 = i
})
}
function $w(t, e) {
Jw(e).updateCommon(t, e), qw(t, e)
}
function Jw(t) {
return _b[t.__brushOption.brushType]
}
function Qw(t, e, i) {
var n, a = t._panels;
if (!a) return !0;
var o = t._transform;
return Nw(a, function(t) {
t.isTargetByCursor(e, i, o) && (n = t)
}), n
}
function tb(t, e) {
var i = t._panels;
if (!i) return !0;
var n = e.__brushOption.panelId;
return null == n || i[n]
}
function eb(e) {
var t = e._covers,
i = t.length;
return Nw(t, function(t) {
e.group.remove(t)
}, e), t.length = 0, !!i
}
function ib(t, e) {
var i = Ow(t._covers, function(t) {
var e = t.__brushOption,
i = D(e.range);
return {
brushType: e.brushType,
panelId: e.panelId,
range: i
}
});
t.trigger("brush", i, {
isEnd: !!e.isEnd,
removeOnClick: !!e.removeOnClick
})
}
function nb(t) {
var e = t.length - 1;
return e < 0 && (e = 0), [t[0], t[e]]
}
function ab(e, i, t, n) {
var a = new Si;
return a.add(new Hr({
name: "main",
style: lb(t),
silent: !0,
draggable: !0,
cursor: "move",
drift: Pw(e, i, a, "nswe"),
ondragend: Pw(ib, i, {
isEnd: !0
})
})), Nw(n, function(t) {
a.add(new Hr({
name: t,
style: {
opacity: 0
},
draggable: !0,
silent: !0,
invisible: !0,
drift: Pw(e, i, a, t),
ondragend: Pw(ib, i, {
isEnd: !0
})
}))
}), a
}
function ob(t, e, i, n) {
var a = n.brushStyle.lineWidth || 0,
o = zw(a, Gw),
r = i[0][0],
s = i[1][0],
l = r - a / 2,
u = s - a / 2,
h = i[0][1],
c = i[1][1],
d = h - o + a / 2,
f = c - o + a / 2,
p = h - r,
g = c - s,
m = p + a,
v = g + a;
sb(t, e, "main", r, s, p, g), n.transformable && (sb(t, e, "w", l, u, o, v), sb(t, e, "e", d, u, o, v), sb(t, e, "n", l, u, m, o), sb(t, e, "s", l, f, m, o), sb(t, e, "nw", l, u, o, o), sb(t, e, "ne", d, u, o, o), sb(t, e, "sw", l, f, o, o), sb(t, e, "se", d, f, o, o))
}
function rb(n, a) {
var t = a.__brushOption,
o = t.transformable,
e = a.childAt(0);
e.useStyle(lb(t)), e.attr({
silent: !o,
cursor: o ? "move" : "default"
}), Nw(["w", "e", "n", "s", "se", "sw", "ne", "nw"], function(t) {
var e = a.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 a = {
w: "left",
e: "right",
n: "top",
s: "bottom"
},
o = {
left: "w",
right: "e",
top: "n",
bottom: "s"
},
n = Js(a[i], Ks(e.group));
return o[n]
}
}(n, t);
e && e.attr({
silent: !o,
invisible: !o,
cursor: o ? Hw[i] + "-resize" : null
})
})
}
function sb(t, e, i, n, a, o, r) {
var s = e.childOfName(i);
s && s.setShape(function(t) {
var e = Rw(t[0][0], t[1][0]),
i = Rw(t[0][1], t[1][1]),
n = zw(t[0][0], t[1][0]),
a = zw(t[0][1], t[1][1]);
return {
x: e,
y: i,
width: n - e,
height: a - i
}
}(fb(t, e, [
[n, a],
[n + o, a + r]
])))
}
function lb(t) {
return C({
strokeNoScale: !0
}, t.brushStyle)
}
function ub(t, e, i, n) {
var a = [Rw(t, i), Rw(e, n)],
o = [zw(t, i), zw(e, n)];
return [
[a[0], o[0]],
[a[1], o[1]]
]
}
function hb(t, e, i, n, a, o, r, s) {
var l = n.__brushOption,
u = t(l.range),
h = db(i, o, r);
Nw(a.split(""), function(t) {
var e = Ww[t];
u[e[0]][e[1]] += h[e[0]]
}), l.range = e(ub(u[0][0], u[1][0], u[0][1], u[1][1])), $w(i, n), ib(i, {
isEnd: !1
})
}
function cb(t, e, i, n, a) {
var o = e.__brushOption.range,
r = db(t, i, n);
Nw(o, function(t) {
t[0] += r[0], t[1] += r[1]
}), $w(t, e), ib(t, {
isEnd: !1
})
}
function db(t, e, i) {
var n = t.group,
a = n.transformCoordToLocal(e, i),
o = n.transformCoordToLocal(0, 0);
return [a[0] - o[0], a[1] - o[1]]
}
function fb(t, e, i) {
var n = tb(t, e);
return n && !0 !== n ? n.clipPath(i, t._transform) : D(i)
}
function pb(t) {
var e = t.event;
e.preventDefault && e.preventDefault()
}
function gb(t, e, i) {
return t.childOfName("main").contain(e, i)
}
function mb(t, e, i, n) {
var a, o = 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],
a = i[0] - n[0],
o = i[1] - n[1],
r = Ew(a * a + o * o, .5);
return Vw < r
}(t) || o) {
if (r && !o) {
"single" === s.brushMode && eb(t);
var l = D(s);
l.brushType = vb(l.brushType, r), l.panelId = !0 === r ? null : r.panelId, o = t._creatingCover = Yw(t, l), t._covers.push(o)
}
if (o) {
var u = _b[vb(t._brushType, r)];
o.__brushOption.range = u.getCreatingRange(fb(t, o, t._track)), n && (jw(t, o), u.updateCommon(t, o)), qw(t, o), a = {
isEnd: n
}
}
} else n && "single" === s.brushMode && s.removeOnClick && Qw(t, e, i) && eb(t) && (a = {
isEnd: n,
removeOnClick: !0
});
return a
}
function vb(t, e) {
return "auto" === t ? e.defaultBrushType : t
}
Xw.prototype = {
constructor: Xw,
enableBrush: function(t) {
return this._brushType && function(t) {
var i = t._zr;
(function(t, e, i) {
var n = ry(t);
n[e] === i && (n[e] = null)
})(i, Fw, t._uid), Nw(t._handlers, function(t, e) {
i.off(e, t)
}), t._brushType = t._brushOption = null
}(this), t.brushType && function(t, e) {
var i = t._zr;
t._enableGlobalPan || function(t, e, i) {
ry(t)[e] = i
}(i, Fw, t._uid);
Nw(t._handlers, function(t, e) {
i.on(e, t)
}), t._brushType = e.brushType, t._brushOption = m(D(Zw), e, !0)
}(this, t), this
},
setPanels: function(t) {
if (t && t.length) {
var e = this._panels = {};
O(t, function(t) {
e[t.panelId] = D(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) {
Nw(this._covers, t, e)
},
updateCovers: function(a) {
a = N(a, function(t) {
return m(D(Zw), t, !0)
});
var i = "\0-brush-index-",
o = this._covers,
r = this._covers = [],
s = this,
l = this._creatingCover;
return new df(o, a, function(t, e) {
return n(t.__brushOption, e)
}, n).add(t).update(t).remove(function(t) {
o[t] !== l && s.group.remove(o[t])
}).execute(), this;
function n(t, e) {
return (null != t.id ? t.id : i + e) + "-" + t.brushType
}
function t(t, e) {
var i = a[t];
if (null != e && o[e] === l) r[t] = o[e];
else {
var n = r[t] = null != e ? (o[e].__brushOption = i, o[e]) : jw(s, Yw(s, i));
$w(s, n)
}
}
},
unmount: function() {
return this.enableBrush(!1), eb(this), this._zr.remove(this.group), this
},
dispose: function() {
this.unmount(), this.off()
}
}, b(Xw, Ct);
var yb = {
mousedown: function(t) {
if (this._dragging) xb.call(this, t);
else if (!t.target || !t.target.draggable) {
pb(t);
var e = this.group.transformCoordToLocal(t.offsetX, t.offsetY);
this._creatingCover = null, (this._creatingPanel = Qw(this, t, e)) && (this._dragging = !0, this._track = [e.slice()])
}
},
mousemove: function(t) {
var e = this.group.transformCoordToLocal(t.offsetX, t.offsetY);
if (function(t, e, i) {
if (t._brushType) {
var n = t._zr,
a = t._covers,
o = Qw(t, e, i);
if (!t._dragging)
for (var r = 0; r < a.length; r++) {
var s = a[r].__brushOption;
if (o && (!0 === o || s.panelId === o.panelId) && _b[s.brushType].contain(a[r], i[0], i[1])) return
}
o && n.setCursorStyle("crosshair")
}
}(this, t, e), this._dragging) {
pb(t);
var i = mb(this, t, e, !1);
i && ib(this, i)
}
},
mouseup: xb
};
function xb(t) {
if (this._dragging) {
pb(t);
var e = this.group.transformCoordToLocal(t.offsetX, t.offsetY),
i = mb(this, t, e, !0);
this._dragging = !1, this._track = [], this._creatingCover = null, i && ib(this, i)
}
}
var _b = {
lineX: wb(0),
lineY: wb(1),
rect: {
createCover: function(t, e) {
return ab(Pw(hb, function(t) {
return t
}, function(t) {
return t
}), t, e, ["w", "e", "n", "s", "se", "sw", "ne", "nw"])
},
getCreatingRange: function(t) {
var e = nb(t);
return ub(e[1][0], e[1][1], e[0][0], e[0][1])
},
updateCoverShape: function(t, e, i, n) {
ob(t, e, i, n)
},
updateCommon: rb,
contain: gb
},
polygon: {
createCover: function(t, e) {
var i = new Si;
return i.add(new Er({
name: "main",
style: lb(e),
silent: !0
})), i
},
getCreatingRange: function(t) {
return t
},
endCreating: function(t, e) {
e.remove(e.childAt(0)), e.add(new zr({
name: "main",
draggable: !0,
drift: Pw(cb, t, e),
ondragend: Pw(ib, t, {
isEnd: !0
})
}))
},
updateCoverShape: function(t, e, i, n) {
e.childAt(0).setShape({
points: fb(t, e, i)
})
},
updateCommon: rb,
contain: gb
}
};
function wb(l) {
return {
createCover: function(t, e) {
return ab(Pw(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 = nb(t);
return [Rw(e[0][l], e[1][l]), zw(e[0][l], e[1][l])]
},
updateCoverShape: function(t, e, i, n) {
var a, o = tb(t, e);
if (!0 !== o && o.getLinearBrushOtherExtent) a = o.getLinearBrushOtherExtent(l, t._transform);
else {
var r = t._zr;
a = [0, [r.getWidth(), r.getHeight()][1 - l]]
}
var s = [i, a];
l && s.reverse(), ob(t, e, s, n)
},
updateCommon: rb,
contain: gb
}
}
function bb(i) {
return i = Ib(i),
function(t, e) {
return tl(t, i)
}
}
function Sb(a, o) {
return a = Ib(a),
function(t) {
var e = null != o ? o : t,
i = e ? a.width : a.height,
n = e ? a.x : a.y;
return [n, n + (i || 0)]
}
}
function Mb(n, a, o) {
return n = Ib(n),
function(t, e, i) {
return n.contain(e[0], e[1]) && !xy(t, a, o)
}
}
function Ib(t) {
return bi.create(t)
}
var Ab = ["axisLine", "axisTickLabel", "axisName"],
Tb = lf({
type: "parallelAxis",
init: function(t, e) {
Tb.superApply(this, "init", arguments), (this._brushController = new Xw(e.getZr())).on("brush", T(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 a = this._axisGroup;
if (this._axisGroup = new Si, this.group.add(this._axisGroup), t.get("show")) {
var o = function(t, e) {
return e.getComponent("parallel", t.get("parallelIndex"))
}(t, e),
r = o.coordinateSystem,
s = t.getAreaSelectStyle(),
l = s.width,
u = t.axis.dim,
h = L({
strokeContainThreshold: l
}, r.getAxisLayout(u)),
c = new Cm(t, h);
O(Ab, c.add, c), this._axisGroup.add(c.getGroup()), this._refreshBrushController(h, s, t, o, l, i);
var d = n && !1 === n.animation ? null : t;
Qs(a, this._axisGroup, d)
}
}
},
_refreshBrushController: function(t, e, i, n, a, o) {
var r = i.axis.getExtent(),
s = r[1] - r[0],
l = Math.min(30, .1 * Math.abs(s)),
u = bi.create({
x: r[0],
y: -a / 2,
width: s,
height: a
});
u.x -= l, u.width += 2 * l, this._brushController.mount({
enableGlobalPan: !0,
rotation: t.rotation,
position: t.position
}).setPanels([{
panelId: "pl",
clipPath: bb(u),
isTargetByCursor: Mb(u, o, n),
getLinearBrushOtherExtent: Sb(u, 0)
}]).enableBrush({
brushType: "lineX",
brushStyle: e,
removeOnClick: !0
}).updateCovers(function(t) {
var e = t.axis;
return N(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,
a = N(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: a
})
},
dispose: function() {
this._brushController.dispose()
}
});
lf({
type: "parallel",
render: function(t, e, i) {
this._model = t, this._api = i, this._handlers || (this._handlers = {}, O(Db, function(t, e) {
i.getZr().on(e, this._handlers[e] = T(t, this))
}, this)), dc(this, "_throttledDispatchExpand", t.get("axisExpandRate"), "fixRate")
},
dispose: function(t, i) {
O(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(L({
type: "parallelAxisExpand"
}, t))
}
});
var Db = {
mousedown: function(t) {
Cb(this, "click") && (this._mouseDownPoint = [t.offsetX, t.offsetY])
},
mouseup: function(t) {
var e = this._mouseDownPoint;
if (Cb(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 && Cb(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 Cb(t, e) {
var i = t._model;
return i.get("axisExpandable") && i.get("axisExpandTriggerOn") === e
}
Jd(function(t) {
! function(t) {
if (t.parallel) return;
var e = !1;
O(t.series, function(t) {
t && "parallel" === t.type && (e = !0)
}), e && (t.parallel = [{}])
}(t),
function(n) {
O(wa(n.parallelAxis), function(t) {
if (E(t)) {
var e = t.parallelIndex || 0,
i = wa(n.parallel)[e];
i && i.parallelAxisDefault && m(t, i.parallelAxisDefault, !1)
}
})
}(t)
}), Wh.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();
O(i.dimensions, function(t) {
var e = function(t) {
return +t.replace("dim", "")
}(t);
n.set(t, e)
})
}(i, this), Xf(i, this)
},
getRawIndicesByActiveState: function(i) {
var t = this.coordinateSystem,
n = this.getData(),
a = [];
return t.eachActiveState(n, function(t, e) {
i === t && a.push(n.getRawIndex(e))
}), a
},
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"
}
});
ec.extend({
type: "parallel",
init: function() {
this._dataGroup = new Si, this.group.add(this._dataGroup), this._data, this._initialized
},
render: function(o, t, e, r) {
var i = this._dataGroup,
s = o.getData(),
l = this._data,
u = o.coordinateSystem,
h = u.dimensions,
c = Pb(o);
if (s.diff(l).add(function(t) {
Nb(kb(s, i, t, h, u), s, t, c)
}).update(function(t, e) {
var i = l.getItemGraphicEl(e),
n = Lb(s, t, h, u);
s.setItemGraphicEl(t, i);
var a = r && !1 === r.animation ? null : o;
js(i, {
shape: {
points: n
}
}, a, t), Nb(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,
a = t.getRect(),
o = new Hr({
shape: {
x: a.x,
y: a.y,
width: a.width,
height: a.height
}
}),
r = "horizontal" === n.get("layout") ? "width" : "height";
return o.setShape(r, 0), qs(o, {
shape: {
width: a.width,
height: a.height
}
}, e, i), o
}(u, o, 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(), a = e.coordinateSystem, o = a.dimensions, r = Pb(e), s = t.start; s < t.end; s++) {
var l = kb(n, this._dataGroup, s, o, a);
l.incremental = !0, Nb(l, n, s, r)
}
},
dispose: function() {},
remove: function() {
this._dataGroup && this._dataGroup.removeAll(), this._data = null
}
});
function Lb(t, e, i, n) {
for (var a, o = [], r = 0; r < i.length; r++) {
var s = i[r],
l = t.get(t.mapDimension(s), e);
a = l, ("category" === n.getAxis(s).type ? null == a : null == a || isNaN(a)) || o.push(n.dataToPoint(l, s))
}
return o
}
function kb(t, e, i, n, a) {
var o = Lb(t, i, n, a),
r = new Er({
shape: {
points: o
},
silent: !0,
z2: 10
});
return e.add(r), t.setItemGraphicEl(i, r), r
}
function Pb(t) {
var e = t.get("smooth", !0);
return !0 === e && (e = .3), {
lineStyle: t.getModel("lineStyle").getLineStyle(),
smooth: null != e ? e : .3
}
}
function Nb(t, e, i, n) {
var a = n.lineStyle;
e.hasItemOption && (a = e.getItemModel(i).getModel("lineStyle").getLineStyle());
t.useStyle(a);
var o = t.style;
o.fill = null, o.stroke = e.getItemVisual(i, "color"), o.opacity = e.getItemVisual(i, "opacity"), n.smooth && (t.shape.smooth = n.smooth)
}
var Ob = ["lineStyle", "normal", "opacity"];
af({
seriesType: "parallel",
reset: function(t, e, i) {
var n = t.getModel("itemStyle"),
a = t.getModel("lineStyle"),
o = e.get("color"),
r = a.get("color") || n.get("color") || o[t.seriesIndex % o.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, a) {
h.eachActiveState(a, function(t, e) {
var i = d[t];
if ("normal" === t && a.hasItemOption) {
var n = a.getItemModel(e).get(Ob, !0);
null != n && (i = n)
}
a.setItemVisual(e, "opacity", i)
}, t.start, t.end)
}
}
}
});
var Rb = Wh.extend({
type: "series.sankey",
layoutInfo: null,
levelModels: null,
getInitialData: function(t, e) {
for (var i = t.edges || t.links, n = t.data || t.nodes, a = t.levels, o = this.levelModels = {}, r = 0; r < a.length; r++) null != a[r].depth && 0 <= a[r].depth && (o[a[r].depth] = new dl(a[r], this, e));
if (n && i) return S_(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),
a = n.data,
o = a.source + " -- " + a.target;
return n.value && (o += " : " + n.value), Wl(o)
}
if ("node" !== i) return Rb.superCall(this, "formatTooltip", t, e);
var r = this.getGraph().getNodeByIndex(t).getLayout().value,
s = this.getDataParams(t, i).data.name;
if (r) o = s + " : " + r;
return Wl(o)
},
optionUpdated: function() {
var t = this.option;
!0 === t.focusNodeAdjacency && (t.focusNodeAdjacency = "allEdges")
},
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: .6
}
},
animationEasing: "linear",
animationDuration: 1e3
}
}),
zb = ["itemStyle", "opacity"],
Eb = ["lineStyle", "opacity"];
function Bb(t, e) {
return t.getVisual("opacity") || t.getModel().get(e)
}
function Vb(t, e, i) {
var n = t.getGraphicEl(),
a = Bb(t, e);
null != i && (null == a && (a = 1), a *= i), n.downplay && n.downplay(), n.traverse(function(t) {
"group" !== t.type && t.setStyle("opacity", a)
})
}
function Gb(t, e) {
var i = Bb(t, e),
n = t.getGraphicEl();
n.highlight && n.highlight(), n.traverse(function(t) {
"group" !== t.type && t.setStyle("opacity", i)
})
}
var Fb = ds({
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()
}
});
hf({
type: "sankey",
_model: null,
_focusAdjacencyDisabled: !1,
render: function(w, t, n) {
var a = this,
e = w.getGraph(),
b = this.group,
i = w.layoutInfo,
S = i.width,
M = i.height,
u = w.getData(),
I = w.getData("edge"),
A = w.get("orient");
this._model = w, b.removeAll(), b.attr("position", [i.x, i.y]), e.eachEdge(function(t) {
var e = new Fb;
e.dataIndex = t.dataIndex, e.seriesIndex = w.seriesIndex, e.dataType = "edge";
var i, n, a, o, 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 = A) ? (i = (null != p ? p * S : d.x) + _.sy, n = (null != g ? g * M : d.y) + d.dy, a = (null != y ? y * S : m.x) + _.ty, r = i, s = n * (1 - c) + (o = null != x ? x * M : m.y) * c, l = a, n * c + o * (1 - c)) : (i = (null != p ? p * S : d.x) + d.dx, n = (null != g ? g * M : d.y) + _.sy, r = i * (1 - c) + (a = null != y ? y * S : m.x) * c, s = n, l = i * c + a * (1 - c), o = (null != x ? x * M : m.y) + _.ty), e.setShape({
x1: i,
y1: n,
x2: a,
y2: o,
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")
}
Os(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"),
a = i.get("localY"),
o = i.getModel("label"),
r = i.getModel("emphasis.label"),
s = new Hr({
shape: {
x: null != n ? n * S : e.x,
y: null != a ? a * M : e.y,
width: e.dx,
height: e.dy
},
style: i.getModel("itemStyle").getItemStyle()
}),
l = t.getModel("emphasis.itemStyle").getItemStyle();
Bs(s.style, l, o, r, {
labelFetcher: w,
labelDataIndex: t.dataIndex,
defaultText: t.id,
isRectText: !0
}), s.setStyle("fill", t.getVisual("color")), Os(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) {
a._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() {
a._focusAdjacencyDisabled = !1
}, t.draggable = !0, t.cursor = "move"), e.get("focusNodeAdjacency") && (t.off("mouseover").on("mouseover", function() {
a._focusAdjacencyDisabled || n.dispatchAction({
type: "focusNodeAdjacency",
seriesId: w.id,
dataIndex: t.dataIndex
})
}), t.off("mouseout").on("mouseout", function() {
a._focusAdjacencyDisabled || n.dispatchAction({
type: "unfocusNodeAdjacency",
seriesId: w.id
})
}))
}), I.eachItemGraphicEl(function(t, e) {
I.getItemModel(e).get("focusNodeAdjacency") && (t.off("mouseover").on("mouseover", function() {
a._focusAdjacencyDisabled || n.dispatchAction({
type: "focusNodeAdjacency",
seriesId: w.id,
edgeDataIndex: t.dataIndex
})
}), t.off("mouseout").on("mouseout", function() {
a._focusAdjacencyDisabled || n.dispatchAction({
type: "unfocusNodeAdjacency",
seriesId: w.id
})
}))
}), !this._data && w.get("animation") && b.setClipPath(function(t, e, i) {
var n = new Hr({
shape: {
x: t.x - 10,
y: t.y - 10,
width: 0,
height: t.height + 20
}
});
return qs(n, {
shape: {
width: t.width + 20,
height: t.height + 20
}
}, e, i), n
}(b.getBoundingRect(), w, function() {
b.removeClipPath()
})), this._data = w.getData()
},
dispose: function() {},
focusNodeAdjacency: function(t, e, i, n) {
var a = this._model.getData(),
o = a.graph,
r = n.dataIndex,
s = a.getItemModel(r),
l = n.edgeDataIndex;
if (null != r || null != l) {
var u = o.getNodeByIndex(r),
h = o.getEdgeByIndex(l);
if (o.eachNode(function(t) {
Vb(t, zb, .1)
}), o.eachEdge(function(t) {
Vb(t, Eb, .1)
}), u) {
Gb(u, zb);
var c = s.get("focusNodeAdjacency");
"outEdges" === c ? O(u.outEdges, function(t) {
t.dataIndex < 0 || (Gb(t, Eb), Gb(t.node2, zb))
}) : "inEdges" === c ? O(u.inEdges, function(t) {
t.dataIndex < 0 || (Gb(t, Eb), Gb(t.node1, zb))
}) : "allEdges" === c && O(u.edges, function(t) {
t.dataIndex < 0 || (Gb(t, Eb), Gb(t.node1, zb), Gb(t.node2, zb))
})
}
h && (Gb(h, Eb), Gb(h.node1, zb), Gb(h.node2, zb))
}
},
unfocusNodeAdjacency: function(t, e, i, n) {
var a = this._model.getGraph();
a.eachNode(function(t) {
Vb(t, zb)
}), a.eachEdge(function(t) {
Vb(t, Eb)
})
}
}), tf({
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 Wb(t) {
var e = t.hostGraph.data.getRawDataItem(t.dataIndex);
return null != e.depth && 0 <= e.depth
}
function Hb(t, l, u, h, c) {
var d = "vertical" === c ? "x" : "y";
O(t, function(t) {
var e, i, n;
t.sort(function(t, e) {
return t.getLayout()[d] - e.getLayout()[d]
});
for (var a = 0, o = t.length, r = "vertical" === c ? "dx" : "dy", s = 0; s < o; s++) 0 < (n = a - (i = t[s]).getLayout()[d]) && (e = i.getLayout()[d] + n, "vertical" === c ? i.setLayout({
x: e
}, !0) : i.setLayout({
y: e
}, !0)), a = i.getLayout()[d] + i.getLayout()[r] + l;
if (0 < (n = a - l - ("vertical" === c ? h : u)))
for (e = i.getLayout()[d] - n, "vertical" === c ? i.setLayout({
x: e
}, !0) : i.setLayout({
y: e
}, !0), a = e, s = o - 2; 0 <= s; --s) 0 < (n = (i = t[s]).getLayout()[d] + i.getLayout()[r] + l - a) && (e = i.getLayout()[d] - n, "vertical" === c ? i.setLayout({
x: e
}, !0) : i.setLayout({
y: e
}, !0)), a = i.getLayout()[d]
})
}
function Zb(t, a, o) {
O(t.slice().reverse(), function(t) {
O(t, function(t) {
if (t.outEdges.length) {
var e = qb(t.outEdges, Ub, o) / qb(t.outEdges, jb, o);
if ("vertical" === o) {
var i = t.getLayout().x + (e - Yb(t, o)) * a;
t.setLayout({
x: i
}, !0)
} else {
var n = t.getLayout().y + (e - Yb(t, o)) * a;
t.setLayout({
y: n
}, !0)
}
}
})
})
}
function Ub(t, e) {
return Yb(t.node2, e) * t.getValue()
}
function Xb(t, e) {
return Yb(t.node1, e) * t.getValue()
}
function Yb(t, e) {
return "vertical" === e ? t.getLayout().x + t.getLayout().dx / 2 : t.getLayout().y + t.getLayout().dy / 2
}
function jb(t) {
return t.getValue()
}
function qb(t, e, i) {
for (var n = 0, a = t.length, o = -1; ++o < a;) {
var r = +e.call(t, t[o], i);
isNaN(r) || (n += r)
}
return n
}
function Kb(t, a, o) {
O(t, function(t) {
O(t, function(t) {
if (t.inEdges.length) {
var e = qb(t.inEdges, Xb, o) / qb(t.inEdges, jb, o);
if ("vertical" === o) {
var i = t.getLayout().x + (e - Yb(t, o)) * a;
t.setLayout({
x: i
}, !0)
} else {
var n = t.getLayout().y + (e - Yb(t, o)) * a;
t.setLayout({
y: n
}, !0)
}
}
})
})
}
nf(function(t, u, e) {
t.eachSeriesByType("sankey", function(t) {
var e = t.get("nodeWidth"),
i = t.get("nodeGap"),
n = function(t, e) {
return au(t.getBoxLayoutParams(), {
width: e.getWidth(),
height: e.getHeight()
})
}(t, u),
a = (t.layoutInfo = n).width,
o = n.height,
r = t.getGraph(),
s = r.nodes,
l = r.edges;
! function(t) {
O(t, function(t) {
var e = qb(t.outEdges, jb),
i = qb(t.inEdges, jb),
n = Math.max(e, i);
t.setLayout({
value: n
}, !0)
})
}(s),
function(t, e, i, n, a, o, r, s, l) {
(function(t, e, i, n, a, o, 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" === o ? 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 a = [], o = t, r = 0; o.length;) {
for (var s = 0; s < o.length; s++) {
var l = o[s];
l.setLayout({
skNodeHeight: r
}, !0);
for (var u = 0; u < l.inEdges.length; u++) {
var h = l.inEdges[u];
a.indexOf(h.node1) < 0 && a.push(h.node1)
}
}
o = a, a = [], ++r
}
O(t, function(t) {
Wb(t) || t.setLayout({
depth: Math.max(0, n - t.getLayout().skNodeHeight)
}, !0)
})
} else "justify" === e && function(t, e) {
O(t, function(t) {
Wb(t) || t.outEdges.length || t.setLayout({
depth: e
}, !0)
})
}(t, n)
}(t, r, 0, S);
! function(t, i, n) {
O(t, function(t) {
var e = t.getLayout().depth * i;
"vertical" === n ? t.setLayout({
y: e
}, !0) : t.setLayout({
x: e
}, !0)
})
}(t, "vertical" === o ? (a - i) / S : (n - i) / S, o)
})(t, e, i, a, o, s, l),
function(t, e, i, n, a, o, r) {
var s = function(t, e) {
var i = [],
n = "vertical" === e ? "y" : "x",
a = za(t, function(t) {
return t.getLayout()[n]
});
return a.keys.sort(function(t, e) {
return t - e
}), O(a.keys, function(t) {
i.push(a.buckets.get(t))
}), i
}(t, r);
(function(t, e, a, o, r, s) {
var l = 1 / 0;
O(t, function(t) {
var e = t.length,
i = 0;
O(t, function(t) {
i += t.getLayout().value
});
var n = "vertical" === s ? (o - (e - 1) * r) / i : (a - (e - 1) * r) / i;
n < l && (l = n)
}), O(t, function(t) {
O(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))
})
}), O(e, function(t) {
var e = +t.getValue() * l;
t.setLayout({
dy: e
}, !0)
})
})(s, e, i, n, a, r), Hb(s, a, i, n, r);
for (var l = 1; 0 < o; o--) Zb(s, l *= .99, r), Hb(s, a, i, n, r), Kb(s, l, r), Hb(s, a, i, n, r)
}(t, e, o, a, n, r, s),
function(t, e) {
var i = "vertical" === e ? "x" : "y";
O(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]
})
}), O(t, function(t) {
var e = 0,
i = 0;
O(t.outEdges, function(t) {
t.setLayout({
sy: e
}, !0), e += t.getLayout().dy
}), O(t.inEdges, function(t) {
t.setLayout({
ty: i
}, !0), i += t.getLayout().dy
})
})
}(t, s)
}(s, l, e, i, a, o, 0 !== M(s, function(t) {
return 0 === t.getLayout().value
}).length ? 0 : t.get("layoutIterations"), t.get("orient"), t.get("nodeAlign"))
})
}), af(function(t, e) {
t.eachSeriesByType("sankey", function(n) {
var t = n.getGraph().nodes;
if (t.length) {
var a = 1 / 0,
o = -1 / 0;
O(t, function(t) {
var e = t.getLayout().value;
e < a && (a = e), o < e && (o = e)
}), O(t, function(t) {
var e = new zx({
type: "color",
mappingMethod: "linear",
dataExtent: [a, o],
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 $b = {
_baseAxisDim: null,
getInitialData: function(t, e) {
var i, n, a = e.getComponent("xAxis", this.get("xAxisIndex")),
o = e.getComponent("yAxis", this.get("yAxisIndex")),
r = a.get("type"),
s = o.get("type");
"category" === r ? (t.layout = "horizontal", i = a.getOrdinalMeta(), n = !0) : "category" === s ? (t.layout = "vertical", i = o.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 = [a, o],
f = d[u].get("type"),
p = d[1 - u].get("type"),
g = t.data;
if (g && n) {
var m = [];
O(g, function(t, e) {
var i;
t.value && k(t.value) ? (i = t.value.slice(), t.value.unshift(e)) : k(t) ? (i = t.slice(), t.unshift(e)) : i = t, m.push(i)
}), t.data = m
}
var v = this.defaultValueDimensions;
return mv(this, {
coordDimensions: [{
name: h,
type: mf(f),
ordinalMeta: i,
otherDims: {
tooltip: !1,
itemName: 0
},
dimsDef: ["base"]
}, {
name: c,
type: mf(p),
dimsDef: v.slice()
}],
dimensionsCount: v.length + 1
})
},
getBaseAxis: function() {
var t = this._baseAxisDim;
return this.ecModel.getComponent(t + "Axis", this.get(t + "AxisIndex")).axis
}
};
b(Wh.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
}
}), $b, !0);
var Jb = ["itemStyle"],
Qb = ["emphasis", "itemStyle"],
tS = (ec.extend({
type: "boxplot",
render: function(t, e, i) {
var a = t.getData(),
o = this.group,
r = this._data;
this._data || o.removeAll();
var s = "horizontal" === t.get("layout") ? 1 : 0;
a.diff(r).add(function(t) {
if (a.hasValue(t)) {
var e = eS(a.getItemLayout(t), a, t, s, !0);
a.setItemGraphicEl(t, e), o.add(e)
}
}).update(function(t, e) {
var i = r.getItemGraphicEl(e);
if (a.hasValue(t)) {
var n = a.getItemLayout(t);
i ? iS(n, i, a, t) : i = eS(n, a, t, s), o.add(i), a.setItemGraphicEl(t, i)
} else o.remove(i)
}).remove(function(t) {
var e = r.getItemGraphicEl(t);
e && o.remove(e)
}).execute(), this._data = a
},
remove: function(t) {
var e = this.group,
i = this._data;
this._data = null, i && i.eachItemGraphicEl(function(t) {
t && e.remove(t)
})
},
dispose: et
}), hr.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 eS(t, e, i, n, a) {
var o = t.ends,
r = new tS({
shape: {
points: a ? function(t, e, i) {
return N(t, function(t) {
return (t = t.slice())[e] = i.initBaseline, t
})
}(o, n, t) : o
}
});
return iS(t, r, e, i, a), r
}
function iS(t, e, i, n, a) {
var o = i.hostModel;
(0, ol[a ? "initProps" : "updateProps"])(e, {
shape: {
points: t.ends
}
}, o, n);
var r = i.getItemModel(n),
s = r.getModel(Jb),
l = i.getItemVisual(n, "color"),
u = s.getItemStyle(["borderColor"]);
u.stroke = l, u.strokeNoScale = !0, e.useStyle(u), e.z2 = 100, Os(e, r.getModel(Qb).getItemStyle())
}
var nS = ["itemStyle", "borderColor"],
aS = O;
af(function(n, t) {
var a = n.get("color");
n.eachRawSeriesByType("boxplot", function(t) {
var e = a[t.seriesIndex % a.length],
i = t.getData();
i.setVisual({
legendSymbol: "roundRect",
color: t.get(nS) || e
}), n.isSeriesFiltered(t) || i.each(function(t) {
var e = i.getItemModel(t);
i.setItemVisual(t, {
color: e.get(nS, !0)
})
})
})
}), nf(function(t) {
var e = function(t) {
var n = [],
a = [];
return t.eachSeriesByType("boxplot", function(t) {
var e = t.getBaseAxis(),
i = _(a, e);
i < 0 && (i = a.length, a[i] = e, n[i] = {
axis: e,
seriesModels: []
}), n[i].seriesModels.push(t)
}), n
}(t);
aS(e, function(i) {
var t = i.seriesModels;
t.length && (function(t) {
var e, i, n = t.axis,
a = t.seriesModels,
o = a.length,
r = t.boxWidthList = [],
s = t.boxOffsetList = [],
l = [];
if ("category" === n.type) i = n.getBandWidth();
else {
var u = 0;
aS(a, function(t) {
u = Math.max(u, t.getData().count())
}), e = n.getExtent(), Math.abs(e[1] - e[0])
}
aS(a, function(t) {
var e = t.get("boxWidth");
k(e) || (e = [e, e]), l.push([xl(e[0], i) || 0, xl(e[1], i) || 0])
});
var h = .8 * i - 2,
c = h / o * .3,
d = (h - c * (o - 1)) / o,
f = d / 2 - h / 2;
aS(a, function(t, e) {
s.push(f), f += c + d, r.push(Math.min(Math.max(d, l[e][0]), l[e][1]))
})
}(i), aS(t, function(t, e) {
! function(t, r, e) {
var s = t.coordinateSystem,
l = t.getData(),
o = e / 2,
u = "horizontal" === t.get("layout") ? 0 : 1,
h = 1 - u,
i = ["x", "y"],
n = l.mapDimension(i[u]),
a = l.mapDimension(i[h], !0);
if (null == n || a.length < 5) return;
for (var c = 0; c < l.count(); c++) {
var d = l.get(n, c),
f = x(d, a[2], c),
p = x(d, a[0], c),
g = x(d, a[1], c),
m = x(d, a[3], c),
v = x(d, a[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, a = l.get(e, i),
o = [];
return o[u] = t, o[h] = a, isNaN(t) || isNaN(a) ? n = [NaN, NaN] : (n = s.dataToPoint(o))[u] += r, n
}
function _(t, e, i) {
var n = e.slice(),
a = e.slice();
n[u] += o, a[u] -= o, i ? t.push(n, a) : t.push(a, n)
}
function w(t, e) {
var i = e.slice(),
n = e.slice();
i[u] -= o, n[u] += o, t.push(i, n)
}
}(t, i.boxOffsetList[e], i.boxWidthList[e])
}))
})
}), b(Wh.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,
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)
}
}), $b, !0);
var oS = ["itemStyle"],
rS = ["emphasis", "itemStyle"],
sS = ["color", "color0", "borderColor", "borderColor0"],
lS = (ec.extend({
type: "candlestick",
render: function(t, e, i) {
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(a) {
var o = a.getData(),
r = this._data,
s = this.group,
l = o.getLayout("isSimpleBox");
this._data || s.removeAll(), o.diff(r).add(function(t) {
if (o.hasValue(t)) {
var e, i = o.getItemLayout(t);
qs(e = uS(i, t, !0), {
shape: {
points: i.ends
}
}, a, t), hS(e, o, t, l), s.add(e), o.setItemGraphicEl(t, e)
}
}).update(function(t, e) {
var i = r.getItemGraphicEl(e);
if (o.hasValue(t)) {
var n = o.getItemLayout(t);
i ? js(i, {
shape: {
points: n.ends
}
}, a, t) : i = uS(n, t), hS(i, o, t, l), s.add(i), o.setItemGraphicEl(t, i)
} else s.remove(i)
}).remove(function(t) {
var e = r.getItemGraphicEl(t);
e && s.remove(e)
}).execute(), this._data = o
},
_renderLarge: function(t) {
this._clear(), dS(t, this.group)
},
_incrementalRenderNormal: function(t, e) {
for (var i, n = e.getData(), a = n.getLayout("isSimpleBox"); null != (i = t.next());) {
var o;
hS(o = uS(n.getItemLayout(i), i), n, i, a), o.incremental = !0, this.group.add(o)
}
},
_incrementalRenderLarge: function(t, e) {
dS(e, this.group, !0)
},
remove: function(t) {
this._clear()
},
_clear: function() {
this.group.removeAll(), this._data = null
},
dispose: et
}), hr.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 uS(t, e, i) {
var n = t.ends;
return new lS({
shape: {
points: i ? function(t, e) {
return N(t, function(t) {
return (t = t.slice())[1] = e.initBaseline, t
})
}(n, t) : n
},
z2: 100
})
}
function hS(t, e, i, n) {
var a = e.getItemModel(i),
o = a.getModel(oS),
r = e.getItemVisual(i, "color"),
s = e.getItemVisual(i, "borderColor") || r,
l = o.getItemStyle(sS);
t.useStyle(l), t.style.strokeNoScale = !0, t.style.fill = r, t.style.stroke = s, t.__simpleBox = n, Os(t, a.getModel(rS).getItemStyle())
}
var cS = hr.extend({
type: "largeCandlestickBox",
shape: {},
buildPath: function(t, e) {
for (var i = e.points, n = 0; n < i.length;)
if (this.__sign === i[n++]) {
var a = i[n++];
t.moveTo(a, i[n++]), t.lineTo(a, i[n++])
} else n += 3
}
});
function dS(t, e, i) {
var n = t.getData(),
a = n.getLayout("largePoints"),
o = new cS({
shape: {
points: a
},
__sign: 1
});
e.add(o);
var r = new cS({
shape: {
points: a
},
__sign: -1
});
e.add(r), fS(1, o, t, n), fS(-1, r, t, n), i && (o.incremental = !0, r.incremental = !0)
}
function fS(t, e, i, n) {
var a = 0 < t ? "P" : "N",
o = n.getVisual("borderColor" + a) || n.getVisual("color" + a),
r = i.getModel(oS).getItemStyle(sS);
e.useStyle(r), e.style.fill = null, e.style.stroke = o
}
var pS = ["itemStyle", "borderColor"],
gS = ["itemStyle", "borderColor0"],
mS = ["itemStyle", "color"],
vS = ["itemStyle", "color0"],
yS = {
seriesType: "candlestick",
plan: Jh(),
performRawSeries: !0,
reset: function(t, e) {
var i = t.getData(),
n = t.pipelineContext.large;
if (i.setVisual({
legendSymbol: "roundRect",
colorP: o(1, t),
colorN: o(-1, t),
borderColorP: r(1, t),
borderColorN: r(-1, t)
}), !e.isSeriesFiltered(t)) return !n && {
progress: function(t, e) {
var i;
for (; null != (i = t.next());) {
var n = e.getItemModel(i),
a = e.getItemLayout(i).sign;
e.setItemVisual(i, {
color: o(a, n),
borderColor: r(a, n)
})
}
}
};
function o(t, e) {
return e.get(0 < t ? mS : vS)
}
function r(t, e) {
return e.get(0 < t ? pS : gS)
}
}
},
xS = "undefined" != typeof Float32Array ? Float32Array : Array,
_S = {
seriesType: "candlestick",
plan: Jh(),
reset: function(t) {
var x = t.coordinateSystem,
e = t.getData(),
_ = function(t, e) {
var i, n = t.getBaseAxis(),
a = "category" === n.type ? n.getBandWidth() : (i = n.getExtent(), Math.abs(i[1] - i[0]) / e.count()),
o = xl(H(t.get("barMaxWidth"), a), a),
r = xl(H(t.get("barMinWidth"), 1), a),
s = t.get("barWidth");
return null != s ? xl(s, a) : Math.max(Math.min(a / 2, o), 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, a = new xS(4 * t.count),
o = 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) ? (a[o++] = NaN, o += 3) : (a[o++] = wS(e, n, u, h, S), r[0] = l, r[1] = c, i = x.dataToPoint(r, null, s), a[o++] = i ? i[0] : NaN, a[o++] = i ? i[1] : NaN, r[1] = d, i = x.dataToPoint(r, null, s), a[o++] = i ? i[1] : NaN)
}
e.setLayout("largePoints", a)
} : function(t, e) {
var i;
for (; null != (i = t.next());) {
var n = e.get(w, i),
a = e.get(b, i),
o = e.get(S, i),
r = e.get(M, i),
s = e.get(I, i),
l = Math.min(a, o),
u = Math.max(a, o),
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: wS(e, i, a, o, S),
initBaseline: o < a ? 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(),
a = e.slice();
n[0] = _s(n[0] + _ / 2, 1, !1), a[0] = _s(a[0] - _ / 2, 1, !0), i ? t.push(n, a) : t.push(a, n)
}
function v(t, e, i) {
var n = g(t, i),
a = g(e, i);
return n[0] -= _ / 2, a[0] -= _ / 2, {
x: n[0],
y: n[1],
width: _,
height: a[1] - n[1]
}
}
function y(t) {
return t[0] = _s(t[0], 1), t
}
}
}
}
};
function wS(t, e, i, n, a) {
return n < i ? -1 : i < n ? 1 : 0 < e ? t.get(a, e - 1) <= n ? 1 : -1 : 1
}
Jd(function(t) {
t && k(t.series) && O(t.series, function(t) {
E(t) && "k" === t.type && (t.type = "candlestick")
})
}), af(yS), nf(_S), Wh.extend({
type: "series.effectScatter",
dependencies: ["grid", "polar"],
getInitialData: function(t, e) {
return Xf(this.getSource(), this)
},
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 bS(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 SS(t, e) {
Si.call(this);
var i = new Sg(t, e),
n = new Si;
this.add(i), this.add(n), n.beforeUpdate = function() {
this.attr(i.getScale())
}, this.updateData(t, e)
}
var MS = SS.prototype;
MS.stopEffectAnimation = function() {
this.childAt(1).removeAll()
}, MS.startEffectAnimation = function(t) {
for (var e = t.symbolType, i = t.color, n = this.childAt(1), a = 0; a < 3; a++) {
var o = Jp(e, -1, -1, 2, 2, i);
o.attr({
style: {
strokeNoScale: !0
},
z2: 99,
silent: !0,
scale: [.5, .5]
});
var r = -a / 3 * t.period + t.effectOffset;
o.animate("", !0).when(t.period, {
scale: [t.rippleScale / 2, t.rippleScale / 2]
}).delay(r).start(), o.animateStyle(!0).when(t.period, {
opacity: 0
}).delay(r).start(), n.add(o)
}
bS(n, t)
}, MS.updateEffectAnimation = function(t) {
for (var e = this._effectCfg, i = this.childAt(1), n = ["symbolType", "period", "rippleScale"], a = 0; a < n.length; a++) {
var o = n[a];
if (e[o] !== t[o]) return this.stopEffectAnimation(), void this.startEffectAnimation(t)
}
bS(i, t)
}, MS.highlight = function() {
this.trigger("emphasis")
}, MS.downplay = function() {
this.trigger("normal")
}, MS.updateData = function(t, e) {
var i = t.hostModel;
this.childAt(0).updateData(t, e);
var n = this.childAt(1),
a = t.getItemModel(e),
o = t.getItemVisual(e, "symbol"),
r = function(t) {
return k(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 = a.getShallow("symbolOffset");
if (l) {
var u = n.position;
u[0] = xl(l[0], r[0]), u[1] = xl(l[1], r[1])
}
n.rotation = (a.getShallow("symbolRotate") || 0) * Math.PI / 180 || 0;
var h = {};
if (h.showEffectOn = i.get("showEffectOn"), h.rippleScale = a.get("rippleEffect.scale"), h.brushType = a.get("rippleEffect.brushType"), h.period = 1e3 * a.get("rippleEffect.period"), h.effectOffset = e / t.count(), h.z = a.getShallow("z") || 0, h.zlevel = a.getShallow("zlevel") || 0, h.symbolType = o, h.color = s, h.rippleEffectColor = a.get("rippleEffect.color"), this.off("mouseover").off("mouseout").off("emphasis").off("normal"), "render" === h.showEffectOn) this._effectCfg ? this.updateEffectAnimation(h) : this.startEffectAnimation(h), this._effectCfg = h;
else {
this._effectCfg = null, this.stopEffectAnimation();
var c = this.childAt(0),
d = function() {
c.highlight(), "render" !== h.showEffectOn && this.startEffectAnimation(h)
},
f = function() {
c.downplay(), "render" !== h.showEffectOn && this.stopEffectAnimation()
};
this.on("mouseover", d, this).on("mouseout", f, this).on("emphasis", d, this).on("normal", f, this)
}
this._effectCfg = h
}, MS.fadeOut = function(t) {
this.off("mouseover").off("mouseout").off("emphasis").off("normal"), t && t()
}, w(SS, Si), hf({
type: "effectScatter",
init: function() {
this._symbolDraw = new Ng(SS)
},
render: function(t, e, i) {
var n = t.getData(),
a = this._symbolDraw;
a.updateData(n), this.group.add(a.group)
},
updateTransform: function(t, e, i) {
var n = t.getData();
this.group.dirty();
var a = sm().reset(t);
a.progress && a.progress({
start: 0,
end: n.count()
}, n), this._symbolDraw.updateLayout(n)
},
_updateGroupTransform: function(t) {
var e = t.coordinateSystem;
e && e.getRoamTransform && (this.group.transform = se(e.getRoamTransform()), this.group.decomposeTransform())
},
remove: function(t, e) {
this._symbolDraw && this._symbolDraw.remove(e)
},
dispose: function() {}
}), af(rm("effectScatter", "circle")), nf(sm("effectScatter"));
var IS = "undefined" == typeof Uint32Array ? Array : Uint32Array,
AS = "undefined" == typeof Float64Array ? Array : Float64Array;
function TS(t) {
var e = t.data;
e && e[0] && e[0][0] && e[0][0].coord && (t.data = N(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 DS = Wh.extend({
type: "series.lines",
dependencies: ["grid", "polar"],
visualColorAccessPath: "lineStyle.color",
init: function(t) {
t.data = t.data || [], TS(t);
var e = this._processFlatCoordsArray(t.data);
this._flatCoords = e.flatCoords, this._flatCoordsOffset = e.flatCoordsOffset, e.flatCoords && (t.data = new Float32Array(e.count)), DS.superApply(this, "init", arguments)
},
mergeOption: function(t) {
if (t.data = t.data || [], TS(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))
}
DS.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], a = 0; a < n; a++) e[a] = e[a] || [], e[a][0] = this._flatCoords[i + 2 * a], e[a][1] = this._flatCoords[i + 2 * a + 1];
return n
}
var o = this._getCoordsFromItemModel(t);
for (a = 0; a < o.length; a++) e[a] = e[a] || [], e[a][0] = o[a][0], e[a][1] = o[a][1];
return o.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 IS(i), a = new AS(i), o = 0, r = 0, s = 0, l = 0; l < i;) {
s++;
var u = t[l++];
n[r++] = o + e, n[r++] = u;
for (var h = 0; h < u; h++) {
var c = t[l++],
d = t[l++];
a[o++] = c, a[o++] = d
}
}
return {
flatCoordsOffset: new Uint32Array(n.buffer, 0, r),
flatCoords: a,
count: s
}
},
getInitialData: function(t, e) {
var o = new Tf(["value"], this);
return o.hasItemOption = !1, o.initData(t.data, [], function(t, e, i, n) {
if (t instanceof Array) return NaN;
o.hasItemOption = !0;
var a = t.value;
return null != a ? a instanceof Array ? a[n] : a : void 0
}), o
},
formatTooltip: function(t) {
var e = this.getData().getItemModel(t),
i = e.get("name");
if (i) return i;
var n = e.get("fromName"),
a = e.get("toName"),
o = [];
return null != n && o.push(n), null != a && o.push(a), Wl(o.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 CS(t, e, i) {
Si.call(this), this.add(this.createLine(t, e, i)), this._updateEffectSymbol(t, e)
}
var LS = CS.prototype;
function kS(t, e, i) {
Si.call(this), this._createPolyline(t, e, i)
}
LS.createLine = function(t, e, i) {
return new N_(t, e, i)
}, LS._updateEffectSymbol = function(t, e) {
var i = t.getItemModel(e).getModel("effect"),
n = i.get("symbolSize"),
a = i.get("symbol");
k(n) || (n = [n, n]);
var o = i.get("color") || t.getItemVisual(e, "color"),
r = this.childAt(1);
this._symbolType !== a && (this.remove(r), (r = Jp(a, -.5, -.5, 1, 1, o)).z2 = 100, r.culling = !0, this.add(r)), r && (r.setStyle("shadowColor", o), r.setStyle(i.getItemStyle(["color"])), r.attr("scale", n), r.setColor(o), r.attr("scale", n), this._symbolType = a, this._updateEffectAnimation(t, i, e))
}, LS._updateEffectAnimation = function(e, t, i) {
var n = this.childAt(1);
if (n) {
var a = this,
o = 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, o), 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() {
a.updateSymbolPosition(n)
});
s || d.done(function() {
a.remove(n)
}), d.start()
}
this._period = r, this._loop = s
}
}, LS.getLineLength = function(t) {
return yt(t.__p1, t.__cp1) + yt(t.__cp1, t.__p2)
}, LS.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]
}, LS.updateData = function(t, e, i) {
this.childAt(0).updateData(t, e, i), this._updateEffectSymbol(t, e)
}, LS.updateSymbolPosition = function(t) {
var e = t.__p1,
i = t.__p2,
n = t.__cp1,
a = t.__t,
o = t.position,
r = fo,
s = po;
o[0] = r(e[0], n[0], i[0], a), o[1] = r(e[1], n[1], i[1], a);
var l = s(e[0], n[0], i[0], a),
u = s(e[1], n[1], i[1], a);
t.rotation = -Math.atan2(u, l) - Math.PI / 2, t.ignore = !1
}, LS.updateLayout = function(t, e) {
this.childAt(0).updateLayout(t, e);
var i = t.getItemModel(e).getModel("effect");
this._updateEffectAnimation(t, i, e)
}, w(CS, Si);
var PS = kS.prototype;
function NS(t, e, i) {
CS.call(this, t, e, i), this._lastFrame = 0, this._lastFramePercent = 0
}
PS._createPolyline = function(t, e, i) {
var n = t.getItemLayout(e),
a = new Er({
shape: {
points: n
}
});
this.add(a), this._updateCommonStl(t, e, i)
}, PS.updateData = function(t, e, i) {
var n = t.hostModel;
js(this.childAt(0), {
shape: {
points: t.getItemLayout(e)
}
}, n, e), this._updateCommonStl(t, e, i)
}, PS._updateCommonStl = function(t, e, i) {
var n = this.childAt(0),
a = t.getItemModel(e),
o = t.getItemVisual(e, "color"),
r = i && i.lineStyle,
s = i && i.hoverLineStyle;
i && !t.hasItemOption || (r = a.getModel("lineStyle").getLineStyle(), s = a.getModel("emphasis.lineStyle").getLineStyle()), n.useStyle(C({
strokeNoScale: !0,
fill: "none",
stroke: o
}, r)), n.hoverStyle = s, Os(this)
}, PS.updateLayout = function(t, e) {
this.childAt(0).setShape("points", t.getItemLayout(e))
}, w(kS, Si);
var OS = NS.prototype;
OS.createLine = function(t, e, i) {
return new kS(t, e, i)
}, OS.updateAnimationPoints = function(t, e) {
this._points = e;
for (var i = [0], n = 0, a = 1; a < e.length; a++) {
var o = e[a - 1],
r = e[a];
n += yt(o, r), i.push(n)
}
if (0 !== n) {
for (a = 0; a < i.length; a++) i[a] /= n;
this._offsets = i, this._length = n
}
}, OS.getLineLength = function(t) {
return this._length
}, OS.updateSymbolPosition = function(t) {
var e = t.__t,
i = this._points,
n = this._offsets,
a = i.length;
if (n) {
var o = this._lastFrame;
if (e < this._lastFramePercent) {
for (r = Math.min(o + 1, a - 1); 0 <= r && !(n[r] <= e); r--);
r = Math.min(r, a - 2)
} else {
for (var r = o; r < a && !(n[r] > e); r++);
r = Math.min(r - 1, a - 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(NS, CS);
var RS = ds({
shape: {
polyline: !1,
curveness: 0,
segs: []
},
buildPath: function(t, e) {
var i = e.segs,
n = e.curveness;
if (e.polyline)
for (var a = 0; a < i.length;) {
var o = i[a++];
if (0 < o) {
t.moveTo(i[a++], i[a++]);
for (var r = 1; r < o; r++) t.lineTo(i[a++], i[a++])
}
} else
for (a = 0; a < i.length;) {
var s = i[a++],
l = i[a++],
u = i[a++],
h = i[a++];
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,
a = i.curveness;
if (i.polyline)
for (var o = 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 (Zo(l, u, c = n[r++], d = n[r++])) return o
}
o++
} else
for (o = 0, r = 0; r < n.length;) {
l = n[r++], u = n[r++];
var c = n[r++],
d = n[r++];
if (0 < a) {
if (Xo(l, u, (l + c) / 2 - (u - d) * a, (u + d) / 2 - (c - l) * a, c, d)) return o
} else if (Zo(l, u, c, d)) return o;
o++
}
return -1
}
});
function zS() {
this.group = new Si
}
var ES = zS.prototype;
ES.isPersistent = function() {
return !this._incremental
}, ES.updateData = function(t) {
this.group.removeAll();
var e = new RS({
rectHover: !0,
cursor: "default"
});
e.setShape({
segs: t.getLayout("linesPoints")
}), this._setCommon(e, t), this.group.add(e), this._incremental = null
}, ES.incrementalPrepareUpdate = function(t) {
this.group.removeAll(), this._clearIncremental(), 5e5 < t.count() ? (this._incremental || (this._incremental = new ts({
silent: !0
})), this.group.add(this._incremental)) : this._incremental = null
}, ES.incrementalUpdate = function(t, e) {
var i = new RS;
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))
}, ES.remove = function() {
this._clearIncremental(), this._incremental = null, this.group.removeAll()
}, ES._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 a = t.getVisual("color");
a && i.setStyle("stroke", a), 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)
}))
}, ES._clearIncremental = function() {
var t = this._incremental;
t && t.clearDisplaybles()
};
var BS = {
seriesType: "lines",
plan: Jh(),
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, a = t.end - t.start;
if (v) {
for (var o = 0, r = t.start; r < t.end; r++) o += g.getLineCoordsCount(r);
n = new Float32Array(a + 2 * o)
} else n = new Float32Array(4 * a);
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 VS(t) {
return t instanceof Array || (t = [t, t]), t
}
hf({
type: "lines",
init: function() {},
render: function(t, e, i) {
var n = t.getData(),
a = this._updateLineDraw(n, t),
o = t.get("zlevel"),
r = t.get("effect.trailLength"),
s = i.getZr(),
l = "svg" === s.painter.getType();
l || s.painter.getLayer(o).clear(!0), null == this._lastZlevel || l || s.configLayer(this._lastZlevel, {
motionBlur: !1
}), this._showEffect(t) && r && (l || s.configLayer(o, {
motionBlur: !0,
lastFrameAlpha: Math.max(Math.min(r / 10 + .9, 1), 0)
})), a.updateData(n);
var u = t.get("clip", !0) && tm(t.coordinateSystem, !1, t);
u ? this.group.setClipPath(u) : this.group.removeClipPath(), this._lastZlevel = o, 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(),
a = t.pipelineContext;
if (!this._finished || a.large || a.progressiveRender) return {
update: !0
};
var o = BS.reset(t);
o.progress && o.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),
a = !!e.get("polyline"),
o = e.pipelineContext.large;
return i && n === this._hasEffet && a === this._isPolyline && o === this._isLargeDraw || (i && i.remove(), i = this._lineDraw = o ? new zS : new R_(a ? n ? NS : kS : n ? CS : N_), this._hasEffet = n, this._isPolyline = a, this._isLargeDraw = o, 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 GS = "lineStyle.opacity".split("."),
FS = {
seriesType: "lines",
reset: function(t, e, i) {
var n = VS(t.get("symbol")),
a = VS(t.get("symbolSize")),
o = t.getData();
return o.setVisual("fromSymbol", n && n[0]), o.setVisual("toSymbol", n && n[1]), o.setVisual("fromSymbolSize", a && a[0]), o.setVisual("toSymbolSize", a && a[1]), o.setVisual("opacity", t.get(GS)), {
dataEach: o.hasItemOption ? function(t, e) {
var i = t.getItemModel(e),
n = VS(i.getShallow("symbol", !0)),
a = VS(i.getShallow("symbolSize", !0)),
o = i.get(GS);
n[0] && t.setItemVisual(e, "fromSymbol", n[0]), n[1] && t.setItemVisual(e, "toSymbol", n[1]), a[0] && t.setItemVisual(e, "fromSymbolSize", a[0]), a[1] && t.setItemVisual(e, "toSymbolSize", a[1]), t.setItemVisual(e, "opacity", o)
} : null
}
}
};
nf(BS), af(FS), Wh.extend({
type: "series.heatmap",
getInitialData: function(t, e) {
return Xf(this.getSource(), this, {
generateCoord: "value"
})
},
preventIncremental: function() {
var t = Hu.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 WS() {
var t = g();
this.canvas = t, this.blurSize = 30, this.pointSize = 20, this.maxOpacity = 1, this.minOpacity = 0, this._gradientPixels = {}
}
WS.prototype = {
update: function(t, e, i, n, a, o) {
var r = this._getBrush(),
s = this._getGradient(t, a, "inRange"),
l = this._getGradient(t, a, "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 = o(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 = g()),
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, a = n[i] || (n[i] = new Uint8ClampedArray(1024)), o = [0, 0, 0, 0], r = 0, s = 0; s < 256; s++) e[i](s / 255, !0, o), a[r++] = o[0], a[r++] = o[1], a[r++] = o[2], a[r++] = o[3];
return a
}
}, hf({
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 a = i.coordinateSystem;
"cartesian2d" === a.type || "calendar" === a.type ? this._renderOnCartesianAndCalendar(i, e, 0, i.getData().count()) : function(t) {
var e = t.dimensions;
return "lng" === e[0] && "lat" === e[1]
}(a) && this._renderOnGeo(a, 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, a) {
var o, r, s = t.coordinateSystem;
if ("cartesian2d" === s.type) {
var l = s.getAxis("x"),
u = s.getAxis("y");
o = 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 Hr({
shape: {
x: b[0] - o / 2,
y: b[1] - r / 2,
width: o,
height: r
},
style: {
fill: c.getItemVisual(_, "color"),
opacity: c.getItemVisual(_, "opacity")
}
})
} else {
if (isNaN(c.get(x[1], _))) continue;
w = new Hr({
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]), Bs(p, g, m, v, {
labelFetcher: t,
labelDataIndex: _,
defaultText: I,
isRectText: !0
}), w.setStyle(p), Os(w, c.hasItemOption ? g : L({}, g)), (w.incremental = a) && (w.useHoverLayer = !0), h.add(w), c.setItemGraphicEl(_, w)
}
},
_renderOnGeo: function(a, t, e, i) {
var n = e.targetVisuals.inRange,
o = e.targetVisuals.outOfRange,
r = t.getData(),
s = this._hmLayer || this._hmLayer || new WS;
s.blurSize = t.get("blurSize"), s.pointSize = t.get("pointSize"), s.minOpacity = t.get("minOpacity"), s.maxOpacity = t.get("maxOpacity");
var l = a.getViewRect().clone(),
u = a.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 = a.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, a) {
var i = e[1] - e[0],
o = (n = N(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 < o; e++) {
if ((i = n[e].interval)[0] <= t && t <= i[1]) {
r = e;
break
}
}
if (e === o)
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 < o && a[e]
}
}(y, e.getPieceList(), e.option.selected);
s.update(v, p, g, n.color.getNormalizer(), {
inRange: n.color.getColorMapper(),
outOfRange: o.color.getColorMapper()
}, x);
var _ = new Yn({
style: {
width: p,
height: g,
x: h,
y: c,
image: s.canvas
},
silent: !0
});
this.group.add(_)
},
dispose: function() {}
});
var HS = Qm.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, HS.superApply(this, "getInitialData", arguments)
}
}),
ZS = ["itemStyle", "borderWidth"],
US = [{
xy: "x",
wh: "width",
index: 0,
posDesc: ["left", "right"]
}, {
xy: "y",
wh: "height",
index: 1,
posDesc: ["top", "bottom"]
}],
XS = new Lr;
hf({
type: "pictorialBar",
render: function(t, e, i) {
var r = this.group,
s = t.getData(),
l = this._data,
n = t.coordinateSystem,
a = !!n.getBaseAxis().isHorizontal(),
o = n.grid.getRect(),
u = {
ecSize: {
width: i.getWidth(),
height: i.getHeight()
},
seriesModel: t,
coordSys: n,
coordSysExtent: [
[o.x, o.x + o.width],
[o.y, o.y + o.height]
],
isHorizontal: a,
valueDim: US[+a],
categoryDim: US[1 - a]
};
return s.diff(l).add(function(t) {
if (s.hasValue(t)) {
var e = tM(s, t),
i = YS(s, t, e, u),
n = aM(s, u, i);
s.setItemGraphicEl(t, n), r.add(n), uM(n, u, i)
}
}).update(function(t, e) {
var i = l.getItemGraphicEl(e);
if (s.hasValue(t)) {
var n = tM(s, t),
a = YS(s, t, n, u),
o = rM(s, a);
i && o !== i.__pictorialShapeStr && (r.remove(i), s.setItemGraphicEl(t, null), i = null), i ? function(t, e, i) {
var n = i.animationModel,
a = i.dataIndex;
js(t.__pictorialBundle, {
position: i.bundlePosition.slice()
}, n, a), i.symbolRepeat ? KS(t, e, i, !0) : $S(t, e, i, !0);
JS(t, i, !0), QS(t, e, i, !0)
}(i, u, a) : i = aM(s, u, a, !0), s.setItemGraphicEl(t, i), i.__pictorialSymbolMeta = a, r.add(i), uM(i, u, a)
} else r.remove(i)
}).remove(function(t) {
var e = l.getItemGraphicEl(t);
e && oM(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) {
oM(n, t.dataIndex, e, t)
}) : i.removeAll()
}
});
function YS(t, e, i, n) {
var a = t.getItemLayout(e),
o = 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: a,
itemModel: i,
symbolType: t.getItemVisual(e, "symbol") || "circle",
color: t.getItemVisual(e, "color"),
symbolClip: r,
symbolRepeat: o,
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, a) {
var o, 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 (k(s)) {
var c = [jS(l, s[0]) - u, jS(l, s[1]) - u];
c[1] < c[0] && c.reverse(), o = c[h]
} else o = null != s ? jS(l, s) - u : e ? n.coordSysExtent[r.index][h] - u : i[r.wh];
a.boundingLength = o, e && (a.repeatCutLength = i[r.wh]);
a.pxSign = 0 < o ? 1 : o < 0 ? -1 : 0
}(i, o, a, n, c),
function(t, e, i, n, a, o, r, s, l, u) {
var h = l.valueDim,
c = l.categoryDim,
d = Math.abs(i[c.wh]),
f = t.getItemVisual(e, "symbolSize");
f = k(f) ? f.slice() : (null == f && (f = "100%"), [f, f]);
f[c.index] = xl(f[c.index], d), f[h.index] = xl(f[h.index], n ? d : Math.abs(o)), u.symbolSize = f, (u.symbolScale = [f[0] / s, f[1] / s])[h.index] *= (l.isHorizontal ? -1 : 1) * r
}(t, e, a, o, 0, c.boundingLength, c.pxSign, u, n, c),
function(t, e, i, n, a) {
var o = t.get(ZS) || 0;
o && (XS.attr({
scale: e.slice(),
rotation: i
}), XS.updateTransform(), o /= XS.getLineScale(), o *= e[n.valueDim.index]);
a.valueLineWidth = o
}(i, c.symbolScale, l, n, c);
var d = c.symbolSize,
f = i.get("symbolOffset");
return k(f) && (f = [xl(f[0], d[0]), xl(f[1], d[1])]),
function(t, e, i, n, a, o, 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 = xl(y, e[f.index]);
var _ = Math.max(g + 2 * y, 0),
w = x ? 0 : 2 * y,
b = Rl(n),
S = b ? n : hM((v + w) / _);
_ = g + 2 * (y = (v - S * g) / 2 / (x ? S : S - 1)), w = x ? 0 : 2 * y, b || "fixed" === n || (S = u ? hM((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, o && (I[0] += o[0], I[1] += o[1]);
var A = c.bundlePosition = [];
A[d.index] = i[d.xy], A[f.index] = i[f.xy];
var T = c.barRectShape = L({}, i);
T[f.wh] = p * Math.max(Math.abs(i[f.wh]), Math.abs(I[f.index] + M)), T[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, a, o, 0, f, s, c.valueLineWidth, c.boundingLength, c.repeatCutLength, n, c), c
}
function jS(t, e) {
return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))
}
function qS(t) {
var e = t.symbolPatternSize,
i = Jp(t.symbolType, -e / 2, -e / 2, e, e, t.color);
return i.attr({
culling: !0
}), "image" !== i.type && i.setStyle({
strokeNoScale: !0
}), i
}
function KS(t, e, a, i) {
var n = t.__pictorialBundle,
o = a.symbolSize,
r = a.valueLineWidth,
s = a.pathPosition,
l = e.valueDim,
u = a.repeatTimes || 0,
h = 0,
c = o[e.valueDim.index] + r + 2 * a.symbolMargin;
for (sM(t, function(t) {
t.__pictorialAnimationIndex = h, t.__pictorialRepeatTimes = u, h < u ? lM(t, null, p(h), a, i) : lM(t, null, {
scale: [0, 0]
}, a, i, function() {
n.remove(t)
}), nM(t, a), h++
}); h < u; h++) {
var d = qS(a);
d.__pictorialAnimationIndex = h, d.__pictorialRepeatTimes = u, n.add(d);
var f = p(h);
lM(d, {
position: f.position,
scale: [0, 0]
}, {
scale: f.scale,
rotation: f.rotation
}, a, i), d.on("mouseover", g).on("mouseout", m), nM(d, a)
}
function p(t) {
var e = s.slice(),
i = a.pxSign,
n = t;
return ("start" === a.symbolRepeatDirection ? 0 < i : i < 0) && (n = u - 1 - t), e[l.index] = c * (n - u / 2 + .5) + s[l.index], {
position: e,
scale: a.symbolScale.slice(),
rotation: a.rotation
}
}
function g() {
sM(t, function(t) {
t.trigger("emphasis")
})
}
function m() {
sM(t, function(t) {
t.trigger("normal")
})
}
}
function $S(t, e, i, n) {
var a = t.__pictorialBundle,
o = t.__pictorialMainPath;
o ? lM(o, null, {
position: i.pathPosition.slice(),
scale: i.symbolScale.slice(),
rotation: i.rotation
}, i, n) : (o = t.__pictorialMainPath = qS(i), a.add(o), lM(o, {
position: i.pathPosition.slice(),
scale: [0, 0],
rotation: i.rotation
}, {
scale: i.symbolScale.slice()
}, i, n), o.on("mouseover", function() {
this.trigger("emphasis")
}).on("mouseout", function() {
this.trigger("normal")
})), nM(o, i)
}
function JS(t, e, i) {
var n = L({}, e.barRectShape),
a = t.__pictorialBarRect;
a ? lM(a, null, {
shape: n
}, e, i) : (a = t.__pictorialBarRect = new Hr({
z2: 2,
shape: n,
silent: !0,
style: {
stroke: "transparent",
fill: "transparent",
lineWidth: 0
}
}), t.add(a))
}
function QS(t, e, i, n) {
if (i.symbolClip) {
var a = t.__pictorialClipPath,
o = L({}, i.clipShape),
r = e.valueDim,
s = i.animationModel,
l = i.dataIndex;
if (a) js(a, {
shape: o
}, s, l);
else {
o[r.wh] = 0, a = new Hr({
shape: o
}), t.__pictorialBundle.setClipPath(a), t.__pictorialClipPath = a;
var u = {};
u[r.wh] = i.clipShape[r.wh], ol[n ? "updateProps" : "initProps"](a, {
shape: u
}, s, l)
}
}
}
function tM(t, e) {
var i = t.getItemModel(e);
return i.getAnimationDelayParams = eM, i.isAnimationEnabled = iM, i
}
function eM(t) {
return {
index: t.__pictorialAnimationIndex,
count: t.__pictorialRepeatTimes
}
}
function iM() {
return this.parentModel.isAnimationEnabled() && !!this.getShallow("animation")
}
function nM(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 aM(t, e, i, n) {
var a = new Si,
o = new Si;
return a.add(o), (a.__pictorialBundle = o).attr("position", i.bundlePosition.slice()), i.symbolRepeat ? KS(a, e, i) : $S(a, 0, i), JS(a, i, n), QS(a, e, i, n), a.__pictorialShapeStr = rM(t, i), a.__pictorialSymbolMeta = i, a
}
function oM(t, e, i, n) {
var a = n.__pictorialBarRect;
a && (a.style.text = null);
var o = [];
sM(n, function(t) {
o.push(t)
}), n.__pictorialMainPath && o.push(n.__pictorialMainPath), n.__pictorialClipPath && (i = null), O(o, function(t) {
js(t, {
scale: [0, 0]
}, i, e, function() {
n.parent && n.parent.remove(n)
})
}), t.setItemGraphicEl(e, null)
}
function rM(t, e) {
return [t.getItemVisual(e.dataIndex, "symbol") || "none", !!e.symbolRepeat, !!e.symbolClip].join(":")
}
function sM(e, i, n) {
O(e.__pictorialBundle.children(), function(t) {
t !== e.__pictorialBarRect && i.call(n, t)
})
}
function lM(t, e, i, n, a, o) {
e && t.attr(e), n.symbolClip && !a ? i && t.attr(i) : i && ol[a ? "updateProps" : "initProps"](t, i, n.animationModel, n.dataIndex, o)
}
function uM(t, e, i) {
var n = i.color,
a = i.dataIndex,
o = i.itemModel,
r = o.getModel("itemStyle").getItemStyle(["color"]),
s = o.getModel("emphasis.itemStyle").getItemStyle(),
l = o.getShallow("cursor");
sM(t, function(t) {
t.setColor(n), t.setStyle(C({
fill: n,
opacity: i.opacity
}, r)), Os(t, s), l && (t.cursor = l), t.z2 = i.z2
});
var u = {},
h = (e.valueDim.posDesc[+(0 < i.boundingLength)], t.__pictorialBarRect);
tv(h.style, u, o, n, e.seriesModel, a), Os(h, u)
}
function hM(t) {
var e = Math.round(t);
return Math.abs(t - e) < 1e-4 ? e : Math.ceil(t)
}
nf(A(pp, "pictorialBar")), af(rm("pictorialBar", "roundRect"));
function cM(t, e, i, n, a) {
vg.call(this, t, e, i), this.type = n || "value", this.position = a || "bottom", this.orient = null
}
function dM(t, e, i) {
this.dimension = "single", this.dimensions = ["single"], this._axis = null, this._rect, this._init(t, e, i), this.model = t
}
function fM(t, e) {
e = e || {};
var i = t.coordinateSystem,
n = t.axis,
a = {},
o = 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]
}
};
a.position = ["vertical" === r ? u.vertical[o] : l[0], "horizontal" === r ? u.horizontal[o] : l[3]];
a.rotation = Math.PI / 2 * {
horizontal: 0,
vertical: 1
} [r];
a.labelDirection = a.tickDirection = a.nameDirection = {
top: -1,
bottom: 1,
right: 1,
left: -1
} [o], t.get("axisTick.inside") && (a.tickDirection = -a.tickDirection), W(e.labelInside, t.get("axisLabel.inside")) && (a.labelDirection = -a.labelDirection);
var h = e.rotate;
return null == h && (h = t.get("axisLabel.rotate")), a.labelRotation = "top" === o ? -h : h, a.z2 = 1, a
}
cM.prototype = {
constructor: cM,
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(cM, vg), Hu.register("single", {
create: function(n, a) {
var o = [];
return n.eachComponent("singleAxis", function(t, e) {
var i = new dM(t, n, a);
i.name = "single_" + e, i.resize(t, a), t.coordinateSystem = i, o.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
}
}), o
},
dimensions: (dM.prototype = {
type: "singleAxis",
axisPointerEnabled: !0,
constructor: dM,
_init: function(t, e, i) {
var n = this.dimension,
a = new cM(n, Bp(t), [0, 0], t.get("type"), t.get("position")),
o = "category" === a.type;
a.onBand = o && t.get("boundaryGap"), a.inverse = t.get("inverse"), a.orient = t.get("orient"), (t.axis = a).model = t, (a.coordinateSystem = this)._axis = a
},
update: function(t, e) {
t.eachSeries(function(t) {
if (t.coordinateSystem === this) {
var e = t.getData();
O(e.mapDimension(this.dimension, !0), function(t) {
this._axis.scale.unionExtentFromData(e, t)
}, this), Ep(this._axis.scale, this._axis.model)
}
}, this)
},
resize: function(t, e) {
this._rect = au({
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],
a = e.reverse ? 1 : 0;
e.setExtent(n[a], n[1 - a]), this._updateAxisTransform(e, i ? t.x : t.y)
},
_updateAxisTransform: function(t, e) {
var i = t.getExtent(),
n = i[0] + i[1],
a = t.isHorizontal();
t.toGlobalCoord = a ? function(t) {
return t + e
} : function(t) {
return n - t + e
}, t.toLocalCoord = a ? 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 = [],
a = "horizontal" === e.orient ? 0 : 1;
return t instanceof Array && (t = t[0]), n[a] = e.toGlobalCoord(e.dataToCoord(+t)), n[1 - a] = 0 == a ? i.y + i.height / 2 : i.x + i.width / 2, n
}
}).dimensions
});
var pM = ["axisLine", "axisTickLabel", "axisName"],
gM = "splitLine",
mM = Um.extend({
type: "singleAxis",
axisPointerClass: "SingleAxisPointer",
render: function(t, e, i, n) {
var a = this.group;
a.removeAll();
var o = fM(t),
r = new Cm(t, o);
O(pM, r.add, r), a.add(r.getGroup()), t.get(gM + ".show") && this["_" + gM](t), mM.superCall(this, "render", t, e, i, n)
},
_splitLine: function(t) {
var e = t.axis;
if (!e.scale.isBlank()) {
var i = t.getModel("splitLine"),
n = i.getModel("lineStyle"),
a = n.get("width"),
o = n.get("color");
o = o instanceof Array ? o : [o];
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++ % o.length;
l[g] = l[g] || [], l[g].push(new Ur({
subPixelOptimize: !0,
shape: {
x1: c[0],
y1: c[1],
x2: d[0],
y2: d[1]
},
style: {
lineWidth: a
},
silent: !0
}))
}
for (f = 0; f < l.length; ++f) this.group.add(ys(l[f], {
style: {
stroke: o[f % o.length],
lineDash: n.getLineDash(a),
lineWidth: a
},
silent: !0
}))
}
}
}),
vM = fu.extend({
type: "singleAxis",
layoutMode: "box",
axis: null,
coordinateSystem: null,
getCoordSysModel: function() {
return this
}
});
m(vM.prototype, Hp), mm("single", vM, 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 yM(t, e) {
var i, n = [],
a = t.seriesIndex;
if (null == a || !(i = e.getSeriesByIndex(a))) return {
point: []
};
var o = i.getData(),
r = Ca(o, t);
if (null == r || r < 0 || k(r)) return {
point: []
};
var s = o.getItemGraphicEl(r),
l = i.coordinateSystem;
if (i.getTooltipPosition) n = i.getTooltipPosition(r) || [];
else if (l && l.dataToPoint) n = l.dataToPoint(o.getValues(N(l.dimensions, function(t) {
return o.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 xM = O,
_M = A,
wM = La();
function bM(t, e, i, n, a) {
var o = t.axis;
if (!o.scale.isBlank() && o.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 xM(t.seriesModels, function(e, t) {
var i, n, a = e.getData().mapDimension(h, !0);
if (e.getAxisTooltipData) {
var o = e.getAxisTooltipData(a, l, u);
n = o.dataIndices, i = o.nestestValue
} else {
if (!(n = e.getData().indicesOfNearest(a[0], l, "category" === u.type ? .5 : null)).length) return;
i = e.getData().get(a[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), xM(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 == a.seriesIndex && L(a, s[0]), !n && t.snap && o.containData(l) && null != l && (e = l), i.showPointer(t, e, s, a), i.showTooltip(t, r, l)
} else i.showPointer(t, e)
}
function SM(t, e, i, n) {
t[e.key] = {
value: i,
payloadBatch: n
}
}
function MM(t, e, i, n) {
var a = i.payloadBatch,
o = e.axis,
r = o.model,
s = e.axisPointerModel;
if (e.triggerTooltip && a.length) {
var l = e.coordSys.model,
u = Zm(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: o.dim,
axisIndex: r.componentIndex,
axisType: r.type,
axisId: r.id,
value: n,
valueLabelOpt: {
precision: s.get("label.precision"),
formatter: s.get("label.formatter")
},
seriesDataIndices: a.slice()
})
}
}
function IM(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 AM(t) {
return !t || null == t[0] || isNaN(t[0]) || null == t[1] || isNaN(t[1])
}
sf({
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 TM = La(),
DM = O;
function CM(t, e, i) {
if (!v.node) {
var n = e.getZr();
TM(n).records || (TM(n).records = {}),
function(a, o) {
if (TM(a).initialized) return;
function t(t, n) {
a.on(t, function(e) {
var i = function(i) {
var n = {
showTip: [],
hideTip: []
},
a = function(t) {
var e = n[t.type];
e ? e.push(t) : (t.dispatchAction = a, i.dispatchAction(t))
};
return {
dispatchAction: a,
pendings: n
}
}(o);
DM(TM(a).records, function(t) {
t && n(t, e, i.dispatchAction)
}),
function(t, e) {
var i, n = t.showTip.length,
a = t.hideTip.length;
n ? i = t.showTip[n - 1] : a && (i = t.hideTip[a - 1]);
i && (i.dispatchAction = null, e.dispatchAction(i))
}(i.pendings, o)
})
}
TM(a).initialized = !0, t("click", A(kM, "click")), t("mousemove", A(kM, "mousemove")), t("globalout", LM)
}(n, e), (TM(n).records[t] || (TM(n).records[t] = {})).handler = i
}
}
function LM(t, e, i) {
t.handler("leave", null, i)
}
function kM(t, e, i, n) {
e.handler(t, i, n)
}
function PM(t, e) {
if (!v.node) {
var i = e.getZr();
(TM(i).records || {})[t] && (TM(i).records[t] = null)
}
}
var NM = lf({
type: "axisPointer",
render: function(t, e, i) {
var n = e.getComponent("tooltip"),
a = t.get("triggerOn") || n && n.get("triggerOn") || "mousemove|click";
CM("axisPointer", i, function(t, e, i) {
"none" !== a && ("leave" === t || 0 <= a.indexOf(t)) && i({
type: "updateAxisPointer",
currTrigger: t,
x: e && e.offsetX,
y: e && e.offsetY
})
})
},
remove: function(t, e) {
PM(e.getZr(), "axisPointer"), NM.superApply(this._model, "remove", arguments)
},
dispose: function(t, e) {
PM("axisPointer", e), NM.superApply(this._model, "dispose", arguments)
}
}),
OM = La(),
RM = D,
zM = T;
function EM() {}
function BM(t, e, i, n) {
! function i(n, t) {
{
if (E(n) && E(t)) {
var a = !0;
return O(t, function(t, e) {
a = a && i(n[e], t)
}), !!a
}
return n === t
}
}(OM(i).lastProp, n) && (OM(i).lastProp = n, e ? js(i, n, t) : (i.stopAnimation(), i.attr(n)))
}
function VM(t, e) {
t[e.get("label.show") ? "show" : "hide"]()
}
function GM(t) {
return {
position: t.position.slice(),
rotation: t.rotation || 0
}
}
function FM(t, e, i) {
var n = e.get("z"),
a = e.get("zlevel");
t && t.traverse(function(t) {
"group" !== t.type && (null != n && (t.z = n), null != a && (t.zlevel = a), t.silent = i)
})
}
function WM(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 HM(t, e, i, n, a) {
var o = ZM(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 = Vl(r.get("padding") || 0),
l = r.getFont(),
u = un(o, l),
h = a.position,
c = u.width + s[1] + s[3],
d = u.height + s[0] + s[2],
f = a.align;
"right" === f && (h[0] -= c), "center" === f && (h[0] -= c / 2);
var p = a.verticalAlign;
"bottom" === p && (h[1] -= d), "middle" === p && (h[1] -= d / 2),
function(t, e, i, n) {
var a = n.getWidth(),
o = n.getHeight();
t[0] = Math.min(t[0] + e, a) - e, t[1] = Math.min(t[1] + i, o) - 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: o,
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 ZM(t, e, a, i, n) {
t = e.scale.parse(t);
var o = e.scale.getLabel(t, {
precision: n.precision
}),
r = n.formatter;
if (r) {
var s = {
value: Gp(e, t),
axisDimension: e.dim,
axisIndex: e.index,
seriesData: []
};
O(i, function(t) {
var e = a.getSeriesByIndex(t.seriesIndex),
i = t.dataIndexInside,
n = e && e.getDataParams(i);
n && s.seriesData.push(n)
}), z(r) ? o = r.replace("{value}", o) : R(r) && (o = r(s))
}
return o
}
function UM(t, e, i) {
var n = Qt();
return ae(n, n, i.rotation), ne(n, n, i.position), $s([t.dataToCoord(e), (i.labelOffset || 0) + (i.labelDirection || 1) * (i.labelMargin || 0)], n)
}
function XM(t, e, i, n, a, o) {
var r = Cm.innerTextLayout(i.rotation, 0, i.labelDirection);
i.labelMargin = a.get("label.margin"), HM(e, n, a, o, {
position: UM(n.axis, t, i),
align: r.textAlign,
verticalAlign: r.textVerticalAlign
})
}
function YM(t, e, i) {
return {
x1: t[i = i || 0],
y1: t[1 - i],
x2: e[i],
y2: e[1 - i]
}
}
function jM(t, e, i) {
return {
x: t[i = i || 0],
y: t[1 - i],
width: e[i],
height: e[1 - i]
}
}
function qM(t, e, i, n, a, o) {
return {
cx: t,
cy: e,
r0: i,
r: n,
startAngle: a,
endAngle: o,
clockwise: !0
}
}
Ga((EM.prototype = {
_group: null,
_lastGraphicKey: null,
_handle: null,
_dragging: !1,
_lastValue: null,
_lastStatus: null,
_payloadInfo: null,
animationThreshold: 15,
render: function(t, e, i, n) {
var a = e.get("value"),
o = e.get("status");
if (this._axisModel = t, this._axisPointerModel = e, this._api = i, n || this._lastValue !== a || this._lastStatus !== o) {
this._lastValue = a, this._lastStatus = o;
var r = this._group,
s = this._handle;
if (!o || "hide" === o) return r && r.hide(), void(s && s.hide());
r && r.show(), s && s.show();
var l = {};
this.makeElOption(l, a, 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 = A(BM, e, h);
this.updatePointerEl(r, l, c, e), this.updateLabelEl(r, l, c, e)
} else r = this._group = new Si, this.createPointerEl(r, l, t, e), this.createLabelEl(r, l, t, e), i.getZr().add(r);
FM(r, e, !0), this._renderHandle(a)
}
},
remove: function(t) {
this.clear(t)
},
dispose: function(t) {
this.clear(t)
},
determineAnimation: function(t, e) {
var i = e.get("animation"),
n = t.axis,
a = "category" === n.type,
o = e.get("snap");
if (!o && !a) return !1;
if ("auto" !== i && null != i) return !0 === i;
var r = this.animationThreshold;
if (a && n.getBandWidth() > r) return !0;
if (o) {
var s = Wm(t).seriesDataCount,
l = n.getExtent();
return Math.abs(l[0] - l[1]) / s > r
}
return !1
},
makeElOption: function(t, e, i, n, a) {},
createPointerEl: function(t, e, i, n) {
var a = e.pointer;
if (a) {
var o = OM(t).pointerEl = new ol[a.type](RM(e.pointer));
t.add(o)
}
},
createLabelEl: function(t, e, i, n) {
if (e.label) {
var a = OM(t).labelEl = new Hr(RM(e.label));
t.add(a), VM(a, n)
}
},
updatePointerEl: function(t, e, i) {
var n = OM(t).pointerEl;
n && e.pointer && (n.setStyle(e.pointer.style), i(n, {
shape: e.pointer.shape
}))
},
updateLabelEl: function(t, e, i, n) {
var a = OM(t).labelEl;
a && (a.setStyle(e.label.style), i(a, {
shape: e.label.shape,
position: e.label.position
}), VM(a, n))
},
_renderHandle: function(t) {
if (!this._dragging && this.updateHandleTransform) {
var e, i = this._axisPointerModel,
n = this._api.getZr(),
a = this._handle,
o = i.getModel("handle"),
r = i.get("status");
if (!o.get("show") || !r || "hide" === r) return a && n.remove(a), void(this._handle = null);
this._handle || (e = !0, a = this._handle = el(o.get("icon"), {
cursor: "move",
draggable: !0,
onmousemove: function(t) {
Ft(t.event)
},
onmousedown: zM(this._onHandleDragMove, this, 0, 0),
drift: zM(this._onHandleDragMove, this),
ondragend: zM(this._onHandleDragEnd, this)
}), n.add(a)), FM(a, i, !1);
a.setStyle(o.getItemStyle(null, ["color", "borderColor", "borderWidth", "opacity", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"]));
var s = o.get("size");
k(s) || (s = [s, s]), a.attr("scale", [s[0] / 2, s[1] / 2]), dc(this, "_doDispatchAxisPointer", o.get("throttle") || 0, "fixRate"), this._moveHandleToValue(t, e)
}
},
_moveHandleToValue: function(t, e) {
BM(this._axisPointerModel, !e && this._moveAnimation, this._handle, GM(this.getHandleTransform(t, this._axisModel, this._axisPointerModel)))
},
_onHandleDragMove: function(t, e) {
var i = this._handle;
if (i) {
this._dragging = !0;
var n = this.updateHandleTransform(GM(i), [t, e], this._axisModel, this._axisPointerModel);
this._payloadInfo = n, i.stopAnimation(), i.attr(GM(n)), OM(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 = EM);
var KM = EM.extend({
makeElOption: function(t, e, i, n, a) {
var o = i.axis,
r = o.grid,
s = n.get("type"),
l = $M(r, o).getOtherAxis(o).getGlobalExtent(),
u = o.toGlobalCoord(o.dataToCoord(e, !0));
if (s && "none" !== s) {
var h = WM(n),
c = JM[s](o, u, l);
c.style = h, t.graphicKey = c.type, t.pointer = c
}
XM(e, t, qm(r.model, i), i, n, a)
},
getHandleTransform: function(t, e, i) {
var n = qm(e.axis.grid.model, e, {
labelInside: !1
});
return n.labelMargin = i.get("handle.margin"), {
position: UM(e.axis, t, n),
rotation: n.rotation + (n.labelDirection < 0 ? Math.PI : 0)
}
},
updateHandleTransform: function(t, e, i, n) {
var a = i.axis,
o = a.grid,
r = a.getGlobalExtent(!0),
s = $M(o, a).getOtherAxis(a).getGlobalExtent(),
l = "x" === a.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 $M(t, e) {
var i = {};
return i[e.dim + "AxisIndex"] = e.index, t.getCartesian(i)
}
var JM = {
line: function(t, e, i) {
return {
type: "Line",
subPixelOptimize: !0,
shape: YM([e, i[0]], [e, i[1]], QM(t))
}
},
shadow: function(t, e, i) {
var n = Math.max(1, t.getBandWidth()),
a = i[1] - i[0];
return {
type: "Rect",
shape: jM([e - n / 2, i[0]], [n, a], QM(t))
}
}
};
function QM(t) {
return "x" === t.dim ? 0 : 1
}
Um.registerAxisPointerClass("CartesianAxisPointer", KM), Jd(function(t) {
if (t) {
t.axisPointer && 0 !== t.axisPointer.length || (t.axisPointer = {});
var e = t.axisPointer.link;
e && !k(e) && (t.axisPointer.link = [e])
}
}), Qd(cd.PROCESSOR.STATISTIC, function(t, e) {
t.getComponent("axisPointer").coordSysAxesInfo = Gm(t, e)
}), tf({
type: "updateAxisPointer",
event: "updateAxisPointer",
update: ":updateAxisPointer"
}, function(t, e, i) {
var n = t.currTrigger,
r = [t.x, t.y],
a = t,
o = t.dispatchAction || T(i.dispatchAction, i),
s = e.getComponent("axisPointer").coordSysAxesInfo;
if (s) {
AM(r) && (r = yM({
seriesIndex: a.seriesIndex,
dataIndex: a.dataIndex
}, e).point);
var l = AM(r),
u = a.axesInfo,
h = s.axesInfo,
c = "leave" === n || AM(r),
d = {},
f = {},
p = {
list: [],
map: {}
},
g = {
showPointer: _M(SM, f),
showTooltip: _M(MM, p)
};
xM(s.coordSysMap, function(t, e) {
var o = l || t.containPoint(r);
xM(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 && o && (!u || n)) {
var a = n && n.value;
null != a || l || (a = i.pointToData(r)), null != a && bM(t, a, g, !1, d)
}
})
});
var m = {};
return xM(h, function(a, t) {
var o = a.linkGroup;
o && !f[t] && xM(o.axesInfo, function(t, e) {
var i = f[e];
if (t !== a && i) {
var n = i.value;
o.mapper && (n = a.axis.scale.parse(o.mapper(n, IM(t), IM(a)))), m[a.key] = n
}
})
}), xM(m, function(t, e) {
bM(h[e], t, g, !0, d)
}),
function(a, t, e) {
var o = e.axesInfo = [];
xM(t, function(t, e) {
var i = t.axisPointerModel.option,
n = a[e];
n ? (t.useHandle || (i.status = "show"), i.value = n.value, i.seriesDataIndices = (n.payloadBatch || []).slice()) : t.useHandle || (i.status = "hide"), "show" === i.status && o.push({
axisDim: t.axis.dim,
axisIndex: t.axis.model.componentIndex,
value: i.value
})
})
}(f, h, d),
function(t, e, i, n) {
if (AM(e) || !t.list.length) return n({
type: "hideTip"
});
var a = ((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: a.dataIndexInside,
dataIndex: a.dataIndex,
seriesIndex: a.seriesIndex,
dataByCoordSys: t.list
})
}(p, r, t, o),
function(t, e, i) {
var n = i.getZr(),
a = "axisPointerLastHighlights",
o = wM(n)[a] || {},
r = wM(n)[a] = {};
xM(t, function(t, e) {
var i = t.axisPointerModel.option;
"show" === i.status && xM(i.seriesDataIndices, function(t) {
var e = t.seriesIndex + " | " + t.dataIndex;
r[e] = t
})
});
var s = [],
l = [];
O(o, function(t, e) {
r[e] || l.push(t)
}), O(r, function(t, e) {
o[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 tI = ["x", "y"],
eI = ["width", "height"],
iI = EM.extend({
makeElOption: function(t, e, i, n, a) {
var o = i.axis,
r = o.coordinateSystem,
s = oI(r, 1 - aI(o)),
l = r.dataToPoint(e)[0],
u = n.get("type");
if (u && "none" !== u) {
var h = WM(n),
c = nI[u](o, l, s);
c.style = h, t.graphicKey = c.type, t.pointer = c
}
XM(e, t, fM(i), i, n, a)
},
getHandleTransform: function(t, e, i) {
var n = fM(e, {
labelInside: !1
});
return n.labelMargin = i.get("handle.margin"), {
position: UM(e.axis, t, n),
rotation: n.rotation + (n.labelDirection < 0 ? Math.PI : 0)
}
},
updateHandleTransform: function(t, e, i, n) {
var a = i.axis,
o = a.coordinateSystem,
r = aI(a),
s = oI(o, 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 = oI(o, 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"
}
}
}
}),
nI = {
line: function(t, e, i) {
return {
type: "Line",
subPixelOptimize: !0,
shape: YM([e, i[0]], [e, i[1]], aI(t))
}
},
shadow: function(t, e, i) {
var n = t.getBandWidth(),
a = i[1] - i[0];
return {
type: "Rect",
shape: jM([e - n / 2, i[0]], [n, a], aI(t))
}
}
};
function aI(t) {
return t.isHorizontal() ? 0 : 1
}
function oI(t, e) {
var i = t.getRect();
return [i[tI[e]], i[tI[e]] + i[eI[e]]]
}
Um.registerAxisPointerClass("SingleAxisPointer", iI), lf({
type: "single"
});
var rI = Wh.extend({
type: "series.themeRiver",
dependencies: ["singleAxis"],
nameMap: null,
init: function(t) {
rI.superApply(this, "init", arguments), this.legendDataProvider = function() {
return this.getRawData()
}
},
fixData: function(t) {
var e = t.length,
i = za(t, function(t) {
return t[2]
}),
n = [];
i.buckets.each(function(t, e) {
n.push({
name: e,
dataList: t
})
});
for (var a = n.length, o = -1, r = -1, s = 0; s < a; ++s) {
var l = n[s].dataList.length;
o < l && (o = l, r = s)
}
for (var u = 0; u < a; ++u)
if (u !== r)
for (var h = n[u].name, c = 0; c < o; ++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]
}), a = this.fixData(n || []), o = [], r = this.nameMap = Q(), s = 0, l = 0; l < a.length; ++l) o.push(a[l][2]), r.get(a[l][2]) || (r.set(a[l][2], s), s++);
var u = Wf(a, {
coordDimensions: ["single"],
dimensionsDefine: [{
name: "time",
type: mf(i)
}, {
name: "value",
type: "float"
}, {
name: "name",
type: "ordinal"
}],
encodeDefine: {
single: 0,
value: 1,
itemName: 2
}
}),
h = new Tf(u, this);
return h.initData(a), h
},
getLayerSeries: function() {
for (var i = this.getData(), t = i.count(), e = [], n = 0; n < t; ++n) e[n] = n;
var a = i.mapDimension("single"),
o = za(e, function(t) {
return i.get("name", t)
}),
r = [];
return o.buckets.each(function(t, e) {
t.sort(function(t, e) {
return i.get(a, t) - i.get(a, e)
}), r.push({
name: e,
indices: t
})
}), r
},
getAxisTooltipData: function(t, e, i) {
k(t) || (t = t ? [t] : []);
for (var n, a = this.getData(), o = this.getLayerSeries(), r = [], s = o.length, l = 0; l < s; ++l) {
for (var u = Number.MAX_VALUE, h = -1, c = o[l].indices.length, d = 0; d < c; ++d) {
var f = a.get(t[0], o[l].indices[d]),
p = Math.abs(f - e);
p <= u && (n = f, u = p, h = o[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 = "-"), Wl(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
}
}
}
});
hf({
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,
a = i.boundaryGap;
function o(t) {
return t.name
}
M.attr("position", [0, n.y + a[0]]);
var r = new df(this._layersSeries || [], I, o, o),
A = {};
function s(t, e, i) {
var n = this._layers;
if ("remove" !== t) {
for (var a, o, 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]), a = 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 = A[e] = new Si;
o = new $g({
shape: {
points: s,
stackedOnPoints: l,
smooth: .4,
stackedOnSmooth: .4,
smoothConstraint: !1
},
z2: 0
}), r = new Dr({
style: {
x: g.x - y,
y: g.y0 + g.y / 2
}
}), x.add(o), x.add(r), M.add(x), o.setClipPath(function(t, e, i) {
var n = new Hr({
shape: {
x: t.x - 10,
y: t.y - 10,
width: 0,
height: t.height + 20
}
});
return qs(n, {
shape: {
width: t.width + 20,
height: t.height + 20
}
}, e, i), n
}(o.getBoundingRect(), b, function() {
o.removeClipPath()
}))
} else {
x = n[i];
o = x.childAt(0), r = x.childAt(1), M.add(x), A[e] = x, js(o, {
shape: {
points: s,
stackedOnPoints: l
}
}, b), js(r, {
style: {
x: g.x - y,
y: g.y0 + g.y / 2
}
}, b)
}
var _ = m.getModel("emphasis.itemStyle"),
w = m.getModel("itemStyle");
Gs(r.style, v, {
text: v.get("show") ? b.getFormattedLabel(u[h - 1], "normal") || S.getName(u[h - 1]) : null,
textVerticalAlign: "middle"
}), o.setStyle(L({
fill: a
}, w.getItemStyle(["color"]))), Os(o, _.getItemStyle())
} else M.remove(n[e])
}
r.add(T(s, this, "add")).update(T(s, this, "update")).remove(T(s, this, "remove")).execute(), this._layersSeries = I, this._layers = A
},
dispose: function() {}
});
function sI(i, t, e) {
if (i.count())
for (var n, a = t.coordinateSystem, o = t.getLayerSeries(), r = i.mapDimension("single"), s = i.mapDimension("value"), l = N(o, function(t) {
return N(t.indices, function(t) {
var e = a.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 = [], a = [], o = 0, r = {}, s = 0; s < i; ++s) {
for (var l = 0, u = 0; l < e; ++l) u += t[l][s][1];
o < u && (o = u), n.push(u)
}
for (var h = 0; h < i; ++h) a[h] = (o - n[h]) / 2;
for (var c = o = 0; c < i; ++c) {
var d = n[c] + a[c];
o < d && (o = d)
}
return r.y0 = a, r.max = o, r
}(l), h = u.y0, c = e / u.max, d = o.length, f = o[0].indices.length, p = 0; p < f; ++p) {
n = h[p] * c, i.setItemLayout(o[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(o[g].indices[p], {
layerIndex: g,
x: l[g][p][0],
y0: n,
y: l[g][p][1] * c
})
}
}
nf(function(t, e) {
t.eachSeriesByType("themeRiver", function(t) {
var e = t.getData(),
i = t.coordinateSystem,
n = {},
a = i.getRect();
n.rect = a;
var o = t.get("boundaryGap"),
r = i.getAxis();
(n.boundaryGap = o, "horizontal" === r.orient) ? (o[0] = xl(o[0], a.height), o[1] = xl(o[1], a.height), sI(e, t, a.height - o[0] - o[1])) : (o[0] = xl(o[0], a.width), o[1] = xl(o[1], a.width), sI(e, t, a.width - o[0] - o[1]));
e.setLayout("layoutInfo", n)
})
}), af(function(t) {
t.eachSeriesByType("themeRiver", function(a) {
var o = a.getData(),
r = a.getRawData(),
s = a.get("color"),
l = Q();
o.each(function(t) {
l.set(o.getRawIndex(t), t)
}), r.each(function(t) {
var e = r.getName(t),
i = s[(a.nameMap.get(e) - 1) % s.length];
r.setItemVisual(t, "color", i);
var n = l.get(t);
null != n && o.setItemVisual(n, "color", i)
})
})
}), Qd(Cv("themeRiver")), Wh.extend({
type: "series.sunburst",
_viewRoot: null,
getInitialData: function(t, e) {
var i = {
name: t.name,
children: t.data
};
! function i(t) {
var n = 0;
O(t.children, function(t) {
i(t);
var e = t.value;
k(e) && (e = e[0]), n += e
});
var e = t.value;
k(e) && (e = e[0]);
null != e && !isNaN(e) || (e = n);
e < 0 && (e = 0);
k(t.value) ? t.value[0] = e : t.value = e
}(i);
var n = t.levels || [],
a = {};
return a.levels = n, jy.createTree(i, this, a).data
},
optionUpdated: function() {
this.resetViewRoot()
},
getDataParams: function(t) {
var e = Wh.prototype.getDataParams.apply(this, arguments),
i = this.getData().tree.getNodeByDataIndex(t);
return e.treePathInfo = fx(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,
emphasis: {}
},
itemStyle: {
borderWidth: 1,
borderColor: "white",
borderType: "solid",
shadowBlur: 0,
shadowColor: "rgba(0, 0, 0, 0.2)",
shadowOffsetX: 0,
shadowOffsetY: 0,
opacity: 1,
emphasis: {},
highlight: {
opacity: 1
},
downplay: {
opacity: .9
}
},
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 lI = "none",
uI = "ancestor",
hI = "self",
cI = 2,
dI = 4;
function fI(t, e, i) {
Si.call(this);
var n = new Pr({
z2: cI
});
n.seriesIndex = e.seriesIndex;
var a = new Dr({
z2: dI,
silent: t.getModel("label").get("silent")
});
function o() {
a.ignore = a.hoverIgnore
}
function r() {
a.ignore = a.normalIgnore
}
this.add(n), this.add(a), this.updateData(!0, t, "normal", e, i), this.on("emphasis", o).on("normal", r).on("mouseover", o).on("mouseout", r)
}
var pI = fI.prototype;
pI.updateData = function(t, e, i, n, a) {
(this.node = e).piece = this, n = n || this._seriesModel, a = a || this._ecModel;
var o = this.childAt(0);
o.dataIndex = e.dataIndex;
var r = e.getModel(),
s = e.getLayout(),
l = L({}, s);
l.label = null;
var u = function(t, e, i) {
var n = t.getVisual("color"),
a = t.getVisual("visualMeta");
a && 0 !== a.length || (n = null);
var o = t.getModel("itemStyle").get("color"); {
if (o) return o;
if (n) return n;
if (0 === t.depth) return i.option.color[0];
var r = i.option.color.length;
o = i.option.color[function(t) {
var e = t;
for (; 1 < e.depth;) e = e.parentNode;
return _(t.getAncestors()[0].children, e)
}(t) % r]
}
return o
}(e, 0, a);
! 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 = C({
lineJoin: "bevel",
fill: h.fill || u
}, h), t ? (o.setShape(l), o.shape.r = s.r0, js(o, {
shape: {
r: s.r
}
}, n, e.dataIndex), o.useStyle(h)) : "object" == typeof h.fill && h.fill.type || "object" == typeof o.style.fill && o.style.fill.type ? (js(o, {
shape: l
}, n), o.useStyle(h)) : js(o, {
shape: l,
style: h
}, n), this._updateLabel(n, u, i);
var d = r.getShallow("cursor");
if (d && o.attr("cursor", d), t) {
var f = n.getShallow("highlightPolicy");
this._initEvents(o, e, n, f)
}
this._seriesModel = n || this._seriesModel, this._ecModel = a || this._ecModel
}, pI.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 !== lI && (i === hI ? t === e : i === uI ? t === e || t.isAncestorOf(e) : t === e || t.isDescendantOf(e))
}(t, i.node, e) ? e !== lI && t.piece.childAt(0).trigger("downplay") : t.piece.childAt(0).trigger("highlight"))
})
}, pI.onNormal = function() {
this.node.hostTree.root.eachNode(function(t) {
t.piece && t.piece.updateData(!1, t, "normal")
})
}, pI.onHighlight = function() {
this.updateData(!1, this.node, "highlight")
}, pI.onDownplay = function() {
this.updateData(!1, this.node, "downplay")
}, pI._updateLabel = function(t, e, i) {
var n = this.node.getModel(),
a = n.getModel("label"),
o = "normal" === i || "emphasis" === i ? a : 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 = o.get("minAngle");
null == u && (u = a.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);
Bs(c.style, c.hoverStyle || {}, a, r, {
defaultText: o.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 = o.get(t);
return null == e ? a.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)
}, pI._initEvents = function(t, e, i, n) {
t.off("mouseover").off("mouseout").off("emphasis").off("normal");
function a() {
r.onEmphasis(n)
}
function o() {
r.onNormal()
}
var r = this;
i.isAnimationEnabled() && t.on("mouseover", a).on("mouseout", o).on("emphasis", a).on("normal", o).on("downplay", function() {
r.onDownplay()
}).on("highlight", function() {
r.onHighlight()
})
}, w(fI, Si);
ec.extend({
type: "sunburst",
init: function() {},
render: function(a, o, t, e) {
var n = this;
this.seriesModel = a, this.api = t, this.ecModel = o;
var r = a.getData(),
s = r.tree.root,
i = a.getViewRoot(),
l = this.group,
u = a.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", a, o), 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 fI(t, a, o);
l.add(i), r.setItemGraphicEl(t.dataIndex, i)
}
}(null == t ? null : i[t], null == e ? null : n[e])
}
new df(n, i, t, t).add(e).update(e).remove(A(e, null)).execute()
}(h, c), function(t, e) {
if (0 < e.depth) {
n.virtualPiece ? n.virtualPiece.updateData(!1, t, "normal", a, o) : (n.virtualPiece = new fI(t, a, o), 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 = a.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 r = !1;
s.seriesModel.getViewRoot().eachNode(function(t) {
if (!r && t.piece && t.piece.childAt(0) === o.target) {
var e = t.getModel().get("nodeClick");
if ("rootToNode" === e) s._rootToNode(t);
else if ("link" === e) {
var i = t.getModel(),
n = i.get("link");
if (n) {
var a = i.get("target", !0) || "_blank";
window.open(n, a)
}
}
r = !0
}
})
}
var s = 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,
a = t[1] - i.cy,
o = Math.sqrt(n * n + a * a);
return o <= i.r && o >= i.r0
}
}
});
var gI = "sunburstRootToNode";
tf({
type: gI,
update: "updateView"
}, function(a, t) {
t.eachComponent({
mainType: "series",
subType: "sunburst",
query: a
}, function(t, e) {
var i = hx(a, [gI], t);
if (i) {
var n = t.getViewRoot();
n && (a.direction = dx(n, i.node) ? "rollUp" : "drillDown"), t.resetViewRoot(i.node)
}
})
});
var mI = "sunburstHighlight";
tf({
type: mI,
update: "updateView"
}, function(n, t) {
t.eachComponent({
mainType: "series",
subType: "sunburst",
query: n
}, function(t, e) {
var i = hx(n, [mI], t);
i && (n.highlight = i.node)
})
});
tf({
type: "sunburstUnhighlight",
update: "updateView"
}, function(i, t) {
t.eachComponent({
mainType: "series",
subType: "sunburst",
query: i
}, function(t, e) {
i.unhighlight = !0
})
});
var vI = Math.PI / 180;
function yI(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 xI(o, r) {
return r = r || [0, 0], N(["x", "y"], function(t, e) {
var i = this.getAxis(t),
n = r[e],
a = o[e] / 2;
return "category" === i.type ? i.getBandWidth() : Math.abs(i.dataToCoord(n - a) - i.dataToCoord(n + a))
}, this)
}
af(A(Mv, "sunburst")), nf(A(function(t, e, C, i) {
e.eachSeriesByType(t, function(t) {
var e = t.get("center"),
i = t.get("radius");
k(i) || (i = [0, i]), k(e) || (e = [e, e]);
var n = C.getWidth(),
a = C.getHeight(),
h = Math.min(n, a),
c = xl(e[0], n),
d = xl(e[1], a),
f = xl(i[0], h / 2),
o = xl(i[1], h / 2),
r = -t.get("startAngle") * vI,
p = t.get("minAngle") * vI,
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 = yI(n, i);
n.length && O(t.children, function(t) {
e(t, i)
})
}(s, l);
var u = 0;
O(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 = (o - 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(),
a = 0 === v && S ? y : n * y;
a < p && (a = p), i = e + M * a;
var o = t.depth - m - (x ? -1 : 1),
r = f + w * o,
s = f + w * (1 + o),
l = t.getModel();
null != l.get("r0") && (r = xl(l.get("r0"), h / 2)), null != l.get("r") && (s = xl(l.get("r"), h / 2)), t.setLayout({
angle: a,
startAngle: e,
endAngle: i,
clockwise: b,
cx: c,
cy: d,
r0: r,
r: s
})
}
if (t.children && t.children.length) {
var u = 0;
O(t.children, function(t) {
u += I(t, e + u)
})
}
return i - e
}
};
if (x) {
var A = f,
T = f + w,
D = 2 * Math.PI;
g.setLayout({
angle: D,
startAngle: r,
endAngle: r + D,
clockwise: b,
cx: c,
cy: d,
r0: A,
r: T
})
}
I(s, r)
})
}, "sunburst")), Qd(A(Cv, "sunburst"));
function _I(o, r) {
return r = r || [0, 0], N([0, 1], function(t) {
var e = r[t],
i = o[t] / 2,
n = [],
a = [];
return n[t] = e - i, a[t] = e + i, n[1 - t] = a[1 - t] = r[1 - t], Math.abs(this.dataToPoint(n)[t] - this.dataToPoint(a)[t])
}, this)
}
function wI(t, e) {
var i = this.getAxis(),
n = e instanceof Array ? e[0] : e,
a = (t instanceof Array ? t[0] : t) / 2;
return "category" === i.type ? i.getBandWidth() : Math.abs(i.dataToCoord(n - a) - i.dataToCoord(n + a))
}
function bI(s, l) {
return N(["Radius", "Angle"], function(t, e) {
var i = this["get" + t + "Axis"](),
n = l[e],
a = s[e] / 2,
o = "dataTo" + t,
r = "category" === i.type ? i.getBandWidth() : Math.abs(i[o](n - a) - i[o](n + a));
return "Angle" === t && (r = r * Math.PI / 180), r
}, this)
}
var SI = rs,
MI = ["itemStyle"],
II = ["emphasis", "itemStyle"],
AI = ["label"],
TI = ["emphasis", "label"],
DI = "e\0\0",
CI = {
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: T(xI, 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: T(_I, 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: T(wI, e)
}
}
},
polar: function(a) {
var o = a.getRadiusAxis(),
r = a.getAngleAxis(),
t = o.getExtent();
return t[0] > t[1] && t.reverse(), {
coordSys: {
type: "polar",
cx: a.cx,
cy: a.cy,
r: t[1],
r0: t[0]
},
api: {
coord: T(function(t) {
var e = o.dataToRadius(t[0]),
i = r.dataToAngle(t[1]),
n = a.coordToPoint([e, i]);
return n.push(e, i * Math.PI / 180), n
}),
size: T(bI, a)
}
}
},
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 LI(t, e, i, n, a) {
null == i[t] || a || (e[t] = i[t], i[t] = n[t])
}
function kI(o, r, e, t) {
var i = o.get("renderItem"),
n = o.coordinateSystem,
a = {};
n && (a = n.prepareCustoms ? n.prepareCustoms() : CI[n.type](n));
var s, l, u, h, c, d = C({
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(MI).getItemStyle();
null != c && (i.fill = c);
var n = r.getItemVisual(e, "opacity");
null != n && (i.opacity = n);
var a = t ? zI(t, u) : u;
return Gs(i, a, null, {
autoColor: c,
isRectText: !0
}), i.text = a.getShallow("show") ? H(o.getFormattedLabel(e, "normal"), bg(r, e)) : null, t && EI(i, t), i
},
styleEmphasis: function(t, e) {
null == e && (e = s), g(e);
var i = l.getModel(II).getItemStyle(),
n = t ? zI(t, h) : h;
return Gs(i, n, null, {
isRectText: !0
}, !0), i.text = n.getShallow("show") ? Z(o.getFormattedLabel(e, "emphasis"), o.getFormattedLabel(e, "normal"), bg(r, e)) : null, t && EI(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(), a = 0; a < t.count; a++) e.push(C({
bandWidth: n,
axisKey: "axis0",
stackId: rp + a
}, t));
var o = dp(e),
r = [];
for (a = 0; a < t.count; a++) {
var s = o.axis0[rp + a];
s.offsetCenter = s.offset + s.width / 2, r.push(s)
}
return r
}
}(C({
axis: n.getBaseAxis()
}, t))
}
},
currentSeriesIndices: function() {
return e.getCurrentSeriesIndices()
},
font: function(t) {
return Xs(t, e)
}
}, a.api || {}),
f = {
context: {},
seriesId: o.id,
seriesName: o.name,
seriesIndex: o.seriesIndex,
coordSys: a.coordSys,
dataInsideLength: r.count(),
encode: function(a) {
var o = {};
return O(a.dimensions, function(t, e) {
var i = a.getDimensionInfo(t);
if (!i.isExtraCoord) {
var n = i.coordDim;
(o[n] = o[n] || [])[i.coordDimIndex] = e
}
}), o
}(o.getData())
},
p = !0;
return function(t, e) {
return s = t, p = !0, i && i(C({
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(AI), h = l.getModel(TI), c = r.getItemVisual(t, "color"), p = !1)
}
}
function PI(t, e, i, n, a, o) {
return (t = NI(t, e, i, n, a, o, !0)) && o.setItemGraphicEl(e, t), t
}
function NI(t, e, i, n, a, o, 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) && VI(u) !== t.__customPathData || "image" === l && GI(h, "image") && h.image !== t.__customImagePath || "text" === l && GI(u, "text") && h.text !== t.__customText) && (a.remove(t), t = null), !s) {
var c = !t;
return function(e, t, i, n, a, o, r) {
var s = {},
l = i.style || {};
if (i.shape && (s.shape = D(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 = {};
O(["x", "y", "width", "height"], function(t) {
LI(t, u, l, e.style, o)
})
}
if ("text" === e.type && i.style) {
u = s.style = {};
O(["x", "y"], function(t) {
LI(t, u, l, e.style, o)
}), !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), o)) {
e.style.opacity = 0;
var h = l.opacity;
null == h && (h = 1), qs(e, {
style: {
opacity: h
}
}, n, t)
}
o ? e.attr(s) : js(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;
Ds(e, c), r && Rs(e, !1 !== c)
}(t = t || function(t) {
var e, i = t.type;
if ("path" === i) {
var n = t.shape,
a = null != n.width && null != n.height ? {
x: n.x || 0,
y: n.y || 0,
width: n.width,
height: n.height
} : null,
o = VI(n);
(e = gs(o, null, a, n.layout || "center")).__customPathData = o
} else if ("image" === i)(e = new Yn({})).__customImagePath = t.style.image;
else if ("text" === i)(e = new Dr({})).__customText = t.style.text;
else if ("group" === i) e = new Si;
else {
if ("compoundPath" === i) throw new Error('"compoundPath" is not supported yet.');
e = new(ps(i))
}
return e.__customGraphicType = i, e.name = t.name, e
}(i), e, i, n, 0, c, r), "group" === l && function(t, e, i, n, a) {
var o = i.children,
r = o ? o.length : 0,
s = i.$mergeChildren,
l = "byName" === s || i.diffChildrenByName,
u = !1 === s;
if (!r && !l && !u) return;
if (l) return function(t) {
new df(t.oldChildren, t.newChildren, OI, OI, t).add(RI).update(RI).remove(BI).execute()
}({
oldChildren: t.children() || [],
newChildren: o || [],
dataIndex: e,
animatableModel: n,
group: t,
data: a
});
u && t.removeAll();
for (var h = 0; h < r; h++) o[h] && NI(t.childAt(h), e, o[h], n, t, a)
}(t, e, i, n, o), a.add(t), t
}
}
function OI(t, e) {
var i = t && t.name;
return null != i ? i : DI + e
}
function RI(t, e) {
var i = this.context,
n = null != t ? i.newChildren[t] : null;
NI(null != e ? i.oldChildren[e] : null, i.dataIndex, n, i.animatableModel, i.group, i.data)
}
function zI(i, t) {
var n = new dl({}, t);
return O(SI, function(t, e) {
i.hasOwnProperty(t) && (n.option[e] = i[t])
}), n
}
function EI(t, e) {
for (var i in e) !e.hasOwnProperty(i) && SI.hasOwnProperty(i) || (t[i] = e[i])
}
function BI(t) {
var e = this.context,
i = e.oldChildren[t];
i && e.group.remove(i)
}
function VI(t) {
return t && (t.pathData || t.d)
}
function GI(t, e) {
return t && t.hasOwnProperty(e)
}
function FI(t) {
return t.get("stack") || "__ec_stack_" + t.seriesIndex
}
function WI(t, e) {
return e.dim + t.model.componentIndex
}
function HI(t, e) {
vg.call(this, "radius", t, e), this.type = "category"
}
Wh.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 Xf(this.getSource(), this)
},
getDataParams: function(t, e, i) {
var n = Wh.prototype.getDataParams.apply(this, arguments);
return i && (n.info = i.info), n
}
}), ec.extend({
type: "custom",
_data: null,
render: function(i, t, e, n) {
var a = this._data,
o = i.getData(),
r = this.group,
s = kI(i, o, t, e);
o.diff(a).add(function(t) {
PI(null, t, s(t, n), i, r, o)
}).update(function(t, e) {
PI(a.getItemGraphicEl(e), t, s(t, n), i, r, o)
}).remove(function(t) {
var e = a.getItemGraphicEl(t);
e && r.remove(e)
}).execute();
var l = i.get("clip", !0) ? tm(i.coordinateSystem, !1, i) : null;
l ? r.setClipPath(l) : r.removeClipPath(), this._data = o
},
incrementalPrepareRender: function(t, e, i) {
this.group.removeAll(), this._data = null
},
incrementalRender: function(t, e, i, n, a) {
var o = e.getData(),
r = kI(e, o, i, n);
function s(t) {
t.isGroup || (t.incremental = !0, t.useHoverLayer = !0)
}
for (var l = t.start; l < t.end; l++) {
PI(null, l, r(l, a), e, this.group, o).traverse(s)
}
},
dispose: et,
filterForExposedEvent: function(t, e, i, n) {
var a = e.element;
if (null == a || i.name === a) return !0;
for (;
(i = i.parent) && i !== this.group;)
if (i.name === a) return !0;
return !1
}
}), HI.prototype = {
constructor: HI,
pointToData: function(t, e) {
return this.polar.pointToData(t, e)["radius" === this.dim ? 0 : 1]
},
dataToRadius: vg.prototype.dataToCoord,
radiusToData: vg.prototype.coordToData
}, w(HI, vg);
var ZI = La();
function UI(t, e) {
e = e || [0, 360], vg.call(this, "angle", t, e), this.type = "category"
}
UI.prototype = {
constructor: UI,
pointToData: function(t, e) {
return this.polar.pointToData(t, e)["radius" === this.dim ? 0 : 1]
},
dataToAngle: vg.prototype.dataToCoord,
angleToData: vg.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 a = i[0],
o = this.dataToCoord(a + 1) - this.dataToCoord(a),
r = Math.abs(o),
s = un(a, 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 = ZI(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(UI, vg);
function XI(t) {
this.name = t || "", this.cx = 0, this.cy = 0, this._radiusAxis = new HI, this._angleAxis = new UI, this._radiusAxis.polar = this._angleAxis.polar = this
}
XI.prototype = {
type: "polar",
axisPointerEnabled: !0,
constructor: XI,
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(),
a = n.getExtent(),
o = Math.min(a[0], a[1]),
r = Math.max(a[0], a[1]);
n.inverse ? o = r - 360 : r = o + 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 < o ? 1 : -1; l < o || 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,
a = i * i + n * n,
o = this.r,
r = this.r0;
return a <= o * o && r * r <= a
}
}
}
};
var YI = fu.extend({
type: "polarAxis",
axis: null,
getCoordSysModel: function() {
return this.ecModel.queryComponents({
mainType: "polar",
index: this.option.polarIndex,
id: this.option.polarId
})[0]
}
});
m(YI.prototype, Hp);
var jI = {
splitNumber: 5
};
function qI(t, e) {
return e.type || (e.data ? "category" : "value")
}
function KI(t, e) {
var i = this,
n = i.getAngleAxis(),
a = i.getRadiusAxis();
if (n.scale.setExtent(1 / 0, -1 / 0), a.scale.setExtent(1 / 0, -1 / 0), t.eachSeries(function(t) {
if (t.coordinateSystem === i) {
var e = t.getData();
O(e.mapDimension("radius", !0), function(t) {
a.scale.unionExtentFromData(e, Uf(e, t))
}), O(e.mapDimension("angle", !0), function(t) {
n.scale.unionExtentFromData(e, Uf(e, t))
})
}
}), Ep(n.scale, n.model), Ep(a.scale, a.model), "category" === n.type && !n.onBand) {
var o = n.getExtent(),
r = 360 / n.scale.count();
n.inverse ? o[1] += r : o[1] -= r, n.setExtent(o[0], o[1])
}
}
function $I(t, e) {
if (t.type = e.get("type"), t.scale = Bp(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
}
mm("angle", YI, qI, {
startAngle: 90,
clockwise: !0,
splitNumber: 12,
axisLabel: {
rotate: !1
}
}), mm("radius", YI, qI, jI), sf({
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%"
}
}), Hu.register("polar", {
dimensions: XI.prototype.dimensions,
create: function(i, s) {
var l = [];
return i.eachComponent("polar", function(t, e) {
var i = new XI(e);
i.update = KI;
var n = i.getRadiusAxis(),
a = i.getAngleAxis(),
o = t.findAxisModel("radiusAxis"),
r = t.findAxisModel("angleAxis");
$I(n, o), $I(a, r),
function(t, e, i) {
var n = e.get("center"),
a = i.getWidth(),
o = i.getHeight();
t.cx = xl(n[0], a), t.cy = xl(n[1], o);
var r = t.getRadiusAxis(),
s = Math.min(a, o) / 2,
l = xl(e.get("radius"), s);
r.inverse ? r.setExtent(l, 0) : r.setExtent(0, l)
}(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 JI = ["axisLine", "axisLabel", "axisTick", "splitLine", "splitArea"];
function QI(t, e, i) {
e[1] > e[0] && (e = e.slice().reverse());
var n = t.coordToPoint([e[0], i]),
a = t.coordToPoint([e[1], i]);
return {
x1: n[0],
y1: n[1],
x2: a[0],
y2: a[1]
}
}
function tA(t) {
return t.getRadiusAxis().inverse ? 0 : 1
}
function eA(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()
}
Um.extend({
type: "angleAxis",
axisPointerClass: "PolarAxisPointer",
render: function(e, t) {
if (this.group.removeAll(), e.get("show")) {
var i = e.axis,
n = i.polar,
a = n.getRadiusAxis().getExtent(),
o = i.getTicksCoords(),
r = N(i.getViewLabels(), function(t) {
return (t = D(t)).coord = i.dataToCoord(t.tickValue), t
});
eA(r), eA(o), O(JI, function(t) {
!e.get(t + ".show") || i.scale.isBlank() && "axisLine" !== t || this["_" + t](e, n, o, a, r)
}, this)
}
},
_axisLine: function(t, e, i, n) {
var a = t.getModel("axisLine.lineStyle"),
o = new Lr({
shape: {
cx: e.cx,
cy: e.cy,
r: n[tA(e)]
},
style: a.getLineStyle(),
z2: 1,
silent: !0
});
o.style.fill = null, this.group.add(o)
},
_axisTick: function(t, e, i, n) {
var a = t.getModel("axisTick"),
o = (a.get("inside") ? -1 : 1) * a.get("length"),
r = n[tA(e)],
s = N(i, function(t) {
return new Ur({
shape: QI(e, [r, r + o], t.coord)
})
});
this.group.add(ys(s, {
style: C(a.getModel("lineStyle").getLineStyle(), {
stroke: t.get("axisLine.lineStyle.color")
})
}))
},
_axisLabel: function(c, d, t, f, e) {
var p = c.getCategories(!0),
g = c.getModel("axisLabel"),
m = g.get("margin"),
v = c.get("triggerEvent");
O(e, function(t, e) {
var i = g,
n = t.tickValue,
a = f[tA(d)],
o = d.coordToPoint([a + m, t.coord]),
r = d.cx,
s = d.cy,
l = Math.abs(o[0] - r) / a < .3 ? "center" : o[0] > r ? "left" : "right",
u = Math.abs(o[1] - s) / a < .3 ? "middle" : o[1] > s ? "top" : "bottom";
p && p[n] && p[n].textStyle && (i = new dl(p[n].textStyle, g, g.ecModel));
var h = new Dr({
silent: Cm.isLabelSilent(c)
});
this.group.add(h), Gs(h.style, i, {
x: o[0],
y: o[1],
textFill: i.getTextColor() || c.get("axisLine.lineStyle.color"),
text: t.formattedLabel,
textAlign: l,
textVerticalAlign: u
}), v && (h.eventData = Cm.makeAxisEventDataBase(c), h.eventData.targetType = "axisLabel", h.eventData.value = t.rawLabel)
}, this)
},
_splitLine: function(t, e, i, n) {
var a = t.getModel("splitLine").getModel("lineStyle"),
o = a.get("color"),
r = 0;
o = o instanceof Array ? o : [o];
for (var s = [], l = 0; l < i.length; l++) {
var u = r++ % o.length;
s[u] = s[u] || [], s[u].push(new Ur({
shape: QI(e, n, i[l].coord)
}))
}
for (l = 0; l < s.length; l++) this.group.add(ys(s[l], {
style: C({
stroke: o[l % o.length]
}, a.getLineStyle()),
silent: !0,
z: t.get("z")
}))
},
_splitArea: function(t, e, i, n) {
if (i.length) {
var a = t.getModel("splitArea").getModel("areaStyle"),
o = a.get("color"),
r = 0;
o = o instanceof Array ? o : [o];
for (var s = [], l = Math.PI / 180, u = -i[0].coord * l, h = Math.min(n[0], n[1]), c = Math.max(n[0], n[1]), d = t.get("clockwise"), f = 1; f < i.length; f++) {
var p = r++ % o.length;
s[p] = s[p] || [], s[p].push(new Pr({
shape: {
cx: e.cx,
cy: e.cy,
r0: h,
r: c,
startAngle: u,
endAngle: -i[f].coord * l,
clockwise: d
},
silent: !0
})), u = -i[f].coord * l
}
for (f = 0; f < s.length; f++) this.group.add(ys(s[f], {
style: C({
fill: o[f % o.length]
}, a.getAreaStyle()),
silent: !0
}))
}
}
});
var iA = ["axisLine", "axisTickLabel", "axisName"],
nA = ["splitLine", "splitArea"];
Um.extend({
type: "radiusAxis",
axisPointerClass: "PolarAxisPointer",
render: function(e, t) {
if (this.group.removeAll(), e.get("show")) {
var i = e.axis,
n = i.polar,
a = n.getAngleAxis(),
o = i.getTicksCoords(),
r = a.getExtent()[0],
s = i.getExtent(),
l = 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, r),
u = new Cm(e, l);
O(iA, u.add, u), this.group.add(u.getGroup()), O(nA, function(t) {
e.get(t + ".show") && !i.scale.isBlank() && this["_" + t](e, n, r, s, o)
}, this)
}
},
_splitLine: function(t, e, i, n, a) {
var o = t.getModel("splitLine").getModel("lineStyle"),
r = o.get("color"),
s = 0;
r = r instanceof Array ? r : [r];
for (var l = [], u = 0; u < a.length; u++) {
var h = s++ % r.length;
l[h] = l[h] || [], l[h].push(new Lr({
shape: {
cx: e.cx,
cy: e.cy,
r: a[u].coord
},
silent: !0
}))
}
for (u = 0; u < l.length; u++) this.group.add(ys(l[u], {
style: C({
stroke: r[u % r.length],
fill: null
}, o.getLineStyle()),
silent: !0
}))
},
_splitArea: function(t, e, i, n, a) {
if (a.length) {
var o = t.getModel("splitArea").getModel("areaStyle"),
r = o.get("color"),
s = 0;
r = r instanceof Array ? r : [r];
for (var l = [], u = a[0].coord, h = 1; h < a.length; h++) {
var c = s++ % r.length;
l[c] = l[c] || [], l[c].push(new Pr({
shape: {
cx: e.cx,
cy: e.cy,
r0: u,
r: a[h].coord,
startAngle: 0,
endAngle: 2 * Math.PI
},
silent: !0
})), u = a[h].coord
}
for (h = 0; h < l.length; h++) this.group.add(ys(l[h], {
style: C({
fill: r[h % r.length]
}, o.getAreaStyle()),
silent: !0
}))
}
}
});
var aA = EM.extend({
makeElOption: function(t, e, i, n, a) {
var o = i.axis;
"angle" === o.dim && (this.animationThreshold = Math.PI / 18);
var r, s = o.polar,
l = s.getOtherAxis(o).getExtent();
r = o["dataTo" + Kl(o.dim)](e);
var u = n.get("type");
if (u && "none" !== u) {
var h = WM(n),
c = oA[u](o, s, r, l, h);
c.style = h, t.graphicKey = c.type, t.pointer = c
}
var d = n.get("label.margin");
HM(t, i, n, a, function(t, e, i, n, a) {
var o = e.axis,
r = o.dataToCoord(t),
s = n.getAngleAxis().getExtent()[0];
s = s / 180 * Math.PI;
var l, u, h, c = n.getRadiusAxis().getExtent();
if ("radius" === o.dim) {
var d = Qt();
ae(d, d, s), ne(d, d, [n.cx, n.cy]), l = $s([r, -a], d);
var f = e.getModel("axisLabel").get("rotate") || 0,
p = Cm.innerTextLayout(s, f * Math.PI / 180, -1);
u = p.textAlign, h = p.textVerticalAlign
} else {
var g = c[1];
l = n.coordToPoint([g + a, 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 oA = {
line: function(t, e, i, n, a) {
return "angle" === t.dim ? {
type: "Line",
shape: YM(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, a) {
var o = Math.max(1, t.getBandWidth()),
r = Math.PI / 180;
return "angle" === t.dim ? {
type: "Sector",
shape: qM(e.cx, e.cy, n[0], n[1], (-i - o / 2) * r, (o / 2 - i) * r)
} : {
type: "Sector",
shape: qM(e.cx, e.cy, i - o / 2, i + o / 2, 0, 2 * Math.PI)
}
}
};
function rA(n, t) {
t.update = "updateView", tf(t, function(t, e) {
var i = {};
return e.eachComponent({
mainType: "geo",
query: t
}, function(e) {
e[n](t.name), O(e.coordinateSystem.regions, function(t) {
i[t.name] = e.isSelected(t.name) || !1
})
}), {
selected: i,
name: t.name
}
})
}
Um.registerAxisPointerClass("PolarAxisPointer", aA), nf(A(function(t, e, i) {
var P = {},
N = function(t) {
var g = {};
O(t, function(t, e) {
var i = t.getData(),
n = t.coordinateSystem,
a = n.getBaseAxis(),
o = WI(n, a),
r = a.getExtent(),
s = "category" === a.type ? a.getBandWidth() : Math.abs(r[1] - r[0]) / i.count(),
l = g[o] || {
bandWidth: s,
remainedWidth: s,
autoWidthCount: 0,
categoryGap: "20%",
gap: "30%",
stacks: {}
},
u = l.stacks;
g[o] = l;
var h = FI(t);
u[h] || l.autoWidthCount++, u[h] = u[h] || {
width: 0,
maxWidth: 0
};
var c = xl(t.get("barWidth"), s),
d = xl(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 O(g, function(t, i) {
d[i] = {};
var e = t.stacks,
n = t.bandWidth,
a = xl(t.categoryGap, n),
o = xl(t.gap, 1),
r = t.remainedWidth,
s = t.autoWidthCount,
l = (r - a) / (s + (s - 1) * o);
l = Math.max(l, 0), O(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 - a) / (s + (s - 1) * o), l = Math.max(l, 0);
var u, h = 0;
O(e, function(t, e) {
t.width || (t.width = l), h += (u = t).width * (1 + o)
}), u && (h -= u.width * o);
var c = -h / 2;
O(e, function(t, e) {
d[i][e] = d[i][e] || {
offset: c,
width: t.width
}, c += t.width * (1 + o)
})
}), 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(),
a = WI(i, n),
o = FI(t),
r = N[a][o],
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;
P[o] = P[o] || [];
for (var p = e.mapDimension(u.dim), g = e.mapDimension(n.dim), m = Zf(e, p), v = u.getExtent()[0], y = 0, x = e.count(); y < x; y++) {
var _ = e.get(p, y),
w = e.get(g, y);
if (!isNaN(_)) {
var b, S, M, I, A = 0 <= _ ? "p" : "n",
T = v;
if (m && (P[o][w] || (P[o][w] = {
p: v,
n: v
}), T = P[o][w][A]), "radius" === u.dim) {
var D = u.dataToRadius(_) - v,
C = n.dataToAngle(w);
Math.abs(D) < d && (D = (D < 0 ? -1 : 1) * d), S = (b = T) + D, I = (M = C - s) - l, m && (P[o][w][A] = S)
} else {
var L = u.dataToAngle(_, !0) - v,
k = n.dataToRadius(w);
Math.abs(L) < f && (L = (L < 0 ? -1 : 1) * f), S = (b = k + s) + l, I = (M = T) + L, m && (P[o][w][A] = I)
}
e.setItemLayout(y, {
cx: h,
cy: c,
r0: b,
r: S,
startAngle: -M * Math.PI / 180,
endAngle: -I * Math.PI / 180
})
}
}
}
}, this)
}, "bar")), lf({
type: "polar"
}), b(fu.extend({
type: "geo",
coordinateSystem: null,
layoutMode: "box",
init: function(t) {
fu.prototype.init.apply(this, arguments), ba(t, "label", ["show"])
},
optionUpdated: function() {
var t = this.option,
i = this;
t.regions = zy.getFilledRegions(t.regions, t.map, t.nameMap), this._optionModelMap = S(t.regions || [], function(t, e) {
return e.name && t.set(e.name, new dl(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 dl(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
}
}), vv), lf({
type: "geo",
init: function(t, e) {
var i = new by(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 a = this._mapDraw;
t.get("show") ? a.draw(t, e, i, this, n) : this._mapDraw.group.removeAll(), this.group.silent = t.get("silent")
}
},
dispose: function() {
this._mapDraw && this._mapDraw.remove()
}
}), rA("toggleSelected", {
type: "geoToggleSelect",
event: "geoselectchanged"
}), rA("select", {
type: "geoSelect",
event: "geoselected"
}), rA("unSelect", {
type: "geoUnSelect",
event: "geounselected"
});
function sA(t, e, i) {
this._model = t
}
function lA(t, e, i, n) {
var a = i.calendarModel,
o = i.seriesModel,
r = a ? a.coordinateSystem : o ? o.coordinateSystem : null;
return r === this ? r[t](n) : null
}
sA.prototype = {
constructor: sA,
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 = Ll(t)).getFullYear(),
i = t.getMonth() + 1;
i = i < 10 ? "0" + i : i;
var n = t.getDate();
n = n < 10 ? "0" + n : n;
var a = t.getDay();
return {
y: e,
m: i,
d: n,
day: a = Math.abs((a + 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"],
a = this._model.get("cellSize").slice(),
o = this._model.getBoxLayoutParams(),
r = "horizontal" === this._orient ? [i, 7] : [7, i];
O([0, 1], function(t) {
u(a, t) && (o[n[t]] = a[t] * r[t])
});
var s = {
width: e.getWidth(),
height: e.getHeight()
},
l = this._rect = au(o, s);
function u(t, e) {
return null != t[e] && "auto" !== t[e]
}
O([0, 1], function(t) {
u(a, t) || (a[t] = l[n[t]] / r[t])
}), this._sw = a[0], this._sh = a[1]
},
dataToPoint: function(t, e) {
k(t) && (t = t[0]), null == e && (e = !0);
var i = this.getDateInfo(t),
n = this._rangeInfo,
a = i.formatedDate;
if (e && !(i.time >= n.start.time && i.time < n.end.time + 864e5)) return [NaN, NaN];
var o = i.day,
r = this._getRangeInfo([n.start.time, a]).nthWeek;
return "vertical" === this._orient ? [this._rect.x + o * 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 + o * 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: A(lA, "dataToPoint"),
convertFromPixel: A(lA, "pointToData"),
_initRangeOption: function() {
var t = this._model.get("range"),
e = t;
if (k(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 a = this.getNextNDay(n, -1);
t = [i.formatedDate, a.formatedDate]
}
/^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(e) && (t = [e, e]);
var o = this._getRangeInfo(t);
return o.start.time > o.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),
a = n.getDate(),
o = t[1].date.getDate();
if (n.setDate(a + i - 1), n.getDate() !== o)
for (var r = 0 < n.getTime() - t[1].time ? 1 : -1; n.getDate() !== o && 0 < (n.getTime() - t[1].time) * r;) i -= r, n.setDate(a + i - 1);
var s = Math.floor((i + t[0].day + 6) / 7),
l = e ? 1 - s : s - 1;
return e && t.reverse(), {
range: [t[0].formatedDate, t[1].formatedDate],
start: t[0],
end: t[1],
allDay: i,
weeks: s,
nthWeek: l,
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 a = 7 * (t - 1) - n.fweek + e,
o = new Date(n.start.time);
return o.setDate(n.start.d + a), this.getDateInfo(o)
}
}, sA.dimensions = sA.prototype.dimensions, sA.getDimensionsInfo = sA.prototype.getDimensionsInfo, sA.create = function(i, n) {
var a = [];
return i.eachComponent("calendar", function(t) {
var e = new sA(t, i, n);
a.push(e), t.coordinateSystem = e
}), i.eachSeries(function(t) {
"calendar" === t.get("coordinateSystem") && (t.coordinateSystem = a[t.get("calendarIndex") || 0])
}), a
}, Hu.register("calendar", sA);
var uA = fu.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 a = su(t);
uA.superApply(this, "init", arguments), hA(t, a)
},
mergeOption: function(t, e) {
uA.superApply(this, "mergeOption", arguments), hA(this.option, t)
}
});
function hA(t, e) {
var i = t.cellSize;
k(i) ? 1 === i.length && (i[1] = i[0]) : i = t.cellSize = [i, i];
var n = N([0, 1], function(t) {
return function(t, e) {
return null != t[eu[e][0]] || null != t[eu[e][1]] && null != t[eu[e][2]]
}(e, t) && (i[t] = "auto"), null != i[t] && "auto" !== i[t]
});
ru(t, e, {
type: "box",
ignoreSize: n
})
}
var cA = {
EN: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
CN: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
},
dA = {
EN: ["S", "M", "T", "W", "T", "F", "S"],
CN: ["日", "一", "二", "三", "四", "五", "六"]
};
lf({
type: "calendar",
_tlpoints: null,
_blpoints: null,
_firstDayOfMonth: null,
_firstDayPoints: null,
render: function(t, e, i) {
var n = this.group;
n.removeAll();
var a = t.coordinateSystem,
o = a.getRangeInfo(),
r = a.getOrient();
this._renderDayRect(t, o, n), this._renderLines(t, o, r, n), this._renderYearText(t, o, r, n), this._renderMonthText(t, r, n), this._renderWeekText(t, o, r, n)
},
_renderDayRect: function(t, e, i) {
for (var n = t.coordinateSystem, a = t.getModel("itemStyle").getItemStyle(), o = 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 Hr({
shape: {
x: l[0],
y: l[1],
width: o,
height: r
},
cursor: "default",
style: a
});
i.add(u)
}
},
_renderLines: function(i, t, n, a) {
var o = 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) {
o._firstDayOfMonth.push(r.getDateInfo(t)), o._firstDayPoints.push(r.dataToRect([t], !1).tl);
var e = o._getLinePointsOfOneWeek(i, t, n);
o._tlpoints.push(e[0]), o._blpoints.push(e[e.length - 1]), l && o._drawSplitline(e, s, a)
}
d(r.getNextNDay(t.end.time, 1).formatedDate), l && this._drawSplitline(o._getEdgesPoints(o._tlpoints, e, n), s, a), l && this._drawSplitline(o._getEdgesPoints(o._blpoints, e, n), s, a)
},
_getEdgesPoints: function(t, e, i) {
var n = [t[0].slice(), t[t.length - 1].slice()],
a = "horizontal" === i ? 0 : 1;
return n[0][a] = n[0][a] - e / 2, n[1][a] = n[1][a] + e / 2, n
},
_drawSplitline: function(t, e, i) {
var n = new Er({
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 a = [], o = 0; o < 7; o++) {
var r = n.getNextNDay(e.time, o),
s = n.dataToRect([r.time], !1);
a[2 * r.day] = s.tl, a[2 * r.day + 1] = s["horizontal" === i ? "bl" : "tr"]
}
return a
},
_formatterLabel: function(t, e) {
return "string" == typeof t && t ? Xl(t, e) : "function" == typeof t ? t(e) : e.nameMap
},
_yearTextPositionControl: function(t, e, i, n, a) {
e = e.slice();
var o = ["center", "bottom"];
"bottom" === n ? (e[1] += a, o = ["center", "top"]) : "left" === n ? e[0] -= a : "right" === n ? (e[0] += a, o = ["center", "top"]) : e[1] -= a;
var r = 0;
return "left" !== n && "right" !== n || (r = Math.PI / 2), {
rotation: r,
position: e,
style: {
textAlign: o[0],
textVerticalAlign: o[1]
}
}
},
_renderYearText: function(t, e, i, n) {
var a = t.getModel("yearLabel");
if (a.get("show")) {
var o = a.get("margin"),
r = a.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 = a.get("formatter"),
p = {
start: e.start.y,
end: e.end.y,
nameMap: d
},
g = this._formatterLabel(f, p),
m = new Dr({
z2: 30
});
Gs(m.style, a, {
text: g
}), m.attr(this._yearTextPositionControl(m, c[r], i, r, o)), n.add(m)
}
},
_monthTextPositionControl: function(t, e, i, n, a) {
var o = "left",
r = "top",
s = t[0],
l = t[1];
return "horizontal" === i ? (l += a, e && (o = "center"), "start" === n && (r = "bottom")) : (s += a, e && (r = "middle"), "start" === n && (o = "right")), {
x: s,
y: l,
textAlign: o,
textVerticalAlign: r
}
},
_renderMonthText: function(t, e, i) {
var n = t.getModel("monthLabel");
if (n.get("show")) {
var a = n.get("nameMap"),
o = n.get("margin"),
r = n.get("position"),
s = n.get("align"),
l = [this._tlpoints, this._blpoints];
z(a) && (a = cA[a.toUpperCase()] || []);
var u = "start" === r ? 0 : 1,
h = "horizontal" === e ? 0 : 1;
o = "start" === r ? -o : o;
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 = a[+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 Dr({
z2: 30
});
L(Gs(_.style, n, {
text: x
}), this._monthTextPositionControl(f, c, e, r, o)), i.add(_)
}
}
},
_weekTextPositionControl: function(t, e, i, n, a) {
var o = "center",
r = "middle",
s = t[0],
l = t[1],
u = "start" === i;
return "horizontal" === e ? (s = s + n + (u ? 1 : -1) * a[0] / 2, o = u ? "right" : "left") : (l = l + n + (u ? 1 : -1) * a[1] / 2, r = u ? "bottom" : "top"), {
x: s,
y: l,
textAlign: o,
textVerticalAlign: r
}
},
_renderWeekText: function(t, e, i, n) {
var a = t.getModel("dayLabel");
if (a.get("show")) {
var o = t.coordinateSystem,
r = a.get("position"),
s = a.get("nameMap"),
l = a.get("margin"),
u = o.getFirstDayOfWeek();
z(s) && (s = dA[s.toUpperCase()] || []);
var h = o.getNextNDay(e.end.time, 7 - e.lweek).time,
c = [o.getCellWidth(), o.getCellHeight()];
l = xl(l, c["horizontal" === i ? 0 : 1]), "start" === r && (h = o.getNextNDay(e.start.time, -(7 + e.fweek)).time, l = -l);
for (var d = 0; d < 7; d++) {
var f, p = o.getNextNDay(h, d),
g = o.dataToRect([p.time], !1).center;
f = Math.abs((d + u) % 7);
var m = new Dr({
z2: 30
});
L(Gs(m.style, a, {
text: s[f]
}), this._weekTextPositionControl(g, i, r, l, c)), n.add(m)
}
}
}
});
var fA = {
path: null,
compoundPath: null,
group: Si,
image: Yn,
text: Dr
};
Jd(function(t) {
var e = t.graphic;
k(e) ? e[0] && e[0].elements ? t.graphic = [t.graphic[0]] : t.graphic = [{
elements: e
}] : e && !e.elements && (t.graphic = [{
elements: [e]
}])
});
var pA = sf({
type: "graphic",
defaultOption: {
elements: [],
parentId: null
},
_elOptionsToUpdate: null,
mergeOption: function(t) {
var e = this.option.elements;
this.option.elements = null, pA.superApply(this, "mergeOption", arguments), this.option.elements = e
},
optionUpdated: function(t, e) {
var i = this.option,
n = (e ? i : t).elements,
a = i.elements = e ? [] : i.elements,
o = [];
this._flatten(n, o);
var r = Ia(a, o);
Aa(r);
var s = this._elOptionsToUpdate = [];
O(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 = L({}, i),
a = t[e],
o = i.$action || "merge";
"merge" === o ? a ? (m(a, n, !0), ru(a, n, {
ignoreSize: !0
}), lu(i, a)) : t[e] = n : "replace" === o ? t[e] = n : "remove" === o && a && (t[e] = null)
}(a, e, i), function(t, e) {
if (!t) return;
t.hv = e.hv = [vA(e, ["left", "right"]), vA(e, ["top", "bottom"])], "group" === t.type && (null == t.width && (t.width = e.width = 0), null == t.height && (t.height = e.height = 0))
}(a[e], i))
}, this);
for (var l = a.length - 1; 0 <= l; l--) null == a[l] ? a.splice(l, 1) : delete a[l].$action
},
_flatten: function(t, i, n) {
O(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 gA(t, e, i, n) {
var a = i.type,
o = new(fA.hasOwnProperty(a) ? fA[a] : ps(a))(i);
e.add(o), n.set(t, o), o.__ecGraphicId = t
}
function mA(t, e) {
var i = t && t.parent;
i && ("group" === t.type && t.traverse(function(t) {
mA(t, e)
}), e.removeKey(t.__ecGraphicId), i.remove(t))
}
function vA(e, t) {
var i;
return O(t, function(t) {
null != e[t] && "auto" !== e[t] && (i = !0)
}), i
}
lf({
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;
O(t, function(t) {
var e = t.$action,
i = t.id,
n = h.get(i),
a = t.parentId,
o = null != a ? h.get(a) : 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 = L({}, e), O(["id", "parentId", "$action", "hv", "bounding"].concat(tu), function(t) {
delete e[t]
}), e
}(t);
e && "merge" !== e ? "replace" === e ? (mA(n, h), gA(i, o, s, h)) : "remove" === e && mA(n, h) : n ? n.attr(s) : gA(i, o, 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, a = this._elMap, o = e.getWidth(), r = e.getHeight(), s = 0; s < i.length; s++) {
var l = i[s];
if ((h = a.get(l.id)) && h.isGroup) {
var u = (c = h.parent) === n;
h.__ecGraphicWidth = xl(h.__ecGraphicWidthOption, u ? o : c.__ecGraphicWidth) || 0, h.__ecGraphicHeight = xl(h.__ecGraphicHeightOption, u ? r : c.__ecGraphicHeight) || 0
}
}
for (s = i.length - 1; 0 <= s; s--) {
var h, c;
l = i[s];
if (h = a.get(l.id)) ou(h, l, (c = h.parent) === n ? {
width: o,
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) {
mA(t, e)
}), this._elMap = Q()
},
dispose: function() {
this._clear()
}
});
var yA = {};
function xA(t, e) {
yA[t] = e
}
function _A(t) {
return yA[t]
}
var wA = sf({
type: "toolbox",
layoutMode: {
type: "box",
ignoreSize: !0
},
optionUpdated: function() {
wA.superApply(this, "optionUpdated", arguments), O(this.option.feature, function(t, e) {
var i = _A(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 bA(t, e) {
var i = Vl(e.get("padding")),
n = e.getItemStyle(["color", "opacity"]);
return n.fill = e.get("backgroundColor"), t = new Hr({
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
})
}
lf({
type: "toolbox",
render: function(h, c, d, s) {
var f = this.group;
if (f.removeAll(), h.get("show")) {
var p = +h.get("itemSize"),
l = h.get("feature") || {},
u = this._features || (this._features = {}),
g = [];
O(l, function(t, e) {
g.push(e)
}), new df(this._featureNames || [], g).add(t).update(t).remove(A(t, null)).execute(), this._featureNames = g,
function(t, e, i) {
var n = e.getBoxLayoutParams(),
a = e.get("padding"),
o = {
width: i.getWidth(),
height: i.getHeight()
},
r = au(n, o, a);
nu(e.get("orient"), t, e.get("itemGap"), r.width, r.height), ou(t, n, o, a)
}(f, h, d), f.add(bA(f.getBoundingRect(), h)), f.eachChild(function(t) {
var e = t.__title,
i = t.hoverStyle;
if (i && e) {
var n = un(e, wn(i)),
a = t.position[0] + f.position[0],
o = !1;
t.position[1] + f.position[1] + p + n.height > d.getHeight() && (i.textPosition = "top", o = !0);
var r = o ? -5 - n.height : p + 8;
a + n.width / 2 > d.getWidth() ? (i.textPosition = ["100%", r], i.textAlign = "right") : a - n.width / 2 < 0 && (i.textPosition = [0, r], i.textAlign = "left")
}
})
}
function t(t, e) {
var i, n = g[t],
a = g[e],
o = new dl(l[n], h, h.ecModel);
if (n && !a) {
if (function(t) {
return 0 === t.indexOf("my")
}(n)) i = {
model: o,
onclick: o.option.onclick,
featureName: n
};
else {
var r = _A(n);
if (!r) return;
i = new r(o, c, d)
}
u[n] = i
} else {
if (!(i = u[a])) return;
i.model = o, i.ecModel = c, i.api = d
}
n || !a ? o.get("show") && !i.unusable ? (function(a, o, t) {
var r = a.getModel("iconStyle"),
s = a.getModel("emphasis.iconStyle"),
e = o.getIcons ? o.getIcons() : a.get("icon"),
l = a.get("title") || {};
if ("string" == typeof e) {
var i = e,
n = l;
l = {}, (e = {})[t] = i, l[t] = n
}
var u = a.iconPaths = {};
O(e, function(t, e) {
var i = el(t, {}, {
x: -p / 2,
y: -p / 2,
width: p,
height: p
});
i.setStyle(r.getItemStyle()), i.hoverStyle = s.getItemStyle();
var n = h.getModel("tooltip");
n && n.get("show") && i.attr("tooltip", L({
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)), Os(i), h.get("showTitle") && (i.__title = l[e], i.on("mouseover", function() {
var t = s.getItemStyle();
i.setStyle({
text: l[e],
textPosition: s.get("textPosition") || "bottom",
textFill: s.get("textFill") || t.fill || t.stroke || "#000",
textAlign: s.get("textAlign") || "center",
textBackgroundColor: s.get("textBackgroundColor"),
textBorderRadius: s.get("textBorderRadius"),
textPadding: s.get("textPadding")
})
}).on("mouseout", function() {
i.setStyle({
textFill: null,
textBackgroundColor: null
})
})), i.trigger(a.get("iconStatus." + e) || "normal"), f.add(i), i.on("click", T(o.onclick, o, c, d, e)), u[e] = i
})
}(o, i, n), o.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(o, c, d, s)) : i.remove && i.remove(c, d) : i.dispose && i.dispose(c, d)
}
},
updateView: function(t, e, i, n) {
O(this._features, function(t) {
t.updateView && t.updateView(t.model, e, i, n)
})
},
remove: function(e, i) {
O(this._features, function(t) {
t.remove && t.remove(e, i)
}), this.group.removeAll()
},
dispose: function(e, i) {
O(this._features, function(t) {
t.dispose && t.dispose(e, i)
})
}
});
var SA = gc.toolbox.saveAsImage;
function MA(t) {
this.model = t
}
MA.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()
}, MA.prototype.unusable = !v.canvasSupported, MA.prototype.onclick = function(t, e) {
var i = this.model,
n = i.get("name") || t.get("title.0.text") || "echarts",
a = i.get("type", !0) || "png",
o = e.getConnectedDataURL({
type: a,
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(o.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 + "." + a)
} else {
var h = i.get("lang"),
c = '