diff --git a/.gitignore b/.gitignore index 1f4080c4..f065bad4 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ examples/cesiumEx/真实道路2.html +examples/cesiumEx/templates/1_uav/index-2.html diff --git a/examples/cesiumEx/5.3.3、移动的视锥体.html b/examples/cesiumEx/5.3.3、移动的视锥体.html index 952606f1..3491b3fd 100644 --- a/examples/cesiumEx/5.3.3、移动的视锥体.html +++ b/examples/cesiumEx/5.3.3、移动的视锥体.html @@ -26,115 +26,82 @@ Cesium.Ion.defaultAccessToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJjM2EzNGJmNy02N2RmLTQ0MDMtYjI2MS1hZTJiMTIwZGYwMTYiLCJpZCI6MzA0MzEyLCJpYXQiOjE3NDc3MjM3MTV9.ePQNhuoVuDsi_z00lTm5W26wyW1Adcr1AWetGM6WSXI"; const viewer = new Cesium.Viewer("map", {}); - viewer.scene.debugShowFramesPerSecond = true; - viewer.scene.globe.depthTestAgainstTerrain = true; - - // 地图视野定位 - viewer.camera.setView({ - destination: Cesium.Cartesian3.fromDegrees(120, 30, 3000), + // 地图视野定位 + viewer.camera.setView({ + destination: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883, 3000), }); - // 视锥体位置 - let qd = Cesium.Cartesian3.fromDegrees(120, 30, 1000); - let zd = Cesium.Cartesian3.fromDegrees(125, 30, 0); + let primitive; - const fov = 30; //上下角度 - const near = 10; // 进距离 - const far = 5000; //远距离 - const aspectRatio = 1.4; //横向比例 + let positions = { + x: -75.59777, + y: 40.03883, + z: 3000 + } + initFrustum(); - // 绘制 - addFrustum( - qd, - _getOrientation(qd, zd), - fov, - near, - far, - aspectRatio - ); + function initFrustum() { + // 初始参数 + const fov = 45; + const aspectRatio = 1920 / 1080; + const near = 1.0; + const far = 2000.0; - // 创建视锥体及轮廓线 - function addFrustum(position, orientation, fov, near, far, aspectRatio) { - let frustum = new Cesium.PerspectiveFrustum({ + var position = Cesium.Cartesian3.fromDegrees(positions.x, positions.y, positions.z); + var heading = Cesium.Math.toRadians(0); + var pitch = Cesium.Math.toRadians(0); + var roll = Cesium.Math.toRadians(135); + + var hpr = new Cesium.HeadingPitchRoll(heading, pitch, roll); + var orientation = Cesium.Transforms.headingPitchRollQuaternion( + position, + hpr + ); + + const frustum = new Cesium.PerspectiveFrustum({ fov: Cesium.Math.toRadians(fov), aspectRatio: aspectRatio, near: near, - far: far, + far: far }); - let instanceGeo = new Cesium.GeometryInstance({ + + const instanceGeo = new Cesium.GeometryInstance({ geometry: new Cesium.FrustumGeometry({ frustum: frustum, - origin: position, + origin: Cesium.Cartesian3.ZERO, // 原点 + // orientation: Cesium.Quaternion.IDENTITY, // 初始无旋转 orientation: orientation, - vertexFormat: Cesium.VertexFormat.POSITION_ONLY, + vertexFormat: Cesium.VertexFormat.POSITION_ONLY }), attributes: { color: Cesium.ColorGeometryInstanceAttribute.fromColor( new Cesium.Color(1.0, 0.0, 0.0, 0.3) - ), - }, - }); - let instanceGeoLine = new Cesium.GeometryInstance({ - geometry: new Cesium.FrustumOutlineGeometry({ - frustum: frustum, - origin: position, - orientation: orientation, - }), - attributes: { - color: Cesium.ColorGeometryInstanceAttribute.fromColor( - new Cesium.Color(1.0, 1.0, 1.0, 1) - ), - }, + ) + } }); - let primitive = new Cesium.Primitive({ - geometryInstances: [instanceGeo], - appearance: new Cesium.PerInstanceColorAppearance({ - closed: true, - flat: true, - }), - asynchronous: false, - }); + const initialModelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position); - let primitive1 = new Cesium.Primitive({ - geometryInstances: [instanceGeoLine], + primitive = viewer.scene.primitives.add(new Cesium.Primitive({ + geometryInstances: instanceGeo, appearance: new Cesium.PerInstanceColorAppearance({ - closed: true, - flat: true, + translucent: true, + closed: true }), - asynchronous: false, - }); - // viewer.scene.primitives.add(primitive); - // viewer.scene.primitives.add(primitive1); - return [primitive,primitive1]; + modelMatrix: initialModelMatrix // 初始位置矩阵 + })); + + animate(); + } - function _getOrientation(cameraPosition, position) { - var e = cameraPosition, - t = position, - i = Cesium.Cartesian3.normalize( - Cesium.Cartesian3.subtract(t, e, new Cesium.Cartesian3()), - new Cesium.Cartesian3() - ), - a = Cesium.Cartesian3.normalize(e, new Cesium.Cartesian3()), - n = new Cesium.Camera(viewer.scene); - (n.position = e), - (n.direction = i), - (n.up = a), - (i = n.directionWC), - (a = n.upWC); - var r = n.rightWC, - o = new Cesium.Cartesian3(), - l = new Cesium.Matrix3(), - u = new Cesium.Quaternion(); - r = Cesium.Cartesian3.negate(r, o); - var d = l; - Cesium.Matrix3.setColumn(d, 0, r, d), - Cesium.Matrix3.setColumn(d, 1, a, d), - Cesium.Matrix3.setColumn(d, 2, i, d); - var c = Cesium.Quaternion.fromRotationMatrix(d, u); - return (this.orientation = c), c; + function animate() { + positions.y += 0.0001; + var newPosition = Cesium.Cartesian3.fromDegrees(positions.x, positions.y, positions.z); + primitive.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(newPosition); + requestAnimationFrame(animate); } + diff --git a/examples/cesiumEx/Erosion.js b/examples/cesiumEx/Erosion.js new file mode 100644 index 00000000..bb44488d --- /dev/null +++ b/examples/cesiumEx/Erosion.js @@ -0,0 +1,416 @@ +const Common = ` + uniform sampler2D heightMap; + uniform float heightScale; + uniform float maxElevation; + uniform float minElevation; + uniform sampler2D iChannel0; + uniform float iTime; + + uniform float coast2water_fadedepth; + uniform float large_waveheight; // change to adjust the "heavy" waves + uniform float large_wavesize; // factor to adjust the large wave size + uniform float small_waveheight; // change to adjust the small random waves + uniform float small_wavesize; // factor to ajust the small wave size + uniform float water_softlight_fact; // range [1..200] (should be << smaller than glossy-fact) + uniform float water_glossylight_fact; // range [1..200] + uniform float particle_amount; + uniform float WATER_LEVEL; // Water level (range: 0.0 - 2.0) + vec3 watercolor = vec3(0.0, 0.60, 0.66); // 'transparent' low-water color (RGB) + vec3 watercolor2 = vec3(0.0,0.0,0.5); // deep-water color (RGB, should be darker than the low-water color) + vec3 water_specularcolor = vec3(1.3, 1.3, 0.9); // specular Color (RGB) of the water-highlights + vec3 light; + + // calculate random value + float hash(float n) { + return fract(sin(n) * 43758.5453123); + } + + // 2d noise function + float noise1(in vec2 x) { + vec2 p = floor(x); + vec2 f = smoothstep(0.0, 1.0, fract(x)); + float n = p.x + p.y * 57.0; + return mix(mix(hash(n + 0.0), hash(n + 1.0), f.x), mix(hash(n + 57.0), hash(n + 58.0), f.x), f.y); + } + + float noise(vec2 p) { + return textureLod(iChannel0, p * vec2(1. / 256.), 0.0).x; + } + + float height_map(vec2 p) { + float f = texture(heightMap,p).r; + return clamp(f, 0., 10.); + } + + const mat2 m = mat2(0.72, -1.60, 1.60, 0.72); + + float water_map(vec2 p, float height) { + vec2 p2 = p * large_wavesize; + vec2 shift1 = 0.001 * vec2(iTime * 160.0 * 2.0, iTime * 120.0 * 2.0); + vec2 shift2 = 0.001 * vec2(iTime * 190.0 * 2.0, -iTime * 130.0 * 2.0); + + // coarse crossing 'ocean' waves... + float f = 0.6000 * noise(p); + f += 0.2500 * noise(p * m); + f += 0.1666 * noise(p * m * m); + float wave = sin(p2.x * 0.622 + p2.y * 0.622 + shift2.x * 4.269) * large_waveheight * f * height * height; + + p *= small_wavesize; + f = 0.; + float amp = 1.0, s = .5; + for(int i = 0; i < 9; i++) { + p = m * p * .947; + f -= amp * abs(sin((noise(p + shift1 * s) - .5) * 2.)); + amp = amp * .59; + s *= -1.329; + } + + return wave + f * small_waveheight; + } + + float nautic(vec2 p) { + p *= 18.; + float f = 0.; + float amp = 1.0, s = .5; + for(int i = 0; i < 3; i++) { + p = m * p * 1.2; + f += amp * abs(smoothstep(0., 1., noise(p + iTime * s)) - .5); + amp = amp * .5; + s *= -1.227; + } + return pow(1. - f, 5.); + } + + float particles(vec2 p) { + p *= 200.; + float f = 0.; + float amp = 1.0, s = 1.5; + for(int i = 0; i < 3; i++) { + p = m * p * 1.2; + f += amp * noise(p + iTime * s); + amp = amp * .5; + s *= -1.227; + } + return pow(f * .35, 7.) * particle_amount; + } + + float test_shadow(vec2 xy, float height) { + vec3 r0 = vec3(xy, height); + vec3 rd = normalize(light - r0); + + float hit = 1.0; + float t = 0.001; + for(int j = 1; j < 25; j++) { + vec3 p = r0 + t * rd; + float h = height_map(p.xy); + float height_diff = p.z - h; + if(height_diff < 0.0) { + return 0.0; + } + t += 0.01 + height_diff * .02; + hit = min(hit, 2. * height_diff / t); // soft shaddow + } + return hit; + } +`; + +export default class Erosion extends Cesium.Primitive { + constructor(options) { + super(); + this.viewer = options.viewer; + this.extent = options.extent; + this.maxElevation = options.maxElevation; + this.minElevation = options.minElevation; + this.heightMap = options.canvas; + this.noise = options.noise; + + this.coast2water_fadedepth = 0.1; + this.large_waveheight = 0.5; // change to adjust the "heavy" waves + this.large_wavesize = 4; // factor to adjust the large wave size + this.small_waveheight = 0.9; // change to adjust the small random waves + this.small_wavesize = 0.12; // factor to ajust the small wave size + this.water_softlight_fact = 36; // range [1..200] (should be << smaller than glossy-fact) + this.water_glossylight_fact = 120; // range [1..200] + this.particle_amount = 70; + this.WATER_LEVEL = 0.34; + this._showLines = false; + + this.resolution = Cesium.defaultValue( + options.resolution, + new Cesium.Cartesian2(1024, 1024) + ); + } + createCommand(context) { + const rectangle = new Cesium.RectangleGeometry({ + ellipsoid: Cesium.Ellipsoid.WGS84, + rectangle: Cesium.Rectangle.fromDegrees(...this.extent), + vertexFormat: Cesium.VertexFormat.POSITION_AND_ST, + granularity: Cesium.Math.toRadians(0.0001), // 调整这个参数以增加顶点密度 + height: this.minElevation, + }); + const geometry = Cesium.RectangleGeometry.createGeometry(rectangle); + const attributeLocations = + Cesium.GeometryPipeline.createAttributeLocations(geometry); + + const va = Cesium.VertexArray.fromGeometry({ + context: context, + geometry: geometry, + attributeLocations: attributeLocations, + }); + const vs = ` + in vec4 position; + in vec2 st; + out vec2 v_st; + + const float PI = 3.141592653589793; + const float earthRadius = 6378137.0; // WGS84 椭球体的平均半径 + const float angularVelocity = 180.0 / PI; + + const float RADII_X = 6378137.0; + const float RADII_Y = 6378137.0; + const float RADII_Z = 6356752.314245; + + vec3 worldToGeographic(vec3 worldPosition) { + // 步骤1: 世界坐标到ECEF坐标 + vec3 ecef = worldPosition; // 假设世界坐标已经是ECEF + + // 步骤2: ECEF到地理坐标 + float l = length(ecef.xy); + float e2 = 1.0 - (RADII_Z * RADII_Z) / (RADII_X * RADII_X); + float u = atan(ecef.z * RADII_X / (l * RADII_Z)); + float lat = atan((ecef.z + e2 * RADII_Z * pow(sin(u), 3.0)) / + (l - e2 * RADII_X * pow(cos(u), 3.0))); + float lon = atan(ecef.y, ecef.x); + float N = RADII_X / sqrt(1.0 - e2 * sin(lat) * sin(lat)); + float alt = l / cos(lat) - N; + + // 将弧度转换为度 + lat = degrees(lat); + lon = degrees(lon); + + return vec3(lon, lat, alt); + } + + vec3 geo2cartesian(vec3 geo){ + float cosLat=cos(geo.y); + float snX=cosLat*cos(geo.x); + float snY=cosLat*sin(geo.x); + float snZ=sin(geo.y); + vec3 sn=normalize(vec3(snX,snY,snZ)); + vec3 radiiSquared=vec3(40680631.59076899*1000000.,40680631.59076899*1000000.,40408299.98466144*1000000.); + vec3 sk=radiiSquared*sn; + float gamma=sqrt(dot(sn,sk)); + sk=sk/gamma; + sn=sn*geo.z; + return sk+sn; + } + + vec3 deg2cartesian(vec3 deg) { + vec2 radGeo=radians(deg.xy); + vec3 geo=vec3(radGeo.xy,deg.z); + return geo2cartesian(geo); + } + + void main() { + float normalizedHeight = 0.0; + + vec2 uv = st; + float deepwater_fadedepth = 0.5 + coast2water_fadedepth; + + float height = height_map(uv); + vec3 col; + + float waveheight = clamp(WATER_LEVEL * 3. - 1.5, 0., 1.); + float level = WATER_LEVEL + .2 * water_map(uv * 15. + vec2(iTime * .1), waveheight); + + if(height <= level) { + normalizedHeight = level; + }else{ + normalizedHeight = height; // 减少边缘拉伸的割裂感 + } + + float heightOffset = (maxElevation - minElevation) * normalizedHeight; + + // 将顶点位置从模型空间转换到世界空间 + vec4 worldPosition = czm_model * position; + + // 将世界坐标转换为经纬度和高度 + vec3 llh = worldToGeographic(worldPosition.xyz); + + // 将调整后的经纬度和高度转换回笛卡尔坐标 + vec3 adjustedCartesian = deg2cartesian(vec3(llh.xy,minElevation+heightOffset)); + + gl_Position = czm_projection * czm_view * vec4(adjustedCartesian,1.0); + v_st = st; + } + `; + const fs = ` + in vec2 v_st; + + void main(){ + light = vec3(-0., .0, 2.8); // position of the sun + vec2 uv = v_st; + + float deepwater_fadedepth = 0.5 + coast2water_fadedepth; + + float height = height_map(uv); + vec3 col; + + float waveheight = clamp(WATER_LEVEL * 3. - 1.5, 0., 1.); + float level = WATER_LEVEL + .2 * water_map(uv * 15. + vec2(iTime * .1), waveheight); + if(height <= level) { + vec2 dif = vec2(.0, .01); + vec2 pos = uv * 15. + vec2(iTime * .01); + float h1 = water_map(pos - dif, waveheight); + float h2 = water_map(pos + dif, waveheight); + float h3 = water_map(pos - dif.yx, waveheight); + float h4 = water_map(pos + dif.yx, waveheight); + vec3 normwater = normalize(vec3(h3 - h4, h1 - h2, .125)); // norm-vector of the 'bumpy' water-plane + uv += normwater.xy * .002 * (level - height); + + col = vec3(1.0); + + float coastfade = clamp((level - height) / coast2water_fadedepth, 0., 1.); + float coastfade2 = clamp((level - height) / deepwater_fadedepth, 0., 1.); + float intensity = col.r * .2126 + col.g * .7152 + col.b * .0722; + watercolor = mix(watercolor * intensity, watercolor2, smoothstep(0., 1., coastfade2)); + + vec3 r0 = vec3(uv, WATER_LEVEL); + vec3 rd = normalize(light - r0); // ray-direction to the light from water-position + float grad = dot(normwater, rd); // dot-product of norm-vector and light-direction + float specular = pow(grad, water_softlight_fact); // used for soft highlights + float specular2 = pow(grad, water_glossylight_fact); // used for glossy highlights + float gradpos = dot(vec3(0., 0., 1.), rd); + float specular1 = smoothstep(0., 1., pow(gradpos, 5.)); // used for diffusity (some darker corona around light's specular reflections...) + float watershade = test_shadow(uv, level); + watercolor *= 2.2 + watershade; + watercolor += (.2 + .8 * watershade) * ((grad - 1.0) * .5 + specular) * .25; + watercolor /= (1. + specular1 * 1.25); + watercolor += watershade * specular2 * water_specularcolor; + watercolor += watershade * coastfade * (1. - coastfade2) * (vec3(.5, .6, .7) * nautic(uv) + vec3(1., 1., 1.) * particles(uv)); + + col = mix(col, watercolor, coastfade); + + float alpha = clamp(coastfade,0.1,0.6); + out_FragColor = vec4(col,1.0); + return; + } + } + + `; + const shaderProgram = Cesium.ShaderProgram.fromCache({ + context: context, + vertexShaderSource: Common + vs, + fragmentShaderSource: Common + fs, + attributeLocations: attributeLocations, + }); + const texture = new Cesium.Texture({ + context: context, + width: 2048.0, + height: 2048.0, + pixelFormat: Cesium.PixelFormat.RGBA, + pixelDatatype: Cesium.PixelDatatype.UNSIGNED_BYTE, + flipY: true, + sampler: new Cesium.Sampler({ + minificationFilter: Cesium.TextureMinificationFilter.LINEAR, + magnificationFilter: Cesium.TextureMagnificationFilter.LINEAR, + wrapS: Cesium.TextureWrap.REPEAT, + wrapT: Cesium.TextureWrap.REPEAT, + }), + source: this.heightMap, + }); + const noise = new Cesium.Texture({ + context: context, + width: 512.0, + height: 512.0, + pixelFormat: Cesium.PixelFormat.RGBA, + pixelDatatype: Cesium.PixelDatatype.UNSIGNED_BYTE, + flipY: true, + sampler: new Cesium.Sampler({ + minificationFilter: Cesium.TextureMinificationFilter.LINEAR, + magnificationFilter: Cesium.TextureMagnificationFilter.LINEAR, + wrapS: Cesium.TextureWrap.REPEAT, + wrapT: Cesium.TextureWrap.REPEAT, + }), + source: this.noise, + }); + const uniformMap = { + heightMap: () => { + return texture; + }, + heightScale: () => 1.0, + minElevation: () => this.minElevation, + maxElevation: () => this.maxElevation, + iTime: () => this.time, + iChannel0: () => noise, + coast2water_fadedepth: () => this.coast2water_fadedepth, + large_waveheight: () => this.large_waveheight, // change to adjust the "heavy" waves + large_wavesize: () => this.large_wavesize, // factor to adjust the large wave size + small_waveheight: () => this.small_waveheight, // change to adjust the small random waves + small_wavesize: () => this.small_wavesize, // factor to ajust the small wave size + water_softlight_fact: () => this.water_softlight_fact, // range [1..200] (should be << smaller than glossy-fact) + water_glossylight_fact: () => this.water_glossylight_fact, // range [1..200] + particle_amount: () => this.particle_amount, + WATER_LEVEL: () => this.WATER_LEVEL, + }; + const renderState = Cesium.RenderState.fromCache({ + depthTest: { enabled: true }, + depthMask: { enabled: true }, + blending: Cesium.BlendingState.ALPHA_BLEND, + cull: { + enabled: false, + }, + }); + this.drawCommand = new Cesium.DrawCommand({ + modelMatrix: this.modelMatrix, + vertexArray: va, + primitiveType: Cesium.PrimitiveType.TRIANGLES, //TRIANGLES LINES + shaderProgram: shaderProgram, + uniformMap: uniformMap, + renderState: renderState, + pass: Cesium.Pass.OPAQUE, + }); + } + set showLines(value) { + this._showLines = value; + this.drawCommand.primitiveType = this._showLines + ? Cesium.PrimitiveType.LINES + : Cesium.PrimitiveType.TRIANGLES; + } + get showLines() { + return this._showLines; + } + async update(frameState) { + const now = performance.now(); + this.deltaTime = (now - this.lastUpdateTime) / 1000.0; // 转换为秒 + this.lastUpdateTime = now; + this.time = now / 1000; + this.frame += 0.02; + if (!this.drawCommand) { + this.createCommand(frameState.context); + } + frameState.commandList.push(this.drawCommand); + } + destroy() { + super.destroy(); + const commondList = [this.drawCommand]; + commondList.forEach((drawCommand) => { + if (drawCommand) { + const va = drawCommand.vertexArray, + sp = drawCommand.shaderProgram; + if (!va.isDestroyed()) va.destroy(); + if (!sp.isDestroyed || !sp.isDestroyed()) { + sp.destroy(); + } + drawCommand.isDestroyed = function returnTrue() { + return true; + }; + drawCommand.uniformMap = undefined; + drawCommand.renderState = Cesium.RenderState.removeFromCache( + drawCommand.renderState + ); + } + }); + this.drawCommand = null; + } +} \ No newline at end of file diff --git a/examples/cesiumEx/config.js b/examples/cesiumEx/config.js index aaa2d82f..a2318513 100644 --- a/examples/cesiumEx/config.js +++ b/examples/cesiumEx/config.js @@ -14,6 +14,12 @@ var exampleConfig = { name_en: "ba222212se", content: [ + { + name: "低空经济AI决策", + name_en: "低空经济AI决策", + thumbnail: "低空经济.jpg", + fileName: "./templates/1_uav/index.html" + }, { name: "智慧交通", name_en: "智慧交通", diff --git a/examples/cesiumEx/img/低空经济.jpg b/examples/cesiumEx/img/低空经济.jpg new file mode 100644 index 00000000..2e2017f3 Binary files /dev/null and b/examples/cesiumEx/img/低空经济.jpg differ diff --git a/examples/cesiumEx/templates/1_uav/css/new_index.css b/examples/cesiumEx/templates/1_uav/css/new_index.css new file mode 100644 index 00000000..ea4cb7b2 --- /dev/null +++ b/examples/cesiumEx/templates/1_uav/css/new_index.css @@ -0,0 +1,853 @@ +/* 左侧第一个盒子start--- */ +.firstBox { + width: 90%; + margin-left: 6%; + height: 90%; +} + +.firstBox .pic { + width: 100%; + height: 25%; +} + +.pic img { + display: inline-block; + width: 40%; + height: 80%; + margin-top: 1vw; + +} + +.first_top1 { + margin-left: 1vw; +} + +.first_top2 { + margin-left: 1vw; +} + +.picText { + color: #0EFCFF; + margin-left: 1vw; +} + +.picText .text_second { + margin-left: 6vw; +} + +/* 声波动画start--- */ +.voice_animation { + width: 100%; + height: 20%; + margin-top: 1vw; + background-image: url(../img/voice_pic.png); + background-size: 90% 90%; + background-repeat: no-repeat; + background-position: center; +} + +/* 声波动画over--- */ + + +/* 进度条start--- */ +.progress { + width: 93%; + height: 10%; + margin-top: 1vw; + margin-left: .6vw; + background-image: url(../img/progress_pic.png); + background-size: 100% 100%; +} + +/* 进度条over--- */ + + +.about_illness { + width: 100%; + height: 25%; + margin-top: 1.5vw; + margin-left: .6vw; + color: #fff; + font-size: .6vw; +} + +.about_illness>div { + display: inline-block; + width: 45%; + height: 100%; + background-image: url(../img/illness_pic.png); + background-size: 100% 100%; +} + +.prevent { + margin-left: .5vw; + text-indent: .2vw; +} + +.symptom { + /* text-indent: .2vw; */ + /* font-size: .5vw; */ +} + +.symptom_content, +.prevent_content { + color: #0EFCFF; + margin-top: .5vw; + margin: .6vw .2vw .2vw .5vw; +} + +.symptom_title .prevent_title { + font-size: .1vw; + color: red; +} + +/* 左侧第一个盒子over--- */ + + +/* center部分start--- */ +.maps { + position: relative; + width: 100%; + height: 95%; + margin-top: 2%; + /* background: pink; */ + /* background-image: url(../img/landLevel.png); */ + /* background-size: 95% 100%; */ + /* background-repeat: no-repeat; */ + /* background-position: center; */ +} + +.maps .land_level { + width: 95%; + height: 100%; + margin-left: 2.5%; +} + +.maps .wifi_gif { + position: absolute; + right: 27%; + top: -3.5%; + width: 5%; + height: 10%; +} + +.maps .sun_pic { + position: absolute; + top: -5%; + left: 18%; + width: 10%; + height: 15%; + + animation: mymove 3s infinite; + -webkit-animation: mymove 3s infinite; + /*Safari and Chrome*/ + animation-direction: alternate; + /*轮流反向播放动画。*/ + animation-timing-function: ease-in-out; + /*动画的速度曲线*/ + /* Safari 和 Chrome */ + -webkit-animation: mymove 3s infinite; + -webkit-animation-direction: alternate; + /*轮流反向播放动画。*/ + -webkit-animation-timing-function: ease-in-out; +} + +@keyframes mymove { + 0% { + transform: scale(1); + /*开始为原始大小*/ + } + + 25% { + transform: scale(1.1); + /*放大1.1倍*/ + } + + 50% { + transform: scale(1.05); + } + + 75% { + transform: scale(1); + } + +} + +@-webkit-keyframes mymove + +/*Safari and Chrome*/ + { + 0% { + transform: scale(1); + /*开始为原始大小*/ + } + + 25% { + transform: scale(1.1); + /*放大1.1倍*/ + } + + 50% { + transform: scale(1.05); + } + + 75% { + transform: scale(1); + } +} + +.maps .wrj_pic { + position: absolute; + width: 8%; + height: 8%; + left: 30%; + animation: myfirst 5s infinite; + -moz-animation: myfirst 5s infinite; + /* Firefox */ + -webkit-animation: myfirst 5s infinite; + /* Safari 和 Chrome */ + -o-animation: myfirst 5s infinite; + /* Opera */ + /* animation: btn-load-loop 1s linear infinite; */ +} + + +@keyframes myfirst { + 0% { + left: 250px; + top: 0px; + } + + 25% { + left: 300px; + top: 0px; + } + + 50% { + left: 150px; + top: 300px; + } + + 75% { + left: 250px; + top: 200px; + } + + 100% { + left: 250px; + top: 0px; + } +} + +@-moz-keyframes myfirst + +/* Firefox */ + { + 0% { + left: 250px; + top: 0px; + } + + 25% { + left: 300px; + top: 0px; + } + + 50% { + left: 500px; + top: 200px; + } + + 75% { + left: 250px; + top: 200px; + } + + 100% { + left: 250px; + top: 0px; + } +} + +@-webkit-keyframes myfirst + +/* Safari 和 Chrome */ + { + 0% { + left: 250px; + top: 0px; + } + + 25% { + left: 300px; + top: 0px; + } + + 50% { + left: 500px; + top: 200px; + } + + 75% { + left: 250px; + top: 200px; + } + + 100% { + left: 250px; + top: 0px; + } +} + +@-o-keyframes myfirst + +/* Opera */ + { + 0% { + left: 250px; + top: 0px; + } + + 25% { + left: 300px; + top: 0px; + } + + 50% { + left: 500px; + top: 200px; + } + + 75% { + left: 250px; + top: 200px; + } + + 100% { + left: 250px; + top: 0px; + } +} + +.wind_gif { + position: absolute; + top: 25%; + left: 5%; + width: 10%; + height: 19%; +} + +.plant_pic { + position: absolute; + top: 40%; + left: 60%; + width: 8%; + height: 10%; +} + +.windows, +.window_two, +.window_three, +.window_four, +.window_five, +.window_six { + padding: 1.5%; + color: #0EFCFF; + background: rgba(40, 229, 233, .2); +} + +.windows { + position: absolute; + bottom: 0; + left: 3%; +} + +.windows li:nth-of-type(1) { + font-size: .9vw; +} + +.windows li { + margin-bottom: .2vw; +} + +.window_two { + position: absolute; + right: 5%; + /* right: 1%; */ + top: 5%; +} + +.window_two li:nth-of-type(1) { + font-size: .9vw; +} + +.window_three { + position: absolute; + bottom: 5%; + left: 60%; +} + +.window_four { + position: absolute; + top: 7%; + left: 10%; +} + +.window_five { + position: absolute; + bottom: 15%; + left: 20%; +} + +.window_six { + position: absolute; + /* border: 1px solid red; */ + right: 40%; + top: 0%; +} + +.peasant { + position: absolute; + right: 17%; + top: 27%; + width: 5.5%; + height: 9%; + cursor: pointer; + /* background-color: #fff; */ +} + +.display_box { + display: none; +} + +.land_box1 { + position: absolute; + left: 13%; + top: 32%; + width: 13%; + height: 30%; + cursor: pointer; +} + +.land_box2 { + position: absolute; + left: 45%; + top: 65%; + width: 20%; + height: 15%; + transform: rotate(150deg); + cursor: pointer; +} + +.land_box3 { + position: absolute; + right: 5%; + top: 40%; + width: 20%; + height: 15%; + transform: rotate(150deg); + cursor: pointer; +} + +.land_box4 { + position: absolute; + right: 41%; + top: 0%; + width: 10%; + height: 25%; + transform: rotate(140deg); + cursor: pointer; +} + +.plant { + position: absolute; + top: 30%; + left: 35%; + width: 25%; + height: 30%; + cursor: pointer; + /* border: 1px solid red; */ +} + +.soil_data { + position: absolute; + bottom: 23%; + left: 45%; + width: 55%; + height: 10%; + transform: rotate(150deg); +} + +.weather_info { + position: absolute; + top: -5%; + left: 18%; + width: 10%; + height: 15%; +} + +/* center部分over--- */ + + +/* left bottom start--- */ +.leftBottom { + display: inline-block; + position: relative; + width: 32%; + height: 80%; + font-size: .6vw; + color: #0EFCFF; +} + +.leftBottom .land_data p { + position: absolute; + left: 52%; + top: 14%; +} + +.land_data p:nth-child(2) { + top: 24%; + left: 57%; +} + +.land_data p:nth-child(3) { + top: 32%; + left: 67%; +} + +.right_box { + float: right; + width: 65%; + height: 70%; + /* margin: 2%; */ + margin-top: 1%; + margin-right: 1%; + /* background-color: red; */ +} + +.grow_data { + position: relative; + display: inline-block; + float: left; + width: 45%; + height: 100%; + /* background-color: pink; */ +} + +.grow_data img { + display: inline-block; + width: 20%; + height: 80%; + margin-top: .8vw; +} + +.grow_data p { + color: #0EFCFF; + position: absolute; +} + +.grow_data p:nth-of-type(1) { + top: 3%; + left: 5%; +} + +.grow_data p:nth-of-type(2) { + top: 47%; + left: 22%; +} + +.grow_data p:nth-of-type(3) { + top: 80%; + left: 5%; +} + +.grow_data span { + position: absolute; + top: 18%; + left: 13%; + padding: .15vw .6vw; + border-radius: 1vw; + display: inline-block; + color: #0EFCFF; + background: rgba(40, 229, 233, .2); +} + +.specialistSuggest { + position: absolute; + left: 50%; + top: -15%; + display: inline-block; + width: 30%; + padding: 1vw; + color: #0EFCFF; + font-size: .6vw; +} + +.specialistSuggest div:nth-of-type(1) { + font-size: .7vw; +} + +.fertilizationSuggest { + position: absolute; + left: 50%; + top: 55%; + display: inline-block; + width: 35%; + padding: 1vw; + color: #0EFCFF; + font-size: .6vw; +} + +.fertilizationSuggest div:nth-of-type(1) { + font-size: .7vw; +} + +.weather_data { + position: relative; + display: inline-block; + width: 50%; + height: 100%; + margin-left: 3%; + margin-top: .5%; + font-size: .6vw; + /* background-color: yellow; */ + background-image: url(../img/bottom_icons.png); + background-size: 90% 80%; + background-repeat: no-repeat; +} + +.weather_text { + color: #0EFCFF; +} + +.weather_text span { + position: absolute; + top: 35%; +} + +.weather_text span:nth-of-type(1) { + left: -5%; +} + +.weather_text span:nth-of-type(2) { + left: 24%; +} + +.weather_text span:nth-of-type(3) { + left: 50%; +} + +.weather_text span:nth-of-type(4) { + left: 75%; +} + +.text_two span { + top: 85%; +} + +.text_two span:nth-of-type(1) { + left: 0%; +} + +.text_two span:nth-of-type(2) { + left: 30%; +} + +.text_two span:nth-of-type(3) { + left: 65%; +} + +/* .text_one { + margin-top: 14%; + +} +.text_two { + margin-top: 18%; +} */ + + +/* left bottom over--- */ + + +/* 右侧三个内容框start--- */ + +/* 硬件设备展示start--- */ +.boxLis { + width: 68%; + z-index: 9999; + height: 1.5vw; + margin-left: 3.5vw; + margin-top: 1vw; + font-size: .6vw; + /* background-color: pink; */ + border-bottom: .02vw solid rgb(40, 229, 233); +} + +.boxLis>li { + /* width: 21.1%; */ + /* height: 1.4vw; */ + z-index: 9999; + padding: .1vw; + display: block; + background: rgba(40, 229, 233, .5); + margin-right: 2.5%; + line-height: 1.4vw; + text-align: center; + cursor: pointer; + color: #fff; + /* border-bottom: .02vw solid rgb(40, 229, 233); */ +} + +.boxLis li:nth-child(4) { + margin-right: 0; +} + +.boxLis>.active { + /* border-bottom: none; */ + /* color: #0EFCFF; */ + border-top: .02vw solid rgb(40, 229, 233); + border-right: .02vw solid rgb(40, 229, 233); + border-left: .02vw solid rgb(40, 229, 233); +} + +.equipment_pic { + position: relative; + width: 100%; + height: 100%; + background-color: #031426; +} + +.equipment_pic img { + position: absolute; + margin: auto; + left: 0; + top: 0; + right: 0; + bottom: 0; + width: 80%; + height: 80%; +} + +.equipment_pic img:nth-child(2) { + display: none; + width: 45%; + height: 50%; +} + +.equipment_pic img:nth-child(3) { + width: 40%; + height: 65%; + display: none; +} + +.equipment_pic img:nth-child(4) { + width: 50%; + height: 70%; + display: none; +} + +.liSpan { + width: 100%; + margin-top: -1%; + text-align: center; + color: rgb(40, 229, 233); +} + +.liP { + width: 66%; + margin: .3vw auto 0; + text-align: left; + font-size: .6vw; + color: rgb(40, 229, 233); +} + +/* 硬件设备展示over--- */ + + +/* 灌溉数据start--- */ +.irrigate_data { + width: 100%; + height: 100%; + /* background-color: yellow; */ +} + +.centerList { + /* float: left; */ + display: inline-block; + width: 37%; + height: 80%; + padding-top: 3%; + text-align: center; + margin-left: 2vw; +} + +.centerListFont { + font-size: .8vw; + color: #0EFCFF; +} + +.centerListNum { + font-size: 1.5vw; + color: white; + margin-top: .2vw; +} + +.irrigate_bottom { + width: 100%; + height: 40%; + margin-top: .2vw; +} + +.irrigate_bottom .every_line { + width: 90%; + height: 25%; + margin-left: 5%; + margin-bottom: 3%; + background-color: rgba(14, 252, 255, .2); +} + +.every_line span { + color: #0EFCFF; + margin-left: .7vw; + font-size: .7vw; +} + +.every_line i { + color: #fff; + float: right; + margin-right: .8vw; + font-size: 1vw; +} + +/* 灌溉数据over--- */ + +/* 数据日志start--- */ +.data_day { + width: 100%; + height: 100%; + font-size: .55vw; + color: #fff; +} + +.data_day table { + height: 10%; + width: 100%; + overflow: hidden; + text-align: center; + margin: auto; + margin-left: 5%; +} + +.data_day .head { + color: #0EFCFF; +} + +.data_day ul { + display: inline-block; +} + +/* 数据日志over--- */ + + + +/* 右侧三个内容框over--- */ \ No newline at end of file diff --git a/examples/cesiumEx/templates/1_uav/css/reset.css b/examples/cesiumEx/templates/1_uav/css/reset.css new file mode 100644 index 00000000..40828d08 --- /dev/null +++ b/examples/cesiumEx/templates/1_uav/css/reset.css @@ -0,0 +1,394 @@ +html, +body, +div, +h1, +h2, +h3, +h4, +h5, +h6, +p, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +form, +label, +input, +legend, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td, +textarea, +article, +aside, +audio, +canvas, +figure, +footer, +header, +mark, +menu, +nav, +section, +time, +video { + margin: 0; + padding: 0; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: 100%; + font-weight: normal +} + +article, +aside, +dialog, +figure, +footer, +header, +hgroup, +nav, +section, +blockquote { + display: block; +} + +ul, +ol { + list-style: none; +} + +img { + border: 0 none; + vertical-align: top; +} + +blockquote, +q { + quotes: none; +} + +blockquote:before, +blockquote:after, +q:before, +q:after { + content: none; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +strong, +em, +i { + font-style: normal; + font-weight: normal; +} + +ins { + text-decoration: underline; +} + +del { + text-decoration: line-through; +} + +mark { + background: none; +} + +input::-ms-clear { + display: none !important; +} + +body { + font: 12px/1.5 \5FAE\8F6F\96C5\9ED1, \5B8B\4F53, "Hiragino Sans GB", STHeiti, "WenQuanYi Micro Hei", "Droid Sans Fallback", SimSun, sans-serif; + background: #fff; +} + +a { + text-decoration: none; + color: #333; +} + +a:hover { + text-decoration: underline; +} + +body, +html, +.main { + width: 100%; + height: 100% +} + +.main { + position: relative; + background: url(../img/bg.jpg) no-repeat; + background-size: cover; +} + +.nav { + position: relative; + top: .5vw; + width: 100%; + height: 5vw; + background: url(../img/top.png) no-repeat; + background-size: 100%; + text-align: center; + line-height: 4vw; + color: #0efcff; + font-size: 1.4vw; + letter-spacing: .4vw; +} + +.nav_btn { + position: absolute; + top: 1.5vw; + width: 100%; + height: 2vw; +} + +.btn_left { + float: left; + width: 25%; + margin-left: 5%; + height: 100%; +} + +.btn_right { + float: right; + width: 25%; + margin-right: 5%; + height: 100%; +} + +.btn_list { + position: relative; + float: left; + width: 5.5vw; + height: 1.6vw; + text-align: center; + line-height: 1.6vw; + font-size: .9vw; + color: #0efcff; + letter-spacing: .1vw; + cursor: pointer; +} + +.btn_left a, +.btn_right a { + display: inline-block; +} + +.btn_left a:nth-child(2) { + margin: 0 .6vw; +} + +.btn_left a:nth-child(4) { + margin-left: .6vw; +} + +.btn_right a:nth-child(2) { + margin: 0 .6vw; +} + +.btn_right a:nth-child(4) { + margin-left: .6vw; +} + +.btn_list:before { + content: ''; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border: 1px solid #6176AF; + transform: skewX(-38deg); +} + +.btn_list:hover::before { + border-color: #0efcff; + box-shadow: 1px 1px 3px 1px #0efcff inset; +} + +.listActive:before { + border-color: #0efcff; + box-shadow: 1px 1px 3px 1px #0efcff inset; +} + +.content { + position: relative; + width: 97%; + height: 87%; + margin: auto; + /* background: white; */ +} + +.baseBox { + position: relative; + float: left; + width: 48.8%; + height: 32.3%; + border: 1px solid #6176AF; + background: rgba(11, 21, 44, 0.60); + border-radius: 5px; +} + +.baseHeightBox { + height: 100%; +} + +.baseCenterBox { + margin: 1.5% 0; +} + +.leftBox { + float: left; + height: 100%; + width: 34.5%; + /* background: yellow; */ +} + +.rightBox { + float: left; + height: 100%; + width: 34.5%; +} + +.centerBox { + position: relative; + float: left; + width: 30%; + height: 100%; + margin: 0 .5%; + /* background: red; */ +} + +.marginLeft { + margin-left: 1.5%; +} + +/* 边框描边 */ +.leftTopLine1 { + position: absolute; + top: 0; + left: -1px; + height: 1vw; + width: 2px; + background: #0efcff; +} + +.leftTopLine2 { + position: absolute; + top: -1px; + left: 0; + height: 2px; + width: 1vw; + background: #0efcff; +} + +.rightTopLine1 { + position: absolute; + top: 0; + right: -1px; + height: 1vw; + width: 2px; + background: #0efcff; +} + +.rightTopLine2 { + position: absolute; + top: -1px; + right: 0; + height: 2px; + width: 1vw; + background: #0efcff; +} + +.leftBottomLine1 { + position: absolute; + bottom: 0; + left: -1px; + height: 1vw; + width: 2px; + background: #0efcff; +} + +.leftBottomLine2 { + position: absolute; + bottom: -1px; + left: 0; + height: 2px; + width: 1vw; + background: #0efcff; +} + +.rightBottomLine1 { + position: absolute; + bottom: 0; + right: -1px; + height: 1vw; + width: 2px; + background: #0efcff; +} + +.rightBottomLine2 { + position: absolute; + bottom: -1px; + right: 0; + height: 2px; + width: 1vw; + background: #0efcff; +} + +.boxTitle { + font-size: 1vw; + color: #0efcff; + width: 80%; + margin-left: .8vw; + margin-top: .5vw; +} + +.left { + float: left; +} + +.right { + font: right; +} + +/* 视频新加 */ +.video-js .vjs-control { + width: 1vw !important; +} + +.vjs-volume-panel { + display: none !important; +} + +.vjs-live-display { + display: none !important; +} + +.vjs-audio-button { + display: none !important; +} \ No newline at end of file diff --git a/examples/cesiumEx/templates/1_uav/img/1.jpg b/examples/cesiumEx/templates/1_uav/img/1.jpg new file mode 100644 index 00000000..2df4c30c Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/1.jpg differ diff --git a/examples/cesiumEx/templates/1_uav/img/2.jpg b/examples/cesiumEx/templates/1_uav/img/2.jpg new file mode 100644 index 00000000..af60069d Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/2.jpg differ diff --git a/examples/cesiumEx/templates/1_uav/img/bg.jpg b/examples/cesiumEx/templates/1_uav/img/bg.jpg new file mode 100644 index 00000000..a2ea5cb0 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/bg.jpg differ diff --git a/examples/cesiumEx/templates/1_uav/img/bottom_icons.png b/examples/cesiumEx/templates/1_uav/img/bottom_icons.png new file mode 100644 index 00000000..5e9f0318 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/bottom_icons.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/camera.png b/examples/cesiumEx/templates/1_uav/img/camera.png new file mode 100644 index 00000000..a5512d04 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/camera.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/control.png b/examples/cesiumEx/templates/1_uav/img/control.png new file mode 100644 index 00000000..7fac086f Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/control.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/data_pic.png b/examples/cesiumEx/templates/1_uav/img/data_pic.png new file mode 100644 index 00000000..81c34caf Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/data_pic.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/demo_pic.png b/examples/cesiumEx/templates/1_uav/img/demo_pic.png new file mode 100644 index 00000000..840c1be0 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/demo_pic.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/detector.png b/examples/cesiumEx/templates/1_uav/img/detector.png new file mode 100644 index 00000000..50ed96bb Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/detector.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/down2.png b/examples/cesiumEx/templates/1_uav/img/down2.png new file mode 100644 index 00000000..d36a3957 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/down2.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/fanhui.png b/examples/cesiumEx/templates/1_uav/img/fanhui.png new file mode 100644 index 00000000..b73fa038 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/fanhui.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/illness_pic.png b/examples/cesiumEx/templates/1_uav/img/illness_pic.png new file mode 100644 index 00000000..1dcce483 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/illness_pic.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/landLevel.png b/examples/cesiumEx/templates/1_uav/img/landLevel.png new file mode 100644 index 00000000..b21c6b85 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/landLevel.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/left.png b/examples/cesiumEx/templates/1_uav/img/left.png new file mode 100644 index 00000000..96644db2 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/left.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/plant.png b/examples/cesiumEx/templates/1_uav/img/plant.png new file mode 100644 index 00000000..595d6191 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/plant.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/progress.gif b/examples/cesiumEx/templates/1_uav/img/progress.gif new file mode 100644 index 00000000..13fd987e Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/progress.gif differ diff --git a/examples/cesiumEx/templates/1_uav/img/progress_pic.png b/examples/cesiumEx/templates/1_uav/img/progress_pic.png new file mode 100644 index 00000000..3d86ed88 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/progress_pic.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/right.png b/examples/cesiumEx/templates/1_uav/img/right.png new file mode 100644 index 00000000..e3ad0b57 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/right.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/right2.png b/examples/cesiumEx/templates/1_uav/img/right2.png new file mode 100644 index 00000000..fd7f30d9 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/right2.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/right3.png b/examples/cesiumEx/templates/1_uav/img/right3.png new file mode 100644 index 00000000..fd7f30d9 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/right3.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/sun.png b/examples/cesiumEx/templates/1_uav/img/sun.png new file mode 100644 index 00000000..4f6bc48c Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/sun.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/top.png b/examples/cesiumEx/templates/1_uav/img/top.png new file mode 100644 index 00000000..85b37fa3 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/top.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/tree_pic.png b/examples/cesiumEx/templates/1_uav/img/tree_pic.png new file mode 100644 index 00000000..e5f75d28 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/tree_pic.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/uva.png b/examples/cesiumEx/templates/1_uav/img/uva.png new file mode 100644 index 00000000..cd323318 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/uva.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/voice_pic.png b/examples/cesiumEx/templates/1_uav/img/voice_pic.png new file mode 100644 index 00000000..9cf88f86 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/voice_pic.png differ diff --git a/examples/cesiumEx/templates/1_uav/img/wifi.gif b/examples/cesiumEx/templates/1_uav/img/wifi.gif new file mode 100644 index 00000000..5eec7a36 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/wifi.gif differ diff --git a/examples/cesiumEx/templates/1_uav/img/wind_shape.gif b/examples/cesiumEx/templates/1_uav/img/wind_shape.gif new file mode 100644 index 00000000..1ff3ae27 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/wind_shape.gif differ diff --git a/examples/cesiumEx/templates/1_uav/img/wrj.png b/examples/cesiumEx/templates/1_uav/img/wrj.png new file mode 100644 index 00000000..bb1bfb84 Binary files /dev/null and b/examples/cesiumEx/templates/1_uav/img/wrj.png differ diff --git a/examples/cesiumEx/templates/1_uav/index.html b/examples/cesiumEx/templates/1_uav/index.html new file mode 100644 index 00000000..ca049fe7 --- /dev/null +++ b/examples/cesiumEx/templates/1_uav/index.html @@ -0,0 +1,14 @@ + + \ No newline at end of file diff --git a/examples/cesiumEx/templates/1_uav/js/dataScoll.js b/examples/cesiumEx/templates/1_uav/js/dataScoll.js new file mode 100644 index 00000000..9bd24a1b --- /dev/null +++ b/examples/cesiumEx/templates/1_uav/js/dataScoll.js @@ -0,0 +1,45 @@ + // 数字滚动 + function numInit() { + $('.counter-value').each(function() { + $(this).prop('Counter', 0).animate({ + Counter: $(this).text() + }, { + duration: 2500, + easing: 'swing', + step: function(now) { + $(this).text(now.toFixed(0)); + } + }); + }); + } + + function numInit1() { + $('.counter-value1').each(function() { + $(this).prop('Counter', 0).animate({ + Counter: $(this).text() + }, { + duration: 2500, + easing: 'swing', + step: function(now) { + $(this).text(now.toFixed(1)); + } + }); + }); + } + + function numInit2() { + $('.counter-value2').each(function() { + $(this).prop('Counter', 0).animate({ + Counter: $(this).text() + }, { + duration: 2500, + easing: 'swing', + step: function(now) { + $(this).text(now.toFixed(2)); + } + }); + }); + } + numInit(); + numInit1(); + numInit2(); \ No newline at end of file diff --git a/examples/cesiumEx/templates/1_uav/js/echarts.min.js b/examples/cesiumEx/templates/1_uav/js/echarts.min.js new file mode 100644 index 00000000..d3071ed9 --- /dev/null +++ b/examples/cesiumEx/templates/1_uav/js/echarts.min.js @@ -0,0 +1,35474 @@ +/* + * 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 = ''; + window.open().document.write(c) + } + else { + var d = document.createElement("a"); + d.download = n + "." + a, d.target = "_blank", d.href = o; + var f = new MouseEvent("click", { + view: window, + bubbles: !0, + cancelable: !1 + }); + d.dispatchEvent(f) + } + }, xA("saveAsImage", MA); + var IA = gc.toolbox.magicType; + + function AA(t) { + this.model = t + } + AA.defaultOption = { + show: !0, + type: [], + icon: { + line: "M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4", + bar: "M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7", + stack: "M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z", + tiled: "M2.3,2.2h22.8V25H2.3V2.2z M35,2.2h22.8V25H35V2.2zM2.3,35h22.8v22.8H2.3V35z M35,35h22.8v22.8H35V35z" + }, + title: D(IA.title), + option: {}, + seriesIndex: {} + }; + var TA = AA.prototype; + TA.getIcons = function() { + var t = this.model, + e = t.get("icon"), + i = {}; + return O(t.get("type"), function(t) { + e[t] && (i[t] = e[t]) + }), i + }; + var DA = { + line: function(t, e, i, n) { + if ("bar" === t) return m({ + id: e, + type: "line", + data: i.get("data"), + stack: i.get("stack"), + markPoint: i.get("markPoint"), + markLine: i.get("markLine") + }, n.get("option.line") || {}, !0) + }, + bar: function(t, e, i, n) { + if ("line" === t) return m({ + id: e, + type: "bar", + data: i.get("data"), + stack: i.get("stack"), + markPoint: i.get("markPoint"), + markLine: i.get("markLine") + }, n.get("option.bar") || {}, !0) + }, + stack: function(t, e, i, n) { + if ("line" === t || "bar" === t) return m({ + id: e, + stack: "__ec_magicType_stack__" + }, n.get("option.stack") || {}, !0) + }, + tiled: function(t, e, i, n) { + if ("line" === t || "bar" === t) return m({ + id: e, + stack: "" + }, n.get("option.tiled") || {}, !0) + } + }, + CA = [ + ["line", "bar"], + ["stack", "tiled"] + ]; + TA.onclick = function(u, t, h) { + var c = this.model, + e = c.get("seriesIndex." + h); + if (DA[h]) { + var d = { + series: [] + }; + O(CA, function(t) { + 0 <= _(t, h) && O(t, function(t) { + c.setIconStatus(t, "normal") + }) + }), c.setIconStatus(h, "emphasis"), u.eachComponent({ + mainType: "series", + query: null == e ? null : { + seriesIndex: e + } + }, function(t) { + var e = t.subType, + i = t.id, + n = DA[h](e, i, t, c); + n && (C(n, t.option), d.series.push(n)); + var a = t.coordinateSystem; + if (a && "cartesian2d" === a.type && ("line" === h || "bar" === h)) { + var o = a.getAxesByScale("ordinal")[0]; + if (o) { + var r = o.dim + "Axis", + s = u.queryComponents({ + mainType: r, + index: t.get(name + "Index"), + id: t.get(name + "Id") + })[0].componentIndex; + d[r] = d[r] || []; + for (var l = 0; l <= s; l++) d[r][s] = d[r][s] || {}; + d[r][s].boundaryGap = "bar" === h + } + } + }), t.dispatchAction({ + type: "changeMagicType", + currentType: h, + newOption: d + }) + } + }, tf({ + type: "changeMagicType", + event: "magicTypeChanged", + update: "prepareAndUpdate" + }, function(t, e) { + e.mergeOption(t.newOption) + }), xA("magicType", AA); + var LA = gc.toolbox.dataView, + kA = new Array(60).join("-"), + PA = "\t"; + + function NA(t) { + var e = function(t) { + var a = {}, + o = [], + r = []; + return t.eachRawSeries(function(t) { + var e = t.coordinateSystem; + if (!e || "cartesian2d" !== e.type && "polar" !== e.type) o.push(t); + else { + var i = e.getBaseAxis(); + if ("category" === i.type) { + var n = i.dim + "_" + i.index; + a[n] || (a[n] = { + categoryAxis: i, + valueAxis: e.getOtherAxis(i), + series: [] + }, r.push({ + axisDim: i.dim, + axisIndex: i.index + })), a[n].series.push(t) + } else o.push(t) + } + }), { + seriesGroupByCategoryAxis: a, + other: o, + meta: r + } + }(t); + return { + value: M([function(t) { + var h = []; + return O(t, function(t, e) { + var i = t.categoryAxis, + n = t.valueAxis.dim, + a = [" "].concat(N(t.series, function(t) { + return t.name + })), + o = [i.model.getCategories()]; + O(t.series, function(t) { + o.push(t.getRawData().mapArray(n, function(t) { + return t + })) + }); + for (var r = [a.join(PA)], s = 0; s < o[0].length; s++) { + for (var l = [], u = 0; u < o.length; u++) l.push(o[u][s]); + r.push(l.join(PA)) + } + h.push(r.join("\n")) + }), h.join("\n\n" + kA + "\n\n") + }(e.seriesGroupByCategoryAxis), function(t) { + return N(t, function(t) { + var a = t.getRawData(), + o = [t.name], + r = []; + return a.each(a.dimensions, function() { + for (var t = arguments.length, e = arguments[t - 1], i = a.getName(e), n = 0; n < t - 1; n++) r[n] = arguments[n]; + o.push((i ? i + PA : "") + r.join(PA)) + }), o.join("\n") + }).join("\n\n" + kA + "\n\n") + }(e.other)], function(t) { + return t.replace(/[\n\t\s]/g, "") + }).join("\n\n" + kA + "\n\n"), + meta: e.meta + } + } + + function OA(t) { + return t.replace(/^\s\s*/, "").replace(/\s\s*$/, "") + } + var RA = new RegExp("[" + PA + "]+", "g"); + + function zA(t, o) { + var e = t.split(new RegExp("\n*" + kA + "\n*", "g")), + r = { + series: [] + }; + return O(e, function(t, e) { + if (function(t) { + if (0 <= t.slice(0, t.indexOf("\n")).indexOf(PA)) return !0 + }(t)) { + var i = function(t) { + for (var e = t.split(/\n+/g), i = [], n = N(OA(e.shift()).split(RA), function(t) { + return { + name: t, + data: [] + } + }), a = 0; a < e.length; a++) { + var o = OA(e[a]).split(RA); + i.push(o.shift()); + for (var r = 0; r < o.length; r++) n[r] && (n[r].data[a] = o[r]) + } + return { + series: n, + categories: i + } + }(t), + n = o[e], + a = n.axisDim + "Axis"; + n && (r[a] = r[a] || [], r[a][n.axisIndex] = { + data: i.categories + }, r.series = r.series.concat(i.series)) + } else { + i = function(t) { + for (var e = t.split(/\n+/g), i = OA(e.shift()), n = [], a = 0; a < e.length; a++) { + var o, r = OA(e[a]).split(RA), + s = "", + l = !1; + o = isNaN(r[0]) ? (l = !0, s = r[0], r = r.slice(1), n[a] = { + name: s, + value: [] + }, n[a].value) : n[a] = []; + for (var u = 0; u < r.length; u++) o.push(+r[u]); + 1 === o.length && (l ? n[a].value = o[0] : n[a] = o[0]) + } + return { + name: i, + data: n + } + }(t); + r.series.push(i) + } + }), r + } + + function EA(t) { + this._dom = null, this.model = t + } + EA.defaultOption = { + show: !0, + readOnly: !1, + optionToContent: null, + contentToOption: null, + icon: "M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28", + title: D(LA.title), + lang: D(LA.lang), + backgroundColor: "#fff", + textColor: "#000", + textareaColor: "#fff", + textareaBorderColor: "#333", + buttonColor: "#c23531", + buttonTextColor: "#fff" + }, EA.prototype.onclick = function(t, e) { + var i = e.getDom(), + n = this.model; + this._dom && i.removeChild(this._dom); + var a = document.createElement("div"); + a.style.cssText = "position:absolute;left:5px;top:5px;bottom:5px;right:5px;", a.style.backgroundColor = n.get("backgroundColor") || "#fff"; + var o = document.createElement("h4"), + r = n.get("lang") || []; + o.innerHTML = r[0] || n.get("title"), o.style.cssText = "margin: 10px 20px;", o.style.color = n.get("textColor"); + var s = document.createElement("div"), + l = document.createElement("textarea"); + s.style.cssText = "display:block;width:100%;overflow:auto;"; + var u = n.get("optionToContent"), + h = n.get("contentToOption"), + c = NA(t); + if ("function" == typeof u) { + var d = u(e.getOption()); + "string" == typeof d ? s.innerHTML = d : G(d) && s.appendChild(d) + } else s.appendChild(l), l.readOnly = n.get("readOnly"), l.style.cssText = "width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;", l.style.color = n.get("textColor"), l.style.borderColor = n.get("textareaBorderColor"), l.style.backgroundColor = n.get("textareaColor"), l.value = c.value; + var f = c.meta, + p = document.createElement("div"); + p.style.cssText = "position:absolute;bottom:0;left:0;right:0;"; + var g = "float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px", + m = document.createElement("div"), + v = document.createElement("div"); + g += ";background-color:" + n.get("buttonColor"), g += ";color:" + n.get("buttonTextColor"); + var y = this; + + function x() { + i.removeChild(a), y._dom = null + } + Gt(m, "click", x), Gt(v, "click", function() { + var t; + try { + t = "function" == typeof h ? h(s, e.getOption()) : zA(l.value, f) + } catch (t) { + throw x(), new Error("Data view format error " + t) + } + t && e.dispatchAction({ + type: "changeDataView", + newOption: t + }), x() + }), m.innerHTML = r[1], v.innerHTML = r[2], v.style.cssText = g, m.style.cssText = g, n.get("readOnly") || p.appendChild(v), p.appendChild(m), a.appendChild(o), a.appendChild(s), a.appendChild(p), s.style.height = i.clientHeight - 80 + "px", i.appendChild(a), this._dom = a + }, EA.prototype.remove = function(t, e) { + this._dom && e.getDom().removeChild(this._dom) + }, EA.prototype.dispose = function(t, e) { + this.remove(t, e) + }, xA("dataView", EA), tf({ + type: "changeDataView", + event: "dataViewChanged", + update: "prepareAndUpdate" + }, function(t, n) { + var a = []; + O(t.newOption.series, function(t) { + var e = n.getSeriesByName(t.name)[0]; + if (e) { + var i = e.get("data"); + a.push({ + name: t.name, + data: function(t, n) { + return N(t, function(t, e) { + var i = n && n[e]; + return E(i) && !k(i) ? (E(t) && !k(t) && (t = t.value), C({ + value: t + }, i)) : t + }) + }(t.data, i) + }) + } else a.push(L({ + type: "scatter" + }, t)) + }), n.mergeOption(C({ + series: a + }, t.newOption)) + }); + var BA = O, + VA = _, + GA = A, + FA = ["dataToPoint", "pointToData"], + WA = ["grid", "xAxis", "yAxis", "geo", "graph", "polar", "radiusAxis", "angleAxis", "bmap"]; + + function HA(t, e, i) { + var n = this._targetInfoList = [], + a = {}, + o = XA(e, t); + BA(YA, function(t, e) { + i && i.include && !(0 <= VA(i.include, e)) || t(o, n, a) + }) + } + var ZA = HA.prototype; + + function UA(t) { + return t[0] > t[1] && t.reverse(), t + } + + function XA(t, e) { + return Pa(t, e, { + includeMainTypes: WA + }) + } + ZA.setOutputRanges = function(t, e) { + this.matchOutputRanges(t, e, function(t, e, i) { + if ((t.coordRanges || (t.coordRanges = [])).push(e), !t.coordRange) { + t.coordRange = e; + var n = KA[t.brushType](0, i, e); + t.__rangeOffset = { + offset: JA[t.brushType](n.values, t.range, [1, 1]), + xyMinMax: n.xyMinMax + } + } + }) + }, ZA.matchOutputRanges = function(t, n, a) { + BA(t, function(i) { + var t = this.findTargetInfo(i, n); + t && !0 !== t && O(t.coordSyses, function(t) { + var e = KA[i.brushType](1, t, i.range); + a(i, e.values, t, n) + }) + }, this) + }, ZA.setInputRanges = function(t, a) { + BA(t, function(t) { + var e = this.findTargetInfo(t, a); + if (t.range = t.range || [], e && !0 !== e) { + t.panelId = e.panelId; + var i = KA[t.brushType](0, e.coordSys, t.coordRange), + n = t.__rangeOffset; + t.range = n ? JA[t.brushType](i.values, n.offset, function(t, e) { + var i = tT(t), + n = tT(e), + a = [i[0] / n[0], i[1] / n[1]]; + return isNaN(a[0]) && (a[0] = 1), isNaN(a[1]) && (a[1] = 1), a + }(i.xyMinMax, n.xyMinMax)) : i.values + } + }, this) + }, ZA.makePanelOpts = function(i, n) { + return N(this._targetInfoList, function(t) { + var e = t.getPanelRect(); + return { + panelId: t.panelId, + defaultBrushType: n && n(t), + clipPath: bb(e), + isTargetByCursor: Mb(e, i, t.coordSysModel), + getLinearBrushOtherExtent: Sb(e) + } + }) + }, ZA.controlSeries = function(t, e, i) { + var n = this.findTargetInfo(t, i); + return !0 === n || n && 0 <= VA(n.coordSyses, e.coordinateSystem) + }, ZA.findTargetInfo = function(t, e) { + for (var i = this._targetInfoList, n = XA(e, t), a = 0; a < i.length; a++) { + var o = i[a], + r = t.panelId; + if (r) { + if (o.panelId === r) return o + } else + for (a = 0; a < jA.length; a++) + if (jA[a](n, o)) return o + } + return !0 + }; + var YA = { + grid: function(t, n) { + var a = t.xAxisModels, + o = t.yAxisModels, + e = t.gridModels, + i = Q(), + r = {}, + s = {}; + (a || o || e) && (BA(a, function(t) { + var e = t.axis.grid.model; + i.set(e.id, e), r[e.id] = !0 + }), BA(o, function(t) { + var e = t.axis.grid.model; + i.set(e.id, e), s[e.id] = !0 + }), BA(e, function(t) { + i.set(t.id, t), r[t.id] = !0, s[t.id] = !0 + }), i.each(function(t) { + var e = t.coordinateSystem, + i = []; + BA(e.getCartesians(), function(t, e) { + (0 <= VA(a, t.getAxis("x").model) || 0 <= VA(o, t.getAxis("y").model)) && i.push(t) + }), n.push({ + panelId: "grid--" + t.id, + gridModel: t, + coordSysModel: t, + coordSys: i[0], + coordSyses: i, + getPanelRect: qA.grid, + xAxisDeclared: r[t.id], + yAxisDeclared: s[t.id] + }) + })) + }, + geo: function(t, i) { + BA(t.geoModels, function(t) { + var e = t.coordinateSystem; + i.push({ + panelId: "geo--" + t.id, + geoModel: t, + coordSysModel: t, + coordSys: e, + coordSyses: [e], + getPanelRect: qA.geo + }) + }) + } + }, + jA = [function(t, e) { + var i = t.xAxisModel, + n = t.yAxisModel, + a = t.gridModel; + return !a && i && (a = i.axis.grid.model), !a && n && (a = n.axis.grid.model), a && a === e.gridModel + }, function(t, e) { + var i = t.geoModel; + return i && i === e.geoModel + }], + qA = { + grid: function() { + return this.coordSys.grid.getRect().clone() + }, + geo: function() { + var t = this.coordSys, + e = t.getBoundingRect().clone(); + return e.applyTransform(Ks(t)), e + } + }, + KA = { + lineX: GA($A, 0), + lineY: GA($A, 1), + rect: function(t, e, i) { + var n = e[FA[t]]([i[0][0], i[1][0]]), + a = e[FA[t]]([i[0][1], i[1][1]]), + o = [UA([n[0], a[0]]), UA([n[1], a[1]])]; + return { + values: o, + xyMinMax: o + } + }, + polygon: function(i, n, t) { + var a = [ + [1 / 0, -1 / 0], + [1 / 0, -1 / 0] + ]; + return { + values: N(t, function(t) { + var e = n[FA[i]](t); + return a[0][0] = Math.min(a[0][0], e[0]), a[1][0] = Math.min(a[1][0], e[1]), a[0][1] = Math.max(a[0][1], e[0]), a[1][1] = Math.max(a[1][1], e[1]), e + }), + xyMinMax: a + } + } + }; + + function $A(t, e, i, n) { + var a = i.getAxis(["x", "y"][t]), + o = UA(N([0, 1], function(t) { + return e ? a.coordToData(a.toLocalCoord(n[t])) : a.toGlobalCoord(a.dataToCoord(n[t])) + })), + r = []; + return r[t] = o, r[1 - t] = [NaN, NaN], { + values: o, + xyMinMax: r + } + } + var JA = { + lineX: GA(QA, 0), + lineY: GA(QA, 1), + rect: function(t, e, i) { + return [ + [t[0][0] - i[0] * e[0][0], t[0][1] - i[0] * e[0][1]], + [t[1][0] - i[1] * e[1][0], t[1][1] - i[1] * e[1][1]] + ] + }, + polygon: function(t, i, n) { + return N(t, function(t, e) { + return [t[0] - n[0] * i[e][0], t[1] - n[1] * i[e][1]] + }) + } + }; + + function QA(t, e, i, n) { + return [e[0] - n[t] * i[0], e[1] - n[t] * i[1]] + } + + function tT(t) { + return t ? [t[0][1] - t[0][0], t[1][1] - t[1][0]] : [NaN, NaN] + } + var eT = O, + iT = "\0_ec_hist_store"; + + function nT(t) { + var e = t[iT]; + return e = e || (t[iT] = [{}]) + } + fu.registerSubTypeDefaulter("dataZoom", function() { + return "slider" + }); + var aT = ["cartesian2d", "polar", "singleAxis"]; + var oT, rT, sT, lT, uT = (rT = ["axisIndex", "axis", "index", "id"], sT = N(oT = (oT = ["x", "y", "z", "radius", "angle", "single"]).slice(), Kl), lT = N(rT = (rT || []).slice(), Kl), function(a, o) { + O(oT, function(t, e) { + for (var i = { + name: t, + capital: sT[e] + }, n = 0; n < rT.length; n++) i[rT[n]] = t + lT[n]; + a.call(o, i) + }) + }); + + function hT(a, o, r) { + return function(t) { + var e, i = { + nodes: [], + records: {} + }; + if (o(function(t) { + i.records[t.name] = {} + }), !t) return i; + for (s(t, i); e = !1, a(n), e;); + + function n(t) { + ! function(t, e) { + return 0 <= _(e.nodes, t) + }(t, i) && function(t, i) { + var n = !1; + return o(function(e) { + O(r(t, e) || [], function(t) { + i.records[e.name][t] && (n = !0) + }) + }), n + }(t, i) && (s(t, i), e = !0) + } + return i + }; + + function s(t, i) { + i.nodes.push(t), o(function(e) { + O(r(t, e) || [], function(t) { + i.records[e.name][t] = !0 + }) + }) + } + } + + function cT(t, e, i, n) { + this._dimName = t, this._axisIndex = e, this._valueWindow, this._percentWindow, this._dataExtent, this._minMaxSpan, this.ecModel = n, this._dataZoomModel = i + } + var dT = O, + fT = wl; + + function pT(t, e) { + var i = t.getAxisModel(), + n = t._percentWindow, + a = t._valueWindow; + if (n) { + var o = Ml(a, [0, 500]); + o = Math.min(o, 20); + var r = e || 0 === n[0] && 100 === n[1]; + i.setRange(r ? null : +a[0].toFixed(o), r ? null : +a[1].toFixed(o)) + } + } + cT.prototype = { + constructor: cT, + hostedBy: function(t) { + return this._dataZoomModel === t + }, + getDataValueWindow: function() { + return this._valueWindow.slice() + }, + getDataPercentWindow: function() { + return this._percentWindow.slice() + }, + getTargetSeriesModels: function() { + var n = [], + a = this.ecModel; + return a.eachSeries(function(t) { + if (function(t) { + return 0 <= _(aT, t) + }(t.get("coordinateSystem"))) { + var e = this._dimName, + i = a.queryComponents({ + mainType: e + "Axis", + index: t.get(e + "AxisIndex"), + id: t.get(e + "AxisId") + })[0]; + this._axisIndex === (i && i.componentIndex) && n.push(t) + } + }, this), n + }, + getAxisModel: function() { + return this.ecModel.getComponent(this._dimName + "Axis", this._axisIndex) + }, + getOtherAxisModel: function() { + var t, e, i, n = this._dimName, + a = this.ecModel, + o = this.getAxisModel(); + return t = "x" === n || "y" === n ? (e = "gridIndex", "x" === n ? "y" : "x") : (e = "polarIndex", "angle" === n ? "radius" : "angle"), a.eachComponent(t + "Axis", function(t) { + (t.get(e) || 0) === (o.get(e) || 0) && (i = t) + }), i + }, + getMinMaxSpan: function() { + return D(this._minMaxSpan) + }, + calculateDataWindow: function(a) { + var o, r = this._dataExtent, + s = this.getAxisModel().axis.scale, + l = this._dataZoomModel.getRangePropMode(), + u = [0, 100], + h = [], + c = []; + dT(["start", "end"], function(t, e) { + var i = a[t], + n = a[t + "Value"]; + "percent" === l[e] ? (null == i && (i = u[e]), n = s.parse(yl(i, u, r))) : (o = !0, i = yl(n = null == n ? r[e] : s.parse(n), r, u)), c[e] = n, h[e] = i + }), fT(c), fT(h); + var d = this._minMaxSpan; + + function t(t, e, i, n, a) { + var o = a ? "Span" : "ValueSpan"; + xw(0, t, i, "all", d["min" + o], d["max" + o]); + for (var r = 0; r < 2; r++) e[r] = yl(t[r], i, n, !0), a && (e[r] = s.parse(e[r])) + } + return o ? t(c, h, r, u, !1) : t(h, c, u, r, !0), { + valueWindow: c, + percentWindow: h + } + }, + reset: function(t) { + if (t === this._dataZoomModel) { + var e = this.getTargetSeriesModels(); + this._dataExtent = function(t, e, i) { + var n = [1 / 0, -1 / 0]; + dT(i, function(t) { + var i = t.getData(); + i && dT(i.mapDimension(e, !0), function(t) { + var e = i.getApproximateExtent(t); + e[0] < n[0] && (n[0] = e[0]), e[1] > n[1] && (n[1] = e[1]) + }) + }), n[1] < n[0] && (n = [NaN, NaN]); + return function(t, e) { + var i = t.getAxisModel(), + n = i.getMin(!0), + a = "category" === i.get("type"), + o = a && i.getCategories().length; + null != n && "dataMin" !== n && "function" != typeof n ? e[0] = n : a && (e[0] = 0 < o ? 0 : NaN); + var r = i.getMax(!0); + null != r && "dataMax" !== r && "function" != typeof r ? e[1] = r : a && (e[1] = 0 < o ? o - 1 : NaN); + i.get("scale", !0) || (0 < e[0] && (e[0] = 0), e[1] < 0 && (e[1] = 0)) + }(t, n), n + }(this, this._dimName, e), + function(n) { + var a = n._minMaxSpan = {}, + o = n._dataZoomModel, + r = n._dataExtent; + dT(["min", "max"], function(t) { + var e = o.get(t + "Span"), + i = o.get(t + "ValueSpan"); + null != i && (i = n.getAxisModel().axis.scale.parse(i)), null != i ? e = yl(r[0] + i, r, [0, 100], !0) : null != e && (i = yl(e, [0, 100], r, !0) - r[0]), a[t + "Span"] = e, a[t + "ValueSpan"] = i + }) + }(this); + var i = this.calculateDataWindow(t.settledOption); + this._valueWindow = i.valueWindow, this._percentWindow = i.percentWindow, pT(this) + } + }, + restore: function(t) { + t === this._dataZoomModel && (this._valueWindow = this._percentWindow = null, pT(this, !0)) + }, + filterData: function(t, e) { + if (t === this._dataZoomModel) { + var n = this._dimName, + i = this.getTargetSeriesModels(), + a = t.get("filterMode"), + c = this._valueWindow; + "none" !== a && dT(i, function(i) { + var u = i.getData(), + h = u.mapDimension(n, !0); + h.length && ("weakFilter" === a ? u.filterSelf(function(t) { + for (var e, i, n, a = 0; a < h.length; a++) { + var o = u.get(h[a], t), + r = !isNaN(o), + s = o < c[0], + l = o > c[1]; + if (r && !s && !l) return !0; + r && (n = !0), s && (e = !0), l && (i = !0) + } + return n && e && i + }) : dT(h, function(t) { + if ("empty" === a) i.setData(u = u.map(t, function(t) { + return function(t) { + return t >= c[0] && t <= c[1] + }(t) ? t : NaN + })); + else { + var e = {}; + e[t] = c, u.selectRange(e) + } + }), dT(h, function(t) { + u.setApproximateExtent(c, t) + })) + }) + } + } + }; + var gT = O, + mT = uT, + vT = sf({ + type: "dataZoom", + dependencies: ["xAxis", "yAxis", "zAxis", "radiusAxis", "angleAxis", "singleAxis", "series"], + defaultOption: { + zlevel: 0, + z: 4, + orient: null, + xAxisIndex: null, + yAxisIndex: null, + filterMode: "filter", + throttle: null, + start: 0, + end: 100, + startValue: null, + endValue: null, + minSpan: null, + maxSpan: null, + minValueSpan: null, + maxValueSpan: null, + rangeMode: null + }, + init: function(t, e, i) { + this._dataIntervalByAxis = {}, this._dataInfo = {}, this._axisProxies = {}, this.textStyleModel, this._autoThrottle = !0, this._rangePropMode = ["percent", "percent"]; + var n = yT(t); + this.settledOption = n, this.mergeDefaultAndTheme(t, i), this.doInit(n) + }, + mergeOption: function(t) { + var e = yT(t); + m(this.option, t, !0), m(this.settledOption, e, !0), this.doInit(e) + }, + doInit: function(t) { + var i = this.option; + v.canvasSupported || (i.realtime = !1), this._setDefaultThrottle(t), xT(this, t); + var n = this.settledOption; + gT([ + ["start", "startValue"], + ["end", "endValue"] + ], function(t, e) { + "value" === this._rangePropMode[e] && (i[t[0]] = n[t[0]] = null) + }, this), this.textStyleModel = this.getModel("textStyle"), this._resetTarget(), this._giveAxisProxies() + }, + _giveAxisProxies: function() { + var r = this._axisProxies; + this.eachTargetAxis(function(t, e, i, n) { + var a = this.dependentModels[t.axis][e], + o = a.__dzAxisProxy || (a.__dzAxisProxy = new cT(t.name, e, this, n)); + r[t.name + "_" + e] = o + }, this) + }, + _resetTarget: function() { + var i = this.option, + t = this._judgeAutoMode(); + mT(function(t) { + var e = t.axisIndex; + i[e] = wa(i[e]) + }, this), "axisIndex" === t ? this._autoSetAxisIndex() : "orient" === t && this._autoSetOrient() + }, + _judgeAutoMode: function() { + var e = this.option, + i = !1; + mT(function(t) { + null != e[t.axisIndex] && (i = !0) + }, this); + var t = e.orient; + return null == t && i ? "orient" : i ? void 0 : (null == t && (e.orient = "horizontal"), "axisIndex") + }, + _autoSetAxisIndex: function() { + var o = !0, + e = this.get("orient", !0), + r = this.option, + t = this.dependentModels; + if (o) { + var i = "vertical" === e ? "y" : "x"; + t[i + "Axis"].length ? (r[i + "AxisIndex"] = [0], o = !1) : gT(t.singleAxis, function(t) { + o && t.get("orient", !0) === e && (r.singleAxisIndex = [t.componentIndex], o = !1) + }) + } + o && mT(function(t) { + if (o) { + var e = [], + i = this.dependentModels[t.axis]; + if (i.length && !e.length) + for (var n = 0, a = i.length; n < a; n++) "category" === i[n].get("type") && e.push(n); + (r[t.axisIndex] = e).length && (o = !1) + } + }, this), o && this.ecModel.eachSeries(function(a) { + this._isSeriesHasAllAxesTypeOf(a, "value") && mT(function(t) { + var e = r[t.axisIndex], + i = a.get(t.axisIndex), + n = a.get(t.axisId); + _(e, i = a.ecModel.queryComponents({ + mainType: t.axis, + index: i, + id: n + })[0].componentIndex) < 0 && e.push(i) + }) + }, this) + }, + _autoSetOrient: function() { + var e; + this.eachTargetAxis(function(t) { + e = e || t.name + }, this), this.option.orient = "y" === e ? "vertical" : "horizontal" + }, + _isSeriesHasAllAxesTypeOf: function(n, a) { + var o = !0; + return mT(function(t) { + var e = n.get(t.axisIndex), + i = this.dependentModels[t.axis][e]; + i && i.get("type") === a || (o = !1) + }, this), o + }, + _setDefaultThrottle: function(t) { + if (t.hasOwnProperty("throttle") && (this._autoThrottle = !1), this._autoThrottle) { + var e = this.ecModel.option; + this.option.throttle = e.animation && 0 < e.animationDurationUpdate ? 100 : 20 + } + }, + getFirstTargetAxisModel: function() { + var i; + return mT(function(t) { + if (null == i) { + var e = this.get(t.axisIndex); + e.length && (i = this.dependentModels[t.axis][e[0]]) + } + }, this), i + }, + eachTargetAxis: function(i, n) { + var a = this.ecModel; + mT(function(e) { + gT(this.get(e.axisIndex), function(t) { + i.call(n, e, t, this, a) + }, this) + }, this) + }, + getAxisProxy: function(t, e) { + return this._axisProxies[t + "_" + e] + }, + getAxisModel: function(t, e) { + var i = this.getAxisProxy(t, e); + return i && i.getAxisModel() + }, + setRawRange: function(e) { + var i = this.option, + n = this.settledOption; + gT([ + ["start", "startValue"], + ["end", "endValue"] + ], function(t) { + null == e[t[0]] && null == e[t[1]] || (i[t[0]] = n[t[0]] = e[t[0]], i[t[1]] = n[t[1]] = e[t[1]]) + }, this), xT(this, e) + }, + setCalculatedRange: function(e) { + var i = this.option; + gT(["start", "startValue", "end", "endValue"], function(t) { + i[t] = e[t] + }) + }, + getPercentRange: function() { + var t = this.findRepresentativeAxisProxy(); + if (t) return t.getDataPercentWindow() + }, + getValueRange: function(t, e) { + if (null != t || null != e) return this.getAxisProxy(t, e).getDataValueWindow(); + var i = this.findRepresentativeAxisProxy(); + return i ? i.getDataValueWindow() : void 0 + }, + findRepresentativeAxisProxy: function(t) { + if (t) return t.__dzAxisProxy; + var e = this._axisProxies; + for (var i in e) + if (e.hasOwnProperty(i) && e[i].hostedBy(this)) return e[i]; + for (var i in e) + if (e.hasOwnProperty(i) && !e[i].hostedBy(this)) return e[i] + }, + getRangePropMode: function() { + return this._rangePropMode.slice() + } + }); + + function yT(e) { + var i = {}; + return gT(["start", "end", "startValue", "endValue", "throttle"], function(t) { + e.hasOwnProperty(t) && (i[t] = e[t]) + }), i + } + + function xT(t, a) { + var o = t._rangePropMode, + r = t.get("rangeMode"); + gT([ + ["start", "startValue"], + ["end", "endValue"] + ], function(t, e) { + var i = null != a[t[0]], + n = null != a[t[1]]; + i && !n ? o[e] = "percent" : !i && n ? o[e] = "value" : r ? o[e] = r[e] : i && (o[e] = "percent") + }) + } + var _T = Kh.extend({ + type: "dataZoom", + render: function(t, e, i, n) { + this.dataZoomModel = t, this.ecModel = e, this.api = i + }, + getTargetCoordInfo: function() { + var t = this.dataZoomModel, + a = this.ecModel, + o = {}; + return t.eachTargetAxis(function(t, e) { + var i = a.getComponent(t.axis, e); + if (i) { + var n = i.getCoordSysModel(); + n && function(t, e, i, n) { + for (var a, o = 0; o < i.length; o++) + if (i[o].model === t) { + a = i[o]; + break + } a || i.push(a = { + model: t, + axisModels: [], + coordIndex: n + }); + a.axisModels.push(e) + }(n, i, o[n.mainType] || (o[n.mainType] = []), n.componentIndex) + } + }, this), o + } + }); + vT.extend({ + type: "dataZoom.select" + }), _T.extend({ + type: "dataZoom.select" + }), Qd({ + getTargetSeries: function(t) { + var n = Q(); + return t.eachComponent("dataZoom", function(t) { + t.eachTargetAxis(function(t, e, i) { + O(i.getAxisProxy(t.name, e).getTargetSeriesModels(), function(t) { + n.set(t.uid, t) + }) + }) + }), n + }, + modifyOutputEnd: !0, + overallReset: function(t, n) { + t.eachComponent("dataZoom", function(t) { + t.eachTargetAxis(function(t, e, i) { + i.getAxisProxy(t.name, e).reset(i, n) + }), t.eachTargetAxis(function(t, e, i) { + i.getAxisProxy(t.name, e).filterData(i, n) + }) + }), t.eachComponent("dataZoom", function(t) { + var e = t.findRepresentativeAxisProxy(), + i = e.getDataPercentWindow(), + n = e.getDataValueWindow(); + t.setCalculatedRange({ + start: i[0], + end: i[1], + startValue: n[0], + endValue: n[1] + }) + }) + } + }), tf("dataZoom", function(i, t) { + var n = hT(T(t.eachComponent, t, "dataZoom"), uT, function(t, e) { + return t.get(e.axisIndex) + }), + a = []; + t.eachComponent({ + mainType: "dataZoom", + query: i + }, function(t, e) { + a.push.apply(a, n(t).nodes) + }), O(a, function(t, e) { + t.setRawRange({ + start: i.start, + end: i.end, + startValue: i.startValue, + endValue: i.endValue + }) + }) + }); + var wT = gc.toolbox.dataZoom, + bT = O; + + function ST(t, e, i) { + (this._brushController = new Xw(i.getZr())).on("brush", T(this._onBrush, this)).mount(), this._isZoomActive + } + ST.defaultOption = { + show: !0, + filterMode: "filter", + icon: { + zoom: "M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1", + back: "M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26" + }, + title: D(wT.title) + }; + var MT = ST.prototype; + MT.render = function(t, e, i, n) { + this.model = t, this.ecModel = e, this.api = i, + function(t, e, i, n, a) { + var o = i._isZoomActive; + n && "takeGlobalCursor" === n.type && (o = "dataZoomSelect" === n.key && n.dataZoomSelectActive); + i._isZoomActive = o, t.setIconStatus("zoom", o ? "emphasis" : "normal"); + var r = new HA(AT(t.option), e, { + include: ["grid"] + }); + i._brushController.setPanels(r.makePanelOpts(a, function(t) { + return t.xAxisDeclared && !t.yAxisDeclared ? "lineX" : !t.xAxisDeclared && t.yAxisDeclared ? "lineY" : "rect" + })).enableBrush(!!o && { + brushType: "auto", + brushStyle: { + lineWidth: 0, + fill: "rgba(0,0,0,0.2)" + } + }) + }(t, e, this, n, i), + function(t, e) { + t.setIconStatus("back", 1 < function(t) { + return nT(t).length + }(e) ? "emphasis" : "normal") + }(t, e) + }, MT.onclick = function(t, e, i) { + IT[i].call(this) + }, MT.remove = function(t, e) { + this._brushController.unmount() + }, MT.dispose = function(t, e) { + this._brushController.dispose() + }; + var IT = { + zoom: function() { + var t = !this._isZoomActive; + this.api.dispatchAction({ + type: "takeGlobalCursor", + key: "dataZoomSelect", + dataZoomSelectActive: t + }) + }, + back: function() { + this._dispatchZoomAction(function(t) { + var n = nT(t), + e = n[n.length - 1]; + 1 < n.length && n.pop(); + var a = {}; + return eT(e, function(t, e) { + for (var i = n.length - 1; 0 <= i; i--) { + if (t = n[i][e]) { + a[e] = t; + break + } + } + }), a + }(this.ecModel)) + } + }; + + function AT(e) { + var i = {}; + return O(["xAxisIndex", "yAxisIndex"], function(t) { + i[t] = e[t], null == i[t] && (i[t] = "all"), !1 !== i[t] && "none" !== i[t] || (i[t] = []) + }), i + } + MT._onBrush = function(t, e) { + if (e.isEnd && t.length) { + var s = {}, + l = this.ecModel; + this._brushController.updateCovers([]), new HA(AT(this.model.option), l, { + include: ["grid"] + }).matchOutputRanges(t, l, function(t, e, i) { + if ("cartesian2d" === i.type) { + var n = t.brushType; + "rect" === n ? (a("x", i, e[0]), a("y", i, e[1])) : a({ + lineX: "x", + lineY: "y" + } [n], i, e) + } + }), + function(o, t) { + var r = nT(o); + eT(t, function(t, e) { + for (var i = r.length - 1; 0 <= i; i--) { + if (r[i][e]) break + } + if (i < 0) { + var n = o.queryComponents({ + mainType: "dataZoom", + subType: "select", + id: e + })[0]; + if (n) { + var a = n.getPercentRange(); + r[0][e] = { + dataZoomId: e, + start: a[0], + end: a[1] + } + } + } + }), r.push(t) + }(l, s), this._dispatchZoomAction(s) + } + + function a(t, e, i) { + var n = e.getAxis(t), + a = n.model, + o = function(e, i, t) { + var n; + return t.eachComponent({ + mainType: "dataZoom", + subType: "select" + }, function(t) { + t.getAxisModel(e, i.componentIndex) && (n = t) + }), n + }(t, a, l), + r = o.findRepresentativeAxisProxy(a).getMinMaxSpan(); + null == r.minValueSpan && null == r.maxValueSpan || (i = xw(0, i.slice(), n.scale.getExtent(), 0, r.minValueSpan, r.maxValueSpan)), o && (s[o.id] = { + dataZoomId: o.id, + startValue: i[0], + endValue: i[1] + }) + } + }, MT._dispatchZoomAction = function(t) { + var i = []; + bT(t, function(t, e) { + i.push(D(t)) + }), i.length && this.api.dispatchAction({ + type: "dataZoom", + from: this.uid, + batch: i + }) + }, xA("dataZoom", ST), Jd(function(s) { + if (s) { + var l = s.dataZoom || (s.dataZoom = []); + k(l) || (s.dataZoom = l = [l]); + var t = s.toolbox; + if (t && (k(t) && (t = t[0]), t && t.feature)) { + var e = t.feature.dataZoom; + i("xAxis", e), i("yAxis", e) + } + } + + function i(n, a) { + if (a) { + var o = n + "Index", + r = a[o]; + null == r || "all" === r || k(r) || (r = !1 === r || "none" === r ? [] : [r]), + function(t, e) { + var i = s[t]; + k(i) || (i = i ? [i] : []); + bT(i, e) + }(n, function(t, e) { + if (null == r || "all" === r || -1 !== _(r, e)) { + var i = { + type: "select", + $fromToolbox: !0, + filterMode: a.filterMode || "filter", + id: "\0_ec_\0toolbox-dataZoom_" + n + e + }; + i[o] = e, l.push(i) + } + }) + } + } + }); + var TT = gc.toolbox.restore; + + function DT(t) { + this.model = t + } + DT.defaultOption = { + show: !0, + icon: "M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5", + title: TT.title + }, DT.prototype.onclick = function(t, e, i) { + ! function(t) { + t[iT] = null + }(t), e.dispatchAction({ + type: "restore", + from: this.uid + }) + }, xA("restore", DT), tf({ + type: "restore", + event: "restore", + update: "prepareAndUpdate" + }, function(t, e) { + e.resetOption("recreate") + }), sf({ + type: "tooltip", + dependencies: ["axisPointer"], + defaultOption: { + zlevel: 0, + z: 60, + show: !0, + showContent: !0, + trigger: "item", + triggerOn: "mousemove|click", + alwaysShowContent: !1, + displayMode: "single", + renderMode: "auto", + confine: !1, + showDelay: 0, + hideDelay: 100, + transitionDuration: .4, + enterable: !1, + backgroundColor: "rgba(50,50,50,0.7)", + borderColor: "#333", + borderRadius: 4, + borderWidth: 0, + padding: 5, + extraCssText: "", + axisPointer: { + type: "line", + axis: "auto", + animation: "auto", + animationDurationUpdate: 200, + animationEasingUpdate: "exponentialOut", + crossStyle: { + color: "#999", + width: 1, + type: "dashed", + textStyle: {} + } + }, + textStyle: { + color: "#fff", + fontSize: 14 + } + } + }); + var CT = O, + LT = Bl, + kT = ["", "-webkit-", "-moz-", "-o-"]; + + function PT(a) { + var o = [], + t = a.get("transitionDuration"), + e = a.get("backgroundColor"), + i = a.getModel("textStyle"), + n = a.get("padding"); + return t && o.push(function(t) { + var e = "cubic-bezier(0.23, 1, 0.32, 1)", + i = "left " + t + "s " + e + ",top " + t + "s " + e; + return N(kT, function(t) { + return t + "transition:" + i + }).join(";") + }(t)), e && (v.canvasSupported ? o.push("background-Color:" + e) : (o.push("background-Color:#" + Be(e)), o.push("filter:alpha(opacity=70)"))), CT(["width", "color", "radius"], function(t) { + var e = "border-" + t, + i = LT(e), + n = a.get(i); + null != n && o.push(e + ":" + n + ("color" === t ? "" : "px")) + }), o.push(function(i) { + var n = [], + t = i.get("fontSize"), + e = i.getTextColor(); + return e && n.push("color:" + e), n.push("font:" + i.getFont()), t && n.push("line-height:" + Math.round(3 * t / 2) + "px"), CT(["decoration", "align"], function(t) { + var e = i.get(t); + e && n.push("text-" + t + ":" + e) + }), n.join(";") + }(i)), null != n && o.push("padding:" + Vl(n).join("px ") + "px"), o.join(";") + ";" + } + + function NT(i, t) { + if (v.wxa) return null; + var e = document.createElement("div"), + n = this._zr = t.getZr(); + this.el = e, this._x = t.getWidth() / 2, this._y = t.getHeight() / 2, i.appendChild(e), this._container = i, this._show = !1, this._hideTimeout; + var a = this; + e.onmouseenter = function() { + a._enterable && (clearTimeout(a._hideTimeout), a._show = !0), a._inContent = !0 + }, e.onmousemove = function(t) { + if (t = t || window.event, !a._enterable) { + var e = n.handler; + Vt(i, t, !0), e.dispatch("mousemove", t) + } + }, e.onmouseleave = function() { + a._enterable && a._show && a.hideLater(a._hideDelay), a._inContent = !1 + } + } + + function OT(t) { + this._zr = t.getZr(), this._show = !1, this._hideTimeout + } + NT.prototype = { + constructor: NT, + _enterable: !0, + update: function() { + var t = this._container, + e = t.currentStyle || document.defaultView.getComputedStyle(t), + i = t.style; + "absolute" !== i.position && "absolute" !== e.position && (i.position = "relative") + }, + show: function(t) { + clearTimeout(this._hideTimeout); + var e = this.el; + e.style.cssText = "position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;" + PT(t) + ";left:" + this._x + "px;top:" + this._y + "px;" + (t.get("extraCssText") || ""), e.style.display = e.innerHTML ? "block" : "none", e.style.pointerEvents = this._enterable ? "auto" : "none", this._show = !0 + }, + setContent: function(t) { + this.el.innerHTML = null == t ? "" : t + }, + setEnterable: function(t) { + this._enterable = t + }, + getSize: function() { + var t = this.el; + return [t.clientWidth, t.clientHeight] + }, + moveTo: function(t, e) { + var i, n = this._zr; + n && n.painter && (i = n.painter.getViewportRootOffset()) && (t += i.offsetLeft, e += i.offsetTop); + var a = this.el.style; + a.left = t + "px", a.top = e + "px", this._x = t, this._y = e + }, + hide: function() { + this.el.style.display = "none", this._show = !1 + }, + hideLater: function(t) { + !this._show || this._inContent && this._enterable || (t ? (this._hideDelay = t, this._show = !1, this._hideTimeout = setTimeout(T(this.hide, this), t)) : this.hide()) + }, + isShow: function() { + return this._show + }, + getOuterSize: function() { + var t = this.el.clientWidth, + e = this.el.clientHeight; + if (document.defaultView && document.defaultView.getComputedStyle) { + var i = document.defaultView.getComputedStyle(this.el); + i && (t += parseInt(i.borderLeftWidth, 10) + parseInt(i.borderRightWidth, 10), e += parseInt(i.borderTopWidth, 10) + parseInt(i.borderBottomWidth, 10)) + } + return { + width: t, + height: e + } + } + }, OT.prototype = { + constructor: OT, + _enterable: !0, + update: function() {}, + show: function(t) { + this._hideTimeout && clearTimeout(this._hideTimeout), this.el.attr("show", !0), this._show = !0 + }, + setContent: function(t, e, i) { + this.el && this._zr.remove(this.el); + for (var n = {}, a = t, o = "{marker", r = a.indexOf(o); 0 <= r;) { + var s = a.indexOf("|}"), + l = a.substr(r + o.length, s - r - o.length); - 1 < l.indexOf("sub") ? n["marker" + l] = { + textWidth: 4, + textHeight: 4, + textBorderRadius: 2, + textBackgroundColor: e[l], + textOffset: [3, 0] + } : n["marker" + l] = { + textWidth: 10, + textHeight: 10, + textBorderRadius: 5, + textBackgroundColor: e[l] + }, r = (a = a.substr(s + 1)).indexOf("{marker") + } + this.el = new Dr({ + style: { + rich: n, + text: t, + textLineHeight: 20, + textBackgroundColor: i.get("backgroundColor"), + textBorderRadius: i.get("borderRadius"), + textFill: i.get("textStyle.color"), + textPadding: i.get("padding") + }, + z: i.get("z") + }), this._zr.add(this.el); + var u = this; + this.el.on("mouseover", function() { + u._enterable && (clearTimeout(u._hideTimeout), u._show = !0), u._inContent = !0 + }), this.el.on("mouseout", function() { + u._enterable && u._show && u.hideLater(u._hideDelay), u._inContent = !1 + }) + }, + setEnterable: function(t) { + this._enterable = t + }, + getSize: function() { + var t = this.el.getBoundingRect(); + return [t.width, t.height] + }, + moveTo: function(t, e) { + this.el && this.el.attr("position", [t, e]) + }, + hide: function() { + this.el && this.el.hide(), this._show = !1 + }, + hideLater: function(t) { + !this._show || this._inContent && this._enterable || (t ? (this._hideDelay = t, this._show = !1, this._hideTimeout = setTimeout(T(this.hide, this), t)) : this.hide()) + }, + isShow: function() { + return this._show + }, + getOuterSize: function() { + var t = this.getSize(); + return { + width: t[0], + height: t[1] + } + } + }; + var RT = T, + zT = O, + ET = xl, + BT = new Hr({ + shape: { + x: -1, + y: -1, + width: 2, + height: 2 + } + }); + + function VT(t) { + for (var e = t.pop(); t.length;) { + var i = t.pop(); + i && (dl.isInstance(i) && (i = i.get("tooltip", !0)), "string" == typeof i && (i = { + formatter: i + }), e = new dl(i, e, e.ecModel)) + } + return e + } + + function GT(t, e) { + return t.dispatchAction || T(e.dispatchAction, e) + } + + function FT(t) { + return "center" === t || "middle" === t + } + lf({ + type: "tooltip", + init: function(t, e) { + if (!v.node) { + var i, n = t.getComponent("tooltip").get("renderMode"); + this._renderMode = Ra(n), "html" === this._renderMode ? (i = new NT(e.getDom(), e), this._newLine = "
") : (i = new OT(e), this._newLine = "\n"), this._tooltipContent = i + } + }, + render: function(t, e, i) { + if (!v.node) { + this.group.removeAll(), this._tooltipModel = t, this._ecModel = e, this._api = i, this._lastDataByCoordSys = null, this._alwaysShowContent = t.get("alwaysShowContent"); + var n = this._tooltipContent; + n.update(), n.setEnterable(t.get("enterable")), this._initGlobalListener(), this._keepShow() + } + }, + _initGlobalListener: function() { + var n = this._tooltipModel.get("triggerOn"); + CM("itemTooltip", this._api, RT(function(t, e, i) { + "none" !== n && (0 <= n.indexOf(t) ? this._tryShow(e, i) : "leave" === t && this._hide(i)) + }, this)) + }, + _keepShow: function() { + var t = this._tooltipModel, + e = this._ecModel, + i = this._api; + if (null != this._lastX && null != this._lastY && "none" !== t.get("triggerOn")) { + var n = this; + clearTimeout(this._refreshUpdateTimeout), this._refreshUpdateTimeout = setTimeout(function() { + i.isDisposed() || n.manuallyShowTip(t, e, i, { + x: n._lastX, + y: n._lastY + }) + }) + } + }, + manuallyShowTip: function(t, e, i, n) { + if (n.from !== this.uid && !v.node) { + var a = GT(n, i); + this._ticket = ""; + var o = n.dataByCoordSys; + if (n.tooltip && null != n.x && null != n.y) { + var r = BT; + r.position = [n.x, n.y], r.update(), r.tooltip = n.tooltip, this._tryShow({ + offsetX: n.x, + offsetY: n.y, + target: r + }, a) + } else if (o) this._tryShow({ + offsetX: n.x, + offsetY: n.y, + position: n.position, + event: {}, + dataByCoordSys: n.dataByCoordSys, + tooltipOption: n.tooltipOption + }, a); + else if (null != n.seriesIndex) { + if (this._manuallyAxisShowTip(t, e, i, n)) return; + var s = yM(n, e), + l = s.point[0], + u = s.point[1]; + null != l && null != u && this._tryShow({ + offsetX: l, + offsetY: u, + position: n.position, + target: s.el, + event: {} + }, a) + } else null != n.x && null != n.y && (i.dispatchAction({ + type: "updateAxisPointer", + x: n.x, + y: n.y + }), this._tryShow({ + offsetX: n.x, + offsetY: n.y, + position: n.position, + target: i.getZr().findHover(n.x, n.y).target, + event: {} + }, a)) + } + }, + manuallyHideTip: function(t, e, i, n) { + var a = this._tooltipContent; + !this._alwaysShowContent && this._tooltipModel && a.hideLater(this._tooltipModel.get("hideDelay")), this._lastX = this._lastY = null, n.from !== this.uid && this._hide(GT(n, i)) + }, + _manuallyAxisShowTip: function(t, e, i, n) { + var a = n.seriesIndex, + o = n.dataIndex, + r = e.getComponent("axisPointer").coordSysAxesInfo; + if (null != a && null != o && null != r) { + var s = e.getSeriesByIndex(a); + if (s) + if ("axis" === (t = VT([s.getData().getItemModel(o), s, (s.coordinateSystem || {}).model, t])).get("trigger")) return i.dispatchAction({ + type: "updateAxisPointer", + seriesIndex: a, + dataIndex: o, + position: n.position + }), !0 + } + }, + _tryShow: function(t, e) { + var i = t.target; + if (this._tooltipModel) { + this._lastX = t.offsetX, this._lastY = t.offsetY; + var n = t.dataByCoordSys; + n && n.length ? this._showAxisTooltip(n, t) : i && null != i.dataIndex ? (this._lastDataByCoordSys = null, this._showSeriesItemTooltip(t, i, e)) : i && i.tooltip ? (this._lastDataByCoordSys = null, this._showComponentItemTooltip(t, i, e)) : (this._lastDataByCoordSys = null, this._hide(e)) + } + }, + _showOrMove: function(t, e) { + var i = t.get("showDelay"); + e = T(e, this), clearTimeout(this._showTimout), 0 < i ? this._showTimout = setTimeout(e, i) : e() + }, + _showAxisTooltip: function(t, e) { + var d = this._ecModel, + i = this._tooltipModel, + n = [e.offsetX, e.offsetY], + a = [], + f = [], + o = VT([e.tooltipOption, i]), + p = this._renderMode, + r = this._newLine, + g = {}; + zT(t, function(t) { + zT(t.dataByAxis, function(s) { + var l = d.getComponent(s.axisDim + "Axis", s.axisIndex), + u = s.value, + h = []; + if (l && null != u) { + var c = ZM(u, l.axis, d, s.seriesDataIndices, s.valueLabelOpt); + O(s.seriesDataIndices, function(t) { + var e = d.getSeriesByIndex(t.seriesIndex), + i = t.dataIndexInside, + n = e && e.getDataParams(i); + if (n.axisDim = s.axisDim, n.axisIndex = s.axisIndex, n.axisType = s.axisType, n.axisId = s.axisId, n.axisValue = Gp(l.axis, u), n.axisValueLabel = c, n) { + f.push(n); + var a, o = e.formatTooltip(i, !0, null, p); + if (E(o)) { + a = o.html; + var r = o.markers; + m(g, r) + } else a = o; + h.push(a) + } + }); + var t = c; + "html" !== p ? a.push(h.join(r)) : a.push((t ? Wl(t) + r : "") + h.join(r)) + } + }) + }, this), a.reverse(), a = a.join(this._newLine + this._newLine); + var s = e.position; + this._showOrMove(o, function() { + this._updateContentNotChangedOnAxis(t) ? this._updatePosition(o, s, n[0], n[1], this._tooltipContent, f) : this._showTooltipContent(o, a, f, Math.random(), n[0], n[1], s, void 0, g) + }) + }, + _showSeriesItemTooltip: function(t, e, i) { + var n = this._ecModel, + a = e.seriesIndex, + o = n.getSeriesByIndex(a), + r = e.dataModel || o, + s = e.dataIndex, + l = e.dataType, + u = r.getData(), + h = VT([u.getItemModel(s), r, o && (o.coordinateSystem || {}).model, this._tooltipModel]), + c = h.get("trigger"); + if (null == c || "item" === c) { + var d, f, p = r.getDataParams(s, l), + g = r.formatTooltip(s, !1, l, this._renderMode); + f = E(g) ? (d = g.html, g.markers) : (d = g, null); + var m = "item_" + r.name + "_" + s; + this._showOrMove(h, function() { + this._showTooltipContent(h, d, p, m, t.offsetX, t.offsetY, t.position, t.target, f) + }), i({ + type: "showTip", + dataIndexInside: s, + dataIndex: u.getRawIndex(s), + seriesIndex: a, + from: this.uid + }) + } + }, + _showComponentItemTooltip: function(t, e, i) { + var n = e.tooltip; + if ("string" == typeof n) { + n = { + content: n, + formatter: n + } + } + var a = new dl(n, this._tooltipModel, this._ecModel), + o = a.get("content"), + r = Math.random(); + this._showOrMove(a, function() { + this._showTooltipContent(a, o, a.get("formatterParams") || {}, r, t.offsetX, t.offsetY, t.position, e) + }), i({ + type: "showTip", + from: this.uid + }) + }, + _showTooltipContent: function(i, t, n, e, a, o, r, s, l) { + if (this._ticket = "", i.get("showContent") && i.get("show")) { + var u = this._tooltipContent, + h = i.get("formatter"); + r = r || i.get("position"); + var c = t; + if (h && "string" == typeof h) c = Ul(h, n, !0); + else if ("function" == typeof h) { + var d = RT(function(t, e) { + t === this._ticket && (u.setContent(e, l, i), this._updatePosition(i, r, a, o, u, n, s)) + }, this); + this._ticket = e, c = h(n, e, d) + } + u.setContent(c, l, i), u.show(i), this._updatePosition(i, r, a, o, u, n, s) + } + }, + _updatePosition: function(t, e, i, n, a, o, r) { + var s = this._api.getWidth(), + l = this._api.getHeight(); + e = e || t.get("position"); + var u = a.getSize(), + h = t.get("align"), + c = t.get("verticalAlign"), + d = r && r.getBoundingRect().clone(); + if (r && d.applyTransform(r.transform), "function" == typeof e && (e = e([i, n], o, a.el, d, { + viewSize: [s, l], + contentSize: u.slice() + })), k(e)) i = ET(e[0], s), n = ET(e[1], l); + else if (E(e)) { + e.width = u[0], e.height = u[1]; + var f = au(e, { + width: s, + height: l + }); + i = f.x, n = f.y, c = h = null + } else if ("string" == typeof e && r) { + i = (p = function(t, e, i) { + var n = i[0], + a = i[1], + o = 0, + r = 0, + s = e.width, + l = e.height; + switch (t) { + case "inside": + o = e.x + s / 2 - n / 2, r = e.y + l / 2 - a / 2; + break; + case "top": + o = e.x + s / 2 - n / 2, r = e.y - a - 5; + break; + case "bottom": + o = e.x + s / 2 - n / 2, r = e.y + l + 5; + break; + case "left": + o = e.x - n - 5, r = e.y + l / 2 - a / 2; + break; + case "right": + o = e.x + s + 5, r = e.y + l / 2 - a / 2 + } + return [o, r] + }(e, d, u))[0], n = p[1] + } else { + var p; + i = (p = function(t, e, i, n, a, o, r) { + var s = i.getOuterSize(), + l = s.width, + u = s.height; + null != o && (n < t + l + o ? t -= l + o : t += o); + null != r && (a < e + u + r ? e -= u + r : e += r); + return [t, e] + }(i, n, a, s, l, h ? null : 20, c ? null : 20))[0], n = p[1] + } + h && (i -= FT(h) ? u[0] / 2 : "right" === h ? u[0] : 0), c && (n -= FT(c) ? u[1] / 2 : "bottom" === c ? u[1] : 0), t.get("confine") && (i = (p = function(t, e, i, n, a) { + var o = i.getOuterSize(), + r = o.width, + s = o.height; + return t = Math.min(t + r, n) - r, e = Math.min(e + s, a) - s, t = Math.max(t, 0), e = Math.max(e, 0), [t, e] + }(i, n, a, s, l))[0], n = p[1]); + a.moveTo(i, n) + }, + _updateContentNotChangedOnAxis: function(n) { + var t = this._lastDataByCoordSys, + r = !!t && t.length === n.length; + return r && zT(t, function(t, e) { + var i = t.dataByAxis || {}, + o = (n[e] || {}).dataByAxis || []; + (r &= i.length === o.length) && zT(i, function(t, e) { + var i = o[e] || {}, + n = t.seriesDataIndices || [], + a = i.seriesDataIndices || []; + (r &= t.value === i.value && t.axisType === i.axisType && t.axisId === i.axisId && n.length === a.length) && zT(n, function(t, e) { + var i = a[e]; + r &= t.seriesIndex === i.seriesIndex && t.dataIndex === i.dataIndex + }) + }) + }), this._lastDataByCoordSys = n, !!r + }, + _hide: function(t) { + this._lastDataByCoordSys = null, t({ + type: "hideTip", + from: this.uid + }) + }, + dispose: function(t, e) { + v.node || (this._tooltipContent.hide(), PM("itemTooltip", e)) + } + }), tf({ + type: "showTip", + event: "showTip", + update: "tooltip:manuallyShowTip" + }, function() {}), tf({ + type: "hideTip", + event: "hideTip", + update: "tooltip:manuallyHideTip" + }, function() {}); + var WT = ["rect", "polygon", "keep", "clear"]; + var HT = O; + + function ZT(t) { + if (t) + for (var e in t) + if (t.hasOwnProperty(e)) return !0 + } + + function UT(t, e, o) { + var i = {}; + return HT(e, function(n) { + var a = i[n] = function() { + function t() {} + return t.prototype.__hidden = t.prototype, new t + }(); + HT(t[n], function(t, e) { + if (zx.isValidType(e)) { + var i = { + type: e, + visual: t + }; + o && o(i, n), a[e] = new zx(i), "opacity" === e && ((i = D(i)).type = "colorAlpha", a.__hidden.__alphaForOpacity = new zx(i)) + } + }) + }), i + } + + function XT(e, i, t) { + var n; + O(t, function(t) { + i.hasOwnProperty(t) && ZT(i[t]) && (n = !0) + }), n && O(t, function(t) { + i.hasOwnProperty(t) && ZT(i[t]) ? e[t] = D(i[t]) : delete e[t] + }) + } + var YT = { + lineX: jT(0), + lineY: jT(1), + rect: { + point: function(t, e, i) { + return t && i.boundingRect.contain(t[0], t[1]) + }, + rect: function(t, e, i) { + return t && i.boundingRect.intersect(t) + } + }, + polygon: { + point: function(t, e, i) { + return t && i.boundingRect.contain(t[0], t[1]) && ng(i.range, t[0], t[1]) + }, + rect: function(t, e, i) { + var n = i.range; + if (!t || n.length <= 1) return !1; + var a = t.x, + o = t.y, + r = t.width, + s = t.height, + l = n[0]; + return !!(ng(n, a, o) || ng(n, a + r, o) || ng(n, a, o + s) || ng(n, a + r, o + s) || bi.create(t).contain(l[0], l[1]) || il(a, o, a + r, o, n) || il(a, o, a, o + s, n) || il(a + r, o, a + r, o + s, n) || il(a, o + s, a + r, o + s, n)) || void 0 + } + } + }; + + function jT(o) { + var r = ["x", "y"], + s = ["width", "height"]; + return { + point: function(t, e, i) { + if (t) { + var n = i.range; + return qT(t[o], n) + } + }, + rect: function(t, e, i) { + if (t) { + var n = i.range, + a = [t[r[o]], t[r[o]] + t[s[o]]]; + return a[1] < a[0] && a.reverse(), qT(a[0], n) || qT(a[1], n) || qT(n[0], a) || qT(n[1], a) + } + } + } + } + + function qT(t, e) { + return e[0] <= t && t <= e[1] + } + var KT = ["inBrush", "outOfBrush"], + $T = "__ecBrushSelect", + JT = "__ecInBrushSelectEvent", + QT = cd.VISUAL.BRUSH; + + function tD(t, e) { + if (!t.isDisposed()) { + var i = t.getZr(); + i[JT] = !0, t.dispatchAction({ + type: "brushSelect", + batch: e + }), i[JT] = !1 + } + } + + function eD(t, e, i, n) { + for (var a = 0, o = e.length; a < o; a++) { + var r = e[a]; + if (t[r.brushType](n, i, r.selectors, r)) return !0 + } + } + + function iD(t) { + var r = t.brushSelector; + if (z(r)) { + var e = []; + return O(YT, function(o, t) { + e[t] = function(t, e, i, n) { + var a = e.getItemLayout(t); + return o[r](a, i, n) + } + }), e + } + if (R(r)) { + var i = {}; + return O(YT, function(t, e) { + i[e] = r + }), i + } + return r + } + nf(QT, function(e, t, i) { + e.eachComponent({ + mainType: "brush" + }, function(t) { + i && "takeGlobalCursor" === i.type && t.setBrushOption("brush" === i.key ? i.brushOption : { + brushType: !1 + }), (t.brushTargetManager = new HA(t.option, e)).setInputRanges(t.areas, e) + }) + }), af(QT, function(p, t, e) { + var a, g, m = []; + p.eachComponent({ + mainType: "brush" + }, function(o, t) { + var s = { + brushId: o.id, + brushIndex: t, + brushName: o.name, + areas: D(o.areas), + selected: [] + }; + m.push(s); + var e = o.option, + i = e.brushLink, + n = [], + l = [], + u = [], + h = 0; + t || (a = e.throttleType, g = e.throttleDelay); + var r = N(o.areas, function(t) { + return function(i) { + var n = i.selectors = {}; + return O(YT[i.brushType], function(e, t) { + n[t] = function(t) { + return e(t, n, i) + } + }), i + }(C({ + boundingRect: nD[t.brushType](t) + }, t)) + }), + c = UT(o.option, KT, function(t) { + t.mappingMethod = "fixed" + }); + + function d(t) { + return "all" === i || n[t] + } + + function f(t) { + return !!t.length + } + k(i) && O(i, function(t) { + n[t] = 1 + }), p.eachSeries(function(t, e) { + var i = u[e] = []; + "parallel" === t.subType ? function(t, e) { + var i = t.coordinateSystem; + h |= i.hasAxisBrushed(), d(e) && i.eachActiveState(t.getData(), function(t, e) { + "active" === t && (l[e] = 1) + }) + }(t, e) : function(e, t, i) { + var n = iD(e); + if (!n || function(t, e) { + var i = t.option.seriesIndex; + return null != i && "all" !== i && (k(i) ? _(i, e) < 0 : e !== i) + }(o, t)) return; + if (O(r, function(t) { + n[t.brushType] && o.brushTargetManager.controlSeries(t, e, p) && i.push(t), h |= f(i) + }), d(t) && f(i)) { + var a = e.getData(); + a.each(function(t) { + eD(n, i, a, t) && (l[t] = 1) + }) + } + }(t, e, i) + }), p.eachSeries(function(t, e) { + var i = { + seriesId: t.id, + seriesIndex: e, + seriesName: t.name, + dataIndex: [] + }; + s.selected.push(i); + var n = iD(t), + a = u[e], + o = t.getData(), + r = d(e) ? function(t) { + return l[t] ? (i.dataIndex.push(o.getRawIndex(t)), "inBrush") : "outOfBrush" + } : function(t) { + return eD(n, a, o, t) ? (i.dataIndex.push(o.getRawIndex(t)), "inBrush") : "outOfBrush" + }; + (d(e) ? h : f(a)) && function(t, u, h, c, d, f) { + var p, g = {}; + + function m(t) { + return h.getItemVisual(p, t) + } + + function v(t, e) { + h.setItemVisual(p, t, e) + } + + function e(t, e) { + p = null == f ? t : e; + var i = h.getRawDataItem(p); + if (!i || !1 !== i.visualMap) + for (var n = c.call(d, t), a = u[n], o = g[n], r = 0, s = o.length; r < s; r++) { + var l = o[r]; + a[l] && a[l].applyVisual(t, m, v) + } + } + O(t, function(t) { + var e = zx.prepareVisualTypes(u[t]); + g[t] = e + }), null == f ? h.each(e) : h.each([f], e) + }(KT, c, o, r) + }) + }), + function(t, e, i, n, a) { + if (!a) return; + var o = t.getZr(); + if (o[JT]) return; + o[$T] || (o[$T] = tD); + dc(o, $T, i, e)(t, n) + }(t, a, g, m, e) + }); + var nD = { + lineX: et, + lineY: et, + rect: function(t) { + return aD(t.range) + }, + polygon: function(t) { + for (var e, i = t.range, n = 0, a = i.length; n < a; n++) { + e = e || [ + [1 / 0, -1 / 0], + [1 / 0, -1 / 0] + ]; + var o = i[n]; + o[0] < e[0][0] && (e[0][0] = o[0]), o[0] > e[0][1] && (e[0][1] = o[0]), o[1] < e[1][0] && (e[1][0] = o[1]), o[1] > e[1][1] && (e[1][1] = o[1]) + } + return e && aD(e) + } + }; + + function aD(t) { + return new bi(t[0][0], t[1][0], t[0][1] - t[0][0], t[1][1] - t[1][0]) + } + var oD = ["#ddd"]; + sf({ + type: "brush", + dependencies: ["geo", "grid", "xAxis", "yAxis", "parallel", "series"], + defaultOption: { + toolbox: null, + brushLink: null, + seriesIndex: "all", + geoIndex: null, + xAxisIndex: null, + yAxisIndex: null, + brushType: "rect", + brushMode: "single", + transformable: !0, + brushStyle: { + borderWidth: 1, + color: "rgba(120,140,180,0.3)", + borderColor: "rgba(120,140,180,0.8)" + }, + throttleType: "fixRate", + throttleDelay: 0, + removeOnClick: !0, + z: 1e4 + }, + areas: [], + brushType: null, + brushOption: {}, + coordInfoList: [], + optionUpdated: function(t, e) { + var i = this.option; + e || XT(i, t, ["inBrush", "outOfBrush"]); + var n = i.inBrush = i.inBrush || {}; + i.outOfBrush = i.outOfBrush || { + color: oD + }, n.hasOwnProperty("liftZ") || (n.liftZ = 5) + }, + setAreas: function(t) { + t && (this.areas = N(t, function(t) { + return rD(this.option, t) + }, this)) + }, + setBrushOption: function(t) { + this.brushOption = rD(this.option, t), this.brushType = this.brushOption.brushType + } + }); + + function rD(t, e) { + return m({ + brushType: t.brushType, + brushMode: t.brushMode, + transformable: t.transformable, + brushStyle: new dl(t.brushStyle).getItemStyle(), + removeOnClick: t.removeOnClick, + z: t.z + }, e, !0) + } + + function sD(t, e, i, n) { + n && n.$from === t.id || this._brushController.setPanels(t.brushTargetManager.makePanelOpts(i)).enableBrush(t.brushOption).updateCovers(t.areas.slice()) + } + lf({ + type: "brush", + init: function(t, e) { + this.ecModel = t, this.api = e, this.model, (this._brushController = new Xw(e.getZr())).on("brush", T(this._onBrush, this)).mount() + }, + render: function(t) { + return this.model = t, sD.apply(this, arguments) + }, + updateTransform: sD, + updateView: sD, + dispose: function() { + this._brushController.dispose() + }, + _onBrush: function(t, e) { + var i = this.model.id; + this.model.brushTargetManager.setOutputRanges(t, this.ecModel), e.isEnd && !e.removeOnClick || this.api.dispatchAction({ + type: "brush", + brushId: i, + areas: D(t), + $from: i + }) + } + }), tf({ + type: "brush", + event: "brush" + }, function(e, t) { + t.eachComponent({ + mainType: "brush", + query: e + }, function(t) { + t.setAreas(e.areas) + }) + }), tf({ + type: "brushSelect", + event: "brushSelected", + update: "none" + }, function() {}); + var lD = gc.toolbox.brush; + + function uD(t, e, i) { + this.model = t, this.ecModel = e, this.api = i, this._brushType, this._brushMode + } + uD.defaultOption = { + show: !0, + type: ["rect", "polygon", "lineX", "lineY", "keep", "clear"], + icon: { + rect: "M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13", + polygon: "M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2", + lineX: "M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4", + lineY: "M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4", + keep: "M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z", + clear: "M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2" + }, + title: D(lD.title) + }; + var hD = uD.prototype; + hD.render = hD.updateView = function(e, t, i) { + var n, a, o; + t.eachComponent({ + mainType: "brush" + }, function(t) { + n = t.brushType, a = t.brushOption.brushMode || "single", o |= t.areas.length + }), this._brushType = n, this._brushMode = a, O(e.get("type", !0), function(t) { + e.setIconStatus(t, ("keep" === t ? "multiple" === a : "clear" === t ? o : t === n) ? "emphasis" : "normal") + }) + }, hD.getIcons = function() { + var t = this.model, + e = t.get("icon", !0), + i = {}; + return O(t.get("type", !0), function(t) { + e[t] && (i[t] = e[t]) + }), i + }, hD.onclick = function(t, e, i) { + var n = this._brushType, + a = this._brushMode; + "clear" === i ? (e.dispatchAction({ + type: "axisAreaSelect", + intervals: [] + }), e.dispatchAction({ + type: "brush", + command: "clear", + areas: [] + })) : e.dispatchAction({ + type: "takeGlobalCursor", + key: "brush", + brushOption: { + brushType: "keep" === i ? n : n !== i && i, + brushMode: "keep" === i ? "multiple" === a ? "single" : "multiple" : a + } + }) + }, xA("brush", uD), Jd(function(t, e) { + var i = t && t.brush; + if (k(i) || (i = i ? [i] : []), i.length) { + var n = []; + O(i, function(t) { + var e = t.hasOwnProperty("toolbox") ? t.toolbox : []; + e instanceof Array && (n = n.concat(e)) + }); + var a = t && t.toolbox; + k(a) && (a = a[0]), a || (a = { + feature: {} + }, t.toolbox = [a]); + var o = a.feature || (a.feature = {}), + r = o.brush || (o.brush = {}), + s = r.type || (r.type = []); + s.push.apply(s, n), + function(i) { + var e = {}; + O(i, function(t) { + e[t] = 1 + }), i.length = 0, O(e, function(t, e) { + i.push(e) + }) + }(s), e && !s.length && s.push.apply(s, WT) + } + }), sf({ + type: "title", + layoutMode: { + type: "box", + ignoreSize: !0 + }, + defaultOption: { + zlevel: 0, + z: 6, + show: !0, + text: "", + target: "blank", + subtext: "", + subtarget: "blank", + left: 0, + top: 0, + backgroundColor: "rgba(0,0,0,0)", + borderColor: "#ccc", + borderWidth: 0, + padding: 5, + itemGap: 10, + textStyle: { + fontSize: 18, + fontWeight: "bolder", + color: "#333" + }, + subtextStyle: { + color: "#aaa" + } + } + }), lf({ + type: "title", + render: function(t, e, i) { + if (this.group.removeAll(), t.get("show")) { + var n = this.group, + a = t.getModel("textStyle"), + o = t.getModel("subtextStyle"), + r = t.get("textAlign"), + s = H(t.get("textBaseline"), t.get("textVerticalAlign")), + l = new Dr({ + style: Gs({}, a, { + text: t.get("text"), + textFill: a.getTextColor() + }, { + disableBox: !0 + }), + z2: 10 + }), + u = l.getBoundingRect(), + h = t.get("subtext"), + c = new Dr({ + style: Gs({}, o, { + text: h, + textFill: o.getTextColor(), + y: u.height + t.get("itemGap"), + textVerticalAlign: "top" + }, { + disableBox: !0 + }), + z2: 10 + }), + d = t.get("link"), + f = t.get("sublink"), + p = t.get("triggerEvent", !0); + l.silent = !d && !p, c.silent = !f && !p, d && l.on("click", function() { + window.open(d, "_" + t.get("target")) + }), f && c.on("click", function() { + window.open(f, "_" + t.get("subtarget")) + }), l.eventData = c.eventData = p ? { + componentType: "title", + componentIndex: t.componentIndex + } : null, n.add(l), h && n.add(c); + var g = n.getBoundingRect(), + m = t.getBoxLayoutParams(); + m.width = g.width, m.height = g.height; + var v = au(m, { + width: i.getWidth(), + height: i.getHeight() + }, t.get("padding")); + r || ("middle" === (r = t.get("left") || t.get("right")) && (r = "center"), "right" === r ? v.x += v.width : "center" === r && (v.x += v.width / 2)), s || ("center" === (s = t.get("top") || t.get("bottom")) && (s = "middle"), "bottom" === s ? v.y += v.height : "middle" === s && (v.y += v.height / 2), s = s || "top"), n.attr("position", [v.x, v.y]); + var y = { + textAlign: r, + textVerticalAlign: s + }; + l.setStyle(y), c.setStyle(y), g = n.getBoundingRect(); + var x = v.margin, + _ = t.getItemStyle(["color", "opacity"]); + _.fill = t.get("backgroundColor"); + var w = new Hr({ + shape: { + x: g.x - x[3], + y: g.y - x[0], + width: g.width + x[1] + x[3], + height: g.height + x[0] + x[2], + r: t.get("borderRadius") + }, + style: _, + subPixelOptimize: !0, + silent: !0 + }); + n.add(w) + } + } + }); + + function cD(t) { + var e = t.itemStyle || (t.itemStyle = {}), + i = e.emphasis || (e.emphasis = {}), + n = t.label || t.label || {}, + a = n.normal || (n.normal = {}), + o = { + normal: 1, + emphasis: 1 + }; + O(n, function(t, e) { + o[e] || dD(a, e) || (a[e] = t) + }), i.label && !dD(n, "emphasis") && (n.emphasis = i.label, delete i.label) + } + + function dD(t, e) { + return t.hasOwnProperty(e) + } + fu.registerSubTypeDefaulter("timeline", function() { + return "slider" + }), tf({ + type: "timelineChange", + event: "timelineChanged", + update: "prepareAndUpdate" + }, function(t, e) { + var i = e.getComponent("timeline"); + return i && null != t.currentIndex && (i.setCurrentIndex(t.currentIndex), !i.get("loop", !0) && i.isIndexMax() && i.setPlayState(!1)), e.resetOption("timeline"), C({ + currentIndex: i.option.currentIndex + }, t) + }), tf({ + type: "timelinePlayChange", + event: "timelinePlayChanged", + update: "update" + }, function(t, e) { + var i = e.getComponent("timeline"); + i && null != t.playState && i.setPlayState(t.playState) + }); + var fD = fu.extend({ + type: "timeline", + layoutMode: "box", + defaultOption: { + zlevel: 0, + z: 4, + show: !0, + axisType: "time", + realtime: !0, + left: "20%", + top: null, + right: "20%", + bottom: 0, + width: null, + height: 40, + padding: 5, + controlPosition: "left", + autoPlay: !1, + rewind: !1, + loop: !0, + playInterval: 2e3, + currentIndex: 0, + itemStyle: {}, + label: { + color: "#000" + }, + data: [] + }, + init: function(t, e, i) { + this._data, this._names, this.mergeDefaultAndTheme(t, i), this._initData() + }, + mergeOption: function(t) { + fD.superApply(this, "mergeOption", arguments), this._initData() + }, + setCurrentIndex: function(t) { + null == t && (t = this.option.currentIndex); + var e = this._data.count(); + this.option.loop ? t = (t % e + e) % e : (e <= t && (t = e - 1), t < 0 && (t = 0)), this.option.currentIndex = t + }, + getCurrentIndex: function() { + return this.option.currentIndex + }, + isIndexMax: function() { + return this.getCurrentIndex() >= this._data.count() - 1 + }, + setPlayState: function(t) { + this.option.autoPlay = !!t + }, + getPlayState: function() { + return !!this.option.autoPlay + }, + _initData: function() { + var t = this.option, + e = t.data || [], + i = t.axisType, + a = this._names = []; + if ("category" === i) { + var o = []; + O(e, function(t, e) { + var i, n = Ma(t); + E(t) ? (i = D(t)).value = e : i = e, o.push(i), z(n) || null != n && !isNaN(n) || (n = ""), a.push(n + "") + }), e = o + } + var n = { + category: "ordinal", + time: "time" + } [i] || "number"; + (this._data = new Tf([{ + name: "value", + type: n + }], this)).initData(e, a) + }, + getData: function() { + return this._data + }, + getCategories: function() { + if ("category" === this.get("axisType")) return this._names.slice() + } + }); + b(fD.extend({ + type: "timeline.slider", + defaultOption: { + backgroundColor: "rgba(0,0,0,0)", + borderColor: "#ccc", + borderWidth: 0, + orient: "horizontal", + inverse: !1, + tooltip: { + trigger: "item" + }, + symbol: "emptyCircle", + symbolSize: 10, + lineStyle: { + show: !0, + width: 2, + color: "#304654" + }, + label: { + position: "auto", + show: !0, + interval: "auto", + rotate: 0, + color: "#304654" + }, + itemStyle: { + color: "#304654", + borderWidth: 1 + }, + checkpointStyle: { + symbol: "circle", + symbolSize: 13, + color: "#c23531", + borderWidth: 5, + borderColor: "rgba(194,53,49, 0.5)", + animation: !0, + animationDuration: 300, + animationEasing: "quinticInOut" + }, + controlStyle: { + show: !0, + showPlayBtn: !0, + showPrevBtn: !0, + showNextBtn: !0, + itemSize: 22, + itemGap: 12, + position: "left", + playIcon: "path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z", + stopIcon: "path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z", + nextIcon: "path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z", + prevIcon: "path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z", + color: "#304654", + borderColor: "#304654", + borderWidth: 1 + }, + emphasis: { + label: { + show: !0, + color: "#c23531" + }, + itemStyle: { + color: "#c23531" + }, + controlStyle: { + color: "#c23531", + borderColor: "#c23531", + borderWidth: 2 + } + }, + data: [] + } + }), Th); + + function pD(t, e, i, n) { + vg.call(this, t, e, i), this.type = n || "value", this.model = null + } + var gD = Kh.extend({ + type: "timeline" + }); + pD.prototype = { + constructor: pD, + getLabelModel: function() { + return this.model.getModel("label") + }, + isHorizontal: function() { + return "horizontal" === this.model.get("orient") + } + }, w(pD, vg); + var mD = T, + vD = O, + yD = Math.PI; + + function xD(t, e, i, n, a, o) { + var r = e.get("color"); + a ? (a.setColor(r), i.add(a), o && o.onUpdate(a)) : ((a = Jp(t.get("symbol"), -1, -1, 2, 2, r)).setStyle("strokeNoScale", !0), i.add(a), o && o.onCreate(a)); + var s = e.getItemStyle(["color", "symbol", "symbolSize"]); + a.setStyle(s), n = m({ + rectHover: !0, + z2: 100 + }, n, !0); + var l = t.get("symbolSize"); + (l = l instanceof Array ? l.slice() : [+l, +l])[0] /= 2, l[1] /= 2, n.scale = l; + var u = t.get("symbolOffset"); + if (u) { + var h = n.position = n.position || [0, 0]; + h[0] += xl(u[0], l[0]), h[1] += xl(u[1], l[1]) + } + var c = t.get("symbolRotate"); + return n.rotation = (c || 0) * Math.PI / 180 || 0, a.attr(n), a.updateTransform(), a + } + + function _D(t, e, i, n, a) { + if (!t.dragging) { + var o = n.getModel("checkpointStyle"), + r = i.dataToCoord(n.getData().get(["value"], e)); + a || !o.get("animation", !0) ? t.attr({ + position: [r, 0] + }) : (t.stopAnimation(!0), t.animateTo({ + position: [r, 0] + }, o.get("animationDuration", !0), o.get("animationEasing", !0))) + } + } + gD.extend({ + type: "timeline.slider", + init: function(t, e) { + this.api = e, this._axis, this._viewRect, this._timer, this._currentPointer, this._mainGroup, this._labelGroup + }, + render: function(e, t, i, n) { + if (this.model = e, this.api = i, this.ecModel = t, this.group.removeAll(), e.get("show", !0)) { + var a = this._layout(e, i), + o = this._createGroup("mainGroup"), + r = this._createGroup("labelGroup"), + s = this._axis = this._createAxis(a, e); + e.formatTooltip = function(t) { + return Wl(s.scale.getLabel(t)) + }, vD(["AxisLine", "AxisTick", "Control", "CurrentPointer"], function(t) { + this["_render" + t](a, o, s, e) + }, this), this._renderAxisLabel(a, r, s, e), this._position(a, e) + } + this._doPlayStop() + }, + remove: function() { + this._clearTimer(), this.group.removeAll() + }, + dispose: function() { + this._clearTimer() + }, + _layout: function(t, e) { + var i = t.get("label.position"), + n = t.get("orient"), + a = function(t, e) { + return au(t.getBoxLayoutParams(), { + width: e.getWidth(), + height: e.getHeight() + }, t.get("padding")) + }(t, e); + null == i || "auto" === i ? i = "horizontal" === n ? a.y + a.height / 2 < e.getHeight() / 2 ? "-" : "+" : a.x + a.width / 2 < e.getWidth() / 2 ? "+" : "-" : isNaN(i) && (i = { + horizontal: { + top: "-", + bottom: "+" + }, + vertical: { + left: "-", + right: "+" + } + } [n][i]); + var o, r, s, l, u = { + horizontal: "center", + vertical: 0 <= i || "+" === i ? "left" : "right" + }, + h = { + horizontal: 0 <= i || "+" === i ? "top" : "bottom", + vertical: "middle" + }, + c = { + horizontal: 0, + vertical: yD / 2 + }, + d = "vertical" === n ? a.height : a.width, + f = t.getModel("controlStyle"), + p = f.get("show", !0), + g = p ? f.get("itemSize") : 0, + m = p ? f.get("itemGap") : 0, + v = g + m, + y = t.get("label.rotate") || 0; + y = y * yD / 180; + var x = f.get("position", !0), + _ = p && f.get("showPlayBtn", !0), + w = p && f.get("showPrevBtn", !0), + b = p && f.get("showNextBtn", !0), + S = 0, + M = d; + return "left" === x || "bottom" === x ? (_ && (o = [0, 0], S += v), w && (r = [S, 0], S += v)) : (_ && (o = [M - g, 0], M -= v), w && (r = [0, 0], S += v)), b && (s = [M - g, 0], M -= v), l = [S, M], t.get("inverse") && l.reverse(), { + viewRect: a, + mainLength: d, + orient: n, + rotation: c[n], + labelRotation: y, + labelPosOpt: i, + labelAlign: t.get("label.align") || u[n], + labelBaseline: t.get("label.verticalAlign") || t.get("label.baseline") || h[n], + playPosition: o, + prevBtnPosition: r, + nextBtnPosition: s, + axisExtent: l, + controlSize: g, + controlGap: m + } + }, + _position: function(t, e) { + var i = this._mainGroup, + n = this._labelGroup, + a = t.viewRect; + if ("vertical" === t.orient) { + var o = Qt(), + r = a.x, + s = a.y + a.height; + ne(o, o, [-r, -s]), ae(o, o, -yD / 2), ne(o, o, [r, s]), (a = a.clone()).applyTransform(o) + } + var l = m(a), + u = m(i.getBoundingRect()), + h = m(n.getBoundingRect()), + c = i.position, + d = n.position; + d[0] = c[0] = l[0][0]; + var f, p = t.labelPosOpt; + isNaN(p) ? (v(c, u, l, 1, f = "+" === p ? 0 : 1), v(d, h, l, 1, 1 - f)) : (v(c, u, l, 1, f = 0 <= p ? 0 : 1), d[1] = c[1] + p); + + function g(t) { + var e = t.position; + t.origin = [l[0][0] - e[0], l[1][0] - e[1]] + } + + function m(t) { + return [ + [t.x, t.x + t.width], + [t.y, t.y + t.height] + ] + } + + function v(t, e, i, n, a) { + t[n] += i[n][a] - e[n][a] + } + i.attr("position", c), n.attr("position", d), i.rotation = n.rotation = t.rotation, g(i), g(n) + }, + _createAxis: function(t, e) { + var i = e.getData(), + n = e.get("axisType"), + a = Bp(e, n); + a.getTicks = function() { + return i.mapArray(["value"], function(t) { + return t + }) + }; + var o = i.getDataExtent("value"); + a.setExtent(o[0], o[1]), a.niceTicks(); + var r = new pD("value", a, t.axisExtent, n); + return r.model = e, r + }, + _createGroup: function(t) { + var e = this["_" + t] = new Si; + return this.group.add(e), e + }, + _renderAxisLine: function(t, e, i, n) { + var a = i.getExtent(); + n.get("lineStyle.show") && e.add(new Ur({ + shape: { + x1: a[0], + y1: 0, + x2: a[1], + y2: 0 + }, + style: L({ + lineCap: "round" + }, n.getModel("lineStyle").getLineStyle()), + silent: !0, + z2: 1 + })) + }, + _renderAxisTick: function(t, s, l, u) { + var h = u.getData(), + e = l.scale.getTicks(); + vD(e, function(t) { + var e = l.dataToCoord(t), + i = h.getItemModel(t), + n = i.getModel("itemStyle"), + a = i.getModel("emphasis.itemStyle"), + o = { + position: [e, 0], + onclick: mD(this._changeTimeline, this, t) + }, + r = xD(i, n, s, o); + Os(r, a.getItemStyle()), i.get("tooltip") ? (r.dataIndex = t, r.dataModel = u) : r.dataIndex = r.dataModel = null + }, this) + }, + _renderAxisLabel: function(s, l, u, t) { + if (u.getLabelModel().get("show")) { + var h = t.getData(), + e = u.getViewLabels(); + vD(e, function(t) { + var e = t.tickValue, + i = h.getItemModel(e), + n = i.getModel("label"), + a = i.getModel("emphasis.label"), + o = u.dataToCoord(t.tickValue), + r = new Dr({ + position: [o, 0], + rotation: s.labelRotation - s.rotation, + onclick: mD(this._changeTimeline, this, e), + silent: !1 + }); + Gs(r.style, n, { + text: t.formattedLabel, + textAlign: s.labelAlign, + textVerticalAlign: s.labelBaseline + }), l.add(r), Os(r, Gs({}, a)) + }, this) + } + }, + _renderControl: function(t, o, e, r) { + var s = t.controlSize, + l = t.rotation, + u = r.getModel("controlStyle").getItemStyle(), + h = r.getModel("emphasis.controlStyle").getItemStyle(), + c = [0, -s / 2, s, s], + i = r.getPlayState(), + n = r.get("inverse", !0); + + function a(t, e, i, n) { + if (t) { + var a = function(t, e, i, n) { + return gs(t.get(e).replace(/^path:\/\//, ""), D(n || {}), new bi(i[0], i[1], i[2], i[3]), "center") + }(r, e, c, { + position: t, + origin: [s / 2, 0], + rotation: n ? -l : 0, + rectHover: !0, + style: u, + onclick: i + }); + o.add(a), Os(a, h) + } + } + a(t.nextBtnPosition, "controlStyle.nextIcon", mD(this._changeTimeline, this, n ? "-" : "+")), a(t.prevBtnPosition, "controlStyle.prevIcon", mD(this._changeTimeline, this, n ? "+" : "-")), a(t.playPosition, "controlStyle." + (i ? "stopIcon" : "playIcon"), mD(this._handlePlayClick, this, !i), !0) + }, + _renderCurrentPointer: function(t, e, i, n) { + var a = n.getData(), + o = n.getCurrentIndex(), + r = a.getItemModel(o).getModel("checkpointStyle"), + s = this, + l = { + onCreate: function(t) { + t.draggable = !0, t.drift = mD(s._handlePointerDrag, s), t.ondragend = mD(s._handlePointerDragend, s), _D(t, o, i, n, !0) + }, + onUpdate: function(t) { + _D(t, o, i, n) + } + }; + this._currentPointer = xD(r, r, this._mainGroup, {}, this._currentPointer, l) + }, + _handlePlayClick: function(t) { + this._clearTimer(), this.api.dispatchAction({ + type: "timelinePlayChange", + playState: t, + from: this.uid + }) + }, + _handlePointerDrag: function(t, e, i) { + this._clearTimer(), this._pointerChangeTimeline([i.offsetX, i.offsetY]) + }, + _handlePointerDragend: function(t) { + this._pointerChangeTimeline([t.offsetX, t.offsetY], !0) + }, + _pointerChangeTimeline: function(t, e) { + var i = this._toAxisCoord(t)[0], + n = wl(this._axis.getExtent().slice()); + i > n[1] && (i = n[1]), i < n[0] && (i = n[0]), this._currentPointer.position[0] = i, this._currentPointer.dirty(); + var a = this._findNearestTick(i), + o = this.model; + (e || a !== o.getCurrentIndex() && o.get("realtime")) && this._changeTimeline(a) + }, + _doPlayStop: function() { + this._clearTimer(), this.model.getPlayState() && (this._timer = setTimeout(mD(function() { + var t = this.model; + this._changeTimeline(t.getCurrentIndex() + (t.get("rewind", !0) ? -1 : 1)) + }, this), this.model.get("playInterval"))) + }, + _toAxisCoord: function(t) { + return $s(t, this._mainGroup.getLocalTransform(), !0) + }, + _findNearestTick: function(a) { + var o, t = this.model.getData(), + r = 1 / 0, + s = this._axis; + return t.each(["value"], function(t, e) { + var i = s.dataToCoord(t), + n = Math.abs(i - a); + n < r && (r = n, o = e) + }), o + }, + _clearTimer: function() { + this._timer && (clearTimeout(this._timer), this._timer = null) + }, + _changeTimeline: function(t) { + var e = this.model.getCurrentIndex(); + "+" === t ? t = e + 1 : "-" === t && (t = e - 1), this.api.dispatchAction({ + type: "timelineChange", + currentIndex: t, + from: this.uid + }) + } + }), Jd(function(t) { + var e = t && t.timeline; + k(e) || (e = e ? [e] : []), O(e, function(t) { + t && function(t) { + var e = t.type, + i = { + number: "value", + time: "time" + }; + i[e] && (t.axisType = i[e], delete t.type); + if (cD(t), dD(t, "controlPosition")) { + var n = t.controlStyle || (t.controlStyle = {}); + dD(n, "position") || (n.position = t.controlPosition), "none" !== n.position || dD(n, "show") || (n.show = !1, delete n.position), delete t.controlPosition + } + O(t.data || [], function(t) { + E(t) && !k(t) && (!dD(t, "value") && dD(t, "name") && (t.value = t.name), cD(t)) + }) + }(t) + }) + }); + var wD = El, + bD = Wl; + + function SD(t) { + ba(t, "label", ["show"]) + } + var MD = sf({ + type: "marker", + dependencies: ["series", "grid", "polar", "geo"], + init: function(t, e, i) { + this.mergeDefaultAndTheme(t, i), this._mergeOption(t, i, !1, !0) + }, + isAnimationEnabled: function() { + if (v.node) return !1; + var t = this.__hostSeries; + return this.getShallow("animation") && t && t.isAnimationEnabled() + }, + mergeOption: function(t, e) { + this._mergeOption(t, e, !1, !1) + }, + _mergeOption: function(t, n, e, a) { + var o = this.constructor, + r = this.mainType + "Model"; + e || n.eachSeries(function(t) { + var e = t.get(this.mainType, !0), + i = t[r]; + e && e.data ? (i ? i._mergeOption(e, n, !0) : (a && SD(e), O(e.data, function(t) { + t instanceof Array ? (SD(t[0]), SD(t[1])) : SD(t) + }), L(i = new o(e, this, n), { + mainType: this.mainType, + seriesIndex: t.seriesIndex, + name: t.name, + createdBySelf: !0 + }), i.__hostSeries = t), t[r] = i) : t[r] = null + }, this) + }, + formatTooltip: function(t) { + var e = this.getData(), + i = this.getRawValue(t), + n = k(i) ? N(i, wD).join(", ") : wD(i), + a = e.getName(t), + o = bD(this.name); + return null == i && !a || (o += "
"), a && (o += bD(a), null != i && (o += " : ")), null != i && (o += bD(n)), o + }, + getData: function() { + return this._data + }, + setData: function(t) { + this._data = t + } + }); + b(MD, Th), MD.extend({ + type: "markPoint", + defaultOption: { + zlevel: 0, + z: 5, + symbol: "pin", + symbolSize: 50, + tooltip: { + trigger: "item" + }, + label: { + show: !0, + position: "inside" + }, + itemStyle: { + borderWidth: 2 + }, + emphasis: { + label: { + show: !0 + } + } + } + }); + var ID = _; + + function AD(t, e, i, n, a, o) { + var r = [], + s = Zf(e, n) ? e.getCalculationInfo("stackResultDimension") : n, + l = ND(e, s, t), + u = e.indicesOfNearest(s, l)[0]; + r[a] = e.get(i, u), r[o] = e.get(n, u); + var h = bl(e.get(n, u)); + return 0 <= (h = Math.min(h, 20)) && (r[o] = +r[o].toFixed(h)), r + } + var TD = A, + DD = { + min: TD(AD, "min"), + max: TD(AD, "max"), + average: TD(AD, "average") + }; + + function CD(t, e) { + var i = t.getData(), + n = t.coordinateSystem; + if (e && ! function(t) { + return !isNaN(parseFloat(t.x)) && !isNaN(parseFloat(t.y)) + }(e) && !k(e.coord) && n) { + var a = n.dimensions, + o = LD(e, i, n, t); + if ((e = D(e)).type && DD[e.type] && o.baseAxis && o.valueAxis) { + var r = ID(a, o.baseAxis.dim), + s = ID(a, o.valueAxis.dim); + e.coord = DD[e.type](i, o.baseDataDim, o.valueDataDim, r, s), e.value = e.coord[s] + } else { + for (var l = [null != e.xAxis ? e.xAxis : e.radiusAxis, null != e.yAxis ? e.yAxis : e.angleAxis], u = 0; u < 2; u++) DD[l[u]] && (l[u] = ND(i, i.mapDimension(a[u]), l[u])); + e.coord = l + } + } + return e + } + + function LD(t, e, i, n) { + var a = {}; + return null != t.valueIndex || null != t.valueDim ? (a.valueDataDim = null != t.valueIndex ? e.getDimension(t.valueIndex) : t.valueDim, a.valueAxis = i.getAxis(function(t, e) { + var i = t.getData(), + n = i.dimensions; + e = i.getDimension(e); + for (var a = 0; a < n.length; a++) { + var o = i.getDimensionInfo(n[a]); + if (o.name === e) return o.coordDim + } + }(n, a.valueDataDim)), a.baseAxis = i.getOtherAxis(a.valueAxis), a.baseDataDim = e.mapDimension(a.baseAxis.dim)) : (a.baseAxis = n.getBaseAxis(), a.valueAxis = i.getOtherAxis(a.baseAxis), a.baseDataDim = e.mapDimension(a.baseAxis.dim), a.valueDataDim = e.mapDimension(a.valueAxis.dim)), a + } + + function kD(t, e) { + return !(t && t.containData && e.coord && ! function(t) { + return !(isNaN(parseFloat(t.x)) && isNaN(parseFloat(t.y))) + }(e)) || t.containData(e.coord) + } + + function PD(t, e, i, n) { + return n < 2 ? t.coord && t.coord[n] : t.value + } + + function ND(t, e, i) { + if ("average" !== i) return "median" === i ? t.getMedian(e) : t.getDataExtent(e, !0)["max" === i ? 1 : 0]; + var n = 0, + a = 0; + return t.each(e, function(t, e) { + isNaN(t) || (n += t, a++) + }), n / a + } + var OD = lf({ + type: "marker", + init: function() { + this.markerGroupMap = Q() + }, + render: function(t, i, n) { + var e = this.markerGroupMap; + e.each(function(t) { + t.__keep = !1 + }); + var a = this.type + "Model"; + i.eachSeries(function(t) { + var e = t[a]; + e && this.renderSeries(t, e, i, n) + }, this), e.each(function(t) { + t.__keep || this.group.remove(t.group) + }, this) + }, + renderSeries: function() {} + }); + + function RD(s, l, u) { + var h = l.coordinateSystem; + s.each(function(t) { + var e, i = s.getItemModel(t), + n = xl(i.get("x"), u.getWidth()), + a = xl(i.get("y"), u.getHeight()); + if (isNaN(n) || isNaN(a)) { + if (l.getMarkerPosition) e = l.getMarkerPosition(s.getValues(s.dimensions, t)); + else if (h) { + var o = s.get(h.dimensions[0], t), + r = s.get(h.dimensions[1], t); + e = h.dataToPoint([o, r]) + } + } else e = [n, a]; + isNaN(n) || (e[0] = n), isNaN(a) || (e[1] = a), s.setItemLayout(t, e) + }) + } + OD.extend({ + type: "markPoint", + updateTransform: function(t, e, i) { + e.eachSeries(function(t) { + var e = t.markPointModel; + e && (RD(e.getData(), t, i), this.markerGroupMap.get(t.id).updateLayout(e)) + }, this) + }, + renderSeries: function(t, l, e, i) { + var n = t.coordinateSystem, + a = t.id, + u = t.getData(), + o = this.markerGroupMap, + r = o.get(a) || o.set(a, new Ng), + h = function(t, e, i) { + var n; + n = t ? N(t && t.dimensions, function(t) { + return C({ + name: t + }, e.getData().getDimensionInfo(e.getData().mapDimension(t)) || {}) + }) : [{ + name: "value", + type: "float" + }]; + var a = new Tf(n, i), + o = N(i.get("data"), A(CD, e)); + t && (o = M(o, A(kD, t))); + return a.initData(o, null, t ? PD : function(t) { + return t.value + }), a + }(n, t, l); + l.setData(h), RD(l.getData(), t, i), h.each(function(t) { + var e = h.getItemModel(t), + i = e.getShallow("symbol"), + n = e.getShallow("symbolSize"), + a = R(i), + o = R(n); + if (a || o) { + var r = l.getRawValue(t), + s = l.getDataParams(t); + a && (i = i(r, s)), o && (n = n(r, s)) + } + h.setItemVisual(t, { + symbol: i, + symbolSize: n, + color: e.get("itemStyle.color") || u.getVisual("color") + }) + }), r.updateData(h), this.group.add(r.group), h.eachItemGraphicEl(function(t) { + t.traverse(function(t) { + t.dataModel = l + }) + }), r.__keep = !0, r.group.silent = l.get("silent") || t.get("silent") + } + }), Jd(function(t) { + t.markPoint = t.markPoint || {} + }), MD.extend({ + type: "markLine", + defaultOption: { + zlevel: 0, + z: 5, + symbol: ["circle", "arrow"], + symbolSize: [8, 16], + precision: 2, + tooltip: { + trigger: "item" + }, + label: { + show: !0, + position: "end" + }, + lineStyle: { + type: "dashed" + }, + emphasis: { + label: { + show: !0 + }, + lineStyle: { + width: 3 + } + }, + animationEasing: "linear" + } + }); + + function zD(t, e, i, n) { + var a = t.getData(), + o = n.type; + if (!k(n) && ("min" === o || "max" === o || "average" === o || "median" === o || null != n.xAxis || null != n.yAxis)) { + var r, s; + if (null != n.yAxis || null != n.xAxis) r = e.getAxis(null != n.yAxis ? "y" : "x"), s = W(n.yAxis, n.xAxis); + else { + var l = LD(n, a, e, t); + r = l.valueAxis, s = ND(a, Uf(a, l.valueDataDim), o) + } + var u = "x" === r.dim ? 0 : 1, + h = 1 - u, + c = D(n), + d = {}; + c.type = null, c.coord = [], d.coord = [], c.coord[h] = -1 / 0, d.coord[h] = 1 / 0; + var f = i.get("precision"); + 0 <= f && "number" == typeof s && (s = +s.toFixed(Math.min(f, 20))), c.coord[u] = d.coord[u] = s, n = [c, d, { + type: o, + valueIndex: n.valueIndex, + value: s + }] + } + return (n = [CD(t, n[0]), CD(t, n[1]), L({}, n[2])])[2].type = n[2].type || "", m(n[2], n[0]), m(n[2], n[1]), n + } + + function ED(t) { + return !isNaN(t) && !isFinite(t) + } + + function BD(t, e, i, n) { + var a = 1 - t, + o = n.dimensions[t]; + return ED(e[a]) && ED(i[a]) && e[t] === i[t] && n.getAxis(o).containData(e[t]) + } + + function VD(t, e) { + if ("cartesian2d" === t.type) { + var i = e[0].coord, + n = e[1].coord; + if (i && n && (BD(1, i, n, t) || BD(0, i, n, t))) return !0 + } + return kD(t, e[0]) && kD(t, e[1]) + } + + function GD(t, e, i, n, a) { + var o, r = n.coordinateSystem, + s = t.getItemModel(e), + l = xl(s.get("x"), a.getWidth()), + u = xl(s.get("y"), a.getHeight()); + if (isNaN(l) || isNaN(u)) { + if (n.getMarkerPosition) o = n.getMarkerPosition(t.getValues(t.dimensions, e)); + else { + var h = r.dimensions, + c = t.get(h[0], e), + d = t.get(h[1], e); + o = r.dataToPoint([c, d]) + } + if ("cartesian2d" === r.type) { + var f = r.getAxis("x"), + p = r.getAxis("y"); + h = r.dimensions; + ED(t.get(h[0], e)) ? o[0] = f.toGlobalCoord(f.getExtent()[i ? 0 : 1]) : ED(t.get(h[1], e)) && (o[1] = p.toGlobalCoord(p.getExtent()[i ? 0 : 1])) + } + isNaN(l) || (o[0] = l), isNaN(u) || (o[1] = u) + } else o = [l, u]; + t.setItemLayout(e, o) + } + OD.extend({ + type: "markLine", + updateTransform: function(t, e, o) { + e.eachSeries(function(e) { + var t = e.markLineModel; + if (t) { + var i = t.getData(), + n = t.__from, + a = t.__to; + n.each(function(t) { + GD(n, t, !0, e, o), GD(a, t, !1, e, o) + }), i.each(function(t) { + i.setItemLayout(t, [n.getItemLayout(t), a.getItemLayout(t)]) + }), this.markerGroupMap.get(e.id).updateLayout() + } + }, this) + }, + renderSeries: function(a, i, t, o) { + var e = a.coordinateSystem, + n = a.id, + r = a.getData(), + s = this.markerGroupMap, + l = s.get(n) || s.set(n, new R_); + this.group.add(l.group); + var u = function(t, e, i) { + var n; + n = t ? N(t && t.dimensions, function(t) { + return C({ + name: t + }, e.getData().getDimensionInfo(e.getData().mapDimension(t)) || {}) + }) : [{ + name: "value", + type: "float" + }]; + var a = new Tf(n, i), + o = new Tf(n, i), + r = new Tf([], i), + s = N(i.get("data"), A(zD, e, t, i)); + t && (s = M(s, A(VD, t))); + var l = t ? PD : function(t) { + return t.value + }; + return a.initData(N(s, function(t) { + return t[0] + }), null, l), o.initData(N(s, function(t) { + return t[1] + }), null, l), r.initData(N(s, function(t) { + return t[2] + })), r.hasItemOption = !0, { + from: a, + to: o, + line: r + } + }(e, a, i), + h = u.from, + c = u.to, + d = u.line; + i.__from = h, i.__to = c, i.setData(d); + var f = i.get("symbol"), + p = i.get("symbolSize"); + + function g(t, e, i) { + var n = t.getItemModel(e); + GD(t, e, i, a, o), t.setItemVisual(e, { + symbolSize: n.get("symbolSize") || p[i ? 0 : 1], + symbol: n.get("symbol", !0) || f[i ? 0 : 1], + color: n.get("itemStyle.color") || r.getVisual("color") + }) + } + k(f) || (f = [f, f]), "number" == typeof p && (p = [p, p]), u.from.each(function(t) { + g(h, t, !0), g(c, t, !1) + }), d.each(function(t) { + var e = d.getItemModel(t).get("lineStyle.color"); + d.setItemVisual(t, { + color: e || h.getItemVisual(t, "color") + }), d.setItemLayout(t, [h.getItemLayout(t), c.getItemLayout(t)]), d.setItemVisual(t, { + fromSymbolSize: h.getItemVisual(t, "symbolSize"), + fromSymbol: h.getItemVisual(t, "symbol"), + toSymbolSize: c.getItemVisual(t, "symbolSize"), + toSymbol: c.getItemVisual(t, "symbol") + }) + }), l.updateData(d), u.line.eachItemGraphicEl(function(t, e) { + t.traverse(function(t) { + t.dataModel = i + }) + }), l.__keep = !0, l.group.silent = i.get("silent") || a.get("silent") + } + }), Jd(function(t) { + t.markLine = t.markLine || {} + }), MD.extend({ + type: "markArea", + defaultOption: { + zlevel: 0, + z: 1, + tooltip: { + trigger: "item" + }, + animation: !1, + label: { + show: !0, + position: "top" + }, + itemStyle: { + borderWidth: 0 + }, + emphasis: { + label: { + show: !0, + position: "top" + } + } + } + }); + + function FD(t, e, i, n) { + var a = CD(t, n[0]), + o = CD(t, n[1]), + r = W, + s = a.coord, + l = o.coord; + s[0] = r(s[0], -1 / 0), s[1] = r(s[1], -1 / 0), l[0] = r(l[0], 1 / 0), l[1] = r(l[1], 1 / 0); + var u = p([{}, a, o]); + return u.coord = [a.coord, o.coord], u.x0 = a.x, u.y0 = a.y, u.x1 = o.x, u.y1 = o.y, u + } + + function WD(t) { + return !isNaN(t) && !isFinite(t) + } + + function HD(t, e, i) { + var n = 1 - t; + return WD(e[n]) && WD(i[n]) + } + + function ZD(t, e) { + var i = e.coord[0], + n = e.coord[1]; + return !("cartesian2d" !== t.type || !i || !n || !HD(1, i, n) && !HD(0, i, n)) || (kD(t, { + coord: i, + x: e.x0, + y: e.y0 + }) || kD(t, { + coord: n, + x: e.x1, + y: e.y1 + })) + } + + function UD(t, e, i, n, a) { + var o, r = n.coordinateSystem, + s = t.getItemModel(e), + l = xl(s.get(i[0]), a.getWidth()), + u = xl(s.get(i[1]), a.getHeight()); + if (isNaN(l) || isNaN(u)) { + if (n.getMarkerPosition) o = n.getMarkerPosition(t.getValues(i, e)); + else { + var h = [f = t.get(i[0], e), p = t.get(i[1], e)]; + r.clampData && r.clampData(h, h), o = r.dataToPoint(h, !0) + } + if ("cartesian2d" === r.type) { + var c = r.getAxis("x"), + d = r.getAxis("y"), + f = t.get(i[0], e), + p = t.get(i[1], e); + WD(f) ? o[0] = c.toGlobalCoord(c.getExtent()["x0" === i[0] ? 0 : 1]) : WD(p) && (o[1] = d.toGlobalCoord(d.getExtent()["y0" === i[1] ? 0 : 1])) + } + isNaN(l) || (o[0] = l), isNaN(u) || (o[1] = u) + } else o = [l, u]; + return o + } + var XD = [ + ["x0", "y0"], + ["x1", "y0"], + ["x1", "y1"], + ["x0", "y1"] + ]; + OD.extend({ + type: "markArea", + updateTransform: function(t, e, a) { + e.eachSeries(function(i) { + var t = i.markAreaModel; + if (t) { + var n = t.getData(); + n.each(function(e) { + var t = N(XD, function(t) { + return UD(n, e, t, i, a) + }); + n.setItemLayout(e, t), n.getItemGraphicEl(e).setShape("points", t) + }) + } + }, this) + }, + renderSeries: function(i, r, t, n) { + var e = i.coordinateSystem, + a = i.id, + o = i.getData(), + s = this.markerGroupMap, + l = s.get(a) || s.set(a, { + group: new Si + }); + this.group.add(l.group), l.__keep = !0; + var u = function(t, i, e) { + var n, a; + a = t ? (n = N(t && t.dimensions, function(t) { + var e = i.getData(); + return C({ + name: t + }, e.getDimensionInfo(e.mapDimension(t)) || {}) + }), new Tf(N(["x0", "y0", "x1", "y1"], function(t, e) { + return { + name: t, + type: n[e % 2].type + } + }), e)) : new Tf(n = [{ + name: "value", + type: "float" + }], e); + var o = N(e.get("data"), A(FD, i, t, e)); + t && (o = M(o, A(ZD, t))); + var r = t ? function(t, e, i, n) { + return t.coord[Math.floor(n / 2)][n % 2] + } : function(t) { + return t.value + }; + return a.initData(o, null, r), a.hasItemOption = !0, a + }(e, i, r); + r.setData(u), u.each(function(e) { + u.setItemLayout(e, N(XD, function(t) { + return UD(u, e, t, i, n) + })), u.setItemVisual(e, { + color: o.getVisual("color") + }) + }), u.diff(l.__data).add(function(t) { + var e = new zr({ + shape: { + points: u.getItemLayout(t) + } + }); + u.setItemGraphicEl(t, e), l.group.add(e) + }).update(function(t, e) { + var i = l.__data.getItemGraphicEl(e); + js(i, { + shape: { + points: u.getItemLayout(t) + } + }, r, t), l.group.add(i), u.setItemGraphicEl(t, i) + }).remove(function(t) { + var e = l.__data.getItemGraphicEl(t); + l.group.remove(e) + }).execute(), u.eachItemGraphicEl(function(t, e) { + var i = u.getItemModel(e), + n = i.getModel("label"), + a = i.getModel("emphasis.label"), + o = u.getItemVisual(e, "color"); + t.useStyle(C(i.getModel("itemStyle").getItemStyle(), { + fill: Ze(o, .4), + stroke: o + })), t.hoverStyle = i.getModel("emphasis.itemStyle").getItemStyle(), Bs(t.style, t.hoverStyle, n, a, { + labelFetcher: r, + labelDataIndex: e, + defaultText: u.getName(e) || "", + isRectText: !0, + autoColor: o + }), Os(t, {}), t.dataModel = r + }), l.__data = u, l.group.silent = r.get("silent") || i.get("silent") + } + }), Jd(function(t) { + t.markArea = t.markArea || {} + }); + var YD = gc.legend.selector, + jD = { + all: { + type: "all", + title: D(YD.all) + }, + inverse: { + type: "inverse", + title: D(YD.inverse) + } + }, + qD = sf({ + type: "legend.plain", + dependencies: ["series"], + layoutMode: { + type: "box", + ignoreSize: !0 + }, + init: function(t, e, i) { + this.mergeDefaultAndTheme(t, i), t.selected = t.selected || {}, this._updateSelector(t) + }, + mergeOption: function(t) { + qD.superCall(this, "mergeOption", t), this._updateSelector(t) + }, + _updateSelector: function(t) { + var i = t.selector; + !0 === i && (i = t.selector = ["all", "inverse"]), k(i) && O(i, function(t, e) { + z(t) && (t = { + type: t + }), i[e] = m(t, jD[t.type]) + }) + }, + optionUpdated: function() { + this._updateData(this.ecModel); + var t = this._data; + if (t[0] && "single" === this.get("selectedMode")) { + for (var e = !1, i = 0; i < t.length; i++) { + var n = t[i].get("name"); + if (this.isSelected(n)) { + this.select(n), e = !0; + break + } + } + e || this.select(t[0].get("name")) + } + }, + _updateData: function(o) { + var r = [], + s = []; + o.eachRawSeries(function(t) { + var e, i = t.name; + if (s.push(i), t.legendDataProvider) { + var n = t.legendDataProvider(), + a = n.mapArray(n.getName); + o.isSeriesFiltered(t) || (s = s.concat(a)), a.length ? r = r.concat(a) : e = !0 + } else e = !0; + e && Ta(t) && r.push(t.name) + }), this._availableNames = s; + var t = N(this.get("data") || r, function(t) { + return "string" != typeof t && "number" != typeof t || (t = { + name: t + }), new dl(t, this, this.ecModel) + }, this); + this._data = t + }, + getData: function() { + return this._data + }, + select: function(t) { + var e = this.option.selected; + "single" === this.get("selectedMode") && O(this._data, function(t) { + e[t.get("name")] = !1 + }); + e[t] = !0 + }, + unSelect: function(t) { + "single" !== this.get("selectedMode") && (this.option.selected[t] = !1) + }, + toggleSelected: function(t) { + var e = this.option.selected; + e.hasOwnProperty(t) || (e[t] = !0), this[e[t] ? "unSelect" : "select"](t) + }, + allSelect: function() { + var t = this._data, + e = this.option.selected; + O(t, function(t) { + e[t.get("name", !0)] = !0 + }) + }, + inverseSelect: function() { + var t = this._data, + i = this.option.selected; + O(t, function(t) { + var e = t.get("name", !0); + i.hasOwnProperty(e) || (i[e] = !0), i[e] = !i[e] + }) + }, + isSelected: function(t) { + var e = this.option.selected; + return !(e.hasOwnProperty(t) && !e[t]) && 0 <= _(this._availableNames, t) + }, + getOrient: function() { + return "vertical" === this.get("orient") ? { + index: 1, + name: "vertical" + } : { + index: 0, + name: "horizontal" + } + }, + defaultOption: { + zlevel: 0, + z: 4, + show: !0, + orient: "horizontal", + left: "center", + top: 0, + align: "auto", + backgroundColor: "rgba(0,0,0,0)", + borderColor: "#ccc", + borderRadius: 0, + borderWidth: 0, + padding: 5, + itemGap: 10, + itemWidth: 25, + itemHeight: 14, + inactiveColor: "#ccc", + inactiveBorderColor: "#ccc", + itemStyle: { + borderWidth: 0 + }, + textStyle: { + color: "#333" + }, + selectedMode: !0, + selector: !1, + selectorLabel: { + show: !0, + borderRadius: 10, + padding: [3, 5, 3, 5], + fontSize: 12, + fontFamily: " sans-serif", + color: "#666", + borderWidth: 1, + borderColor: "#666" + }, + emphasis: { + selectorLabel: { + show: !0, + color: "#eee", + backgroundColor: "#666" + } + }, + selectorPosition: "auto", + selectorItemGap: 7, + selectorButtonGap: 10, + tooltip: { + show: !1 + } + } + }); + + function KD(t, e, i) { + var a, o = {}, + r = "toggleSelected" === t; + return i.eachComponent("legend", function(n) { + r && null != a ? n[a ? "select" : "unSelect"](e.name) : "allSelect" === t || "inverseSelect" === t ? n[t]() : (n[t](e.name), a = n.isSelected(e.name)), O(n.getData(), function(t) { + var e = t.get("name"); + if ("\n" !== e && "" !== e) { + var i = n.isSelected(e); + o.hasOwnProperty(e) ? o[e] = o[e] && i : o[e] = i + } + }) + }), "allSelect" === t || "inverseSelect" === t ? { + selected: o + } : { + name: e.name, + selected: o + } + } + tf("legendToggleSelect", "legendselectchanged", A(KD, "toggleSelected")), tf("legendAllSelect", "legendselectall", A(KD, "allSelect")), tf("legendInverseSelect", "legendinverseselect", A(KD, "inverseSelect")), tf("legendSelect", "legendselected", A(KD, "select")), tf("legendUnSelect", "legendunselected", A(KD, "unSelect")); + var $D = A, + JD = O, + QD = Si, + tC = lf({ + type: "legend.plain", + newlineDisabled: !1, + init: function() { + this.group.add(this._contentGroup = new QD), this._backgroundEl, this.group.add(this._selectorGroup = new QD), this._isFirstRender = !0 + }, + getContentGroup: function() { + return this._contentGroup + }, + getSelectorGroup: function() { + return this._selectorGroup + }, + render: function(t, e, i) { + var n = this._isFirstRender; + if (this._isFirstRender = !1, this.resetInner(), t.get("show", !0)) { + var a = t.get("align"), + o = t.get("orient"); + a && "auto" !== a || (a = "right" === t.get("left") && "vertical" === o ? "right" : "left"); + var r = t.get("selector", !0), + s = t.get("selectorPosition", !0); + !r || s && "auto" !== s || (s = "horizontal" === o ? "end" : "start"), this.renderInner(a, t, e, i, r, o, s); + var l = t.getBoxLayoutParams(), + u = { + width: i.getWidth(), + height: i.getHeight() + }, + h = t.get("padding"), + c = au(l, u, h), + d = this.layoutInner(t, a, c, n, r, s), + f = au(C({ + width: d.width, + height: d.height + }, l), u, h); + this.group.attr("position", [f.x - d.x, f.y - d.y]), this.group.add(this._backgroundEl = bA(d, t)) + } + }, + resetInner: function() { + this.getContentGroup().removeAll(), this._backgroundEl && this.group.remove(this._backgroundEl), this.getSelectorGroup().removeAll() + }, + renderInner: function(u, h, c, d, t, e, i) { + var f = this.getContentGroup(), + p = Q(), + g = h.get("selectedMode"), + m = []; + c.eachRawSeries(function(t) { + t.get("legendHoverLink") || m.push(t.id) + }), JD(h.getData(), function(o, r) { + var s = o.get("name"); + if (this.newlineDisabled || "" !== s && "\n" !== s) { + var t = c.getSeriesByName(s)[0]; + if (!p.get(s)) + if (t) { + var e = t.getData(), + i = e.getVisual("color"), + n = e.getVisual("borderColor"); + "function" == typeof i && (i = i(t.getDataParams(0))), "function" == typeof n && (n = n(t.getDataParams(0))); + var a = e.getVisual("legendSymbol") || "roundRect", + l = e.getVisual("symbol"); + this._createItem(s, r, o, h, a, l, u, i, n, g).on("click", $D(iC, s, d)).on("mouseover", $D(nC, t.name, null, d, m)).on("mouseout", $D(aC, t.name, null, d, m)), p.set(s, !0) + } else c.eachRawSeries(function(t) { + if (!p.get(s) && t.legendDataProvider) { + var e = t.legendDataProvider(), + i = e.indexOfName(s); + if (i < 0) return; + var n = e.getItemVisual(i, "color"), + a = e.getItemVisual(i, "borderColor"); + this._createItem(s, r, o, h, "roundRect", null, u, n, a, g).on("click", $D(iC, s, d)).on("mouseover", $D(nC, null, s, d, m)).on("mouseout", $D(aC, null, s, d, m)), p.set(s, !0) + } + }, this) + } else f.add(new QD({ + newline: !0 + })) + }, this), t && this._createSelector(t, h, d, e, i) + }, + _createSelector: function(t, o, r, e, i) { + var s = this.getSelectorGroup(); + JD(t, function(t) { + ! function(t) { + var e = t.type, + i = new Dr({ + style: { + x: 0, + y: 0, + align: "center", + verticalAlign: "middle" + }, + onclick: function() { + r.dispatchAction({ + type: "all" === e ? "legendAllSelect" : "legendInverseSelect" + }) + } + }); + s.add(i); + var n = o.getModel("selectorLabel"), + a = o.getModel("emphasis.selectorLabel"); + Bs(i.style, i.hoverStyle = {}, n, a, { + defaultText: t.title, + isRectText: !1 + }), Os(i) + }(t) + }) + }, + _createItem: function(t, e, i, n, a, o, r, s, l, u) { + var h = n.get("itemWidth"), + c = n.get("itemHeight"), + d = n.get("inactiveColor"), + f = n.get("inactiveBorderColor"), + p = n.get("symbolKeepAspect"), + g = n.getModel("itemStyle"), + m = n.isSelected(t), + v = new QD, + y = i.getModel("textStyle"), + x = i.get("icon"), + _ = i.getModel("tooltip"), + w = _.parentModel, + b = Jp(a = x || a, 0, 0, h, c, m ? s : d, null == p || p); + if (v.add(eC(b, a, g, l, f, m)), !x && o && (o !== a || "none" === o)) { + var S = .8 * c; + "none" === o && (o = "circle"); + var M = Jp(o, (h - S) / 2, (c - S) / 2, S, S, m ? s : d, null == p || p); + v.add(eC(M, o, g, l, f, m)) + } + var I = "left" === r ? h + 5 : -5, + A = r, + T = n.get("formatter"), + D = t; + "string" == typeof T && T ? D = T.replace("{name}", null != t ? t : "") : "function" == typeof T && (D = T(t)), v.add(new Dr({ + style: Gs({}, y, { + text: D, + x: I, + y: c / 2, + textFill: m ? y.getTextColor() : d, + textAlign: A, + textVerticalAlign: "middle" + }) + })); + var C = new Hr({ + shape: v.getBoundingRect(), + invisible: !0, + tooltip: _.get("show") ? L({ + content: t, + formatter: w.get("formatter", !0) || function() { + return t + }, + formatterParams: { + componentType: "legend", + legendIndex: n.componentIndex, + name: t, + $vars: ["name"] + } + }, _.option) : null + }); + return v.add(C), v.eachChild(function(t) { + t.silent = !0 + }), C.silent = !u, this.getContentGroup().add(v), Os(v), v.__legendDataIndex = e, v + }, + layoutInner: function(t, e, i, n, a, o) { + var r = this.getContentGroup(), + s = this.getSelectorGroup(); + nu(t.get("orient"), r, t.get("itemGap"), i.width, i.height); + var l = r.getBoundingRect(), + u = [-l.x, -l.y]; + if (a) { + nu("horizontal", s, t.get("selectorItemGap", !0)); + var h = s.getBoundingRect(), + c = [-h.x, -h.y], + d = t.get("selectorButtonGap", !0), + f = t.getOrient().index, + p = 0 === f ? "width" : "height", + g = 0 === f ? "height" : "width", + m = 0 === f ? "y" : "x"; + "end" === o ? c[f] += l[p] + d : u[f] += h[p] + d, c[1 - f] += l[g] / 2 - h[g] / 2, s.attr("position", c), r.attr("position", u); + var v = { + x: 0, + y: 0 + }; + return v[p] = l[p] + d + h[p], v[g] = Math.max(l[g], h[g]), v[m] = Math.min(0, h[m] + c[1 - f]), v + } + return r.attr("position", u), this.group.getBoundingRect() + }, + remove: function() { + this.getContentGroup().removeAll(), this._isFirstRender = !0 + } + }); + + function eC(t, e, i, n, a, o) { + var r; + return "line" !== e && e.indexOf("empty") < 0 ? (r = i.getItemStyle(), t.style.stroke = n, o || (r.stroke = a)) : r = i.getItemStyle(["borderWidth", "borderColor"]), t.setStyle(r) + } + + function iC(t, e) { + e.dispatchAction({ + type: "legendToggleSelect", + name: t + }) + } + + function nC(t, e, i, n) { + var a = i.getZr().storage.getDisplayList()[0]; + a && a.useHoverLayer || i.dispatchAction({ + type: "highlight", + seriesName: t, + name: e, + excludeSeriesId: n + }) + } + + function aC(t, e, i, n) { + var a = i.getZr().storage.getDisplayList()[0]; + a && a.useHoverLayer || i.dispatchAction({ + type: "downplay", + seriesName: t, + name: e, + excludeSeriesId: n + }) + } + Qd(cd.PROCESSOR.SERIES_FILTER, function(t) { + var i = t.findComponents({ + mainType: "legend" + }); + i && i.length && t.filterSeries(function(t) { + for (var e = 0; e < i.length; e++) + if (!i[e].isSelected(t.name)) return !1; + return !0 + }) + }), fu.registerSubTypeDefaulter("legend", function() { + return "plain" + }); + var oC = qD.extend({ + type: "legend.scroll", + setScrollDataIndex: function(t) { + this.option.scrollDataIndex = t + }, + defaultOption: { + scrollDataIndex: 0, + pageButtonItemGap: 5, + pageButtonGap: null, + pageButtonPosition: "end", + pageFormatter: "{current}/{total}", + pageIcons: { + horizontal: ["M0,0L12,-10L12,10z", "M0,0L-12,-10L-12,10z"], + vertical: ["M0,0L20,0L10,-20z", "M0,0L20,0L10,20z"] + }, + pageIconColor: "#2f4554", + pageIconInactiveColor: "#aaa", + pageIconSize: 15, + pageTextStyle: { + color: "#333" + }, + animationDurationUpdate: 800 + }, + init: function(t, e, i, n) { + var a = su(t); + oC.superCall(this, "init", t, e, i, n), rC(this, t, a) + }, + mergeOption: function(t, e) { + oC.superCall(this, "mergeOption", t, e), rC(this, this.option, t) + } + }); + + function rC(t, e, i) { + var n = [1, 1]; + n[t.getOrient().index] = 0, ru(e, i, { + type: "box", + ignoreSize: n + }) + } + var sC = Si, + lC = ["width", "height"], + uC = ["x", "y"], + hC = tC.extend({ + type: "legend.scroll", + newlineDisabled: !0, + init: function() { + hC.superCall(this, "init"), this._currentIndex = 0, this.group.add(this._containerGroup = new sC), this._containerGroup.add(this.getContentGroup()), this.group.add(this._controllerGroup = new sC), this._showController + }, + resetInner: function() { + hC.superCall(this, "resetInner"), this._controllerGroup.removeAll(), this._containerGroup.removeClipPath(), this._containerGroup.__rectSize = null + }, + renderInner: function(t, a, e, o, i, n, r) { + var s = this; + hC.superCall(this, "renderInner", t, a, e, o, i, n, r); + var l = this._controllerGroup, + u = a.get("pageIconSize", !0); + k(u) || (u = [u, u]), c("pagePrev", 0); + var h = a.getModel("pageTextStyle"); + + function c(t, e) { + var i = t + "DataIndex", + n = el(a.get("pageIcons", !0)[a.getOrient().name][e], { + onclick: T(s._pageGo, s, i, a, o) + }, { + x: -u[0] / 2, + y: -u[1] / 2, + width: u[0], + height: u[1] + }); + n.name = t, l.add(n) + } + l.add(new Dr({ + name: "pageText", + style: { + textFill: h.getTextColor(), + font: h.getFont(), + textVerticalAlign: "middle", + textAlign: "center" + }, + silent: !0 + })), c("pageNext", 1) + }, + layoutInner: function(t, e, i, n, a, o) { + var r = this.getSelectorGroup(), + s = t.getOrient().index, + l = lC[s], + u = uC[s], + h = lC[1 - s], + c = uC[1 - s]; + a && nu("horizontal", r, t.get("selectorItemGap", !0)); + var d = t.get("selectorButtonGap", !0), + f = r.getBoundingRect(), + p = [-f.x, -f.y], + g = D(i); + a && (g[l] = i[l] - f[l] - d); + var m = this._layoutContentAndController(t, n, g, s, l, h, c); + if (a) { + if ("end" === o) p[s] += m[l] + d; + else { + var v = f[l] + d; + p[s] -= v, m[u] -= v + } + m[l] += f[l] + d, p[1 - s] += m[c] + m[h] / 2 - f[h] / 2, m[h] = Math.max(m[h], f[h]), m[c] = Math.min(m[c], f[c] + p[1 - s]), r.attr("position", p) + } + return m + }, + _layoutContentAndController: function(t, e, i, n, a, o, r) { + var s = this.getContentGroup(), + l = this._containerGroup, + u = this._controllerGroup; + nu(t.get("orient"), s, t.get("itemGap"), n ? i.width : null, n ? null : i.height), nu("horizontal", u, t.get("pageButtonItemGap", !0)); + var h = s.getBoundingRect(), + c = u.getBoundingRect(), + d = this._showController = h[a] > i[a], + f = [-h.x, -h.y]; + e || (f[n] = s.position[n]); + var p = [0, 0], + g = [-c.x, -c.y], + m = H(t.get("pageButtonGap", !0), t.get("itemGap", !0)); + d && ("end" === t.get("pageButtonPosition", !0) ? g[n] += i[a] - c[a] : p[n] += c[a] + m); + g[1 - n] += h[o] / 2 - c[o] / 2, s.attr("position", f), l.attr("position", p), u.attr("position", g); + var v = { + x: 0, + y: 0 + }; + if (v[a] = d ? i[a] : h[a], v[o] = Math.max(h[o], c[o]), v[r] = Math.min(0, c[r] + g[1 - n]), l.__rectSize = i[a], d) { + var y = { + x: 0, + y: 0 + }; + y[a] = Math.max(i[a] - c[a] - m, 0), y[o] = v[o], l.setClipPath(new Hr({ + shape: y + })), l.__rectSize = y[a] + } else u.eachChild(function(t) { + t.attr({ + invisible: !0, + silent: !0 + }) + }); + var x = this._getPageInfo(t); + return null != x.pageIndex && js(s, { + position: x.contentPosition + }, d && t), this._updatePageInfoView(t, x), v + }, + _pageGo: function(t, e, i) { + var n = this._getPageInfo(e)[t]; + null != n && i.dispatchAction({ + type: "legendScroll", + scrollDataIndex: n, + legendId: e.id + }) + }, + _updatePageInfoView: function(n, a) { + var o = this._controllerGroup; + O(["pagePrev", "pageNext"], function(t) { + var e = null != a[t + "DataIndex"], + i = o.childOfName(t); + i && (i.setStyle("fill", e ? n.get("pageIconColor", !0) : n.get("pageIconInactiveColor", !0)), i.cursor = e ? "pointer" : "default") + }); + var t = o.childOfName("pageText"), + e = n.get("pageFormatter"), + i = a.pageIndex, + r = null != i ? i + 1 : 0, + s = a.pageCount; + t && e && t.setStyle("text", z(e) ? e.replace("{current}", r).replace("{total}", s) : e({ + current: r, + total: s + })) + }, + _getPageInfo: function(t) { + var e = t.get("scrollDataIndex", !0), + i = this.getContentGroup(), + n = this._containerGroup.__rectSize, + a = t.getOrient().index, + o = lC[a], + r = uC[a], + s = this._findTargetItemIndex(e), + l = i.children(), + u = l[s], + h = l.length, + c = h ? 1 : 0, + d = { + contentPosition: i.position.slice(), + pageCount: c, + pageIndex: c - 1, + pagePrevDataIndex: null, + pageNextDataIndex: null + }; + if (!u) return d; + var f = y(u); + d.contentPosition[a] = -f.s; + for (var p = s + 1, g = f, m = f, v = null; p <= h; ++p)(!(v = y(l[p])) && m.e > g.s + n || v && !x(v, g.s)) && (g = m.i > g.i ? m : v) && (null == d.pageNextDataIndex && (d.pageNextDataIndex = g.i), ++d.pageCount), m = v; + for (p = s - 1, g = f, m = f, v = null; - 1 <= p; --p)(v = y(l[p])) && x(m, v.s) || !(g.i < m.i) || (m = g, null == d.pagePrevDataIndex && (d.pagePrevDataIndex = g.i), ++d.pageCount, ++d.pageIndex), g = v; + return d; + + function y(t) { + if (t) { + var e = t.getBoundingRect(), + i = e[r] + t.position[a]; + return { + s: i, + e: i + e[o], + i: t.__legendDataIndex + } + } + } + + function x(t, e) { + return t.e >= e && t.s <= e + n + } + }, + _findTargetItemIndex: function(n) { + var a, o, t = this.getContentGroup(); + return this._showController && t.eachChild(function(t, e) { + var i = t.__legendDataIndex; + null == o && null != i && (o = e), i === n && (a = e) + }), null != a ? a : o + } + }); + tf("legendScroll", "legendscroll", function(t, e) { + var i = t.scrollDataIndex; + null != i && e.eachComponent({ + mainType: "legend", + subType: "scroll", + query: t + }, function(t) { + t.setScrollDataIndex(i) + }) + }); + vT.extend({ + type: "dataZoom.slider", + layoutMode: "box", + defaultOption: { + show: !0, + right: "ph", + top: "ph", + width: "ph", + height: "ph", + left: null, + bottom: null, + backgroundColor: "rgba(47,69,84,0)", + dataBackground: { + lineStyle: { + color: "#2f4554", + width: .5, + opacity: .3 + }, + areaStyle: { + color: "rgba(47,69,84,0.3)", + opacity: .3 + } + }, + borderColor: "#ddd", + fillerColor: "rgba(167,183,204,0.4)", + handleIcon: "M8.2,13.6V3.9H6.3v9.7H3.1v14.9h3.3v9.7h1.8v-9.7h3.3V13.6H8.2z M9.7,24.4H4.8v-1.4h4.9V24.4z M9.7,19.1H4.8v-1.4h4.9V19.1z", + handleSize: "100%", + handleStyle: { + color: "#a7b7cc" + }, + labelPrecision: null, + labelFormatter: null, + showDetail: !0, + showDataShadow: "auto", + realtime: !0, + zoomLock: !1, + textStyle: { + color: "#333" + } + } + }); + var cC = Hr, + dC = yl, + fC = wl, + pC = T, + gC = O, + mC = "horizontal", + vC = "vertical", + yC = ["line", "bar", "candlestick", "scatter"], + xC = _T.extend({ + type: "dataZoom.slider", + init: function(t, e) { + this._displayables = {}, this._orient, this._range, this._handleEnds, this._size, this._handleWidth, this._handleHeight, this._location, this._dragging, this._dataShadowInfo, this.api = e + }, + render: function(t, e, i, n) { + xC.superApply(this, "render", arguments), dc(this, "_dispatchZoomAction", this.dataZoomModel.get("throttle"), "fixRate"), this._orient = t.get("orient"), !1 !== this.dataZoomModel.get("show") ? (n && "dataZoom" === n.type && n.from === this.uid || this._buildView(), this._updateView()) : this.group.removeAll() + }, + remove: function() { + xC.superApply(this, "remove", arguments), fc(this, "_dispatchZoomAction") + }, + dispose: function() { + xC.superApply(this, "dispose", arguments), fc(this, "_dispatchZoomAction") + }, + _buildView: function() { + var t = this.group; + t.removeAll(), this._resetLocation(), this._resetInterval(); + var e = this._displayables.barGroup = new Si; + this._renderBackground(), this._renderHandle(), this._renderDataShadow(), t.add(e), this._positionGroup() + }, + _resetLocation: function() { + var t = this.dataZoomModel, + e = this.api, + i = this._findCoordRect(), + n = { + width: e.getWidth(), + height: e.getHeight() + }, + a = this._orient === mC ? { + right: n.width - i.x - i.width, + top: n.height - 30 - 7, + width: i.width, + height: 30 + } : { + right: 7, + top: i.y, + width: 30, + height: i.height + }, + o = su(t.option); + O(["right", "top", "width", "height"], function(t) { + "ph" === o[t] && (o[t] = a[t]) + }); + var r = au(o, n, t.padding); + this._location = { + x: r.x, + y: r.y + }, this._size = [r.width, r.height], this._orient === vC && this._size.reverse() + }, + _positionGroup: function() { + var t = this.group, + e = this._location, + i = this._orient, + n = this.dataZoomModel.getFirstTargetAxisModel(), + a = n && n.get("inverse"), + o = this._displayables.barGroup, + r = (this._dataShadowInfo || {}).otherAxisInverse; + o.attr(i !== mC || a ? i === mC && a ? { + scale: r ? [-1, 1] : [-1, -1] + } : i !== vC || a ? { + scale: r ? [-1, -1] : [-1, 1], + rotation: Math.PI / 2 + } : { + scale: r ? [1, -1] : [1, 1], + rotation: Math.PI / 2 + } : { + scale: r ? [1, 1] : [1, -1] + }); + var s = t.getBoundingRect([o]); + t.attr("position", [e.x - s.x, e.y - s.y]) + }, + _getViewExtent: function() { + return [0, this._size[0]] + }, + _renderBackground: function() { + var t = this.dataZoomModel, + e = this._size, + i = this._displayables.barGroup; + i.add(new cC({ + silent: !0, + shape: { + x: 0, + y: 0, + width: e[0], + height: e[1] + }, + style: { + fill: t.get("backgroundColor") + }, + z2: -40 + })), i.add(new cC({ + shape: { + x: 0, + y: 0, + width: e[0], + height: e[1] + }, + style: { + fill: "transparent" + }, + z2: 0, + onclick: T(this._onClickPanelClick, this) + })) + }, + _renderDataShadow: function() { + var t = this._dataShadowInfo = this._prepareDataShadowInfo(); + if (t) { + var e = this._size, + i = t.series, + n = i.getRawData(), + a = i.getShadowDim ? i.getShadowDim() : t.otherDim; + if (null != a) { + var o = n.getDataExtent(a), + r = .3 * (o[1] - o[0]); + o = [o[0] - r, o[1] + r]; + var s, l = [0, e[1]], + u = [0, e[0]], + h = [ + [e[0], 0], + [0, 0] + ], + c = [], + d = u[1] / (n.count() - 1), + f = 0, + p = Math.round(n.count() / e[0]); + n.each([a], function(t, e) { + if (0 < p && e % p) f += d; + else { + var i = null == t || isNaN(t) || "" === t, + n = i ? 0 : dC(t, o, l, !0); + i && !s && e ? (h.push([h[h.length - 1][0], 0]), c.push([c[c.length - 1][0], 0])) : !i && s && (h.push([f, 0]), c.push([f, 0])), h.push([f, n]), c.push([f, n]), f += d, s = i + } + }); + var g = this.dataZoomModel; + this._displayables.barGroup.add(new zr({ + shape: { + points: h + }, + style: C({ + fill: g.get("dataBackgroundColor") + }, g.getModel("dataBackground.areaStyle").getAreaStyle()), + silent: !0, + z2: -20 + })), this._displayables.barGroup.add(new Er({ + shape: { + points: c + }, + style: g.getModel("dataBackground.lineStyle").getLineStyle(), + silent: !0, + z2: -19 + })) + } + } + }, + _prepareDataShadowInfo: function() { + var t = this.dataZoomModel, + s = t.get("showDataShadow"); + if (!1 !== s) { + var l, u = this.ecModel; + return t.eachTargetAxis(function(o, r) { + O(t.getAxisProxy(o.name, r).getTargetSeriesModels(), function(t) { + if (!(l || !0 !== s && _(yC, t.get("type")) < 0)) { + var e, i = u.getComponent(o.axis, r).axis, + n = function(t) { + return { + x: "y", + y: "x", + radius: "angle", + angle: "radius" + } [t] + }(o.name), + a = t.coordinateSystem; + null != n && a.getOtherAxis && (e = a.getOtherAxis(i).inverse), n = t.getData().mapDimension(n), l = { + thisAxis: i, + series: t, + thisDim: o.name, + otherDim: n, + otherAxisInverse: e + } + } + }, this) + }, this), l + } + }, + _renderHandle: function() { + var t = this._displayables, + o = t.handles = [], + r = t.handleLabels = [], + s = this._displayables.barGroup, + e = this._size, + l = this.dataZoomModel; + s.add(t.filler = new cC({ + draggable: !0, + cursor: _C(this._orient), + drift: pC(this._onDragMove, this, "all"), + onmousemove: function(t) { + Ft(t.event) + }, + ondragstart: pC(this._showDataInfo, this, !0), + ondragend: pC(this._onDragEnd, this), + onmouseover: pC(this._showDataInfo, this, !0), + onmouseout: pC(this._showDataInfo, this, !1), + style: { + fill: l.get("fillerColor"), + textPosition: "inside" + } + })), s.add(new cC({ + silent: !0, + subPixelOptimize: !0, + shape: { + x: 0, + y: 0, + width: e[0], + height: e[1] + }, + style: { + stroke: l.get("dataBackgroundColor") || l.get("borderColor"), + lineWidth: 1, + fill: "rgba(0,0,0,0)" + } + })), gC([0, 1], function(t) { + var e = el(l.get("handleIcon"), { + cursor: _C(this._orient), + draggable: !0, + drift: pC(this._onDragMove, this, t), + onmousemove: function(t) { + Ft(t.event) + }, + ondragend: pC(this._onDragEnd, this), + onmouseover: pC(this._showDataInfo, this, !0), + onmouseout: pC(this._showDataInfo, this, !1) + }, { + x: -1, + y: 0, + width: 2, + height: 2 + }), + i = e.getBoundingRect(); + this._handleHeight = xl(l.get("handleSize"), this._size[1]), this._handleWidth = i.width / i.height * this._handleHeight, e.setStyle(l.getModel("handleStyle").getItemStyle()); + var n = l.get("handleColor"); + null != n && (e.style.fill = n), s.add(o[t] = e); + var a = l.textStyleModel; + this.group.add(r[t] = new Dr({ + silent: !0, + invisible: !0, + style: { + x: 0, + y: 0, + text: "", + textVerticalAlign: "middle", + textAlign: "center", + textFill: a.getTextColor(), + textFont: a.getFont() + }, + z2: 10 + })) + }, this) + }, + _resetInterval: function() { + var t = this._range = this.dataZoomModel.getPercentRange(), + e = this._getViewExtent(); + this._handleEnds = [dC(t[0], [0, 100], e, !0), dC(t[1], [0, 100], e, !0)] + }, + _updateInterval: function(t, e) { + var i = this.dataZoomModel, + n = this._handleEnds, + a = this._getViewExtent(), + o = i.findRepresentativeAxisProxy().getMinMaxSpan(), + r = [0, 100]; + xw(e, n, a, i.get("zoomLock") ? "all" : t, null != o.minSpan ? dC(o.minSpan, r, a, !0) : null, null != o.maxSpan ? dC(o.maxSpan, r, a, !0) : null); + var s = this._range, + l = this._range = fC([dC(n[0], a, r, !0), dC(n[1], a, r, !0)]); + return !s || s[0] !== l[0] || s[1] !== l[1] + }, + _updateView: function(t) { + var n = this._displayables, + a = this._handleEnds, + e = fC(a.slice()), + o = this._size; + gC([0, 1], function(t) { + var e = n.handles[t], + i = this._handleHeight; + e.attr({ + scale: [i / 2, i / 2], + position: [a[t], o[1] / 2 - i / 2] + }) + }, this), n.filler.setShape({ + x: e[0], + y: 0, + width: e[1] - e[0], + height: o[1] + }), this._updateDataInfo(t) + }, + _updateDataInfo: function(t) { + var e = this.dataZoomModel, + o = this._displayables, + r = o.handleLabels, + s = this._orient, + l = ["", ""]; + if (e.get("showDetail")) { + var i = e.findRepresentativeAxisProxy(); + if (i) { + var n = i.getAxisModel().axis, + a = this._range, + u = t ? i.calculateDataWindow({ + start: a[0], + end: a[1] + }).valueWindow : i.getDataValueWindow(); + l = [this._formatLabel(u[0], n), this._formatLabel(u[1], n)] + } + } + var h = fC(this._handleEnds.slice()); + + function c(t) { + var e = Ks(o.handles[t].parent, this.group), + i = Js(0 === t ? "right" : "left", e), + n = this._handleWidth / 2 + 5, + a = $s([h[t] + (0 === t ? -n : n), this._size[1] / 2], e); + r[t].setStyle({ + x: a[0], + y: a[1], + textVerticalAlign: s === mC ? "middle" : i, + textAlign: s === mC ? i : "center", + text: l[t] + }) + } + c.call(this, 0), c.call(this, 1) + }, + _formatLabel: function(t, e) { + var i = this.dataZoomModel, + n = i.get("labelFormatter"), + a = i.get("labelPrecision"); + null != a && "auto" !== a || (a = e.getPixelPrecision()); + var o = null == t || isNaN(t) ? "" : "category" === e.type || "time" === e.type ? e.scale.getLabel(Math.round(t)) : t.toFixed(Math.min(a, 20)); + return R(n) ? n(t, o) : z(n) ? n.replace("{value}", o) : o + }, + _showDataInfo: function(t) { + t = this._dragging || t; + var e = this._displayables.handleLabels; + e[0].attr("invisible", !t), e[1].attr("invisible", !t) + }, + _onDragMove: function(t, e, i) { + this._dragging = !0; + var n = $s([e, i], this._displayables.barGroup.getLocalTransform(), !0), + a = this._updateInterval(t, n[0]), + o = this.dataZoomModel.get("realtime"); + this._updateView(!o), a && o && this._dispatchZoomAction() + }, + _onDragEnd: function() { + this._dragging = !1, this._showDataInfo(!1), this.dataZoomModel.get("realtime") || this._dispatchZoomAction() + }, + _onClickPanelClick: function(t) { + var e = this._size, + i = this._displayables.barGroup.transformCoordToLocal(t.offsetX, t.offsetY); + if (!(i[0] < 0 || i[0] > e[0] || i[1] < 0 || i[1] > e[1])) { + var n = this._handleEnds, + a = (n[0] + n[1]) / 2, + o = this._updateInterval("all", i[0] - a); + this._updateView(), o && this._dispatchZoomAction() + } + }, + _dispatchZoomAction: function() { + var t = this._range; + this.api.dispatchAction({ + type: "dataZoom", + from: this.uid, + dataZoomId: this.dataZoomModel.id, + start: t[0], + end: t[1] + }) + }, + _findCoordRect: function() { + var i; + if (gC(this.getTargetCoordInfo(), function(t) { + if (!i && t.length) { + var e = t[0].model.coordinateSystem; + i = e.getRect && e.getRect() + } + }), !i) { + var t = this.api.getWidth(), + e = this.api.getHeight(); + i = { + x: .2 * t, + y: .2 * e, + width: .6 * t, + height: .6 * e + } + } + return i + } + }); + + function _C(t) { + return "vertical" === t ? "ns-resize" : "ew-resize" + } + vT.extend({ + type: "dataZoom.inside", + defaultOption: { + disabled: !1, + zoomLock: !1, + zoomOnMouseWheel: !0, + moveOnMouseMove: !0, + moveOnMouseWheel: !1, + preventDefaultMouseMove: !0 + } + }); + var wC = "\0_ec_dataZoom_roams"; + + function bC(t, n) { + var e = MC(t), + a = n.dataZoomId, + o = n.coordId; + O(e, function(t, e) { + var i = t.dataZoomInfos; + i[a] && _(n.allCoordIds, o) < 0 && (delete i[a], t.count--) + }), IC(e); + var i = e[o]; + i || ((i = e[o] = { + coordId: o, + dataZoomInfos: {}, + count: 0 + }).controller = function(t, r) { + var e = new sy(t.getZr()); + return O(["pan", "zoom", "scrollMove"], function(o) { + e.on(o, function(n) { + var a = []; + O(r.dataZoomInfos, function(t) { + if (n.isAvailableBehavior(t.dataZoomModel.option)) { + var e = (t.getRange || {})[o], + i = e && e(r.controller, n); + !t.dataZoomModel.get("disabled", !0) && i && a.push({ + dataZoomId: t.dataZoomId, + start: i[0], + end: i[1] + }) + } + }), a.length && r.dispatchAction(a) + }) + }), e + }(t, i), i.dispatchAction = A(AC, t)), i.dataZoomInfos[a] || i.count++, i.dataZoomInfos[a] = n; + var r = function(t) { + var n, a = { + type_true: 2, + type_move: 1, + type_false: 0, + type_undefined: -1 + }, + o = !0; + return O(t, function(t) { + var e = t.dataZoomModel, + i = !e.get("disabled", !0) && (!e.get("zoomLock", !0) || "move"); + a["type_" + n] < a["type_" + i] && (n = i), o &= e.get("preventDefaultMouseMove", !0) + }), { + controlType: n, + opt: { + zoomOnMouseWheel: !0, + moveOnMouseMove: !0, + moveOnMouseWheel: !0, + preventDefaultMouseMove: !!o + } + } + }(i.dataZoomInfos); + i.controller.enable(r.controlType, r.opt), i.controller.setPointerChecker(n.containsPoint), dc(i, "dispatchAction", n.dataZoomModel.get("throttle", !0), "fixRate") + } + + function SC(t) { + return t.type + "\0_" + t.id + } + + function MC(t) { + var e = t.getZr(); + return e[wC] || (e[wC] = {}) + } + + function IC(i) { + O(i, function(t, e) { + t.count || (t.controller.dispose(), delete i[e]) + }) + } + + function AC(t, e) { + t.dispatchAction({ + type: "dataZoom", + batch: e + }) + } + var TC = T, + DC = _T.extend({ + type: "dataZoom.inside", + init: function(t, e) { + this._range + }, + render: function(r, t, s, e) { + DC.superApply(this, "render", arguments), this._range = r.getPercentRange(), O(this.getTargetCoordInfo(), function(t, a) { + var o = N(t, function(t) { + return SC(t.model) + }); + O(t, function(e) { + var n = e.model, + i = {}; + O(["pan", "zoom", "scrollMove"], function(t) { + i[t] = TC(CC[t], this, e, a) + }, this), bC(s, { + coordId: SC(n), + allCoordIds: o, + containsPoint: function(t, e, i) { + return n.coordinateSystem.containPoint([e, i]) + }, + dataZoomId: r.id, + dataZoomModel: r, + getRange: i + }) + }, this) + }, this) + }, + dispose: function() { + ! function(t, i) { + var e = MC(t); + O(e, function(t) { + t.controller.dispose(); + var e = t.dataZoomInfos; + e[i] && (delete e[i], t.count--) + }), IC(e) + }(this.api, this.dataZoomModel.id), DC.superApply(this, "dispose", arguments), this._range = null + } + }), + CC = { + zoom: function(t, e, i, n) { + var a = this._range, + o = a.slice(), + r = t.axisModels[0]; + if (r) { + var s = PC[e](null, [n.originX, n.originY], r, i, t), + l = (0 < s.signal ? s.pixelStart + s.pixelLength - s.pixel : s.pixel - s.pixelStart) / s.pixelLength * (o[1] - o[0]) + o[0], + u = Math.max(1 / n.scale, 0); + o[0] = (o[0] - l) * u + l, o[1] = (o[1] - l) * u + l; + var h = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan(); + return xw(0, o, [0, 100], 0, h.minSpan, h.maxSpan), this._range = o, a[0] !== o[0] || a[1] !== o[1] ? o : void 0 + } + }, + pan: LC(function(t, e, i, n, a, o) { + var r = PC[n]([o.oldX, o.oldY], [o.newX, o.newY], e, a, i); + return r.signal * (t[1] - t[0]) * r.pixel / r.pixelLength + }), + scrollMove: LC(function(t, e, i, n, a, o) { + return PC[n]([0, 0], [o.scrollDelta, o.scrollDelta], e, a, i).signal * (t[1] - t[0]) * o.scrollDelta + }) + }; + + function LC(l) { + return function(t, e, i, n) { + var a = this._range, + o = a.slice(), + r = t.axisModels[0]; + if (r) { + var s = l(o, r, t, e, i, n); + return xw(s, o, [0, 100], "all"), this._range = o, a[0] !== o[0] || a[1] !== o[1] ? o : void 0 + } + } + } + + function kC(t) { + var e = t && t.visualMap; + k(e) || (e = e ? [e] : []), NC(e, function(t) { + if (t) { + OC(t, "splitList") && !OC(t, "pieces") && (t.pieces = t.splitList, delete t.splitList); + var e = t.pieces; + e && k(e) && NC(e, function(t) { + E(t) && (OC(t, "start") && !OC(t, "min") && (t.min = t.start), OC(t, "end") && !OC(t, "max") && (t.max = t.end)) + }) + } + }) + } + var PC = { + grid: function(t, e, i, n, a) { + var o = i.axis, + r = {}, + s = a.model.coordinateSystem.getRect(); + return t = t || [0, 0], "x" === o.dim ? (r.pixel = e[0] - t[0], r.pixelLength = s.width, r.pixelStart = s.x, r.signal = o.inverse ? 1 : -1) : (r.pixel = e[1] - t[1], r.pixelLength = s.height, r.pixelStart = s.y, r.signal = o.inverse ? -1 : 1), r + }, + polar: function(t, e, i, n, a) { + var o = i.axis, + r = {}, + s = a.model.coordinateSystem, + l = s.getRadiusAxis().getExtent(), + u = s.getAngleAxis().getExtent(); + return t = t ? s.pointToCoord(t) : [0, 0], e = s.pointToCoord(e), "radiusAxis" === i.mainType ? (r.pixel = e[0] - t[0], r.pixelLength = l[1] - l[0], r.pixelStart = l[0], r.signal = o.inverse ? 1 : -1) : (r.pixel = e[1] - t[1], r.pixelLength = u[1] - u[0], r.pixelStart = u[0], r.signal = o.inverse ? -1 : 1), r + }, + singleAxis: function(t, e, i, n, a) { + var o = i.axis, + r = a.model.coordinateSystem.getRect(), + s = {}; + return t = t || [0, 0], "horizontal" === o.orient ? (s.pixel = e[0] - t[0], s.pixelLength = r.width, s.pixelStart = r.x, s.signal = o.inverse ? 1 : -1) : (s.pixel = e[1] - t[1], s.pixelLength = r.height, s.pixelStart = r.y, s.signal = o.inverse ? -1 : 1), s + } + }, + NC = O; + + function OC(t, e) { + return t && t.hasOwnProperty && t.hasOwnProperty(e) + } + fu.registerSubTypeDefaulter("visualMap", function(t) { + return t.categories || (t.pieces ? 0 < t.pieces.length : 0 < t.splitNumber) && !t.calculable ? "piecewise" : "continuous" + }); + var RC = cd.VISUAL.COMPONENT; + + function zC(t, e, i, n) { + for (var a = e.targetVisuals[n], o = zx.prepareVisualTypes(a), r = { + color: t.getData().getVisual("color") + }, s = 0, l = o.length; s < l; s++) { + var u = o[s], + h = a["opacity" === u ? "__alphaForOpacity" : u]; + h && h.applyVisual(i, c, d) + } + return r.color; + + function c(t) { + return r[t] + } + + function d(t, e) { + r[t] = e + } + } + af(RC, { + createOnAllSeries: !0, + reset: function(i, t) { + var n = []; + return t.eachComponent("visualMap", function(t) { + var e = i.pipelineContext; + !t.isTargetSeries(i) || e && e.large || n.push(function(t, f, p, g) { + var m = {}; + return O(t, function(t) { + var e = zx.prepareVisualTypes(f[t]); + m[t] = e + }), { + progress: function(t, i) { + function e(t) { + return i.getItemVisual(a, t) + } + + function n(t, e) { + i.setItemVisual(a, t, e) + } + var a; + for (null != g && (g = i.getDimension(g)); null != (a = t.next());) { + var o = i.getRawDataItem(a); + if (!o || !1 !== o.visualMap) + for (var r = null != g ? i.get(g, a, !0) : a, s = p(r), l = f[s], u = m[s], h = 0, c = u.length; h < c; h++) { + var d = u[h]; + l[d] && l[d].applyVisual(r, e, n) + } + } + } + } + }(t.stateList, t.targetVisuals, T(t.getValueState, t), t.getDataDimension(i.getData()))) + }), n + } + }), af(RC, { + createOnAllSeries: !0, + reset: function(a, t) { + var o = a.getData(), + r = []; + t.eachComponent("visualMap", function(t) { + if (t.isTargetSeries(a)) { + var e = t.getVisualMeta(T(zC, null, a, t)) || { + stops: [], + outerColors: [] + }, + i = t.getDataDimension(o), + n = o.getDimensionInfo(i); + null != n && (e.dimension = n.index, r.push(e)) + } + }), a.getData().setVisual("visualMeta", r) + } + }); + var EC = function(t, e, i) { + var n = D((BC[t] || {})[e]); + return i && k(n) ? n[n.length - 1] : n + }, + BC = { + color: { + active: ["#006edd", "#e0ffff"], + inactive: ["rgba(0,0,0,0)"] + }, + colorHue: { + active: [0, 360], + inactive: [0, 0] + }, + colorSaturation: { + active: [.3, 1], + inactive: [0, 0] + }, + colorLightness: { + active: [.9, .5], + inactive: [0, 0] + }, + colorAlpha: { + active: [.3, 1], + inactive: [0, 0] + }, + opacity: { + active: [.3, 1], + inactive: [0, 0] + }, + symbol: { + active: ["circle", "roundRect", "diamond"], + inactive: ["none"] + }, + symbolSize: { + active: [10, 50], + inactive: [0, 0] + } + }, + VC = zx.mapVisual, + GC = zx.eachVisual, + FC = k, + WC = O, + HC = wl, + ZC = yl, + UC = sf({ + type: "visualMap", + dependencies: ["series"], + stateList: ["inRange", "outOfRange"], + replacableOptionKeys: ["inRange", "outOfRange", "target", "controller", "color"], + dataBound: [-1 / 0, 1 / 0], + layoutMode: { + type: "box", + ignoreSize: !0 + }, + defaultOption: { + show: !0, + zlevel: 0, + z: 4, + seriesIndex: "all", + min: 0, + max: 200, + dimension: null, + inRange: null, + outOfRange: null, + left: 0, + right: null, + top: null, + bottom: 0, + itemWidth: null, + itemHeight: null, + inverse: !1, + orient: "vertical", + backgroundColor: "rgba(0,0,0,0)", + borderColor: "#ccc", + contentColor: "#5793f3", + inactiveColor: "#aaa", + borderWidth: 0, + padding: 5, + textGap: 10, + precision: 0, + color: null, + formatter: null, + text: null, + textStyle: { + color: "#333" + } + }, + init: function(t, e, i) { + this._dataExtent, this.targetVisuals = {}, this.controllerVisuals = {}, this.textStyleModel, this.itemSize, this.mergeDefaultAndTheme(t, i) + }, + optionUpdated: function(t, e) { + var i = this.option; + v.canvasSupported || (i.realtime = !1), e || XT(i, t, this.replacableOptionKeys), this.textStyleModel = this.getModel("textStyle"), this.resetItemSize(), this.completeVisualOption() + }, + resetVisual: function(t) { + var e = this.stateList; + t = T(t, this), this.controllerVisuals = UT(this.option.controller, e, t), this.targetVisuals = UT(this.option.target, e, t) + }, + getTargetSeriesIndices: function() { + var t = this.option.seriesIndex, + i = []; + return null == t || "all" === t ? this.ecModel.eachSeries(function(t, e) { + i.push(e) + }) : i = wa(t), i + }, + eachTargetSeries: function(e, i) { + O(this.getTargetSeriesIndices(), function(t) { + e.call(i, this.ecModel.getSeriesByIndex(t)) + }, this) + }, + isTargetSeries: function(e) { + var i = !1; + return this.eachTargetSeries(function(t) { + t === e && (i = !0) + }), i + }, + formatValueText: function(t, e, i) { + var n, a, o = this.option, + r = o.precision, + s = this.dataBound, + l = o.formatter; + return i = i || ["<", ">"], k(t) && (t = t.slice(), n = !0), a = e ? t : n ? [u(t[0]), u(t[1])] : u(t), z(l) ? l.replace("{value}", n ? a[0] : a).replace("{value2}", n ? a[1] : a) : R(l) ? n ? l(t[0], t[1]) : l(t) : n ? t[0] === s[0] ? i[0] + " " + a[1] : t[1] === s[1] ? i[1] + " " + a[0] : a[0] + " - " + a[1] : a; + + function u(t) { + return t === s[0] ? "min" : t === s[1] ? "max" : (+t).toFixed(Math.min(r, 20)) + } + }, + resetExtent: function() { + var t = this.option, + e = HC([t.min, t.max]); + this._dataExtent = e + }, + getDataDimension: function(t) { + var e = this.option.dimension, + i = t.dimensions; + if (null != e || i.length) { + if (null != e) return t.getDimension(e); + for (var n = t.dimensions, a = n.length - 1; 0 <= a; a--) { + var o = n[a]; + if (!t.getDimensionInfo(o).isCalculationCoord) return o + } + } + }, + getExtent: function() { + return this._dataExtent.slice() + }, + completeVisualOption: function() { + var t = this.ecModel, + e = this.option, + i = { + inRange: e.inRange, + outOfRange: e.outOfRange + }, + n = e.target || (e.target = {}), + a = e.controller || (e.controller = {}); + m(n, i), m(a, i); + var u = this.isCategory(); + + function o(n) { + FC(e.color) && !n.inRange && (n.inRange = { + color: e.color.slice().reverse() + }), n.inRange = n.inRange || { + color: t.get("gradientColor") + }, WC(this.stateList, function(t) { + var e = n[t]; + if (z(e)) { + var i = EC(e, "active", u); + i ? (n[t] = {}, n[t][e] = i) : delete n[t] + } + }, this) + } + o.call(this, n), o.call(this, a), + function(t, e, i) { + var n = t[e], + a = t[i]; + n && !a && (a = t[i] = {}, WC(n, function(t, e) { + if (zx.isValidType(e)) { + var i = EC(e, "inactive", u); + null != i && (a[e] = i, "color" !== e || a.hasOwnProperty("opacity") || a.hasOwnProperty("colorAlpha") || (a.opacity = [0, 0])) + } + })) + }.call(this, n, "inRange", "outOfRange"), + function(o) { + var r = (o.inRange || {}).symbol || (o.outOfRange || {}).symbol, + s = (o.inRange || {}).symbolSize || (o.outOfRange || {}).symbolSize, + l = this.get("inactiveColor"); + WC(this.stateList, function(t) { + var e = this.itemSize, + i = o[t]; + null == (i = i || (o[t] = { + color: u ? l : [l] + })).symbol && (i.symbol = r && D(r) || (u ? "roundRect" : ["roundRect"])), null == i.symbolSize && (i.symbolSize = s && D(s) || (u ? e[0] : [e[0], e[0]])), i.symbol = VC(i.symbol, function(t) { + return "none" === t || "square" === t ? "roundRect" : t + }); + var n = i.symbolSize; + if (null != n) { + var a = -1 / 0; + GC(n, function(t) { + a < t && (a = t) + }), i.symbolSize = VC(n, function(t) { + return ZC(t, [0, a], [0, e[0]], !0) + }) + } + }, this) + }.call(this, a) + }, + resetItemSize: function() { + this.itemSize = [parseFloat(this.get("itemWidth")), parseFloat(this.get("itemHeight"))] + }, + isCategory: function() { + return !!this.option.categories + }, + setSelected: et, + getValueState: et, + getVisualMeta: et + }), + XC = [20, 140], + YC = UC.extend({ + type: "visualMap.continuous", + defaultOption: { + align: "auto", + calculable: !1, + range: null, + realtime: !0, + itemHeight: null, + itemWidth: null, + hoverLink: !0, + hoverLinkDataSize: null, + hoverLinkOnHandle: null + }, + optionUpdated: function(t, e) { + YC.superApply(this, "optionUpdated", arguments), this.resetExtent(), this.resetVisual(function(t) { + t.mappingMethod = "linear", t.dataExtent = this.getExtent() + }), this._resetRange() + }, + resetItemSize: function() { + YC.superApply(this, "resetItemSize", arguments); + var t = this.itemSize; + "horizontal" === this._orient && t.reverse(), null != t[0] && !isNaN(t[0]) || (t[0] = XC[0]), null != t[1] && !isNaN(t[1]) || (t[1] = XC[1]) + }, + _resetRange: function() { + var t = this.getExtent(), + e = this.option.range; + !e || e.auto ? (t.auto = 1, this.option.range = t) : k(e) && (e[0] > e[1] && e.reverse(), e[0] = Math.max(e[0], t[0]), e[1] = Math.min(e[1], t[1])) + }, + completeVisualOption: function() { + UC.prototype.completeVisualOption.apply(this, arguments), O(this.stateList, function(t) { + var e = this.option.controller[t].symbolSize; + e && e[0] !== e[1] && (e[0] = 0) + }, this) + }, + setSelected: function(t) { + this.option.range = t.slice(), this._resetRange() + }, + getSelected: function() { + var t = this.getExtent(), + e = wl((this.get("range") || []).slice()); + return e[0] > t[1] && (e[0] = t[1]), e[1] > t[1] && (e[1] = t[1]), e[0] < t[0] && (e[0] = t[0]), e[1] < t[0] && (e[1] = t[0]), e + }, + getValueState: function(t) { + var e = this.option.range, + i = this.getExtent(); + return (e[0] <= i[0] || e[0] <= t) && (e[1] >= i[1] || t <= e[1]) ? "inRange" : "outOfRange" + }, + findTargetDataIndices: function(n) { + var a = []; + return this.eachTargetSeries(function(t) { + var i = [], + e = t.getData(); + e.each(this.getDataDimension(e), function(t, e) { + n[0] <= t && t <= n[1] && i.push(e) + }, this), a.push({ + seriesId: t.id, + dataIndex: i + }) + }, this), a + }, + getVisualMeta: function(i) { + var t = jC(this, "outOfRange", this.getExtent()), + e = jC(this, "inRange", this.option.range.slice()), + n = []; + + function a(t, e) { + n.push({ + value: t, + color: i(t, e) + }) + } + for (var o = 0, r = 0, s = e.length, l = t.length; r < l && (!e.length || t[r] <= e[0]); r++) t[r] < e[o] && a(t[r], "outOfRange"); + for (var u = 1; o < s; o++, u = 0) u && n.length && a(e[o], "outOfRange"), a(e[o], "inRange"); + for (u = 1; r < l; r++)(!e.length || e[e.length - 1] < t[r]) && (u && (n.length && a(n[n.length - 1].value, "outOfRange"), u = 0), a(t[r], "outOfRange")); + var h = n.length; + return { + stops: n, + outerColors: [h ? n[0].color : "transparent", h ? n[h - 1].color : "transparent"] + } + } + }); + + function jC(t, e, i) { + if (i[0] === i[1]) return i.slice(); + for (var n = (i[1] - i[0]) / 200, a = i[0], o = [], r = 0; r <= 200 && a < i[1]; r++) o.push(a), a += n; + return o.push(i[1]), o + } + var qC = lf({ + type: "visualMap", + autoPositionValues: { + left: 1, + right: 1, + top: 1, + bottom: 1 + }, + init: function(t, e) { + this.ecModel = t, this.api = e, this.visualMapModel + }, + render: function(t, e, i, n) { + !1 !== (this.visualMapModel = t).get("show") ? this.doRender.apply(this, arguments) : this.group.removeAll() + }, + renderBackground: function(t) { + var e = this.visualMapModel, + i = Vl(e.get("padding") || 0), + n = t.getBoundingRect(); + t.add(new Hr({ + z2: -1, + silent: !0, + shape: { + x: n.x - i[3], + y: n.y - i[0], + width: n.width + i[3] + i[1], + height: n.height + i[0] + i[2] + }, + style: { + fill: e.get("backgroundColor"), + stroke: e.get("borderColor"), + lineWidth: e.get("borderWidth") + } + })) + }, + getControllerVisual: function(i, n, a) { + var t = (a = a || {}).forceState, + e = this.visualMapModel, + o = {}; + if ("symbol" === n && (o.symbol = e.get("itemSymbol")), "color" === n) { + var r = e.get("contentColor"); + o.color = r + } + + function s(t) { + return o[t] + } + + function l(t, e) { + o[t] = e + } + var u = e.controllerVisuals[t || e.getValueState(i)]; + return O(zx.prepareVisualTypes(u), function(t) { + var e = u[t]; + a.convertOpacityToAlpha && "opacity" === t && (t = "colorAlpha", e = u.__alphaForOpacity), zx.dependsOn(t, n) && e && e.applyVisual(i, s, l) + }), o[n] + }, + positionGroup: function(t) { + var e = this.visualMapModel, + i = this.api; + ou(t, e.getBoxLayoutParams(), { + width: i.getWidth(), + height: i.getHeight() + }) + }, + doRender: et + }); + + function KC(t, e, i) { + var n = t.option, + a = n.align; + if (null != a && "auto" !== a) return a; + for (var o = { + width: e.getWidth(), + height: e.getHeight() + }, r = "horizontal" === n.orient ? 1 : 0, s = [ + ["left", "right", "width"], + ["top", "bottom", "height"] + ], l = s[r], u = [0, null, 10], h = {}, c = 0; c < 3; c++) h[s[1 - r][c]] = u[c], h[l[c]] = 2 === c ? i[0] : n[l[c]]; + var d = [ + ["x", "width", 3], + ["y", "height", 0] + ][r], + f = au(h, o, n.padding); + return l[(f.margin[d[2]] || 0) + f[d[0]] + .5 * f[d[1]] < .5 * o[d[1]] ? 0 : 1] + } + + function $C(t, e) { + return O(t || [], function(t) { + null != t.dataIndex && (t.dataIndexInside = t.dataIndex, t.dataIndex = null), t.highlightKey = "visualMap" + (e ? e.componentIndex : "") + }), t + } + var JC = yl, + QC = O, + tL = Math.min, + eL = Math.max, + iL = qC.extend({ + type: "visualMap.continuous", + init: function() { + iL.superApply(this, "init", arguments), this._shapes = {}, this._dataInterval = [], this._handleEnds = [], this._orient, this._useHandle, this._hoverLinkDataIndices = [], this._dragging, this._hovering + }, + doRender: function(t, e, i, n) { + n && "selectDataRange" === n.type && n.from === this.uid || this._buildView() + }, + _buildView: function() { + this.group.removeAll(); + var t = this.visualMapModel, + e = this.group; + this._orient = t.get("orient"), this._useHandle = t.get("calculable"), this._resetInterval(), this._renderBar(e); + var i = t.get("text"); + this._renderEndsText(e, i, 0), this._renderEndsText(e, i, 1), this._updateView(!0), this.renderBackground(e), this._updateView(), this._enableHoverLinkToSeries(), this._enableHoverLinkFromSeries(), this.positionGroup(e) + }, + _renderEndsText: function(t, e, i) { + if (e) { + var n = e[1 - i]; + n = null != n ? n + "" : ""; + var a = this.visualMapModel, + o = a.get("textGap"), + r = a.itemSize, + s = this._shapes.barGroup, + l = this._applyTransform([r[0] / 2, 0 === i ? -o : r[1] + o], s), + u = this._applyTransform(0 === i ? "bottom" : "top", s), + h = this._orient, + c = this.visualMapModel.textStyleModel; + this.group.add(new Dr({ + style: { + x: l[0], + y: l[1], + textVerticalAlign: "horizontal" === h ? "middle" : u, + textAlign: "horizontal" === h ? u : "center", + text: n, + textFont: c.getFont(), + textFill: c.getTextColor() + } + })) + } + }, + _renderBar: function(t) { + var e = this.visualMapModel, + i = this._shapes, + n = e.itemSize, + a = this._orient, + o = this._useHandle, + r = KC(e, this.api, n), + s = i.barGroup = this._createBarGroup(r); + s.add(i.outOfRange = nL()), s.add(i.inRange = nL(null, o ? oL(this._orient) : null, T(this._dragHandle, this, "all", !1), T(this._dragHandle, this, "all", !0))); + var l = e.textStyleModel.getTextRect("国"), + u = eL(l.width, l.height); + o && (i.handleThumbs = [], i.handleLabels = [], i.handleLabelPoints = [], this._createHandle(s, 0, n, u, a, r), this._createHandle(s, 1, n, u, a, r)), this._createIndicator(s, n, u, a), t.add(s) + }, + _createHandle: function(t, e, i, n, a) { + var o = T(this._dragHandle, this, e, !1), + r = T(this._dragHandle, this, e, !0), + s = nL(function(t, e) { + return 0 === t ? [ + [0, 0], + [e, 0], + [e, -e] + ] : [ + [0, 0], + [e, 0], + [e, e] + ] + }(e, n), oL(this._orient), o, r); + s.position[0] = i[0], t.add(s); + var l = this.visualMapModel.textStyleModel, + u = new Dr({ + draggable: !0, + drift: o, + onmousemove: function(t) { + Ft(t.event) + }, + ondragend: r, + style: { + x: 0, + y: 0, + text: "", + textFont: l.getFont(), + textFill: l.getTextColor() + } + }); + this.group.add(u); + var h = ["horizontal" === a ? n / 2 : 1.5 * n, "horizontal" === a ? 0 === e ? -1.5 * n : 1.5 * n : 0 === e ? -n / 2 : n / 2], + c = this._shapes; + c.handleThumbs[e] = s, c.handleLabelPoints[e] = h, c.handleLabels[e] = u + }, + _createIndicator: function(t, e, i, n) { + var a = nL([ + [0, 0] + ], "move"); + a.position[0] = e[0], a.attr({ + invisible: !0, + silent: !0 + }), t.add(a); + var o = this.visualMapModel.textStyleModel, + r = new Dr({ + silent: !0, + invisible: !0, + style: { + x: 0, + y: 0, + text: "", + textFont: o.getFont(), + textFill: o.getTextColor() + } + }); + this.group.add(r); + var s = ["horizontal" === n ? i / 2 : 9, 0], + l = this._shapes; + l.indicator = a, l.indicatorLabel = r, l.indicatorLabelPoint = s + }, + _dragHandle: function(t, e, i, n) { + if (this._useHandle) { + if (this._dragging = !e, !e) { + var a = this._applyTransform([i, n], this._shapes.barGroup, !0); + this._updateInterval(t, a[1]), this._updateView() + } + e === !this.visualMapModel.get("realtime") && this.api.dispatchAction({ + type: "selectDataRange", + from: this.uid, + visualMapId: this.visualMapModel.id, + selected: this._dataInterval.slice() + }), e ? this._hovering || this._clearHoverLinkToSeries() : aL(this.visualMapModel) && this._doHoverLinkToSeries(this._handleEnds[t], !1) + } + }, + _resetInterval: function() { + var t = this.visualMapModel, + e = this._dataInterval = t.getSelected(), + i = t.getExtent(), + n = [0, t.itemSize[1]]; + this._handleEnds = [JC(e[0], i, n, !0), JC(e[1], i, n, !0)] + }, + _updateInterval: function(t, e) { + e = e || 0; + var i = this.visualMapModel, + n = this._handleEnds, + a = [0, i.itemSize[1]]; + xw(e, n, a, t, 0); + var o = i.getExtent(); + this._dataInterval = [JC(n[0], a, o, !0), JC(n[1], a, o, !0)] + }, + _updateView: function(t) { + var e = this.visualMapModel, + i = e.getExtent(), + n = this._shapes, + a = [0, e.itemSize[1]], + o = t ? a : this._handleEnds, + r = this._createBarVisual(this._dataInterval, i, o, "inRange"), + s = this._createBarVisual(i, i, a, "outOfRange"); + n.inRange.setStyle({ + fill: r.barColor, + opacity: r.opacity + }).setShape("points", r.barPoints), n.outOfRange.setStyle({ + fill: s.barColor, + opacity: s.opacity + }).setShape("points", s.barPoints), this._updateHandle(o, r) + }, + _createBarVisual: function(t, e, i, n) { + var a = { + forceState: n, + convertOpacityToAlpha: !0 + }, + o = this._makeColorGradient(t, a), + r = [this.getControllerVisual(t[0], "symbolSize", a), this.getControllerVisual(t[1], "symbolSize", a)], + s = this._createBarPoints(i, r); + return { + barColor: new Jr(0, 0, 0, 1, o), + barPoints: s, + handlesColor: [o[0].color, o[o.length - 1].color] + } + }, + _makeColorGradient: function(t, e) { + var i = [], + n = (t[1] - t[0]) / 100; + i.push({ + color: this.getControllerVisual(t[0], "color", e), + offset: 0 + }); + for (var a = 1; a < 100; a++) { + var o = t[0] + n * a; + if (o > t[1]) break; + i.push({ + color: this.getControllerVisual(o, "color", e), + offset: a / 100 + }) + } + return i.push({ + color: this.getControllerVisual(t[1], "color", e), + offset: 1 + }), i + }, + _createBarPoints: function(t, e) { + var i = this.visualMapModel.itemSize; + return [ + [i[0] - e[0], t[0]], + [i[0], t[0]], + [i[0], t[1]], + [i[0] - e[1], t[1]] + ] + }, + _createBarGroup: function(t) { + var e = this._orient, + i = this.visualMapModel.get("inverse"); + return new Si("horizontal" !== e || i ? "horizontal" === e && i ? { + scale: "bottom" === t ? [-1, 1] : [1, 1], + rotation: -Math.PI / 2 + } : "vertical" !== e || i ? { + scale: "left" === t ? [1, 1] : [-1, 1] + } : { + scale: "left" === t ? [1, -1] : [-1, -1] + } : { + scale: "bottom" === t ? [1, 1] : [-1, 1], + rotation: Math.PI / 2 + }) + }, + _updateHandle: function(n, a) { + if (this._useHandle) { + var o = this._shapes, + r = this.visualMapModel, + s = o.handleThumbs, + l = o.handleLabels; + QC([0, 1], function(t) { + var e = s[t]; + e.setStyle("fill", a.handlesColor[t]), e.position[1] = n[t]; + var i = $s(o.handleLabelPoints[t], Ks(e, this.group)); + l[t].setStyle({ + x: i[0], + y: i[1], + text: r.formatValueText(this._dataInterval[t]), + textVerticalAlign: "middle", + textAlign: this._applyTransform("horizontal" === this._orient ? 0 === t ? "bottom" : "top" : "left", o.barGroup) + }) + }, this) + } + }, + _showIndicator: function(t, e, i, n) { + var a = this.visualMapModel, + o = a.getExtent(), + r = a.itemSize, + s = [0, r[1]], + l = JC(t, o, s, !0), + u = this._shapes, + h = u.indicator; + if (h) { + h.position[1] = l, h.attr("invisible", !1), h.setShape("points", function(t, e, i, n) { + return t ? [ + [0, -tL(e, eL(i, 0))], + [6, 0], + [0, tL(e, eL(n - i, 0))] + ] : [ + [0, 0], + [5, -5], + [5, 5] + ] + }(!!i, n, l, r[1])); + var c = this.getControllerVisual(t, "color", { + convertOpacityToAlpha: !0 + }); + h.setStyle("fill", c); + var d = $s(u.indicatorLabelPoint, Ks(h, this.group)), + f = u.indicatorLabel; + f.attr("invisible", !1); + var p = this._applyTransform("left", u.barGroup), + g = this._orient; + f.setStyle({ + text: (i || "") + a.formatValueText(e), + textVerticalAlign: "horizontal" === g ? p : "middle", + textAlign: "horizontal" === g ? "center" : p, + x: d[0], + y: d[1] + }) + } + }, + _enableHoverLinkToSeries: function() { + var n = this; + this._shapes.barGroup.on("mousemove", function(t) { + if (n._hovering = !0, !n._dragging) { + var e = n.visualMapModel.itemSize, + i = n._applyTransform([t.offsetX, t.offsetY], n._shapes.barGroup, !0, !0); + i[1] = tL(eL(0, i[1]), e[1]), n._doHoverLinkToSeries(i[1], 0 <= i[0] && i[0] <= e[0]) + } + }).on("mouseout", function() { + n._hovering = !1, n._dragging || n._clearHoverLinkToSeries() + }) + }, + _enableHoverLinkFromSeries: function() { + var t = this.api.getZr(); + this.visualMapModel.option.hoverLink ? (t.on("mouseover", this._hoverLinkFromSeriesMouseOver, this), t.on("mouseout", this._hideIndicator, this)) : this._clearHoverLinkFromSeries() + }, + _doHoverLinkToSeries: function(t, e) { + var i = this.visualMapModel, + n = i.itemSize; + if (i.option.hoverLink) { + var a = [0, n[1]], + o = i.getExtent(); + t = tL(eL(a[0], t), a[1]); + var r = function(t, e, i) { + var n = 6, + a = t.get("hoverLinkDataSize"); + a && (n = JC(a, e, i, !0) / 2); + return n + }(i, o, a), + s = [t - r, t + r], + l = JC(t, a, o, !0), + u = [JC(s[0], a, o, !0), JC(s[1], a, o, !0)]; + s[0] < a[0] && (u[0] = -1 / 0), a[1] < s[1] && (u[1] = 1 / 0), e && (u[0] === -1 / 0 ? this._showIndicator(l, u[1], "< ", r) : u[1] === 1 / 0 ? this._showIndicator(l, u[0], "> ", r) : this._showIndicator(l, l, "≈ ", r)); + var h = this._hoverLinkDataIndices, + c = []; + (e || aL(i)) && (c = this._hoverLinkDataIndices = i.findTargetDataIndices(u)); + var d = function(t, e) { + var i = {}, + n = {}; + return a(t || [], i), a(e || [], n, i), [o(i), o(n)]; + + function a(t, e, i) { + for (var n = 0, a = t.length; n < a; n++) + for (var o = t[n].seriesId, r = wa(t[n].dataIndex), s = i && i[o], l = 0, u = r.length; l < u; l++) { + var h = r[l]; + s && s[h] ? s[h] = null : (e[o] || (e[o] = {}))[h] = 1 + } + } + + function o(t, e) { + var i = []; + for (var n in t) + if (t.hasOwnProperty(n) && null != t[n]) + if (e) i.push(+n); + else { + var a = o(t[n], !0); + a.length && i.push({ + seriesId: n, + dataIndex: a + }) + } return i + } + }(h, c); + this._dispatchHighDown("downplay", $C(d[0], i)), this._dispatchHighDown("highlight", $C(d[1], i)) + } + }, + _hoverLinkFromSeriesMouseOver: function(t) { + var e = t.target, + i = this.visualMapModel; + if (e && null != e.dataIndex) { + var n = this.ecModel.getSeriesByIndex(e.seriesIndex); + if (i.isTargetSeries(n)) { + var a = n.getData(e.dataType), + o = a.get(i.getDataDimension(a), e.dataIndex, !0); + isNaN(o) || this._showIndicator(o, o) + } + } + }, + _hideIndicator: function() { + var t = this._shapes; + t.indicator && t.indicator.attr("invisible", !0), t.indicatorLabel && t.indicatorLabel.attr("invisible", !0) + }, + _clearHoverLinkToSeries: function() { + this._hideIndicator(); + var t = this._hoverLinkDataIndices; + this._dispatchHighDown("downplay", $C(t, this.visualMapModel)), t.length = 0 + }, + _clearHoverLinkFromSeries: function() { + this._hideIndicator(); + var t = this.api.getZr(); + t.off("mouseover", this._hoverLinkFromSeriesMouseOver), t.off("mouseout", this._hideIndicator) + }, + _applyTransform: function(t, e, i, n) { + var a = Ks(e, n ? null : this.group); + return ol[k(t) ? "applyTransform" : "transformDirection"](t, a, i) + }, + _dispatchHighDown: function(t, e) { + e && e.length && this.api.dispatchAction({ + type: t, + batch: e + }) + }, + dispose: function() { + this._clearHoverLinkFromSeries(), this._clearHoverLinkToSeries() + }, + remove: function() { + this._clearHoverLinkFromSeries(), this._clearHoverLinkToSeries() + } + }); + + function nL(t, e, i, n) { + return new zr({ + shape: { + points: t + }, + draggable: !!i, + cursor: e, + drift: i, + onmousemove: function(t) { + Ft(t.event) + }, + ondragend: n + }) + } + + function aL(t) { + var e = t.get("hoverLinkOnHandle"); + return !!(null == e ? t.get("realtime") : e) + } + + function oL(t) { + return "vertical" === t ? "ns-resize" : "ew-resize" + } + tf({ + type: "selectDataRange", + event: "dataRangeSelected", + update: "update" + }, function(e, t) { + t.eachComponent({ + mainType: "visualMap", + query: e + }, function(t) { + t.setSelected(e.selected) + }) + }), Jd(kC); + var rL = UC.extend({ + type: "visualMap.piecewise", + defaultOption: { + selected: null, + minOpen: !1, + maxOpen: !1, + align: "auto", + itemWidth: 20, + itemHeight: 14, + itemSymbol: "roundRect", + pieceList: null, + categories: null, + splitNumber: 5, + selectedMode: "multiple", + itemGap: 10, + hoverLink: !0, + showLabel: null + }, + optionUpdated: function(t, e) { + rL.superApply(this, "optionUpdated", arguments), this._pieceList = [], this.resetExtent(); + var i = this._mode = this._determineMode(); + sL[this._mode].call(this), this._resetSelected(t, e); + var n = this.option.categories; + this.resetVisual(function(t, e) { + "categories" === i ? (t.mappingMethod = "category", t.categories = D(n)) : (t.dataExtent = this.getExtent(), t.mappingMethod = "piecewise", t.pieceList = N(this._pieceList, function(t) { + t = D(t); + return "inRange" !== e && (t.visual = null), t + })) + }) + }, + completeVisualOption: function() { + var n = this.option, + i = {}, + t = zx.listVisualTypes(), + a = this.isCategory(); + + function o(t, e, i) { + return t && t[e] && (E(t[e]) ? t[e].hasOwnProperty(i) : t[e] === i) + } + O(n.pieces, function(e) { + O(t, function(t) { + e.hasOwnProperty(t) && (i[t] = 1) + }) + }), O(i, function(t, e) { + var i = 0; + O(this.stateList, function(t) { + i |= o(n, t, e) || o(n.target, t, e) + }, this), i || O(this.stateList, function(t) { + (n[t] || (n[t] = {}))[e] = EC(e, "inRange" === t ? "active" : "inactive", a) + }) + }, this), UC.prototype.completeVisualOption.apply(this, arguments) + }, + _resetSelected: function(t, e) { + var i = this.option, + n = this._pieceList, + a = (e ? i : t).selected || {}; + if (i.selected = a, O(n, function(t, e) { + var i = this.getSelectedMapKey(t); + a.hasOwnProperty(i) || (a[i] = !0) + }, this), "single" === i.selectedMode) { + var o = !1; + O(n, function(t, e) { + var i = this.getSelectedMapKey(t); + a[i] && (o ? a[i] = !1 : o = !0) + }, this) + } + }, + getSelectedMapKey: function(t) { + return "categories" === this._mode ? t.value + "" : t.index + "" + }, + getPieceList: function() { + return this._pieceList + }, + _determineMode: function() { + var t = this.option; + return t.pieces && 0 < t.pieces.length ? "pieces" : this.option.categories ? "categories" : "splitNumber" + }, + setSelected: function(t) { + this.option.selected = D(t) + }, + getValueState: function(t) { + var e = zx.findPieceIndex(t, this._pieceList); + return null != e && this.option.selected[this.getSelectedMapKey(this._pieceList[e])] ? "inRange" : "outOfRange" + }, + findTargetDataIndices: function(n) { + var a = []; + return this.eachTargetSeries(function(t) { + var i = [], + e = t.getData(); + e.each(this.getDataDimension(e), function(t, e) { + zx.findPieceIndex(t, this._pieceList) === n && i.push(e) + }, this), a.push({ + seriesId: t.id, + dataIndex: i + }) + }, this), a + }, + getRepresentValue: function(t) { + var e; + if (this.isCategory()) e = t.value; + else if (null != t.value) e = t.value; + else { + var i = t.interval || []; + e = i[0] === -1 / 0 && i[1] === 1 / 0 ? 0 : (i[0] + i[1]) / 2 + } + return e + }, + getVisualMeta: function(a) { + if (!this.isCategory()) { + var o = [], + r = [], + s = this, + t = this._pieceList.slice(); + if (t.length) { + var e = t[0].interval[0]; + e !== -1 / 0 && t.unshift({ + interval: [-1 / 0, e] + }), (e = t[t.length - 1].interval[1]) !== 1 / 0 && t.push({ + interval: [e, 1 / 0] + }) + } else t.push({ + interval: [-1 / 0, 1 / 0] + }); + var i = -1 / 0; + return O(t, function(t) { + var e = t.interval; + e && (e[0] > i && n([i, e[0]], "outOfRange"), n(e.slice()), i = e[1]) + }, this), { + stops: o, + outerColors: r + } + } + + function n(t, e) { + var i = s.getRepresentValue({ + interval: t + }); + e = e || s.getValueState(i); + var n = a(i, e); + t[0] === -1 / 0 ? r[0] = n : t[1] === 1 / 0 ? r[1] = n : o.push({ + value: t[0], + color: n + }, { + value: t[1], + color: n + }) + } + } + }), + sL = { + splitNumber: function() { + var t = this.option, + e = this._pieceList, + i = Math.min(t.precision, 20), + n = this.getExtent(), + a = t.splitNumber; + a = Math.max(parseInt(a, 10), 1), t.splitNumber = a; + for (var o = (n[1] - n[0]) / a; + o.toFixed(i) !== o && i < 5;) i++; + t.precision = i, o = +o.toFixed(i); + var r = 0; + t.minOpen && e.push({ + index: r++, + interval: [-1 / 0, n[0]], + close: [0, 0] + }); + for (var s = n[0], l = r + a; r < l; s += o) { + var u = r === a - 1 ? n[1] : s + o; + e.push({ + index: r++, + interval: [s, u], + close: [1, 1] + }) + } + t.maxOpen && e.push({ + index: r++, + interval: [n[1], 1 / 0], + close: [0, 0] + }), Ol(e), O(e, function(t) { + t.text = this.formatValueText(t.interval) + }, this) + }, + categories: function() { + var t = this.option; + O(t.categories, function(t) { + this._pieceList.push({ + text: this.formatValueText(t, !0), + value: t + }) + }, this), lL(t, this._pieceList) + }, + pieces: function() { + var t = this.option, + d = this._pieceList; + O(t.pieces, function(t, e) { + E(t) || (t = { + value: t + }); + var i = { + text: "", + index: e + }; + if (null != t.label && (i.text = t.label), t.hasOwnProperty("value")) { + var n = i.value = t.value; + i.interval = [n, n], i.close = [1, 1] + } else { + for (var a = i.interval = [], o = i.close = [0, 0], r = [1, 0, 1], s = [-1 / 0, 1 / 0], l = [], u = 0; u < 2; u++) { + for (var h = [ + ["gte", "gt", "min"], + ["lte", "lt", "max"] + ][u], c = 0; c < 3 && null == a[u]; c++) a[u] = t[h[c]], o[u] = r[c], l[u] = 2 === c; + null == a[u] && (a[u] = s[u]) + } + l[0] && a[1] === 1 / 0 && (o[0] = 0), l[1] && a[0] === -1 / 0 && (o[1] = 0), a[0] === a[1] && o[0] && o[1] && (i.value = a[0]) + } + i.visual = zx.retrieveVisuals(t), d.push(i) + }, this), lL(t, d), Ol(d), O(d, function(t) { + var e = t.close, + i = [ + ["<", "≤"][e[1]], + [">", "≥"][e[0]] + ]; + t.text = t.text || this.formatValueText(null != t.value ? t.value : t.interval, !1, i) + }, this) + } + }; + + function lL(t, e) { + var i = t.inverse; + ("vertical" === t.orient ? !i : i) && e.reverse() + } + qC.extend({ + type: "visualMap.piecewise", + doRender: function() { + var o = this.group; + o.removeAll(); + var r = this.visualMapModel, + s = r.get("textGap"), + t = r.textStyleModel, + l = t.getFont(), + u = t.getTextColor(), + h = this._getItemAlign(), + c = r.itemSize, + e = this._getViewData(), + i = e.endsText, + d = W(r.get("showLabel", !0), !i); + i && this._renderEndsText(o, i[0], c, d, h), O(e.viewPieceList, function(t) { + var e = t.piece, + i = new Si; + i.onclick = T(this._onItemClick, this, e), this._enableHoverLink(i, t.indexInModelPieceList); + var n = r.getRepresentValue(e); + if (this._createItemSymbol(i, n, [0, 0, c[0], c[1]]), d) { + var a = this.visualMapModel.getValueState(n); + i.add(new Dr({ + style: { + x: "right" === h ? -s : c[0] + s, + y: c[1] / 2, + text: e.text, + textVerticalAlign: "middle", + textAlign: h, + textFont: l, + textFill: u, + opacity: "outOfRange" === a ? .5 : 1 + } + })) + } + o.add(i) + }, this), i && this._renderEndsText(o, i[1], c, d, h), nu(r.get("orient"), o, r.get("itemGap")), this.renderBackground(o), this.positionGroup(o) + }, + _enableHoverLink: function(t, i) { + function e(t) { + var e = this.visualMapModel; + e.option.hoverLink && this.api.dispatchAction({ + type: t, + batch: $C(e.findTargetDataIndices(i), e) + }) + } + t.on("mouseover", T(e, this, "highlight")).on("mouseout", T(e, this, "downplay")) + }, + _getItemAlign: function() { + var t = this.visualMapModel, + e = t.option; + if ("vertical" === e.orient) return KC(t, this.api, t.itemSize); + var i = e.align; + return i && "auto" !== i || (i = "left"), i + }, + _renderEndsText: function(t, e, i, n, a) { + if (e) { + var o = new Si, + r = this.visualMapModel.textStyleModel; + o.add(new Dr({ + style: { + x: n ? "right" === a ? i[0] : 0 : i[0] / 2, + y: i[1] / 2, + textVerticalAlign: "middle", + textAlign: n ? a : "center", + text: e, + textFont: r.getFont(), + textFill: r.getTextColor() + } + })), t.add(o) + } + }, + _getViewData: function() { + var t = this.visualMapModel, + e = N(t.getPieceList(), function(t, e) { + return { + piece: t, + indexInModelPieceList: e + } + }), + i = t.get("text"), + n = t.get("orient"), + a = t.get("inverse"); + return ("horizontal" === n ? a : !a) ? e.reverse() : i = i && i.slice().reverse(), { + viewPieceList: e, + endsText: i + } + }, + _createItemSymbol: function(t, e, i) { + t.add(Jp(this.getControllerVisual(e, "symbol"), i[0], i[1], i[2], i[3], this.getControllerVisual(e, "color"))) + }, + _onItemClick: function(t) { + var e = this.visualMapModel, + i = e.option, + n = D(i.selected), + a = e.getSelectedMapKey(t); + "single" === i.selectedMode ? (n[a] = !0, O(n, function(t, e) { + n[e] = e === a + })) : n[a] = !n[a], this.api.dispatchAction({ + type: "selectDataRange", + from: this.uid, + visualMapId: this.visualMapModel.id, + selected: n + }) + } + }); + Jd(kC); + var uL, hL = "urn:schemas-microsoft-com:vml", + cL = "undefined" == typeof window ? null : window, + dL = !1, + fL = cL && cL.document; + + function pL(t) { + return uL(t) + } + if (fL && !v.canvasSupported) try { + fL.namespaces.zrvml || fL.namespaces.add("zrvml", hL), uL = function(t) { + return fL.createElement("') + } + } catch (t) { + uL = function(t) { + return fL.createElement("<" + t + ' xmlns="' + hL + '" class="zrvml">') + } + } + var gL, mL = Ho.CMD, + vL = Math.round, + yL = Math.sqrt, + xL = Math.abs, + _L = Math.cos, + wL = Math.sin, + bL = Math.max; + if (!v.canvasSupported) { + var SL = ",", + ML = "progid:DXImageTransform.Microsoft", + IL = 21600, + AL = IL / 2, + TL = function(t) { + t.style.cssText = "position:absolute;left:0;top:0;width:1px;height:1px;", t.coordsize = IL + "," + IL, t.coordorigin = "0,0" + }, + DL = function(t, e, i) { + return "rgb(" + [t, e, i].join(",") + ")" + }, + CL = function(t, e) { + e && t && e.parentNode !== t && t.appendChild(e) + }, + LL = function(t, e) { + e && t && e.parentNode === t && t.removeChild(e) + }, + kL = function(t, e, i) { + return 1e5 * (parseFloat(t) || 0) + 1e3 * (parseFloat(e) || 0) + i + }, + PL = function(t, e) { + return "string" == typeof t ? 0 <= t.lastIndexOf("%") ? parseFloat(t) / 100 * e : parseFloat(t) : t + }, + NL = function(t, e, i) { + var n = Re(e); + i = +i, isNaN(i) && (i = 1), n && (t.color = DL(n[0], n[1], n[2]), t.opacity = i * n[3]) + }, + OL = function(t, e, i, n) { + var a = "fill" === e, + o = t.getElementsByTagName(e)[0]; + null != i[e] && "none" !== i[e] && (a || !a && i.lineWidth) ? (t[a ? "filled" : "stroked"] = "true", i[e] instanceof jr && LL(t, o), o = o || pL(e), a ? function(t, e, i) { + var n, a, o = e.fill; + if (null != o) + if (o instanceof jr) { + var r, s = 0, + l = [0, 0], + u = 0, + h = 1, + c = i.getBoundingRect(), + d = c.width, + f = c.height; + if ("linear" === o.type) { + r = "gradient"; + var p = i.transform, + g = [o.x * d, o.y * f], + m = [o.x2 * d, o.y2 * f]; + p && (bt(g, g, p), bt(m, m, p)); + var v = m[0] - g[0], + y = m[1] - g[1]; + (s = 180 * Math.atan2(v, y) / Math.PI) < 0 && (s += 360), s < 1e-6 && (s = 0) + } else { + r = "gradientradial"; + g = [o.x * d, o.y * f], p = i.transform; + var x = i.scale, + _ = d, + w = f; + l = [(g[0] - c.x) / _, (g[1] - c.y) / w], p && bt(g, g, p), _ /= x[0] * IL, w /= x[1] * IL; + var b = bL(_, w); + u = 0 / b, h = 2 * o.r / b - u + } + var S = o.colorStops.slice(); + S.sort(function(t, e) { + return t.offset - e.offset + }); + for (var M = S.length, I = [], A = [], T = 0; T < M; T++) { + var D = S[T], + C = (n = D.color, void 0, a = Re(n), [DL(a[0], a[1], a[2]), a[3]]); + A.push(D.offset * h + u + " " + C[0]), 0 !== T && T !== M - 1 || I.push(C) + } + if (2 <= M) { + var L = I[0][0], + k = I[1][0], + P = I[0][1] * e.opacity, + N = I[1][1] * e.opacity; + t.type = r, t.method = "none", t.focus = "100%", t.angle = s, t.color = L, t.color2 = k, t.colors = A.join(","), t.opacity = N, t.opacity2 = P + } + "radial" === r && (t.focusposition = l.join(",")) + } else NL(t, o, e.opacity) + }(o, i, n) : function(t, e) { + e.lineDash && (t.dashstyle = e.lineDash.join(" ")), null == e.stroke || e.stroke instanceof jr || NL(t, e.stroke, e.opacity) + }(o, i), CL(t, o)) : (t[a ? "filled" : "stroked"] = "false", LL(t, o)) + }, + RL = [ + [], + [], + [] + ]; + hr.prototype.brushVML = function(t) { + var e = this.style, + i = this._vmlEl; + i || (i = pL("shape"), TL(i), this._vmlEl = i), OL(i, "fill", e, this), OL(i, "stroke", e, this); + var n = this.transform, + a = null != n, + o = i.getElementsByTagName("stroke")[0]; + if (o) { + var r = e.lineWidth; + if (a && !e.strokeNoScale) { + var s = n[0] * n[3] - n[1] * n[2]; + r *= yL(xL(s)) + } + o.weight = r + "px" + } + var l = this.path || (this.path = new Ho); + this.__dirtyPath && (l.beginPath(), l.subPixelOptimize = !1, this.buildPath(l, this.shape), l.toStatic(), this.__dirtyPath = !1), i.path = function(t, e) { + var i, n, a, o, r, s, l = mL.M, + u = mL.C, + h = mL.L, + c = mL.A, + d = mL.Q, + f = [], + p = t.data, + g = t.len(); + for (o = 0; o < g;) { + switch (n = "", i = 0, a = p[o++]) { + case l: + n = " m ", i = 1, r = p[o++], s = p[o++], RL[0][0] = r, RL[0][1] = s; + break; + case h: + n = " l ", i = 1, r = p[o++], s = p[o++], RL[0][0] = r, RL[0][1] = s; + break; + case d: + case u: + n = " c ", i = 3; + var m, v, y = p[o++], + x = p[o++], + _ = p[o++], + w = p[o++]; + a === d ? (_ = ((m = _) + 2 * y) / 3, w = ((v = w) + 2 * x) / 3, y = (r + 2 * y) / 3, x = (s + 2 * x) / 3) : (m = p[o++], v = p[o++]), RL[0][0] = y, RL[0][1] = x, RL[1][0] = _, RL[1][1] = w, r = RL[2][0] = m, s = RL[2][1] = v; + break; + case c: + var b = 0, + S = 0, + M = 1, + I = 1, + A = 0; + e && (b = e[4], S = e[5], M = yL(e[0] * e[0] + e[1] * e[1]), I = yL(e[2] * e[2] + e[3] * e[3]), A = Math.atan2(-e[1] / I, e[0] / M)); + var T = p[o++], + D = p[o++], + C = p[o++], + L = p[o++], + k = p[o++] + A, + P = p[o++] + k + A; + o++; + var N = p[o++], + O = T + _L(k) * C, + R = D + wL(k) * L, + z = (y = T + _L(P) * C, x = D + wL(P) * L, N ? " wa " : " at "); + Math.abs(O - y) < 1e-4 && (.01 < Math.abs(P - k) ? N && (O += .0125) : Math.abs(R - D) < 1e-4 ? N && O < T || !N && T < O ? x -= .0125 : x += .0125 : N && R < D || !N && D < R ? y += .0125 : y -= .0125), f.push(z, vL(((T - C) * M + b) * IL - AL), SL, vL(((D - L) * I + S) * IL - AL), SL, vL(((T + C) * M + b) * IL - AL), SL, vL(((D + L) * I + S) * IL - AL), SL, vL((O * M + b) * IL - AL), SL, vL((R * I + S) * IL - AL), SL, vL((y * M + b) * IL - AL), SL, vL((x * I + S) * IL - AL)), r = y, s = x; + break; + case mL.R: + var E = RL[0], + B = RL[1]; + E[0] = p[o++], E[1] = p[o++], B[0] = E[0] + p[o++], B[1] = E[1] + p[o++], e && (bt(E, E, e), bt(B, B, e)), E[0] = vL(E[0] * IL - AL), B[0] = vL(B[0] * IL - AL), E[1] = vL(E[1] * IL - AL), B[1] = vL(B[1] * IL - AL), f.push(" m ", E[0], SL, E[1], " l ", B[0], SL, E[1], " l ", B[0], SL, B[1], " l ", E[0], SL, B[1]); + break; + case mL.Z: + f.push(" x ") + } + if (0 < i) { + f.push(n); + for (var V = 0; V < i; V++) { + var G = RL[V]; + e && bt(G, G, e), f.push(vL(G[0] * IL - AL), SL, vL(G[1] * IL - AL), V < i - 1 ? SL : "") + } + } + } + return f.join("") + }(l, this.transform), i.style.zIndex = kL(this.zlevel, this.z, this.z2), CL(t, i), null != e.text ? this.drawRectText(t, this.getBoundingRect()) : this.removeRectText(t) + }, hr.prototype.onRemove = function(t) { + LL(t, this._vmlEl), this.removeRectText(t) + }, hr.prototype.onAdd = function(t) { + CL(t, this._vmlEl), this.appendRectText(t) + }; + Yn.prototype.brushVML = function(t) { + var e, i, n = this.style, + a = n.image; + if (function(t) { + return "object" == typeof t && t.tagName && "IMG" === t.tagName.toUpperCase() + }(a)) { + var o = a.src; + if (o === this._imageSrc) e = this._imageWidth, i = this._imageHeight; + else { + var r = a.runtimeStyle, + s = r.width, + l = r.height; + r.width = "auto", r.height = "auto", e = a.width, i = a.height, r.width = s, r.height = l, this._imageSrc = o, this._imageWidth = e, this._imageHeight = i + } + a = o + } else a === this._imageSrc && (e = this._imageWidth, i = this._imageHeight); + if (a) { + var u = n.x || 0, + h = n.y || 0, + c = n.width, + d = n.height, + f = n.sWidth, + p = n.sHeight, + g = n.sx || 0, + m = n.sy || 0, + v = f && p, + y = this._vmlEl; + y || (y = fL.createElement("div"), TL(y), this._vmlEl = y); + var x, _ = y.style, + w = !1, + b = 1, + S = 1; + if (this.transform && (x = this.transform, b = yL(x[0] * x[0] + x[1] * x[1]), S = yL(x[2] * x[2] + x[3] * x[3]), w = x[1] || x[2]), w) { + var M = [u, h], + I = [u + c, h], + A = [u, h + d], + T = [u + c, h + d]; + bt(M, M, x), bt(I, I, x), bt(A, A, x), bt(T, T, x); + var D = bL(M[0], I[0], A[0], T[0]), + C = bL(M[1], I[1], A[1], T[1]), + L = []; + L.push("M11=", x[0] / b, SL, "M12=", x[2] / S, SL, "M21=", x[1] / b, SL, "M22=", x[3] / S, SL, "Dx=", vL(u * b + x[4]), SL, "Dy=", vL(h * S + x[5])), _.padding = "0 " + vL(D) + "px " + vL(C) + "px 0", _.filter = ML + ".Matrix(" + L.join("") + ", SizingMethod=clip)" + } else x && (u = u * b + x[4], h = h * S + x[5]), _.filter = "", _.left = vL(u) + "px", _.top = vL(h) + "px"; + var k = this._imageEl, + P = this._cropEl; + k || (k = fL.createElement("div"), this._imageEl = k); + var N = k.style; + if (v) { + if (e && i) N.width = vL(b * e * c / f) + "px", N.height = vL(S * i * d / p) + "px"; + else { + var O = new Image, + R = this; + O.onload = function() { + O.onload = null, e = O.width, i = O.height, N.width = vL(b * e * c / f) + "px", N.height = vL(S * i * d / p) + "px", R._imageWidth = e, R._imageHeight = i, R._imageSrc = a + }, O.src = a + } + P || ((P = fL.createElement("div")).style.overflow = "hidden", this._cropEl = P); + var z = P.style; + z.width = vL((c + g * c / f) * b), z.height = vL((d + m * d / p) * S), z.filter = ML + ".Matrix(Dx=" + -g * c / f * b + ",Dy=" + -m * d / p * S + ")", P.parentNode || y.appendChild(P), k.parentNode !== P && P.appendChild(k) + } else N.width = vL(b * c) + "px", N.height = vL(S * d) + "px", y.appendChild(k), P && P.parentNode && (y.removeChild(P), this._cropEl = null); + var E = "", + B = n.opacity; + B < 1 && (E += ".Alpha(opacity=" + vL(100 * B) + ") "), E += ML + ".AlphaImageLoader(src=" + a + ", SizingMethod=scale)", N.filter = E, y.style.zIndex = kL(this.zlevel, this.z, this.z2), CL(t, y), null != n.text && this.drawRectText(t, this.getBoundingRect()) + } + }, Yn.prototype.onRemove = function(t) { + LL(t, this._vmlEl), this._vmlEl = null, this._cropEl = null, this._imageEl = null, this.removeRectText(t) + }, Yn.prototype.onAdd = function(t) { + CL(t, this._vmlEl), this.appendRectText(t) + }; + var zL, EL = "normal", + BL = {}, + VL = 0, + GL = document.createElement("div"); + gL = function(t, e) { + var i = fL; + zL || ((zL = i.createElement("div")).style.cssText = "position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;", fL.body.appendChild(zL)); + try { + zL.style.font = e + } catch (t) {} + return zL.innerHTML = "", zL.appendChild(i.createTextNode(t)), { + width: zL.offsetWidth + } + }, sn["measureText"] = gL; + for (var FL = new bi, WL = function(t, e, i, n) { + var a = this.style; + this.__dirty && Cn(a); + var o = a.text; + if (null != o && (o += ""), o) { + if (a.rich) { + var r = xn(o, a); + o = []; + for (var s = 0; s < r.lines.length; s++) { + for (var l = r.lines[s].tokens, u = [], h = 0; h < l.length; h++) u.push(l[h].text); + o.push(u.join("")) + } + o = o.join("\n") + } + var c, d, f = a.textAlign, + p = a.textVerticalAlign, + g = function(t) { + var e = BL[t]; + if (!e) { + 100 < VL && (VL = 0, BL = {}); + var i, n = GL.style; + try { + n.font = t, i = n.fontFamily.split(",")[0] + } catch (t) {} + e = { + style: n.fontStyle || EL, + variant: n.fontVariant || EL, + weight: n.fontWeight || EL, + size: 0 | parseFloat(n.fontSize || 12), + family: i || "Microsoft YaHei" + }, BL[t] = e, VL++ + } + return e + }(a.font), + m = g.style + " " + g.variant + " " + g.weight + " " + g.size + 'px "' + g.family + '"'; + i = i || un(o, m, f, p, a.textPadding, a.textLineHeight); + var v = this.transform; + if (v && !n && (FL.copy(e), FL.applyTransform(v), e = FL), n) c = e.x, d = e.y; + else { + var y = a.textPosition; + if (y instanceof Array) c = e.x + PL(y[0], e.width), d = e.y + PL(y[1], e.height), f = f || "left"; + else { + var x = this.calculateTextPosition ? this.calculateTextPosition({}, a, e) : dn({}, a, e); + c = x.x, d = x.y, f = f || x.textAlign, p = p || x.textVerticalAlign + } + } + c = hn(c, i.width, f), d = cn(d, i.height, p), d += i.height / 2; + var _, w, b, S = pL, + M = this._textVmlEl; + M ? w = (_ = (b = M.firstChild).nextSibling).nextSibling : (M = S("line"), _ = S("path"), w = S("textpath"), b = S("skew"), w.style["v-text-align"] = "left", TL(M), _.textpathok = !0, w.on = !0, M.from = "0 0", M.to = "1000 0.05", CL(M, b), CL(M, _), CL(M, w), this._textVmlEl = M); + var I = [c, d], + A = M.style; + v && n ? (bt(I, I, v), b.on = !0, b.matrix = v[0].toFixed(3) + SL + v[2].toFixed(3) + SL + v[1].toFixed(3) + SL + v[3].toFixed(3) + ",0,0", b.offset = (vL(I[0]) || 0) + "," + (vL(I[1]) || 0), b.origin = "0 0", A.left = "0px", A.top = "0px") : (b.on = !1, A.left = vL(c) + "px", A.top = vL(d) + "px"), w.string = function(t) { + return String(t).replace(/&/g, "&").replace(/"/g, """) + }(o); + try { + w.style.font = m + } catch (t) {} + OL(M, "fill", { + fill: a.textFill, + opacity: a.opacity + }, this), OL(M, "stroke", { + stroke: a.textStroke, + opacity: a.opacity, + lineDash: a.lineDash || null + }, this), M.style.zIndex = kL(this.zlevel, this.z, this.z2), CL(t, M) + } + }, HL = function(t) { + LL(t, this._textVmlEl), this._textVmlEl = null + }, ZL = function(t) { + CL(t, this._textVmlEl) + }, UL = [Zn, Xn, Yn, hr, Dr], XL = 0; XL < UL.length; XL++) { + var YL = UL[XL].prototype; + YL.drawRectText = WL, YL.removeRectText = HL, YL.appendRectText = ZL + } + Dr.prototype.brushVML = function(t) { + var e = this.style; + null != e.text ? this.drawRectText(t, { + x: e.x || 0, + y: e.y || 0, + width: 0, + height: 0 + }, this.getBoundingRect(), !0) : this.removeRectText(t) + }, Dr.prototype.onRemove = function(t) { + this.removeRectText(t) + }, Dr.prototype.onAdd = function(t) { + this.appendRectText(t) + } + } + + function jL(t) { + return parseInt(t, 10) + } + + function qL(t, e) { + ! function() { + if (!dL && fL) { + dL = !0; + var t = fL.styleSheets; + t.length < 31 ? fL.createStyleSheet().addRule(".zrvml", "behavior:url(#default#VML)") : t[0].addRule(".zrvml", "behavior:url(#default#VML)") + } + }(), this.root = t, this.storage = e; + var i = document.createElement("div"), + n = document.createElement("div"); + i.style.cssText = "display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;", n.style.cssText = "position:absolute;left:0;top:0;", t.appendChild(i), this._vmlRoot = n, this._vmlViewport = i, this.resize(); + var a = e.delFromStorage, + o = e.addToStorage; + e.delFromStorage = function(t) { + a.call(e, t), t && t.onRemove && t.onRemove(n) + }, e.addToStorage = function(t) { + t.onAdd && t.onAdd(n), o.call(e, t) + }, this._firstPaint = !0 + } + qL.prototype = { + constructor: qL, + getType: function() { + return "vml" + }, + getViewportRoot: function() { + return this._vmlViewport + }, + getViewportRootOffset: function() { + var t = this.getViewportRoot(); + if (t) return { + offsetLeft: t.offsetLeft || 0, + offsetTop: t.offsetTop || 0 + } + }, + refresh: function() { + var t = this.storage.getDisplayList(!0, !0); + this._paintList(t) + }, + _paintList: function(t) { + for (var e = this._vmlRoot, i = 0; i < t.length; i++) { + var n = t[i]; + n.invisible || n.ignore ? (n.__alreadyNotVisible || n.onRemove(e), n.__alreadyNotVisible = !0) : (n.__alreadyNotVisible && n.onAdd(e), n.__alreadyNotVisible = !1, n.__dirty && (n.beforeBrush && n.beforeBrush(), (n.brushVML || n.brush).call(n, e), n.afterBrush && n.afterBrush())), n.__dirty = !1 + } + this._firstPaint && (this._vmlViewport.appendChild(e), this._firstPaint = !1) + }, + resize: function(t, e) { + t = null == t ? this._getWidth() : t, e = null == e ? this._getHeight() : e; + if (this._width !== t || this._height !== e) { + this._width = t, this._height = e; + var i = this._vmlViewport.style; + i.width = t + "px", i.height = e + "px" + } + }, + dispose: function() { + this.root.innerHTML = "", this._vmlRoot = this._vmlViewport = this.storage = null + }, + getWidth: function() { + return this._width + }, + getHeight: function() { + return this._height + }, + clear: function() { + this._vmlViewport && this.root.removeChild(this._vmlViewport) + }, + _getWidth: function() { + var t = this.root, + e = t.currentStyle; + return (t.clientWidth || jL(e.width)) - jL(e.paddingLeft) - jL(e.paddingRight) | 0 + }, + _getHeight: function() { + var t = this.root, + e = t.currentStyle; + return (t.clientHeight || jL(e.height)) - jL(e.paddingTop) - jL(e.paddingBottom) | 0 + } + }, O(["getLayer", "insertLayer", "eachLayer", "eachBuiltinLayer", "eachOtherLayer", "getLayers", "modLayer", "delLayer", "clearLayer", "toDataURL", "pathToImage"], function(t) { + qL.prototype[t] = function(t) { + return function() { + ci('In IE8.0 VML mode painter not support method "' + t + '"') + } + }(t) + }), pa("vml", qL); + + function KL(t) { + return document.createElementNS("http://www.w3.org/2000/svg", t) + } + var $L = Ho.CMD, + JL = Array.prototype.join, + QL = "none", + tk = Math.round, + ek = Math.sin, + ik = Math.cos, + nk = Math.PI, + ak = 2 * Math.PI, + ok = 180 / nk, + rk = 1e-4; + + function sk(t) { + return tk(1e4 * t) / 1e4 + } + + function lk(t) { + return t < rk && -rk < t + } + + function uk(t, e) { + e && hk(t, "transform", "matrix(" + JL.call(e, ",") + ")") + } + + function hk(t, e, i) { + i && ("linear" === i.type || "radial" === i.type) || t.setAttribute(e, i) + } + + function ck(t, e, i, n) { + if (function(t, e) { + var i = e ? t.textFill : t.fill; + return null != i && i !== QL + }(e, i)) { + var a = i ? e.textFill : e.fill; + hk(t, "fill", a = "transparent" === a ? QL : a), hk(t, "fill-opacity", null != e.fillOpacity ? e.fillOpacity * e.opacity : e.opacity) + } else hk(t, "fill", QL); + if (function(t, e) { + var i = e ? t.textStroke : t.stroke; + return null != i && i !== QL + }(e, i)) { + var o = i ? e.textStroke : e.stroke; + hk(t, "stroke", o = "transparent" === o ? QL : o), hk(t, "stroke-width", (i ? e.textStrokeWidth : e.lineWidth) / (!i && e.strokeNoScale ? n.getLineScale() : 1)), hk(t, "paint-order", i ? "stroke" : "fill"), hk(t, "stroke-opacity", null != e.strokeOpacity ? e.strokeOpacity : e.opacity), e.lineDash ? (hk(t, "stroke-dasharray", e.lineDash.join(",")), hk(t, "stroke-dashoffset", tk(e.lineDashOffset || 0))) : hk(t, "stroke-dasharray", ""), e.lineCap && hk(t, "stroke-linecap", e.lineCap), e.lineJoin && hk(t, "stroke-linejoin", e.lineJoin), e.miterLimit && hk(t, "stroke-miterlimit", e.miterLimit) + } else hk(t, "stroke", QL) + } + var dk = {}; + dk.brush = function(t) { + var e = t.style, + i = t.__svgEl; + i || (i = KL("path"), t.__svgEl = i), t.path || t.createPathProxy(); + var n = t.path; + if (t.__dirtyPath) { + n.beginPath(), n.subPixelOptimize = !1, t.buildPath(n, t.shape), t.__dirtyPath = !1; + var a = function(t) { + for (var e = [], i = t.data, n = t.len(), a = 0; a < n;) { + var o = "", + r = 0; + switch (i[a++]) { + case $L.M: + o = "M", r = 2; + break; + case $L.L: + o = "L", r = 2; + break; + case $L.Q: + o = "Q", r = 4; + break; + case $L.C: + o = "C", r = 6; + break; + case $L.A: + var s = i[a++], + l = i[a++], + u = i[a++], + h = i[a++], + c = i[a++], + d = i[a++], + f = i[a++], + p = i[a++], + g = Math.abs(d), + m = lk(g - ak) && !lk(g), + v = !1; + v = ak <= g || !lk(g) && (-nk < d && d < 0 || nk < d) == !!p; + var y = sk(s + u * ik(c)), + x = sk(l + h * ek(c)); + m && (d = p ? ak - 1e-4 : 1e-4 - ak, v = !0, 9 === a && e.push("M", y, x)); + var _ = sk(s + u * ik(c + d)), + w = sk(l + h * ek(c + d)); + e.push("A", sk(u), sk(h), tk(f * ok), +v, +p, _, w); + break; + case $L.Z: + o = "Z"; + break; + case $L.R: + _ = sk(i[a++]), w = sk(i[a++]); + var b = sk(i[a++]), + S = sk(i[a++]); + e.push("M", _, w, "L", _ + b, w, "L", _ + b, w + S, "L", _, w + S, "L", _, w) + } + o && e.push(o); + for (var M = 0; M < r; M++) e.push(sk(i[a++])) + } + return e.join(" ") + }(n); + a.indexOf("NaN") < 0 && hk(i, "d", a) + } + ck(i, e, !1, t), uk(i, t.transform), null != e.text && vk(t, t.getBoundingRect()) + }; + var fk = { + brush: function(t) { + var e = t.style, + i = e.image; + i instanceof HTMLImageElement && (i = i.src); + if (i) { + var n = e.x || 0, + a = e.y || 0, + o = e.width, + r = e.height, + s = t.__svgEl; + s || (s = KL("image"), t.__svgEl = s), i !== t.__imageSrc && (function(t, e, i) { + t.setAttributeNS("http://www.w3.org/1999/xlink", e, i) + }(s, "href", i), t.__imageSrc = i), hk(s, "width", o), hk(s, "height", r), hk(s, "x", n), hk(s, "y", a), uk(s, t.transform), null != e.text && vk(t, t.getBoundingRect()) + } + } + }, + pk = {}, + gk = new bi, + mk = {}, + vk = function(t, e, i) { + var n = t.style; + t.__dirty && Cn(n); + var a = n.text; + if (null != a) { + a += ""; + var o, r, s = t.__textSvgEl; + s || (s = KL("text"), t.__textSvgEl = s); + var l = n.textPosition, + u = n.textAlign || "left"; + "number" == typeof n.fontSize && (n.fontSize += "px"); + var h = n.font || [n.fontStyle || "", n.fontWeight || "", n.fontSize || "", n.fontFamily || ""].join(" ") || rn, + c = n.textVerticalAlign, + d = (i = un(a, h, u, c, n.textPadding, n.textLineHeight, !1, n.truncate)).lineHeight; + if (l instanceof Array) o = e.x + Fn(l[0], e.width), r = e.y + Fn(l[1], e.height); + else { + var f = t.calculateTextPosition ? t.calculateTextPosition(mk, n, e) : dn(mk, n, e); + o = f.x, r = f.y, c = f.textVerticalAlign, u = f.textAlign + } + yk(s, c), h && (s.style.font = h); + var p = n.textPadding; + if (hk(s, "x", o), hk(s, "y", r), ck(s, n, !0, t), t instanceof Dr || t.style.transformText) uk(s, t.transform); + else { + if (t.transform) gk.copy(e), gk.applyTransform(t.transform), e = gk; + else { + var g = t.transformCoordToGlobal(e.x, e.y); + e.x = g[0], e.y = g[1], t.transform = te(Qt()) + } + var m = n.textOrigin; + "center" === m ? (o = i.width / 2 + o, r = i.height / 2 + r) : m && (o = m[0] + o, r = m[1] + r); + var v = -n.textRotation || 0, + y = Qt(); + ae(y, y, v), ne(y, y, g = [t.transform[4], t.transform[5]]), uk(s, y) + } + var x = yn(a, h, p, d, n.truncate).lines, + _ = x.length, + w = u; + "left" === w ? (w = "start", p && (o += p[3])) : "right" === w ? (w = "end", p && (o -= p[1])) : "center" === w && (w = "middle", p && (o += (p[3] - p[1]) / 2)); + var b = 0; + if ("bottom" === c ? (b = -i.height + d, p && (b -= p[2])) : "middle" === c ? (b = (-i.height + d) / 2, p && (r += (p[0] - p[2]) / 2)) : p && (b += p[0]), t.__text !== a || t.__textFont !== h) { + var S = t.__tspanList || []; + t.__tspanList = S; + for (var M = 0; M < _; M++) { + (A = S[M]) ? A.innerHTML = "": (A = S[M] = KL("tspan"), s.appendChild(A), yk(A, c), hk(A, "text-anchor", w)), hk(A, "x", o), hk(A, "y", r + M * d + b), A.appendChild(document.createTextNode(x[M])) + } + for (; M < S.length; M++) s.removeChild(S[M]); + S.length = _, t.__text = a, t.__textFont = h + } else if (t.__tspanList.length) { + var I = t.__tspanList.length; + for (M = 0; M < I; ++M) { + var A; + (A = t.__tspanList[M]) && (hk(A, "x", o), hk(A, "y", r + M * d + b)) + } + } + } + }; + + function yk(t, e) { + switch (e) { + case "middle": + hk(t, "dominant-baseline", "middle"), hk(t, "alignment-baseline", "middle"); + break; + case "bottom": + hk(t, "dominant-baseline", "ideographic"), hk(t, "alignment-baseline", "ideographic"); + break; + default: + hk(t, "dominant-baseline", "hanging"), hk(t, "alignment-baseline", "hanging") + } + } + + function xk() {} + + function _k(t, e) { + for (var i = 0, n = e.length, a = 0, o = 0; i < n; i++) { + var r = e[i]; + if (r.removed) { + for (s = [], l = o; l < o + r.count; l++) s.push(l); + r.indices = s, o += r.count + } else { + for (var s = [], l = a; l < a + r.count; l++) s.push(l); + r.indices = s, a += r.count, r.added || (o += r.count) + } + } + return e + } + pk.drawRectText = vk, pk.brush = function(t) { + var e = t.style; + null != e.text && (e.textPosition = [0, 0], vk(t, { + x: e.x || 0, + y: e.y || 0, + width: 0, + height: 0 + }, t.getBoundingRect())) + }, xk.prototype = { + diff: function(l, u, t) { + t = t || function(t, e) { + return t === e + }, this.equals = t; + var h = this; + l = l.slice(); + var c = (u = u.slice()).length, + d = l.length, + f = 1, + e = c + d, + p = [{ + newPos: -1, + components: [] + }], + i = this.extractCommon(p[0], u, l, 0); + if (p[0].newPos + 1 >= c && d <= i + 1) { + for (var n = [], a = 0; a < u.length; a++) n.push(a); + return [{ + indices: n, + count: u.length + }] + } + + function o() { + for (var t = -1 * f; t <= f; t += 2) { + var e, i = p[t - 1], + n = p[t + 1], + a = (n ? n.newPos : 0) - t; + i && (p[t - 1] = void 0); + var o = i && i.newPos + 1 < c, + r = n && 0 <= a && a < d; + if (o || r) { + if (!o || r && i.newPos < n.newPos ? (e = { + newPos: (s = n).newPos, + components: s.components.slice(0) + }, h.pushComponent(e.components, void 0, !0)) : ((e = i).newPos++, h.pushComponent(e.components, !0, void 0)), a = h.extractCommon(e, u, l, t), e.newPos + 1 >= c && d <= a + 1) return _k(h, e.components, u, l); + p[t] = e + } else p[t] = void 0 + } + var s; + f++ + } + for (; f <= e;) { + var r = o(); + if (r) return r + } + }, + pushComponent: function(t, e, i) { + var n = t[t.length - 1]; + n && n.added === e && n.removed === i ? t[t.length - 1] = { + count: n.count + 1, + added: e, + removed: i + } : t.push({ + count: 1, + added: e, + removed: i + }) + }, + extractCommon: function(t, e, i, n) { + for (var a = e.length, o = i.length, r = t.newPos, s = r - n, l = 0; r + 1 < a && s + 1 < o && this.equals(e[r + 1], i[s + 1]);) r++, s++, l++; + return l && t.components.push({ + count: l + }), t.newPos = r, s + }, + tokenize: function(t) { + return t.slice() + }, + join: function(t) { + return t.slice() + } + }; + var wk = new xk; + + function bk(t, e, i, n, a) { + this._zrId = t, this._svgRoot = e, this._tagNames = "string" == typeof i ? [i] : i, this._markLabel = n, this._domName = a || "_dom", this.nextId = 0 + } + + function Sk(t, e) { + bk.call(this, t, e, ["linearGradient", "radialGradient"], "__gradient_in_use__") + } + + function Mk(t, e) { + bk.call(this, t, e, "clipPath", "__clippath_in_use__") + } + + function Ik(t, e) { + bk.call(this, t, e, ["filter"], "__filter_in_use__", "_shadowDom") + } + + function Ak(t) { + return t && (t.shadowBlur || t.shadowOffsetX || t.shadowOffsetY || t.textShadowBlur || t.textShadowOffsetX || t.textShadowOffsetY) + } + + function Tk(t) { + return parseInt(t, 10) + } + + function Dk(t, e) { + return e && t && e.parentNode !== t + } + + function Ck(t, e, i) { + if (Dk(t, e) && i) { + var n = i.nextSibling; + n ? t.insertBefore(e, n) : t.appendChild(e) + } + } + + function Lk(t, e) { + if (Dk(t, e)) { + var i = t.firstChild; + i ? t.insertBefore(e, i) : t.appendChild(e) + } + } + + function kk(t, e) { + e && t && e.parentNode === t && t.removeChild(e) + } + + function Pk(t) { + return t.__textSvgEl + } + + function Nk(t) { + return t.__svgEl + } + bk.prototype.createElement = KL, bk.prototype.getDefs = function(t) { + var e = this._svgRoot, + n = this._svgRoot.getElementsByTagName("defs"); + return 0 === n.length ? t ? ((n = e.insertBefore(this.createElement("defs"), e.firstChild)).contains || (n.contains = function(t) { + var e = n.children; + if (!e) return !1; + for (var i = e.length - 1; 0 <= i; --i) + if (e[i] === t) return !0; + return !1 + }), n) : null : n[0] + }, bk.prototype.update = function(t, e) { + if (t) { + var i = this.getDefs(!1); + if (t[this._domName] && i.contains(t[this._domName])) "function" == typeof e && e(t); + else { + var n = this.add(t); + n && (t[this._domName] = n) + } + } + }, bk.prototype.addDom = function(t) { + this.getDefs(!0).appendChild(t) + }, bk.prototype.removeDom = function(t) { + var e = this.getDefs(!1); + e && t[this._domName] && (e.removeChild(t[this._domName]), t[this._domName] = null) + }, bk.prototype.getDoms = function() { + var i = this.getDefs(!1); + if (!i) return []; + var n = []; + return O(this._tagNames, function(t) { + var e = i.getElementsByTagName(t); + n = n.concat([].slice.call(e)) + }), n + }, bk.prototype.markAllUnused = function() { + var t = this.getDoms(), + e = this; + O(t, function(t) { + t[e._markLabel] = "0" + }) + }, bk.prototype.markUsed = function(t) { + t && (t[this._markLabel] = "1") + }, bk.prototype.removeUnused = function() { + var e = this.getDefs(!1); + if (e) { + var t = this.getDoms(), + i = this; + O(t, function(t) { + "1" !== t[i._markLabel] && e.removeChild(t) + }) + } + }, bk.prototype.getSvgProxy = function(t) { + return t instanceof hr ? dk : t instanceof Yn ? fk : t instanceof Dr ? pk : dk + }, bk.prototype.getTextSvgElement = function(t) { + return t.__textSvgEl + }, bk.prototype.getSvgElement = function(t) { + return t.__svgEl + }, w(Sk, bk), Sk.prototype.addWithoutUpdate = function(o, r) { + if (r && r.style) { + var s = this; + O(["fill", "stroke"], function(t) { + if (r.style[t] && ("linear" === r.style[t].type || "radial" === r.style[t].type)) { + var e, i = r.style[t], + n = s.getDefs(!0); + i._dom ? (e = i._dom, n.contains(i._dom) || s.addDom(e)) : e = s.add(i), s.markUsed(r); + var a = e.getAttribute("id"); + o.setAttribute(t, "url(#" + a + ")") + } + }) + } + }, Sk.prototype.add = function(t) { + var e; + if ("linear" === t.type) e = this.createElement("linearGradient"); + else { + if ("radial" !== t.type) return ci("Illegal gradient type."), null; + e = this.createElement("radialGradient") + } + return t.id = t.id || this.nextId++, e.setAttribute("id", "zr" + this._zrId + "-gradient-" + t.id), this.updateDom(t, e), this.addDom(e), e + }, Sk.prototype.update = function(i) { + var n = this; + bk.prototype.update.call(this, i, function() { + var t = i.type, + e = i._dom.tagName; + "linear" === t && "linearGradient" === e || "radial" === t && "radialGradient" === e ? n.updateDom(i, i._dom) : (n.removeDom(i), n.add(i)) + }) + }, Sk.prototype.updateDom = function(t, e) { + if ("linear" === t.type) e.setAttribute("x1", t.x), e.setAttribute("y1", t.y), e.setAttribute("x2", t.x2), e.setAttribute("y2", t.y2); + else { + if ("radial" !== t.type) return void ci("Illegal gradient type."); + e.setAttribute("cx", t.x), e.setAttribute("cy", t.y), e.setAttribute("r", t.r) + } + t.global ? e.setAttribute("gradientUnits", "userSpaceOnUse") : e.setAttribute("gradientUnits", "objectBoundingBox"), e.innerHTML = ""; + for (var i = t.colorStops, n = 0, a = i.length; n < a; ++n) { + var o = this.createElement("stop"); + o.setAttribute("offset", 100 * i[n].offset + "%"); + var r = i[n].color; + if (r.indexOf(!1)) { + var s = Re(r)[3], + l = Be(r); + o.setAttribute("stop-color", "#" + l), o.setAttribute("stop-opacity", s) + } else o.setAttribute("stop-color", i[n].color); + e.appendChild(o) + } + t._dom = e + }, Sk.prototype.markUsed = function(t) { + if (t.style) { + var e = t.style.fill; + e && e._dom && bk.prototype.markUsed.call(this, e._dom), (e = t.style.stroke) && e._dom && bk.prototype.markUsed.call(this, e._dom) + } + }, w(Mk, bk), Mk.prototype.update = function(t) { + var e = this.getSvgElement(t); + e && this.updateDom(e, t.__clipPaths, !1); + var i = this.getTextSvgElement(t); + i && this.updateDom(i, t.__clipPaths, !0), this.markUsed(t) + }, Mk.prototype.updateDom = function(t, e, i) { + if (e && 0 < e.length) { + var n, a, o = this.getDefs(!0), + r = e[0], + s = i ? "_textDom" : "_dom"; + r[s] ? (a = r[s].getAttribute("id"), n = r[s], o.contains(n) || o.appendChild(n)) : (a = "zr" + this._zrId + "-clip-" + this.nextId, ++this.nextId, (n = this.createElement("clipPath")).setAttribute("id", a), o.appendChild(n), r[s] = n); + var l = this.getSvgProxy(r); + if (r.transform && r.parent.invTransform && !i) { + var u = Array.prototype.slice.call(r.transform); + ie(r.transform, r.parent.invTransform, r.transform), l.brush(r), r.transform = u + } else l.brush(r); + var h = this.getSvgElement(r); + n.innerHTML = "", n.appendChild(h.cloneNode()), t.setAttribute("clip-path", "url(#" + a + ")"), 1 < e.length && this.updateDom(n, e.slice(1), i) + } else t && t.setAttribute("clip-path", "none") + }, Mk.prototype.markUsed = function(t) { + var e = this; + t.__clipPaths && O(t.__clipPaths, function(t) { + t._dom && bk.prototype.markUsed.call(e, t._dom), t._textDom && bk.prototype.markUsed.call(e, t._textDom) + }) + }, w(Ik, bk), Ik.prototype.addWithoutUpdate = function(t, e) { + if (e && Ak(e.style)) { + var i, n = e.style; + if (n._shadowDom) i = n._shadowDom, this.getDefs(!0).contains(n._shadowDom) || this.addDom(i); + else i = this.add(e); + this.markUsed(e); + var a = i.getAttribute("id"); + t.style.filter = "url(#" + a + ")" + } + }, Ik.prototype.add = function(t) { + var e = this.createElement("filter"), + i = t.style; + return i._shadowDomId = i._shadowDomId || this.nextId++, e.setAttribute("id", "zr" + this._zrId + "-shadow-" + i._shadowDomId), this.updateDom(t, e), this.addDom(e), e + }, Ik.prototype.update = function(t, e) { + var i = e.style; + if (Ak(i)) { + var n = this; + bk.prototype.update.call(this, e, function(t) { + n.updateDom(e, t._shadowDom) + }) + } else this.remove(t, i) + }, Ik.prototype.remove = function(t, e) { + null != e._shadowDomId && (this.removeDom(e), t.style.filter = "") + }, Ik.prototype.updateDom = function(t, e) { + var i = e.getElementsByTagName("feDropShadow"); + i = 0 === i.length ? this.createElement("feDropShadow") : i[0]; + var n, a, o, r, s = t.style, + l = t.scale && t.scale[0] || 1, + u = t.scale && t.scale[1] || 1; + if (s.shadowBlur || s.shadowOffsetX || s.shadowOffsetY) n = s.shadowOffsetX || 0, a = s.shadowOffsetY || 0, o = s.shadowBlur, r = s.shadowColor; + else { + if (!s.textShadowBlur) return void this.removeDom(e, s); + n = s.textShadowOffsetX || 0, a = s.textShadowOffsetY || 0, o = s.textShadowBlur, r = s.textShadowColor + } + i.setAttribute("dx", n / l), i.setAttribute("dy", a / u), i.setAttribute("flood-color", r); + var h = o / 2 / l + " " + o / 2 / u; + i.setAttribute("stdDeviation", h), e.setAttribute("x", "-100%"), e.setAttribute("y", "-100%"), e.setAttribute("width", Math.ceil(o / 2 * 200) + "%"), e.setAttribute("height", Math.ceil(o / 2 * 200) + "%"), e.appendChild(i), s._shadowDom = e + }, Ik.prototype.markUsed = function(t) { + var e = t.style; + e && e._shadowDom && bk.prototype.markUsed.call(this, e._shadowDom) + }; + + function Ok(t, e, i, n) { + this.root = t, this.storage = e, this._opts = i = L({}, i || {}); + var a = KL("svg"); + a.setAttribute("xmlns", "http://www.w3.org/2000/svg"), a.setAttribute("version", "1.1"), a.setAttribute("baseProfile", "full"), a.style.cssText = "user-select:none;position:absolute;left:0;top:0;", this.gradientManager = new Sk(n, a), this.clipPathManager = new Mk(n, a), this.shadowManager = new Ik(n, a); + var o = document.createElement("div"); + o.style.cssText = "overflow:hidden;position:relative", this._svgRoot = a, this._viewport = o, t.appendChild(o), o.appendChild(a), this.resize(i.width, i.height), this._visibleList = [] + } + Ok.prototype = { + constructor: Ok, + getType: function() { + return "svg" + }, + getViewportRoot: function() { + return this._viewport + }, + getViewportRootOffset: function() { + var t = this.getViewportRoot(); + if (t) return { + offsetLeft: t.offsetLeft || 0, + offsetTop: t.offsetTop || 0 + } + }, + refresh: function() { + var t = this.storage.getDisplayList(!0); + this._paintList(t) + }, + setBackgroundColor: function(t) { + this._viewport.style.background = t + }, + _paintList: function(t) { + this.gradientManager.markAllUnused(), this.clipPathManager.markAllUnused(), this.shadowManager.markAllUnused(); + var e, i, n = this._svgRoot, + a = this._visibleList, + o = t.length, + r = []; + for (e = 0; e < o; e++) { + var s = t[e], + l = (i = s) instanceof hr ? dk : i instanceof Yn ? fk : i instanceof Dr ? pk : dk, + u = Nk(s) || Pk(s); + s.invisible || (s.__dirty && (l && l.brush(s), this.clipPathManager.update(s), s.style && (this.gradientManager.update(s.style.fill), this.gradientManager.update(s.style.stroke), this.shadowManager.update(u, s)), s.__dirty = !1), r.push(s)) + } + var h, c = function(t, e, i) { + return wk.diff(t, e, i) + }(a, r); + for (e = 0; e < c.length; e++) { + if ((p = c[e]).removed) + for (var d = 0; d < p.count; d++) { + u = Nk(s = a[p.indices[d]]); + var f = Pk(s); + kk(n, u), kk(n, f) + } + } + for (e = 0; e < c.length; e++) { + var p; + if ((p = c[e]).added) + for (d = 0; d < p.count; d++) { + u = Nk(s = r[p.indices[d]]), f = Pk(s); + h ? Ck(n, u, h) : Lk(n, u), u ? Ck(n, f, u) : h ? Ck(n, f, h) : Lk(n, f), Ck(n, f, u), h = f || u || h, this.gradientManager.addWithoutUpdate(u, s), this.shadowManager.addWithoutUpdate(h, s), this.clipPathManager.markUsed(s) + } else if (!p.removed) + for (d = 0; d < p.count; d++) { + h = u = Pk(s = r[p.indices[d]]) || Nk(s) || h, this.gradientManager.markUsed(s), this.gradientManager.addWithoutUpdate(u, s), this.shadowManager.markUsed(s), this.shadowManager.addWithoutUpdate(u, s), this.clipPathManager.markUsed(s) + } + } + this.gradientManager.removeUnused(), this.clipPathManager.removeUnused(), this.shadowManager.removeUnused(), this._visibleList = r + }, + _getDefs: function(t) { + var n, e = this._svgRoot; + return 0 !== (n = this._svgRoot.getElementsByTagName("defs")).length ? n[0] : t ? ((n = e.insertBefore(KL("defs"), e.firstChild)).contains || (n.contains = function(t) { + var e = n.children; + if (!e) return !1; + for (var i = e.length - 1; 0 <= i; --i) + if (e[i] === t) return !0; + return !1 + }), n) : null + }, + resize: function(t, e) { + var i = this._viewport; + i.style.display = "none"; + var n = this._opts; + if (null != t && (n.width = t), null != e && (n.height = e), t = this._getSize(0), e = this._getSize(1), i.style.display = "", this._width !== t || this._height !== e) { + this._width = t, this._height = e; + var a = i.style; + a.width = t + "px", a.height = e + "px"; + var o = this._svgRoot; + o.setAttribute("width", t), o.setAttribute("height", e) + } + }, + 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] || Tk(s[i]) || Tk(r.style[i])) - (Tk(s[a]) || 0) - (Tk(s[o]) || 0) | 0 + }, + dispose: function() { + this.root.innerHTML = "", this._svgRoot = this._viewport = this.storage = null + }, + clear: function() { + this._viewport && this.root.removeChild(this._viewport) + }, + pathToDataUrl: function() { + return this.refresh(), "data:image/svg+xml;charset=UTF-8," + this._svgRoot.outerHTML + } + }, O(["getLayer", "insertLayer", "eachLayer", "eachBuiltinLayer", "eachOtherLayer", "getLayers", "modLayer", "delLayer", "clearLayer", "toDataURL", "pathToImage"], function(t) { + Ok.prototype[t] = function(t) { + return function() { + ci('In SVG mode painter not support method "' + t + '"') + } + }(t) + }), pa("svg", Ok), t.version = "4.4.0", t.dependencies = { + zrender: "4.1.1" + }, t.PRIORITY = cd, t.init = function(t, e, i) { + var n = Kd(t); + if (n) return n; + var a = new vd(t, e, i); + return a.id = "ec_" + Ud++, Hd[a.id] = a, Oa(t, Yd, a.id), + function(n) { + var a = "__connectUpdateStatus"; + + function o(t, e) { + for (var i = 0; i < t.length; i++) { + t[i][a] = e + } + } + sd(zd, function(t, e) { + n._messageCenter.on(e, function(t) { + if (Zd[n.group] && 0 !== n[a]) { + if (t && t.escapeConnect) return; + var e = n.makeActionFromEvent(t), + i = []; + sd(Hd, function(t) { + t !== n && t.group === n.group && i.push(t) + }), o(i, 0), sd(i, function(t) { + 1 !== t[a] && t.dispatchAction(e) + }), o(i, 2) + } + }) + }) + }(a), a + }, t.connect = function(e) { + if (k(e)) { + var t = e; + e = null, sd(t, function(t) { + null != t.group && (e = t.group) + }), e = e || "g_" + Xd++, sd(t, function(t) { + t.group = e + }) + } + return Zd[e] = !0, e + }, t.disConnect = jd, t.disconnect = qd, t.dispose = function(t) { + "string" == typeof t ? t = Hd[t] : t instanceof vd || (t = Kd(t)), t instanceof vd && !t.isDisposed() && t.dispose() + }, t.getInstanceByDom = Kd, t.getInstanceById = function(t) { + return Hd[t] + }, t.registerTheme = $d, t.registerPreprocessor = Jd, t.registerProcessor = Qd, t.registerPostUpdate = function(t) { + Vd.push(t) + }, t.registerAction = tf, t.registerCoordinateSystem = ef, t.getCoordinateSystemDimensions = function(t) { + var e = Hu.get(t); + if (e) return e.getDimensionsInfo ? e.getDimensionsInfo() : e.dimensions.slice() + }, t.registerLayout = nf, t.registerVisual = af, t.registerLoading = rf, t.extendComponentModel = sf, t.extendComponentView = lf, t.extendSeriesModel = uf, t.extendChartView = hf, t.setCanvasCreator = function(t) { + f("createCanvas", t) + }, t.registerMap = function(t, e, i) { + ad.registerMap(t, e, i) + }, t.getMap = function(t) { + var e = ad.retrieveMap(t); + return e && e[0] && { + geoJson: e[0].geoJSON, + specialAreas: e[0].specialAreas + } + }, t.dataTool = {}, t.zrender = ma, t.number = zl, t.format = Jl, t.throttle = cc, t.helper = tg, t.matrix = le, t.vector = It, t.color = Xe, t.parseGeoJSON = rg, t.parseGeoJson = xg, t.util = _g, t.graphic = wg, t.List = Tf, t.Model = dl, t.Axis = vg, t.env = v +}); \ No newline at end of file diff --git a/examples/cesiumEx/templates/1_uav/js/jquery.min.js b/examples/cesiumEx/templates/1_uav/js/jquery.min.js new file mode 100644 index 00000000..b2924989 --- /dev/null +++ b/examples/cesiumEx/templates/1_uav/js/jquery.min.js @@ -0,0 +1,3081 @@ +/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ ! function(a, b) { + "object" == typeof module && "object" == typeof module.exports ? module.exports = a.document ? b(a, !0) : function(a) { + if (!a.document) throw new Error("jQuery requires a window with a document"); + return b(a) + } : b(a) +}("undefined" != typeof window ? window : this, function(a, b) { + var c = [], + d = c.slice, + e = c.concat, + f = c.push, + g = c.indexOf, + h = {}, + i = h.toString, + j = h.hasOwnProperty, + k = {}, + l = a.document, + m = "2.1.4", + n = function(a, b) { + return new n.fn.init(a, b) + }, + o = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + p = /^-ms-/, + q = /-([\da-z])/gi, + r = function(a, b) { + return b.toUpperCase() + }; + n.fn = n.prototype = { + jquery: m, + constructor: n, + selector: "", + length: 0, + toArray: function() { + return d.call(this) + }, + get: function(a) { + return null != a ? 0 > a ? this[a + this.length] : this[a] : d.call(this) + }, + pushStack: function(a) { + var b = n.merge(this.constructor(), a); + return b.prevObject = this, b.context = this.context, b + }, + each: function(a, b) { + return n.each(this, a, b) + }, + map: function(a) { + return this.pushStack(n.map(this, function(b, c) { + return a.call(b, c, b) + })) + }, + slice: function() { + return this.pushStack(d.apply(this, arguments)) + }, + first: function() { + return this.eq(0) + }, + last: function() { + return this.eq(-1) + }, + eq: function(a) { + var b = this.length, + c = +a + (0 > a ? b : 0); + return this.pushStack(c >= 0 && b > c ? [this[c]] : []) + }, + end: function() { + return this.prevObject || this.constructor(null) + }, + push: f, + sort: c.sort, + splice: c.splice + }, n.extend = n.fn.extend = function() { + var a, b, c, d, e, f, g = arguments[0] || {}, + h = 1, + i = arguments.length, + j = !1; + for ("boolean" == typeof g && (j = g, g = arguments[h] || {}, h++), "object" == typeof g || n.isFunction(g) || (g = {}), h === i && (g = this, h--); i > h; h++) + if (null != (a = arguments[h])) + for (b in a) c = g[b], d = a[b], g !== d && (j && d && (n.isPlainObject(d) || (e = n.isArray(d))) ? (e ? (e = !1, f = c && n.isArray(c) ? c : []) : f = c && n.isPlainObject(c) ? c : {}, g[b] = n.extend(j, f, d)) : void 0 !== d && (g[b] = d)); + return g + }, n.extend({ + expando: "jQuery" + (m + Math.random()).replace(/\D/g, ""), + isReady: !0, + error: function(a) { + throw new Error(a) + }, + noop: function() {}, + isFunction: function(a) { + return "function" === n.type(a) + }, + isArray: Array.isArray, + isWindow: function(a) { + return null != a && a === a.window + }, + isNumeric: function(a) { + return !n.isArray(a) && a - parseFloat(a) + 1 >= 0 + }, + isPlainObject: function(a) { + return "object" !== n.type(a) || a.nodeType || n.isWindow(a) ? !1 : a.constructor && !j.call(a.constructor.prototype, "isPrototypeOf") ? !1 : !0 + }, + isEmptyObject: function(a) { + var b; + for (b in a) return !1; + return !0 + }, + type: function(a) { + return null == a ? a + "" : "object" == typeof a || "function" == typeof a ? h[i.call(a)] || "object" : typeof a + }, + globalEval: function(a) { + var b, c = eval; + a = n.trim(a), a && (1 === a.indexOf("use strict") ? (b = l.createElement("script"), b.text = a, l.head.appendChild(b).parentNode.removeChild(b)) : c(a)) + }, + camelCase: function(a) { + return a.replace(p, "ms-").replace(q, r) + }, + nodeName: function(a, b) { + return a.nodeName && a.nodeName.toLowerCase() === b.toLowerCase() + }, + each: function(a, b, c) { + var d, e = 0, + f = a.length, + g = s(a); + if (c) { + if (g) { + for (; f > e; e++) + if (d = b.apply(a[e], c), d === !1) break + } else + for (e in a) + if (d = b.apply(a[e], c), d === !1) break + } else if (g) { + for (; f > e; e++) + if (d = b.call(a[e], e, a[e]), d === !1) break + } else + for (e in a) + if (d = b.call(a[e], e, a[e]), d === !1) break; + return a + }, + trim: function(a) { + return null == a ? "" : (a + "").replace(o, "") + }, + makeArray: function(a, b) { + var c = b || []; + return null != a && (s(Object(a)) ? n.merge(c, "string" == typeof a ? [a] : a) : f.call(c, a)), c + }, + inArray: function(a, b, c) { + return null == b ? -1 : g.call(b, a, c) + }, + merge: function(a, b) { + for (var c = +b.length, d = 0, e = a.length; c > d; d++) a[e++] = b[d]; + return a.length = e, a + }, + grep: function(a, b, c) { + for (var d, e = [], f = 0, g = a.length, h = !c; g > f; f++) d = !b(a[f], f), d !== h && e.push(a[f]); + return e + }, + map: function(a, b, c) { + var d, f = 0, + g = a.length, + h = s(a), + i = []; + if (h) + for (; g > f; f++) d = b(a[f], f, c), null != d && i.push(d); + else + for (f in a) d = b(a[f], f, c), null != d && i.push(d); + return e.apply([], i) + }, + guid: 1, + proxy: function(a, b) { + var c, e, f; + return "string" == typeof b && (c = a[b], b = a, a = c), n.isFunction(a) ? (e = d.call(arguments, 2), f = function() { + return a.apply(b || this, e.concat(d.call(arguments))) + }, f.guid = a.guid = a.guid || n.guid++, f) : void 0 + }, + now: Date.now, + support: k + }), n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(a, b) { + h["[object " + b + "]"] = b.toLowerCase() + }); + + function s(a) { + var b = "length" in a && a.length, + c = n.type(a); + return "function" === c || n.isWindow(a) ? !1 : 1 === a.nodeType && b ? !0 : "array" === c || 0 === b || "number" == typeof b && b > 0 && b - 1 in a + } + var t = function(a) { + var b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u = "sizzle" + 1 * new Date, + v = a.document, + w = 0, + x = 0, + y = ha(), + z = ha(), + A = ha(), + B = function(a, b) { + return a === b && (l = !0), 0 + }, + C = 1 << 31, + D = {}.hasOwnProperty, + E = [], + F = E.pop, + G = E.push, + H = E.push, + I = E.slice, + J = function(a, b) { + for (var c = 0, d = a.length; d > c; c++) + if (a[c] === b) return c; + return -1 + }, + K = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + L = "[\\x20\\t\\r\\n\\f]", + M = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + N = M.replace("w", "w#"), + O = "\\[" + L + "*(" + M + ")(?:" + L + "*([*^$|!~]?=)" + L + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + N + "))|)" + L + "*\\]", + P = ":(" + M + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + O + ")*)|.*)\\)|)", + Q = new RegExp(L + "+", "g"), + R = new RegExp("^" + L + "+|((?:^|[^\\\\])(?:\\\\.)*)" + L + "+$", "g"), + S = new RegExp("^" + L + "*," + L + "*"), + T = new RegExp("^" + L + "*([>+~]|" + L + ")" + L + "*"), + U = new RegExp("=" + L + "*([^\\]'\"]*?)" + L + "*\\]", "g"), + V = new RegExp(P), + W = new RegExp("^" + N + "$"), + X = { + ID: new RegExp("^#(" + M + ")"), + CLASS: new RegExp("^\\.(" + M + ")"), + TAG: new RegExp("^(" + M.replace("w", "w*") + ")"), + ATTR: new RegExp("^" + O), + PSEUDO: new RegExp("^" + P), + CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + L + "*(even|odd|(([+-]|)(\\d*)n|)" + L + "*(?:([+-]|)" + L + "*(\\d+)|))" + L + "*\\)|)", "i"), + bool: new RegExp("^(?:" + K + ")$", "i"), + needsContext: new RegExp("^" + L + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + L + "*((?:-\\d)?\\d*)" + L + "*\\)|)(?=[^-]|$)", "i") + }, + Y = /^(?:input|select|textarea|button)$/i, + Z = /^h\d$/i, + $ = /^[^{]+\{\s*\[native \w/, + _ = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + aa = /[+~]/, + ba = /'|\\/g, + ca = new RegExp("\\\\([\\da-f]{1,6}" + L + "?|(" + L + ")|.)", "ig"), + da = function(a, b, c) { + var d = "0x" + b - 65536; + return d !== d || c ? b : 0 > d ? String.fromCharCode(d + 65536) : String.fromCharCode(d >> 10 | 55296, 1023 & d | 56320) + }, + ea = function() { + m() + }; + try { + H.apply(E = I.call(v.childNodes), v.childNodes), E[v.childNodes.length].nodeType + } catch (fa) { + H = { + apply: E.length ? function(a, b) { + G.apply(a, I.call(b)) + } : function(a, b) { + var c = a.length, + d = 0; + while (a[c++] = b[d++]); + a.length = c - 1 + } + } + } + + function ga(a, b, d, e) { + var f, h, j, k, l, o, r, s, w, x; + if ((b ? b.ownerDocument || b : v) !== n && m(b), b = b || n, d = d || [], k = b.nodeType, "string" != typeof a || !a || 1 !== k && 9 !== k && 11 !== k) return d; + if (!e && p) { + if (11 !== k && (f = _.exec(a))) + if (j = f[1]) { + if (9 === k) { + if (h = b.getElementById(j), !h || !h.parentNode) return d; + if (h.id === j) return d.push(h), d + } else if (b.ownerDocument && (h = b.ownerDocument.getElementById(j)) && t(b, h) && h.id === j) return d.push(h), d + } else { + if (f[2]) return H.apply(d, b.getElementsByTagName(a)), d; + if ((j = f[3]) && c.getElementsByClassName) return H.apply(d, b.getElementsByClassName(j)), d + } if (c.qsa && (!q || !q.test(a))) { + if (s = r = u, w = b, x = 1 !== k && a, 1 === k && "object" !== b.nodeName.toLowerCase()) { + o = g(a), (r = b.getAttribute("id")) ? s = r.replace(ba, "\\$&") : b.setAttribute("id", s), s = "[id='" + s + "'] ", l = o.length; + while (l--) o[l] = s + ra(o[l]); + w = aa.test(a) && pa(b.parentNode) || b, x = o.join(",") + } + if (x) try { + return H.apply(d, w.querySelectorAll(x)), d + } catch (y) {} finally { + r || b.removeAttribute("id") + } + } + } + return i(a.replace(R, "$1"), b, d, e) + } + + function ha() { + var a = []; + + function b(c, e) { + return a.push(c + " ") > d.cacheLength && delete b[a.shift()], b[c + " "] = e + } + return b + } + + function ia(a) { + return a[u] = !0, a + } + + function ja(a) { + var b = n.createElement("div"); + try { + return !!a(b) + } catch (c) { + return !1 + } finally { + b.parentNode && b.parentNode.removeChild(b), b = null + } + } + + function ka(a, b) { + var c = a.split("|"), + e = a.length; + while (e--) d.attrHandle[c[e]] = b + } + + function la(a, b) { + var c = b && a, + d = c && 1 === a.nodeType && 1 === b.nodeType && (~b.sourceIndex || C) - (~a.sourceIndex || C); + if (d) return d; + if (c) + while (c = c.nextSibling) + if (c === b) return -1; + return a ? 1 : -1 + } + + function ma(a) { + return function(b) { + var c = b.nodeName.toLowerCase(); + return "input" === c && b.type === a + } + } + + function na(a) { + return function(b) { + var c = b.nodeName.toLowerCase(); + return ("input" === c || "button" === c) && b.type === a + } + } + + function oa(a) { + return ia(function(b) { + return b = +b, ia(function(c, d) { + var e, f = a([], c.length, b), + g = f.length; + while (g--) c[e = f[g]] && (c[e] = !(d[e] = c[e])) + }) + }) + } + + function pa(a) { + return a && "undefined" != typeof a.getElementsByTagName && a + } + c = ga.support = {}, f = ga.isXML = function(a) { + var b = a && (a.ownerDocument || a).documentElement; + return b ? "HTML" !== b.nodeName : !1 + }, m = ga.setDocument = function(a) { + var b, e, g = a ? a.ownerDocument || a : v; + return g !== n && 9 === g.nodeType && g.documentElement ? (n = g, o = g.documentElement, e = g.defaultView, e && e !== e.top && (e.addEventListener ? e.addEventListener("unload", ea, !1) : e.attachEvent && e.attachEvent("onunload", ea)), p = !f(g), c.attributes = ja(function(a) { + return a.className = "i", !a.getAttribute("className") + }), c.getElementsByTagName = ja(function(a) { + return a.appendChild(g.createComment("")), !a.getElementsByTagName("*").length + }), c.getElementsByClassName = $.test(g.getElementsByClassName), c.getById = ja(function(a) { + return o.appendChild(a).id = u, !g.getElementsByName || !g.getElementsByName(u).length + }), c.getById ? (d.find.ID = function(a, b) { + if ("undefined" != typeof b.getElementById && p) { + var c = b.getElementById(a); + return c && c.parentNode ? [c] : [] + } + }, d.filter.ID = function(a) { + var b = a.replace(ca, da); + return function(a) { + return a.getAttribute("id") === b + } + }) : (delete d.find.ID, d.filter.ID = function(a) { + var b = a.replace(ca, da); + return function(a) { + var c = "undefined" != typeof a.getAttributeNode && a.getAttributeNode("id"); + return c && c.value === b + } + }), d.find.TAG = c.getElementsByTagName ? function(a, b) { + return "undefined" != typeof b.getElementsByTagName ? b.getElementsByTagName(a) : c.qsa ? b.querySelectorAll(a) : void 0 + } : function(a, b) { + var c, d = [], + e = 0, + f = b.getElementsByTagName(a); + if ("*" === a) { + while (c = f[e++]) 1 === c.nodeType && d.push(c); + return d + } + return f + }, d.find.CLASS = c.getElementsByClassName && function(a, b) { + return p ? b.getElementsByClassName(a) : void 0 + }, r = [], q = [], (c.qsa = $.test(g.querySelectorAll)) && (ja(function(a) { + o.appendChild(a).innerHTML = "", a.querySelectorAll("[msallowcapture^='']").length && q.push("[*^$]=" + L + "*(?:''|\"\")"), a.querySelectorAll("[selected]").length || q.push("\\[" + L + "*(?:value|" + K + ")"), a.querySelectorAll("[id~=" + u + "-]").length || q.push("~="), a.querySelectorAll(":checked").length || q.push(":checked"), a.querySelectorAll("a#" + u + "+*").length || q.push(".#.+[+~]") + }), ja(function(a) { + var b = g.createElement("input"); + b.setAttribute("type", "hidden"), a.appendChild(b).setAttribute("name", "D"), a.querySelectorAll("[name=d]").length && q.push("name" + L + "*[*^$|!~]?="), a.querySelectorAll(":enabled").length || q.push(":enabled", ":disabled"), a.querySelectorAll("*,:x"), q.push(",.*:") + })), (c.matchesSelector = $.test(s = o.matches || o.webkitMatchesSelector || o.mozMatchesSelector || o.oMatchesSelector || o.msMatchesSelector)) && ja(function(a) { + c.disconnectedMatch = s.call(a, "div"), s.call(a, "[s!='']:x"), r.push("!=", P) + }), q = q.length && new RegExp(q.join("|")), r = r.length && new RegExp(r.join("|")), b = $.test(o.compareDocumentPosition), t = b || $.test(o.contains) ? function(a, b) { + var c = 9 === a.nodeType ? a.documentElement : a, + d = b && b.parentNode; + return a === d || !(!d || 1 !== d.nodeType || !(c.contains ? c.contains(d) : a.compareDocumentPosition && 16 & a.compareDocumentPosition(d))) + } : function(a, b) { + if (b) + while (b = b.parentNode) + if (b === a) return !0; + return !1 + }, B = b ? function(a, b) { + if (a === b) return l = !0, 0; + var d = !a.compareDocumentPosition - !b.compareDocumentPosition; + return d ? d : (d = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1, 1 & d || !c.sortDetached && b.compareDocumentPosition(a) === d ? a === g || a.ownerDocument === v && t(v, a) ? -1 : b === g || b.ownerDocument === v && t(v, b) ? 1 : k ? J(k, a) - J(k, b) : 0 : 4 & d ? -1 : 1) + } : function(a, b) { + if (a === b) return l = !0, 0; + var c, d = 0, + e = a.parentNode, + f = b.parentNode, + h = [a], + i = [b]; + if (!e || !f) return a === g ? -1 : b === g ? 1 : e ? -1 : f ? 1 : k ? J(k, a) - J(k, b) : 0; + if (e === f) return la(a, b); + c = a; + while (c = c.parentNode) h.unshift(c); + c = b; + while (c = c.parentNode) i.unshift(c); + while (h[d] === i[d]) d++; + return d ? la(h[d], i[d]) : h[d] === v ? -1 : i[d] === v ? 1 : 0 + }, g) : n + }, ga.matches = function(a, b) { + return ga(a, null, null, b) + }, ga.matchesSelector = function(a, b) { + if ((a.ownerDocument || a) !== n && m(a), b = b.replace(U, "='$1']"), !(!c.matchesSelector || !p || r && r.test(b) || q && q.test(b))) try { + var d = s.call(a, b); + if (d || c.disconnectedMatch || a.document && 11 !== a.document.nodeType) return d + } catch (e) {} + return ga(b, n, null, [a]).length > 0 + }, ga.contains = function(a, b) { + return (a.ownerDocument || a) !== n && m(a), t(a, b) + }, ga.attr = function(a, b) { + (a.ownerDocument || a) !== n && m(a); + var e = d.attrHandle[b.toLowerCase()], + f = e && D.call(d.attrHandle, b.toLowerCase()) ? e(a, b, !p) : void 0; + return void 0 !== f ? f : c.attributes || !p ? a.getAttribute(b) : (f = a.getAttributeNode(b)) && f.specified ? f.value : null + }, ga.error = function(a) { + throw new Error("Syntax error, unrecognized expression: " + a) + }, ga.uniqueSort = function(a) { + var b, d = [], + e = 0, + f = 0; + if (l = !c.detectDuplicates, k = !c.sortStable && a.slice(0), a.sort(B), l) { + while (b = a[f++]) b === a[f] && (e = d.push(f)); + while (e--) a.splice(d[e], 1) + } + return k = null, a + }, e = ga.getText = function(a) { + var b, c = "", + d = 0, + f = a.nodeType; + if (f) { + if (1 === f || 9 === f || 11 === f) { + if ("string" == typeof a.textContent) return a.textContent; + for (a = a.firstChild; a; a = a.nextSibling) c += e(a) + } else if (3 === f || 4 === f) return a.nodeValue + } else + while (b = a[d++]) c += e(b); + return c + }, d = ga.selectors = { + cacheLength: 50, + createPseudo: ia, + match: X, + attrHandle: {}, + find: {}, + relative: { + ">": { + dir: "parentNode", + first: !0 + }, + " ": { + dir: "parentNode" + }, + "+": { + dir: "previousSibling", + first: !0 + }, + "~": { + dir: "previousSibling" + } + }, + preFilter: { + ATTR: function(a) { + return a[1] = a[1].replace(ca, da), a[3] = (a[3] || a[4] || a[5] || "").replace(ca, da), "~=" === a[2] && (a[3] = " " + a[3] + " "), a.slice(0, 4) + }, + CHILD: function(a) { + return a[1] = a[1].toLowerCase(), "nth" === a[1].slice(0, 3) ? (a[3] || ga.error(a[0]), a[4] = +(a[4] ? a[5] + (a[6] || 1) : 2 * ("even" === a[3] || "odd" === a[3])), a[5] = +(a[7] + a[8] || "odd" === a[3])) : a[3] && ga.error(a[0]), a + }, + PSEUDO: function(a) { + var b, c = !a[6] && a[2]; + return X.CHILD.test(a[0]) ? null : (a[3] ? a[2] = a[4] || a[5] || "" : c && V.test(c) && (b = g(c, !0)) && (b = c.indexOf(")", c.length - b) - c.length) && (a[0] = a[0].slice(0, b), a[2] = c.slice(0, b)), a.slice(0, 3)) + } + }, + filter: { + TAG: function(a) { + var b = a.replace(ca, da).toLowerCase(); + return "*" === a ? function() { + return !0 + } : function(a) { + return a.nodeName && a.nodeName.toLowerCase() === b + } + }, + CLASS: function(a) { + var b = y[a + " "]; + return b || (b = new RegExp("(^|" + L + ")" + a + "(" + L + "|$)")) && y(a, function(a) { + return b.test("string" == typeof a.className && a.className || "undefined" != typeof a.getAttribute && a.getAttribute("class") || "") + }) + }, + ATTR: function(a, b, c) { + return function(d) { + var e = ga.attr(d, a); + return null == e ? "!=" === b : b ? (e += "", "=" === b ? e === c : "!=" === b ? e !== c : "^=" === b ? c && 0 === e.indexOf(c) : "*=" === b ? c && e.indexOf(c) > -1 : "$=" === b ? c && e.slice(-c.length) === c : "~=" === b ? (" " + e.replace(Q, " ") + " ").indexOf(c) > -1 : "|=" === b ? e === c || e.slice(0, c.length + 1) === c + "-" : !1) : !0 + } + }, + CHILD: function(a, b, c, d, e) { + var f = "nth" !== a.slice(0, 3), + g = "last" !== a.slice(-4), + h = "of-type" === b; + return 1 === d && 0 === e ? function(a) { + return !!a.parentNode + } : function(b, c, i) { + var j, k, l, m, n, o, p = f !== g ? "nextSibling" : "previousSibling", + q = b.parentNode, + r = h && b.nodeName.toLowerCase(), + s = !i && !h; + if (q) { + if (f) { + while (p) { + l = b; + while (l = l[p]) + if (h ? l.nodeName.toLowerCase() === r : 1 === l.nodeType) return !1; + o = p = "only" === a && !o && "nextSibling" + } + return !0 + } + if (o = [g ? q.firstChild : q.lastChild], g && s) { + k = q[u] || (q[u] = {}), j = k[a] || [], n = j[0] === w && j[1], m = j[0] === w && j[2], l = n && q.childNodes[n]; + while (l = ++n && l && l[p] || (m = n = 0) || o.pop()) + if (1 === l.nodeType && ++m && l === b) { + k[a] = [w, n, m]; + break + } + } else if (s && (j = (b[u] || (b[u] = {}))[a]) && j[0] === w) m = j[1]; + else + while (l = ++n && l && l[p] || (m = n = 0) || o.pop()) + if ((h ? l.nodeName.toLowerCase() === r : 1 === l.nodeType) && ++m && (s && ((l[u] || (l[u] = {}))[a] = [w, m]), l === b)) break; + return m -= e, m === d || m % d === 0 && m / d >= 0 + } + } + }, + PSEUDO: function(a, b) { + var c, e = d.pseudos[a] || d.setFilters[a.toLowerCase()] || ga.error("unsupported pseudo: " + a); + return e[u] ? e(b) : e.length > 1 ? (c = [a, a, "", b], d.setFilters.hasOwnProperty(a.toLowerCase()) ? ia(function(a, c) { + var d, f = e(a, b), + g = f.length; + while (g--) d = J(a, f[g]), a[d] = !(c[d] = f[g]) + }) : function(a) { + return e(a, 0, c) + }) : e + } + }, + pseudos: { + not: ia(function(a) { + var b = [], + c = [], + d = h(a.replace(R, "$1")); + return d[u] ? ia(function(a, b, c, e) { + var f, g = d(a, null, e, []), + h = a.length; + while (h--)(f = g[h]) && (a[h] = !(b[h] = f)) + }) : function(a, e, f) { + return b[0] = a, d(b, null, f, c), b[0] = null, !c.pop() + } + }), + has: ia(function(a) { + return function(b) { + return ga(a, b).length > 0 + } + }), + contains: ia(function(a) { + return a = a.replace(ca, da), + function(b) { + return (b.textContent || b.innerText || e(b)).indexOf(a) > -1 + } + }), + lang: ia(function(a) { + return W.test(a || "") || ga.error("unsupported lang: " + a), a = a.replace(ca, da).toLowerCase(), + function(b) { + var c; + do + if (c = p ? b.lang : b.getAttribute("xml:lang") || b.getAttribute("lang")) return c = c.toLowerCase(), c === a || 0 === c.indexOf(a + "-"); while ((b = b.parentNode) && 1 === b.nodeType); + return !1 + } + }), + target: function(b) { + var c = a.location && a.location.hash; + return c && c.slice(1) === b.id + }, + root: function(a) { + return a === o + }, + focus: function(a) { + return a === n.activeElement && (!n.hasFocus || n.hasFocus()) && !!(a.type || a.href || ~a.tabIndex) + }, + enabled: function(a) { + return a.disabled === !1 + }, + disabled: function(a) { + return a.disabled === !0 + }, + checked: function(a) { + var b = a.nodeName.toLowerCase(); + return "input" === b && !!a.checked || "option" === b && !!a.selected + }, + selected: function(a) { + return a.parentNode && a.parentNode.selectedIndex, a.selected === !0 + }, + empty: function(a) { + for (a = a.firstChild; a; a = a.nextSibling) + if (a.nodeType < 6) return !1; + return !0 + }, + parent: function(a) { + return !d.pseudos.empty(a) + }, + header: function(a) { + return Z.test(a.nodeName) + }, + input: function(a) { + return Y.test(a.nodeName) + }, + button: function(a) { + var b = a.nodeName.toLowerCase(); + return "input" === b && "button" === a.type || "button" === b + }, + text: function(a) { + var b; + return "input" === a.nodeName.toLowerCase() && "text" === a.type && (null == (b = a.getAttribute("type")) || "text" === b.toLowerCase()) + }, + first: oa(function() { + return [0] + }), + last: oa(function(a, b) { + return [b - 1] + }), + eq: oa(function(a, b, c) { + return [0 > c ? c + b : c] + }), + even: oa(function(a, b) { + for (var c = 0; b > c; c += 2) a.push(c); + return a + }), + odd: oa(function(a, b) { + for (var c = 1; b > c; c += 2) a.push(c); + return a + }), + lt: oa(function(a, b, c) { + for (var d = 0 > c ? c + b : c; --d >= 0;) a.push(d); + return a + }), + gt: oa(function(a, b, c) { + for (var d = 0 > c ? c + b : c; ++d < b;) a.push(d); + return a + }) + } + }, d.pseudos.nth = d.pseudos.eq; + for (b in { + radio: !0, + checkbox: !0, + file: !0, + password: !0, + image: !0 + }) d.pseudos[b] = ma(b); + for (b in { + submit: !0, + reset: !0 + }) d.pseudos[b] = na(b); + + function qa() {} + qa.prototype = d.filters = d.pseudos, d.setFilters = new qa, g = ga.tokenize = function(a, b) { + var c, e, f, g, h, i, j, k = z[a + " "]; + if (k) return b ? 0 : k.slice(0); + h = a, i = [], j = d.preFilter; + while (h) { + (!c || (e = S.exec(h))) && (e && (h = h.slice(e[0].length) || h), i.push(f = [])), c = !1, (e = T.exec(h)) && (c = e.shift(), f.push({ + value: c, + type: e[0].replace(R, " ") + }), h = h.slice(c.length)); + for (g in d.filter) !(e = X[g].exec(h)) || j[g] && !(e = j[g](e)) || (c = e.shift(), f.push({ + value: c, + type: g, + matches: e + }), h = h.slice(c.length)); + if (!c) break + } + return b ? h.length : h ? ga.error(a) : z(a, i).slice(0) + }; + + function ra(a) { + for (var b = 0, c = a.length, d = ""; c > b; b++) d += a[b].value; + return d + } + + function sa(a, b, c) { + var d = b.dir, + e = c && "parentNode" === d, + f = x++; + return b.first ? function(b, c, f) { + while (b = b[d]) + if (1 === b.nodeType || e) return a(b, c, f) + } : function(b, c, g) { + var h, i, j = [w, f]; + if (g) { + while (b = b[d]) + if ((1 === b.nodeType || e) && a(b, c, g)) return !0 + } else + while (b = b[d]) + if (1 === b.nodeType || e) { + if (i = b[u] || (b[u] = {}), (h = i[d]) && h[0] === w && h[1] === f) return j[2] = h[2]; + if (i[d] = j, j[2] = a(b, c, g)) return !0 + } + } + } + + function ta(a) { + return a.length > 1 ? function(b, c, d) { + var e = a.length; + while (e--) + if (!a[e](b, c, d)) return !1; + return !0 + } : a[0] + } + + function ua(a, b, c) { + for (var d = 0, e = b.length; e > d; d++) ga(a, b[d], c); + return c + } + + function va(a, b, c, d, e) { + for (var f, g = [], h = 0, i = a.length, j = null != b; i > h; h++)(f = a[h]) && (!c || c(f, d, e)) && (g.push(f), j && b.push(h)); + return g + } + + function wa(a, b, c, d, e, f) { + return d && !d[u] && (d = wa(d)), e && !e[u] && (e = wa(e, f)), ia(function(f, g, h, i) { + var j, k, l, m = [], + n = [], + o = g.length, + p = f || ua(b || "*", h.nodeType ? [h] : h, []), + q = !a || !f && b ? p : va(p, m, a, h, i), + r = c ? e || (f ? a : o || d) ? [] : g : q; + if (c && c(q, r, h, i), d) { + j = va(r, n), d(j, [], h, i), k = j.length; + while (k--)(l = j[k]) && (r[n[k]] = !(q[n[k]] = l)) + } + if (f) { + if (e || a) { + if (e) { + j = [], k = r.length; + while (k--)(l = r[k]) && j.push(q[k] = l); + e(null, r = [], j, i) + } + k = r.length; + while (k--)(l = r[k]) && (j = e ? J(f, l) : m[k]) > -1 && (f[j] = !(g[j] = l)) + } + } else r = va(r === g ? r.splice(o, r.length) : r), e ? e(null, g, r, i) : H.apply(g, r) + }) + } + + function xa(a) { + for (var b, c, e, f = a.length, g = d.relative[a[0].type], h = g || d.relative[" "], i = g ? 1 : 0, k = sa(function(a) { + return a === b + }, h, !0), l = sa(function(a) { + return J(b, a) > -1 + }, h, !0), m = [function(a, c, d) { + var e = !g && (d || c !== j) || ((b = c).nodeType ? k(a, c, d) : l(a, c, d)); + return b = null, e + }]; f > i; i++) + if (c = d.relative[a[i].type]) m = [sa(ta(m), c)]; + else { + if (c = d.filter[a[i].type].apply(null, a[i].matches), c[u]) { + for (e = ++i; f > e; e++) + if (d.relative[a[e].type]) break; + return wa(i > 1 && ta(m), i > 1 && ra(a.slice(0, i - 1).concat({ + value: " " === a[i - 2].type ? "*" : "" + })).replace(R, "$1"), c, e > i && xa(a.slice(i, e)), f > e && xa(a = a.slice(e)), f > e && ra(a)) + } + m.push(c) + } return ta(m) + } + + function ya(a, b) { + var c = b.length > 0, + e = a.length > 0, + f = function(f, g, h, i, k) { + var l, m, o, p = 0, + q = "0", + r = f && [], + s = [], + t = j, + u = f || e && d.find.TAG("*", k), + v = w += null == t ? 1 : Math.random() || .1, + x = u.length; + for (k && (j = g !== n && g); q !== x && null != (l = u[q]); q++) { + if (e && l) { + m = 0; + while (o = a[m++]) + if (o(l, g, h)) { + i.push(l); + break + } k && (w = v) + } + c && ((l = !o && l) && p--, f && r.push(l)) + } + if (p += q, c && q !== p) { + m = 0; + while (o = b[m++]) o(r, s, g, h); + if (f) { + if (p > 0) + while (q--) r[q] || s[q] || (s[q] = F.call(i)); + s = va(s) + } + H.apply(i, s), k && !f && s.length > 0 && p + b.length > 1 && ga.uniqueSort(i) + } + return k && (w = v, j = t), r + }; + return c ? ia(f) : f + } + return h = ga.compile = function(a, b) { + var c, d = [], + e = [], + f = A[a + " "]; + if (!f) { + b || (b = g(a)), c = b.length; + while (c--) f = xa(b[c]), f[u] ? d.push(f) : e.push(f); + f = A(a, ya(e, d)), f.selector = a + } + return f + }, i = ga.select = function(a, b, e, f) { + var i, j, k, l, m, n = "function" == typeof a && a, + o = !f && g(a = n.selector || a); + if (e = e || [], 1 === o.length) { + if (j = o[0] = o[0].slice(0), j.length > 2 && "ID" === (k = j[0]).type && c.getById && 9 === b.nodeType && p && d.relative[j[1].type]) { + if (b = (d.find.ID(k.matches[0].replace(ca, da), b) || [])[0], !b) return e; + n && (b = b.parentNode), a = a.slice(j.shift().value.length) + } + i = X.needsContext.test(a) ? 0 : j.length; + while (i--) { + if (k = j[i], d.relative[l = k.type]) break; + if ((m = d.find[l]) && (f = m(k.matches[0].replace(ca, da), aa.test(j[0].type) && pa(b.parentNode) || b))) { + if (j.splice(i, 1), a = f.length && ra(j), !a) return H.apply(e, f), e; + break + } + } + } + return (n || h(a, o))(f, b, !p, e, aa.test(a) && pa(b.parentNode) || b), e + }, c.sortStable = u.split("").sort(B).join("") === u, c.detectDuplicates = !!l, m(), c.sortDetached = ja(function(a) { + return 1 & a.compareDocumentPosition(n.createElement("div")) + }), ja(function(a) { + return a.innerHTML = "", "#" === a.firstChild.getAttribute("href") + }) || ka("type|href|height|width", function(a, b, c) { + return c ? void 0 : a.getAttribute(b, "type" === b.toLowerCase() ? 1 : 2) + }), c.attributes && ja(function(a) { + return a.innerHTML = "", a.firstChild.setAttribute("value", ""), "" === a.firstChild.getAttribute("value") + }) || ka("value", function(a, b, c) { + return c || "input" !== a.nodeName.toLowerCase() ? void 0 : a.defaultValue + }), ja(function(a) { + return null == a.getAttribute("disabled") + }) || ka(K, function(a, b, c) { + var d; + return c ? void 0 : a[b] === !0 ? b.toLowerCase() : (d = a.getAttributeNode(b)) && d.specified ? d.value : null + }), ga + }(a); + n.find = t, n.expr = t.selectors, n.expr[":"] = n.expr.pseudos, n.unique = t.uniqueSort, n.text = t.getText, n.isXMLDoc = t.isXML, n.contains = t.contains; + var u = n.expr.match.needsContext, + v = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, + w = /^.[^:#\[\.,]*$/; + + function x(a, b, c) { + if (n.isFunction(b)) return n.grep(a, function(a, d) { + return !!b.call(a, d, a) !== c + }); + if (b.nodeType) return n.grep(a, function(a) { + return a === b !== c + }); + if ("string" == typeof b) { + if (w.test(b)) return n.filter(b, a, c); + b = n.filter(b, a) + } + return n.grep(a, function(a) { + return g.call(b, a) >= 0 !== c + }) + } + n.filter = function(a, b, c) { + var d = b[0]; + return c && (a = ":not(" + a + ")"), 1 === b.length && 1 === d.nodeType ? n.find.matchesSelector(d, a) ? [d] : [] : n.find.matches(a, n.grep(b, function(a) { + return 1 === a.nodeType + })) + }, n.fn.extend({ + find: function(a) { + var b, c = this.length, + d = [], + e = this; + if ("string" != typeof a) return this.pushStack(n(a).filter(function() { + for (b = 0; c > b; b++) + if (n.contains(e[b], this)) return !0 + })); + for (b = 0; c > b; b++) n.find(a, e[b], d); + return d = this.pushStack(c > 1 ? n.unique(d) : d), d.selector = this.selector ? this.selector + " " + a : a, d + }, + filter: function(a) { + return this.pushStack(x(this, a || [], !1)) + }, + not: function(a) { + return this.pushStack(x(this, a || [], !0)) + }, + is: function(a) { + return !!x(this, "string" == typeof a && u.test(a) ? n(a) : a || [], !1).length + } + }); + var y, z = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + A = n.fn.init = function(a, b) { + var c, d; + if (!a) return this; + if ("string" == typeof a) { + if (c = "<" === a[0] && ">" === a[a.length - 1] && a.length >= 3 ? [null, a, null] : z.exec(a), !c || !c[1] && b) return !b || b.jquery ? (b || y).find(a) : this.constructor(b).find(a); + if (c[1]) { + if (b = b instanceof n ? b[0] : b, n.merge(this, n.parseHTML(c[1], b && b.nodeType ? b.ownerDocument || b : l, !0)), v.test(c[1]) && n.isPlainObject(b)) + for (c in b) n.isFunction(this[c]) ? this[c](b[c]) : this.attr(c, b[c]); + return this + } + return d = l.getElementById(c[2]), d && d.parentNode && (this.length = 1, this[0] = d), this.context = l, this.selector = a, this + } + return a.nodeType ? (this.context = this[0] = a, this.length = 1, this) : n.isFunction(a) ? "undefined" != typeof y.ready ? y.ready(a) : a(n) : (void 0 !== a.selector && (this.selector = a.selector, this.context = a.context), n.makeArray(a, this)) + }; + A.prototype = n.fn, y = n(l); + var B = /^(?:parents|prev(?:Until|All))/, + C = { + children: !0, + contents: !0, + next: !0, + prev: !0 + }; + n.extend({ + dir: function(a, b, c) { + var d = [], + e = void 0 !== c; + while ((a = a[b]) && 9 !== a.nodeType) + if (1 === a.nodeType) { + if (e && n(a).is(c)) break; + d.push(a) + } return d + }, + sibling: function(a, b) { + for (var c = []; a; a = a.nextSibling) 1 === a.nodeType && a !== b && c.push(a); + return c + } + }), n.fn.extend({ + has: function(a) { + var b = n(a, this), + c = b.length; + return this.filter(function() { + for (var a = 0; c > a; a++) + if (n.contains(this, b[a])) return !0 + }) + }, + closest: function(a, b) { + for (var c, d = 0, e = this.length, f = [], g = u.test(a) || "string" != typeof a ? n(a, b || this.context) : 0; e > d; d++) + for (c = this[d]; c && c !== b; c = c.parentNode) + if (c.nodeType < 11 && (g ? g.index(c) > -1 : 1 === c.nodeType && n.find.matchesSelector(c, a))) { + f.push(c); + break + } return this.pushStack(f.length > 1 ? n.unique(f) : f) + }, + index: function(a) { + return a ? "string" == typeof a ? g.call(n(a), this[0]) : g.call(this, a.jquery ? a[0] : a) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1 + }, + add: function(a, b) { + return this.pushStack(n.unique(n.merge(this.get(), n(a, b)))) + }, + addBack: function(a) { + return this.add(null == a ? this.prevObject : this.prevObject.filter(a)) + } + }); + + function D(a, b) { + while ((a = a[b]) && 1 !== a.nodeType); + return a + } + n.each({ + parent: function(a) { + var b = a.parentNode; + return b && 11 !== b.nodeType ? b : null + }, + parents: function(a) { + return n.dir(a, "parentNode") + }, + parentsUntil: function(a, b, c) { + return n.dir(a, "parentNode", c) + }, + next: function(a) { + return D(a, "nextSibling") + }, + prev: function(a) { + return D(a, "previousSibling") + }, + nextAll: function(a) { + return n.dir(a, "nextSibling") + }, + prevAll: function(a) { + return n.dir(a, "previousSibling") + }, + nextUntil: function(a, b, c) { + return n.dir(a, "nextSibling", c) + }, + prevUntil: function(a, b, c) { + return n.dir(a, "previousSibling", c) + }, + siblings: function(a) { + return n.sibling((a.parentNode || {}).firstChild, a) + }, + children: function(a) { + return n.sibling(a.firstChild) + }, + contents: function(a) { + return a.contentDocument || n.merge([], a.childNodes) + } + }, function(a, b) { + n.fn[a] = function(c, d) { + var e = n.map(this, b, c); + return "Until" !== a.slice(-5) && (d = c), d && "string" == typeof d && (e = n.filter(d, e)), this.length > 1 && (C[a] || n.unique(e), B.test(a) && e.reverse()), this.pushStack(e) + } + }); + var E = /\S+/g, + F = {}; + + function G(a) { + var b = F[a] = {}; + return n.each(a.match(E) || [], function(a, c) { + b[c] = !0 + }), b + } + n.Callbacks = function(a) { + a = "string" == typeof a ? F[a] || G(a) : n.extend({}, a); + var b, c, d, e, f, g, h = [], + i = !a.once && [], + j = function(l) { + for (b = a.memory && l, c = !0, g = e || 0, e = 0, f = h.length, d = !0; h && f > g; g++) + if (h[g].apply(l[0], l[1]) === !1 && a.stopOnFalse) { + b = !1; + break + } d = !1, h && (i ? i.length && j(i.shift()) : b ? h = [] : k.disable()) + }, + k = { + add: function() { + if (h) { + var c = h.length; + ! function g(b) { + n.each(b, function(b, c) { + var d = n.type(c); + "function" === d ? a.unique && k.has(c) || h.push(c) : c && c.length && "string" !== d && g(c) + }) + }(arguments), d ? f = h.length : b && (e = c, j(b)) + } + return this + }, + remove: function() { + return h && n.each(arguments, function(a, b) { + var c; + while ((c = n.inArray(b, h, c)) > -1) h.splice(c, 1), d && (f >= c && f--, g >= c && g--) + }), this + }, + has: function(a) { + return a ? n.inArray(a, h) > -1 : !(!h || !h.length) + }, + empty: function() { + return h = [], f = 0, this + }, + disable: function() { + return h = i = b = void 0, this + }, + disabled: function() { + return !h + }, + lock: function() { + return i = void 0, b || k.disable(), this + }, + locked: function() { + return !i + }, + fireWith: function(a, b) { + return !h || c && !i || (b = b || [], b = [a, b.slice ? b.slice() : b], d ? i.push(b) : j(b)), this + }, + fire: function() { + return k.fireWith(this, arguments), this + }, + fired: function() { + return !!c + } + }; + return k + }, n.extend({ + Deferred: function(a) { + var b = [ + ["resolve", "done", n.Callbacks("once memory"), "resolved"], + ["reject", "fail", n.Callbacks("once memory"), "rejected"], + ["notify", "progress", n.Callbacks("memory")] + ], + c = "pending", + d = { + state: function() { + return c + }, + always: function() { + return e.done(arguments).fail(arguments), this + }, + then: function() { + var a = arguments; + return n.Deferred(function(c) { + n.each(b, function(b, f) { + var g = n.isFunction(a[b]) && a[b]; + e[f[1]](function() { + var a = g && g.apply(this, arguments); + a && n.isFunction(a.promise) ? a.promise().done(c.resolve).fail(c.reject).progress(c.notify) : c[f[0] + "With"](this === d ? c.promise() : this, g ? [a] : arguments) + }) + }), a = null + }).promise() + }, + promise: function(a) { + return null != a ? n.extend(a, d) : d + } + }, + e = {}; + return d.pipe = d.then, n.each(b, function(a, f) { + var g = f[2], + h = f[3]; + d[f[1]] = g.add, h && g.add(function() { + c = h + }, b[1 ^ a][2].disable, b[2][2].lock), e[f[0]] = function() { + return e[f[0] + "With"](this === e ? d : this, arguments), this + }, e[f[0] + "With"] = g.fireWith + }), d.promise(e), a && a.call(e, e), e + }, + when: function(a) { + var b = 0, + c = d.call(arguments), + e = c.length, + f = 1 !== e || a && n.isFunction(a.promise) ? e : 0, + g = 1 === f ? a : n.Deferred(), + h = function(a, b, c) { + return function(e) { + b[a] = this, c[a] = arguments.length > 1 ? d.call(arguments) : e, c === i ? g.notifyWith(b, c) : --f || g.resolveWith(b, c) + } + }, + i, j, k; + if (e > 1) + for (i = new Array(e), j = new Array(e), k = new Array(e); e > b; b++) c[b] && n.isFunction(c[b].promise) ? c[b].promise().done(h(b, k, c)).fail(g.reject).progress(h(b, j, i)) : --f; + return f || g.resolveWith(k, c), g.promise() + } + }); + var H; + n.fn.ready = function(a) { + return n.ready.promise().done(a), this + }, n.extend({ + isReady: !1, + readyWait: 1, + holdReady: function(a) { + a ? n.readyWait++ : n.ready(!0) + }, + ready: function(a) { + (a === !0 ? --n.readyWait : n.isReady) || (n.isReady = !0, a !== !0 && --n.readyWait > 0 || (H.resolveWith(l, [n]), n.fn.triggerHandler && (n(l).triggerHandler("ready"), n(l).off("ready")))) + } + }); + + function I() { + l.removeEventListener("DOMContentLoaded", I, !1), a.removeEventListener("load", I, !1), n.ready() + } + n.ready.promise = function(b) { + return H || (H = n.Deferred(), "complete" === l.readyState ? setTimeout(n.ready) : (l.addEventListener("DOMContentLoaded", I, !1), a.addEventListener("load", I, !1))), H.promise(b) + }, n.ready.promise(); + var J = n.access = function(a, b, c, d, e, f, g) { + var h = 0, + i = a.length, + j = null == c; + if ("object" === n.type(c)) { + e = !0; + for (h in c) n.access(a, b, h, c[h], !0, f, g) + } else if (void 0 !== d && (e = !0, n.isFunction(d) || (g = !0), j && (g ? (b.call(a, d), b = null) : (j = b, b = function(a, b, c) { + return j.call(n(a), c) + })), b)) + for (; i > h; h++) b(a[h], c, g ? d : d.call(a[h], h, b(a[h], c))); + return e ? a : j ? b.call(a) : i ? b(a[0], c) : f + }; + n.acceptData = function(a) { + return 1 === a.nodeType || 9 === a.nodeType || !+a.nodeType + }; + + function K() { + Object.defineProperty(this.cache = {}, 0, { + get: function() { + return {} + } + }), this.expando = n.expando + K.uid++ + } + K.uid = 1, K.accepts = n.acceptData, K.prototype = { + key: function(a) { + if (!K.accepts(a)) return 0; + var b = {}, + c = a[this.expando]; + if (!c) { + c = K.uid++; + try { + b[this.expando] = { + value: c + }, Object.defineProperties(a, b) + } catch (d) { + b[this.expando] = c, n.extend(a, b) + } + } + return this.cache[c] || (this.cache[c] = {}), c + }, + set: function(a, b, c) { + var d, e = this.key(a), + f = this.cache[e]; + if ("string" == typeof b) f[b] = c; + else if (n.isEmptyObject(f)) n.extend(this.cache[e], b); + else + for (d in b) f[d] = b[d]; + return f + }, + get: function(a, b) { + var c = this.cache[this.key(a)]; + return void 0 === b ? c : c[b] + }, + access: function(a, b, c) { + var d; + return void 0 === b || b && "string" == typeof b && void 0 === c ? (d = this.get(a, b), void 0 !== d ? d : this.get(a, n.camelCase(b))) : (this.set(a, b, c), void 0 !== c ? c : b) + }, + remove: function(a, b) { + var c, d, e, f = this.key(a), + g = this.cache[f]; + if (void 0 === b) this.cache[f] = {}; + else { + n.isArray(b) ? d = b.concat(b.map(n.camelCase)) : (e = n.camelCase(b), b in g ? d = [b, e] : (d = e, d = d in g ? [d] : d.match(E) || [])), c = d.length; + while (c--) delete g[d[c]] + } + }, + hasData: function(a) { + return !n.isEmptyObject(this.cache[a[this.expando]] || {}) + }, + discard: function(a) { + a[this.expando] && delete this.cache[a[this.expando]] + } + }; + var L = new K, + M = new K, + N = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + O = /([A-Z])/g; + + function P(a, b, c) { + var d; + if (void 0 === c && 1 === a.nodeType) + if (d = "data-" + b.replace(O, "-$1").toLowerCase(), c = a.getAttribute(d), "string" == typeof c) { + try { + c = "true" === c ? !0 : "false" === c ? !1 : "null" === c ? null : +c + "" === c ? +c : N.test(c) ? n.parseJSON(c) : c + } catch (e) {} + M.set(a, b, c) + } else c = void 0; + return c + } + n.extend({ + hasData: function(a) { + return M.hasData(a) || L.hasData(a) + }, + data: function(a, b, c) { + return M.access(a, b, c) + }, + removeData: function(a, b) { + M.remove(a, b) + }, + _data: function(a, b, c) { + return L.access(a, b, c) + }, + _removeData: function(a, b) { + L.remove(a, b) + } + }), n.fn.extend({ + data: function(a, b) { + var c, d, e, f = this[0], + g = f && f.attributes; + if (void 0 === a) { + if (this.length && (e = M.get(f), 1 === f.nodeType && !L.get(f, "hasDataAttrs"))) { + c = g.length; + while (c--) g[c] && (d = g[c].name, 0 === d.indexOf("data-") && (d = n.camelCase(d.slice(5)), P(f, d, e[d]))); + L.set(f, "hasDataAttrs", !0) + } + return e + } + return "object" == typeof a ? this.each(function() { + M.set(this, a) + }) : J(this, function(b) { + var c, d = n.camelCase(a); + if (f && void 0 === b) { + if (c = M.get(f, a), void 0 !== c) return c; + if (c = M.get(f, d), void 0 !== c) return c; + if (c = P(f, d, void 0), void 0 !== c) return c + } else this.each(function() { + var c = M.get(this, d); + M.set(this, d, b), -1 !== a.indexOf("-") && void 0 !== c && M.set(this, a, b) + }) + }, null, b, arguments.length > 1, null, !0) + }, + removeData: function(a) { + return this.each(function() { + M.remove(this, a) + }) + } + }), n.extend({ + queue: function(a, b, c) { + var d; + return a ? (b = (b || "fx") + "queue", d = L.get(a, b), c && (!d || n.isArray(c) ? d = L.access(a, b, n.makeArray(c)) : d.push(c)), d || []) : void 0 + }, + dequeue: function(a, b) { + b = b || "fx"; + var c = n.queue(a, b), + d = c.length, + e = c.shift(), + f = n._queueHooks(a, b), + g = function() { + n.dequeue(a, b) + }; + "inprogress" === e && (e = c.shift(), d--), e && ("fx" === b && c.unshift("inprogress"), delete f.stop, e.call(a, g, f)), !d && f && f.empty.fire() + }, + _queueHooks: function(a, b) { + var c = b + "queueHooks"; + return L.get(a, c) || L.access(a, c, { + empty: n.Callbacks("once memory").add(function() { + L.remove(a, [b + "queue", c]) + }) + }) + } + }), n.fn.extend({ + queue: function(a, b) { + var c = 2; + return "string" != typeof a && (b = a, a = "fx", c--), arguments.length < c ? n.queue(this[0], a) : void 0 === b ? this : this.each(function() { + var c = n.queue(this, a, b); + n._queueHooks(this, a), "fx" === a && "inprogress" !== c[0] && n.dequeue(this, a) + }) + }, + dequeue: function(a) { + return this.each(function() { + n.dequeue(this, a) + }) + }, + clearQueue: function(a) { + return this.queue(a || "fx", []) + }, + promise: function(a, b) { + var c, d = 1, + e = n.Deferred(), + f = this, + g = this.length, + h = function() { + --d || e.resolveWith(f, [f]) + }; + "string" != typeof a && (b = a, a = void 0), a = a || "fx"; + while (g--) c = L.get(f[g], a + "queueHooks"), c && c.empty && (d++, c.empty.add(h)); + return h(), e.promise(b) + } + }); + var Q = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + R = ["Top", "Right", "Bottom", "Left"], + S = function(a, b) { + return a = b || a, "none" === n.css(a, "display") || !n.contains(a.ownerDocument, a) + }, + T = /^(?:checkbox|radio)$/i; + ! function() { + var a = l.createDocumentFragment(), + b = a.appendChild(l.createElement("div")), + c = l.createElement("input"); + c.setAttribute("type", "radio"), c.setAttribute("checked", "checked"), c.setAttribute("name", "t"), b.appendChild(c), k.checkClone = b.cloneNode(!0).cloneNode(!0).lastChild.checked, b.innerHTML = "", k.noCloneChecked = !!b.cloneNode(!0).lastChild.defaultValue + }(); + var U = "undefined"; + k.focusinBubbles = "onfocusin" in a; + var V = /^key/, + W = /^(?:mouse|pointer|contextmenu)|click/, + X = /^(?:focusinfocus|focusoutblur)$/, + Y = /^([^.]*)(?:\.(.+)|)$/; + + function Z() { + return !0 + } + + function $() { + return !1 + } + + function _() { + try { + return l.activeElement + } catch (a) {} + } + n.event = { + global: {}, + add: function(a, b, c, d, e) { + var f, g, h, i, j, k, l, m, o, p, q, r = L.get(a); + if (r) { + c.handler && (f = c, c = f.handler, e = f.selector), c.guid || (c.guid = n.guid++), (i = r.events) || (i = r.events = {}), (g = r.handle) || (g = r.handle = function(b) { + return typeof n !== U && n.event.triggered !== b.type ? n.event.dispatch.apply(a, arguments) : void 0 + }), b = (b || "").match(E) || [""], j = b.length; + while (j--) h = Y.exec(b[j]) || [], o = q = h[1], p = (h[2] || "").split(".").sort(), o && (l = n.event.special[o] || {}, o = (e ? l.delegateType : l.bindType) || o, l = n.event.special[o] || {}, k = n.extend({ + type: o, + origType: q, + data: d, + handler: c, + guid: c.guid, + selector: e, + needsContext: e && n.expr.match.needsContext.test(e), + namespace: p.join(".") + }, f), (m = i[o]) || (m = i[o] = [], m.delegateCount = 0, l.setup && l.setup.call(a, d, p, g) !== !1 || a.addEventListener && a.addEventListener(o, g, !1)), l.add && (l.add.call(a, k), k.handler.guid || (k.handler.guid = c.guid)), e ? m.splice(m.delegateCount++, 0, k) : m.push(k), n.event.global[o] = !0) + } + }, + remove: function(a, b, c, d, e) { + var f, g, h, i, j, k, l, m, o, p, q, r = L.hasData(a) && L.get(a); + if (r && (i = r.events)) { + b = (b || "").match(E) || [""], j = b.length; + while (j--) + if (h = Y.exec(b[j]) || [], o = q = h[1], p = (h[2] || "").split(".").sort(), o) { + l = n.event.special[o] || {}, o = (d ? l.delegateType : l.bindType) || o, m = i[o] || [], h = h[2] && new RegExp("(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)"), g = f = m.length; + while (f--) k = m[f], !e && q !== k.origType || c && c.guid !== k.guid || h && !h.test(k.namespace) || d && d !== k.selector && ("**" !== d || !k.selector) || (m.splice(f, 1), k.selector && m.delegateCount--, l.remove && l.remove.call(a, k)); + g && !m.length && (l.teardown && l.teardown.call(a, p, r.handle) !== !1 || n.removeEvent(a, o, r.handle), delete i[o]) + } else + for (o in i) n.event.remove(a, o + b[j], c, d, !0); + n.isEmptyObject(i) && (delete r.handle, L.remove(a, "events")) + } + }, + trigger: function(b, c, d, e) { + var f, g, h, i, k, m, o, p = [d || l], + q = j.call(b, "type") ? b.type : b, + r = j.call(b, "namespace") ? b.namespace.split(".") : []; + if (g = h = d = d || l, 3 !== d.nodeType && 8 !== d.nodeType && !X.test(q + n.event.triggered) && (q.indexOf(".") >= 0 && (r = q.split("."), q = r.shift(), r.sort()), k = q.indexOf(":") < 0 && "on" + q, b = b[n.expando] ? b : new n.Event(q, "object" == typeof b && b), b.isTrigger = e ? 2 : 3, b.namespace = r.join("."), b.namespace_re = b.namespace ? new RegExp("(^|\\.)" + r.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, b.result = void 0, b.target || (b.target = d), c = null == c ? [b] : n.makeArray(c, [b]), o = n.event.special[q] || {}, e || !o.trigger || o.trigger.apply(d, c) !== !1)) { + if (!e && !o.noBubble && !n.isWindow(d)) { + for (i = o.delegateType || q, X.test(i + q) || (g = g.parentNode); g; g = g.parentNode) p.push(g), h = g; + h === (d.ownerDocument || l) && p.push(h.defaultView || h.parentWindow || a) + } + f = 0; + while ((g = p[f++]) && !b.isPropagationStopped()) b.type = f > 1 ? i : o.bindType || q, m = (L.get(g, "events") || {})[b.type] && L.get(g, "handle"), m && m.apply(g, c), m = k && g[k], m && m.apply && n.acceptData(g) && (b.result = m.apply(g, c), b.result === !1 && b.preventDefault()); + return b.type = q, e || b.isDefaultPrevented() || o._default && o._default.apply(p.pop(), c) !== !1 || !n.acceptData(d) || k && n.isFunction(d[q]) && !n.isWindow(d) && (h = d[k], h && (d[k] = null), n.event.triggered = q, d[q](), n.event.triggered = void 0, h && (d[k] = h)), b.result + } + }, + dispatch: function(a) { + a = n.event.fix(a); + var b, c, e, f, g, h = [], + i = d.call(arguments), + j = (L.get(this, "events") || {})[a.type] || [], + k = n.event.special[a.type] || {}; + if (i[0] = a, a.delegateTarget = this, !k.preDispatch || k.preDispatch.call(this, a) !== !1) { + h = n.event.handlers.call(this, a, j), b = 0; + while ((f = h[b++]) && !a.isPropagationStopped()) { + a.currentTarget = f.elem, c = 0; + while ((g = f.handlers[c++]) && !a.isImmediatePropagationStopped())(!a.namespace_re || a.namespace_re.test(g.namespace)) && (a.handleObj = g, a.data = g.data, e = ((n.event.special[g.origType] || {}).handle || g.handler).apply(f.elem, i), void 0 !== e && (a.result = e) === !1 && (a.preventDefault(), a.stopPropagation())) + } + return k.postDispatch && k.postDispatch.call(this, a), a.result + } + }, + handlers: function(a, b) { + var c, d, e, f, g = [], + h = b.delegateCount, + i = a.target; + if (h && i.nodeType && (!a.button || "click" !== a.type)) + for (; i !== this; i = i.parentNode || this) + if (i.disabled !== !0 || "click" !== a.type) { + for (d = [], c = 0; h > c; c++) f = b[c], e = f.selector + " ", void 0 === d[e] && (d[e] = f.needsContext ? n(e, this).index(i) >= 0 : n.find(e, this, null, [i]).length), d[e] && d.push(f); + d.length && g.push({ + elem: i, + handlers: d + }) + } return h < b.length && g.push({ + elem: this, + handlers: b.slice(h) + }), g + }, + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + fixHooks: {}, + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function(a, b) { + return null == a.which && (a.which = null != b.charCode ? b.charCode : b.keyCode), a + } + }, + mouseHooks: { + props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function(a, b) { + var c, d, e, f = b.button; + return null == a.pageX && null != b.clientX && (c = a.target.ownerDocument || l, d = c.documentElement, e = c.body, a.pageX = b.clientX + (d && d.scrollLeft || e && e.scrollLeft || 0) - (d && d.clientLeft || e && e.clientLeft || 0), a.pageY = b.clientY + (d && d.scrollTop || e && e.scrollTop || 0) - (d && d.clientTop || e && e.clientTop || 0)), a.which || void 0 === f || (a.which = 1 & f ? 1 : 2 & f ? 3 : 4 & f ? 2 : 0), a + } + }, + fix: function(a) { + if (a[n.expando]) return a; + var b, c, d, e = a.type, + f = a, + g = this.fixHooks[e]; + g || (this.fixHooks[e] = g = W.test(e) ? this.mouseHooks : V.test(e) ? this.keyHooks : {}), d = g.props ? this.props.concat(g.props) : this.props, a = new n.Event(f), b = d.length; + while (b--) c = d[b], a[c] = f[c]; + return a.target || (a.target = l), 3 === a.target.nodeType && (a.target = a.target.parentNode), g.filter ? g.filter(a, f) : a + }, + special: { + load: { + noBubble: !0 + }, + focus: { + trigger: function() { + return this !== _() && this.focus ? (this.focus(), !1) : void 0 + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + return this === _() && this.blur ? (this.blur(), !1) : void 0 + }, + delegateType: "focusout" + }, + click: { + trigger: function() { + return "checkbox" === this.type && this.click && n.nodeName(this, "input") ? (this.click(), !1) : void 0 + }, + _default: function(a) { + return n.nodeName(a.target, "a") + } + }, + beforeunload: { + postDispatch: function(a) { + void 0 !== a.result && a.originalEvent && (a.originalEvent.returnValue = a.result) + } + } + }, + simulate: function(a, b, c, d) { + var e = n.extend(new n.Event, c, { + type: a, + isSimulated: !0, + originalEvent: {} + }); + d ? n.event.trigger(e, null, b) : n.event.dispatch.call(b, e), e.isDefaultPrevented() && c.preventDefault() + } + }, n.removeEvent = function(a, b, c) { + a.removeEventListener && a.removeEventListener(b, c, !1) + }, n.Event = function(a, b) { + return this instanceof n.Event ? (a && a.type ? (this.originalEvent = a, this.type = a.type, this.isDefaultPrevented = a.defaultPrevented || void 0 === a.defaultPrevented && a.returnValue === !1 ? Z : $) : this.type = a, b && n.extend(this, b), this.timeStamp = a && a.timeStamp || n.now(), void(this[n.expando] = !0)) : new n.Event(a, b) + }, n.Event.prototype = { + isDefaultPrevented: $, + isPropagationStopped: $, + isImmediatePropagationStopped: $, + preventDefault: function() { + var a = this.originalEvent; + this.isDefaultPrevented = Z, a && a.preventDefault && a.preventDefault() + }, + stopPropagation: function() { + var a = this.originalEvent; + this.isPropagationStopped = Z, a && a.stopPropagation && a.stopPropagation() + }, + stopImmediatePropagation: function() { + var a = this.originalEvent; + this.isImmediatePropagationStopped = Z, a && a.stopImmediatePropagation && a.stopImmediatePropagation(), this.stopPropagation() + } + }, n.each({ + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" + }, function(a, b) { + n.event.special[a] = { + delegateType: b, + bindType: b, + handle: function(a) { + var c, d = this, + e = a.relatedTarget, + f = a.handleObj; + return (!e || e !== d && !n.contains(d, e)) && (a.type = f.origType, c = f.handler.apply(this, arguments), a.type = b), c + } + } + }), k.focusinBubbles || n.each({ + focus: "focusin", + blur: "focusout" + }, function(a, b) { + var c = function(a) { + n.event.simulate(b, a.target, n.event.fix(a), !0) + }; + n.event.special[b] = { + setup: function() { + var d = this.ownerDocument || this, + e = L.access(d, b); + e || d.addEventListener(a, c, !0), L.access(d, b, (e || 0) + 1) + }, + teardown: function() { + var d = this.ownerDocument || this, + e = L.access(d, b) - 1; + e ? L.access(d, b, e) : (d.removeEventListener(a, c, !0), L.remove(d, b)) + } + } + }), n.fn.extend({ + on: function(a, b, c, d, e) { + var f, g; + if ("object" == typeof a) { + "string" != typeof b && (c = c || b, b = void 0); + for (g in a) this.on(g, b, c, a[g], e); + return this + } + if (null == c && null == d ? (d = b, c = b = void 0) : null == d && ("string" == typeof b ? (d = c, c = void 0) : (d = c, c = b, b = void 0)), d === !1) d = $; + else if (!d) return this; + return 1 === e && (f = d, d = function(a) { + return n().off(a), f.apply(this, arguments) + }, d.guid = f.guid || (f.guid = n.guid++)), this.each(function() { + n.event.add(this, a, d, c, b) + }) + }, + one: function(a, b, c, d) { + return this.on(a, b, c, d, 1) + }, + off: function(a, b, c) { + var d, e; + if (a && a.preventDefault && a.handleObj) return d = a.handleObj, n(a.delegateTarget).off(d.namespace ? d.origType + "." + d.namespace : d.origType, d.selector, d.handler), this; + if ("object" == typeof a) { + for (e in a) this.off(e, b, a[e]); + return this + } + return (b === !1 || "function" == typeof b) && (c = b, b = void 0), c === !1 && (c = $), this.each(function() { + n.event.remove(this, a, c, b) + }) + }, + trigger: function(a, b) { + return this.each(function() { + n.event.trigger(a, b, this) + }) + }, + triggerHandler: function(a, b) { + var c = this[0]; + return c ? n.event.trigger(a, b, c, !0) : void 0 + } + }); + var aa = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + ba = /<([\w:]+)/, + ca = /<|&#?\w+;/, + da = /<(?:script|style|link)/i, + ea = /checked\s*(?:[^=]|=\s*.checked.)/i, + fa = /^$|\/(?:java|ecma)script/i, + ga = /^true\/(.*)/, + ha = /^\s*\s*$/g, + ia = { + option: [1, ""], + thead: [1, "", "
"], + col: [2, "", "
"], + tr: [2, "", "
"], + td: [3, "", "
"], + _default: [0, "", ""] + }; + ia.optgroup = ia.option, ia.tbody = ia.tfoot = ia.colgroup = ia.caption = ia.thead, ia.th = ia.td; + + function ja(a, b) { + return n.nodeName(a, "table") && n.nodeName(11 !== b.nodeType ? b : b.firstChild, "tr") ? a.getElementsByTagName("tbody")[0] || a.appendChild(a.ownerDocument.createElement("tbody")) : a + } + + function ka(a) { + return a.type = (null !== a.getAttribute("type")) + "/" + a.type, a + } + + function la(a) { + var b = ga.exec(a.type); + return b ? a.type = b[1] : a.removeAttribute("type"), a + } + + function ma(a, b) { + for (var c = 0, d = a.length; d > c; c++) L.set(a[c], "globalEval", !b || L.get(b[c], "globalEval")) + } + + function na(a, b) { + var c, d, e, f, g, h, i, j; + if (1 === b.nodeType) { + if (L.hasData(a) && (f = L.access(a), g = L.set(b, f), j = f.events)) { + delete g.handle, g.events = {}; + for (e in j) + for (c = 0, d = j[e].length; d > c; c++) n.event.add(b, e, j[e][c]) + } + M.hasData(a) && (h = M.access(a), i = n.extend({}, h), M.set(b, i)) + } + } + + function oa(a, b) { + var c = a.getElementsByTagName ? a.getElementsByTagName(b || "*") : a.querySelectorAll ? a.querySelectorAll(b || "*") : []; + return void 0 === b || b && n.nodeName(a, b) ? n.merge([a], c) : c + } + + function pa(a, b) { + var c = b.nodeName.toLowerCase(); + "input" === c && T.test(a.type) ? b.checked = a.checked : ("input" === c || "textarea" === c) && (b.defaultValue = a.defaultValue) + } + n.extend({ + clone: function(a, b, c) { + var d, e, f, g, h = a.cloneNode(!0), + i = n.contains(a.ownerDocument, a); + if (!(k.noCloneChecked || 1 !== a.nodeType && 11 !== a.nodeType || n.isXMLDoc(a))) + for (g = oa(h), f = oa(a), d = 0, e = f.length; e > d; d++) pa(f[d], g[d]); + if (b) + if (c) + for (f = f || oa(a), g = g || oa(h), d = 0, e = f.length; e > d; d++) na(f[d], g[d]); + else na(a, h); + return g = oa(h, "script"), g.length > 0 && ma(g, !i && oa(a, "script")), h + }, + buildFragment: function(a, b, c, d) { + for (var e, f, g, h, i, j, k = b.createDocumentFragment(), l = [], m = 0, o = a.length; o > m; m++) + if (e = a[m], e || 0 === e) + if ("object" === n.type(e)) n.merge(l, e.nodeType ? [e] : e); + else if (ca.test(e)) { + f = f || k.appendChild(b.createElement("div")), g = (ba.exec(e) || ["", ""])[1].toLowerCase(), h = ia[g] || ia._default, f.innerHTML = h[1] + e.replace(aa, "<$1>") + h[2], j = h[0]; + while (j--) f = f.lastChild; + n.merge(l, f.childNodes), f = k.firstChild, f.textContent = "" + } else l.push(b.createTextNode(e)); + k.textContent = "", m = 0; + while (e = l[m++]) + if ((!d || -1 === n.inArray(e, d)) && (i = n.contains(e.ownerDocument, e), f = oa(k.appendChild(e), "script"), i && ma(f), c)) { + j = 0; + while (e = f[j++]) fa.test(e.type || "") && c.push(e) + } return k + }, + cleanData: function(a) { + for (var b, c, d, e, f = n.event.special, g = 0; void 0 !== (c = a[g]); g++) { + if (n.acceptData(c) && (e = c[L.expando], e && (b = L.cache[e]))) { + if (b.events) + for (d in b.events) f[d] ? n.event.remove(c, d) : n.removeEvent(c, d, b.handle); + L.cache[e] && delete L.cache[e] + } + delete M.cache[c[M.expando]] + } + } + }), n.fn.extend({ + text: function(a) { + return J(this, function(a) { + return void 0 === a ? n.text(this) : this.empty().each(function() { + (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) && (this.textContent = a) + }) + }, null, a, arguments.length) + }, + append: function() { + return this.domManip(arguments, function(a) { + if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) { + var b = ja(this, a); + b.appendChild(a) + } + }) + }, + prepend: function() { + return this.domManip(arguments, function(a) { + if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) { + var b = ja(this, a); + b.insertBefore(a, b.firstChild) + } + }) + }, + before: function() { + return this.domManip(arguments, function(a) { + this.parentNode && this.parentNode.insertBefore(a, this) + }) + }, + after: function() { + return this.domManip(arguments, function(a) { + this.parentNode && this.parentNode.insertBefore(a, this.nextSibling) + }) + }, + remove: function(a, b) { + for (var c, d = a ? n.filter(a, this) : this, e = 0; null != (c = d[e]); e++) b || 1 !== c.nodeType || n.cleanData(oa(c)), c.parentNode && (b && n.contains(c.ownerDocument, c) && ma(oa(c, "script")), c.parentNode.removeChild(c)); + return this + }, + empty: function() { + for (var a, b = 0; null != (a = this[b]); b++) 1 === a.nodeType && (n.cleanData(oa(a, !1)), a.textContent = ""); + return this + }, + clone: function(a, b) { + return a = null == a ? !1 : a, b = null == b ? a : b, this.map(function() { + return n.clone(this, a, b) + }) + }, + html: function(a) { + return J(this, function(a) { + var b = this[0] || {}, + c = 0, + d = this.length; + if (void 0 === a && 1 === b.nodeType) return b.innerHTML; + if ("string" == typeof a && !da.test(a) && !ia[(ba.exec(a) || ["", ""])[1].toLowerCase()]) { + a = a.replace(aa, "<$1>"); + try { + for (; d > c; c++) b = this[c] || {}, 1 === b.nodeType && (n.cleanData(oa(b, !1)), b.innerHTML = a); + b = 0 + } catch (e) {} + } + b && this.empty().append(a) + }, null, a, arguments.length) + }, + replaceWith: function() { + var a = arguments[0]; + return this.domManip(arguments, function(b) { + a = this.parentNode, n.cleanData(oa(this)), a && a.replaceChild(b, this) + }), a && (a.length || a.nodeType) ? this : this.remove() + }, + detach: function(a) { + return this.remove(a, !0) + }, + domManip: function(a, b) { + a = e.apply([], a); + var c, d, f, g, h, i, j = 0, + l = this.length, + m = this, + o = l - 1, + p = a[0], + q = n.isFunction(p); + if (q || l > 1 && "string" == typeof p && !k.checkClone && ea.test(p)) return this.each(function(c) { + var d = m.eq(c); + q && (a[0] = p.call(this, c, d.html())), d.domManip(a, b) + }); + if (l && (c = n.buildFragment(a, this[0].ownerDocument, !1, this), d = c.firstChild, 1 === c.childNodes.length && (c = d), d)) { + for (f = n.map(oa(c, "script"), ka), g = f.length; l > j; j++) h = c, j !== o && (h = n.clone(h, !0, !0), g && n.merge(f, oa(h, "script"))), b.call(this[j], h, j); + if (g) + for (i = f[f.length - 1].ownerDocument, n.map(f, la), j = 0; g > j; j++) h = f[j], fa.test(h.type || "") && !L.access(h, "globalEval") && n.contains(i, h) && (h.src ? n._evalUrl && n._evalUrl(h.src) : n.globalEval(h.textContent.replace(ha, ""))) + } + return this + } + }), n.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" + }, function(a, b) { + n.fn[a] = function(a) { + for (var c, d = [], e = n(a), g = e.length - 1, h = 0; g >= h; h++) c = h === g ? this : this.clone(!0), n(e[h])[b](c), f.apply(d, c.get()); + return this.pushStack(d) + } + }); + var qa, ra = {}; + + function sa(b, c) { + var d, e = n(c.createElement(b)).appendTo(c.body), + f = a.getDefaultComputedStyle && (d = a.getDefaultComputedStyle(e[0])) ? d.display : n.css(e[0], "display"); + return e.detach(), f + } + + function ta(a) { + var b = l, + c = ra[a]; + return c || (c = sa(a, b), "none" !== c && c || (qa = (qa || n("