From 6d87c983155000dc54ca9b0ed750f4217e2a4cf1 Mon Sep 17 00:00:00 2001 From: "2689725568@qq.com" Date: Mon, 12 Aug 2019 23:10:41 +0800 Subject: [PATCH 01/14] =?UTF-8?q?feat:=E5=AE=8C=E5=96=84=E4=BA=86=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/consume/consume.js | 31 +++++++++++++++++++++++++++---- pages/consume/consume.wxml | 14 ++++++++++++-- pages/consume/consume.wxss | 11 ++++++----- pages/index/index.js | 30 +++++++++++++++++++++++++++--- pages/index/index.wxml | 4 ++-- pages/me/me.js | 5 +++-- pages/me/me.wxml | 4 ++-- utils/toast.js | 14 ++++++++++++++ 8 files changed, 93 insertions(+), 20 deletions(-) create mode 100644 utils/toast.js diff --git a/pages/consume/consume.js b/pages/consume/consume.js index 21e1938..ff23796 100644 --- a/pages/consume/consume.js +++ b/pages/consume/consume.js @@ -1,5 +1,6 @@ // pages/consume/consume.js const API = require('../../utils/api.js'); +const TOAST = require('../../utils/toast.js'); Page({ /** @@ -18,6 +19,10 @@ Page({ consumeTypeList: [], //服务器图片地址 imageHost: API.api.imageHost, + //点击的保存id + consumeTypeId: 1, + //要显示的图标信息 + consumeType: {}, }, /** @@ -109,7 +114,6 @@ Page({ }) }, saveBookkeeping: function() { - // TODO 先写死 let money = 0; if(this.data.addorDel = '+') { money = Number(this.data.toatlMoney) + Number(this.data.money); @@ -118,11 +122,15 @@ Page({ } else { money = Number(this.data.toatlMoney) } + if (money == 0) { + TOAST.showToastSuccess('金额不能为0') + return + } // 进行金额转换 money = money * 100; let requestObj = {}; requestObj.userId = wx.getStorageSync('userId'); - requestObj.consumeTypeId = 1; + requestObj.consumeTypeId = this.data.consumeTypeId; requestObj.money = money; wx.request({ url: API.api.bookkeepings, @@ -156,7 +164,8 @@ Page({ }, success:function(response) { that.setData({ - consumeTypeList: response.data.data + consumeTypeList: response.data.data, + consumeType:response.data.data[0] }) } }) @@ -167,7 +176,21 @@ Page({ onReady: function() { }, - + btnIcon: function (event) { + let that = this + console.log('你是不是点击了icon' + JSON.stringify(event.currentTarget.dataset.type)) + this.data.consumeTypeList.forEach(item => { + if(item.id == event.currentTarget.dataset.type) { + // 进行保存数据信息 + console.log('匹配到了。。。。。。' + item.id) + that.setData ({ + consumeType:item, + consumeTypeId: event.currentTarget.dataset.type + }) + return; + } + }) + }, /** * 生命周期函数--监听页面显示 */ diff --git a/pages/consume/consume.wxml b/pages/consume/consume.wxml index 4354ffc..1c5f0f2 100644 --- a/pages/consume/consume.wxml +++ b/pages/consume/consume.wxml @@ -1,14 +1,24 @@ - + + + + + + + {{consumeType.name}} + {{toatlMoney}} {{addorDel}} {{money}} + {{money}} + - + diff --git a/pages/consume/consume.wxss b/pages/consume/consume.wxss index bba085b..ac93e96 100644 --- a/pages/consume/consume.wxss +++ b/pages/consume/consume.wxss @@ -2,6 +2,7 @@ page { background-color: #eee } + .consume-type { display: flex; flex-direction: row; @@ -9,9 +10,9 @@ page { margin-top: 35rpx; } .consume-type .consume-icon { - width: 15%; - padding: 30rpx 20rpx; - margin-top: 10rpx; + width: 16%; + padding: 20rpx 15rpx; + margin-top: 5rpx; } .consume-icon image { width: 100%; @@ -42,7 +43,7 @@ page { /*使子项目垂直居中*/ align-items: center; } -.bg_red { +/* .bg_red { background-color: red; } .bg_green { @@ -50,4 +51,4 @@ page { } .bg_blue { background-color: blue; -} \ No newline at end of file +} */ \ No newline at end of file diff --git a/pages/index/index.js b/pages/index/index.js index 86f4f08..faadb8d 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -1,5 +1,6 @@ // pages/list/list.js const API = require('../../utils/api.js'); +const TOTAS = require('../../utils/toast.js'); Page({ /** @@ -11,6 +12,7 @@ Page({ imageHost: API.api.imageHost, // 图片服务器域名 bookkeepingList:[], assetsDetail:{}, + totalElements: 0, }, /** @@ -34,6 +36,8 @@ Page({ // 初始化数据信息 this.setData({ bookkeepingList: [], + pageNumber: 0, + totalElements: 0 }) // 获取用户记账信息 this.getBookkeeping(); @@ -63,6 +67,10 @@ Page({ }) }, getBookkeeping:function() { + if ((this.data.pageNumber * this.data.pageSize) > this.data.totalElements) { + TOTAS.showToastSuccess("已经加载到底了....") + return + } let that = this; let userId = wx.getStorageSync('userId'); let pageNumber = this.data.pageNumber; @@ -75,9 +83,24 @@ Page({ 'Authorization': wx.getStorageSync('token') }, success:function(response) { - console.log(response.data.data.content) + if (response.data.data.content.length == 0) { + TOTAS.showToastSuccess("已经加载到底了....") + return + } + let bookkeepingList = []; + if (that.data.bookkeepingList.length == 0) { + // 直接赋值 + bookkeepingList = response.data.data.content; + } else { + bookkeepingList = that.data.bookkeepingList; + response.data.data.content.forEach(item => { + bookkeepingList.push(item) + }) + } that.setData({ - bookkeepingList: response.data.data.content + bookkeepingList: bookkeepingList, + pageNumber: pageNumber + 1, + totalElements: response.data.data.totalElements }) } }) @@ -108,7 +131,8 @@ Page({ * 页面上拉触底事件的处理函数 */ onReachBottom: function () { - + // 触发到底部。进行加载数据信息 + this.getBookkeeping(); }, /** diff --git a/pages/index/index.wxml b/pages/index/index.wxml index a99bca5..75ebcca 100644 --- a/pages/index/index.wxml +++ b/pages/index/index.wxml @@ -2,8 +2,8 @@ 利润:{{assetsDetail.monthTotalMoney}}元 - 本月收入:{{assetsDetail.monthTotalExpenditure}}元 - 本月支出:{{assetsDetail.monthTotalIncome}}元 + 本月收入:{{assetsDetail.monthTotalIncome}}元 + 本月支出:{{assetsDetail.monthTotalExpenditure}}元 diff --git a/pages/me/me.js b/pages/me/me.js index e36ab1c..f3d6795 100644 --- a/pages/me/me.js +++ b/pages/me/me.js @@ -5,7 +5,8 @@ Page({ * 页面的初始数据 */ data: { - userInfo:[] + avatarUrl: wx.getStorageSync('avatarUrl'), + nickName: wx.getStorageSync('nickName'), }, /** @@ -26,7 +27,7 @@ Page({ * 生命周期函数--监听页面显示 */ onShow: function () { - this.getUserInfo(); + }, getUserInfo: function() { let that = this diff --git a/pages/me/me.wxml b/pages/me/me.wxml index 61a9f07..2727a13 100644 --- a/pages/me/me.wxml +++ b/pages/me/me.wxml @@ -1,8 +1,8 @@ - - {{userInfo.nickName}} + + {{nickName}} diff --git a/utils/toast.js b/utils/toast.js new file mode 100644 index 0000000..44809b1 --- /dev/null +++ b/utils/toast.js @@ -0,0 +1,14 @@ +function showToastSuccess(title) { + wx.showToast({ + title: title, + image: '/image/icon/zhaodaifeiyusuan.png', + duration: 800, + mask:true + }) +}; + + + +module.exports = { + showToastSuccess: showToastSuccess, +} \ No newline at end of file -- Gitee From 857656990fa99b88fe2f6204dc3d7cc828692efc Mon Sep 17 00:00:00 2001 From: "2689725568@qq.com" Date: Sat, 17 Aug 2019 14:12:22 +0800 Subject: [PATCH 02/14] =?UTF-8?q?feat:=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/consume/consume.wxml | 15 +++------ pages/consume/consume.wxss | 6 +++- pages/me/me.js | 67 +++++++++++++++++++++++++++++++++----- pages/me/me.wxml | 24 +++++++------- pages/me/me.wxss | 11 +++++++ 5 files changed, 92 insertions(+), 31 deletions(-) diff --git a/pages/consume/consume.wxml b/pages/consume/consume.wxml index 1c5f0f2..149d7a5 100644 --- a/pages/consume/consume.wxml +++ b/pages/consume/consume.wxml @@ -1,19 +1,14 @@ - - - {{consumeType.name}} - {{toatlMoney}} {{addorDel}} {{money}} - {{money}} + {{consumeType.name}} + + {{toatlMoney}} {{addorDel}} {{money}} 元 + {{money}} 元 + diff --git a/pages/consume/consume.wxss b/pages/consume/consume.wxss index ac93e96..eb2cea9 100644 --- a/pages/consume/consume.wxss +++ b/pages/consume/consume.wxss @@ -8,6 +8,7 @@ page { flex-direction: row; flex-wrap:wrap; margin-top: 35rpx; + position: relative; } .consume-type .consume-icon { width: 16%; @@ -18,7 +19,10 @@ page { width: 100%; height: 100%; } - +.consume-money { + position: absolute; + right: 10rpx; +} /* 计算器 */ diff --git a/pages/me/me.js b/pages/me/me.js index f3d6795..434ff58 100644 --- a/pages/me/me.js +++ b/pages/me/me.js @@ -1,4 +1,6 @@ // pages/me/me.js +const API = require('../../utils/api.js'); +const TOAST = require('../../utils/toast.js'); Page({ /** @@ -7,6 +9,10 @@ Page({ data: { avatarUrl: wx.getStorageSync('avatarUrl'), nickName: wx.getStorageSync('nickName'), + userInfo: {}, + tempUserInfo:{}, + // 显示用户修改信息 + isShow: false, }, /** @@ -27,20 +33,63 @@ Page({ * 生命周期函数--监听页面显示 */ onShow: function () { - + this.getUserInfo(); }, - getUserInfo: function() { + getUserInfo:function() { let that = this - wx.getUserInfo({ - withCredentials: true, - lang: '', - success: function(res) { + let userId = wx.getStorageSync('userId'); + wx.request({ + url: API.api.users + '/' + userId, + method:'GET', + header:{ + 'Authorization': wx.getStorageSync('token') + }, + success:function(response) { + console.log(response.data.data) + let userInfo = response.data.data; + userInfo.monthBudget = response.data.data.monthBudget / 100; that.setData({ - userInfo:res.userInfo + userInfo: userInfo, + isShow:false }) + } + }) + }, + modalConfirm:function() { + let that = this + console.log(this.data.tempUserInfo.monthBudget) + let userId = wx.getStorageSync('userId'); + wx.request({ + url: API.api.users + '/' + userId, + method: 'POST', + data: that.data.tempUserInfo, + header: { + 'Content-type': 'application/json', + 'Authorization': wx.getStorageSync('token') }, - fail: function(res) {}, - complete: function(res) {}, + success:function(response) { + console.log('更新成功!!!!'); + that.getUserInfo(); + } + }) + }, + modalCancel: function () { + this.setData({ + isShow:false + }) + }, + saveUsertell:function(e) { + console.log('触发了!!!!' + e.detail.value) + let userInfo = {}; + userInfo.monthBudget = e.detail.value * 100; + this.setData({ + tempUserInfo : userInfo + }) + }, + showModel:function() { + console.log('显示月预算') + this.setData({ + isShow: true }) }, /** diff --git a/pages/me/me.wxml b/pages/me/me.wxml index 2727a13..d5338d0 100644 --- a/pages/me/me.wxml +++ b/pages/me/me.wxml @@ -4,18 +4,20 @@ {{nickName}} - + + - 收支分类 - 0.00 + 月预算 + {{userInfo.monthBudget}} - - - 主题设置 - * - - - - + + + + + diff --git a/pages/me/me.wxss b/pages/me/me.wxss index 381df06..6b4bed8 100644 --- a/pages/me/me.wxss +++ b/pages/me/me.wxss @@ -68,4 +68,15 @@ button { background: rgb(226, 26, 60); line-height:64rpx; color: white +} + + +/* 模态框 */ +.tellinput { + /* border: 1px solid #efeff4; */ +} + +.tellsection input { + color: #000; + width: 100%; } \ No newline at end of file -- Gitee From 45a7198f21229805c582ef89be2dbb9661ab8e11 Mon Sep 17 00:00:00 2001 From: "2689725568@qq.com" Date: Sun, 25 Aug 2019 16:23:59 +0800 Subject: [PATCH 03/14] =?UTF-8?q?feat:=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/consume/consume.js | 242 +++++++++++++++++++------------------ pages/consume/consume.wxml | 11 +- pages/consume/consume.wxss | 29 ++++- pages/index/index.wxml | 2 +- pages/index/index.wxss | 3 +- pages/me/me.js | 7 ++ 6 files changed, 169 insertions(+), 125 deletions(-) diff --git a/pages/consume/consume.js b/pages/consume/consume.js index ff23796..1689e3c 100644 --- a/pages/consume/consume.js +++ b/pages/consume/consume.js @@ -30,21 +30,111 @@ Page({ */ onLoad: function(options) { }, + tabTap: function(event) { + console.log(event.currentTarget.dataset.type) + this.getConsumeType(event.currentTarget.dataset.type) + }, + getConsumeType: function(type) { + let that = this; + wx.request({ + url: API.api.consumeTypes + '/type?type=' + type, + method:'GET', + header:{ + 'Authorization': wx.getStorageSync('token') + }, + success:function(response) { + that.setData({ + consumeTypeList: response.data.data, + consumeType:response.data.data[0] + }) + } + }) + }, /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + + }, + btnIcon: function (event) { + let that = this + console.log('你是不是点击了icon' + JSON.stringify(event.currentTarget.dataset.type)) + this.data.consumeTypeList.forEach(item => { + if(item.id == event.currentTarget.dataset.type) { + // 进行保存数据信息 + console.log('匹配到了。。。。。。' + item.id) + that.setData ({ + consumeType:item, + consumeTypeId: event.currentTarget.dataset.type + }) + return; + } + }) + }, + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + // 格式化数据信息 + this.setData({ + toatlMoney: 0, + money: 0, + addorDel: '+', + isShow: false, + }) + // 获取消费类型数据,默认值为0 + this.getConsumeType(0); + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + + }, + /** * 添加数据 */ - addType: function(event) { + addType: function (event) { switch (event.currentTarget.dataset.type) { // 添加成功 case 'success': this.success(); break; } }, - addMunber: function(event) { + addMunber: function (event) { // 先判断是否有小数点 let message = String(this.data.money); - let index =message.lastIndexOf('.'); - if(index != -1) { - if(message.length - index > 2) { + let index = message.lastIndexOf('.'); + if (index != -1) { + if (message.length - index > 2) { return } } @@ -57,46 +147,46 @@ Page({ money: message }) }, - deleteNumber: function() { + deleteNumber: function () { let message = this.data.money; - if(message != 0 && message != '') { + if (message != 0 && message != '') { message = message.substring(0, message.length - 1) - } else{ + } else { message = '0' } this.setData({ - money:message + money: message }) }, - addOrDelete: function(event) { + addOrDelete: function (event) { // 判断总金额是否为0 - if(this.data.toatlMoney == 0) { + if (this.data.toatlMoney == 0) { this.setData({ toatlMoney: Number(this.data.money), - money:0, - isShow:true, + money: 0, + isShow: true, addorDel: event.currentTarget.dataset.type, }) - return + return } let toatlMoney = Number(this.data.toatlMoney); let money = Number(this.data.money); - switch(this.data.addorDel) { - case '+' : - toatlMoney += money; - break - case '-' : - toatlMoney -= money; - break + switch (this.data.addorDel) { + case '+': + toatlMoney += money; + break + case '-': + toatlMoney -= money; + break } this.setData({ - isShow:true, + isShow: true, toatlMoney: parseFloat(toatlMoney).toFixed(2), - money:0, + money: 0, addorDel: event.currentTarget.dataset.type - }) + }) }, - addSpot: function() { + addSpot: function () { let money = this.data.money; let index = money.lastIndexOf('.'); if (index != -1) { @@ -106,17 +196,17 @@ Page({ money: money + '.' }) }, - reset: function() { + reset: function () { this.setData({ money: 0, toatlMoney: 0, - isShow:false, + isShow: false, }) }, - saveBookkeeping: function() { + saveBookkeeping: function () { let money = 0; - if(this.data.addorDel = '+') { - money = Number(this.data.toatlMoney) + Number(this.data.money); + if (this.data.addorDel = '+') { + money = Number(this.data.toatlMoney) + Number(this.data.money); } else if (this.data.addorDel = '-') { money = Number(this.data.toatlMoney) - Number(this.data.money); } else { @@ -129,7 +219,7 @@ Page({ // 进行金额转换 money = money * 100; let requestObj = {}; - requestObj.userId = wx.getStorageSync('userId'); + requestObj.userId = wx.getStorageSync('userId'); requestObj.consumeTypeId = this.data.consumeTypeId; requestObj.money = money; wx.request({ @@ -140,13 +230,13 @@ Page({ 'Content-type': 'application/json', 'Authorization': wx.getStorageSync('token') }, - success: function(response) { + success: function (response) { console.log('请求成功了啦!!准备跳转到主页面') wx.switchTab({ url: '/pages/index/index' }) }, - finally:function(error) { + finally: function (error) { console.log('是错误吗????') wx.switchTab({ url: '/pages/index/index' @@ -154,90 +244,4 @@ Page({ } }) }, - getConsumeType: function() { - let that = this; - wx.request({ - url: API.api.consumeTypes + '/all', - method:'GET', - header:{ - 'Authorization': wx.getStorageSync('token') - }, - success:function(response) { - that.setData({ - consumeTypeList: response.data.data, - consumeType:response.data.data[0] - }) - } - }) - }, - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady: function() { - - }, - btnIcon: function (event) { - let that = this - console.log('你是不是点击了icon' + JSON.stringify(event.currentTarget.dataset.type)) - this.data.consumeTypeList.forEach(item => { - if(item.id == event.currentTarget.dataset.type) { - // 进行保存数据信息 - console.log('匹配到了。。。。。。' + item.id) - that.setData ({ - consumeType:item, - consumeTypeId: event.currentTarget.dataset.type - }) - return; - } - }) - }, - /** - * 生命周期函数--监听页面显示 - */ - onShow: function() { - // 格式化数据信息 - this.setData({ - toatlMoney: 0, - money: 0, - addorDel: '+', - isShow: false, - }) - // 获取消费类型数据 - this.getConsumeType(); - }, - - /** - * 生命周期函数--监听页面隐藏 - */ - onHide: function() { - - }, - - /** - * 生命周期函数--监听页面卸载 - */ - onUnload: function() { - - }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh: function() { - - }, - - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom: function() { - - }, - - /** - * 用户点击右上角分享 - */ - onShareAppMessage: function() { - - } }) \ No newline at end of file diff --git a/pages/consume/consume.wxml b/pages/consume/consume.wxml index 149d7a5..7411fa7 100644 --- a/pages/consume/consume.wxml +++ b/pages/consume/consume.wxml @@ -1,7 +1,13 @@ + + + 支出 + 收入 + + - + {{consumeType.name}} @@ -13,7 +19,8 @@ - + + {{item.name}} diff --git a/pages/consume/consume.wxss b/pages/consume/consume.wxss index eb2cea9..eca17d1 100644 --- a/pages/consume/consume.wxss +++ b/pages/consume/consume.wxss @@ -2,12 +2,34 @@ page { background-color: #eee } - +/* 表头 */ +.table { + border: 0px solid darkgray; +} +.tr { + display: flex; + width: 100%; + justify-content: center; + height: 3rem; + align-items: center; +} +.bg-w{ + background: snow; +} +.th { + width: 50%; + justify-content: center; + background: #3366FF; + color: #fff; + display: flex; + height: 3rem; + align-items: center; + border: 1rpx solid rgba(49, 48, 48, 0.322) +} .consume-type { display: flex; flex-direction: row; flex-wrap:wrap; - margin-top: 35rpx; position: relative; } .consume-type .consume-icon { @@ -19,6 +41,9 @@ page { width: 100%; height: 100%; } +.consume-type span { + padding: 0rpx 15rpx; +} .consume-money { position: absolute; right: 10rpx; diff --git a/pages/index/index.wxml b/pages/index/index.wxml index 75ebcca..9867bef 100644 --- a/pages/index/index.wxml +++ b/pages/index/index.wxml @@ -12,7 +12,7 @@ - + {{item.consumeType.name}} {{item.money /100}} 元 diff --git a/pages/index/index.wxss b/pages/index/index.wxss index 10a9ac8..6bd378a 100644 --- a/pages/index/index.wxss +++ b/pages/index/index.wxss @@ -32,7 +32,8 @@ page { font-size: 38rpx; } .total { - position: relative + position: relative; + margin: 7rpx 0rpx } .total .expenditure_time { font-size: 30rpx; diff --git a/pages/me/me.js b/pages/me/me.js index 434ff58..902f105 100644 --- a/pages/me/me.js +++ b/pages/me/me.js @@ -19,6 +19,13 @@ Page({ * 生命周期函数--监听页面加载 */ onLoad: function (options) { + // 初始化数据信息 + console.log('头像信息',wx.getStorageSync('avatarUrl')); + console.log('微信昵称', wx.getStorageSync('nickName')); + this.setData({ + avatarUrl: wx.getStorageSync('avatarUrl'), + nickName: wx.getStorageSync('nickName') + }) }, -- Gitee From ce97c19486d57af64f04cbf4f015ab89555238ad Mon Sep 17 00:00:00 2001 From: "2689725568@qq.com" Date: Mon, 16 Sep 2019 00:24:22 +0800 Subject: [PATCH 04/14] =?UTF-8?q?feat:=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.js | 56 +- app.json | 11 +- image/icon/biaoji.png | Bin 0 -> 10122 bytes pages/consume/consume.js | 98 +- pages/consume/consume.json | 6 +- pages/consume/consume.wxml | 15 +- pages/consume/consume.wxss | 39 +- pages/domoTest/getFormId/getformId.js | 71 ++ pages/domoTest/getFormId/getformId.json | 3 + pages/domoTest/getFormId/getformId.wxml | 4 + pages/domoTest/getFormId/getformId.wxss | 1 + pages/domoTest/regionTest/test.js | 187 +++ pages/domoTest/regionTest/test.json | 3 + pages/domoTest/regionTest/test.wxml | 22 + pages/domoTest/regionTest/test.wxss | 1 + pages/domoTest/uploadTest/uploadTest.js | 107 ++ pages/domoTest/uploadTest/uploadTest.json | 3 + pages/domoTest/uploadTest/uploadTest.wxml | 6 + pages/domoTest/uploadTest/uploadTest.wxss | 1 + pages/index/authoriztion/authoriztion.js | 41 +- .../bookkeepingdetail/bookkeepingdetail.js | 176 +++ .../bookkeepingdetail/bookkeepingdetail.json | 3 + .../bookkeepingdetail/bookkeepingdetail.wxml | 76 ++ .../bookkeepingdetail/bookkeepingdetail.wxss | 50 + pages/index/index.js | 131 +- pages/index/index.json | 6 +- pages/index/index.wxml | 23 +- pages/index/index.wxss | 47 +- pages/me/me.js | 42 +- pages/me/me.json | 6 +- pages/me/me.wxml | 5 + pages/me/me.wxss | 5 +- utils/ajax.js | 94 ++ utils/api.js | 17 +- utils/date.js | 19 + utils/qqMapWxUtil.js | 77 ++ utils/qqmap-wx-jssdk.js | 1123 +++++++++++++++++ utils/util.js | 18 +- 38 files changed, 2359 insertions(+), 234 deletions(-) create mode 100644 image/icon/biaoji.png create mode 100644 pages/domoTest/getFormId/getformId.js create mode 100644 pages/domoTest/getFormId/getformId.json create mode 100644 pages/domoTest/getFormId/getformId.wxml create mode 100644 pages/domoTest/getFormId/getformId.wxss create mode 100644 pages/domoTest/regionTest/test.js create mode 100644 pages/domoTest/regionTest/test.json create mode 100644 pages/domoTest/regionTest/test.wxml create mode 100644 pages/domoTest/regionTest/test.wxss create mode 100644 pages/domoTest/uploadTest/uploadTest.js create mode 100644 pages/domoTest/uploadTest/uploadTest.json create mode 100644 pages/domoTest/uploadTest/uploadTest.wxml create mode 100644 pages/domoTest/uploadTest/uploadTest.wxss create mode 100644 pages/index/bookkeepingdetail/bookkeepingdetail.js create mode 100644 pages/index/bookkeepingdetail/bookkeepingdetail.json create mode 100644 pages/index/bookkeepingdetail/bookkeepingdetail.wxml create mode 100644 pages/index/bookkeepingdetail/bookkeepingdetail.wxss create mode 100644 utils/date.js create mode 100644 utils/qqMapWxUtil.js create mode 100644 utils/qqmap-wx-jssdk.js diff --git a/app.js b/app.js index 5ce9348..7eef2dd 100644 --- a/app.js +++ b/app.js @@ -1,8 +1,18 @@ //app.js const API = require('utils/api.js'); +const AJAX = require('utils/ajax.js'); +// 引入腾讯地图 +var QQMapWx = require('utils/qqmap-wx-jssdk.js') +var qqmapsdk; App({ onLaunch: function () { - console.log('onLaunch') + console.log('onLaunch......初始化腾讯地图控件') + // 进行初始化腾讯地图 + // 实例化API核心类 + qqmapsdk = new QQMapWx({ + key: API.api.qqMapKey + }) + this.globalData.qqmapsdk = qqmapsdk let that = this wx.clearStorage(); // 展示本地存储能力 @@ -31,23 +41,16 @@ App({ userLoginCode: function (code) { let that = this return new Promise((resolve,reject) => { - wx.request({ - url: API.api.users + '?code=' + code, - method: "GET", - success(response) { - if (response.data) { - // 存储openId信息、用户信息 - wx.setStorageSync('openId', response.data.data.openId) - wx.setStorageSync('userId', response.data.data.id) - wx.setStorageSync('token', response.data.data.token) - that.globalData.token = response.data.data.token - } - resolve() - }, - error(error) { - console.log(`调用失败,失败原因:` + JSON.stringify(error)) - reject(error) + let requestUrl = API.api.users + '?code=' + code; + AJAX.getRequest(requestUrl).then(function(response) { + if (response.code == 200) { + // 存储openId信息、用户信息 + wx.setStorageSync('openId', response.data.openId) + wx.setStorageSync('userId', response.data.id) + wx.setStorageSync('token', response.data.token) + that.globalData.token = response.data.token } + resolve() }) }) }, @@ -79,21 +82,14 @@ App({ let requestData = {} requestData.nickName = userInfo.nickName requestData.avatarUrl = userInfo.avatarUrl; - wx.request({ - url: API.api.users + '/' + Number(userId), - data: requestData, - method: 'POST', - header: { - 'Content-type': 'application/json', - 'Authorization': wx.getStorageSync('token') - }, - success:function(response) { - console.log('用户信息更新成功啦') - }, - }) + let requestUrl = API.api.users + '/' + Number(userId) + AJAX.postRequest(requestUrl,requestData).then(function(response) { + console.log('用户信息更新成功啦') + }) }, globalData: { token: '', - userInfo: null + userInfo: null, + qqmapsdk: '', } }) \ No newline at end of file diff --git a/app.json b/app.json index 43c2602..6fc7662 100644 --- a/app.json +++ b/app.json @@ -1,13 +1,17 @@ { "pages": [ "pages/index/authoriztion/authoriztion", + "pages/domoTest/uploadTest/uploadTest", + "pages/domoTest/regionTest/test", + "pages/domoTest/getFormId/getformId", + "pages/index/bookkeepingdetail/bookkeepingdetail", "pages/consume/consume", "pages/index/index", "pages/me/me" ], "window": { "backgroundTextStyle": "light", - "navigationBarBackgroundColor": "#8ED145", + "navigationBarBackgroundColor": "#1E95F1", "navigationBarTitleText": "消费明细君", "navigationBarTextStyle": "black" }, @@ -33,5 +37,10 @@ } ] }, + "permission": { + "scope.userLocation": { + "desc": "您的位置信息将用于寻找附近的检测点" + } + }, "sitemapLocation": "sitemap.json" } \ No newline at end of file diff --git a/image/icon/biaoji.png b/image/icon/biaoji.png new file mode 100644 index 0000000000000000000000000000000000000000..646a1fbe72f29c3d6a9b4e5b262a131999ccd576 GIT binary patch literal 10122 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 { + //当前位置信息 + that.setData({ + address: response.address, + region: response.region + }) + }) + }, + /** + * 支出收入类型转换 + */ tabTap: function(event) { console.log(event.currentTarget.dataset.type) this.getConsumeType(event.currentTarget.dataset.type) }, getConsumeType: function(type) { let that = this; - wx.request({ - url: API.api.consumeTypes + '/type?type=' + type, - method:'GET', - header:{ - 'Authorization': wx.getStorageSync('token') - }, - success:function(response) { - that.setData({ - consumeTypeList: response.data.data, - consumeType:response.data.data[0] - }) - } - }) + let requestUrl = API.api.consumeTypes + '/type?type=' + type; + AJAX.getRequest(requestUrl).then(response => { + that.setData({ + consumeTypeList: response.data, + consumeType: response.data[0] + }) + }) }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function() { + }, + submitInfo: function (e) { + if(e.detail.formId) { + AJAX.saveFormId(e.detail.formId) + } }, btnIcon: function (event) { let that = this @@ -203,6 +244,9 @@ Page({ isShow: false, }) }, + /** + * 保存按钮 + */ saveBookkeeping: function () { let money = 0; if (this.data.addorDel = '+') { @@ -222,26 +266,12 @@ Page({ requestObj.userId = wx.getStorageSync('userId'); requestObj.consumeTypeId = this.data.consumeTypeId; requestObj.money = money; - wx.request({ - url: API.api.bookkeepings, - data: requestObj, - method: 'POST', - header: { - 'Content-type': 'application/json', - 'Authorization': wx.getStorageSync('token') - }, - success: function (response) { - console.log('请求成功了啦!!准备跳转到主页面') - wx.switchTab({ - url: '/pages/index/index' - }) - }, - finally: function (error) { - console.log('是错误吗????') - wx.switchTab({ - url: '/pages/index/index' - }) - } + requestObj.address = this.data.address; + let requestUrl = API.api.bookkeepingDetails; + AJAX.postRequest(requestUrl,requestObj).then(response => { + wx.switchTab({ + url: '/pages/index/index' + }) }) }, }) \ No newline at end of file diff --git a/pages/consume/consume.json b/pages/consume/consume.json index 8835af0..8c3d940 100644 --- a/pages/consume/consume.json +++ b/pages/consume/consume.json @@ -1,3 +1,7 @@ { - "usingComponents": {} + "navigationBarBackgroundColor": "#1E95F1", + "navigationBarTextStyle": "white", + "navigationBarTitleText": "消费记账", + "backgroundColor": "#ffffff", + "backgroundTextStyle": "light" } \ No newline at end of file diff --git a/pages/consume/consume.wxml b/pages/consume/consume.wxml index 7411fa7..2b106c3 100644 --- a/pages/consume/consume.wxml +++ b/pages/consume/consume.wxml @@ -5,9 +5,11 @@ 收入 - - - + + + {{consumeType.name}} @@ -19,7 +21,7 @@ - + {{item.name}} @@ -47,7 +49,10 @@ - + +
+ +
diff --git a/pages/consume/consume.wxss b/pages/consume/consume.wxss index eca17d1..32908e8 100644 --- a/pages/consume/consume.wxss +++ b/pages/consume/consume.wxss @@ -1,10 +1,10 @@ /* pages/consume/consume.wxss */ page { - background-color: #eee + background-color: #FFFFFF } /* 表头 */ .table { - border: 0px solid darkgray; + border: 0px solid #FFFFFF; } .tr { display: flex; @@ -19,13 +19,40 @@ page { .th { width: 50%; justify-content: center; - background: #3366FF; + background: #1E95F1; color: #fff; display: flex; height: 3rem; align-items: center; - border: 1rpx solid rgba(49, 48, 48, 0.322) + /* border: 1rpx solid rgba(49, 48, 48, 0.322) */ } +.th-click { + width: 50%; + justify-content: center; + background: #1E95F1; + color: #fff; + display: flex; + height: 3rem; + align-items: center; + /* border: 1rpx solid rgba(49, 48, 48, 0.322) */ +} +.consume-type-icon { + display: flex; + flex-direction: row; + flex-wrap:wrap; + position: relative; +} +.consume-type-icon .consume-icon { + width: 16%; + padding: 20rpx 15rpx; + margin-top: 5rpx; +} +.consume-type-icon span { + display: flex; + align-items: center; + padding: 0rpx 15rpx; +} + .consume-type { display: flex; flex-direction: row; @@ -37,16 +64,20 @@ page { padding: 20rpx 15rpx; margin-top: 5rpx; } + .consume-icon image { width: 100%; height: 100%; } .consume-type span { + display: flex; + align-items: center; padding: 0rpx 15rpx; } .consume-money { position: absolute; right: 10rpx; + margin-top: 35rpx; } diff --git a/pages/domoTest/getFormId/getformId.js b/pages/domoTest/getFormId/getformId.js new file mode 100644 index 0000000..b58dd30 --- /dev/null +++ b/pages/domoTest/getFormId/getformId.js @@ -0,0 +1,71 @@ +// pages/getFormId/getformId.js +const API = require('../../../utils/api.js'); +const AJAX = require('../../../utils/ajax.js'); +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + submitInfo:function(e) { + AJAX.saveFormId(e.detail.formId) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/domoTest/getFormId/getformId.json b/pages/domoTest/getFormId/getformId.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/domoTest/getFormId/getformId.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/domoTest/getFormId/getformId.wxml b/pages/domoTest/getFormId/getformId.wxml new file mode 100644 index 0000000..9358b50 --- /dev/null +++ b/pages/domoTest/getFormId/getformId.wxml @@ -0,0 +1,4 @@ + +
+ +
diff --git a/pages/domoTest/getFormId/getformId.wxss b/pages/domoTest/getFormId/getformId.wxss new file mode 100644 index 0000000..14587a7 --- /dev/null +++ b/pages/domoTest/getFormId/getformId.wxss @@ -0,0 +1 @@ +/* pages/getFormId/getformId.wxss */ \ No newline at end of file diff --git a/pages/domoTest/regionTest/test.js b/pages/domoTest/regionTest/test.js new file mode 100644 index 0000000..9594f4f --- /dev/null +++ b/pages/domoTest/regionTest/test.js @@ -0,0 +1,187 @@ +// pages/test/test.js +// 引入腾讯地图 +// var QQMapWx = require('../../utils/qqmap-wx-jssdk.js') +// var qqmapsdk; +const app = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + // 游玩的路线 + polyline: [{ + points: [{ + longitude: 113.3245211, + latitude: 23.10229 + }, { + longitude: 113.324520, + latitude: 23.21229 + }], + color: "#FF0000DD", + width: 2, + dottedLine: true + }], + // 标记点 + markers: [], + longitude: '', + latitude: '', + // 省 + province: '', + // 市 + city: '', + // 区 + area: '', + // 地址信息 + address: '', + region: [] + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + // let that = this + // 实例化API核心类 + // qqmapsdk = new QQMapWx({ + // key: 'GSUBZ-UACKQ-NXJ5Z-GL47V-CIVU2-7YB4X' + // }) + // 获取当前位置信息 + this.getWxLocation() + }, + /** + * 获取当前位置信息 + */ + getWxLocation() { + let that = this + wx.getLocation({ + type: 'gcj02', + success: function(res) { + // 调用腾讯地图显示位置信息 + that.reverseGeocoder(res.latitude, res.longitude) + }, + }) + }, + /** + *调用腾讯地图显示位置信息 + * latitude:纬度 + * longitude:经度 + */ + reverseGeocoder(latitude, longitude) { + console.log(app.globalData) + let that = this + app.globalData.qqmapsdk.reverseGeocoder({ + location: { + latitude: latitude, + longitude: longitude + }, + success: function(skdRes) { + // 坐标显示 + let markers = [] + markers.push({ + iconPath: "../../image/icon/biaoji.png", + id: 0, + latitude: latitude, + longitude: longitude, + width: 30, + height: 30 + }) + //当前位置信息 + let region = [] + let province = skdRes.result.address_component.province + let city = skdRes.result.address_component.city + let district = skdRes.result.address_component.district + region.push(province) + region.push(city) + region.push(district) + that.setData({ + markers: markers, + address: skdRes.result.address, + region: region + }) + } + }) + }, + /** + * 测试调用接口信息 + */ + ontest() { + qqmapsdk.search({ + keyword: '景点', + success: function(response) { + console.log(response) + }, + fail: function(err) { + console.log(err) + } + }) + }, + /** + * 下拉触发 + */ + bindRegionChange: function(e) { + let that = this + console.log('picker发送选择改变,携带值为', e.detail.value) + this.setData({ + region: e.detail.value + }) + let address = e.detail.value[0] + e.detail.value[1] + e.detail.value[2] + console.log(`获取到的地址是:` + address) + // 调用腾讯地图进行定位 + qqmapsdk.geocoder({ + address: address, + success: function(response) { + console.log(`解析成功啦!`, response) + that.reverseGeocoder(response.result.location.lat,response.result.location.lng) + } + }) + }, + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function() { + + } +}) \ No newline at end of file diff --git a/pages/domoTest/regionTest/test.json b/pages/domoTest/regionTest/test.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/domoTest/regionTest/test.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/domoTest/regionTest/test.wxml b/pages/domoTest/regionTest/test.wxml new file mode 100644 index 0000000..eae3043 --- /dev/null +++ b/pages/domoTest/regionTest/test.wxml @@ -0,0 +1,22 @@ + +当前位置在:{{address}} + + + + + 当前位置:{{region[0]}},{{region[1]}},{{region[2]}} + + + + + + diff --git a/pages/domoTest/regionTest/test.wxss b/pages/domoTest/regionTest/test.wxss new file mode 100644 index 0000000..3ee2480 --- /dev/null +++ b/pages/domoTest/regionTest/test.wxss @@ -0,0 +1 @@ +/* pages/test/test.wxss */ \ No newline at end of file diff --git a/pages/domoTest/uploadTest/uploadTest.js b/pages/domoTest/uploadTest/uploadTest.js new file mode 100644 index 0000000..b6e68f5 --- /dev/null +++ b/pages/domoTest/uploadTest/uploadTest.js @@ -0,0 +1,107 @@ +// pages/domoTest/uploadTest/uploadTest.js +const API = require('../../../utils/api.js') +const AJAX = require('../../../utils/ajax.js') +Page({ + + /** + * 页面的初始数据 + */ + data: { + tempFilePaths: [] + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 上传图片 + */ + uploadImage:function() { + let that = this + wx.chooseImage({ + count: 9, + success: function(res) { + console.log(res) + const tempFilePaths = res.tempFilePaths; + let requestUrl = API.api.uploadFile + '/wxminproject/test' + wx.uploadFile({ + url: requestUrl, + filePath: tempFilePaths[0], + name: 'file', + header: { "Content-Type": "multipart/form-data" }, + formData: { + 'msg': '提交图片' + }, + success: function (res) { + console.log(res); + if (res.statusCode == 200) { + wx.showToast({ + title: '反馈成功!', + }) + } else { + wx.showToast({ + title: '请稍后再传哦!', + }) + } + } + }) + that.setData({ + tempFilePaths:tempFilePaths + }) + }, + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/domoTest/uploadTest/uploadTest.json b/pages/domoTest/uploadTest/uploadTest.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/domoTest/uploadTest/uploadTest.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/domoTest/uploadTest/uploadTest.wxml b/pages/domoTest/uploadTest/uploadTest.wxml new file mode 100644 index 0000000..59c15d0 --- /dev/null +++ b/pages/domoTest/uploadTest/uploadTest.wxml @@ -0,0 +1,6 @@ + + + + 上传后的图片显示 + + diff --git a/pages/domoTest/uploadTest/uploadTest.wxss b/pages/domoTest/uploadTest/uploadTest.wxss new file mode 100644 index 0000000..2f00e52 --- /dev/null +++ b/pages/domoTest/uploadTest/uploadTest.wxss @@ -0,0 +1 @@ +/* pages/domoTest/uploadTest/uploadTest.wxss */ \ No newline at end of file diff --git a/pages/index/authoriztion/authoriztion.js b/pages/index/authoriztion/authoriztion.js index ac266a7..02fc50a 100644 --- a/pages/index/authoriztion/authoriztion.js +++ b/pages/index/authoriztion/authoriztion.js @@ -1,7 +1,7 @@ // pages/index/authoriztion/authoriztion.js const API = require('../../../utils/api.js'); const app = getApp(); - +const AJAX = require('../../../utils/ajax.js') Page({ /** * 页面的初始数据 @@ -84,20 +84,10 @@ Page({ getUserInfo: function() { console.log('准备开始获取数据啦') return new Promise((resolve, reject) => { - wx.request({ - url: API.api.users + '/' + wx.getStorageSync('userId'), - method: 'GET', - header: { - 'Content-type': 'application/json', - 'Authorization': wx.getStorageSync('token') - }, - success: function(response) { - resolve(response.data.data) - }, - fail: function(error) { - reject(error) - } - }) + let requestUrl = API.api.users + '/' + wx.getStorageSync('userId'); + AJAX.getRequest(requestUrl).then(response => { + resolve(response.data) + }) }) }, @@ -107,22 +97,11 @@ Page({ let requestData = {} requestData.nickName = userInfo.nickName requestData.avatarUrl = userInfo.avatarUrl; - wx.request({ - url: API.api.users + '/' + Number(userId), - data: requestData, - method: 'POST', - header: { - 'Content-type': 'application/json', - 'Authorization': wx.getStorageSync('token') - }, - success: function(response) { - console.log('用户信息更新成功啦') - resolve(response) - }, - fail: function(error) { - reject(error) - }, - }) + let requestUrl = API.api.users + '/' + Number(userId); + AJAX.postRequest(requestUrl,requestData).then(response => { + console.log('用户信息更新成功啦') + resolve(response) + }) }) }, /** diff --git a/pages/index/bookkeepingdetail/bookkeepingdetail.js b/pages/index/bookkeepingdetail/bookkeepingdetail.js new file mode 100644 index 0000000..9b401cc --- /dev/null +++ b/pages/index/bookkeepingdetail/bookkeepingdetail.js @@ -0,0 +1,176 @@ +const API = require('../../../utils/api.js'); +const FormatUtil = require('../../../utils/util.js'); +const AJAX = require('../../../utils/ajax.js') +// 引入腾讯地图 +const qqMapWxUtil = require('../../../utils/qqMapWxUtil.js') +Page({ + + /** + * 页面的初始数据 + */ + data: { + bookkeepingId: '', + bookkeepingObj:{}, + updateShow: false, + // 标记点 + markers: [] + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + // 获取到记账id + console.log(`从记账页面跳转过来的!!!携带的id为:`, options.bookkeepingid) + this.setData({ + bookkeepingId: options.bookkeepingid + }) + // 获取用户记账信息 + this.getBookkeepingById(options.bookkeepingid); + }, + /** + * 显示保存 + */ + updateShowData:function() { + console.log(`来到了显示的` + this.data.updateShow) + this.setData({ + updateShow: !this.data.updateShow + }) + }, + /** + * 更新保存数据 + */ + updateData:function() { + console.log('这里是保存数据的') + this.updateShowData() + }, + /** + * 删除数据 + */ + deleteData:function() { + console.log(`准备删除一条数据`) + + }, + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + }, + + /** + * 获取用户记账信息 + */ + getBookkeepingById:function(bookkeepingId) { + let that = this; + let requestUrl = API.api.bookkeepingDetails + '/query/' + bookkeepingId; + AJAX.getRequest(requestUrl).then(response => { + let resultData = response.data + resultData.createTimeView = FormatUtil.formatTime(new Date(resultData.bookkeeping.createTime)) + resultData.moneyView = FormatUtil.formatMoney(resultData.bookkeeping.money / 100) + that.setData({ + bookkeepingObj: resultData + }) + // TODO 这里后期加判断,如果位置为空则重新定位还是什么的 通过位置定位信息 + that.geocoder(resultData.address) + }) + }, + /** + *调用腾讯地图显示位置信息 + * latitude:纬度 + * longitude:经度 + */ + reverseGeocoder:function(latitude, longitude) { + let that = this + let location = {} + location.latitude = latitude; + location.longitude = longitude; + qqMapWxUtil.reverseGeocoder(location).then(response => { + console.log(`从腾讯文档中获取到的地图坐标是:`, response) + that.setData({ + markers: response.markers + }) + }) + }, + /** + * 调用腾讯地图进行定位 + * address:地址信息 + */ + geocoder: function(address) { + let that = this + if(!address) { + console.log(`地址为空,不进行操作了!!!!` + address) + retrun; + } + qqMapWxUtil.geocoder(address).then(response => { + that.reverseGeocoder(response.result.location.lat, response.result.location.lng) + }) + }, + /** + * 下拉触发 + */ + bindRegionChange: function (e) { + let that = this + console.log('picker发送选择改变,携带值为', e.detail.value) + this.setData({ + region: e.detail.value + }) + let address = e.detail.value[0] + e.detail.value[1] + e.detail.value[2] + console.log(`获取到的地址是:` + address) + + that.geocoder(address) + }, + /** + * 图片预览 + */ + queryImg:function(e) { + let urls = []; + urls.push(e.target.dataset.list) + wx.previewImage({ + urls: urls, + success:function(res) { + console.log("成功了") + } + }) + }, + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/index/bookkeepingdetail/bookkeepingdetail.json b/pages/index/bookkeepingdetail/bookkeepingdetail.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/index/bookkeepingdetail/bookkeepingdetail.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/index/bookkeepingdetail/bookkeepingdetail.wxml b/pages/index/bookkeepingdetail/bookkeepingdetail.wxml new file mode 100644 index 0000000..26868e5 --- /dev/null +++ b/pages/index/bookkeepingdetail/bookkeepingdetail.wxml @@ -0,0 +1,76 @@ + + + + + + 消费时间: + {{bookkeepingObj.createTimeView}} + + + 消费金额: + {{bookkeepingObj.moneyView}} 元 + + + 消费地点: + {{bookkeepingObj.address}} + + + + + + + 记录图片: + + + + + + + 备注: + {{bookkeepingObj.remarks}} + + + + + + 消费时间: + {{bookkeepingObj.createTimeView}} + + + 消费金额: + + + + 消费地点: + {{bookkeepingObj.address}} + + + + + + + 记录图片: + + + + + + + 备注: + {{bookkeepingObj.remarks}} + + + + + + + + + + + + \ No newline at end of file diff --git a/pages/index/bookkeepingdetail/bookkeepingdetail.wxss b/pages/index/bookkeepingdetail/bookkeepingdetail.wxss new file mode 100644 index 0000000..996c203 --- /dev/null +++ b/pages/index/bookkeepingdetail/bookkeepingdetail.wxss @@ -0,0 +1,50 @@ +/* pages/index/bookkeepingdetail/bookkeepingdetail.wxss */ +page { + background-color: whitesmoke +} +.bookkeeping-detail { + padding: 20rpx 20rpx; +} +.detail-data { + display: flex +} +.detail-data .value { + width: 40%; + margin-bottom: 20rpx; +} +.detail-data .key { + margin-bottom: 20rpx; + width:100%; +} +.detail-data .key image{ + width:100%; + height: 250rpx; +} +.detail-button { + display: flex; +} +.detail-button .btn-left { + width: 45%; + padding: 10rpx 0rpx; + line-height: 60rpx; + position: fixed; + left: 4%; + bottom: 0; + margin-bottom: 20rpx; +} +.detail-button .btn-right { + width: 45%; + padding: 10rpx 0rpx; + line-height: 60rpx; + position: fixed; + right: 4%; + bottom: 0; + margin-bottom: 20rpx; +} +/* 地图样式 */ +.map-style { + width: 100%; + height: 240rpx; + margin-bottom: 20rpx; + padding: 10rpx 0rpx; +} \ No newline at end of file diff --git a/pages/index/index.js b/pages/index/index.js index faadb8d..b0015fa 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -1,6 +1,8 @@ // pages/list/list.js const API = require('../../utils/api.js'); const TOTAS = require('../../utils/toast.js'); +const FormatUtil = require('../../utils/util.js') +const AJAX = require('../../utils/ajax.js') Page({ /** @@ -10,63 +12,66 @@ Page({ pageNumber: 0, pageSize: 10, imageHost: API.api.imageHost, // 图片服务器域名 - bookkeepingList:[], - assetsDetail:{}, + bookkeepingList: [], + assetsDetail: {}, totalElements: 0, }, /** * 生命周期函数--监听页面加载 */ - onLoad: function (options) { + onLoad: function(options) { }, /** * 生命周期函数--监听页面初次渲染完成 */ - onReady: function () { + onReady: function() { }, /** * 生命周期函数--监听页面显示 */ - onShow: function () { - // 初始化数据信息 - this.setData({ - bookkeepingList: [], - pageNumber: 0, - totalElements: 0 - }) - // 获取用户记账信息 - this.getBookkeeping(); - // 获取用户本月消费情况 + onShow: function() { + // 初始化数据信息 + this.setData({ + bookkeepingList: [], + pageNumber: 0, + totalElements: 0 + }) + // 获取用户记账信息 + this.getBookkeeping(); + // 获取用户本月消费情况 this.getAssetsDetail(); }, - getAssetsDetail:function() { + /** + * 跳转到记账详情页 + */ + gotoDetail: function(e) { + let bookkeepingId = e.target.dataset.id + wx.navigateTo({ + url: '/pages/index/bookkeepingdetail/bookkeepingdetail?bookkeepingid=' + bookkeepingId + }) + + }, + getAssetsDetail: function() { let that = this let userId = wx.getStorageSync('userId'); - wx.request({ - url: API.api.assetsDetails + '/' + userId, - method:'GET', - header: { - 'Authorization': wx.getStorageSync('token') - }, - success:function(response) { - console.log(response.data.data) - let resData = response.data.data; - // 金额转换 - resData.monthTotalExpenditure = resData.monthTotalExpenditure / 100; - resData.monthTotalIncome = resData.monthTotalIncome / 100; - resData.monthTotalMoney = resData.monthTotalMoney / 100; - that.setData({ - assetsDetail: resData - }) - } + let requestUrl = API.api.assetsDetails + '/' + userId + AJAX.getRequest(requestUrl).then(function(response) { + let resData = response.data; + // 金额转换 + resData.monthTotalExpenditure = FormatUtil.formatMoney(resData.monthTotalExpenditure / 100); + resData.monthTotalIncome = FormatUtil.formatMoney(resData.monthTotalIncome / 100); + resData.monthTotalMoney = FormatUtil.formatMoney(resData.monthTotalMoney / 100); + that.setData({ + assetsDetail: resData + }) }) }, - getBookkeeping:function() { + getBookkeeping: function() { if ((this.data.pageNumber * this.data.pageSize) > this.data.totalElements) { TOTAS.showToastSuccess("已经加载到底了....") return @@ -75,62 +80,60 @@ Page({ let userId = wx.getStorageSync('userId'); let pageNumber = this.data.pageNumber; let pageSize = this.data.pageSize; - let requestUrl = API.api.bookkeepings + '?userId=' + userId + '&pageNumber=' + pageNumber+'&pageSize='+pageSize; - wx.request({ - url: requestUrl, - method: 'GET', - header:{ - 'Authorization': wx.getStorageSync('token') - }, - success:function(response) { - if (response.data.data.content.length == 0) { - TOTAS.showToastSuccess("已经加载到底了....") - return - } - let bookkeepingList = []; - if (that.data.bookkeepingList.length == 0) { - // 直接赋值 - bookkeepingList = response.data.data.content; - } else { - bookkeepingList = that.data.bookkeepingList; - response.data.data.content.forEach(item => { - bookkeepingList.push(item) - }) - } - that.setData({ - bookkeepingList: bookkeepingList, - pageNumber: pageNumber + 1, - totalElements: response.data.data.totalElements + let requestUrl = API.api.bookkeepings + '?userId=' + userId + '&pageNumber=' + pageNumber + '&pageSize=' + pageSize; + AJAX.getRequest(requestUrl).then(response => { + if (response.data.content.length == 0) { + TOTAS.showToastSuccess("已经加载到底了....") + return + } + // 格式化数据 + response.data.content.forEach(item => { + item.money = FormatUtil.formatMoney(item.money / 100); + item.totalMoney = FormatUtil.formatMoney(item.totalMoney / 100); + }) + let bookkeepingList = []; + if (that.data.bookkeepingList.length == 0) { + // 直接赋值 + bookkeepingList = response.data.content; + } else { + bookkeepingList = that.data.bookkeepingList; + response.data.content.forEach(item => { + bookkeepingList.push(item) }) } + that.setData({ + bookkeepingList: bookkeepingList, + pageNumber: pageNumber + 1, + totalElements: response.data.totalElements + }) }) }, /** * 生命周期函数--监听页面隐藏 */ - onHide: function () { + onHide: function() { }, /** * 生命周期函数--监听页面卸载 */ - onUnload: function () { + onUnload: function() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ - onPullDownRefresh: function () { + onPullDownRefresh: function() { }, /** * 页面上拉触底事件的处理函数 */ - onReachBottom: function () { + onReachBottom: function() { // 触发到底部。进行加载数据信息 this.getBookkeeping(); }, @@ -138,7 +141,7 @@ Page({ /** * 用户点击右上角分享 */ - onShareAppMessage: function () { + onShareAppMessage: function() { } }) \ No newline at end of file diff --git a/pages/index/index.json b/pages/index/index.json index 8835af0..54d647b 100644 --- a/pages/index/index.json +++ b/pages/index/index.json @@ -1,3 +1,7 @@ { - "usingComponents": {} + "navigationBarBackgroundColor": "#1E95F1", + "navigationBarTextStyle": "white", + "navigationBarTitleText": "消费记录", + "backgroundColor": "#ffffff", + "backgroundTextStyle": "light" } \ No newline at end of file diff --git a/pages/index/index.wxml b/pages/index/index.wxml index 9867bef..c33d15e 100644 --- a/pages/index/index.wxml +++ b/pages/index/index.wxml @@ -1,20 +1,31 @@ - 利润:{{assetsDetail.monthTotalMoney}}元 - 本月收入:{{assetsDetail.monthTotalIncome}}元 - 本月支出:{{assetsDetail.monthTotalExpenditure}}元 + + {{assetsDetail.monthTotalMoney}} + 本月收支结余 + + + + {{assetsDetail.monthTotalIncome}} + 本月收入 + + + {{assetsDetail.monthTotalExpenditure}} + 本月支出 + + {{item.nowDayTime}} - 支出 {{item.totalMoney /100}}元 + 支出 {{item.totalMoney}}元 - + {{item.consumeType.name}} - {{item.money /100}} 元 + {{item.money}} 元 diff --git a/pages/index/index.wxss b/pages/index/index.wxss index 6bd378a..12b7aab 100644 --- a/pages/index/index.wxss +++ b/pages/index/index.wxss @@ -1,6 +1,6 @@ /* pages/list/list.wxss */ page { - background: #eee + background: #F5F5F5 } .consume { display: flex; @@ -10,41 +10,45 @@ page { .head { width: 100%; height: 300rpx; - background: peachpuff; - position: relative; + background: #1E95F1; } -.head .profit { - position: absolute; - margin-left: 35%; - margin-top: 80rpx; - font-size: 38rpx; +.profit { + height: 150rpx; + display: flex; + justify-content: center; + align-items: center; + color: #FFFFFFFF; + flex-direction: column; + font-size: 32rpx; } -.head .income { - position: absolute; - margin-top: 180rpx; - margin-left: 20rpx; - font-size: 38rpx; +.inc_exp { + height: 150rpx; + display: flex; + width: 100%; } -.head .expenditure { - position: absolute; - margin-top: 180rpx; - margin-left: 55%; - font-size: 38rpx; +.inc_exp .income { + width: 50%; + display: flex; + color: #FFFFFFFF; + justify-content: center; + align-items: center; + flex-direction: column; + font-size: 28rpx; } .total { position: relative; - margin: 7rpx 0rpx + margin: 15rpx 0rpx } .total .expenditure_time { font-size: 30rpx; padding: 20rpx 20rpx; - color: rgb(207, 206, 206) + color: #979797 } .total .expenditure_money { float: right; font-size: 30rpx; padding: 8rpx 20rpx; - color: rgb(207, 206, 206) + color: #979797 } .expenditure_type { width: 100%; @@ -61,6 +65,7 @@ page { .expenditure_type .type { font-size: 32rpx; margin-left: 10rpx; + color: #020202; } .expenditure_type .money { position: absolute; diff --git a/pages/me/me.js b/pages/me/me.js index 902f105..5d9fb99 100644 --- a/pages/me/me.js +++ b/pages/me/me.js @@ -1,6 +1,7 @@ // pages/me/me.js const API = require('../../utils/api.js'); const TOAST = require('../../utils/toast.js'); +const AJAX = require('../../utils/ajax.js'); Page({ /** @@ -45,39 +46,26 @@ Page({ getUserInfo:function() { let that = this let userId = wx.getStorageSync('userId'); - wx.request({ - url: API.api.users + '/' + userId, - method:'GET', - header:{ - 'Authorization': wx.getStorageSync('token') - }, - success:function(response) { - console.log(response.data.data) - let userInfo = response.data.data; - userInfo.monthBudget = response.data.data.monthBudget / 100; - that.setData({ - userInfo: userInfo, - isShow:false - }) - } + let requestUrl = API.api.users + '/' + userId; + AJAX.getRequest(requestUrl).then(response => { + console.log(response.data) + let userInfo = response.data; + userInfo.monthBudget = response.data.monthBudget / 100; + that.setData({ + userInfo: userInfo, + isShow: false + }) }) }, modalConfirm:function() { let that = this console.log(this.data.tempUserInfo.monthBudget) + let tempUserInfo = this.data.tempUserInfo; let userId = wx.getStorageSync('userId'); - wx.request({ - url: API.api.users + '/' + userId, - method: 'POST', - data: that.data.tempUserInfo, - header: { - 'Content-type': 'application/json', - 'Authorization': wx.getStorageSync('token') - }, - success:function(response) { - console.log('更新成功!!!!'); - that.getUserInfo(); - } + let requestUrl = API.api.users + '/' + userId; + AJAX.postRequest(requestUrl,tempUserInfo).then(response => { + console.log('更新成功!!!!'); + that.getUserInfo(); }) }, modalCancel: function () { diff --git a/pages/me/me.json b/pages/me/me.json index 8835af0..71d8fa9 100644 --- a/pages/me/me.json +++ b/pages/me/me.json @@ -1,3 +1,7 @@ { - "usingComponents": {} + "navigationBarBackgroundColor": "#1E95F1", + "navigationBarTextStyle": "white", + "navigationBarTitleText": "个人中心", + "backgroundColor": "#ffffff", + "backgroundTextStyle": "light" } \ No newline at end of file diff --git a/pages/me/me.wxml b/pages/me/me.wxml index d5338d0..f7da19e 100644 --- a/pages/me/me.wxml +++ b/pages/me/me.wxml @@ -11,7 +11,10 @@ {{userInfo.monthBudget}} + + + + + diff --git a/pages/me/me.wxss b/pages/me/me.wxss index 6b4bed8..376b3c5 100644 --- a/pages/me/me.wxss +++ b/pages/me/me.wxss @@ -5,12 +5,11 @@ flex-direction: column; } -.wx_avatar { +.wx_avatar { position: relative; width: 100%; height: 300rpx; - background: #8ed145; - + background: #1E95F1; } .wx_avatar image { diff --git a/utils/ajax.js b/utils/ajax.js index e69de29..8f83672 100644 --- a/utils/ajax.js +++ b/utils/ajax.js @@ -0,0 +1,94 @@ +const Toast = require('../utils/toast.js') +const API = require('../utils/api.js') +/** + * 封装HTTPget请求, + * url:请求路径 + */ +function getRequest(url){ + return new Promise(function(resolve,reject) { + wx.request({ + url: url, + method: 'GET', + header: { + 'Content-type': 'application/json', + 'Authorization': wx.getStorageSync('token') + }, + success:function(response) { + if (response.data.code === 200) { + resolve(response.data) + } else{ + Toast.showToastSuccess(response.msg) + } + }, + fail:function(err) { + Toast.showToastSuccess(err.msg) + } + }) + }) +} + + +/** + * 封装HTTP post请求 + * url:请求路径 + * param:请求数据 + */ +function postRequest(url,param) { + return new Promise(function(resolve,reject) { + wx.request({ + url: url, + method: 'POST', + data: param, + header: { + 'Content-type': 'application/json', + 'Authorization': wx.getStorageSync('token') + }, + success:function(response) { + if (response.data.code === 200) { + resolve(response.data) + } else { + Toast.showToastSuccess(response.msg) + } + }, + fail:function(err) { + Toast.showToastSuccess(response.msg) + } + + }) + }) +} +/** + * 保存formId + */ +function saveFormId(formId) { + return new Promise(function (resolve, reject) { + let formIdData = {}; + formIdData.formId = formId; + formIdData.openId = wx.getStorageSync('openId'); + wx.request({ + url: API.api.wxformids, + method: 'POST', + data: formIdData, + header: { + 'Content-type': 'application/json', + 'Authorization': wx.getStorageSync('token') + }, + success: function (res) { + console.log(`保存formId成功!!!`, res) + resolve(); + } + }) + }) +} + + + + + + + +module.exports = { + getRequest: getRequest, + postRequest: postRequest, + saveFormId: saveFormId, +} diff --git a/utils/api.js b/utils/api.js index 84ca0f7..e6246bb 100644 --- a/utils/api.js +++ b/utils/api.js @@ -4,12 +4,14 @@ let api = { // TODO:配置接口文档信息 -// api.baseUrl = 'https://192.168.1.102:12000'; -api.baseUrl = 'https://be.yangyoki.top:12000'; +api.baseUrl = 'https://192.168.1.102:12000'; +// api.baseUrl = 'https://be.yangyoki.top:12000'; api.imageHostDowm = 'https://be.yangyoki.top:12000'; api.imageHost = 'https://be.yangyoki.top:12000/'; -//接口文档信息 +// 配置文件信息 +// 腾讯地图key值 +api.qqMapKey = 'GSUBZ-UACKQ-NXJ5Z-GL47V-CIVU2-7YB4X'; //用户接口 api.users = api.baseUrl + '/api/v1/users'; @@ -20,12 +22,21 @@ api.login = api.baseUrl + '/api/v1/users/login'; //记账接口 api.bookkeepings = api.baseUrl + '/api/v1/bookkeepings'; +//记账详情接口 +api.bookkeepingDetails = api.baseUrl + '/api/v1/bookkeepingdetails'; + //记账分类接口 api.consumeTypes = api.baseUrl + '/api/v1/consumetypes' // 资产明细接口 api.assetsDetails = api.baseUrl + '/api/v1/assetsdetails' +//保存formId接口 +api.wxformids = api.baseUrl + '/api/v1/wxformids' + +//上传图片信息 +api.uploadFile = api.baseUrl + '/api/v1/upload' + module.exports = { api: api, diff --git a/utils/date.js b/utils/date.js new file mode 100644 index 0000000..7839c21 --- /dev/null +++ b/utils/date.js @@ -0,0 +1,19 @@ +const formatTime = date => { + const year = date.getFullYear() + const month = date.getMonth() + 1 + const day = date.getDate() + const hour = date.getHours() + const minute = date.getMinutes() + const second = date.getSeconds() + + return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':') +} + +const formatNumber = n => { + n = n.toString() + return n[1] ? n : '0' + n +} + +module.exports = { + formatTime: formatTime +} diff --git a/utils/qqMapWxUtil.js b/utils/qqMapWxUtil.js new file mode 100644 index 0000000..2d32ed5 --- /dev/null +++ b/utils/qqMapWxUtil.js @@ -0,0 +1,77 @@ +const app = getApp(); + /** + *调用腾讯地图显示位置信息 + * location :{ + * latitude:纬度 + * longitude:经度 + * } + */ +function reverseGeocoder(location) { + let that = this + return new Promise(function (resolve, reject) { + app.globalData.qqmapsdk.reverseGeocoder({ + location: location, + success: function (skdRes) { + console.log(`请求成功了吗?`,skdRes) + // 坐标显示 + let markers = [] + markers.push({ + iconPath: "/image/icon/biaoji.png", + id: 0, + latitude: location.latitude, + longitude: location.longitude, + width: 30, + height: 30 + }) + //当前位置信息 + let region = [] + let province = skdRes.result.address_component.province + let city = skdRes.result.address_component.city + let district = skdRes.result.address_component.district + region.push(province) + region.push(city) + region.push(district) + // 封装成一个对象返回 + let responseObj = {}; + responseObj.markers = markers; + responseObj.region = region; + responseObj.address = skdRes.result.address; + // 如业务需求可继续补充数据 + resolve(responseObj); + // that.setData({ + // markers: markers, + // address: skdRes.result.address, + // region: region + // }) + } + }) + }) + +} + +/** + * 调用腾讯地图进行定位 + * 通过地址解析到经纬度 + * address:地址信息 + */ +function geocoder(address) { + let that = this + return new Promise(function (resolve, reject) { + // 调用腾讯地图进行定位 + app.globalData.qqmapsdk.geocoder({ + address: address, + success: function (response) { + console.log(`解析成功啦!`, response) + resolve(response) + } + }) + }) +} + + + + +module.exports = { + reverseGeocoder: reverseGeocoder, + geocoder: geocoder +} \ No newline at end of file diff --git a/utils/qqmap-wx-jssdk.js b/utils/qqmap-wx-jssdk.js new file mode 100644 index 0000000..9724e31 --- /dev/null +++ b/utils/qqmap-wx-jssdk.js @@ -0,0 +1,1123 @@ +/** + * 微信小程序JavaScriptSDK + * + * @version 1.2 + * @date 2019-03-06 + * @author v_ylyue@tencent.com + */ + +var ERROR_CONF = { + KEY_ERR: 311, + KEY_ERR_MSG: 'key格式错误', + PARAM_ERR: 310, + PARAM_ERR_MSG: '请求参数信息有误', + SYSTEM_ERR: 600, + SYSTEM_ERR_MSG: '系统错误', + WX_ERR_CODE: 1000, + WX_OK_CODE: 200 +}; +var BASE_URL = 'https://apis.map.qq.com/ws/'; +var URL_SEARCH = BASE_URL + 'place/v1/search'; +var URL_SUGGESTION = BASE_URL + 'place/v1/suggestion'; +var URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/'; +var URL_CITY_LIST = BASE_URL + 'district/v1/list'; +var URL_AREA_LIST = BASE_URL + 'district/v1/getchildren'; +var URL_DISTANCE = BASE_URL + 'distance/v1/'; +var URL_DIRECTION = BASE_URL + 'direction/v1/'; +var MODE = { + driving: 'driving', + transit: 'transit' +}; +var EARTH_RADIUS = 6378136.49; +var Utils = { + /** + * md5加密方法 + * 版权所有©2011 Sebastian Tschan,https://blueimp.net + */ + safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); + }, + bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); + }, + md5cmn(q, a, b, x, s, t) { + return this.safeAdd(this.bitRotateLeft(this.safeAdd(this.safeAdd(a, q), this.safeAdd(x, t)), s), b); + }, + md5ff(a, b, c, d, x, s, t) { + return this.md5cmn((b & c) | (~b & d), a, b, x, s, t); + }, + md5gg(a, b, c, d, x, s, t) { + return this.md5cmn((b & d) | (c & ~d), a, b, x, s, t); + }, + md5hh(a, b, c, d, x, s, t) { + return this.md5cmn(b ^ c ^ d, a, b, x, s, t); + }, + md5ii(a, b, c, d, x, s, t) { + return this.md5cmn(c ^ (b | ~d), a, b, x, s, t); + }, + binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[((len + 64) >>> 9 << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = this.md5ff(a, b, c, d, x[i], 7, -680876936); + d = this.md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = this.md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = this.md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = this.md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = this.md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = this.md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = this.md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = this.md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = this.md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = this.md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = this.md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = this.md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = this.md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = this.md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = this.md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = this.md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = this.md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = this.md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = this.md5gg(b, c, d, a, x[i], 20, -373897302); + a = this.md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = this.md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = this.md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = this.md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = this.md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = this.md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = this.md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = this.md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = this.md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = this.md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = this.md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = this.md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = this.md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = this.md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = this.md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = this.md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = this.md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = this.md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = this.md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = this.md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = this.md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = this.md5hh(d, a, b, c, x[i], 11, -358537222); + c = this.md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = this.md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = this.md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = this.md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = this.md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = this.md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = this.md5ii(a, b, c, d, x[i], 6, -198630844); + d = this.md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = this.md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = this.md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = this.md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = this.md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = this.md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = this.md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = this.md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = this.md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = this.md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = this.md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = this.md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = this.md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = this.md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = this.md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = this.safeAdd(a, olda); + b = this.safeAdd(b, oldb); + c = this.safeAdd(c, oldc); + d = this.safeAdd(d, oldd); + } + return [a, b, c, d]; + }, + binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; + }, + rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; + }, + rstrMD5(s) { + return this.binl2rstr(this.binlMD5(this.rstr2binl(s), s.length * 8)); + }, + rstrHMACMD5(key, data) { + var i; + var bkey = this.rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = this.binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = this.binlMD5(ipad.concat(this.rstr2binl(data)), 512 + data.length * 8); + return this.binl2rstr(this.binlMD5(opad.concat(hash), 512 + 128)); + }, + rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; + }, + str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); + }, + rawMD5(s) { + return this.rstrMD5(this.str2rstrUTF8(s)); + }, + hexMD5(s) { + return this.rstr2hex(this.rawMD5(s)); + }, + rawHMACMD5(k, d) { + return this.rstrHMACMD5(this.str2rstrUTF8(k), str2rstrUTF8(d)); + }, + hexHMACMD5(k, d) { + return this.rstr2hex(this.rawHMACMD5(k, d)); + }, + + md5(string, key, raw) { + if (!key) { + if (!raw) { + return this.hexMD5(string); + } + return this.rawMD5(string); + } + if (!raw) { + return this.hexHMACMD5(key, string); + } + return this.rawHMACMD5(key, string); + }, + /** + * 得到md5加密后的sig参数 + * @param {Object} requestParam 接口参数 + * @param {String} sk签名字符串 + * @param {String} featrue 方法名 + * @return 返回加密后的sig参数 + */ + getSig(requestParam, sk, feature, mode) { + var sig = null; + var requestArr = []; + Object.keys(requestParam).sort().forEach(function(key){ + requestArr.push(key + '=' + requestParam[key]); + }); + if (feature == 'search') { + sig = '/ws/place/v1/search?' + requestArr.join('&') + sk; + } + if (feature == 'suggest') { + sig = '/ws/place/v1/suggestion?' + requestArr.join('&') + sk; + } + if (feature == 'reverseGeocoder') { + sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk; + } + if (feature == 'geocoder') { + sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk; + } + if (feature == 'getCityList') { + sig = '/ws/district/v1/list?' + requestArr.join('&') + sk; + } + if (feature == 'getDistrictByCityId') { + sig = '/ws/district/v1/getchildren?' + requestArr.join('&') + sk; + } + if (feature == 'calculateDistance') { + sig = '/ws/distance/v1/?' + requestArr.join('&') + sk; + } + if (feature == 'direction') { + sig = '/ws/direction/v1/' + mode + '?' + requestArr.join('&') + sk; + } + sig = this.md5(sig); + return sig; + }, + /** + * 得到终点query字符串 + * @param {Array|String} 检索数据 + */ + location2query(data) { + if (typeof data == 'string') { + return data; + } + var query = ''; + for (var i = 0; i < data.length; i++) { + var d = data[i]; + if (!!query) { + query += ';'; + } + if (d.location) { + query = query + d.location.lat + ',' + d.location.lng; + } + if (d.latitude && d.longitude) { + query = query + d.latitude + ',' + d.longitude; + } + } + return query; + }, + + /** + * 计算角度 + */ + rad(d) { + return d * Math.PI / 180.0; + }, + /** + * 处理终点location数组 + * @return 返回终点数组 + */ + getEndLocation(location){ + var to = location.split(';'); + var endLocation = []; + for (var i = 0; i < to.length; i++) { + endLocation.push({ + lat: parseFloat(to[i].split(',')[0]), + lng: parseFloat(to[i].split(',')[1]) + }) + } + return endLocation; + }, + + /** + * 计算两点间直线距离 + * @param a 表示纬度差 + * @param b 表示经度差 + * @return 返回的是距离,单位m + */ + getDistance(latFrom, lngFrom, latTo, lngTo) { + var radLatFrom = this.rad(latFrom); + var radLatTo = this.rad(latTo); + var a = radLatFrom - radLatTo; + var b = this.rad(lngFrom) - this.rad(lngTo); + var distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLatFrom) * Math.cos(radLatTo) * Math.pow(Math.sin(b / 2), 2))); + distance = distance * EARTH_RADIUS; + distance = Math.round(distance * 10000) / 10000; + return parseFloat(distance.toFixed(0)); + }, + /** + * 使用微信接口进行定位 + */ + getWXLocation(success, fail, complete) { + wx.getLocation({ + type: 'gcj02', + success: success, + fail: fail, + complete: complete + }); + }, + + /** + * 获取location参数 + */ + getLocationParam(location) { + if (typeof location == 'string') { + var locationArr = location.split(','); + if (locationArr.length === 2) { + location = { + latitude: location.split(',')[0], + longitude: location.split(',')[1] + }; + } else { + location = {}; + } + } + return location; + }, + + /** + * 回调函数默认处理 + */ + polyfillParam(param) { + param.success = param.success || function () { }; + param.fail = param.fail || function () { }; + param.complete = param.complete || function () { }; + }, + + /** + * 验证param对应的key值是否为空 + * + * @param {Object} param 接口参数 + * @param {String} key 对应参数的key + */ + checkParamKeyEmpty(param, key) { + if (!param[key]) { + var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + key +'参数格式有误'); + param.fail(errconf); + param.complete(errconf); + return true; + } + return false; + }, + + /** + * 验证参数中是否存在检索词keyword + * + * @param {Object} param 接口参数 + */ + checkKeyword(param){ + return !this.checkParamKeyEmpty(param, 'keyword'); + }, + + /** + * 验证location值 + * + * @param {Object} param 接口参数 + */ + checkLocation(param) { + var location = this.getLocationParam(param.location); + if (!location || !location.latitude || !location.longitude) { + var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' location参数格式有误'); + param.fail(errconf); + param.complete(errconf); + return false; + } + return true; + }, + + /** + * 构造错误数据结构 + * @param {Number} errCode 错误码 + * @param {Number} errMsg 错误描述 + */ + buildErrorConfig(errCode, errMsg) { + return { + status: errCode, + message: errMsg + }; + }, + + /** + * + * 数据处理函数 + * 根据传入参数不同处理不同数据 + * @param {String} feature 功能名称 + * search 地点搜索 + * suggest关键词提示 + * reverseGeocoder逆地址解析 + * geocoder地址解析 + * getCityList获取城市列表:父集 + * getDistrictByCityId获取区县列表:子集 + * calculateDistance距离计算 + * @param {Object} param 接口参数 + * @param {Object} data 数据 + */ + handleData(param,data,feature){ + if (feature == 'search') { + var searchResult = data.data; + var searchSimplify = []; + for (var i = 0; i < searchResult.length; i++) { + searchSimplify.push({ + id: searchResult[i].id || null, + title: searchResult[i].title || null, + latitude: searchResult[i].location && searchResult[i].location.lat || null, + longitude: searchResult[i].location && searchResult[i].location.lng || null, + address: searchResult[i].address || null, + category: searchResult[i].category || null, + tel: searchResult[i].tel || null, + adcode: searchResult[i].ad_info && searchResult[i].ad_info.adcode || null, + city: searchResult[i].ad_info && searchResult[i].ad_info.city || null, + district: searchResult[i].ad_info && searchResult[i].ad_info.district || null, + province: searchResult[i].ad_info && searchResult[i].ad_info.province || null + }) + } + param.success(data, { + searchResult: searchResult, + searchSimplify: searchSimplify + }) + } else if (feature == 'suggest') { + var suggestResult = data.data; + var suggestSimplify = []; + for (var i = 0; i < suggestResult.length; i++) { + suggestSimplify.push({ + adcode: suggestResult[i].adcode || null, + address: suggestResult[i].address || null, + category: suggestResult[i].category || null, + city: suggestResult[i].city || null, + district: suggestResult[i].district || null, + id: suggestResult[i].id || null, + latitude: suggestResult[i].location && suggestResult[i].location.lat || null, + longitude: suggestResult[i].location && suggestResult[i].location.lng || null, + province: suggestResult[i].province || null, + title: suggestResult[i].title || null, + type: suggestResult[i].type || null + }) + } + param.success(data, { + suggestResult: suggestResult, + suggestSimplify: suggestSimplify + }) + } else if (feature == 'reverseGeocoder') { + var reverseGeocoderResult = data.result; + var reverseGeocoderSimplify = { + address: reverseGeocoderResult.address || null, + latitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lat || null, + longitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lng || null, + adcode: reverseGeocoderResult.ad_info && reverseGeocoderResult.ad_info.adcode || null, + city: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.city || null, + district: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.district || null, + nation: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.nation || null, + province: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.province || null, + street: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street || null, + street_number: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street_number || null, + recommend: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.recommend || null, + rough: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.rough || null + }; + if (reverseGeocoderResult.pois) {//判断是否返回周边poi + var pois = reverseGeocoderResult.pois; + var poisSimplify = []; + for (var i = 0;i < pois.length;i++) { + poisSimplify.push({ + id: pois[i].id || null, + title: pois[i].title || null, + latitude: pois[i].location && pois[i].location.lat || null, + longitude: pois[i].location && pois[i].location.lng || null, + address: pois[i].address || null, + category: pois[i].category || null, + adcode: pois[i].ad_info && pois[i].ad_info.adcode || null, + city: pois[i].ad_info && pois[i].ad_info.city || null, + district: pois[i].ad_info && pois[i].ad_info.district || null, + province: pois[i].ad_info && pois[i].ad_info.province || null + }) + } + param.success(data,{ + reverseGeocoderResult: reverseGeocoderResult, + reverseGeocoderSimplify: reverseGeocoderSimplify, + pois: pois, + poisSimplify: poisSimplify + }) + } else { + param.success(data, { + reverseGeocoderResult: reverseGeocoderResult, + reverseGeocoderSimplify: reverseGeocoderSimplify + }) + } + } else if (feature == 'geocoder') { + var geocoderResult = data.result; + var geocoderSimplify = { + title: geocoderResult.title || null, + latitude: geocoderResult.location && geocoderResult.location.lat || null, + longitude: geocoderResult.location && geocoderResult.location.lng || null, + adcode: geocoderResult.ad_info && geocoderResult.ad_info.adcode || null, + province: geocoderResult.address_components && geocoderResult.address_components.province || null, + city: geocoderResult.address_components && geocoderResult.address_components.city || null, + district: geocoderResult.address_components && geocoderResult.address_components.district || null, + street: geocoderResult.address_components && geocoderResult.address_components.street || null, + street_number: geocoderResult.address_components && geocoderResult.address_components.street_number || null, + level: geocoderResult.level || null + }; + param.success(data,{ + geocoderResult: geocoderResult, + geocoderSimplify: geocoderSimplify + }); + } else if (feature == 'getCityList') { + var provinceResult = data.result[0]; + var cityResult = data.result[1]; + var districtResult = data.result[2]; + param.success(data,{ + provinceResult: provinceResult, + cityResult: cityResult, + districtResult: districtResult + }); + } else if (feature == 'getDistrictByCityId') { + var districtByCity = data.result[0]; + param.success(data, districtByCity); + } else if (feature == 'calculateDistance') { + var calculateDistanceResult = data.result.elements; + var distance = []; + for (var i = 0; i < calculateDistanceResult.length; i++){ + distance.push(calculateDistanceResult[i].distance); + } + param.success(data, { + calculateDistanceResult: calculateDistanceResult, + distance: distance + }); + } else if (feature == 'direction') { + var direction = data.result.routes; + param.success(data,direction); + } else { + param.success(data); + } + }, + + /** + * 构造微信请求参数,公共属性处理 + * + * @param {Object} param 接口参数 + * @param {Object} param 配置项 + * @param {String} feature 方法名 + */ + buildWxRequestConfig(param, options, feature) { + var that = this; + options.header = { "content-type": "application/json" }; + options.method = 'GET'; + options.success = function (res) { + var data = res.data; + if (data.status === 0) { + that.handleData(param, data, feature); + } else { + param.fail(data); + } + }; + options.fail = function (res) { + res.statusCode = ERROR_CONF.WX_ERR_CODE; + param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + }; + options.complete = function (res) { + var statusCode = +res.statusCode; + switch(statusCode) { + case ERROR_CONF.WX_ERR_CODE: { + param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + break; + } + case ERROR_CONF.WX_OK_CODE: { + var data = res.data; + if (data.status === 0) { + param.complete(data); + } else { + param.complete(that.buildErrorConfig(data.status, data.message)); + } + break; + } + default:{ + param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG)); + } + + } + }; + return options; + }, + + /** + * 处理用户参数是否传入坐标进行不同的处理 + */ + locationProcess(param, locationsuccess, locationfail, locationcomplete) { + var that = this; + locationfail = locationfail || function (res) { + res.statusCode = ERROR_CONF.WX_ERR_CODE; + param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + }; + locationcomplete = locationcomplete || function (res) { + if (res.statusCode == ERROR_CONF.WX_ERR_CODE) { + param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + } + }; + if (!param.location) { + that.getWXLocation(locationsuccess, locationfail, locationcomplete); + } else if (that.checkLocation(param)) { + var location = Utils.getLocationParam(param.location); + locationsuccess(location); + } + } +}; + + +class QQMapWX { + + /** + * 构造函数 + * + * @param {Object} options 接口参数,key 为必选参数 + */ + constructor(options) { + if (!options.key) { + throw Error('key值不能为空'); + } + this.key = options.key; + }; + + /** + * POI周边检索 + * + * @param {Object} options 接口参数对象 + * + * 参数对象结构可以参考 + * @see http://lbs.qq.com/webservice_v1/guide-search.html + */ + search(options) { + var that = this; + options = options || {}; + + Utils.polyfillParam(options); + + if (!Utils.checkKeyword(options)) { + return; + } + + var requestParam = { + keyword: options.keyword, + orderby: options.orderby || '_distance', + page_size: options.page_size || 10, + page_index: options.page_index || 1, + output: 'json', + key: that.key + }; + + if (options.address_format) { + requestParam.address_format = options.address_format; + } + + if (options.filter) { + requestParam.filter = options.filter; + } + + var distance = options.distance || "1000"; + var auto_extend = options.auto_extend || 1; + var region = null; + var rectangle = null; + + //判断城市限定参数 + if (options.region) { + region = options.region; + } + + //矩形限定坐标(暂时只支持字符串格式) + if (options.rectangle) { + rectangle = options.rectangle; + } + + var locationsuccess = function (result) { + if (region && !rectangle) { + //城市限定参数拼接 + requestParam.boundary = "region(" + region + "," + auto_extend + "," + result.latitude + "," + result.longitude + ")"; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'search'); + } + } else if (rectangle && !region) { + //矩形搜索 + requestParam.boundary = "rectangle(" + rectangle + ")"; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'search'); + } + } else { + requestParam.boundary = "nearby(" + result.latitude + "," + result.longitude + "," + distance + "," + auto_extend + ")"; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'search'); + } + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SEARCH, + data: requestParam + }, 'search')); + }; + Utils.locationProcess(options, locationsuccess); + }; + + /** + * sug模糊检索 + * + * @param {Object} options 接口参数对象 + * + * 参数对象结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-suggestion.html + */ + getSuggestion(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (!Utils.checkKeyword(options)) { + return; + } + + var requestParam = { + keyword: options.keyword, + region: options.region || '全国', + region_fix: options.region_fix || 0, + policy: options.policy || 0, + page_size: options.page_size || 10,//控制显示条数 + page_index: options.page_index || 1,//控制页数 + get_subpois : options.get_subpois || 0,//返回子地点 + output: 'json', + key: that.key + }; + //长地址 + if (options.address_format) { + requestParam.address_format = options.address_format; + } + //过滤 + if (options.filter) { + requestParam.filter = options.filter; + } + //排序 + if (options.location) { + var locationsuccess = function (result) { + requestParam.location = result.latitude + ',' + result.longitude; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest'); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SUGGESTION, + data: requestParam + }, "suggest")); + }; + Utils.locationProcess(options, locationsuccess); + } else { + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest'); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SUGGESTION, + data: requestParam + }, "suggest")); + } + }; + + /** + * 逆地址解析 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-gcoder.html + */ + reverseGeocoder(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + var requestParam = { + coord_type: options.coord_type || 5, + get_poi: options.get_poi || 0, + output: 'json', + key: that.key + }; + if (options.poi_options) { + requestParam.poi_options = options.poi_options + } + + var locationsuccess = function (result) { + requestParam.location = result.latitude + ',' + result.longitude; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'reverseGeocoder'); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_GET_GEOCODER, + data: requestParam + }, 'reverseGeocoder')); + }; + Utils.locationProcess(options, locationsuccess); + }; + + /** + * 地址解析 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-geocoder.html + */ + geocoder(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'address')) { + return; + } + + var requestParam = { + address: options.address, + output: 'json', + key: that.key + }; + + //城市限定 + if (options.region) { + requestParam.region = options.region; + } + + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'geocoder'); + } + + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_GET_GEOCODER, + data: requestParam + },'geocoder')); + }; + + + /** + * 获取城市列表 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-region.html + */ + getCityList(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + var requestParam = { + output: 'json', + key: that.key + }; + + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'getCityList'); + } + + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_CITY_LIST, + data: requestParam + },'getCityList')); + }; + + /** + * 获取对应城市ID的区县列表 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-region.html + */ + getDistrictByCityId(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'id')) { + return; + } + + var requestParam = { + id: options.id || '', + output: 'json', + key: that.key + }; + + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'getDistrictByCityId'); + } + + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_AREA_LIST, + data: requestParam + },'getDistrictByCityId')); + }; + + /** + * 用于单起点到多终点的路线距离(非直线距离)计算: + * 支持两种距离计算方式:步行和驾车。 + * 起点到终点最大限制直线距离10公里。 + * + * 新增直线距离计算。 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-distance.html + */ + calculateDistance(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'to')) { + return; + } + + var requestParam = { + mode: options.mode || 'walking', + to: Utils.location2query(options.to), + output: 'json', + key: that.key + }; + + if (options.from) { + options.location = options.from; + } + + //计算直线距离 + if(requestParam.mode == 'straight'){ + var locationsuccess = function (result) { + var locationTo = Utils.getEndLocation(requestParam.to);//处理终点坐标 + var data = { + message:"query ok", + result:{ + elements:[] + }, + status:0 + }; + for (var i = 0; i < locationTo.length; i++) { + data.result.elements.push({//将坐标存入 + distance: Utils.getDistance(result.latitude, result.longitude, locationTo[i].lat, locationTo[i].lng), + duration:0, + from:{ + lat: result.latitude, + lng:result.longitude + }, + to:{ + lat: locationTo[i].lat, + lng: locationTo[i].lng + } + }); + } + var calculateResult = data.result.elements; + var distanceResult = []; + for (var i = 0; i < calculateResult.length; i++) { + distanceResult.push(calculateResult[i].distance); + } + return options.success(data,{ + calculateResult: calculateResult, + distanceResult: distanceResult + }); + }; + + Utils.locationProcess(options, locationsuccess); + } else { + var locationsuccess = function (result) { + requestParam.from = result.latitude + ',' + result.longitude; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'calculateDistance'); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_DISTANCE, + data: requestParam + },'calculateDistance')); + }; + + Utils.locationProcess(options, locationsuccess); + } + }; + + /** + * 路线规划: + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * https://lbs.qq.com/webservice_v1/guide-road.html + */ + direction(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'to')) { + return; + } + + var requestParam = { + output: 'json', + key: that.key + }; + + //to格式处理 + if (typeof options.to == 'string') { + requestParam.to = options.to; + } else { + requestParam.to = options.to.latitude + ',' + options.to.longitude; + } + //初始化局部请求域名 + var SET_URL_DIRECTION = null; + //设置默认mode属性 + options.mode = options.mode || MODE.driving; + + //设置请求域名 + SET_URL_DIRECTION = URL_DIRECTION + options.mode; + + if (options.from) { + options.location = options.from; + } + + if (options.mode == MODE.driving) { + if (options.from_poi) { + requestParam.from_poi = options.from_poi; + } + if (options.heading) { + requestParam.heading = options.heading; + } + if (options.speed) { + requestParam.speed = options.speed; + } + if (options.accuracy) { + requestParam.accuracy = options.accuracy; + } + if (options.road_type) { + requestParam.road_type = options.road_type; + } + if (options.to_poi) { + requestParam.to_poi = options.to_poi; + } + if (options.from_track) { + requestParam.from_track = options.from_track; + } + if (options.waypoints) { + requestParam.waypoints = options.waypoints; + } + if (options.policy) { + requestParam.policy = options.policy; + } + if (options.plate_number) { + requestParam.plate_number = options.plate_number; + } + } + + if (options.mode == MODE.transit) { + if (options.departure_time) { + requestParam.departure_time = options.departure_time; + } + if (options.policy) { + requestParam.policy = options.policy; + } + } + + var locationsuccess = function (result) { + requestParam.from = result.latitude + ',' + result.longitude; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'direction',options.mode); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: SET_URL_DIRECTION, + data: requestParam + }, 'direction')); + }; + + Utils.locationProcess(options, locationsuccess); + } +}; + +module.exports = QQMapWX; \ No newline at end of file diff --git a/utils/util.js b/utils/util.js index dbadbb8..b4d5669 100644 --- a/utils/util.js +++ b/utils/util.js @@ -1,3 +1,6 @@ +/** + * 格式化时间 + */ const formatTime = date => { const year = date.getFullYear() const month = date.getMonth() + 1 @@ -6,7 +9,17 @@ const formatTime = date => { const minute = date.getMinutes() const second = date.getSeconds() - return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') + return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':') +} +/** + * 格式化千分位金额并返回 + */ +const formatMoney = value => { + if (Number(value) === 0) { + return 0.00 + } + var foramtMoney = value.toLocaleString('en-US') + return foramtMoney } const formatNumber = n => { @@ -15,5 +28,6 @@ const formatNumber = n => { } module.exports = { - formatTime: formatTime + formatTime: formatTime, + formatMoney: formatMoney } -- Gitee From 70efa0222786ab142d1333ec6c76d512b56b2127 Mon Sep 17 00:00:00 2001 From: "2689725568@qq.com" Date: Mon, 23 Sep 2019 23:36:06 +0800 Subject: [PATCH 05/14] =?UTF-8?q?feat:=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.js | 6 +- pages/consume/consume.js | 87 +++++++++--- pages/consume/consume.wxml | 1 + pages/domoTest/uploadTest/uploadTest.js | 20 ++- pages/domoTest/uploadTest/uploadTest.wxml | 2 +- pages/index/authoriztion/authoriztion.js | 4 +- .../bookkeepingdetail/bookkeepingdetail.js | 3 +- .../bookkeepingdetail/bookkeepingdetail.wxml | 128 +++++++++--------- .../bookkeepingdetail/bookkeepingdetail.wxss | 113 +++++++++++++--- project.config.json | 35 ++++- utils/ajax.js | 47 +++++-- utils/api.js | 4 +- 12 files changed, 315 insertions(+), 135 deletions(-) diff --git a/app.js b/app.js index 7eef2dd..6c64110 100644 --- a/app.js +++ b/app.js @@ -27,7 +27,7 @@ App({ if(res.code && res.code != '') { // 发送 res.code 到后台换取 openId, sessionKey, unionId that.userLoginCode(res.code).then(function(response) { - console.log('进来了') + console.log('进来了',that.callback) if (that.callback) { console.log('app request....') that.callback(); @@ -42,7 +42,7 @@ App({ let that = this return new Promise((resolve,reject) => { let requestUrl = API.api.users + '?code=' + code; - AJAX.getRequest(requestUrl).then(function(response) { + AJAX.getRequest(requestUrl,false).then(function(response) { if (response.code == 200) { // 存储openId信息、用户信息 wx.setStorageSync('openId', response.data.openId) @@ -83,7 +83,7 @@ App({ requestData.nickName = userInfo.nickName requestData.avatarUrl = userInfo.avatarUrl; let requestUrl = API.api.users + '/' + Number(userId) - AJAX.postRequest(requestUrl,requestData).then(function(response) { + AJAX.postRequest(requestUrl,requestData,false).then(function(response) { console.log('用户信息更新成功啦') }) }, diff --git a/pages/consume/consume.js b/pages/consume/consume.js index 81cd381..d618854 100644 --- a/pages/consume/consume.js +++ b/pages/consume/consume.js @@ -28,13 +28,16 @@ Page({ //地理位置 address: '', // 省 市 区 - region: [] + region: [], + // 上传保存的图片 + imagePathList:[] }, /** * 生命周期函数--监听页面加载 */ - onLoad: function(options) { + onLoad: function (options) { + console.log(`这里是onLoad`) // 获取到微信地理位置 this.getWxLocation() }, @@ -69,14 +72,49 @@ Page({ }) }) }, + /** + * 上传图片 + */ + uploadFile() { + let that = this + wx.chooseImage({ + count: 2, + success: function (res) { + const tempFilePaths = res.tempFilePaths; + let requestUrl = API.api.uploadFile + '/bookkeeping/bookkeeping' + var imagePathList = [] + for (var i = 0; i < tempFilePaths.length; i++) { + wx.uploadFile({ + url: requestUrl, + filePath: tempFilePaths[i], + name: 'file', + header: { + "Authorization": wx.getStorageSync('token') + }, + success: function (res) { + let resData = JSON.parse(res.data) + if (resData.code == 200) { + imagePathList.push(resData.data) + console.log(`imagePahtList:` + imagePathList) + that.setData({ + imagePathList: imagePathList + }) + } + } + }) + } + + } + }) + }, /** * 支出收入类型转换 */ - tabTap: function(event) { + tabTap: function (event) { console.log(event.currentTarget.dataset.type) this.getConsumeType(event.currentTarget.dataset.type) }, - getConsumeType: function(type) { + getConsumeType: function (type) { let that = this; let requestUrl = API.api.consumeTypes + '/type?type=' + type; AJAX.getRequest(requestUrl).then(response => { @@ -89,11 +127,11 @@ Page({ /** * 生命周期函数--监听页面初次渲染完成 */ - onReady: function() { + onReady: function () { }, submitInfo: function (e) { - if(e.detail.formId) { + if (e.detail.formId) { AJAX.saveFormId(e.detail.formId) } }, @@ -101,21 +139,22 @@ Page({ let that = this console.log('你是不是点击了icon' + JSON.stringify(event.currentTarget.dataset.type)) this.data.consumeTypeList.forEach(item => { - if(item.id == event.currentTarget.dataset.type) { + if (item.id == event.currentTarget.dataset.type) { // 进行保存数据信息 console.log('匹配到了。。。。。。' + item.id) - that.setData ({ - consumeType:item, + that.setData({ + consumeType: item, consumeTypeId: event.currentTarget.dataset.type }) return; } - }) + }) }, /** * 生命周期函数--监听页面显示 */ - onShow: function() { + onShow: function () { + console.log(`这里是onshow`) // 格式化数据信息 this.setData({ toatlMoney: 0, @@ -130,40 +169,40 @@ Page({ /** * 生命周期函数--监听页面隐藏 */ - onHide: function() { + onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ - onUnload: function() { + onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ - onPullDownRefresh: function() { + onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ - onReachBottom: function() { + onReachBottom: function () { }, /** * 用户点击右上角分享 */ - onShareAppMessage: function() { + onShareAppMessage: function () { }, - /** - * 添加数据 - */ + /** + * 添加数据 + */ addType: function (event) { switch (event.currentTarget.dataset.type) { // 添加成功 @@ -260,6 +299,8 @@ Page({ TOAST.showToastSuccess('金额不能为0') return } + let tempPaths = [] + // 进行金额转换 money = money * 100; let requestObj = {}; @@ -267,8 +308,14 @@ Page({ requestObj.consumeTypeId = this.data.consumeTypeId; requestObj.money = money; requestObj.address = this.data.address; + console.log(this.data.imagePathList) + if (this.data.imagePathList.length > 0) { + requestObj.bigImage1 = this.data.imagePathList[0]; + requestObj.bigImage2 = this.data.imagePathList[1] ? this.data.imagePathList[1] : null; + } + console.log('保存的数据来着',requestObj) let requestUrl = API.api.bookkeepingDetails; - AJAX.postRequest(requestUrl,requestObj).then(response => { + AJAX.postRequest(requestUrl, requestObj).then(response => { wx.switchTab({ url: '/pages/index/index' }) diff --git a/pages/consume/consume.wxml b/pages/consume/consume.wxml index 2b106c3..f0bf7e5 100644 --- a/pages/consume/consume.wxml +++ b/pages/consume/consume.wxml @@ -25,6 +25,7 @@ {{item.name}}
+ diff --git a/pages/domoTest/uploadTest/uploadTest.js b/pages/domoTest/uploadTest/uploadTest.js index b6e68f5..e6af127 100644 --- a/pages/domoTest/uploadTest/uploadTest.js +++ b/pages/domoTest/uploadTest/uploadTest.js @@ -7,7 +7,8 @@ Page({ * 页面的初始数据 */ data: { - tempFilePaths: [] + tempFilePaths: [], + imagePath: '' }, /** @@ -27,20 +28,27 @@ Page({ success: function(res) { console.log(res) const tempFilePaths = res.tempFilePaths; - let requestUrl = API.api.uploadFile + '/wxminproject/test' + let requestUrl = API.api.uploadFile + '/bookkeeping/bookkeeping' wx.uploadFile({ url: requestUrl, filePath: tempFilePaths[0], name: 'file', - header: { "Content-Type": "multipart/form-data" }, + header: { + "Content-Type": "multipart/form-data", + "Authorization":" eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1Njg3MzUzNTF9.7-4_1AJIQRtHEsuXHB00HXxHv9uPjJ828nb4pT4xv3s" + }, formData: { 'msg': '提交图片' }, success: function (res) { - console.log(res); - if (res.statusCode == 200) { + console.log(JSON.parse(res.data)); + let resData = JSON.parse(res.data) + if (resData.code == 200) { wx.showToast({ - title: '反馈成功!', + title: '反馈成功!获取到的图片路径是:' + resData.data, + }) + that.setData({ + imagePath: API.api.imageHost + resData.data }) } else { wx.showToast({ diff --git a/pages/domoTest/uploadTest/uploadTest.wxml b/pages/domoTest/uploadTest/uploadTest.wxml index 59c15d0..de48105 100644 --- a/pages/domoTest/uploadTest/uploadTest.wxml +++ b/pages/domoTest/uploadTest/uploadTest.wxml @@ -2,5 +2,5 @@ 上传后的图片显示 - + diff --git a/pages/index/authoriztion/authoriztion.js b/pages/index/authoriztion/authoriztion.js index 02fc50a..2ad0980 100644 --- a/pages/index/authoriztion/authoriztion.js +++ b/pages/index/authoriztion/authoriztion.js @@ -85,7 +85,7 @@ Page({ console.log('准备开始获取数据啦') return new Promise((resolve, reject) => { let requestUrl = API.api.users + '/' + wx.getStorageSync('userId'); - AJAX.getRequest(requestUrl).then(response => { + AJAX.getRequest(requestUrl,false).then(response => { resolve(response.data) }) }) @@ -98,7 +98,7 @@ Page({ requestData.nickName = userInfo.nickName requestData.avatarUrl = userInfo.avatarUrl; let requestUrl = API.api.users + '/' + Number(userId); - AJAX.postRequest(requestUrl,requestData).then(response => { + AJAX.postRequest(requestUrl, requestData, false).then(response => { console.log('用户信息更新成功啦') resolve(response) }) diff --git a/pages/index/bookkeepingdetail/bookkeepingdetail.js b/pages/index/bookkeepingdetail/bookkeepingdetail.js index 9b401cc..341cd98 100644 --- a/pages/index/bookkeepingdetail/bookkeepingdetail.js +++ b/pages/index/bookkeepingdetail/bookkeepingdetail.js @@ -13,7 +13,8 @@ Page({ bookkeepingObj:{}, updateShow: false, // 标记点 - markers: [] + markers: [], + imageHost: API.api.imageHost, }, /** diff --git a/pages/index/bookkeepingdetail/bookkeepingdetail.wxml b/pages/index/bookkeepingdetail/bookkeepingdetail.wxml index 26868e5..071d9b3 100644 --- a/pages/index/bookkeepingdetail/bookkeepingdetail.wxml +++ b/pages/index/bookkeepingdetail/bookkeepingdetail.wxml @@ -1,76 +1,76 @@ - - - - - 消费时间: - {{bookkeepingObj.createTimeView}} - - - 消费金额: - {{bookkeepingObj.moneyView}} 元 - - - 消费地点: - {{bookkeepingObj.address}} - - - - + + + + 消费时间 + {{bookkeepingObj.createTimeView}} + + + 消费金额 + {{bookkeepingObj.moneyView}} + + + 消费地点 {{bookkeepingObj.address}} + + - - 记录图片: - - - + + + 消费记录 + + + + + + + + - - - 备注: - {{bookkeepingObj.remarks}} - - - - 消费时间: - {{bookkeepingObj.createTimeView}} - - - 消费金额: - - - - 消费地点: - {{bookkeepingObj.address}} + + 备注 + + + + + + + 消费时间 + {{bookkeepingObj.createTimeView}} + + + 消费金额 + + - - - + + + 消费地点 {{bookkeepingObj.address}} + + + 消费地点有误,手动选择消费地点 + - - 记录图片: - - - + + + 消费记录 + + + + + + - - - 备注: - {{bookkeepingObj.remarks}} - - - - - - - - + + 备注 + + + + + + \ No newline at end of file diff --git a/pages/index/bookkeepingdetail/bookkeepingdetail.wxss b/pages/index/bookkeepingdetail/bookkeepingdetail.wxss index 996c203..da4766c 100644 --- a/pages/index/bookkeepingdetail/bookkeepingdetail.wxss +++ b/pages/index/bookkeepingdetail/bookkeepingdetail.wxss @@ -1,25 +1,101 @@ /* pages/index/bookkeepingdetail/bookkeepingdetail.wxss */ -page { - background-color: whitesmoke +/* 地图样式 */ +.map-style { + width: 100%; + height: 240rpx; + margin-bottom: 20rpx; + padding: 10rpx 0rpx; + margin-right: 1.5rem; +} + +.add-growers { + width: 100%; + min-height: 100vh; } -.bookkeeping-detail { - padding: 20rpx 20rpx; + +.add-growers-form-group { + width: 100%; + height: 3rem; + background: rgba(255, 255, 255, 1); + display: flex; + align-items: center; + border-bottom: 0.05rem solid rgba(235, 235, 235, 1); + padding: 0 0.75rem; } -.detail-data { - display: flex + +.add-growers-form-group .add-growers-form-label { + width: 20%; } -.detail-data .value { - width: 40%; - margin-bottom: 20rpx; + +.add-growers-form-label_more { + width: 30%; } -.detail-data .key { - margin-bottom: 20rpx; - width:100%; + +.add-growers-form-input { + width: 70%; + display: flex; + align-items: center; + margin-left: 1.5rem; +} + +.add-growers-form-input input { + width: 13rem; + height: 1.55rem; + border-radius: 0.15rem; + font-size: 0.9rem; + font-family: PingFangSC-Medium; + font-weight: 500; + background-color: #fff; +} + +.add-id-form-group { + height: 9rem; + display: flex; + flex-flow: column wrap; + padding: 1.25rem 0.75rem; } -.detail-data .key image{ - width:100%; - height: 250rpx; + +.upload-wrap { + align-items: center; + justify-content: space-between; + display: flex; + flex-flow: row wrap; + width: 100%; + height: 7rem; +} + +.cert-front-upload { + width: 41%; + height: 100%; + margin-top: 0.5rem; + margin-right: 1.5rem; +} + +.cert-front-upload image { + width: 100%; + height: 100%; +} + +.add-growers-form-group_more { + width: 100%; + height: 8rem; + background: rgba(255, 255, 255, 1); +} + +.add-growers-form-group_more .add-growers-form-label { + padding: 0.5rem 0.5rem; } + +textarea { + display: inline-block; + width: 100%; + padding: 0.75rem; + font-size: 0.7rem; + font-family: PingFangSC-Medium; + font-weight: 500; + border-radius: 0.15rem; +} +/* 底层按钮 */ .detail-button { display: flex; } @@ -41,10 +117,3 @@ page { bottom: 0; margin-bottom: 20rpx; } -/* 地图样式 */ -.map-style { - width: 100%; - height: 240rpx; - margin-bottom: 20rpx; - padding: 10rpx 0rpx; -} \ No newline at end of file diff --git a/project.config.json b/project.config.json index 89a7ea5..e12c7a4 100644 --- a/project.config.json +++ b/project.config.json @@ -9,8 +9,17 @@ "postcss": true, "minified": true, "newFeature": true, + "coverView": true, "autoAudits": false, - "checkInvalidKey": true + "uglifyFileName": true, + "checkInvalidKey": true, + "checkSiteMap": true, + "uploadWithSourceMap": true, + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + } }, "compileType": "miniprogram", "libVersion": "2.6.5", @@ -31,13 +40,35 @@ "current": -1, "list": [] }, + "plugin": { + "current": -1, + "list": [] + }, "game": { "currentL": -1, "list": [] }, - "miniprogram": { + "gamePlugin": { "current": -1, "list": [] + }, + "miniprogram": { + "current": 0, + "list": [ + { + "id": -1, + "name": "pages/domoTest/uploadTest/uploadTest", + "pathName": "pages/domoTest/uploadTest/uploadTest", + "query": "", + "scene": null + }, + { + "id": -1, + "name": "pages/index/bookkeepingdetail/bookkeepingdetail", + "pathName": "pages/index/bookkeepingdetail/bookkeepingdetail", + "scene": null + } + ] } } } \ No newline at end of file diff --git a/utils/ajax.js b/utils/ajax.js index 8f83672..20dd9ff 100644 --- a/utils/ajax.js +++ b/utils/ajax.js @@ -4,8 +4,16 @@ const API = require('../utils/api.js') * 封装HTTPget请求, * url:请求路径 */ -function getRequest(url){ - return new Promise(function(resolve,reject) { +function getRequest(url, loadding = true) { + // 是否开启loadding,默认开启 + if (loadding) { + wx.showLoading({ + title: '加载中', + // 是否显示透明蒙层,防止触摸穿透 + mask: true + }) + } + return new Promise(function (resolve, reject) { wx.request({ url: url, method: 'GET', @@ -13,18 +21,22 @@ function getRequest(url){ 'Content-type': 'application/json', 'Authorization': wx.getStorageSync('token') }, - success:function(response) { + success: function (response) { if (response.data.code === 200) { resolve(response.data) - } else{ + } else { Toast.showToastSuccess(response.msg) } + // 取消loadding + wx.hideLoading(); }, - fail:function(err) { + fail: function (err) { Toast.showToastSuccess(err.msg) + // 取消loadding + wx.hideLoading(); } }) - }) + }) } @@ -33,8 +45,16 @@ function getRequest(url){ * url:请求路径 * param:请求数据 */ -function postRequest(url,param) { - return new Promise(function(resolve,reject) { +function postRequest(url, param, loadding = true) { + if (loadding) { + // 加载loadding + wx.showLoading({ + title: '加载中', + // 是否显示透明蒙层,防止触摸穿透 + mask: true + }) + } + return new Promise(function (resolve, reject) { wx.request({ url: url, method: 'POST', @@ -43,17 +63,21 @@ function postRequest(url,param) { 'Content-type': 'application/json', 'Authorization': wx.getStorageSync('token') }, - success:function(response) { + success: function (response) { if (response.data.code === 200) { resolve(response.data) } else { Toast.showToastSuccess(response.msg) } + //取消loadding + wx.hideLoading(); }, - fail:function(err) { + fail: function (err) { Toast.showToastSuccess(response.msg) + //取消loadding + wx.hideLoading(); } - + }) }) } @@ -86,7 +110,6 @@ function saveFormId(formId) { - module.exports = { getRequest: getRequest, postRequest: postRequest, diff --git a/utils/api.js b/utils/api.js index e6246bb..0054696 100644 --- a/utils/api.js +++ b/utils/api.js @@ -4,8 +4,8 @@ let api = { // TODO:配置接口文档信息 -api.baseUrl = 'https://192.168.1.102:12000'; -// api.baseUrl = 'https://be.yangyoki.top:12000'; +// api.baseUrl = 'https://192.168.1.102:12000'; +api.baseUrl = 'https://be.yangyoki.top:12000'; api.imageHostDowm = 'https://be.yangyoki.top:12000'; api.imageHost = 'https://be.yangyoki.top:12000/'; -- Gitee From 184bfce0351531f9dc995be13c4d4a241ae1299f Mon Sep 17 00:00:00 2001 From: "2689725568@qq.com" Date: Mon, 23 Sep 2019 23:36:25 +0800 Subject: [PATCH 06/14] =?UTF-8?q?feat:=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- image/demo.jpg | Bin 0 -> 24246 bytes image/dingwei.png | Bin 0 -> 68799 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 image/demo.jpg create mode 100644 image/dingwei.png diff --git a/image/demo.jpg b/image/demo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6ebf2cae1882739e0884adbeb7bd12cf04df9bb0 GIT binary patch literal 24246 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 literal 0 HcmV?d00001 diff --git a/image/dingwei.png b/image/dingwei.png new file mode 100644 index 0000000000000000000000000000000000000000..8f43ad10396950a2725e98c77c0e485cec73762e GIT binary patch literal 68799 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 Date: Sun, 13 Oct 2019 21:49:08 +0800 Subject: [PATCH 07/14] =?UTF-8?q?feat:=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.json | 1 + pages/consume/consume.wxml | 10 +- pages/consume/consume.wxss | 16 +- pages/domoTest/kyhbTest/kyhbTest.js | 160 +++++++++++++++++ pages/domoTest/kyhbTest/kyhbTest.json | 3 + pages/domoTest/kyhbTest/kyhbTest.wxml | 28 +++ pages/domoTest/kyhbTest/kyhbTest.wxss | 56 ++++++ pages/index/authoriztion/authoriztion.js | 3 + .../bookkeepingdetail/bookkeepingdetail.js | 161 ++++++++++++++---- .../bookkeepingdetail/bookkeepingdetail.wxml | 24 +-- .../bookkeepingdetail/bookkeepingdetail.wxss | 8 +- pages/index/index.js | 3 +- pages/me/me.js | 3 +- pages/me/me.wxml | 2 +- utils/ajax.js | 48 +++++- utils/api.js | 4 +- utils/util.js | 16 +- 17 files changed, 477 insertions(+), 69 deletions(-) create mode 100644 pages/domoTest/kyhbTest/kyhbTest.js create mode 100644 pages/domoTest/kyhbTest/kyhbTest.json create mode 100644 pages/domoTest/kyhbTest/kyhbTest.wxml create mode 100644 pages/domoTest/kyhbTest/kyhbTest.wxss diff --git a/app.json b/app.json index 6fc7662..14d8d2f 100644 --- a/app.json +++ b/app.json @@ -1,6 +1,7 @@ { "pages": [ "pages/index/authoriztion/authoriztion", + "pages/domoTest/kyhbTest/kyhbTest", "pages/domoTest/uploadTest/uploadTest", "pages/domoTest/regionTest/test", "pages/domoTest/getFormId/getformId", diff --git a/pages/consume/consume.wxml b/pages/consume/consume.wxml index f0bf7e5..df7ec94 100644 --- a/pages/consume/consume.wxml +++ b/pages/consume/consume.wxml @@ -7,8 +7,8 @@ - {{consumeType.name}} @@ -21,11 +21,11 @@ - - {{item.name}} + + {{item.name}} - + diff --git a/pages/consume/consume.wxss b/pages/consume/consume.wxss index 32908e8..c29e370 100644 --- a/pages/consume/consume.wxss +++ b/pages/consume/consume.wxss @@ -41,16 +41,17 @@ page { flex-direction: row; flex-wrap:wrap; position: relative; + border-bottom:1rpx solid #ccc; } .consume-type-icon .consume-icon { - width: 16%; - padding: 20rpx 15rpx; - margin-top: 5rpx; + width: 15%; + padding: 5rpx 10rpx; } .consume-type-icon span { display: flex; align-items: center; - padding: 0rpx 15rpx; + padding: 0rpx; + font-size: 35rpx; } .consume-type { @@ -63,16 +64,17 @@ page { width: 16%; padding: 20rpx 15rpx; margin-top: 5rpx; + } .consume-icon image { width: 100%; height: 100%; } -.consume-type span { +.consume-type center { display: flex; - align-items: center; padding: 0rpx 15rpx; + text-align: center; } .consume-money { position: absolute; @@ -111,4 +113,4 @@ page { } .bg_blue { background-color: blue; -} */ \ No newline at end of file +} */ diff --git a/pages/domoTest/kyhbTest/kyhbTest.js b/pages/domoTest/kyhbTest/kyhbTest.js new file mode 100644 index 0000000..61e9c94 --- /dev/null +++ b/pages/domoTest/kyhbTest/kyhbTest.js @@ -0,0 +1,160 @@ +// pages/compose/compose.js +const API = require('../../../utils/api.js'); +const TOAST = require('../../../utils/toast.js'); +const AJAX = require('../../../utils/ajax.js'); +Page({ + + /** + * 页面的初始数据 + */ + data: { + // 合成 + composeList: [], + // 背景图片 + background: 'images/kyhb/colour/1.jpg', + // 瓷砖选择 + ceramicTileList: [], + // 颜色选择 + colourList: [], + //服务器图片地址 + imageHost: API.api.imageHost, + }, + /** + * 瓷砖选择 + */ + getCeramicTile: function (e) { + let indexType = e.currentTarget.dataset.type; + let composeList = this.data.composeList + composeList.forEach(item => { + item.image = indexType + }) + this.setData({ + composeList: composeList + }) + console.log(`indexType:`, this.data.composeList) + }, + /** + * 颜色选择 + */ + getColour: function (e) { + let background = e.currentTarget.dataset.type; + this.setData({ + background: background + }) + }, + //获取网络图片 + getConsumeType: function (type) { + let that = this; + let requestUrl = API.api.consumeTypes + '/type?type=' + type; + AJAX.getRequest(requestUrl).then(response => { + let colourList = [] + let res = response.data + res.forEach(item => { + colourList.push({ + image: item.icon1 + }) + }) + that.setData({ + colourList: colourList + }) + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + let composeList = []; + let ceramicTileList = []; + // let colourList = []; + for (let i = 0; i < 9; i++) { + composeList.push({ + image: 'images/kyhb/ceramictile/1.jpg' + }) + } + this.setData({ + composeList: composeList, + // ceramicTileList: ceramicTileList, + // colourList: colourList + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + // 获取瓷砖选择信息 + this.getKyhbType(0) + // 获取颜色选择信息 + this.getKyhbType(1) + }, + getKyhbType: function(type) { + let that = this; + let requestUrl = API.api.kyhbs + '?type=' + type; + AJAX.getRequest(requestUrl).then(response => { + let res = response.data + let TypeList = [] + res.forEach(item => { + TypeList.push({ + image: item.url + }) + }) + switch (type) { + // 瓷砖选择 + case 0: + that.setData({ + ceramicTileList: TypeList + }) + break; + // 颜色选择 + case 1: + that.setData({ + colourList: TypeList + }) + break; + } + }) + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/domoTest/kyhbTest/kyhbTest.json b/pages/domoTest/kyhbTest/kyhbTest.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/domoTest/kyhbTest/kyhbTest.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/domoTest/kyhbTest/kyhbTest.wxml b/pages/domoTest/kyhbTest/kyhbTest.wxml new file mode 100644 index 0000000..84a4249 --- /dev/null +++ b/pages/domoTest/kyhbTest/kyhbTest.wxml @@ -0,0 +1,28 @@ +康源环保展示效果图 + + + + + + + + + + + 瓷砖选择 + + + + + + + + + 颜色选择 + + + + + + + diff --git a/pages/domoTest/kyhbTest/kyhbTest.wxss b/pages/domoTest/kyhbTest/kyhbTest.wxss new file mode 100644 index 0000000..4c54117 --- /dev/null +++ b/pages/domoTest/kyhbTest/kyhbTest.wxss @@ -0,0 +1,56 @@ +/* pages/compose/compose.wxss */ + +.title { + font-size: 40rpx; + display: flex; + justify-content: center; +} + +.kyhb { + position: relative; + display: flex; + flex-direction: row; + flex-wrap: wrap; +} + +.kyhb_view { + width: 32%; + padding: 4rpx 4rpx; + height: 200rpx; + margin-left: 3rpx; +} + +.kyhb_view image { + width: 100%; + height: 100%; +} +.choice { + display: flex; + flex-direction: row; + flex-wrap: wrap; + width: 100%; +} +/* 瓷砖选择 */ +.ceramic_tile { + width: 49%; + border-right: solid 2rpx black; +} +.ceramic { + display: flex; + flex-direction: row; + flex-wrap: wrap; + width: 100%; +} +.ceramic_tile_image { + width: 31%; + height: 120rpx; + padding: 3rpx 4rpx; +} +.ceramic_tile image { + width: 100%; + height: 100%; +} +/* 颜色选择 */ +.colour { + width: 50%; +} \ No newline at end of file diff --git a/pages/index/authoriztion/authoriztion.js b/pages/index/authoriztion/authoriztion.js index 2ad0980..cd43e8f 100644 --- a/pages/index/authoriztion/authoriztion.js +++ b/pages/index/authoriztion/authoriztion.js @@ -57,6 +57,9 @@ Page({ wx.switchTab({ url: '/pages/index/index' }) + // wx.navigateTo({ + // url: '/pages/domoTest/kyhbTest/kyhbTest' + // }) } }) }, diff --git a/pages/index/bookkeepingdetail/bookkeepingdetail.js b/pages/index/bookkeepingdetail/bookkeepingdetail.js index 341cd98..c3993a8 100644 --- a/pages/index/bookkeepingdetail/bookkeepingdetail.js +++ b/pages/index/bookkeepingdetail/bookkeepingdetail.js @@ -10,17 +10,18 @@ Page({ */ data: { bookkeepingId: '', - bookkeepingObj:{}, + bookkeepingObj: {}, updateShow: false, // 标记点 markers: [], imageHost: API.api.imageHost, + tempFilePaths: '', }, /** * 生命周期函数--监听页面加载 */ - onLoad: function (options) { + onLoad: function(options) { // 获取到记账id console.log(`从记账页面跳转过来的!!!携带的id为:`, options.bookkeepingid) this.setData({ @@ -32,62 +33,152 @@ Page({ /** * 显示保存 */ - updateShowData:function() { - console.log(`来到了显示的` + this.data.updateShow) + updateShowData: function() { + let bookkeepingObj = this.data.bookkeepingObj; + if (!this.data.updateShow) { + // 格式化金额信息Int + let money = FormatUtil.intFormatMoney(this.data.bookkeepingObj.moneyView) + console.log(money) + bookkeepingObj.moneyView = money + } else { + // 格式化金额信息String + let money = FormatUtil.formatMoney(this.data.bookkeepingObj.moneyView) + bookkeepingObj.moneyView = money + console.log(money) + } + this.setData({ - updateShow: !this.data.updateShow + updateShow: !this.data.updateShow, + bookkeepingObj:bookkeepingObj + }) + }, + /** + * 填写备注 + */ + textareaRemark:function(e) { + console.log(`获取到数据了`,e.detail.value) + let bookkeepingObj = this.data.bookkeepingObj; + bookkeepingObj.remarks = e.detail.value + this.setData({ + bookkeepingObj:bookkeepingObj + }) + }, + inputMoney:function(e) { + console.log(`获取到数据了`, e.detail.value) + let bookkeepingObj = this.data.bookkeepingObj; + bookkeepingObj.moneyView = e.detail.value + this.setData({ + bookkeepingObj: bookkeepingObj }) }, /** * 更新保存数据 */ - updateData:function() { + updateData: function() { console.log('这里是保存数据的') - this.updateShowData() + let requestUrl = API.api.bookkeepingDetails + '/' + this.data.bookkeepingObj.id; + // 金额格式化 + let requestData = this.data.bookkeepingObj + requestData.money = Number(requestData.moneyView) * 100; + AJAX.postRequest(requestUrl,requestData).then(response => { + this.updateShowData() + }); + }, /** * 删除数据 */ - deleteData:function() { + deleteData: function() { console.log(`准备删除一条数据`) - + let requestUrl = API.api.bookkeepingDetails + '/' + this.data.bookkeepingObj.id + AJAX.delRequest(requestUrl).then(response => { + console.log(`删除成功,返回主页面`) + wx.switchTab({ + url: '/pages/index/index' + }) + }) + }, + /** + * 上传图片 + */ + uploadImag: function(e) { + let that = this + let imagePath = ""; + wx.chooseImage({ + count: 1, + success: function(res) { + console.log(`获取到list`,res.tempFilePaths) + const tempFilePaths = res.tempFilePaths; + that.setData({ + tempFilePaths:tempFilePaths[0] + }) + let requestUrl = API.api.uploadFile + '/bookkeeping/bookkeeping' + wx.uploadFile({ + url: requestUrl, + filePath: tempFilePaths[0], + name: 'file', + header: { + "Authorization": wx.getStorageSync('token') + }, + success: function(res) { + let resData = JSON.parse(res.data) + let bookkeepingObj = that.data.bookkeepingObj; + if (resData.code == 200) { + console.log(e.currentTarget.dataset.index) + switch (e.currentTarget.dataset.index) { + case 1: case '1': + bookkeepingObj.bigImage1 = resData.data + break; + case 2: case '2': + bookkeepingObj.bigImage2 = resData.data + break; + } + that.setData({ + bookkeepingObj: bookkeepingObj + }) + } + console.log(`bookkeepingObj:`,that.data.bookkeepingObj ) + } + }) + + } + }) }, /** * 生命周期函数--监听页面初次渲染完成 */ - onReady: function () { + onReady: function() { }, /** * 生命周期函数--监听页面显示 */ - onShow: function () { - }, + onShow: function() {}, /** * 获取用户记账信息 */ - getBookkeepingById:function(bookkeepingId) { + getBookkeepingById: function(bookkeepingId) { let that = this; let requestUrl = API.api.bookkeepingDetails + '/query/' + bookkeepingId; AJAX.getRequest(requestUrl).then(response => { - let resultData = response.data - resultData.createTimeView = FormatUtil.formatTime(new Date(resultData.bookkeeping.createTime)) - resultData.moneyView = FormatUtil.formatMoney(resultData.bookkeeping.money / 100) - that.setData({ - bookkeepingObj: resultData - }) - // TODO 这里后期加判断,如果位置为空则重新定位还是什么的 通过位置定位信息 - that.geocoder(resultData.address) + let resultData = response.data + resultData.createTimeView = FormatUtil.formatTime(new Date(resultData.bookkeeping.createTime)) + resultData.moneyView = FormatUtil.formatMoney(resultData.bookkeeping.money / 100) + that.setData({ + bookkeepingObj: resultData + }) + // TODO 这里后期加判断,如果位置为空则重新定位还是什么的 通过位置定位信息 + that.geocoder(resultData.address) }) }, /** - *调用腾讯地图显示位置信息 - * latitude:纬度 - * longitude:经度 - */ - reverseGeocoder:function(latitude, longitude) { + *调用腾讯地图显示位置信息 + * latitude:纬度 + * longitude:经度 + */ + reverseGeocoder: function(latitude, longitude) { let that = this let location = {} location.latitude = latitude; @@ -105,7 +196,7 @@ Page({ */ geocoder: function(address) { let that = this - if(!address) { + if (!address) { console.log(`地址为空,不进行操作了!!!!` + address) retrun; } @@ -116,7 +207,7 @@ Page({ /** * 下拉触发 */ - bindRegionChange: function (e) { + bindRegionChange: function(e) { let that = this console.log('picker发送选择改变,携带值为', e.detail.value) this.setData({ @@ -130,12 +221,12 @@ Page({ /** * 图片预览 */ - queryImg:function(e) { + queryImg: function(e) { let urls = []; urls.push(e.target.dataset.list) wx.previewImage({ urls: urls, - success:function(res) { + success: function(res) { console.log("成功了") } }) @@ -143,35 +234,35 @@ Page({ /** * 生命周期函数--监听页面隐藏 */ - onHide: function () { + onHide: function() { }, /** * 生命周期函数--监听页面卸载 */ - onUnload: function () { + onUnload: function() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ - onPullDownRefresh: function () { + onPullDownRefresh: function() { }, /** * 页面上拉触底事件的处理函数 */ - onReachBottom: function () { + onReachBottom: function() { }, /** * 用户点击右上角分享 */ - onShareAppMessage: function () { + onShareAppMessage: function() { } }) \ No newline at end of file diff --git a/pages/index/bookkeepingdetail/bookkeepingdetail.wxml b/pages/index/bookkeepingdetail/bookkeepingdetail.wxml index 071d9b3..cd3743b 100644 --- a/pages/index/bookkeepingdetail/bookkeepingdetail.wxml +++ b/pages/index/bookkeepingdetail/bookkeepingdetail.wxml @@ -10,7 +10,7 @@ {{bookkeepingObj.moneyView}} - 消费地点 {{bookkeepingObj.address}} + 消费地点 {{bookkeepingObj.address}} @@ -30,7 +30,8 @@ 备注 - + {{bookkeepingObj.remarks}} + @@ -42,31 +43,34 @@ 消费金额 - + - 消费地点 {{bookkeepingObj.address}} + 消费地点 {{bookkeepingObj.address}} - 消费地点有误,手动选择消费地点 + 消费记录 - - + + + - - + + + 备注 - + diff --git a/pages/index/bookkeepingdetail/bookkeepingdetail.wxss b/pages/index/bookkeepingdetail/bookkeepingdetail.wxss index da4766c..92c7b47 100644 --- a/pages/index/bookkeepingdetail/bookkeepingdetail.wxss +++ b/pages/index/bookkeepingdetail/bookkeepingdetail.wxss @@ -49,7 +49,7 @@ } .add-id-form-group { - height: 9rem; + height: 10rem; display: flex; flex-flow: column wrap; padding: 1.25rem 0.75rem; @@ -63,7 +63,10 @@ width: 100%; height: 7rem; } - +.upload-address { + width: 100%; + height: 2.5rem; +} .cert-front-upload { width: 41%; height: 100%; @@ -97,6 +100,7 @@ textarea { } /* 底层按钮 */ .detail-button { + z-index: 9999; display: flex; } .detail-button .btn-left { diff --git a/pages/index/index.js b/pages/index/index.js index b0015fa..e6fd5e7 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -50,7 +50,8 @@ Page({ * 跳转到记账详情页 */ gotoDetail: function(e) { - let bookkeepingId = e.target.dataset.id + let bookkeepingId = e.currentTarget.dataset.id + console.log(`当前获取到的id是:` + bookkeepingId) wx.navigateTo({ url: '/pages/index/bookkeepingdetail/bookkeepingdetail?bookkeepingid=' + bookkeepingId }) diff --git a/pages/me/me.js b/pages/me/me.js index 5d9fb99..d590ce2 100644 --- a/pages/me/me.js +++ b/pages/me/me.js @@ -2,6 +2,7 @@ const API = require('../../utils/api.js'); const TOAST = require('../../utils/toast.js'); const AJAX = require('../../utils/ajax.js'); +const FormatUtil = require('../../utils/util.js') Page({ /** @@ -50,7 +51,7 @@ Page({ AJAX.getRequest(requestUrl).then(response => { console.log(response.data) let userInfo = response.data; - userInfo.monthBudget = response.data.monthBudget / 100; + userInfo.monthBudget = FormatUtil.formatMoney(response.data.monthBudget / 100); that.setData({ userInfo: userInfo, isShow: false diff --git a/pages/me/me.wxml b/pages/me/me.wxml index f7da19e..f9d3baf 100644 --- a/pages/me/me.wxml +++ b/pages/me/me.wxml @@ -7,7 +7,7 @@ - 月预算 + 单月预算 {{userInfo.monthBudget}} diff --git a/utils/ajax.js b/utils/ajax.js index 20dd9ff..aa36ed1 100644 --- a/utils/ajax.js +++ b/utils/ajax.js @@ -81,6 +81,48 @@ function postRequest(url, param, loadding = true) { }) }) } + +/** + * 封装HTTP del请求 + * url:请求路径 + * param:请求数据 + */ +function delRequest(url, param, loadding = true) { + if (loadding) { + // 加载loadding + wx.showLoading({ + title: '加载中', + // 是否显示透明蒙层,防止触摸穿透 + mask: true + }) + } + return new Promise(function (resolve, reject) { + wx.request({ + url: url, + method: 'DELETE', + data: param, + header: { + 'Content-type': 'application/json', + 'Authorization': wx.getStorageSync('token') + }, + success: function (response) { + if (response.data.code === 200) { + resolve(response.data) + } else { + Toast.showToastSuccess(response.msg) + } + //取消loadding + wx.hideLoading(); + }, + fail: function (err) { + Toast.showToastSuccess(response.msg) + //取消loadding + wx.hideLoading(); + } + + }) + }) +} /** * 保存formId */ @@ -105,13 +147,9 @@ function saveFormId(formId) { }) } - - - - - module.exports = { getRequest: getRequest, postRequest: postRequest, saveFormId: saveFormId, + delRequest: delRequest } diff --git a/utils/api.js b/utils/api.js index 0054696..2b23a37 100644 --- a/utils/api.js +++ b/utils/api.js @@ -4,7 +4,7 @@ let api = { // TODO:配置接口文档信息 -// api.baseUrl = 'https://192.168.1.102:12000'; +// api.baseUrl = 'https://192.168.1.101:12000'; api.baseUrl = 'https://be.yangyoki.top:12000'; api.imageHostDowm = 'https://be.yangyoki.top:12000'; api.imageHost = 'https://be.yangyoki.top:12000/'; @@ -37,6 +37,8 @@ api.wxformids = api.baseUrl + '/api/v1/wxformids' //上传图片信息 api.uploadFile = api.baseUrl + '/api/v1/upload' +// 瓷砖信息 +api.kyhbs = api.baseUrl + '/api/v1/ceramictiles' module.exports = { api: api, diff --git a/utils/util.js b/utils/util.js index b4d5669..b4a98af 100644 --- a/utils/util.js +++ b/utils/util.js @@ -22,6 +22,19 @@ const formatMoney = value => { return foramtMoney } +/** + * 金额String转Int + */ +const intFormatMoney = value => { + let moneyIndex = value.indexOf(','); + if (moneyIndex != -1) { + let moneyView = value.replace(',', '') + return Number(moneyView) + } else { + return Number(value) + } +} + const formatNumber = n => { n = n.toString() return n[1] ? n : '0' + n @@ -29,5 +42,6 @@ const formatNumber = n => { module.exports = { formatTime: formatTime, - formatMoney: formatMoney + formatMoney: formatMoney, + intFormatMoney: intFormatMoney } -- Gitee From 2239ccf799a4582f54be48073ae4795a71fbc0fd Mon Sep 17 00:00:00 2001 From: "2689725568@qq.com" Date: Thu, 17 Oct 2019 23:40:00 +0800 Subject: [PATCH 08/14] =?UTF-8?q?feat:=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.js | 1 - app.json | 1 + image/404.jpg | Bin 52287 -> 0 bytes image/avatar.png | Bin 0 -> 5051 bytes image/beizhu.png | Bin 0 -> 6242 bytes image/dingwei.png | Bin 68799 -> 7525 bytes image/loading.gif | Bin 4997 -> 0 bytes image/logo.ico | Bin 4286 -> 0 bytes image/logo.png | Bin 3226 -> 0 bytes image/pageLoading.gif | Bin 264835 -> 0 bytes image/tupian.png | Bin 0 -> 7578 bytes image/wx.jpg | Bin 109976 -> 0 bytes pages/consume/consume.js | 48 +- pages/consume/consume.wxml | 42 +- pages/consume/consume.wxss | 51 +- pages/domoTest/wxchartTest/wxChatTest.js | 78 + pages/domoTest/wxchartTest/wxChatTest.json | 3 + pages/domoTest/wxchartTest/wxChatTest.wxml | 8 + pages/domoTest/wxchartTest/wxChatTest.wxss | 17 + pages/index/authoriztion/authoriztion.js | 10 +- .../bookkeepingdetail/bookkeepingdetail.js | 18 +- pages/me/me.js | 72 +- pages/me/me.wxml | 5 +- pages/me/me.wxss | 18 +- utils/ajax.js | 65 +- utils/api.js | 8 +- utils/wxcharts.js | 2044 +++++++++++++++++ 27 files changed, 2370 insertions(+), 119 deletions(-) delete mode 100644 image/404.jpg create mode 100644 image/avatar.png create mode 100644 image/beizhu.png delete mode 100644 image/loading.gif delete mode 100644 image/logo.ico delete mode 100644 image/logo.png delete mode 100644 image/pageLoading.gif create mode 100644 image/tupian.png delete mode 100644 image/wx.jpg create mode 100644 pages/domoTest/wxchartTest/wxChatTest.js create mode 100644 pages/domoTest/wxchartTest/wxChatTest.json create mode 100644 pages/domoTest/wxchartTest/wxChatTest.wxml create mode 100644 pages/domoTest/wxchartTest/wxChatTest.wxss create mode 100644 utils/wxcharts.js diff --git a/app.js b/app.js index 6c64110..15bb1f4 100644 --- a/app.js +++ b/app.js @@ -27,7 +27,6 @@ App({ if(res.code && res.code != '') { // 发送 res.code 到后台换取 openId, sessionKey, unionId that.userLoginCode(res.code).then(function(response) { - console.log('进来了',that.callback) if (that.callback) { console.log('app request....') that.callback(); diff --git a/app.json b/app.json index 14d8d2f..1f0f436 100644 --- a/app.json +++ b/app.json @@ -1,5 +1,6 @@ { "pages": [ + "pages/domoTest/wxchartTest/wxChatTest", "pages/index/authoriztion/authoriztion", "pages/domoTest/kyhbTest/kyhbTest", "pages/domoTest/uploadTest/uploadTest", diff --git a/image/404.jpg b/image/404.jpg deleted file mode 100644 index f2dced5af0398f8b601f02fdb88ad98d7d310a24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52287 zcmeFY2UL^Wwm%x0*ieyPReDEC=-^g*ml{d{A@o3iK&T>n+v!q52c?sQ1StVRRcQhO zQbMm%Llvb+|HpI2|D1jAxo6*V_q}(#H^zH285zHC&bii_Yp%7v%+=0D&t?JF^t5!f z02CAe00sF2IQw$hN>^Ro;l8P{mac*3Uj&zR3_M^yl-B?NZ&(1_RQujdD{GsZw7mdI zzy-iLfD{1W2=VtdG}AH%kV#il{iZ)z=_md>?G69T9RL^<*SUZ5=HL1M5~7Fr!UM<# z-Y09zIJ@{m$oMH4dj$pf{^WlpV@4N~?DkhI_7|PM;$MDZXK$D@ zS?8zCzRupxKXEG=zYIjUkTI1389xv7a0w#gAu{IkLU?&f9Lt+0RRfSWZ%5{JI^T{0H}Ee0I-h#oyYeE0J!=T z0I2T!U458;_80en0AD3Z$)KPh2@e;D#7~F*js8=GziIw+@VoLPewOz)-`&)3adkv^ z1>F4UREUq44+4JE-`5f1a#Q@@cj7;t@ONhY&JHnC7gra!3yfTpCApV*z}(2q4RiJg z@bH1%^nm@d7XFjTerLl^_}6|-1`GwK07eH1z_mU`0M*7P05!uU02MfgETQ;YyBS=t z1pFL%pc~77?e}C%mjC7V-~3RMO#J+z0bB%J1uz2G z0NemxfDk|&APtZQCK2tal>(JIl`)kKl`9pT>Je2GRSH!e6^^Qos)K5fYL;r9>VWzjH3Ric zYH@01Y8`3|Y6!I-^&{#S>I~`<>T2p%>Otx`>aWzNG;}naG@>+0G`ciaG;TCOG|y>L zXo_g?G;K6QnnjwubLY-6pA$SMe@^F|^*PUTVdrAbWuGfM_wHQ(x%qRuw6wHrw4$`C zw8pfKv;nlwY13&-X`5*WXcuXJoWFGb#(C-UTIX%f!_GfGpK>03zUlnH`Q`IR7p`64 zzo2x%_=59=kPGn_3NF-L=)16Z;pig$MZt@z7tJqvUi|H1+C|*Owu_S&zhAm^iRY5y zC6h}YmwvsJcIoY&?%W$ixHfWam!5%Mir$#sn?8mfP2Wksa-H_Nz;(^*&exw_&%fSseV&1eftNv@ z0mATvp@5-{VUh71qadR$qbFlDBbKq3@hj7HCRrv+reLN_rbeb&W-4X@W?g14=6L1` z=3(YT7A}^%EG{gOEI5_{mVH(Z)?Zj%Sfg0WSc$BMY&Y37*`RC*Y&C3C?9}Wc>?Z6% z>^bah?CTti9LgLJjwp@_j&V*(P7zL1&M?k=&QF}XT-;pRT)tfCTrFJd+|1m+aC>qm zb2o95ZZO-MR$Ya6tn5T?q ziuWR~0I#Mm zVgx6J=!EVF`3dC-4GEtURuF~?XA6H8p%ej%xQk?p^odf6%87c2W{dWV(TFLE!Nl^! zM#L|R-xUuO$B55KFiRLnJeH`D*p%dxw2@4Z?2tUY4ZQ7jyWsYO)O9I6smD@vQs1OS zq#@Fo(nB(IGFmbbGPN?>vZAssvN^J&Kn9>8@CEP#@I+2t4lak2Bgym0KakIoA5mab zxUUeS@KKRQ@t$IYVuRv=lAKb2Qial%vbZu-8LhmcBBEATO&%N zSM$22g=U84v=)z+n-)gvt2R(OO#7V7)9hjpzDt&OEkkYC`f;->1BPqYi_FeRz25;cpM;!taLXKB9Q!^yotb zZ^YAx#b335E&1)@Z_wX*9^ZbP_;}|D=tOI{NkD8;>`mx!Sqac>;MU`RDQj^Op)N3pxrF3QHMJugbzR z;G?Q3sza*3*0|Tq)>_y06Z8ll>Xhs7^%C{P4YwLH8<`s8n=UpzZ8~cXZQgz7`)>Wc z+xz(s4j(33tXhUzOl~CrO;K=E!SQB3HS-$1MI=~ z%Jo+F$@kTMR{UJouhQQ%aA)BCpvGYPknT`7(TLbTY%x4K0v?$ibsk+A^BUV84;(+5 z_;r$IGHUADRLV5xbl!~cOxdj5Y~!59+@~*QUnb@u^J@$K3&)F3m*|#KmTxShR-{)N zNLr-NtG26)Yrbno>(4jnH?lT`HmkON+4}U=>g(b*eEaNM%y+i$#XGV)A9nBWPVaf| z9qmW`VEa*Wpm5M}2s&Io3Oc4ePCF4ksXNs_ojmhCJ3E^Ir~{~}sD6IQL_E-rfJn>;r-dDuC*IDckB zK|@1BdybZlmX?n5`nBtv|7ALR2cSPs*+gAVML`dsq^F>wr#Nc`aQzHvXn#(G{zjBk z)HLU4&r@6=iyf{3D5$6?sHrZVzd(C|%qE9GKjrl2Xs_RrVz_H^o{@=}N7~fU?>F9i zPA&;axpOS6mhi`k$nwDpYnoOnMR;dvY7wvnv@71q2X8Jn zj`HL%7M=HBcvij*MJhOUC(o_&KOw*u8_k@KdD%RoFH2PY54aQnpf69qEg?G;%~SIm z8gG>BY`JFI%t^;kJE0@j^mvSG1f<9pC9(fTvt@PBbMxy`tZ__JOKMcdMCEsI5!*|ThBIs{){s7VU%d~N-%Ij%8mxGN6Xpjz)0;XR@KD6#T~#F*U1 z7Xs#MOdxX(|7@9YazheHe*F{o=@M$keI&ZMJ}&KhZN--+TVyagr|AllCEG}sd_VOw zf#`RCqPi5)!ZVbM(a(5o*cwYviD+$I(aB{39Nl1Hp($K|HI4iedHzEZN`YIyIp`Xd znb~<}3w2>F@u4-HqTo!gn=9c->)|!-U+V3h{Jk5Pg%rh3@#{WY3alHs#R<^t!In7$ zykMpFW>kuR`epAZp?>yZsghU?Bb}EoF5-Izbn3tls%+7iRnRpvEfRNQutqP#aFHXM zo{f`b9R$^Cvvq&SlcNpMj`9bpBS)8FeE2*=6BM{xF1gChvueI?R5cwM4!Tf-G)fji z@#kp!2otbEAOFGpe`G}a`DOXuz9s#SlK%(2;|SV{XTp6SB41fiY0l;e7hrFSF?B zuPUwPNhg_ke>tsUz6ka5X~8&y?r=Z3UF+b9euU~DOW6gFj21@cq>*;JC+2-5|P7PTNy%gXt(C%Wl%q%pVsC(_-oAn<&UrfU>UDNt8!JCjM z!1;31BWo^v<=)$9rQ}ugVpo#m?0=Btzt0l;4m)OL~1Y1KS|^lU&Uv$=3h7iUDx@~`j~0jT2l>Xi$LBlrl}694ed_jmkA zd*OG^Nl1t^M+&^ElT4Yfq`6RjpqRpbpY6YI=%3AjVwJ+eAnX1!>u9O+wuT)Md(1;S zRC$<OUFh-!(U-*XOPs#hwz?S8I9?>qZVkF z!@9>VXq(X(n_Li3Dh&zu`#3rL^q;@PxZf~U<%F`MKUp`uc1!t?y_gBx`21Cli_H1aYw|as#`@G({TCwnj z^dl~;zO8PbYYjo};){kO%t8Z+I{#XQ{;U>NxL?e#e~@?=fX)B@nP}Ky(x~VC)II1<&yzBHO12W4>3SkowQz)@+<^`@^sB02U2SFbRdhT8Y+Goq94cZCKY(Y z;P(&%J;EsD>IRK<(L&L5>^%7sff`vnJ zXaAro|63yRNC4?<3f(Jh%NQ+~3ey9n+}t=x87b_zJGRhkDKyL?=(>hvSl3W_B**U4 zIo;B2QCrDV@eXhavDZ&`*k|qi`mipIn7;gMDQ;hq9=5b;p2+aLgyd)WcJTZ7+A2!K zy558e8EJypc^C%qjYLPykOb!7v4Lv09i`8Nc;91DJT0))Bo@+)aEd?_7=- z?(2f*N!GTl+hwYy7<_2!&StG(lcO&k6BFA~a;wnJ2k)87(C6Xgv!XjLtZIsyd5&($ z`*QTm7gXOZ+G&#w2Xcbgk3$eZFYTg7`k*Ifm1Vto=iDx{SIzHDw^N49WNQUX@)VKUkBjXOH`o$Pi_q?J6c$SFpe7Ztt4)NY8Pw$?h z$ONItu&~M-KLzAU?4xF3bF}~7W)QHoGG3<3on_LX(&|H%{$#9r1DsO3i=AofT5#(B zrfR=yp{#e_;Mf1Hw*P~CcLA@B>e1w0fwV4e`HY3fe#T(Ka>`I9(AshE89;)CU!9>0 zVM71tnZ^mEd&Abog{@ve_*+1Yb(aHq7tGu{$jxWSuYv@N#egTJ1K~4nd_j1n6Z;RR zv@CTC`sv0DkdUru8ejRn(wVR*qzPIBrD`*ekEl8w#kxkIfWF`sJ^xjqH*0^6GY z1k)+(t}M{dE176gC(JQUG!Ry}XSs+Lvn)>zc*_>(nD?4iYh2hV;>J@K{rx7Q`O&4F z4yUlL2KH`CXl#ytQQGP_`wNQ+nP;Gy>*_hy9W=%^Tq+Wh;hm{W=4DntTm1c{uGv5E z;s2V5QegzqPO~?rwl?mO%^_?#KW2~JhMJgwMCu#A6O;tOu-RtqJN=5RM;zVos6Fnb zbY*EpHWjZ#d3^uJmrDeNyu58q_0D?tPXz$VYrv(dLFvKr-JQ$+xyyXIJvmjokG?EM zPnRNb>UBfJ-8k2MhT@CD!x$z_V$YBELtAL+FiA4br(Mo;oISa(xxT7*G4_kiD$UNP zO~Wsyt4uqcFso@ka|bpP>bKpCnmnTR#Dx;nGj-X@g3@t&9A7aigAZH)S1f62dp}x; z(CkH<-2CtPDl!IyV~G6qp^?)Z=?U9Q-9M8Xy}`v*-5~Juy8g6^BjBSiHIX(89CL!! z>)Q4e8!(s06~-iUQihvob7`!aAilYNG{igqS-<$YT`B*D$-tyGki4UP{+E%uZdcj; z5Ho6|K`_e*_*Bq}`)#;g9;87imFzFN>Hx^(tB@&uhvxVY3*VHc^k+8CZ|6!QJ^blLLwvrJCKdeRbFqL!ksHAi& zA>iruBQAsR>7|r5>h0?At`|zW84I6cw9&jKsQPDtiYSm<``*^J?Y3z6eZH~nR-q^T+I54ne5{=&Fx%FH6XRml0@B`i4x4j8vjHKz0*&PdwADbPGf{$gx zT@M|7^ojSU_YmlS1%2R$ZZjt3;3lhm7YG9$+-7bZq8wb$LXb+7X_>4Uh~|ntLR)*< zm7w>TRPqg0#`G#1%-@?(_eQzr#6d>aMMU7{!uFMH+V^@0q`-4MdkOkj_sq+^ zaU4}*KXeFuFJH4Y;f7XKa5A)FDvfbH(c6R@P!$m|a$PAi>Spxe#Wtbi?&w=Va(b=s z@I0B)5EHGcn2gnfw?}lH_J?f6xd|aawd=AcO!IrG*bR;Zk{`zS0?dw?B49JDK?+=j zOh#N@)$~u>$~C*;@rc7_2FnyWThJ~NNP|Iw6F$E?ZQFY8cW7R2hi!YMnN9}T6MkNYit8gFi zM3{M4e`x>9^b;@6wIjWr9Ai~W>?{tvC!KzjDIp#$yT7W-zvKL@$7hYFY*S>=YhpKV z#x7gpyYu>l%a9U#WYUnd2xcsi^tJ za9rrNrcJ5kfmZr^5sOTZ6J6E1A~w=;qHvzMKX-?ti5Zp=75d4A+vbymN5Jso2?W!y z!b;hewW6kWvn@&^-mWX4Mt^V-s(e`VloWT+AXYDhIPqNz+6J@xoMU#Jp|2S?F9i ztH-%kIoQ7j*v?!~Qw188CBF6`z2%UT3o)HfN_yF*w=AI2bJd#1rNcGuVG4>RvJoq8 z@bg^5Kai?6tb|QI)+aDiU%G{|HL(;Mp)sAnWI}Hi#`a;e*c#;bBXf9aSx}$VL7{5s z_sJzg9o;kG@y#`Lmk(^y`sxLu539b}ij#<4&K$Zq?^UP1SwWD=6+F6;+#`+_CFscK zMYqux%6#T`ewwa-X!wrfpiR z8UCgLBelpb=v|TI<;{;59nQ4mr}M9$!Q~iB08f|}H{bU)|5oE)$b<=w)Fg=6eXe4n zgTRKDKb#VTv*KV8K#=ebsx&RFq&l!pC5$Mwm%RMA z`G!SPS~Pq&)qL2-uk-cQ@!&JScfT{hkmu}vJ^oP6M|}U4F;4cA_zdE39QDo9YVnX> z!*?ILN{roY`p#A7U94-{AF70ca=#`ofSzoAV7^sZ&am29WQFmAitA5Z^39Hq>eFXp zU^%i@V>S*nyRaktxv~OsVh@C-jfG+bOMr$h(}lZ0V&ag|rVny;vBQm_(zVsQ!@wz5 zIWblDh2_ZBa+ml$Iwo|tN`0^VKrGx8o#=Ss4`%Nc;~V&(%vkZJ$FzOcAYR8P0Y6Y9 z==^g+uUtOv;gG9Ta$%9g$MPUv51rB-g9akFunxvEq?Y4ap}PB}WXN(Ep?GTnc5wIQ zv_68}d9%f3Vz6u3al&Ks(SQw=8*zWaY*XKkIsq7Ia(_hTN+{1FJ!+`2uqPc~&KjfP zZPzUjV}EWcQz>t8a8MDz*50#cRuY&C4_7TZ*P(l{_#wzRIf~D|^w=#Bcqiz3ocs+p zS}st?5y!eC%!$7f!JM_J-9J3aHW$_XY`AzHcLuo2B2iQm6*gI%*;uoEeaEkmD>_W# zQz#g^5dlB#@tpT}tQ_jcNj1}Wp_^vJdyU_g(bdGnV_z?7b*-=8K@{ypPiFd7nD+P% z04wco#WMBgmU!}Ot%gb%U3IXe50gf`4SOWdpLY!3+ZCD_gU5@EaAX$5ZtMJ5fMoJo znDkiAnV3D!%gc%F3XZ}qIER+`6L1FS4Wg$L25PvVB`acqwTF6jo$@9i<#N0NW`r{% zvQ6(t=61^ja_qZFMGpa-l2(8HHQ~m+4r2yaRDHJ$dn8|^GJ8B+kZEda4!Np=3_KMb z-57Kk+r!HTFt^DLe+rnYm~#$?_gPqfzSHCiov5!}oP9YopOS5tP*vuH)02lUnRYme zkHxsKsO0?C^Pjy~&gaK|`rJa-wvH?1d5u*`Amob@(KwkX%S5cHKm6Z4sJYq*Xu$=Mx#PM z@rdAktl?FbLxj8j{*R>C-z!s(FYvf4=Q^uHTXnpCJ4zEoKUpCk%S=;m;O5hs#bmc##D=nLL zV=Rw_*sx{SoSG_BZ092s^33N2R0RbklQvZ1CdN5BeWBo?iBQpeD7}B`ymFELdz^xIlL2}H4k8xye?ZT zd@5s+P)blJD;a#W<3;Y52tn9&f>66;!J)jaZGc>MUio<5WML7EX@*_9ENfqqykCR* z-k^E#MM7_38r@Sn5tsHhynLf>q9P+$c*1yQzpi?#O=o12*E-9madbA_fCmy8D1e}p#H5Zy1vB_C6+w2caRlplc8OIn}@t0GU67(P{| z0w@{=LjFkjf-q;$He>YH*z08I=j_14qlgB1dBq+}P=o9jw}L?H1006oa+TG033MNf z9ygZyBqoWtR5+^gX=?7);Eh3V{VE7Xmn3j*3?6ek-C-;;+zDNP{odJMgM9pPAI|`^ zhe01kbmS3C{Vywc4+h(Mcy~n(dUxlP;;-VXUtA#6$7{uF{`O%Lf(GxxTH(rx%bSX# zz3|PpGXRg+oejwo!R#}DV7N+?kv(z8@1XYM?&i;v%YQ&@02x3FK(n=AZwDqH6_ik@j^eSl` z8VZ+|+XdxeGnV@Kf%*_{s8!>JMg5}2CQjAczDjJ)4|IDUsGVMPk~STkfR=4rLVo9~ zMi1%Omxc|nU`$MWn@j~1bI_?9-NX4WY~h<&t%X0R=3hjVq~c<|ur^r?v2hQ7pBS2f zErvA|1=rwrqLlIEaN=7NIh^>6U0$Rc!+x0tRi&&C|K=k~B0pU!6CIa#Ukk2zwjomw zd}I6JP(2WOujbj#^Y!6vpG)KVf$fD&`~IYjB<;q&pmn&gsPCeb(l@IpVeeda9W14% zxv0)UZ^018zCQuA^+>rYPAk7@YFrw4(+0W0pMVl}0kL%^<3rOmm;U1r@&8s0Cb8U; zsO&zT+KjulY-BS%V!n*j$Qt0==#vj^EP=~4eV(n}Q7?4Z2d-aX3HLWAlx$!@Xz@@E zqhWg(T#o&s!tpRf(q5;%_^L4I@vV6;E5b_x$NgnYGkn3T!#qvU{}hEDKD6I25oHJr zJ!;*W)OO+Zlor6F)}bbs>TR!b0!PQ=%_9&G={mtR!uojqsXM1`66CiX>J0FuDyQ`n zb|*tw`yfQ&=DwuDiqV3qT6bJytz99^bWo!{2gPSMq!s} zRJQtd<@+-CIG%UcXb30{Zw?hgXX{^e(`I>BoX7Cy-YydYl_~=${dY0dS+?)`24J#UZ zUi`*tf-h3%@MTh2L3}q%)f4;P!EJi-3$|~3BKrBaPk9GT;dG0?DoGMvINM82v6V_* za~-@ZAT*!QAegPDrZi4G1FY@|FIO*pp6c*}<}{E;o0*$qP~voVMqJi7tl#@cdVt6h z)iWmO@T9P)mrDhmqaPmG143O@eEh+fB{1d9nv-OEPowF5uX}SQL1W=j^Oh%vb<;U{ zZhMX2KQ2oS6znDQ`Y;J;XQV%R>Bx`%@o+U3SQMDOEOB2#?9qC}S0+&b{>(ezMJ{j@MCl5QP?S$T|B zc@Km=O~dH?%NI9%SA4GFP{sx@x-U#bT~gvCZ-btlX-?WCN9!fD*`Q3V{7V+| z5x~B>h~r+nGr)-18KBLh%qc?tMvrR#aYNR%u+%KXh+noShZ_+gd;(d$85pakQXsx-CSyO@POe!JoVmDb%qQmy)EX)=ks+6V1t4UbQKOy-RrIA7|j+iGej0QUR zwb`FWH4kh>SinhA#6=Bq?9)Y_d9dmhZ`4=Q)g-a4q;GdrkQ{TaKjpP8KP5PD*tlsdGTlY#MFGGNpiBQ#eRgbV^Afi#-LbYn? zdaJ>QZ}^lsYNs!IsA|eZl;WUL>#;0n0I7wCd1YTF4wN%R`@5G&f{o?n;6 zXMm{h@4OwBB~;~T4}$UgfszOGj%NUm2$IT5h%#yMo5grj+#Pu~?#7ls>?2Vs0kM5N zK(_2QaoN2~0m&Aoo#2v%9KqI?!y+PcCKHn;CT1llx&@p*NakS`X`$SuRt2A1Y}R`Q z2>$G;d@_F*b@fq$J5Xh-Q}tFt$yQBFtWMaf(V!yv2;a>=Ecw4Eq^MNR+1RNuEcXZv z{m7fcnCKzTJy~>gGhyAqKO+jh*Sg5b)v0|lZ~JaQx>eh3#c$3Y>4ND$3~egX%c!Tr z<>hI1FQz2QH?DO@BMGJft@bei?G}f*ww8;l{erEA;s-LWXMkFAysWFn6mf(+%uEY% zud~Gl$VENcuQ3@k8C`w_p)YK|g495gIWMjvA0ADHhia8doXPB9Q!xEu7Wzr{^sdoAf$`YbLx1S?+?sI1lY!bzQ?Dk}T#z=7rfM8+lZ;CJFj!eMsq0@k}~7HSgFe(Qet( z=R-mAcY+#AT>V+_M^UlHq3BzEA8fGQd-F!b%=vY1fCgvJN!kI=Yu$Fp^d~o zs+`Fk9}yhZ8V`T zoYNC$@db^>$_+Avk((fw@FMW#Lydu%Bsrg>7>AwoInWt^;D92tqkFjMfORQKo(eq0 zMbS^3B44&k$>h)(o%blkh%EDw3{@GUvooebA``$R!cZrtEgeG3HnTDwGwE^vEwVq#nJl9TPdV@#Ox2MHM0dKc%}%c@M~?c-XJEl$ zCSA`l)%k%+5*AHdI5$tUm zN5+EHUbdAl`#lxS1bryrAhFd{&$%hu2m&cPb#hZKYRr8tFNNB~F7u|J;f%{yJB6r)wg0t@sDi@x;^9DURU(xW(gJo_{_Ah{7CjuV+<$DqdlU zXxQk9vKQStk{qlNMVhUyp?N|(WwXG$y4;bk;oOoQwy_NsAMd4`#;ZTgDs+`jI=`7m ztm(N?P`VqaoV>%t0NOE5Wcq*!mB+D6KbwktQS)d$KTvU7)SDw!d?GF#Q9EP0W_Y*s zwIToEnwf97h$4^mWK^kU`qLpY4C7lit(wyiCN+`W99!u6q!BMYZpgpLz5_xPRq5KBuIo?} zi(m2fs3aeB=zO?UA2aY_Wo}D%ep>4z(Ls1!V>WVJ-DQ2!@&*$}Dg>z(V9XI+3GYqo zj{R6%>IabP{TR3%JO&+pu5--$0D07xAGUADkeWFkWEt8YEQv|)8s`w1mPzg5pOlcZ zdStB1WmbHYzZdf8SsY^R{h);Wo3hw`Li&MD6meg8$;a!VU6Z)tadt3dU4OVUtYpHz z&jVu3M;u0aBDAGdBPsU+|+{_A-Yc8>@|-#6geqd;}1Ii34Q9kpK8j zax7SN`jcQ4$uW>_tlQ$$ka256-){#D(`cB6?$QmTNdc(Dq9*L>fooFc$f-``dwRuN zt5}=Z+LaeTPTgMe!l;m8DS0n#%$9qi=(mA-xwqDvBb)oR0~&kXS3}M3_*rb4f6Hjo zoNd$#-pH@m29=uz)2ttB*Z^{Lv2ERboE0OFZI@eEf($7B^1stP{=bBRo9`oC>u-O z#;q|}(rGime_VhuF|i1hSmI=^vUwmsp14oxvlOn5tW?;ETkP443E|8wWGxaL?TpPB z@)FVwifk6TTv!Aqf*^rPb7Ct*1wH9O{+<9NG{DqzIx+KoH{8}qyJ0i6P$$uF9X20y zX(DTvy;dXW_(qx78Q?=$I&8nudZBw`s?S!ZZh{13wDB)2z(gjs2u7IIgvWV`NH7}| znS_4Eh?hNiTF3^TFRo~=48N@qscjB96lrG0mYfky^^cCd+ND$NJd81#^>9Kz$h|S!(>qt+ znmMz2e<#^}#2{PN55|i$X$nhHoU+$yFp}Cs<NGTDNAFa?ctmp|V_P5)133~ctum){4Td3DL{H)1Y0Vk^8k0OR7{#ZB@J0LA+}4{O(R70;Uh_ByBc!j4TKA=nm>#J5_WIaLUKWNfTb zqvztT_!zRsCKQ#Cu~j57tmLVLUS;Dgz-?PL-&rEoxP%_ZksM8WzNf?giq6?!mt|a>wX3z+u&`Wee33?ExuT(M>G(j zWxB5ZMiyMRWhy-|{&6K&$E73(rzJW@?N<)QnQJb-XV`fz&-5O<1?3zocMBI6bNt~+ zpoeGcf24jEfA~Zo?i1-_w@yGWve-x>Fe|)<9EW){ADx&_7&oW49L*j8<9GXW72nIvIPC$IiH&8WffI1O{K zSh_*pZd%Id`vDsl{}0XO23L4Y$YaL*RNU6&IPDD3D%>3PZ;BSi9OcL*dF7#S=)rI< zaap4b(EhH{rc?vShP5TxM5XIv5v=g{#`Np|T)}2yV9< z(Txo;`P^=hORm%DTBaW2Z%jxw7o4MdfX)MX+X4O3vim%W=IgVIFH;NeH|zVY;L!&i zy5|3)k@7B4saEy@)tT4wO-89ney527|Ne4}O<6A*(eTdJMzCuA z2=AlGFb^={C<6GybO+mRi33$Mwdy(+N{jAn#nn^(z0M-AgO= zZ7B_Af;;9xdNI>;l3Y{A-)4D#JC#Q?yjEBFKEJ$lASI^#b$my=aBSUwF|Xe)qRw(xC zy68C+5K;n_pE&oeNS;0G$8y+n=|%Ovv9|U-0jtb%-2FJe;!6B5!O3#Horv-uiR}wb zHL%+WABS43KDH5A3F+Vs7J+L6JKy)%7izwru6#80V+}91vN%b;Y%?fmww_XHZQ9@B zZdl|#US~|*%~U;QXmM%zv3axDVnD7XrB^QF`uwowA7)txODM~|UA@o2zVJzuM zs&W%-i`$jF_7=wG3i2Wq0uf8G9+lJGt>wS3@Mjjl+wswZ6lPpsZ>$=hkH zTb)vd5_CD~28WVAcU$-r%qBE}Iyw6J{Nan92Mr_XdbMDc(#d9_HLNO31>@jW-W(Pv zFFp}dHPC36Y*lt-HvIa@l--}UgIs{`LaV}?A zxGIl?l^x<7gcd*y#{z2+XMh^xnwqxHlc#FfndR4&f1C+P> zP_|w%jC?H0Y=6gZYS|xWg?w470fT&NXcip%*sj#eBadBe90Av&+K$qoDK0RF7sQF) z#+8Y{o{i8-)BB%IR&^vShV_cfZ3LZKn8fs{9K@6dzF0(DxnkboAjV!U)2>G(=$UjS z7T@r>afgM$CBtzZZW0%=_~{*gy@&7)|F&1AN>h(ptRH{4;i^`f?)|0B_S4A7+I=3h zB;(#!(-Uzg`R!@@I9!j)j^zk6NL+3$wI^_h12oJ|rM3Po+Q?qHDs?$mnnX*>$R3lVRdCGVmfvl zD3{w1w8*a-y9EiGW_`P_itV);vY16b%RIVs^?9SKWj+!SX5;OIo38N>lPIFg4Zy{e z^n<+hF$>LnjEH`d4zBFaTOy6PKns4Dnxsb<)5}(^9WSfF4uc=x$(Lk@#mA<)HYN`a z(>Lr|T!=?f)$dkS!+IbWP=m*e9p!x?q#XF|Byi=50-t?L>CV(Ru9+~>vPt&Xek3r{= z(TAam+invZmW{C9#*=oAN7Ffl{Lj}>B`H@vd z{?q8g7hPDp^)h(~>#CyMcIrmERfgU)e0~`h!9O-yBdpb)zG$3p=E=oW*}3!lEx{uM zZ~U}svT9prB5!a<(pq5U2cHM>yWMcMwoR`fTT{)YLwL%=u{~jMB_v4LrcYt7YHrlz zU;MB7Cu%%#+EVbg4+$S##${}VNcGX4L6bXE4?Qzym_Aubj())j(s7gz%((7t8o-yW z@JPv2mG0X`X;r;-$r_{oB+q}(raLI_OogPR15b0q4P;Zb3i+GHI1(yAcyJU6iRp~h z=#q3OH&YQWtV0m6d%QVr`8ZDqLPw1ivh3(YgH+_;~@=SqD zX2cw7Vem+WwWp_ zy-z+q=yC?oykqWmToAEpI#FHKU6lOVa19DA8+!HO3~T^^mBkQu096<6jaU}fBL-#p(^g|MChLH zQNT`a`l*I1YD&lQX=%G7S`I1Jb*xbMpsT|j=B5FgCt98$PmDNv>TaHGU?oiF2&PbxU|X$i%QJx)v(OV zxDzQq9|~kpo{qmF&|R-I)!k2oA>-`uMGlF~+orJu4+40=@v}{;!Jz$@C-?i`N2ELx zEUVPp(eBgcrQft$E?UdVvans2&tStz^pLc_t`)0^99d0*YcR-;RQd9x71cWx8(~1E z%;w$k!fL@GepPQnQI9mtvoKyKm(?;j53F21^?8`yX#MEAT2Mese5J}6;7$_arK1l# z1neN7i>iXX8VMb?7OjdKT!F5>jpPtQ36q>+W3?7JxA;pn+QFFr!`^#;sq1d@;-oe+v5y-Eo^ASLu( z1w_9%bLM}~J>R+aJNKS@zWY4i^X=r>d##m~z23F=yY^apt@rnP*QcT7QH}Qtw~%m( zbO(!Bt`@ zg;>l5S$LRHyZ0bGL63fGw8P1C7XG}l8MqCODF)udq{Y!6%wJ~!t*q9npIO@|=1ru% zhAF>6lB(YI!{Nt*o4QSwomh(xAQVZM7A|IT&XohjB+J!%B&%5_QrX4;!aHKXG@`F= zVwYcIEWn_CG2DX`(tn__kFRvN`1}e=7jgpb!gcJbbQQ% zzj!fLS=A#&zh*bG%Q5$+;#==~rqa?|neoxi2|)pE5}~Cb+*K{y?Lc2Feyy_t`X&A z==BdSoCkQ*}zl)GLAQRJCJ@B+=x-VdC~hPfz& zm*D-8#0$3#~_wculzOta<25pjEo-Cxu54|s~N@0MpBA4H-(O<8PX zoz7#yte#yY@>As}KD6vx!I?Tu*;pQpzM|}j$Dl6NNMWGmFVzf3nOF!ucQW z6}bw2K0zqDrNVCn|9qm=w*28y`}I$&^9~QPIJSxwa!mC?w~k@IEEoLpw_VAR+Em85c~95DsFjD&BH7%_p>oNa33N!{_t7Yvnf-jGM@PK5zt&EKHp zEgY{u@q=)4Q$g(6RyT*^nBcTfa&h-ldVHm{*}TmzuCLtWoyJ(RMq?6%(4*6hiIajm&5@iBK-oeqI8%bXm#SU5x*sOqziu#~!Kbc{h<`T$4goO;2A5whiakzp_UnjaaQ~V(xCTryo?>v2wS0Y@e7eE^h zl&^bhpL$f8&o+n&Q<-X6h=W%=rQnGK<1Eilr*JBA;*Z)f@tSzTHpKo3%FpEV{Zhpa z%fpBJA~tpfhpNZdyy%u}v)Qh-H^u^I4MV~%5|dzSN#+v3)JEGC5fshtRNK@Hu$L|q z{16vyljzm1MdrL;`1P{)zW&C9?e3nlkxZCq3)v_IXb;hzN{CFW3`CmP1fg zrlsOzs^9dZNz1NU_1D=w|7VBN)3+`}N=E0gB}He~wU{at7St4~yKaVxUw) z%v8XsDV3$KHfrmigyfF7^xn!(XUX+`ELzcfSsb-ef%b-P#anFdzj z$$MQ5jY}kOx;t#JHbelh_o7+8L%7I&h#yz}3}P#di%D|wDLKKMe%HI|alPcK@-_zc>_~j>hO#qC zWrro}$`$4d74Z%j=m~@u?WOsY!xgFVg@lUHRd)$}$VBJEv!Z_6BDo$VD>O6Cg3P+U z2#u4Ep65L{R-jnEVj~uwd%>pj1jSrym(ZpYhC^?p)lCAS$#S}X;ykD7tkcBkEUbDU)h-~&ZCg|gD zpGc^-0vcZ{lf)030r3-1>HkXOSt6+(cZOUs1bOOUzGjT&i_sV-Evr zrAF=E=I3~L;o1#sC$X&w;l87+>AGFjO4$ioUqasbz||dx>b72kCajKUT#<4u4YV&w zz(k_~>gPSK3koV;DU3T>_vBQH+y@8)lQ>n2E;{8~8|GppukAo=ff{#bUJk5~i|?5#Nw;w?b10fT)B^y#g_XD-$(VsB(6$*d3|He3 z-`mp5*v(vX}g;{d!`CX>W2!>YlrPF0HJQ zr^Z5QxtWh0aIxp4EuM#;GG>%Y`Q(_vc2k_*CfSf)9G%-~>4S>#PJ7^N4jw*F3)al> zPH;*2IO=djm?MlPNsHI^?F53VZ@0)#x)emV8C`$C-TFVabcnO6iH{I)C^`j-nIH!B&f#Tht#skY}_-$irLb`GGm~wBQ*7 z?Nj`*sv`|@{Htr!TZc{&bA#(__{y$sJf-MewIAFY9YHh)EqR(vT?N@g*Wcf39B+o>mKeu= zE4l77!=*0QLiB7Xi?PT6H%t(OupD3>VRI{1 ze29T=<{7MJ`a`bZMg#lJz)hwn!-l6Fl!$A0V$}`I8DfV9atry=GpuXOJmRGYE;c^V zoVzA0o35k@Zz=p8p18Tih6ilFy?ztfay-S4R#}KV)a+EOdiU3D1xg-SsBlUY zft)n-ZCrP_u!LR;3}ef(JZQz(9B5wD9@+7ko$tu!LG1M`8YU%+Q`!v0amjE`%07^_ zcZ>?)*W^J(MYb+w^cmJHjsXgzHhrJAwI+W%KCRd+M+oy@nVai~LZ{WTDCQIohCS1( z-~RE#uNUmLHY;mCdVcz~f4}bYi3i@GW2CCTHFGM}O2V7rP&3xs_f51SZ}UQ>K) zLQO8spaNyS1A8eGVqC5S0XmwR@xeghS}?e~J0Z8d&@HlHP@EgmJss&UdDfJJEC?`H z?2syjP#*G|@MqT2)GycZKT!|t02v&n?#7GZsH853yaGa|6RJE|%Zw}NT-1~4bd-;D zyGEOVjcrPM8JTF+VdQvd9^=K0Uxh+X$@km6*U$A(cQ2!ybc_XJ<^i&&^OfFvWi0z* zsj^42Pwq<^7JV93({ryJJ!&p2$}b8~7#vY7Gpox?Rre3&7m4HUax~+%*uBQjS?(hL z%>KFuCMrG8FKM9ET{T6USONm_i=r%F4;8Pr1AwE^(b33y`!~t$l)z(A>*h)CWPV(~ zcbO6-zC+I|GGit~kIDvXC!^?G-sB_;<7Xy~NYa!xN-pca4hNf`JQ*1&EaZe@tG-*rfM^ zxf>IX5bGL@<@&AwGtYswaQiB45ddYa!rqKmBFz~imhT9oT~Bv$-}IyDjRx1GmcQ8y zR@*nh>ZCxv?-)z=LD9pto~hHd_fou9*FDIUrciaJoaKQA5&40x;0*SPA3qY*5(xDj zuPzB{6MNgFC#%ngchHXY<7mKBw|s4<^OU{1)~Fn9D}$2_Gx;V*v7d0ijh^mXk7aO| zjsfcovK2S=C-hG)NAoA8yGU^dGe5BK`3&v3*}nK>bb;*OYCIx`t4dK z9z)&H<6dJ7fM1|xJ$@!%X)bCrfU{eH90yHEOT4}id0lC zH$7Jjk!PEzSm6e|6Vb_Tu=r)~2glsDaOQ;<7LyJ#oWpjSzVU;n#|x)c$Fj6;G9uHF zc8U1L7|aP?%NX)H6zbbR_gk3&OiPjty;4i^=pXUa)p~f(xi7uJuSoK!YoJGPC1jPq zLMeNrs1VuZtqJ_nMxG+;O4yyp^>ear@7StuZ^g`^oO!C{668__^gmz&((X)wR{2Y< zr$9Rq3G8g>&ILy>XH7@{_>$-<^Ye*-^OlQkZdv-?%K!M&`tPale>V-Vy6a)6jZS}I z&P5=&L&h4;FY@_I5HCI9>0=L0gMSLu{T<%J$8k6Gm>o73`h3E!_vOGg8|%~kd+gxO z9X{;m69;#GBF;Z3a${qHCds3Ue3?N@dzjNX_0Tdmr5o#$)*0e?b$aB9d08dp@Bb6# zw*PK5{-OUF>DxY1J7YBU+p}EX-xdW<=K4N=9Nv5<{KxI^P@`D+y5BAoeEIxC=lcIM z{eR*L80W|4B~eyI%wzU)`}*DY`s%E|j{^vMc3R~*egFt>Hf&hf2^e4XUgwvA_qCjt z{`r5s)^f{yEVW($pIbS`i{j1Z z%Dy&%MGoizN+>sSyllIpBx{{#ZVcI&*FJ}LR$MkSzR=z^5f`~S5!~*S5tFv;OYh3y zq;W9Y^omu-fB7#I`Y*})o#AyuzS8ino@UomH&hYW3~PmRi?}>79kX6I34Immpdw4L z#g^M4ENYPx*E#$Ggh-WR=|yZ?fr0rBZVrvhpax+PSULm36))_kJjklis#-cwYQ9`6 zW8idI-Kuvjs+aT;(m>S;R)(kN37TV#OyZu?&8mGTXJv%4RrnTyEduulCNS*XYn}=tK8Dwu$P))|DWS_aXRs^t0))@}kzg zPyKnHzGq`jhu4N)Z-csbFEv$q*vG9N=No?f>GKJZVrJ2=b1@l9*Z=L*k3Z=-((O-n z@n{U(y2_+H&{NsVklj4<5!(`2cP3RPsDO}0oAJ0OyzXXDS5n`++PQ(AnM1JU4#;$s8lu27Rn1q1CHI)a>r$d320r}OuAlgDfL z_k_89Y{;P#``1^e5*~;oNNc6rug{Snx--D%8@C6&F8wP2SAQ+*R{&V#OH0vMgf>XG zxSn?n(x61_f`oq8k3Oc$F#@e6kj#$w{%dn1)q1pjcXV%Ymtnr3dp6rNj9gdi4(6SS z46?Md0ZZxF^*@W+itY^mCLmbdvck9xt?x8}hF6sgowSxAF`)d<3uv%VC!?Il+cxBS z;Ulvy)#SYinSDxfTW@7)A$-@*YgOwNN6MmC%R9FY@LX(H0TtsR4qDY0htjkYQZ$lf z3@!3fXYXIzaTwujY!&hJEiS}FMU)et=&b16K1=xJORY3pFZ|Ma;a8cvDVj*EuF_`h z4|6p6=#1#-)ARw2QzL`|&lsQHz$Z9+ZM14=pQ|Iz`6=x4iLyiqHkCN96Xrgze`wY%-XugroOrk5-(WfEC-vn#)F_= zuXUIL1qEKwi#t&wsdagGXpY>joPw5lY00Rj4y~KBktKs)DkUVGlW>z}GO){;=O_~e z(-QrX`1|&X|BOMdSPL{aO0IKp+~-6M#mn+%|HAs zlNQKoLuB}o$=~YA^ zy%u7;2J(!nKx12pAC}ipEpyvV0~>-}-WkusB2|E%Op$=5Z>Cu>>BtFSjRW z_EF7uFQ95@qf%-IA8!j~V~{*c*lTK*2%&g)$$f-qo=yi&%t&qJ%L0>$Vip=1LV22)=$}b4b;b zVw>ba!V-ET$k)Ydv`e<%|NCqBFN%FNO;VDt`DIu`X1IbhI@^^x!Uy+XwvF;u@+CFz zfEscyv`cmGvaV$ydro$*a@6uad>S!RN3zQ zi3ipqn&cF$cJ(b7JdBkH-0kRNt099uMWsALkjBKH{ex=bKir?ZHb}qKAF5OS zK>-YtTvKc%Eieu|e^UeVZ?-b@`B05lVR&Xs*M~)v zN0X`R(WfJ{RiVrle9RUQOyz6ducWs-TXWHq=wO?)!8q>FESHv=S!0?`ce`0Fh)7R%0 z2}`gTAoHc5c1ROvSKjbWu}5`ulr?xPc`-q;R?^VO(KLSzE;)E}5_qT+){*EjPPJ4a zsupSY{#r_qr%N5!)`Wn`S&fZ03~8hwYA94l7Ojko$9=*y>}5t z*$xCw|4^~X$x_Adx>UQTF>K=xev+>g?Li@GRFg{%Gmpn!?|l#mPj?E?%PO9i zy9R#|f=YB|`CJ$StqL0}-0rY#k2mPB2@{T&lKM>!+G$yoInZ-aO=qg**KMu(S+6!b zoW#kYfwlX^n~DC+X_DZ}V6BQ(mG{z&ekv@vae+Mu(YKq0xbVbqYjbhf!veTJ#>}qr zr%UuXfBK;8C1_sUcHg%}YWwXsa_ZLeaj#nV9A!h(BcocLDQU-Ho5x-cA&9t*) zKd1jin~<=!{*8!hE}4W7{tG|+*c2Au%4(3Kn8={mn#b-uuWsz^SB9iXjU+9)$CN9d z8lSov4fBGKQ@HI4EhY$g?-#u85}WvlZ?*xlJX@wp>GJcz#@S^ujxva36^KyU`KMSR z&CDR(M9aUaz#qdd_Q>mx@2^FHloH_S!IdbzfT(vilKUBV{C*|&_uVCS@ysYaP~d3` zsyvraie{yFOB({RRdr|mJ5pZr&D@!+@FI%6Lflkw-O4bA@vd+G<3N~?6X1?t%AahkUU$_a+R5lbu<$C{{%rwAJbQKE_Fa*_aWXNmx&gKLfvCxVzEyOug!=S3h$Y*aiU>iI)=FoizGnXVSy1&0W6W3p# zmccJ@yf4dbgLjO=Hw!n>(T>vg0884?7Lw+|9_%Ed4mKr%#@9blvG$%=5Ago{ii%H6 z-@-`Ie3JGjj?gsUMH{@+`Fku>=WuGq-4vLs9cuN5X#dmu z%X3Mu^lA!N(~*P4qGDd5=HNLjJ^bNY+ zqQ7{QO4aP|qhB;MLYhdKSWtM9l+vvYR=^cqw1VvO%ew3F3d%3` zA9u|aSLxqpk+it+kLpVL?YYD2s0IeDy|DOVicNV)Ijo?dpsq}zJW!h-0cScmb`Cvj zvU$5>t;v6n;UmE}s-OI6Fy+=3*;LlARY0^_MGQ3RWsUB24OJQ3<-=Dja&+N_$x}`S zO$3MLMJxKp(Rlz#Wo$E+izU>EZL8%sOL8`-w(>YyMwiXL*=>GaH%6@l<|eLDvPlJD zOeFTN1BpsPAY(Kc$r}3g$3*%v?Z-yijUy_X=eOe9) zL>>XNwk3IyYB92Tz; zq(N(j3g!#1vcgt_wv0pTO6A7sVSqh=l6!d&K?3xi3bs5dU{( zEdECC|GUvYhTxoP1%evm#l=pv4&yT0pG;ryvaE=rCgx&;HbC(TWQ;@Eney*n-@97iN zj@SxSU`aSknOh>;yIPr*JvtKKj$>2&w1aI6_q9|)ic0JjHTpJ@3E2hDQeAmHM(cU8 zh@8~5GOfLn`~uDyX7kG-&n<MAn0f&6&XD--bQL3l+nu*yRq!#p6P zdQ#6FpP&6Q_fdRAMr5n|;SGJ7ZX&F*CsBnKxs z+O*=Ax}q|HcwdtNBbsLV2fm^QP5^tYGaib+U-M;@EQXW%%ngR#AQ?WCD;uqI2i#^# zeLwCtkbDsa-RGNZy5HuM$}A>QZif8yjB#z+pT&T}JiJoe1@ZmL9LA2hMSh%c!8@si znF8AjEJV)OA>bKOKGB&Z3xpvSRsE{(xG38`%Hs%7CK$9EK8YTtD5ZOhMm5>B6c-E? zt4btdT5?$$!CJNGA#pZDCsW4jI2kz)7~&4&%Nz;Fq4$gK_$gZrWvb!#0DgBEQ=68> zoD8IORdV5YskD4_*~IU&FaNP7{`Y_3=W>7p0|$3W_aKeySEVCIW61rF45G=s{la^- zF#7OpbCH;Z=Gu4*a^?-iZzzjB9}|e=v8deon5C1ARd-9dV&v&7$64se$yqR9BrGf; z`o$~D7JJnH?ByR)Y5p|doL(hY#?39eH(FtZCz3C{(G2)b-Ypre#wBfUp81K{I{w^Q2vJiu zb+f}L;q0rY>mJwUYrAyIbd5r84BauAKB`YovX~@RC+AF?9IIo z>Q-jAsA<=Na4+7Pfm`Q$I1VNTan}W-CKrxsm3cVmPaI{`tEVTubIaa=@7)7~4D}58 z9U{JcfpPNGc?%oN|3>F_bzg3)_l0NOT@PKcT6rEM1U1z~FO-<{s(oKw*&nN)aG`sB zFJ(4_nT@hs+X~LCzrV5~)}e6#&vU9M#yIi~mQxTuZ1T@%GUaHrx!i1%u{|pMsbo={ zih?!bXIkmlH<)Ch9YnUrDd}sG1zvECPO;V_g+pzeyl!pe9*ydlaFf`?eP!1>UHhjX z8+%!m%mogou_1#N_T-P4lxe%De-}auUQla-SU+SO+^}p{Jf^NfT?-7N)ol6uQv=jA zxYgf{J!`ai+Y^GYhMcePVq#O&b?K%ExX9`~CdD%!w+P}67w7=wa{Fpw0(X$ixwHwe z=G@T_WG0w7j&s}U4IkjrAQk~`rOInV5Zm+wiQHtbUOXzyKzE5jHy&Ix4_}hb;s*jkSW4Cy~vS2!W;?!rcZ*MbfEd|9>;q4 zVJoKm`@Xp%g@m$KhdK4JbMJz9MLnPEUq9&{LUt-(^L8%VPJp^-7mSxf$1Nx&KG-IY#r*!GUzcK???x zwg)6Y_Y?P^Q3DNDi6Kz2_lHt15cgGuQFk0)?td@;jclk@i`H@k-Wd`sEd15>x?A$H zUCwAl1#JY8LoOe*c&n)JcJ5YSrm7urG(+^#%ur8!W{?MX(^1xOEJVfrbz(T_w0oBx z+vLqsQZ%X!r^WWgi{G*VmNv4MOOJaPX_;nLl_;}BkH$Ek-owm_NvPp_UTq$5ap{INh^pL>deSqlWyYkZ=sTu^%dCpJ!O~qsj;nyUB}h++M^#TGPCW|j zabIj1x@aEn*HuZwz8;%}fP08!DdPm$94tWGXb*o-s}cr~pqM=gTYnNunX(M1?tyw3 zYf*Mm-P5Q&vgbXct|cCGLli`F{kSfKndqZhlvIWHd~EQfbE{!jhy?QuP)8CUm)kwa zfS$3bGzg%D=FP*UstI)-XmlCjWz?oD`i+on{q4`|>YYPI)>xlDxl51C(J~*TQhWPa zqpBI}RjT5sDjf?pg-W}0aw$s^_PpxziHRl~-OH?nMTXAj6K^KieE9F#wmLO$*-q&u zKA*_&>c!#l39E&FAmO9>MbaX2t z^*Fx$@L^j!*3-|mbA<3~#fX!iXtml^66;>i>QZh)>&hp3I;hLiS z16y`R^&G+2yI?X$I4o}1EeDI=+tWCIuc*CA7dwYRiGO_YAq~S4j%)!NFQ+=p*5;26 zwp4f-8ey>N29fu1smdzfVss{hF7;%9cTB`bp6QxGXEVBuTML!z&sbB}Ni=YECEr`<=BKzH>b!F^cb0o3Y&&o}EqNy1-lcoUu}}%4VB^^CELO?dp>QVLrqBH_H7%ee z2MX>nHQ(`IKF_g+~vm^E9cF|6j@|vnB_7m^9q@a=>6&B z4UA2}AU@YHSt9^C@M1o}zhuP)lUICLi}4yV3P!i#{U^h269v7vjR_g9xew$qfqXQ? zj5Nx}Vi%7$NX+3L=yo2?>~Y@qPofI=nCwU0pBkA3`0R30UKr--DoG95&3ExzBT4y{ zc@zB*DT84WQI%2!S9TV zdg%bjG%2?|Ds0wd;(VgrO{x3_de!3P%%?(gD)?^wvrWXVKJXipex3fw9K?N<`*Z`DnFmt_+`)D%oxh>AQ{T9}B4mHpcIy^UYJY=mBcvqf3Uf-EV0np5vGi^J)?i+oZdf zp=D^cbmi~q{y&xWwat25+{X(hsX+kwn<-6wcUf<(qDDytk#3FlSfNg82eG89metx) zzLVh0$0wcU`Kc{m#8Mq?6+~jWN+N{lTlKL*vXJHw@$U}CS=Jpkw547DTt`7U7x7^{Y)-vbzsc&UtKz+Vw@Zfl zNY1Y0r<`Ra5*OXD5D1%a@_9P4TbboSDpe4;L=@pchu0${zK#_@q!OAZ@fe zBI8l-?iP@HWuTolGV87~R?V^_lX{^-NovP+Lr=%jWFK`r^vJP4W9KOe-GJWjc@cB( zdC#TC22p19$EsRbo_Bh)@7uPabeZX+Xa30Ib}CD~?{%Y%k8VFG)0RZaW%YT+DqI;h z8AhgY4GqAe;YRT2ZGRSKJTYvq0XFXwLN zMvm}jdd884W!!G!Iq@wGRoaU&1#bmGb=PdIttwJYGoS}X7 z+l_xq`O5_K|Cx#YJ#g*xz`nz#c2NigmwEiPTnC#@TA&yZ+6Ve!$S+4+vVw9-yjMBg zx57Lp3}`~3R?>VM@S5b1jp-C5y7K9ADBBli-PMnU6PV#$wTsyI?a@jFNgB*e=h7D0 z_*Ysr0xhob`0cjob?YR08d1CQSrfd`8uMXWrNytJ&4D4fU$`q>UNW*objmL4Wt1Kc z=NcKB&lO$K!y^@ng2F@8F5M}86`F?5>w(6Mh3Y-E>-WgvF zzH_;Kb)F;v&%gp|5&nzDG9t6{0UZL}3tj$L1b)8}_;l)x`?SRohr*&VI3+hy^sCUm zL+UPmZG&0JV?cLqzAlf}hhSSAW>RHgvZqci?4yPP=*nb8m?^Y^&(c&o>tsx+{%h6{T*h?a>=))Kf=arTR z(b7+!GkYEzrq)cVNVr=u1Xs|hI=jg4|9Rc|_h%4=Fy7obIZsRxiHc(LVttFCp_wn( zFR=ybH-PcIr;7(d?-mfD{i8uIpT&3Ah1O=quI~wf1uLmGvr|>XvB9FMvTvAV?c`PFf*M7PS)H zL1-H#M)sDH&zzY-ITEyD*?_fB*6nIT6O}0a^d6_ZT?>NoPrfa-(&yn>lu(Xzq4zD& zgFF7>TQf!okV&59>#W0wV5w)tY(E9aN7j7t?ihpNZ5ELCYmx-fe*>0x`s0O*y}us{$sv+@leiV{)gj2v#!79k znwj%=hb5ef98@Un&9s7yT!cYtg4g~zcsZN*jzcHlN|ITH6#+BiF-%NE0Rpp&yD5BG zkcAA1!d+wNWB*giF9)vlDFK$n(EazCWH`+v;#BYMfIybz@frdfh(t$g-xdrTC*a;s z2B-)lvt1yzKP}C~Pet&@e-=ds1U@c_Ggkq}fXq z6nKsT+GLhlv|hJ=k4>oN|G7+lVC{`~b_Gbo4$}^X;DvL>4&o~(Fw(bCSo2u*TKA>4 zH(G*5myM0#CQIl;YkO1h$%7`K040=Xc#d@a#|8(-$Ws2=BDn|MbF=uJlD>bh>;G)* zYi3AI-|)gD#NwlpsuGcnxE_dvG)=Egd9BN+SQP{N`mf>!V5y~M7CQ-a)M?o_4U8?T ztZjSiDc`Z%Yw~l%?LaN<>m1&fgiO^N?pf(Hlg9`1m2AGhZoiXsq`z{~p;|iuVq36! zA-AHbPfz#&Wi*$=x;tYkxm-8zgOEgxi^;@*Y=+8uSYH(uST9tBJ9$Z2Tjq5yMILZ# zz|YAnha0eh=5Y6)t;@5F9m|h{%Ff!Y>XWF+-_FjToU{CCE$W3s=x?RhbVY8A@c4^Y z4l|t|oUWo6XFXJa0R@T(aooXcmD+dez`o1vJ|Y@sza2UjdsQ!DDuzQ3yMV+si-n2f z^3GXnVtS2w%^V>AOulxF?AK3L+izAxY(9UM!h2fxr?}sooOu7C00+4I;zC#EN{VR2 zeyG!s)d6flPRRsHgvCTWNG(g0Zoh-wi((!W%El-uV=BxS4?*q9gfI&RAOPU3!oR`{ zDl5I9819tbL)!b5RL;;dB`R^WFMVVYq4(yCvr-v0D&r9!`sA+le*fjZ%X>+dNkg;e z^~)ykw9$+VmY0~}i=x8ysl>Fnq16O&XYE+ls0Y& zRpAhUp0Dwh@+7C2iUi!^F z*^HmoBEoPA<=M8`^9*q_3sgyLZ)qO9LNUfGM}}u4f_Vl;U^qtE4Vu zEC(KD#{6vGZ*BGQ^NAn{1bnu6eYRgO-}m*GyYoM`iCLI(i(WQW7;Vi#(7Nq%O#rw3 z*jB~nb2&de$&>!hjbdEjG5|f(z3cb03;fE1#}Av(Jz0*MCC#=&GRS;#!_>^P%6!WG zn^O2Iglw~~rBKQs9S8!yMiS1yIG}#@)r0azpwhD0QfN1oZX8s{1gt@MYYwA{kaY`_ zyU{gqZ2xmN9?11Q>UKKuRU(^&%YI_dowRxw|JM8!w3psxvu4P5&|AyZ&Gt|fdhlCf zfKGVWNMNs5sO7so3fSG|4*YtWgJ zG$hM{^(>h99LG2`pa0f;fyEM5aeCcbblF1TTLW9p*P$+JLyYRp?J>nHLqg%D4)op0 zW97iDtz1(%Eu)#O#Pai;vHI!hbWv=|vS>6lGznruPJ-AWNZ!u>$Nwf9q=;a{IQl}b ztTi)^6f;xD3dGaQ7X2+e@C6TcAsQhrl3$oUB3Uiwz>ri47y0W3{+YzG0MK2UcW8;PKj)i6YXaRYcP~8yklF&CtpWH%OR6xR$ z?OuO?1na?nr1*gc=d{coJh@SA8r<^pCzCG3qE!-Ksc8#Ov%kB-cxE#hd`llQfSGxz zEIn?U8))sHSI6|o8wgr*RlX~lDjJ=cu|U%+5rsfdvJz@gfnHAiK0d2Nro7ir4T6k} zUf6?WxbM3@D_}}+f3mVZH_D(JvxKp%mFqb#fZfOQ_@E1IFduf6nB_Hmty&YB&~NR3f#MNDWky zoMFy-A!t64UX=(aFwu&FGIet6@pd09bx#S^+pZ^9w>*fU!JW*@nDaQCCac31qW!jf;eTveazHsNRY z(wk)JHnXTwot)JDP#aHzgboQL0Nc2TT#v5i2ue{-|M*u0ubR9!CK-bs(pI+Wf}{l- zRG{!t7GyjnYU4Q~j1Xe~`2^oyQt@}YapVO~3-QTS+G zR;=Hvq~Cm}=GDa5Hf5h0w3k7L=*}2tZm?m_jogBienWQ>sY0|U(B{MY%)2=#5*5)+%QDcC>BOdMa5{1?`FUDV+K+hhq>{dkjC!KJ@q|5j;&I`ZFGZicHT>Y^1Kil@ z$m-%_zB_^Wp3zwgnLAjW{o?K$s8qamNBYi>Uo!r=aonh=TN30guA0k^_ddVmWGc+i z-Rbmrj_>?rmfyG59RHMNoZO9}cr9D6#=kF_Tszm{gq(~RGQ@#F!*tqK##TnsKF^JB zn{Y+Sb0>e`{iXBt&kA3?xbWKL-y+vKUEpGj*mp;UeW||+&B;&tKHVZid86#2M8a2~ zH+Z-3+I<3F#QF-m%pq}_Qu*fcK%1TqKBe43saJ`6r&NiXvo+>TmxbSpxuP>l?N5NZ zT#A8dn}()uJYe~j1|#AHsd+29Ql-YgxwxZ(DgxF%g^ zFu4|j91Nd__@}rAh#6lz;%tw6p_kL^`?go5;n-179C>F@<6M*cI+DR`8J$<(Nt;n8y@{gK?O`;cIJfFTY6gKeT<7uN-GEhk&3DN^iH|kJ;puiJNI2mn0n@ z_~-Plw0%Bt>7ZEWE%;lHr))nb(MuxgzaYLUIQ^3E_d~YttGf%{xHgf{G!cY@C5`7? zG}Z`klVTO#q_*(Oze#wCY_{Z~8&^8OT(9Kw2q;NW$tx&8D-nk?%h^K!;DAG-z^Tdy zYv(KSU};yoaiO4WR0}gbtvujt$NT;x@gnc6gPNG{$|npZu6JoBDd;Qqsp~sI{3iAR zv~EZ{iL?z-S#lQb{)<%q!Qt6h#(CfHNsv4J37skCT#*{&nrY7kc^GoLK=%EgvVPSW z-dD>|(zrMR&$pCUcclcimlTuGe-q>e(h~PQL_~Ejc=}q{o&P20>EP7k> zfh>1}EMf`$Tq)YRGTXTguJl;sht^Jcg$vK${uyZgzuNl_s3xUAT4xMAe7Jq2_b}lqJ$1oLJ1^DhlCoMR9~ES z=YKQnzyE#j{cGNO?|v&Q-&tQdXP>?IclJK#>|*+g4o@FV^qeoeqlGejjfW8Q_v1BvBzH;XSaU>M|ki^|7Fu=V5kY zNE@wlSjBUwOlPN{s6N|Z3ThJ~=%FI5kUg^Er$Izb$r@;aT1u6G|1&7R!}RAu6OH@H z>+R6k`F%l<->u3$a;aH>Wjn6?B)i~jf3{9MG*tUzR8&I)WkL#xEUEk9XfsdI%IrL z8rt|8xt0JT9Br+2^usn3gF~j)y>&eZyOnddhB)qRVV#`<2ZTe4YJCGsefpDnZI-)j zOHb6`0>4!x$Kz8c%OGm9K*SD@G3n%;g?XnARigPq*&;oRBE<1_(zpcmNqw0gqNxU0 zNkUr!@xTIWhUWyi4N~4f%!f#&Dv#W|mQ=X{=r%GJcBJ^*PnwCc@$Gies9wLRi?DP@ zS=&Tk0~NdCjbnAsuZ7|UK;Tm=MscL46NFqp;kAnmOo|M+%DP1*J+kN4qb~^ZRWa-x()%&s)(2M+q zEoq67MYBywJC^H%L8FP`qRRO##)~uC);NIN_rGKFUo4z1eeVgllJ5wIoC0fztuL1G z?eKo3;Lf0r?S}w%R2l5emOS9a^!NAwgDg_4B|Y_dyKXRAiIeevUR48l(l(oG0!HjP zlpnFOjR%%|S@{n*rtIfpSZQ)8SgYioQ&;SYFBNC`UJFsB+V@S)X$iK}3wPU6E?Ow0 zZ<6Ru=5$19GGd5Tssgl@Dl7;hvo(UKmh?10V8-AdB;ij_{wNTCk&cm-YwUi@tH6UI z61^IyDQam%$dSkekYL45Wd4H5%fS*%!Df)A(5=Gsm|Jk3!W}fXd*pAte$d9_6PImX zr{5LaQhP#nQ55>UMHvjJ@P<-2?;XdWJWdQjwzyb08$56B6BLSY!p3CHT^A0S>3jza zeoBWYp%gb>_$PS6q^@MqCx85{>(_yY*706F7FW)L9Y+KYnYJb4gL!yMAotEJoPWWE0E=nh(WfP!QQklhI0#RwQvZxOwfrl{mn~1=Gzy$bcF@&KhQO*3dw0)h)yTj z-ki^=f7CGiN))JvXv0;N+4zlO%TFnT07yF!x&=$~t2!HJLCo8KKc4Sv z!yAjPGcDEpsKOBZTBmj13EUM-=ggm^OHnIed#Y}NXU7wfOvP5k9JIy=Sso$+3D(UZ zBV^@pR1lb#Xi6dqu8%&UQ$t03$WV9{?ax=!s)?#o)K`_Kn6PK21@0PQ=tWp27#7yyYizd*Yt> zG`5!b{=t*(H#+@(J}%Sri7S18RW}hmgM2ixVfVp)WrAba&srb7yGnSwvUBDbLpywn z97b9c_4^p62mdL!DfSbWTG>G8+s@IGP4jmZ0#-h8O|Ne+RR<1_ecX#Vydxyal59vzw8&lqr*O9#_@ll zXO2*-?A2oF8X2d!E_7W;SGu2Sux-hXM#hML66TWP?yZ##myPrHpSa;HT3*)b=RJqR z!ul!`t*4taDDbsOdp+Ev_;-O`vF`vM0fAxGIY$h)tyl`1gLzrcT$Dvk&GNGhH*$wZ z7u60MdvskuqH>;fle~j>I9Ub5d=dVvuvPmAx1ccer39apImNfZ!ep2CFVmeZ@FM0D ztO=I!;#ZjazY=e}=`(eP^8fE6e_*t`hd!Y-=$dg@M7c(5o&5$XtINENc8kGtnvH7d zd2Nj)8bxGenx&|4^&Py){rzvJ6YPDnz2no@i+n4)x0r3Fmur?&Fi5|kQ!4S7{cnE% z+b8nX`Au8@n_A9&Y*(_l#i$U|VL$m+laoichPqfdjVN$&Hea;z+idgb>B*iJ?J^96 z$R>k3gQ;LJBJjG8y7fcA^D_BfXhTbw@dX(Rsx==hxX&dg z?$#tq#fznH{s7zUPDDM8p2fs1&b{{!IL$Hbs=0+*NyaHkKi|~Ig6?PYBo)Q2L+4OR z>#4~T_se73j)prz!Vf)6^><$bBrx>Oh&&0q1=tZIeH1q#;kVCZt$h424`(;PhWJL` z2szQq-cN4EHhl#@i#fI5T)KaxSAHSvkyLG%y4LC4m&qH~{g(|sSEZpdvGQiHY3f0J zg-rcDR$o1no6qJd7<3d>rR*sk;19==!o z1uu8~^5MqJ{LIvpzkkg6)0pc5J<$<5z(!gOlUf+)n;1Y9Qbhe8}0qG%*R=2pH?_mB<07esBsHh9RzzJxQLAz`!F z$OlU(U$-0w=!Vp-*`0BYeb>Dx{ydn7uzwQofK2bv*bY!8M}UQ8zaMEfOz+VJ0_VPtVfx?r#C5K=PU^jvny~jB0C>wPabrb}A{5$B?hEY+ zdblD!o|ErU6%nYK`Y{Pq-XjAJT`>1*4|Uh zi3&`i(bBJyj}r1(ay2jiKPUSB#D@Q$iT;1q|Mm+L3ctyP&*vj?e4PzmAih$Jn*npE zsxh~8*0UxuCMx}YP7X)Y=c9W7E7`*Uj;3wgM77_LR^3vZDDps{0eO{4FZu{7KUKEz zPh1dpkS3>4n2PG+LDgd?_|Kkv{LXe)K8&iRx@3zf*t3oG!$bw6O)!Iw57A5D7>%>F zlb!*RcS8>zJJwA&O`q{ayim(NzzP|&5=f*%9?zy;<)-8bsrMcQ@>1hgrb&fwApJM< zI^H4}tr`PWB}qx=<)E&WHIVwQ;AdId5N$vr!BgjSxwVy%WB0XE2wW!PuF1w}tny=% zAAjxaH*LJmXgJF0TQnSZQ6K75=vYwI@ih*wHcZRdzxQOmRX&2W692e2-SxMXJCibT zjfyOq+p|`wy+dQ#EM$B<;#9hzC}m5!T< zvZxNwm}dJcb$x;09E>Cs3@a)-6?vtB= zY72g!xDI(rBAPrDyDNpbxX!UmAb2IJ1#U#;H1y2mixv8#V09GU)q_T}7~ z@C(Kjbj!-1qut?FesvuJeG zo*;^MRDBfgE~#Ux2I6M8Vq|KFR}Y@^oOgR5tIrdaJ9E(|?$otk>B+@)QbhRdjG_Q7 zRUB$yWML7jbhW@OIpgBu*v{krjyjf;!pPEh%XVtd>y6_+^!JPj@QP>WN221?bnEnL zlVpcuaS=${WN2XduaWK!s2-6hNQ%4GWF!&wxSwOk4Zi#M^A;a7-jWlG2q`CAo~CvF z4D`Oe8O_+z^46?ca@cjIp_o_eHaDC6D6VN?I2l|0de3Ts*1PHybRVHAx(rnzX?D4y zANSw1PHE~l?u7MAy=fSYr+SmTnx}3JRj0>O5sX5=wwxWR#z;@XtFHsruLreZm9czz z)I%w0t6m6dA1>QTQ*P;e8O)h?wv${^bWB8@gij=ukLOQQHQ0d`ckFNrR?#l}Sr65! zaC_R}2fm(o1i7(`GFkU6D^j1F_dt8Q+0RF4u=e?K&O&WF4XDEUeKidb-6h{F*Huiz zfF~to9&s1=eB1dL{Pv}=D4I>@60d+J+C3?%Z-?BV=@*#6Sfu1D#dJ3|9dm)$s1(CR zEL>@=R=qYpr=} z-$X6h`a@<&V4!T6{J!S&1h>$f{stQs;l7HqDjBAShVALxdsh40UPL>^2bYyQIZB{; zHU#ROW|y_G^%?y1x@3_Mp@+DN>^lE0uyTUQdfPMcq)zYx7}P!d%5%hrq9JRA^M?Nk zRQ=hU%|mwRr0Zjb(Y-+N zg5&>a`HNBiuJ0Kgi+WdJeBIE7)ne?Kfh)gnGbmkl5f{Jw%kMkq*Pn;6cQ>M@8YCfo zfmMyi0sPN1@vRHh+bs)~W>e!O$a+cI?M0OV-osaA7ht*&h4M>xVg$&N zHRD)jfTa)*` zMeKUa;KX)f48%QeUt;$bY50NARhZm%pZ#VJ@cJ<$5&FPzyi_uGp_*HE>#{e~K83!n zQVM2jsH5v6=L{H&x|@2vpST_lTIV>r>8LsO#1@xIMy`>YUg!6KY+I6snk$bLyIld0b-_L-iLfz$S9Q~G+jkj( zRc7bT+GQ_@wpHlpaaRl-7dE;SwbwK9rdNt9eHVem9ty=5xWz1y5(p-2^l9aH0 z8JPBP#+H5DKxyOw4w&nCi;ljHHbWKTGRkQIY&D?Uhb^Z z+@wJXrBJC~!NS*(4I!k1c=L3GR65hQ+}0i5FcD70nX4w7nuhXV%e4(zN(Wi-PKkwS z`)4Zu*A6l7kxi#g?__*HO0KwQv`T5N5Q*i(ifz==4E$LJ7+p>tNt@a@mu7I?{aRmk0eI}#-rPMeym!rm z(uS-GZx3JjY078OeQA@YRE*|*rw6xXp{SE;;nQIB_4s&3+htwlPME_F!zL2J9lnii zHEC^NC2vD5+S0Nrh})yIx)3L52t0eiddXy;?eof07sp3N)m0$Gqz;(~3*r6>C!X>% za#uc(?^bP{S$sHiF#8&F6q!hcQ7wU;+D%EPL#Kt*f{UzVdZPJg)VMpr`gOgErL&Wn zE)Jf{2F>ZSk@Ji3J z?DG^u`V|n%+bGKtmg-dXke?fLgP?yZ)(Alrh87eP0*;xQS2g{BkO{gVFy?GFP@guX zk>4A?c=9$yX>@!F=K*@>Z*%gh8C`E=uYi?7^tEV@@rN~ti<{}?dZ|898-~&gcC>|G z*qcCs*XG_)YqIHX@!6UIIEjx&_VePWGi-_Wf(>^UKvWMC*ul5PyYNh~T$5#{NQr7k z{)V?xw3%!F8!-4#DDT;`NykM>AtC;_mH95dd2P|o!PA*o{|6K5Ij|DrrvB=wHf(3b zI!q@tgl!4tSo}=Jp>ViR;gg(16a-;TV#f;u)(CUqK}+*)AWZ9aeq_%L@(tJe$Am{Q zMHMcRZl>^@p1w>@njmjy9FRHA})~*iLIo&l(x%a*TGB%DmxS#VkONG)hwM!a3Z0qhxr-PCFbDj?V6%cado7M{R~kj zy`XR-D`+XnN_;j4N&uZ)x-0`jt=F9IpzMG&6;!W$Z5Z1FhK+b51HobTG4u0t?H z$_6se0ltVvo2%z0OViu8KgyUJ^A2kn^2nPMZJBH8>lWWMs^m_b9lEUF%2yN}-)(_3 zT8sn5_Bf<#xsBIYPc0OwBnO!|v*^NkQkjmi#x2mr8{3%_($O|uKz(3XSHfwsc2Vj% za%`YudW|S;@}me3GBV62jgxTVogApey$-+T-@Q@1F7h5+3Y*;qnw4uw;ZF}+u%;ir1LF9+&G6;#8Z{Bm1r4muZ&>(hmoeDBebn}DgS zIC+Rr8ZlYdl1*%jV2;bqU}RNUl_27k9SH3S}~GX2jNj^vOf6BM8R)ei(=&M zMc+-6tu0O$`_}3KV#tv;c$tijM|mElx!J|I?*5O91R+^j0-~c|NjAImHhNdxbE|WL z4bA^bAPgdJpg!k@4uys%Ra2B>$M7YzF>9X^Om+v zUI*YYrIr|WFTnF{q3}np!spkKrejvUL~?LcV~|GZJdCPMzFWW5=QQ8pt=E7sAa;}F zywk{quh-Udoq8;>H&cJ$`m(u)r`N{ep#Wjq*VbKaHhWBXX*z&jh?*9g#4>w`Dh@9$ z8V(tV7rL`#JW*I15#AhIRr$Pgj3F!8;a9i;QI9o_*UhErJu6VbFs)bEn(=R7QAbHIg?}kMYP^RFwnRz#0!E)NY8V z`@9I@n|tC$Txdc2xno)<4SE0AF+AH?YLOVv z&FS6&@Kt0H(NZZZKFxaC|H}$hnWUhtb9w7KesJ7mh1sRV8kw$uVOe+bU5qBPatdI! zOQFt8ku`RNx0|utd%KY5F)16=dK0;|YUcAAn7e#)b8avk8?7UvZA3Z~IFIn%C{tm{ z-Cp*aXA@bp0n~gh-Rh93%1d{&yIx7PI2BaZ7GxOvf)98xYG20PKqtxek>u#)d#Nh# z@1@0Y7)`gr?!{RrOYijBYK9pgHYm;AS&1l|>0_2KIR{FA%5~sWAVsFzIr`Z{$*4JQ z8-ZhAvY?qZ1&>p3-!2Ip3FY4hOXZRhmhH@nWykc?v z!*^<-mFriPF)4XbQEA^ATGc$ek43TJnH|lMwAwva-wl5LY4MM>z_ZSG?1*`q4n2=b z%(>{>)8z6yFq7VQ8~GtO7`=B{XZNCme5yCdHCi56|SM{k*bk?t(I1t_&q`F=N zyV<5A6;ga8YHbeMF2)|8x^~fFW#eUyKlx6-`4eAbYw^Asv8`MiGghOxTRhe_ZdVxz znGjsHttC9A2)N#A1ej*?KAFHNbupU&|AI34pP=$zyY+=5O7o(yxWGw=DL$>6@5VS` zfKstORl=$ZWhs3QFwl_{lOFw|w|Fp7J$$A8E5CYh439kJfQ^k#YejY`&JY07qOx@Y z$*n{%%x&nEv#JMWB(R`YgNeavlye1$o1xx)JewWfY zmQZA-oY{1dIb6#8vq9hI<6xM-#+5xzN&%(yI)1`zP}y#*_>@TasgcmA>cuDFddn|2 zzqcc?EG>oycPnBt)rJQ*<-_T8xh)NMQ=;7h@TiDtoiBp7oABe$)%}fs2XnQuvJKpd z9@G+WUTbR4XaQvxWOjj**qC*wp$(%}uSkC2P}mx(eGwg|FE6}tZf?T^-6^DKm+NDo zI1k5u_#0vWrD@?DeddkI=@#F^hJdJ4sas;60ZZhR>p%ym(dasU7T diff --git a/image/avatar.png b/image/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..4bede63d2a5698160af19216e08993620cb8fb2f GIT binary patch literal 5051 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 literal 0 HcmV?d00001 diff --git a/image/beizhu.png b/image/beizhu.png new file mode 100644 index 0000000000000000000000000000000000000000..8868d9c7e241d5c7e83021e5ba84199b193d0ec6 GIT binary patch literal 6242 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 Cy<98+ diff --git a/image/logo.ico b/image/logo.ico deleted file mode 100644 index 31201daa3c32d05b1d05ae872a84aa243585a9c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmbuDc~F(-8O7hrwW2JtZz`LBECMk$HYSRg+TfC!C{|+Fx68g>R-@>ph?*$Gl}w@? z)5g>$G1I@=Khm0#)|s>ur&6G)i{YDEll`bKA5qq_VVBw}1k}_bt;UM> z>Spv-ZNlf3ThL!&!@tTqaIS0z-Y$I()g^lnZaD;1(v8WY?)drBvH7acFWKCYc|Orv zHqt@x^JQ==tB`FD@e3GKR^oifoo7{Y{Eo%VvCBP`ZcH(># z??=Z(`QlBkcajU)Yx{i@&U_O71a_vMLwylYZy~=7|E;USW%B?^mC-OoRn%sY7suPtO>?+=K_Ut_b;mT~2}H5XkC1(?nJP1d5@KB`)vGEYENZi07Z z8_L;#mz?@+#7P?SznCrHRM56Y~?d-hKc+|>| z=AnOPJU*YZ6g?~c_-aNu+?qB*)v$hK&u>|WLru@%6zlOG>+pJY16EYDVG1))dd|wX z!;SnfGDAyt!>x4p?Y!<7YNu}`EJ2aGU4rR*Rs#A%J1X*j0aMw|`?H*|W4Gi+Gw+WzTf*WYk#YDqVf8!vSH17P zWA!D?_NPv@tOr;JSUCr^)ns$`=$z9|<2?^OpO6T$=fpu`Vj;1yxSWvG zbaifs(Q{;%vgg2F)ANs-dU|ic5!T(E`%M+~V1D6YSeD>B`j3qJRH7X0xVex7Dlukv zUtFAO**L74p2p*xfoppI)z%nnaNdeJ^Qzz|RQ@Y)p}cetIQx{`Kqc8hX2}bjE(L+E zl!b+mx#F}sA8PkcEnYTyI zTQKFl2DiN9y#5kOGDDPP%rZ${4>e{UB9TjW49$2h!kuPMW=zN+bEnF@4P2&R*zXKN<;H5-}*L5xZo0n1}o@T$Mf# zMYf6kK8@a|7aoDR=p|;J9i+&0;WdZs0m;{FaxD&ag=Ujm>tHu}gKWqqufNFV8IjEU z6Xp&10X;9G7L%P40a+FfatGz{u%F4w&}do1x~>Wx>mSJ^H`ieMliSMsfp5qgQcZ3h zJzJ?JvRlZ0mfA97M7Da`nD-k7`w?|650?6dOZtS(tMGfUQoJS-U@ z3z+vh`rbm4laaTb-A=A% z?{J6gavNmtnON&?Sx&w^Z^&wL*Ut~{wcZJ$=yjk=LXq5 z{XDZ))Ps^1c8RsN=dIam9qbL{Zlvc-$~o^lW{aM0&z8Nvb***YZH~M(yHm5teV*Dg z9nwARHCYj=D=K5 zIM*L=kA5LGkL%oJw>a1TX06Y2uK&)tev|A5vKNx=DL*%l%f$r+*c5IlwQZQXN?o9O z!>IxrY`q0&x25urt5le^OyMw_!@^B!zN^WWZ&tm_Osc@9RJij~+wb|R((0uy@ZS*p R-R2ugxsu~WUMjiU{s%egS33Xz diff --git a/image/logo.png b/image/logo.png deleted file mode 100644 index 56a8858120963697e5854321681737b516272f34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3226 zcmV;L3}y3)P)V*myZNGUM6`=*s-97#e+693y1 zOGK`?$^f)_UowuMLrFFx1KEZ&7Loz`1*kGml4%4(O42{`KsKEg-4>%wkV>@sB zF5_!|C6~9Q-+$aR1qkJWN7tzokf`{1vUcWy(rY5ivRZ&%?Y!f`E0GKV%_V;Fdkp|| zS(eofbbA2tSv#;!JJ~y4Z#aJ#nDn)AM%T&Lx(uL(nr+)6;CkADffD0nN65Vh5YY}j zDZyNb5OzX^aA`#MLb=T=Ur08W2t2*ODFZxX1{(}mmUT)4EV6tU=$7v$<3h4GgC$J1 zFvChv=rS2AAT*^hRvyQV5N5X71B@&JIPID-s`ai3%{arBWv$asaHD3HQNRls3g4ed~VPH60naB(P35V7~ zSwyLT{W(N;v7$O4jMgsp;`0H#{LO z2|5K61l&p=n}%kUi!piYhGboV8RNG1UyF6T|NH#Mqdqzk>k$r{gu`@bTTXCxIxVZc zaJ>H#JY3bwfgyBQ^M*x6O9>vAfgGwrbx)?KZae#WY^a!qK0Fdjti31MjN zC6@+3AxXc95;n1<8YslNjEAA*y|xu%p3sqS-$?o4i9ZH_=ZW2M%AF1>oH*r9CFKgr zo#T`{BWyb~lmVh2CJ!js9~ioFi|%P9X`ViK#m-P%(hwHHKJ5nkjOJOd1!&A?_-2K0 zatu?5lwj`2sQu91A`1kPb+(87Ve%q^*^5rQx5;|Xsl=L)+9=@KM%%B z(>(~{lg}*Oe4u5R^fO2F`|<=&N-tTK)t5{Et-#5d@kPMUdvExj`ujVFs0aiPNO1ru z6G*2ODMo;}Phj_~-I`1QLqJWKs5ZcLTqs&Ue(thhp20$ML$+=2$j2EzM>YcWAt{EO z!z;zI4+}FAz@6OImy>~VWPDMsqZe%3Bk>gThz#)Tqw^I{qa=8>ttzCKmH=wCE^0;+ z2Wkx3ISnKf^nd)~<+H@6nC!2YpRp_}E$8Ix9j*5O=3@bTb&lZ<0_W0F1BJ4WzP?e* zvLVQEYR{AhOvPrbOnLNDD{MY-qzW3JKVWxaZ4Vm3>K9?P;$7*BUz zJ+C~Sc_z!ep!Eju`n>in%Ub6Lq>p_da}H6#`LJwk=LRZ=MA-DyJ1Ra{l~KzP=hKMSpawmob3Aoe!N_Vr(ome&=G0 zZ(R3}`_gJ1KbQaxA@>Alk&NJkFe$PKB{K zd7L@X#=#fj^t=?kSz{Sn#@hG|Ymy^Mve{g-e%G4!c>e1nAZg?1)5V9Qo?TT))q$jg zGF6FG)0B}wsv$ZDMk04C2LP>3Rv{Qyk{a`+34i$JAU9t72}sq(FP|wKL{ILHBh?U6 z)gXZ~1yVs7?pCTcItG_aE9v2Zb|Wt{iksLQj$lv<4W#X@3$ZC2nuWu(nUx;-=r*s& zAzB~q=iY~_@^0nv-95nTKuwlXhj_ldc?rSOs{teQn(|@XBw}L(gAy`OiixU{b^0x; zl}K1sKEvpp1I~5V%t)6#m`198%G3}8KRcIkf=3>#MbhksELCGL4IvB!lG8j``h1aP zSr>4}gtqwh*W0!|<{Q-XY!YbD`&)d+hP`v?xiiOn`%d8wc>2#bikl^F!doOR17}%kIp91>)Zy5==&Otp>pjV%(Ne`wr>i_4}_urdg z+{EZ)=o`x3nu?9%5El-og##Bqui)U{?=s6*0{elp?CdwR zHV5nY;LPp3bYE?W!BdYrD43B2HXJfxI7tAjSr`kNzoMwtcJzb+SU-5WaM!pA{ctpD@OWj%eA|hD zd()t=xhpV)`9UNc;y4@@^Kks1xAFG$+KZVbRSmGw_|)V8N;WGgfb@-@B;fTbdZ5#^ zcD)Gjg1*t-&8xO7OX*LqQNK~^swQ1#pn(77fn~sRqHn55uhFJ|7@<*@?>5fYonr=J zy=J^&t7hg`e7+smF!%x~VqfP&OoKX!}^Ln~+ z3<{5F#%nQHtX`jM(#NLtK`ds}^WKkC*n6TkR3)pBbbPJ)-w(Zd=h5GCZBdS+15cuJe-7fE?^KdH4)wekCy zcG7zNyV}z`-ei02pdbz8pNy7E1Nm*WzWyK$RIPPfqhIHR=);r-D(X%38&)T)zH`&N zy^q(uwtdZ)F0M=gK`a_Tcd%zLS}?dAdSQ71>H1{Vfrj7xwCUz|ez0ogOm)EkS|~G( zR2@s12a4=61W=mo-q(y&&ARJenFgRRFuD7WBUJ~T1Lq=lT+IM7t#fZ3Wh#!O4ykGb z05pzNoMCjwApSF6eB7DN^SD6$AZkwpNCECNtukrihD2e2hK`9`)CO8@`> M07*qoM6N<$f@m5MdjJ3c diff --git a/image/pageLoading.gif b/image/pageLoading.gif deleted file mode 100644 index dbcd9b12dcd026c6c0a5abed2dfc749c697e5a65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 264835 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�RfNM$`!1dXcoCE%_oR0;7 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 diff --git a/image/tupian.png b/image/tupian.png new file mode 100644 index 0000000000000000000000000000000000000000..b27bd57db7a1b0e05ee6516e9452d664733f3ae9 GIT binary patch literal 7578 zcma)BXIN7~vknj-^aModgd&KD6saPR(2?GI2a(>SgM`qVMCl+%lTN78lqNk=1f*9% zdY9gB{O1ZXx9H<&qvPu~HiTp-$g1b<%e^TR7=tl-e8TK60nVn8I|*MAf+WlY5x z;w}ifBD#BHwx}!4Y9;qrF=G*M{q4MZNlFIxc>B6#pjNAKpJ%c6t~@%S^8vE8IV9f zpZdckE!=mGI#$a?S&${dG+65oB@11w9~GyRy9-4dufPiF{&uWgr1AA%Qo? zOJ~Dtw;)wh_ki+ph+RLu`n#Fpk?4<52bU!ylt4oaESO{og1jk?M+=#n8r)&xO18^> zJ{S>(TU73sr`I^s7e2B%L+(<+-{5*uo4+7>U_`qcp!prb1utbI&R0=% z`tktR0qw?*h=sq=KnV#kk?AU!auPAE!}|< zIO`Xj?Gy(7i@i6iNF`Z$@Hk%^{*r)H1F*Tcpvd)aV&WoxNEQTi8TLKSGe1KmE)1G@ zpMoK!D!GW3W?NV9D>9*{rCvV5)R7H^sk}9|nhijr4hxdUB^l%j--Fq0@7O(!H_-&e++At%R`TCitF$&kH-s|SR(bLlA5IJ!x)g!P;NGKH z{=&4+l3?t=$ZrXbLqanFDsPCE#gr$>$*6L$%FIB;5%xHWO?~BG-VEL_J_OWhg2PM~ zr4S03=CvJ(RAq262`*P>;FM!g>1W5>9^Xf{oYv!f;ZQHG78)|Fb+UtAvW`__&1y^M zGJB3BV0P-%(pYn}tDGOj0rPZ;0i*+By1d^k5*Ac{71m8;0r74Gz#!!L&1rcU{gbfNT!OK03)1&+!dJa_psWo|Jx&S*`TuVw6KTk zWsIiMv@A35_do`n>$5^*LuVx+_h=_C?9m1uXpwo+A{=JE%~5=(C{G>pv1B46;8ECG z8{g0G=oo_w(&w~`kN4Flq^ftoHPL2jpyiPC3=vnr$|#~rvST0?Gu*FkDGxk;{D30X_Cg6Lf5kH){UJQ1lR`1!Ikeu9`Zt6^x?tshlSK= zYd*4;M*XG0ioci5Cv~446}lnj;+OZ3amA$>yl%`w6{v`Q{uQoLvK zn_lG@fAXt>?EJTUng{b2A#7=pYO@|K-T|I-F2UcN?szoMw{7U9QNOp!A};m;a};tc ztEAjxvx4i4r4bkR5NxJ|yelhudI33!gg*D0NZ{Uc@E57I3S(Q6G05Gj+_eE^cw@&( z(B`$4{FP;rr1(e*_|LEpY7(GA;|1nRF`Qn@Kx~`oh<>2<*kjE%SJ5|^K0e73EtXji zTrcHMd>I`?b(+SMxf8s3J`^L-q)YW!aDpZ3hsBC`xznOpZb-t<_CIoES5DnbZX*4Y zSoEQWG&_-KYqvI8opsD}FkoJ;0+2NcgWq@|yLht;Bwr}9AT z-ZesV$YC0a5PJFQyL7Fc3T0(u59xJPx#POXFv5;Xd%jKx*2=Uo*-07H@QOk+oeulMn%niR5 zW$$<_$fd~(2-oU4+UI1~Ym~D3ZLFtv)jLJd{^%WN@XCe6js#_8bFZwAq5q7JoX4|O z9n~j^@ymqHYu1sIg;@siE=e`mwcC2B`C9F4zmVhuh07~`HRv^59ZB4e z==aOx=My4g=+yYQa;^pdZ<)N~tB(7%3qpz#l|^jsFssK&&TP1FXWr`QK&+go9+G~ zCnmi$#r~lBLoDlJLi62!apwgX?6!s^xM;Ut80Qt zwscTi14FAe4wcK#=`LNQE|Zu3NLILoAv2y01H^oYpW`i!FuRw@^s4)lMd`Jp%h|Pr z`7A^8enw!7XN5VE-RXso85(iyG;Jdx=}OG<(u36MxQ93B4N9h3ff@6w+{LKH@o#?j zX{5Y3pJmt8WL!1Z$OAW5t@ld#OImuLGfNawt>B%2A`um&ffedvK0J> z`2e2E$qO!N6y%{IZMY#26Yu~fWw#l$n2^`^W$M5@C1JfH&RdbEK7S(p1Mi+t-;1pD ztgk(A$kd$>KTjq5&T6Jv^NssJrk#St*jN}A+Fq!^8>UaSCA&>@LxN^rwFIlS#Mai{ z{BKCPwVH}3d)a(C9RJR_pe?s|Tx8*r_1>y9-zmuhl9mlY9L~bepPlxf{dUr=)`bjrhRSa9n5Sn6st)yCQdu;1wdtIB*BOl~L8Jxjnpib(eR_{A=N-K36!J zbV6Xf^YKw7$RH!o`p4*rKEr)uNoka(L%|yHkZD&?!-99#C!^-I!&b^SiWfh2-H+P; zpktO9ik5u3g~g__xEa2OapMq=+zKvy?S8#PjCC&$mty(aPt3bE+V-tQLulxQ3gW&~ z1Di+F)&5!^Y_yGe@GZ`q^w3L1AGxpqOY;2T3C3(ayT;s&$0xCM(7VV=R$OSZaggx) z-Lr0ozCyB(_1Hk^%VR>8aBX>ay6PJ_Fr#rS7sq9|)oep@O_0xc-Xe&xDYP-?#l_l# zGs}S4zldIR1;7`sW8Uzqdo9=Ih=HJKcqbt)^Itf<*w*AF%l6poXbbP&Z0m>Vppw|h z*>KN>D(7aee}o}Qx-^rPC5o`FB=E2@>f&%|V@yWYKxf;=%IEEpDMBFAZ{y(O$XV|` z1L@JcUVWt{cl_7*Wlo&d?2v_}M$r!@xEp%%s}p)#mydvlB_2KtFA`|Sg+e*5dHI<* zEvDr^^)lJLHw!0JXVZFzKQ+D0$G_3e_I*oBUYRhNg1cyqcoMO}Ei~1HW7;^9kt@bs zXuL&<1U^c2<&+7gcLW&WO*w*eURjhLDYWYVxPnhc*y$!?6bGr#2oDK3Wt*BO?j9a-iijSp4mw$ZixS{~<2bQa$YEltl_lvX)Xo<6>I2o%aM z2N%SYst9NAH@t5gug$llK6RjUwrDF$vNThI>BcgpAClmoUTf92{jOaQ`n{RY4lJP@ z&kgsX+5f0CwGjcT1dmb2i!u~(HaNJ_TUXkBUnGo(^kWQNORdd-7!=_H!=Xa=?OzK( z+)_TD4>nG2SccJ!AYTeJSscaTnS)#hX1|~E`qbn6yb8UvT2k=Fopi}AsUR;Md+dRY zC6nolzJAGiq*<;PWG5)=gZf~gk>RHyGX&H3>{bs&5sDr}hQ68)psXo(EhB-m!aRHp z&(ek6SVPnRzJY_UXxl=Ogs@|TP?5k+9MpNC;1eN(6QNVq!Aivw3)l4)dioECg zo1{@Rg!U$A-OfMltwaga$kk>UG1zpcO_<2zMV|VRdWzGaw|v+B^W& zxSRw*c16F<3Q{-H5!KV&7=gMNXsU4yZ+ZFOVuWyUSQInKBXwHO&B8CTp#i<=ZZ2Z^ z^9zLgdu}mwxh8bf{9a|l*leKOf{x#PfV# zb6N9x0sCRIwznKJH$GUcx}wP<&$rYChi8GMstO=29xK%+`wTluL{Hc( z%GJ}9c}&I2qP6WaeuhC+wPV~uNL^=)dfLr>jXWmwTGC%Qk9{U|CSI?8Ru>L+)>_9R zuz2Xup^{xZ64OtA5=uD3zS~@c1uXHd6Q7@1+-BWfllTX3Qa(E>$>FY%}uJjqdBpZFes17woa=X zBfsftqO>7SR+Xmuojyqso$-b=YAT0fU3B9)H^JbOZTq%bvQGT5o*C>KJZOisHUhUi zpYy=j&u9Iu@4!O$u^fu`sqQ!*FWwS^!jeD#fw^$c$11~MA2GD(Y)2*7X8rMytt}=j zd1aAC>Xk`q7Q-jSpN;Tp`Lptmr5P4eT%7k-~QcV(9ke&1>+;P|Sy|i=4^5bojD8mvPV8<}hy*i1g zZDS_G_aIrh5S@T|TUAk8M;RIz=k@;7LFcXbw3-6AKwQcV=(&uI*&UWrL?H3RMF|zS zFF-Z>T(*~YIw&h@tGgmv3Q`J(OD)ZCm*n@)$ghhF96M$%Wiw2!=p4n7Dy6m$9p)Dq=Fa-gZi~C!^x#X_V@Fq6nBVq+s@u8QFmx z=`m1QN}lU`<`82zk+QID-Q8hKfw=j%nCSq1*3edsi7}ijv+gvX*d`YeB-TfA0RyRW z9Mr6wv$d)vhB2q+;zqE<`w~|!a!Qg!D9@q3;s-bhDQ|Wg*OZEbSnd6gU|(>~3ftrU zGJv6q6QmaZ(L-G0)1Sd(zTgrYPm!^o3}M9Ui@Qe)UwR zg)+DFLc{5vEO~0-Nxe~5dt?})|LdhiSMJ8PQK7wC{i1#Iu|MW#dEeiE%t>rdyMGz= zdYRWay){>!c#HK&LSqTsbE7S29i2R07}+cRBrXDbuU&>n{^M!t)6kPN`|Q`GD!M4q z?Diqk!3&Z==-NA6F`qv|XH`b}N*DH~|S zpLJBZ)_>n&0#g{bEQmWyb|kH?@`=ZGtU<`}-7ckmCL}Cd^WLb)(ALfHE8d?4^yX=@ z)`SlTBoFOnrGeM#N|Ta5cf{&t0(WImpD0?JPLAAn$BMo9-q44a(dw86o2)5gDHYNv zD8|eUI1>&PF=+PoJE+T4u9>AdXJ@kn>^wKVU5~nuQ)4IR9p3Spc+;}dWuq*I2*X)@IRoIL>3kYuYv?)VGio8bvYshbB zFsEWXnyWE5SPw#)lkld5ZY>pOz>_TWbx5+3xa!KE|9)u;ggM$3NVM_;p_Cr(!pZscIQ7_Grj- z#5L6(9h>aN&PWnhytal3sjMHNkJ5dPV-M`P^XF-U3n<}7i*S$dNqF7W#^>eal!Zx; z+QGM;P~jtUC(P-MUWDB>HeK0tzx_5}Ub=1pQ*cI3^)Ou1`;Bh?0Vm>=ah%+`C3##L zpGLUV==f$0*7Hz!ztv?ea-q1penU30U3TTH1i0{5^dc?0`uG@P`9dBBJ~9MEHsV`u z8og$=q%4=yA52$AxYfn(-B+IUF6%~b$i}u8WDcw(0hvy#=q|zIKST9}1~_pVg?TJ~ z_S;GX1=s!jHJO3EJmArl$+vG-n=?t5^3aJ;C`w@90(hNR_T;xbcfRTUu9Qrbf7xU# zl&;)85?tguxf{LHejbA1KFmEjT#D8{diGQbby&Hqbc=ieBw+z!%*g_>$26QX$ zJCR0T+3Fg1G8&yPJS=(;uE$k_y*j3ZJFS@|&BX54)Go-ZfX#TTfPe@@fh z>uX@-usLIBDG|=u_cOJ8nF4TIuFjY1>SLKmRuGI${cQDAlfzA(8ok=wv=4EL)-VNc z2oD5XS+u6Qb8M`}rBKkr*nvtsbfW3^RwdgkC{<=6oSL!OzV-cpC;sTK%1X_y`46uL zFt6=;XstP~PPYZ0#SPBb=r2d_?3I4|oE|$-aeG+10Q^Y1knR8?v<7a&`mpa*q2jv-0{M2;-TTk{_8Z>7Snjh{;VYCDDrcK(C4fHF^XE3v9cq_| zWH1{I9AeM2#yJggT7-b{q@HZgTxb%|h`}Qk72Z-TA?R?ugt=Mm7rbb)OZ((Ud{ zJ}8CnQ}<1MfFL)$N1~2r4pS9|pTeuXSo-*sz9p!nyk`Z;M!{MpuE*n{o%`$*$O~)8 zGPDpF;=>9%rsqzSY&EO;l??6l`QVBJ`eIRT)*m~cqOe4uJo&WJ?!FgiA6Ur)ZxWfL zjI(1nY}4i43$21Ut(QC9eK{FwWC7B$_FElkOv(6sAlc4JnsQYKf~GJqG_H7qA=ceT zJ)xIJG4_i_T78H=O7qQ_>{pFfGz+XFz$Lwh)B1_ptj1pNE=FE{-VOOJYi=$wabDso z>wB2CK?k9wb?`8CN4%_DV0Rp#67Mw+KT~z?oc_>hbM{}|eb@?H-|KW9!Cp0n*qaTW zRMqnnd6}Kw7y#$am(0mZ<5)jt#yBAqWGFKhI*5$vVgZq2QSyB*6y%G=>i56@)c|cs zLAYO7pg#ZqG9eb)BJUZEmXl!x=f-HgNUW|+l(cdNRt>O(Ok`vW3=D%ZYQ0vf6~+qx eTeEDx!xQ0Yh|A)hD#F%W0ZMXevS?`w@a@8{qv*sDUM43f%?tm=p z{{3e&98pH;vl$L0vmRJDlMeh#kx~9?&XW1*o48stDF7Sc-y<3AS@RFDxh~8bSO7m~ z;`YIhO)ybwDf}=OW##`&0@A0z%EiEa;J%#9WpKZ;P?{^nS#h zpu74(?xpPqZ=Ccn{WF=Ux2Ddv3p1Mc+w*!-_n6s^n<LHr+FPpC+U-i~Hp#(kuIA zqjM?un-=b$>h^Rdf(E(FRGy^k2t{UFmlUuw)Pdypmq~%OL$3_nl^dkM_SLaC;jX+C zDR7L7>nNeMA|HUyz(2E@eCEMm=l-)Wtt(st%ub&dye<|Ex)*r~UJLQuK5;U%V|vZ> z<|82=;;0mNDWIg;Pr<9v6|w`&Z0-&pJdS4hu0xGcz3IVk#HAmR_J)*%HCZ18oJWRI zAlHEhy>Tf1Ww0}GN{=wb+X*>qk8wxbgX7XsWAFvCT5wv%3*Y6$K8K(3SBt&fqa_ zUMTl|7BHMmlei5T8NuZjh#zbpMh|d4lp}H_%sz4_jUnDH1*|4Hb>Q9@s_n5SJNnBT z)Iu}fcYoNJGEjTNmF|_|^E*yl-_I>1BD({s@r_b|{^9#&DqfN$DL0|qqZR#9;QJtU zBskc+{OQ^$tzjvUK<=o7r1w(l^7B0$I?hhy9y8`9i#={~rN9qT zVB+d?DG*3tUJ8u%)r3jsWWts2_>r+IoYLJ94CeH6gKFeoxWw{@RMX%)?en!W~&r zY>5uHk&VcsWEQLR4RKjm3;N{i{2@rWN@%iUy^CuOb4Yi*4h0O@Ov- z1p`vxz>}J3oBT#GzP#wEgLPV8&Y#KxcOJrL7%ZE*@i}e=76oy~n+nScrrImzO5=CI1hM;5NqSzy^BSrC zIAq(I%)!g8d)_|7r)?Z8E*Ls&1E{X5+5Nn!Gav&dWGoBH~=NwATXpU;H4Kn$ug>yPgyNzx3b{!s4`oNaskA)Ud zT>1K#Q)C-Wp^jtM>p}6hq|QG`QORQc`oqU0#c=(t60#H#$|CTs4-#QU=Y;e=~ zi%%|@F;r=-pd{mBXL7wZ6q4wR!>m5udtuvyCPT(Ma0hveJMCfUC2@rF$L38ngH3r^ zybc61{p6de-6PrTNaCPIMpQn77>dtv7w?Da5b?Ymz9m5*q zp?9|ZoX_b(rPw$zSac_6zwdhsBYb~RY46?FN(Z~Ggii3tvU0p$3Z$;4PEAUN7kLZ<}r#Hgh1Ug6JAe%@6a89yTS%sYdPW+YZ-35}}UU1F%}QsACShy(+^ zMzpMkkmEZr@lt>~6+9NAC)TXZ9_KeV<~2!y(olqHMaU=diP5pVPCbkRI2MG3LQt3~ zt2FU7QCMr=)EaSxP?<;3JUS`vj2q)5L+ENvL+G_cZ;XsORq>Q3aP#as;lT5dFKoL+ z&n^$)gK2{WMgyW0nqq(SiE5tF`r!=q7ZmnBT8q7xjlaLfRx#6CrX;$aRflJLi%$dK z)#_Uaj@8F}Z?RVmAL#%Sb=jb*jF3CF%RM1FqM6g@C<<}ZZ(#{SZrwFhP&^?8)~INv z37_1kqo2-Vi((s0TKnaEf?IaJz6)?>$lVa@f*Lhx}Wo zOj@e~Tx^pbv&fC{yYR`=y|e+B%R)7V(AO}5it4zWmrQIAMqOwqDA8VL!Y?h$XHgpm zr%Vwvv7#6+@ZQ-|gd9|48tq%dk3R7tFSSdMMIK`A)+((D+UIn!qP^{IS?KjUiY!S% zHW<5iUH4Q{NJ7k+(*F zw?{-sPUMB^(`~+4n%Qws1SzPYLd*|qTxLaAK^oR%Rr3Wp`dK#o5ARF(CO)AickW=1 zjgz?#@&p#0G4XKEWoH-+O9Gv}g|^{+wC6%4BVl9yuzVeMAC^vVb}3gwo(fGDROer) ze>et3zje5*&gea@rxNKkVXiZ-AA*V#3}+i4?2L1T5ml<*l?K6%PkSH74ho$;MTWGH z@$C3C3}S@gK4O?>CTD2Bx?#ZiRJZqA5vN&*tW8OI43D+J_dVj4;R^b%ZF+2{cHXMC zBd7P7GTf~w+>rvY!BU{jPa-U*9EP4Z8#A37%uRW;4CNrb`rLBJE$>WLF+6CPHwcji zA&Fi#yvH(BTqSKyBh{)YCx56-Swzmp4Hn;xq3(Sl1y*&)|Jase*fuP9sUaxEM-6u5 z3_(t)bfz{dO{h5H)1yd#+)TRO7~St#(J2Lv4tyXxg}&tC8KPni+|8S@b+;j#Iq0xf)b!INt#`WU?X9c=M{SlP(1T0HC$Qcqw&snp22lB`8SG~HlzGkAhu z9p7S-_}U%sS4{P2)iK(0iF4r3TGx;jW9kN|Ljd2z??R$Rl$3~K@ zc4;W!#M$D;UI+F*B%kq|Pd!>z1Xq@kbuq-WVMh_tv14KPL_Kw_yK`EiFPmtJJ>!iu zdo{%09|^%F;}7;z7H*GriMse9>c5@Qx%BY55$wP+yXb5j)eE#|M6{8^cCdmFY!WXE8eC?<%7w zkkuLf4&aF*lh8bCGo_Yw2)o7jR`T;x<&6$u^sB+3^S=Bd2f@RB<3WJpOHw$UJlk0=hZIFN}<2u>?1;h=w^)18GJeh-C$ z>emTc=5oij@q_j&cYj=4*i~q-Bym;tOR&~Y^9S6O4YsT-PR}j-pdYl4jqXKJKZ?&n@Kg+Lbtu)R zWsg3_K8^@7Vs4C&4;nr(9ae9nuhTho!sfAY4#f{*OUxifU5$O;*}JEOGNvsX>1fCo z>G&tIsFsNG>cPbNZIBZK+7nTynN|eO9ShXU_xXBjG9>lBdrRgczA; zUrUxW^no_JALJ$G}5MUVwYGl^&R`#QNC5v`TmmJ9?EeNNrC!?mkW=;!Pz}sEtbo-j}Hs(^)>`M z@oLe$)djXKDqE6V-%;!&v~#QNIwX5Si$0PzJaLJv4=9SX7a3&*8LerzaIMDJJ?{Rn zZ?Y^pEyp-XeBv3@(E!Dh^M=cFe`jGAX8kxEBDOPPHG{Q>tqz&CI^e&bU5kV{xvg1e~lnDnP$iLXK26lF`=U=qaRjM2-2NF|%b5Qyff*_sZZI zOz97Vc2qj;OBNzWf^)bw{-cI@MK>dAuRD!Ww2o1zUT>AJ@yOIO#gkl{K8+pyHNQZN z+LBT!pihn)L_8vMyv0WP11&rXMr2b9z=)9OL;brp#v1QC^^-y=zJxB;FBlKW-BsZ! zmICkUY+iec9ifMzg@U1Lbp&*LeV}-I#~+oxIq!!Ft)kr4OeKBah2Xp96l9wCNMC~d z7XB5K?Ua#zW!9Pw8@%kF2z9Zt?{p2m&(2JpV?5g;!aWALzrBvqI^eOip|TkWP0(MAr%ahtTxJifuRZl{gGh7gr>ni!o) zIl8r|f-JtNSCSm*Dq9s~+zjm!Tyi2I{K^G`Vl~d;0hHkmhpIl%y06dP3E7J?9=1xg z*LNCz8G4ju15a(AOsU)uNG=wdTf9cv8B$O2Zy^y3VQhm=`W9bhQHX+`W-6*sI8-iZ z7mMs;s+tEaS?_Ow;bT=czj&&*~yd-7T*D5P8(LJ$OT;H{mDG>H&4?WA1|?4W4CFOhzEU$JDuCN6%7;dyenHxk#6xSS z>nJ~cu(jO&%Oi)Y76o>bdOBN&nR;P(UuQwQ6C3#nd?yaC%m{J!UHk}cL@XW-VeVNI zB(B8wha#Kt`Ht1s_w(&h_Gpn`_(*nAmO8UfoWfF%B}+Jc9gyNtulwm8mmA1VIk|cA z52jgrt*w`PGwXeqUu-I95C2K%*$kn*Uy7BH_vnz3Lix>di`v)cjkn(W-s#WP+WW&i@QErnH&yr0vV_BvjSeq&eDyBdU-P-}E+g-)p?%WIanpisij zyv=DBeAl+^)PLL4Y@wdRNo{SyllhW7o2v{5R4&&=MQJ
diff --git a/pages/consume/consume.wxss b/pages/consume/consume.wxss index c29e370..6635277 100644 --- a/pages/consume/consume.wxss +++ b/pages/consume/consume.wxss @@ -10,32 +10,25 @@ page { display: flex; width: 100%; justify-content: center; - height: 3rem; + height: 2.5rem; align-items: center; } -.bg-w{ - background: snow; -} .th { width: 50%; justify-content: center; background: #1E95F1; color: #fff; display: flex; - height: 3rem; + height: 2.5rem; align-items: center; + border-right: 1rpx solid #aae6f9 /* border: 1rpx solid rgba(49, 48, 48, 0.322) */ } -.th-click { - width: 50%; - justify-content: center; - background: #1E95F1; - color: #fff; - display: flex; - height: 3rem; - align-items: center; - /* border: 1rpx solid rgba(49, 48, 48, 0.322) */ +.th_show { + background: #1d5b8b } + + .consume-type-icon { display: flex; flex-direction: row; @@ -78,8 +71,8 @@ page { } .consume-money { position: absolute; - right: 10rpx; - margin-top: 35rpx; + right: 28rpx; + margin-top: 28rpx; } @@ -96,21 +89,29 @@ page { flex-direction: row; } .fix-item { - width: 25%; + background-color: #aae6f9; + width: 27%; height: 50px; - border-bottom: 2rpx solid #000; display: flex; /*使子项目水平居中 */ justify-content: center; /*使子项目垂直居中*/ align-items: center; } -/* .bg_red { - background-color: red; +.section_btn { + display: flex; + flex-direction: row; + height: 80rpx; + border: 2rpx solid #eeeeee; +} +.section_btn image { + width: 60rpx; + height: 60rpx; + padding: 10rpx 5rpx; +} +.section_btn_left{ + flex:8; } -.bg_green { - background-color: green; +.section_btn_right{ + flex:2; } -.bg_blue { - background-color: blue; -} */ diff --git a/pages/domoTest/wxchartTest/wxChatTest.js b/pages/domoTest/wxchartTest/wxChatTest.js new file mode 100644 index 0000000..75dcd15 --- /dev/null +++ b/pages/domoTest/wxchartTest/wxChatTest.js @@ -0,0 +1,78 @@ +let Charts = require('../../../utils/wxcharts.js'); //引入wxChart文件 +var app = getApp(); +var lineChart = null; +Page({ + + /** + * 页面的初始数据 + */ + data: { + date: '' + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + //获取系统当前时间 + let that = this + var myDate = new Date(); + var date = myDate.toLocaleDateString(); + console.log(date) + that.setData({ + date: date, //选择时间 + }) + + // 折线图 + var windowWidth = '', windowHeight = ''; //定义宽高 + try { + var res = wx.getSystemInfoSync(); //试图获取屏幕宽高数据 + windowWidth = res.windowWidth / 750 * 700 //以设计图750为主进行比例算换 + windowHeight = res.windowWidth / 750 * 500 //以设计图750为主进行比例算换 + } catch (e) { + console.error('getSystemInfoSync failed!'); //如果获取失败 + } + + lineChart = new Charts({ + canvasId: 'lineCanvas', + type: 'line', + animation: true, //是否开启动画 + categories: ['06', '07', '08', '09', '10', '11', '12'], + series: [{ + name: '月教师好评情况', + data: [15, 20, 45, 37, 40, 80, 25], + format: function (val) { + return val.toFixed(2) + '分'; + } + }], + xAxis: { //是否隐藏x轴分割线 + disableGrid: true, + }, + yAxis: { + title: '教师好评总分数', + format: function (val) { + return val.toFixed(2); + }, + }, + width: windowWidth, //图表展示内容宽度 + height: windowHeight, //图表展示内容高度 + dataLabel: true, //是否在图表上直接显示数据 + dataPointShape: true, //是否在图标上显示数据点标志 + extra: { + lineStyle: 'curve' //曲线 + }, + }); + }, + /** + * 点击数据点显示对应的数据 + */ + touchHandler: function (e) { + lineChart.showToolTip(e, { + // background: '#7cb5ec', + format: function (item, category) { + return category + ' ' + item.name + ':' + item.data + } + }); + }, + +}) \ No newline at end of file diff --git a/pages/domoTest/wxchartTest/wxChatTest.json b/pages/domoTest/wxchartTest/wxChatTest.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/pages/domoTest/wxchartTest/wxChatTest.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/domoTest/wxchartTest/wxChatTest.wxml b/pages/domoTest/wxchartTest/wxChatTest.wxml new file mode 100644 index 0000000..d11639d --- /dev/null +++ b/pages/domoTest/wxchartTest/wxChatTest.wxml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/pages/domoTest/wxchartTest/wxChatTest.wxss b/pages/domoTest/wxchartTest/wxChatTest.wxss new file mode 100644 index 0000000..a8e62db --- /dev/null +++ b/pages/domoTest/wxchartTest/wxChatTest.wxss @@ -0,0 +1,17 @@ +/* 折线 */ +.chart{ + width: 95%; + height: 550rpx; + margin: 0 auto; + padding-top: 50rpx; + background: #fff; +} + +.chart-info{ + height: 500rpx; +} + +.canvas { + width: 380px; + height: 400px; +} \ No newline at end of file diff --git a/pages/index/authoriztion/authoriztion.js b/pages/index/authoriztion/authoriztion.js index cd43e8f..54ae350 100644 --- a/pages/index/authoriztion/authoriztion.js +++ b/pages/index/authoriztion/authoriztion.js @@ -19,14 +19,20 @@ Page({ console.log(`当前来到了authoriztion授权页面` + JSON.stringify(app.globalData)) if (app.globalData.token && app.globalData.token !== '') { console.log('获取到token信息了') - that.handleLogin(); + // that.handleLogin(); + wx.switchTab({ + url: '/pages/index/index' + }) } else { console.log('app还未执行完,需要等待执行完毕') // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 // 所以此处加入 callback 以防止这种情况 app.callback = res => { console.log('执行成功啦!....') - that.handleLogin(); + // that.handleLogin(); + wx.switchTab({ + url: '/pages/index/index' + }) } } diff --git a/pages/index/bookkeepingdetail/bookkeepingdetail.js b/pages/index/bookkeepingdetail/bookkeepingdetail.js index c3993a8..241c9e3 100644 --- a/pages/index/bookkeepingdetail/bookkeepingdetail.js +++ b/pages/index/bookkeepingdetail/bookkeepingdetail.js @@ -75,13 +75,17 @@ Page({ * 更新保存数据 */ updateData: function() { + let that = this console.log('这里是保存数据的') - let requestUrl = API.api.bookkeepingDetails + '/' + this.data.bookkeepingObj.id; + let requestUrl = API.api.bookkeepings + '/' + this.data.bookkeepingObj.id; // 金额格式化 let requestData = this.data.bookkeepingObj requestData.money = Number(requestData.moneyView) * 100; - AJAX.postRequest(requestUrl,requestData).then(response => { - this.updateShowData() + AJAX.putRequest(requestUrl,requestData).then(response => { + that.updateShowData() + wx.switchTab({ + url: '/pages/index/index' + }) }); }, @@ -90,7 +94,7 @@ Page({ */ deleteData: function() { console.log(`准备删除一条数据`) - let requestUrl = API.api.bookkeepingDetails + '/' + this.data.bookkeepingObj.id + let requestUrl = API.api.bookkeepings + '/' + this.data.bookkeepingObj.id AJAX.delRequest(requestUrl).then(response => { console.log(`删除成功,返回主页面`) wx.switchTab({ @@ -161,11 +165,11 @@ Page({ */ getBookkeepingById: function(bookkeepingId) { let that = this; - let requestUrl = API.api.bookkeepingDetails + '/query/' + bookkeepingId; + let requestUrl = API.api.bookkeepings + '/' + bookkeepingId; AJAX.getRequest(requestUrl).then(response => { let resultData = response.data - resultData.createTimeView = FormatUtil.formatTime(new Date(resultData.bookkeeping.createTime)) - resultData.moneyView = FormatUtil.formatMoney(resultData.bookkeeping.money / 100) + resultData.createTimeView = FormatUtil.formatTime(new Date(resultData.createTime)) + resultData.moneyView = FormatUtil.formatMoney(resultData.money / 100) that.setData({ bookkeepingObj: resultData }) diff --git a/pages/me/me.js b/pages/me/me.js index d590ce2..c63f609 100644 --- a/pages/me/me.js +++ b/pages/me/me.js @@ -12,7 +12,7 @@ Page({ avatarUrl: wx.getStorageSync('avatarUrl'), nickName: wx.getStorageSync('nickName'), userInfo: {}, - tempUserInfo:{}, + tempUserInfo: {}, // 显示用户修改信息 isShow: false, }, @@ -20,31 +20,22 @@ Page({ /** * 生命周期函数--监听页面加载 */ - onLoad: function (options) { - // 初始化数据信息 - console.log('头像信息',wx.getStorageSync('avatarUrl')); - console.log('微信昵称', wx.getStorageSync('nickName')); - this.setData({ - avatarUrl: wx.getStorageSync('avatarUrl'), - nickName: wx.getStorageSync('nickName') - }) - - }, + onLoad: function(options) {}, /** * 生命周期函数--监听页面初次渲染完成 */ - onReady: function () { + onReady: function() { }, /** * 生命周期函数--监听页面显示 */ - onShow: function () { + onShow: function() { this.getUserInfo(); - }, - getUserInfo:function() { + }, + getUserInfo: function() { let that = this let userId = wx.getStorageSync('userId'); let requestUrl = API.api.users + '/' + userId; @@ -58,31 +49,58 @@ Page({ }) }) }, - modalConfirm:function() { + updateUserInfo: function (userId,userInfo) { + let requestData = {} + requestData.nickName = userInfo.nickName + requestData.avatarUrl = userInfo.avatarUrl; + let requestUrl = API.api.users + '/' + Number(userId); + AJAX.putRequest(requestUrl, requestData, false).then(response => { + console.log('用户信息更新成功啦') + this.getUserInfo() + }) + }, + // 判断用户是否进行授权操作 + bindUserInfo: function(eventhandle) { + console.log('来到了bindgetUserInfo') + let that = this + if (eventhandle.detail.rawData) { + // 获取用户信息成功 + console.log('获取用户信息成功') + let userId = wx.getStorageSync('userId') + wx.getUserInfo({ + success: res => { + console.log(res) + that.updateUserInfo(userId, res.userInfo) + } + }) + + } + }, + modalConfirm: function() { let that = this console.log(this.data.tempUserInfo.monthBudget) let tempUserInfo = this.data.tempUserInfo; let userId = wx.getStorageSync('userId'); let requestUrl = API.api.users + '/' + userId; - AJAX.postRequest(requestUrl,tempUserInfo).then(response => { + AJAX.putRequest(requestUrl, tempUserInfo).then(response => { console.log('更新成功!!!!'); that.getUserInfo(); }) }, - modalCancel: function () { + modalCancel: function() { this.setData({ - isShow:false + isShow: false }) }, - saveUsertell:function(e) { + saveUsertell: function(e) { console.log('触发了!!!!' + e.detail.value) let userInfo = {}; userInfo.monthBudget = e.detail.value * 100; this.setData({ - tempUserInfo : userInfo + tempUserInfo: userInfo }) }, - showModel:function() { + showModel: function() { console.log('显示月预算') this.setData({ isShow: true @@ -91,35 +109,35 @@ Page({ /** * 生命周期函数--监听页面隐藏 */ - onHide: function () { + onHide: function() { }, /** * 生命周期函数--监听页面卸载 */ - onUnload: function () { + onUnload: function() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ - onPullDownRefresh: function () { + onPullDownRefresh: function() { }, /** * 页面上拉触底事件的处理函数 */ - onReachBottom: function () { + onReachBottom: function() { }, /** * 用户点击右上角分享 */ - onShareAppMessage: function () { + onShareAppMessage: function() { } }) \ No newline at end of file diff --git a/pages/me/me.wxml b/pages/me/me.wxml index f9d3baf..d1997f9 100644 --- a/pages/me/me.wxml +++ b/pages/me/me.wxml @@ -1,8 +1,9 @@ - - {{nickName}} + + {{userInfo.nickName}} diff --git a/pages/me/me.wxss b/pages/me/me.wxss index 376b3c5..0f71fa1 100644 --- a/pages/me/me.wxss +++ b/pages/me/me.wxss @@ -6,26 +6,28 @@ } .wx_avatar { - position: relative; width: 100%; height: 300rpx; background: #1E95F1; + text-align: center; } - -.wx_avatar image { +.wx_avatar button { width: 120rpx; height: 120rpx; border-radius: 50%; - position: absolute; margin-top: 30rpx; - margin-left: 42%; + margin-bottom: 30rpx; + border: 0rpx; + +} +.wx_avatar button image { + width: 100%; + height: 100%; + border-radius: 50%; } .wx_avatar text { font-size: 32rpx; - position: absolute; - margin-top: 175rpx; - margin-left: 42%; color: white; } diff --git a/utils/ajax.js b/utils/ajax.js index aa36ed1..643f185 100644 --- a/utils/ajax.js +++ b/utils/ajax.js @@ -13,7 +13,7 @@ function getRequest(url, loadding = true) { mask: true }) } - return new Promise(function (resolve, reject) { + return new Promise(function(resolve, reject) { wx.request({ url: url, method: 'GET', @@ -21,7 +21,7 @@ function getRequest(url, loadding = true) { 'Content-type': 'application/json', 'Authorization': wx.getStorageSync('token') }, - success: function (response) { + success: function(response) { if (response.data.code === 200) { resolve(response.data) } else { @@ -30,7 +30,7 @@ function getRequest(url, loadding = true) { // 取消loadding wx.hideLoading(); }, - fail: function (err) { + fail: function(err) { Toast.showToastSuccess(err.msg) // 取消loadding wx.hideLoading(); @@ -54,7 +54,7 @@ function postRequest(url, param, loadding = true) { mask: true }) } - return new Promise(function (resolve, reject) { + return new Promise(function(resolve, reject) { wx.request({ url: url, method: 'POST', @@ -63,7 +63,7 @@ function postRequest(url, param, loadding = true) { 'Content-type': 'application/json', 'Authorization': wx.getStorageSync('token') }, - success: function (response) { + success: function(response) { if (response.data.code === 200) { resolve(response.data) } else { @@ -72,7 +72,45 @@ function postRequest(url, param, loadding = true) { //取消loadding wx.hideLoading(); }, - fail: function (err) { + fail: function(err) { + Toast.showToastSuccess(response.msg) + //取消loadding + wx.hideLoading(); + } + + }) + }) +} + +/** + * 封装HTTP PUT请求 + * url:请求路径 + * param:请求数据 + */ +function putRequest(url, param, loadding = true) { + if (loadding) { + // 加载loadding + wx.showLoading({ + title: '加载中', + // 是否显示透明蒙层,防止触摸穿透 + mask: true + }) + } + return new Promise(function(resolve, reject) { + wx.request({ + url: url, + method: 'PUT', + data: param, + header: { + 'Content-type': 'application/json', + 'Authorization': wx.getStorageSync('token') + }, + success: function(response) { + resolve() + //取消loadding + wx.hideLoading(); + }, + fail: function(err) { Toast.showToastSuccess(response.msg) //取消loadding wx.hideLoading(); @@ -96,7 +134,7 @@ function delRequest(url, param, loadding = true) { mask: true }) } - return new Promise(function (resolve, reject) { + return new Promise(function(resolve, reject) { wx.request({ url: url, method: 'DELETE', @@ -105,7 +143,7 @@ function delRequest(url, param, loadding = true) { 'Content-type': 'application/json', 'Authorization': wx.getStorageSync('token') }, - success: function (response) { + success: function(response) { if (response.data.code === 200) { resolve(response.data) } else { @@ -114,7 +152,7 @@ function delRequest(url, param, loadding = true) { //取消loadding wx.hideLoading(); }, - fail: function (err) { + fail: function(err) { Toast.showToastSuccess(response.msg) //取消loadding wx.hideLoading(); @@ -127,7 +165,7 @@ function delRequest(url, param, loadding = true) { * 保存formId */ function saveFormId(formId) { - return new Promise(function (resolve, reject) { + return new Promise(function(resolve, reject) { let formIdData = {}; formIdData.formId = formId; formIdData.openId = wx.getStorageSync('openId'); @@ -139,7 +177,7 @@ function saveFormId(formId) { 'Content-type': 'application/json', 'Authorization': wx.getStorageSync('token') }, - success: function (res) { + success: function(res) { console.log(`保存formId成功!!!`, res) resolve(); } @@ -151,5 +189,6 @@ module.exports = { getRequest: getRequest, postRequest: postRequest, saveFormId: saveFormId, - delRequest: delRequest -} + delRequest: delRequest, + putRequest: putRequest +} \ No newline at end of file diff --git a/utils/api.js b/utils/api.js index 2b23a37..ab19b2f 100644 --- a/utils/api.js +++ b/utils/api.js @@ -4,8 +4,8 @@ let api = { // TODO:配置接口文档信息 -// api.baseUrl = 'https://192.168.1.101:12000'; -api.baseUrl = 'https://be.yangyoki.top:12000'; +api.baseUrl = 'http://192.168.1.102:12000'; +// api.baseUrl = 'https://be.yangyoki.top:12000'; api.imageHostDowm = 'https://be.yangyoki.top:12000'; api.imageHost = 'https://be.yangyoki.top:12000/'; @@ -14,10 +14,10 @@ api.imageHost = 'https://be.yangyoki.top:12000/'; api.qqMapKey = 'GSUBZ-UACKQ-NXJ5Z-GL47V-CIVU2-7YB4X'; //用户接口 -api.users = api.baseUrl + '/api/v1/users'; +api.users = api.baseUrl + '/api/v1/wxusers'; //登录接口 -api.login = api.baseUrl + '/api/v1/users/login'; +api.login = api.baseUrl + '/api/v1/wxusers/login'; //记账接口 api.bookkeepings = api.baseUrl + '/api/v1/bookkeepings'; diff --git a/utils/wxcharts.js b/utils/wxcharts.js new file mode 100644 index 0000000..e2fb996 --- /dev/null +++ b/utils/wxcharts.js @@ -0,0 +1,2044 @@ +/* + * charts for WeChat small app v1.0 + * + * https://github.com/xiaolin3303/wx-charts + * 2016-11-28 + * + * Designed and built with all the love of Web + */ + +'use strict'; + +var config = { + yAxisWidth: 15, + yAxisSplit: 5, + xAxisHeight: 15, + xAxisLineHeight: 15, + legendHeight: 15, + yAxisTitleWidth: 15, + padding: 12, + columePadding: 3, + fontSize: 10, + dataPointShape: ['diamond', 'circle', 'triangle', 'rect'], + colors: ['#7cb5ec', '#f7a35c', '#434348', '#90ed7d', '#f15c80', '#8085e9'], + pieChartLinePadding: 25, + pieChartTextPadding: 15, + xAxisTextPadding: 3, + titleColor: '#333333', + titleFontSize: 20, + subtitleColor: '#999999', + subtitleFontSize: 15, + toolTipPadding: 3, + toolTipBackground: '#000000', + toolTipOpacity: 0.7, + toolTipLineHeight: 14, + radarGridCount: 3, + radarLabelTextMargin: 15 +}; + +// Object.assign polyfill +// https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign +function assign(target, varArgs) { + if (target == null) { + // TypeError if undefined or null + throw new TypeError('Cannot convert undefined or null to object'); + } + + var to = Object(target); + + for (var index = 1; index < arguments.length; index++) { + var nextSource = arguments[index]; + + if (nextSource != null) { + // Skip over if undefined or null + for (var nextKey in nextSource) { + // Avoid bugs when hasOwnProperty is shadowed + if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + return to; +} + +var util = { + toFixed: function toFixed(num, limit) { + limit = limit || 2; + if (this.isFloat(num)) { + num = num.toFixed(limit); + } + return num; + }, + isFloat: function isFloat(num) { + return num % 1 !== 0; + }, + approximatelyEqual: function approximatelyEqual(num1, num2) { + return Math.abs(num1 - num2) < 1e-10; + }, + isSameSign: function isSameSign(num1, num2) { + return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2; + }, + isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) { + return this.isSameSign(p1.x, p2.x); + }, + isCollision: function isCollision(obj1, obj2) { + obj1.end = {}; + obj1.end.x = obj1.start.x + obj1.width; + obj1.end.y = obj1.start.y - obj1.height; + obj2.end = {}; + obj2.end.x = obj2.start.x + obj2.width; + obj2.end.y = obj2.start.y - obj2.height; + var flag = obj2.start.x > obj1.end.x || obj2.end.x < obj1.start.x || obj2.end.y > obj1.start.y || obj2.start.y < obj1.end.y; + + return !flag; + } +}; + +function findRange(num, type, limit) { + if (isNaN(num)) { + throw new Error('[wxCharts] unvalid series data!'); + } + limit = limit || 10; + type = type ? type : 'upper'; + var multiple = 1; + while (limit < 1) { + limit *= 10; + multiple *= 10; + } + if (type === 'upper') { + num = Math.ceil(num * multiple); + } else { + num = Math.floor(num * multiple); + } + while (num % limit !== 0) { + if (type === 'upper') { + num++; + } else { + num--; + } + } + + return num / multiple; +} + +function calValidDistance(distance, chartData, config, opts) { + + var dataChartAreaWidth = opts.width - config.padding - chartData.xAxisPoints[0]; + var dataChartWidth = chartData.eachSpacing * opts.categories.length; + var validDistance = distance; + if (distance >= 0) { + validDistance = 0; + } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) { + validDistance = dataChartAreaWidth - dataChartWidth; + } + return validDistance; +} + +function isInAngleRange(angle, startAngle, endAngle) { + function adjust(angle) { + while (angle < 0) { + angle += 2 * Math.PI; + } + while (angle > 2 * Math.PI) { + angle -= 2 * Math.PI; + } + + return angle; + } + + angle = adjust(angle); + startAngle = adjust(startAngle); + endAngle = adjust(endAngle); + if (startAngle > endAngle) { + endAngle += 2 * Math.PI; + if (angle < startAngle) { + angle += 2 * Math.PI; + } + } + + return angle >= startAngle && angle <= endAngle; +} + +function calRotateTranslate(x, y, h) { + var xv = x; + var yv = h - y; + + var transX = xv + (h - yv - xv) / Math.sqrt(2); + transX *= -1; + + var transY = (h - yv) * (Math.sqrt(2) - 1) - (h - yv - xv) / Math.sqrt(2); + + return { + transX: transX, + transY: transY + }; +} + +function createCurveControlPoints(points, i) { + + function isNotMiddlePoint(points, i) { + if (points[i - 1] && points[i + 1]) { + return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y, points[i + 1].y); + } else { + return false; + } + } + + var a = 0.2; + var b = 0.2; + var pAx = null; + var pAy = null; + var pBx = null; + var pBy = null; + if (i < 1) { + pAx = points[0].x + (points[1].x - points[0].x) * a; + pAy = points[0].y + (points[1].y - points[0].y) * a; + } else { + pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a; + pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a; + } + + if (i > points.length - 3) { + var last = points.length - 1; + pBx = points[last].x - (points[last].x - points[last - 1].x) * b; + pBy = points[last].y - (points[last].y - points[last - 1].y) * b; + } else { + pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b; + pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b; + } + + // fix issue https://github.com/xiaolin3303/wx-charts/issues/79 + if (isNotMiddlePoint(points, i + 1)) { + pBy = points[i + 1].y; + } + if (isNotMiddlePoint(points, i)) { + pAy = points[i].y; + } + + return { + ctrA: { x: pAx, y: pAy }, + ctrB: { x: pBx, y: pBy } + }; +} + +function convertCoordinateOrigin(x, y, center) { + return { + x: center.x + x, + y: center.y - y + }; +} + +function avoidCollision(obj, target) { + if (target) { + // is collision test + while (util.isCollision(obj, target)) { + if (obj.start.x > 0) { + obj.start.y--; + } else if (obj.start.x < 0) { + obj.start.y++; + } else { + if (obj.start.y > 0) { + obj.start.y++; + } else { + obj.start.y--; + } + } + } + } + return obj; +} + +function fillSeriesColor(series, config) { + var index = 0; + return series.map(function (item) { + if (!item.color) { + item.color = config.colors[index]; + index = (index + 1) % config.colors.length; + } + return item; + }); +} + +function getDataRange(minData, maxData) { + var limit = 0; + var range = maxData - minData; + if (range >= 10000) { + limit = 1000; + } else if (range >= 1000) { + limit = 100; + } else if (range >= 100) { + limit = 10; + } else if (range >= 10) { + limit = 5; + } else if (range >= 1) { + limit = 1; + } else if (range >= 0.1) { + limit = 0.1; + } else { + limit = 0.01; + } + return { + minRange: findRange(minData, 'lower', limit), + maxRange: findRange(maxData, 'upper', limit) + }; +} + +function measureText(text) { + var fontSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10; + + // wx canvas 未实现measureText方法, 此处自行实现 + text = String(text); + var text = text.split(''); + var width = 0; + text.forEach(function (item) { + if (/[a-zA-Z]/.test(item)) { + width += 7; + } else if (/[0-9]/.test(item)) { + width += 5.5; + } else if (/\./.test(item)) { + width += 2.7; + } else if (/-/.test(item)) { + width += 3.25; + } else if (/[\u4e00-\u9fa5]/.test(item)) { + width += 10; + } else if (/\(|\)/.test(item)) { + width += 3.73; + } else if (/\s/.test(item)) { + width += 2.5; + } else if (/%/.test(item)) { + width += 8; + } else { + width += 10; + } + }); + return width * fontSize / 10; +} + +function dataCombine(series) { + return series.reduce(function (a, b) { + return (a.data ? a.data : a).concat(b.data); + }, []); +} + +function getSeriesDataItem(series, index) { + var data = []; + series.forEach(function (item) { + if (item.data[index] !== null && typeof item.data[index] !== 'undefined') { + var seriesItem = {}; + seriesItem.color = item.color; + seriesItem.name = item.name; + seriesItem.data = item.format ? item.format(item.data[index]) : item.data[index]; + data.push(seriesItem); + } + }); + + return data; +} + + + +function getMaxTextListLength(list) { + var lengthList = list.map(function (item) { + return measureText(item); + }); + return Math.max.apply(null, lengthList); +} + +function getRadarCoordinateSeries(length) { + var eachAngle = 2 * Math.PI / length; + var CoordinateSeries = []; + for (var i = 0; i < length; i++) { + CoordinateSeries.push(eachAngle * i); + } + + return CoordinateSeries.map(function (item) { + return -1 * item + Math.PI / 2; + }); +} + +function getToolTipData(seriesData, calPoints, index, categories) { + var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; + + var textList = seriesData.map(function (item) { + return { + text: option.format ? option.format(item, categories[index]) : item.name + ': ' + item.data, + color: item.color + }; + }); + var validCalPoints = []; + var offset = { + x: 0, + y: 0 + }; + calPoints.forEach(function (points) { + if (typeof points[index] !== 'undefined' && points[index] !== null) { + validCalPoints.push(points[index]); + } + }); + validCalPoints.forEach(function (item) { + offset.x = Math.round(item.x); + offset.y += item.y; + }); + + offset.y /= validCalPoints.length; + return { textList: textList, offset: offset }; +} + +function findCurrentIndex(currentPoints, xAxisPoints, opts, config) { + var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0; + + var currentIndex = -1; + if (isInExactChartArea(currentPoints, opts, config)) { + xAxisPoints.forEach(function (item, index) { + if (currentPoints.x + offset > item) { + currentIndex = index; + } + }); + } + + return currentIndex; +} + +function isInExactChartArea(currentPoints, opts, config) { + return currentPoints.x < opts.width - config.padding && currentPoints.x > config.padding + config.yAxisWidth + config.yAxisTitleWidth && currentPoints.y > config.padding && currentPoints.y < opts.height - config.legendHeight - config.xAxisHeight - config.padding; +} + +function findRadarChartCurrentIndex(currentPoints, radarData, count) { + var eachAngleArea = 2 * Math.PI / count; + var currentIndex = -1; + if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) { + var fixAngle = function fixAngle(angle) { + if (angle < 0) { + angle += 2 * Math.PI; + } + if (angle > 2 * Math.PI) { + angle -= 2 * Math.PI; + } + return angle; + }; + + var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x); + angle = -1 * angle; + if (angle < 0) { + angle += 2 * Math.PI; + } + + var angleList = radarData.angleList.map(function (item) { + item = fixAngle(-1 * item); + + return item; + }); + + angleList.forEach(function (item, index) { + var rangeStart = fixAngle(item - eachAngleArea / 2); + var rangeEnd = fixAngle(item + eachAngleArea / 2); + if (rangeEnd < rangeStart) { + rangeEnd += 2 * Math.PI; + } + if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <= rangeEnd) { + currentIndex = index; + } + }); + } + + return currentIndex; +} + +function findPieChartCurrentIndex(currentPoints, pieData) { + var currentIndex = -1; + if (isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) { + var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x); + angle = -angle; + for (var i = 0, len = pieData.series.length; i < len; i++) { + var item = pieData.series[i]; + if (isInAngleRange(angle, item._start_, item._start_ + item._proportion_ * 2 * Math.PI)) { + currentIndex = i; + break; + } + } + } + + return currentIndex; +} + +function isInExactPieChartArea(currentPoints, center, radius) { + return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2); +} + +function splitPoints(points) { + var newPoints = []; + var items = []; + points.forEach(function (item, index) { + if (item !== null) { + items.push(item); + } else { + if (items.length) { + newPoints.push(items); + } + items = []; + } + }); + if (items.length) { + newPoints.push(items); + } + + return newPoints; +} + +function calLegendData(series, opts, config) { + if (opts.legend === false) { + return { + legendList: [], + legendHeight: 0 + }; + } + var padding = 5; + var marginTop = 8; + var shapeWidth = 15; + var legendList = []; + var widthCount = 0; + var currentRow = []; + series.forEach(function (item) { + var itemWidth = 3 * padding + shapeWidth + measureText(item.name || 'undefined'); + if (widthCount + itemWidth > opts.width) { + legendList.push(currentRow); + widthCount = itemWidth; + currentRow = [item]; + } else { + widthCount += itemWidth; + currentRow.push(item); + } + }); + if (currentRow.length) { + legendList.push(currentRow); + } + + return { + legendList: legendList, + legendHeight: legendList.length * (config.fontSize + marginTop) + padding + }; +} + +function calCategoriesData(categories, opts, config) { + var result = { + angle: 0, + xAxisHeight: config.xAxisHeight + }; + + var _getXAxisPoints = getXAxisPoints(categories, opts, config), + eachSpacing = _getXAxisPoints.eachSpacing; + + // get max length of categories text + + + var categoriesTextLenth = categories.map(function (item) { + return measureText(item); + }); + + var maxTextLength = Math.max.apply(this, categoriesTextLenth); + + if (maxTextLength + 2 * config.xAxisTextPadding > eachSpacing) { + result.angle = 45 * Math.PI / 180; + result.xAxisHeight = 2 * config.xAxisTextPadding + maxTextLength * Math.sin(result.angle); + } + + return result; +} + +function getRadarDataPoints(angleList, center, radius, series, opts) { + var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1; + + var radarOption = opts.extra.radar || {}; + radarOption.max = radarOption.max || 0; + var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series))); + + var data = []; + series.forEach(function (each) { + var listItem = {}; + listItem.color = each.color; + listItem.data = []; + each.data.forEach(function (item, index) { + var tmp = {}; + tmp.angle = angleList[index]; + + tmp.proportion = item / maxData; + tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion * process * Math.sin(tmp.angle), center); + listItem.data.push(tmp); + }); + + data.push(listItem); + }); + + return data; +} + +function getPieDataPoints(series) { + var process = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; + + var count = 0; + var _start_ = 0; + series.forEach(function (item) { + item.data = item.data === null ? 0 : item.data; + count += item.data; + }); + series.forEach(function (item) { + item.data = item.data === null ? 0 : item.data; + item._proportion_ = item.data / count * process; + }); + series.forEach(function (item) { + item._start_ = _start_; + _start_ += 2 * item._proportion_ * Math.PI; + }); + + return series; +} + +function getPieTextMaxLength(series) { + series = getPieDataPoints(series); + var maxLength = 0; + series.forEach(function (item) { + var text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%'; + maxLength = Math.max(maxLength, measureText(text)); + }); + + return maxLength; +} + +function fixColumeData(points, eachSpacing, columnLen, index, config, opts) { + return points.map(function (item) { + if (item === null) { + return null; + } + item.width = (eachSpacing - 2 * config.columePadding) / columnLen; + + if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { + // customer column width + item.width = Math.min(item.width, +opts.extra.column.width); + } else { + // default width should less tran 25px + // don't ask me why, I don't know + item.width = Math.min(item.width, 25); + } + item.x += (index + 0.5 - columnLen / 2) * item.width; + + return item; + }); +} + +function getXAxisPoints(categories, opts, config) { + var yAxisTotalWidth = config.yAxisWidth + config.yAxisTitleWidth; + var spacingValid = opts.width - 2 * config.padding - yAxisTotalWidth; + var dataCount = opts.enableScroll ? Math.min(5, categories.length) : categories.length; + var eachSpacing = spacingValid / dataCount; + + var xAxisPoints = []; + var startX = config.padding + yAxisTotalWidth; + var endX = opts.width - config.padding; + categories.forEach(function (item, index) { + xAxisPoints.push(startX + index * eachSpacing); + }); + if (opts.enableScroll === true) { + xAxisPoints.push(startX + categories.length * eachSpacing); + } else { + xAxisPoints.push(endX); + } + + return { xAxisPoints: xAxisPoints, startX: startX, endX: endX, eachSpacing: eachSpacing }; +} + +function getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) { + var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1; + + var points = []; + var validHeight = opts.height - 2 * config.padding - config.xAxisHeight - config.legendHeight; + data.forEach(function (item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.x = xAxisPoints[index] + Math.round(eachSpacing / 2); + var height = validHeight * (item - minRange) / (maxRange - minRange); + height *= process; + point.y = opts.height - config.xAxisHeight - config.legendHeight - Math.round(height) - config.padding; + points.push(point); + } + }); + + return points; +} + +function getYAxisTextList(series, opts, config) { + var data = dataCombine(series); + // remove null from data + data = data.filter(function (item) { + return item !== null; + }); + var minData = Math.min.apply(this, data); + var maxData = Math.max.apply(this, data); + if (typeof opts.yAxis.min === 'number') { + minData = Math.min(opts.yAxis.min, minData); + } + if (typeof opts.yAxis.max === 'number') { + maxData = Math.max(opts.yAxis.max, maxData); + } + + // fix issue https://github.com/xiaolin3303/wx-charts/issues/9 + if (minData === maxData) { + var rangeSpan = maxData || 1; + minData -= rangeSpan; + maxData += rangeSpan; + } + + var dataRange = getDataRange(minData, maxData); + var minRange = dataRange.minRange; + var maxRange = dataRange.maxRange; + + var range = []; + var eachRange = (maxRange - minRange) / config.yAxisSplit; + + for (var i = 0; i <= config.yAxisSplit; i++) { + range.push(minRange + eachRange * i); + } + return range.reverse(); +} + +function calYAxisData(series, opts, config) { + + var ranges = getYAxisTextList(series, opts, config); + var yAxisWidth = config.yAxisWidth; + var rangesFormat = ranges.map(function (item) { + item = util.toFixed(item, 2); + item = opts.yAxis.format ? opts.yAxis.format(Number(item)) : item; + yAxisWidth = Math.max(yAxisWidth, measureText(item) + 5); + return item; + }); + if (opts.yAxis.disabled === true) { + yAxisWidth = 0; + } + + return { rangesFormat: rangesFormat, ranges: ranges, yAxisWidth: yAxisWidth }; +} + +function drawPointShape(points, color, shape, context) { + context.beginPath(); + context.setStrokeStyle("#ffffff"); + context.setLineWidth(1); + context.setFillStyle(color); + + if (shape === 'diamond') { + points.forEach(function (item, index) { + if (item !== null) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y); + context.lineTo(item.x, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'circle') { + points.forEach(function (item, index) { + if (item !== null) { + context.moveTo(item.x + 3.5, item.y); + context.arc(item.x, item.y, 4, 0, 2 * Math.PI, false); + } + }); + } else if (shape === 'rect') { + points.forEach(function (item, index) { + if (item !== null) { + context.moveTo(item.x - 3.5, item.y - 3.5); + context.rect(item.x - 3.5, item.y - 3.5, 7, 7); + } + }); + } else if (shape === 'triangle') { + points.forEach(function (item, index) { + if (item !== null) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y + 4.5); + context.lineTo(item.x, item.y - 4.5); + } + }); + } + context.closePath(); + context.fill(); + context.stroke(); +} + +function drawRingTitle(opts, config, context) { + var titlefontSize = opts.title.fontSize || config.titleFontSize; + var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize; + var title = opts.title.name || ''; + var subtitle = opts.subtitle.name || ''; + var titleFontColor = opts.title.color || config.titleColor; + var subtitleFontColor = opts.subtitle.color || config.subtitleColor; + var titleHeight = title ? titlefontSize : 0; + var subtitleHeight = subtitle ? subtitlefontSize : 0; + var margin = 5; + if (subtitle) { + var textWidth = measureText(subtitle, subtitlefontSize); + var startX = (opts.width - textWidth) / 2 + (opts.subtitle.offsetX || 0); + var startY = (opts.height - config.legendHeight + subtitlefontSize) / 2; + if (title) { + startY -= (titleHeight + margin) / 2; + } + context.beginPath(); + context.setFontSize(subtitlefontSize); + context.setFillStyle(subtitleFontColor); + context.fillText(subtitle, startX, startY); + context.stroke(); + context.closePath(); + } + if (title) { + var _textWidth = measureText(title, titlefontSize); + var _startX = (opts.width - _textWidth) / 2 + (opts.title.offsetX || 0); + var _startY = (opts.height - config.legendHeight + titlefontSize) / 2; + if (subtitle) { + _startY += (subtitleHeight + margin) / 2; + } + context.beginPath(); + context.setFontSize(titlefontSize); + context.setFillStyle(titleFontColor); + context.fillText(title, _startX, _startY); + context.stroke(); + context.closePath(); + } +} + +function drawPointText(points, series, config, context) { + // 绘制数据文案 + var data = series.data; + + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle('#666666'); + points.forEach(function (item, index) { + if (item !== null) { + var formatVal = series.format ? series.format(data[index]) : data[index]; + context.fillText(formatVal, item.x - measureText(formatVal) / 2, item.y - 2); + } + }); + context.closePath(); + context.stroke(); +} + +function drawRadarLabel(angleList, radius, centerPosition, opts, config, context) { + var radarOption = opts.extra.radar || {}; + radius += config.radarLabelTextMargin; + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(radarOption.labelColor || '#666666'); + angleList.forEach(function (angle, index) { + var pos = { + x: radius * Math.cos(angle), + y: radius * Math.sin(angle) + }; + var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition); + var startX = posRelativeCanvas.x; + var startY = posRelativeCanvas.y; + if (util.approximatelyEqual(pos.x, 0)) { + startX -= measureText(opts.categories[index] || '') / 2; + } else if (pos.x < 0) { + startX -= measureText(opts.categories[index] || ''); + } + context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2); + }); + context.stroke(); + context.closePath(); +} + +function drawPieText(series, opts, config, context, radius, center) { + var lineRadius = radius + config.pieChartLinePadding; + var textObjectCollection = []; + var lastTextObject = null; + + var seriesConvert = series.map(function (item) { + var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2); + var text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%'; + var color = item.color; + return { arc: arc, text: text, color: color }; + }); + seriesConvert.forEach(function (item) { + // line end + var orginX1 = Math.cos(item.arc) * lineRadius; + var orginY1 = Math.sin(item.arc) * lineRadius; + + // line start + var orginX2 = Math.cos(item.arc) * radius; + var orginY2 = Math.sin(item.arc) * radius; + + // text start + var orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding; + var orginY3 = orginY1; + + var textWidth = measureText(item.text); + var startY = orginY3; + + if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, { x: orginX3 })) { + if (orginX3 > 0) { + startY = Math.min(orginY3, lastTextObject.start.y); + } else if (orginX1 < 0) { + startY = Math.max(orginY3, lastTextObject.start.y); + } else { + if (orginY3 > 0) { + startY = Math.max(orginY3, lastTextObject.start.y); + } else { + startY = Math.min(orginY3, lastTextObject.start.y); + } + } + } + + if (orginX3 < 0) { + orginX3 -= textWidth; + } + + var textObject = { + lineStart: { + x: orginX2, + y: orginY2 + }, + lineEnd: { + x: orginX1, + y: orginY1 + }, + start: { + x: orginX3, + y: startY + }, + width: textWidth, + height: config.fontSize, + text: item.text, + color: item.color + }; + + lastTextObject = avoidCollision(textObject, lastTextObject); + textObjectCollection.push(lastTextObject); + }); + + textObjectCollection.forEach(function (item) { + var lineStartPoistion = convertCoordinateOrigin(item.lineStart.x, item.lineStart.y, center); + var lineEndPoistion = convertCoordinateOrigin(item.lineEnd.x, item.lineEnd.y, center); + var textPosition = convertCoordinateOrigin(item.start.x, item.start.y, center); + context.setLineWidth(1); + context.setFontSize(config.fontSize); + context.beginPath(); + context.setStrokeStyle(item.color); + context.setFillStyle(item.color); + context.moveTo(lineStartPoistion.x, lineStartPoistion.y); + var curveStartX = item.start.x < 0 ? textPosition.x + item.width : textPosition.x; + var textStartX = item.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5; + context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y); + context.moveTo(lineStartPoistion.x, lineStartPoistion.y); + context.stroke(); + context.closePath(); + context.beginPath(); + context.moveTo(textPosition.x + item.width, textPosition.y); + context.arc(curveStartX, textPosition.y, 2, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + context.beginPath(); + context.setFillStyle('#666666'); + context.fillText(item.text, textStartX, textPosition.y + 3); + context.closePath(); + context.stroke(); + + context.closePath(); + }); +} + +function drawToolTipSplitLine(offsetX, opts, config, context) { + var startY = config.padding; + var endY = opts.height - config.padding - config.xAxisHeight - config.legendHeight; + context.beginPath(); + context.setStrokeStyle('#cccccc'); + context.setLineWidth(1); + context.moveTo(offsetX, startY); + context.lineTo(offsetX, endY); + context.stroke(); + context.closePath(); +} + +function drawToolTip(textList, offset, opts, config, context) { + var legendWidth = 4; + var legendMarginRight = 5; + var arrowWidth = 8; + var isOverRightBorder = false; + offset = assign({ + x: 0, + y: 0 + }, offset); + offset.y -= 8; + var textWidth = textList.map(function (item) { + return measureText(item.text); + }); + + var toolTipWidth = legendWidth + legendMarginRight + 4 * config.toolTipPadding + Math.max.apply(null, textWidth); + var toolTipHeight = 2 * config.toolTipPadding + textList.length * config.toolTipLineHeight; + + // if beyond the right border + if (offset.x - Math.abs(opts._scrollDistance_) + arrowWidth + toolTipWidth > opts.width) { + isOverRightBorder = true; + } + + // draw background rect + context.beginPath(); + context.setFillStyle(opts.tooltip.option.background || config.toolTipBackground); + context.setGlobalAlpha(config.toolTipOpacity); + if (isOverRightBorder) { + context.moveTo(offset.x, offset.y + 10); + context.lineTo(offset.x - arrowWidth, offset.y + 10 - 5); + context.lineTo(offset.x - arrowWidth, offset.y + 10 + 5); + context.moveTo(offset.x, offset.y + 10); + context.fillRect(offset.x - toolTipWidth - arrowWidth, offset.y, toolTipWidth, toolTipHeight); + } else { + context.moveTo(offset.x, offset.y + 10); + context.lineTo(offset.x + arrowWidth, offset.y + 10 - 5); + context.lineTo(offset.x + arrowWidth, offset.y + 10 + 5); + context.moveTo(offset.x, offset.y + 10); + context.fillRect(offset.x + arrowWidth, offset.y, toolTipWidth, toolTipHeight); + } + + context.closePath(); + context.fill(); + context.setGlobalAlpha(1); + + // draw legend + textList.forEach(function (item, index) { + context.beginPath(); + context.setFillStyle(item.color); + var startX = offset.x + arrowWidth + 2 * config.toolTipPadding; + var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index + config.toolTipPadding; + if (isOverRightBorder) { + startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding; + } + context.fillRect(startX, startY, legendWidth, config.fontSize); + context.closePath(); + }); + + // draw text list + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle('#ffffff'); + textList.forEach(function (item, index) { + var startX = offset.x + arrowWidth + 2 * config.toolTipPadding + legendWidth + legendMarginRight; + if (isOverRightBorder) { + startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding + +legendWidth + legendMarginRight; + } + var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index + config.toolTipPadding; + context.fillText(item.text, startX, startY + config.fontSize); + }); + context.stroke(); + context.closePath(); +} + +function drawYAxisTitle(title, opts, config, context) { + var startX = config.xAxisHeight + (opts.height - config.xAxisHeight - measureText(title)) / 2; + context.save(); + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(opts.yAxis.titleFontColor || '#333333'); + context.translate(0, opts.height); + context.rotate(-90 * Math.PI / 180); + context.fillText(title, startX, config.padding + 0.5 * config.fontSize); + context.stroke(); + context.closePath(); + context.restore(); +} + +function drawColumnDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + + var _calYAxisData = calYAxisData(series, opts, config), + ranges = _calYAxisData.ranges; + + var _getXAxisPoints = getXAxisPoints(opts.categories, opts, config), + xAxisPoints = _getXAxisPoints.xAxisPoints, + eachSpacing = _getXAxisPoints.eachSpacing; + + var minRange = ranges.pop(); + var maxRange = ranges.shift(); + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + } + + series.forEach(function (eachSeries, seriesIndex) { + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts); + + // 绘制柱状数据图 + context.beginPath(); + context.setFillStyle(eachSeries.color); + points.forEach(function (item, index) { + if (item !== null) { + var startX = item.x - item.width / 2 + 1; + var height = opts.height - item.y - config.padding - config.xAxisHeight - config.legendHeight; + context.moveTo(startX, item.y); + context.rect(startX, item.y, item.width - 2, height); + } + }); + context.closePath(); + context.fill(); + }); + series.forEach(function (eachSeries, seriesIndex) { + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts); + if (opts.dataLabel !== false && process === 1) { + drawPointText(points, eachSeries, config, context); + } + }); + context.restore(); + return { + xAxisPoints: xAxisPoints, + eachSpacing: eachSpacing + }; +} + +function drawAreaDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + + var _calYAxisData2 = calYAxisData(series, opts, config), + ranges = _calYAxisData2.ranges; + + var _getXAxisPoints2 = getXAxisPoints(opts.categories, opts, config), + xAxisPoints = _getXAxisPoints2.xAxisPoints, + eachSpacing = _getXAxisPoints2.eachSpacing; + + var minRange = ranges.pop(); + var maxRange = ranges.shift(); + var endY = opts.height - config.padding - config.xAxisHeight - config.legendHeight; + var calPoints = []; + + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + } + + if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { + drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context); + } + + series.forEach(function (eachSeries, seriesIndex) { + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + + var splitPointList = splitPoints(points); + + splitPointList.forEach(function (points) { + // 绘制区域数据 + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setFillStyle(eachSeries.color); + context.setGlobalAlpha(0.6); + context.setLineWidth(2); + if (points.length > 1) { + var firstPoint = points[0]; + var lastPoint = points[points.length - 1]; + + context.moveTo(firstPoint.x, firstPoint.y); + if (opts.extra.lineStyle === 'curve') { + points.forEach(function (item, index) { + if (index > 0) { + var ctrlPoint = createCurveControlPoints(points, index - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); + } + }); + } else { + points.forEach(function (item, index) { + if (index > 0) { + context.lineTo(item.x, item.y); + } + }); + } + + context.lineTo(lastPoint.x, endY); + context.lineTo(firstPoint.x, endY); + context.lineTo(firstPoint.x, firstPoint.y); + } else { + var item = points[0]; + context.moveTo(item.x - eachSpacing / 2, item.y); + context.lineTo(item.x + eachSpacing / 2, item.y); + context.lineTo(item.x + eachSpacing / 2, endY); + context.lineTo(item.x - eachSpacing / 2, endY); + context.moveTo(item.x - eachSpacing / 2, item.y); + } + context.closePath(); + context.fill(); + context.setGlobalAlpha(1); + }); + + if (opts.dataPointShape !== false) { + var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length]; + drawPointShape(points, eachSeries.color, shape, context); + } + }); + if (opts.dataLabel !== false && process === 1) { + series.forEach(function (eachSeries, seriesIndex) { + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawPointText(points, eachSeries, config, context); + }); + } + + context.restore(); + + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawLineDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + + var _calYAxisData3 = calYAxisData(series, opts, config), + ranges = _calYAxisData3.ranges; + + var _getXAxisPoints3 = getXAxisPoints(opts.categories, opts, config), + xAxisPoints = _getXAxisPoints3.xAxisPoints, + eachSpacing = _getXAxisPoints3.eachSpacing; + + var minRange = ranges.pop(); + var maxRange = ranges.shift(); + var calPoints = []; + + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + } + + if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { + drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context); + } + + series.forEach(function (eachSeries, seriesIndex) { + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + var splitPointList = splitPoints(points); + + splitPointList.forEach(function (points, index) { + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(2); + if (points.length === 1) { + context.moveTo(points[0].x, points[0].y); + context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); + } else { + context.moveTo(points[0].x, points[0].y); + if (opts.extra.lineStyle === 'curve') { + points.forEach(function (item, index) { + if (index > 0) { + var ctrlPoint = createCurveControlPoints(points, index - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); + } + }); + } else { + points.forEach(function (item, index) { + if (index > 0) { + context.lineTo(item.x, item.y); + } + }); + } + context.moveTo(points[0].x, points[0].y); + } + context.closePath(); + context.stroke(); + }); + + if (opts.dataPointShape !== false) { + var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length]; + drawPointShape(points, eachSeries.color, shape, context); + } + }); + if (opts.dataLabel !== false && process === 1) { + series.forEach(function (eachSeries, seriesIndex) { + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawPointText(points, eachSeries, config, context); + }); + } + + context.restore(); + + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawToolTipBridge(opts, config, context, process) { + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + } + if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { + drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context); + } + context.restore(); +} + +function drawXAxis(categories, opts, config, context) { + var _getXAxisPoints4 = getXAxisPoints(categories, opts, config), + xAxisPoints = _getXAxisPoints4.xAxisPoints, + startX = _getXAxisPoints4.startX, + endX = _getXAxisPoints4.endX, + eachSpacing = _getXAxisPoints4.eachSpacing; + + var startY = opts.height - config.padding - config.xAxisHeight - config.legendHeight; + var endY = startY + config.xAxisLineHeight; + + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) { + context.translate(opts._scrollDistance_, 0); + } + + context.beginPath(); + context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc"); + + if (opts.xAxis.disableGrid !== true) { + if (opts.xAxis.type === 'calibration') { + xAxisPoints.forEach(function (item, index) { + if (index > 0) { + context.moveTo(item - eachSpacing / 2, startY); + context.lineTo(item - eachSpacing / 2, startY + 4); + } + }); + } else { + xAxisPoints.forEach(function (item, index) { + context.moveTo(item, startY); + context.lineTo(item, endY); + }); + } + } + context.closePath(); + context.stroke(); + + // 对X轴列表做抽稀处理 + var validWidth = opts.width - 2 * config.padding - config.yAxisWidth - config.yAxisTitleWidth; + var maxXAxisListLength = Math.min(categories.length, Math.ceil(validWidth / config.fontSize / 1.5)); + var ratio = Math.ceil(categories.length / maxXAxisListLength); + + categories = categories.map(function (item, index) { + return index % ratio !== 0 ? '' : item; + }); + + if (config._xAxisTextAngle_ === 0) { + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(opts.xAxis.fontColor || '#666666'); + categories.forEach(function (item, index) { + var offset = eachSpacing / 2 - measureText(item) / 2; + context.fillText(item, xAxisPoints[index] + offset, startY + config.fontSize + 5); + }); + context.closePath(); + context.stroke(); + } else { + categories.forEach(function (item, index) { + context.save(); + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(opts.xAxis.fontColor || '#666666'); + var textWidth = measureText(item); + var offset = eachSpacing / 2 - textWidth; + + var _calRotateTranslate = calRotateTranslate(xAxisPoints[index] + eachSpacing / 2, startY + config.fontSize / 2 + 5, opts.height), + transX = _calRotateTranslate.transX, + transY = _calRotateTranslate.transY; + + context.rotate(-1 * config._xAxisTextAngle_); + context.translate(transX, transY); + context.fillText(item, xAxisPoints[index] + offset, startY + config.fontSize + 5); + context.closePath(); + context.stroke(); + context.restore(); + }); + } + + context.restore(); +} + +function drawYAxisGrid(opts, config, context) { + var spacingValid = opts.height - 2 * config.padding - config.xAxisHeight - config.legendHeight; + var eachSpacing = Math.floor(spacingValid / config.yAxisSplit); + var yAxisTotalWidth = config.yAxisWidth + config.yAxisTitleWidth; + var startX = config.padding + yAxisTotalWidth; + var endX = opts.width - config.padding; + + var points = []; + for (var i = 0; i < config.yAxisSplit; i++) { + points.push(config.padding + eachSpacing * i); + } + points.push(config.padding + eachSpacing * config.yAxisSplit + 2); + + context.beginPath(); + context.setStrokeStyle(opts.yAxis.gridColor || "#cccccc"); + context.setLineWidth(1); + points.forEach(function (item, index) { + context.moveTo(startX, item); + context.lineTo(endX, item); + }); + context.closePath(); + context.stroke(); +} + +function drawYAxis(series, opts, config, context) { + if (opts.yAxis.disabled === true) { + return; + } + + var _calYAxisData4 = calYAxisData(series, opts, config), + rangesFormat = _calYAxisData4.rangesFormat; + + var yAxisTotalWidth = config.yAxisWidth + config.yAxisTitleWidth; + + var spacingValid = opts.height - 2 * config.padding - config.xAxisHeight - config.legendHeight; + var eachSpacing = Math.floor(spacingValid / config.yAxisSplit); + var startX = config.padding + yAxisTotalWidth; + var endX = opts.width - config.padding; + var endY = opts.height - config.padding - config.xAxisHeight - config.legendHeight; + + // set YAxis background + context.setFillStyle(opts.background || '#ffffff'); + if (opts._scrollDistance_ < 0) { + context.fillRect(0, 0, startX, endY + config.xAxisHeight + 5); + } + context.fillRect(endX, 0, opts.width, endY + config.xAxisHeight + 5); + + var points = []; + for (var i = 0; i <= config.yAxisSplit; i++) { + points.push(config.padding + eachSpacing * i); + } + + context.stroke(); + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(opts.yAxis.fontColor || '#666666'); + rangesFormat.forEach(function (item, index) { + var pos = points[index] ? points[index] : endY; + context.fillText(item, config.padding + config.yAxisTitleWidth, pos + config.fontSize / 2); + }); + context.closePath(); + context.stroke(); + + if (opts.yAxis.title) { + drawYAxisTitle(opts.yAxis.title, opts, config, context); + } +} + +function drawLegend(series, opts, config, context) { + if (!opts.legend) { + return; + } + // each legend shape width 15px + // the spacing between shape and text in each legend is the `padding` + // each legend spacing is the `padding` + // legend margin top `config.padding` + + var _calLegendData = calLegendData(series, opts, config), + legendList = _calLegendData.legendList; + + var padding = 5; + var marginTop = 8; + var shapeWidth = 15; + legendList.forEach(function (itemList, listIndex) { + var width = 0; + itemList.forEach(function (item) { + item.name = item.name || 'undefined'; + width += 3 * padding + measureText(item.name) + shapeWidth; + }); + var startX = (opts.width - width) / 2 + padding; + var startY = opts.height - config.padding - config.legendHeight + listIndex * (config.fontSize + marginTop) + padding + marginTop; + + context.setFontSize(config.fontSize); + itemList.forEach(function (item) { + switch (opts.type) { + case 'line': + context.beginPath(); + context.setLineWidth(1); + context.setStrokeStyle(item.color); + context.moveTo(startX - 2, startY + 5); + context.lineTo(startX + 17, startY + 5); + context.stroke(); + context.closePath(); + context.beginPath(); + context.setLineWidth(1); + context.setStrokeStyle('#ffffff'); + context.setFillStyle(item.color); + context.moveTo(startX + 7.5, startY + 5); + context.arc(startX + 7.5, startY + 5, 4, 0, 2 * Math.PI); + context.fill(); + context.stroke(); + context.closePath(); + break; + case 'pie': + case 'ring': + context.beginPath(); + context.setFillStyle(item.color); + context.moveTo(startX + 7.5, startY + 5); + context.arc(startX + 7.5, startY + 5, 7, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + break; + default: + context.beginPath(); + context.setFillStyle(item.color); + context.moveTo(startX, startY); + context.rect(startX, startY, 15, 10); + context.closePath(); + context.fill(); + } + startX += padding + shapeWidth; + context.beginPath(); + context.setFillStyle(opts.extra.legendTextColor || '#333333'); + context.fillText(item.name, startX, startY + 9); + context.closePath(); + context.stroke(); + startX += measureText(item.name) + 2 * padding; + }); + }); +} +function drawPieDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + + var pieOption = opts.extra.pie || {}; + series = getPieDataPoints(series, process); + var centerPosition = { + x: opts.width / 2, + y: (opts.height - config.legendHeight) / 2 + }; + var radius = Math.min(centerPosition.x - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, centerPosition.y - config.pieChartLinePadding - config.pieChartTextPadding); + if (opts.dataLabel) { + radius -= 10; + } else { + radius -= 2 * config.padding; + } + series = series.map(function (eachSeries) { + eachSeries._start_ += (pieOption.offsetAngle || 0) * Math.PI / 180; + return eachSeries; + }); + series.forEach(function (eachSeries) { + context.beginPath(); + context.setLineWidth(2); + context.setStrokeStyle('#ffffff'); + context.setFillStyle(eachSeries.color); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, radius, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI); + context.closePath(); + context.fill(); + if (opts.disablePieStroke !== true) { + context.stroke(); + } + }); + + if (opts.type === 'ring') { + var innerPieWidth = radius * 0.6; + if (typeof opts.extra.ringWidth === 'number' && opts.extra.ringWidth > 0) { + innerPieWidth = Math.max(0, radius - opts.extra.ringWidth); + } + context.beginPath(); + context.setFillStyle(opts.background || '#ffffff'); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + } + + if (opts.dataLabel !== false && process === 1) { + // fix https://github.com/xiaolin3303/wx-charts/issues/132 + var valid = false; + for (var i = 0, len = series.length; i < len; i++) { + if (series[i].data > 0) { + valid = true; + break; + } + } + + if (valid) { + drawPieText(series, opts, config, context, radius, centerPosition); + } + } + + if (process === 1 && opts.type === 'ring') { + drawRingTitle(opts, config, context); + } + + return { + center: centerPosition, + radius: radius, + series: series + }; +} + +function drawRadarDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + + var radarOption = opts.extra.radar || {}; + var coordinateAngle = getRadarCoordinateSeries(opts.categories.length); + var centerPosition = { + x: opts.width / 2, + y: (opts.height - config.legendHeight) / 2 + }; + + var radius = Math.min(centerPosition.x - (getMaxTextListLength(opts.categories) + config.radarLabelTextMargin), centerPosition.y - config.radarLabelTextMargin); + + radius -= config.padding; + + // draw grid + context.beginPath(); + context.setLineWidth(1); + context.setStrokeStyle(radarOption.gridColor || "#cccccc"); + coordinateAngle.forEach(function (angle) { + var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition); + context.moveTo(centerPosition.x, centerPosition.y); + context.lineTo(pos.x, pos.y); + }); + context.stroke(); + context.closePath(); + + // draw split line grid + + var _loop = function _loop(i) { + var startPos = {}; + context.beginPath(); + context.setLineWidth(1); + context.setStrokeStyle(radarOption.gridColor || "#cccccc"); + coordinateAngle.forEach(function (angle, index) { + var pos = convertCoordinateOrigin(radius / config.radarGridCount * i * Math.cos(angle), radius / config.radarGridCount * i * Math.sin(angle), centerPosition); + if (index === 0) { + startPos = pos; + context.moveTo(pos.x, pos.y); + } else { + context.lineTo(pos.x, pos.y); + } + }); + context.lineTo(startPos.x, startPos.y); + context.stroke(); + context.closePath(); + }; + + for (var i = 1; i <= config.radarGridCount; i++) { + _loop(i); + } + + var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process); + radarDataPoints.forEach(function (eachSeries, seriesIndex) { + // 绘制区域数据 + context.beginPath(); + context.setFillStyle(eachSeries.color); + context.setGlobalAlpha(0.6); + eachSeries.data.forEach(function (item, index) { + if (index === 0) { + context.moveTo(item.position.x, item.position.y); + } else { + context.lineTo(item.position.x, item.position.y); + } + }); + context.closePath(); + context.fill(); + context.setGlobalAlpha(1); + + if (opts.dataPointShape !== false) { + var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length]; + var points = eachSeries.data.map(function (item) { + return item.position; + }); + drawPointShape(points, eachSeries.color, shape, context); + } + }); + // draw label text + drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context); + + return { + center: centerPosition, + radius: radius, + angleList: coordinateAngle + }; +} + +function drawCanvas(opts, context) { + context.draw(); +} + +var Timing = { + easeIn: function easeIn(pos) { + return Math.pow(pos, 3); + }, + + easeOut: function easeOut(pos) { + return Math.pow(pos - 1, 3) + 1; + }, + + easeInOut: function easeInOut(pos) { + if ((pos /= 0.5) < 1) { + return 0.5 * Math.pow(pos, 3); + } else { + return 0.5 * (Math.pow(pos - 2, 3) + 2); + } + }, + + linear: function linear(pos) { + return pos; + } +}; + +function Animation(opts) { + this.isStop = false; + opts.duration = typeof opts.duration === 'undefined' ? 1000 : opts.duration; + opts.timing = opts.timing || 'linear'; + + var delay = 17; + + var createAnimationFrame = function createAnimationFrame() { + if (typeof requestAnimationFrame !== 'undefined') { + return requestAnimationFrame; + } else if (typeof setTimeout !== 'undefined') { + return function (step, delay) { + setTimeout(function () { + var timeStamp = +new Date(); + step(timeStamp); + }, delay); + }; + } else { + return function (step) { + step(null); + }; + } + }; + var animationFrame = createAnimationFrame(); + var startTimeStamp = null; + var _step = function step(timestamp) { + if (timestamp === null || this.isStop === true) { + opts.onProcess && opts.onProcess(1); + opts.onAnimationFinish && opts.onAnimationFinish(); + return; + } + if (startTimeStamp === null) { + startTimeStamp = timestamp; + } + if (timestamp - startTimeStamp < opts.duration) { + var process = (timestamp - startTimeStamp) / opts.duration; + var timingFunction = Timing[opts.timing]; + process = timingFunction(process); + opts.onProcess && opts.onProcess(process); + animationFrame(_step, delay); + } else { + opts.onProcess && opts.onProcess(1); + opts.onAnimationFinish && opts.onAnimationFinish(); + } + }; + _step = _step.bind(this); + + animationFrame(_step, delay); +} + +// stop animation immediately +// and tigger onAnimationFinish +Animation.prototype.stop = function () { + this.isStop = true; +}; + +function drawCharts(type, opts, config, context) { + var _this = this; + + var series = opts.series; + var categories = opts.categories; + series = fillSeriesColor(series, config); + + var _calLegendData = calLegendData(series, opts, config), + legendHeight = _calLegendData.legendHeight; + + config.legendHeight = legendHeight; + + var _calYAxisData = calYAxisData(series, opts, config), + yAxisWidth = _calYAxisData.yAxisWidth; + + config.yAxisWidth = yAxisWidth; + if (categories && categories.length) { + var _calCategoriesData = calCategoriesData(categories, opts, config), + xAxisHeight = _calCategoriesData.xAxisHeight, + angle = _calCategoriesData.angle; + + config.xAxisHeight = xAxisHeight; + config._xAxisTextAngle_ = angle; + } + if (type === 'pie' || type === 'ring') { + config._pieTextMaxLength_ = opts.dataLabel === false ? 0 : getPieTextMaxLength(series); + } + + var duration = opts.animation ? 1000 : 0; + this.animationInstance && this.animationInstance.stop(); + switch (type) { + case 'line': + this.animationInstance = new Animation({ + timing: 'easeIn', + duration: duration, + onProcess: function onProcess(process) { + drawYAxisGrid(opts, config, context); + + var _drawLineDataPoints = drawLineDataPoints(series, opts, config, context, process), + xAxisPoints = _drawLineDataPoints.xAxisPoints, + calPoints = _drawLineDataPoints.calPoints, + eachSpacing = _drawLineDataPoints.eachSpacing; + + _this.chartData.xAxisPoints = xAxisPoints; + _this.chartData.calPoints = calPoints; + _this.chartData.eachSpacing = eachSpacing; + drawXAxis(categories, opts, config, context); + drawLegend(opts.series, opts, config, context); + drawYAxis(series, opts, config, context); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.event.trigger('renderComplete'); + } + }); + break; + case 'column': + this.animationInstance = new Animation({ + timing: 'easeIn', + duration: duration, + onProcess: function onProcess(process) { + drawYAxisGrid(opts, config, context); + + var _drawColumnDataPoints = drawColumnDataPoints(series, opts, config, context, process), + xAxisPoints = _drawColumnDataPoints.xAxisPoints, + eachSpacing = _drawColumnDataPoints.eachSpacing; + + _this.chartData.xAxisPoints = xAxisPoints; + _this.chartData.eachSpacing = eachSpacing; + drawXAxis(categories, opts, config, context); + drawLegend(opts.series, opts, config, context); + drawYAxis(series, opts, config, context); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.event.trigger('renderComplete'); + } + }); + break; + case 'area': + this.animationInstance = new Animation({ + timing: 'easeIn', + duration: duration, + onProcess: function onProcess(process) { + drawYAxisGrid(opts, config, context); + + var _drawAreaDataPoints = drawAreaDataPoints(series, opts, config, context, process), + xAxisPoints = _drawAreaDataPoints.xAxisPoints, + calPoints = _drawAreaDataPoints.calPoints, + eachSpacing = _drawAreaDataPoints.eachSpacing; + + _this.chartData.xAxisPoints = xAxisPoints; + _this.chartData.calPoints = calPoints; + _this.chartData.eachSpacing = eachSpacing; + drawXAxis(categories, opts, config, context); + drawLegend(opts.series, opts, config, context); + drawYAxis(series, opts, config, context); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.event.trigger('renderComplete'); + } + }); + break; + case 'ring': + case 'pie': + this.animationInstance = new Animation({ + timing: 'easeInOut', + duration: duration, + onProcess: function onProcess(process) { + _this.chartData.pieData = drawPieDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.event.trigger('renderComplete'); + } + }); + break; + case 'radar': + this.animationInstance = new Animation({ + timing: 'easeInOut', + duration: duration, + onProcess: function onProcess(process) { + _this.chartData.radarData = drawRadarDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.event.trigger('renderComplete'); + } + }); + break; + } +} + +// simple event implement + +function Event() { + this.events = {}; +} + +Event.prototype.addEventListener = function (type, listener) { + this.events[type] = this.events[type] || []; + this.events[type].push(listener); +}; + +Event.prototype.trigger = function () { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + var type = args[0]; + var params = args.slice(1); + if (!!this.events[type]) { + this.events[type].forEach(function (listener) { + try { + listener.apply(null, params); + } catch (e) { + console.error(e); + } + }); + } +}; + +var Charts = function Charts(opts) { + opts.title = opts.title || {}; + opts.subtitle = opts.subtitle || {}; + opts.yAxis = opts.yAxis || {}; + opts.xAxis = opts.xAxis || {}; + opts.extra = opts.extra || {}; + opts.legend = opts.legend === false ? false : true; + opts.animation = opts.animation === false ? false : true; + var config$$1 = assign({}, config); + config$$1.yAxisTitleWidth = opts.yAxis.disabled !== true && opts.yAxis.title ? config$$1.yAxisTitleWidth : 0; + config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : config$$1.pieChartLinePadding; + config$$1.pieChartTextPadding = opts.dataLabel === false ? 0 : config$$1.pieChartTextPadding; + + this.opts = opts; + this.config = config$$1; + this.context = wx.createCanvasContext(opts.canvasId); + // store calcuated chart data + // such as chart point coordinate + this.chartData = {}; + this.event = new Event(); + this.scrollOption = { + currentOffset: 0, + startTouchX: 0, + distance: 0 + }; + + drawCharts.call(this, opts.type, opts, config$$1, this.context); +}; + +Charts.prototype.updateData = function () { + var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + this.opts.series = data.series || this.opts.series; + this.opts.categories = data.categories || this.opts.categories; + + this.opts.title = assign({}, this.opts.title, data.title || {}); + this.opts.subtitle = assign({}, this.opts.subtitle, data.subtitle || {}); + + drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); +}; + +Charts.prototype.stopAnimation = function () { + this.animationInstance && this.animationInstance.stop(); +}; + +Charts.prototype.addEventListener = function (type, listener) { + this.event.addEventListener(type, listener); +}; + +Charts.prototype.getCurrentDataIndex = function (e) { + var touches = e.touches && e.touches.length ? e.touches : e.changedTouches; + if (touches && touches.length) { + var _touches$ = touches[0], + x = _touches$.x, + y = _touches$.y; + + if (this.opts.type === 'pie' || this.opts.type === 'ring') { + return findPieChartCurrentIndex({ x: x, y: y }, this.chartData.pieData); + } else if (this.opts.type === 'radar') { + return findRadarChartCurrentIndex({ x: x, y: y }, this.chartData.radarData, this.opts.categories.length); + } else { + return findCurrentIndex({ x: x, y: y }, this.chartData.xAxisPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset)); + } + } + return -1; +}; + +Charts.prototype.showToolTip = function (e) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (this.opts.type === 'line' || this.opts.type === 'area') { + var index = this.getCurrentDataIndex(e); + var currentOffset = this.scrollOption.currentOffset; + + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset, + animation: false + }); + if (index > -1) { + var seriesData = getSeriesDataItem(this.opts.series, index); + if (seriesData.length !== 0) { + var _getToolTipData = getToolTipData(seriesData, this.chartData.calPoints, index, this.opts.categories, option), + textList = _getToolTipData.textList, + offset = _getToolTipData.offset; + + opts.tooltip = { + textList: textList, + offset: offset, + option: option + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } +}; + +Charts.prototype.scrollStart = function (e) { + if (e.touches[0] && this.opts.enableScroll === true) { + this.scrollOption.startTouchX = e.touches[0].x; + } +}; + +Charts.prototype.scroll = function (e) { + // TODO throtting... + if (e.touches[0] && this.opts.enableScroll === true) { + var _distance = e.touches[0].x - this.scrollOption.startTouchX; + var currentOffset = this.scrollOption.currentOffset; + + var validDistance = calValidDistance(currentOffset + _distance, this.chartData, this.config, this.opts); + + this.scrollOption.distance = _distance = validDistance - currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset + _distance, + animation: false + }); + + drawCharts.call(this, opts.type, opts, this.config, this.context); + } +}; + +Charts.prototype.scrollEnd = function (e) { + if (this.opts.enableScroll === true) { + var _scrollOption = this.scrollOption, + currentOffset = _scrollOption.currentOffset, + distance = _scrollOption.distance; + + this.scrollOption.currentOffset = currentOffset + distance; + this.scrollOption.distance = 0; + } +}; + +module.exports = Charts; -- Gitee From 616c5322c24d53795309d172546b262ed502207e Mon Sep 17 00:00:00 2001 From: "yangyouqi@torinosrc.com" Date: Wed, 23 Oct 2019 17:05:22 +0800 Subject: [PATCH 09/14] =?UTF-8?q?feat:=E5=88=AA=E9=99=A4=E4=B8=8D=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E7=9A=84=E6=9D=B1=E8=A5=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- template/list/list.wxml | 18 ------------------ template/list/list.wxss | 40 ---------------------------------------- 2 files changed, 58 deletions(-) delete mode 100644 template/list/list.wxml delete mode 100644 template/list/list.wxss diff --git a/template/list/list.wxml b/template/list/list.wxml deleted file mode 100644 index 9efaf57..0000000 --- a/template/list/list.wxml +++ /dev/null @@ -1,18 +0,0 @@ - - diff --git a/template/list/list.wxss b/template/list/list.wxss deleted file mode 100644 index 5b961df..0000000 --- a/template/list/list.wxss +++ /dev/null @@ -1,40 +0,0 @@ -/* template/datalist.wxss */ -.template { - display: flex; - flex-direction: column; - border-bottom: 2rpx solid #999; - border-top: 2rpx solid #999; -} -.avatar_date image { - width: 60rpx; - height: 60rpx; - border-radius: 30rpx; - margin: 20rpx 20rpx; - vertical-align: middle; -} -.avatar_date text { - font-size: 32rpx -} -.company { - margin: 20rpx 20rpx; - font-size: 32rpx; - font-weight: 700; -} -.contentImage { - width: 100%; - height: 400rpx; -} -.contentText { - font-size: 32rpx; - text-indent: 32rpx; -} -.collection_love image { - width: 32rpx; - height: 32rpx; - border-radius: 30rpx; - margin: 20rpx 20rpx; - vertical-align: middle; -} -.collection_love text { - font-size: 32rpx; -} \ No newline at end of file -- Gitee From bb51d3dab5aa6a8c26c48b60ab95a795f225b2b5 Mon Sep 17 00:00:00 2001 From: "yangyouqi@torinosrc.com" Date: Wed, 23 Oct 2019 18:38:56 +0800 Subject: [PATCH 10/14] =?UTF-8?q?feat:=E5=88=AA=E9=99=A4=E4=B8=8D=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E7=9A=84=E6=9D=B1=E8=A5=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.wxss | 16 +- pages/domoTest/ec-canvas/ec-canvas.js | 135 ++ pages/domoTest/ec-canvas/ec-canvas.json | 4 + pages/domoTest/ec-canvas/ec-canvas.wxml | 4 + pages/domoTest/ec-canvas/ec-canvas.wxss | 4 + pages/domoTest/ec-canvas/echarts.js | 22 + pages/domoTest/ec-canvas/wx-canvas.js | 97 + pages/domoTest/wxchartTest/wxChatTest.js | 167 +- pages/domoTest/wxchartTest/wxChatTest.json | 4 +- pages/domoTest/wxchartTest/wxChatTest.wxml | 10 +- pages/domoTest/wxchartTest/wxChatTest.wxss | 25 +- utils/api.js | 4 +- utils/wxcharts.js | 2044 -------------------- 13 files changed, 397 insertions(+), 2139 deletions(-) create mode 100644 pages/domoTest/ec-canvas/ec-canvas.js create mode 100644 pages/domoTest/ec-canvas/ec-canvas.json create mode 100644 pages/domoTest/ec-canvas/ec-canvas.wxml create mode 100644 pages/domoTest/ec-canvas/ec-canvas.wxss create mode 100644 pages/domoTest/ec-canvas/echarts.js create mode 100644 pages/domoTest/ec-canvas/wx-canvas.js delete mode 100644 utils/wxcharts.js diff --git a/app.wxss b/app.wxss index 06c6fc9..bc6d08f 100644 --- a/app.wxss +++ b/app.wxss @@ -1,5 +1,5 @@ /**app.wxss**/ -.container { +/* .container { height: 100%; display: flex; flex-direction: column; @@ -7,4 +7,18 @@ justify-content: space-between; padding: 200rpx 0; box-sizing: border-box; +} */ +/**app.wxss**/ +.container { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + box-sizing: border-box; } diff --git a/pages/domoTest/ec-canvas/ec-canvas.js b/pages/domoTest/ec-canvas/ec-canvas.js new file mode 100644 index 0000000..9cc2454 --- /dev/null +++ b/pages/domoTest/ec-canvas/ec-canvas.js @@ -0,0 +1,135 @@ +import WxCanvas from './wx-canvas'; +import * as echarts from './echarts'; + +let ctx; + +Component({ + properties: { + canvasId: { + type: String, + value: 'ec-canvas' + }, + + ec: { + type: Object + } + }, + + data: { + + }, + + ready: function () { + if (!this.data.ec) { + console.warn('组件需绑定 ec 变量,例:'); + return; + } + + if (!this.data.ec.lazyLoad) { + this.init(); + } + }, + + methods: { + init: function (callback) { + const version = wx.version.version.split('.').map(n => parseInt(n, 10)); + const isValid = version[0] > 1 || (version[0] === 1 && version[1] > 9) + || (version[0] === 1 && version[1] === 9 && version[2] >= 91); + if (!isValid) { + console.error('微信基础库版本过低,需大于等于 1.9.91。' + + '参见:https://github.com/ecomfe/echarts-for-weixin' + + '#%E5%BE%AE%E4%BF%A1%E7%89%88%E6%9C%AC%E8%A6%81%E6%B1%82'); + return; + } + + ctx = wx.createCanvasContext(this.data.canvasId, this); + + const canvas = new WxCanvas(ctx, this.data.canvasId); + + echarts.setCanvasCreator(() => { + return canvas; + }); + + var query = wx.createSelectorQuery().in(this); + query.select('.ec-canvas').boundingClientRect(res => { + if (typeof callback === 'function') { + this.chart = callback(canvas, res.width, res.height); + } + else if (this.data.ec && typeof this.data.ec.onInit === 'function') { + this.chart = this.data.ec.onInit(canvas, res.width, res.height); + } + else { + this.triggerEvent('init', { + canvas: canvas, + width: res.width, + height: res.height + }); + } + }).exec(); + }, + + canvasToTempFilePath(opt) { + if (!opt.canvasId) { + opt.canvasId = this.data.canvasId; + } + + ctx.draw(true, () => { + wx.canvasToTempFilePath(opt, this); + }); + }, + + touchStart(e) { + if (this.chart && e.touches.length > 0) { + var touch = e.touches[0]; + var handler = this.chart.getZr().handler; + handler.dispatch('mousedown', { + zrX: touch.x, + zrY: touch.y + }); + handler.dispatch('mousemove', { + zrX: touch.x, + zrY: touch.y + }); + handler.processGesture(wrapTouch(e), 'start'); + } + }, + + touchMove(e) { + if (this.chart && e.touches.length > 0) { + var touch = e.touches[0]; + var handler = this.chart.getZr().handler; + handler.dispatch('mousemove', { + zrX: touch.x, + zrY: touch.y + }); + handler.processGesture(wrapTouch(e), 'change'); + } + }, + + touchEnd(e) { + if (this.chart) { + const touch = e.changedTouches ? e.changedTouches[0] : {}; + var handler = this.chart.getZr().handler; + handler.dispatch('mouseup', { + zrX: touch.x, + zrY: touch.y + }); + handler.dispatch('click', { + zrX: touch.x, + zrY: touch.y + }); + handler.processGesture(wrapTouch(e), 'end'); + } + } + } +}); + +function wrapTouch(event) { + for (let i = 0; i < event.touches.length; ++i) { + const touch = event.touches[i]; + touch.offsetX = touch.x; + touch.offsetY = touch.y; + } + return event; +} diff --git a/pages/domoTest/ec-canvas/ec-canvas.json b/pages/domoTest/ec-canvas/ec-canvas.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/pages/domoTest/ec-canvas/ec-canvas.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/domoTest/ec-canvas/ec-canvas.wxml b/pages/domoTest/ec-canvas/ec-canvas.wxml new file mode 100644 index 0000000..33cfaf7 --- /dev/null +++ b/pages/domoTest/ec-canvas/ec-canvas.wxml @@ -0,0 +1,4 @@ + + diff --git a/pages/domoTest/ec-canvas/ec-canvas.wxss b/pages/domoTest/ec-canvas/ec-canvas.wxss new file mode 100644 index 0000000..0d64b10 --- /dev/null +++ b/pages/domoTest/ec-canvas/ec-canvas.wxss @@ -0,0 +1,4 @@ +.ec-canvas { + width: 100%; + height: 100%; +} diff --git a/pages/domoTest/ec-canvas/echarts.js b/pages/domoTest/ec-canvas/echarts.js new file mode 100644 index 0000000..77743db --- /dev/null +++ b/pages/domoTest/ec-canvas/echarts.js @@ -0,0 +1,22 @@ + +/* +* 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";function e(t,e){"createCanvas"===t&&(nw=null),ew[t]=e}function i(t){if(null==t||"object"!=typeof t)return t;var e=t,n=Y_.call(t);if("[object Array]"===n){if(!O(t)){e=[];for(var o=0,a=t.length;o=0){var o="touchend"!==n?e.targetTouches[0]:e.changedTouches[0];o&&st(t,o,e,i)}else st(t,e,e,i),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;var a=e.button;return null==e.which&&void 0!==a&&gw.test(e.type)&&(e.which=1&a?1:2&a?3:4&a?2:0),e}function ht(t,e,i){pw?t.addEventListener(e,i):t.attachEvent("on"+e,i)}function ct(t,e,i){pw?t.removeEventListener(e,i):t.detachEvent("on"+e,i)}function dt(t){return 2===t.which||3===t.which}function ft(t){var e=t[1][0]-t[0][0],i=t[1][1]-t[0][1];return Math.sqrt(e*e+i*i)}function pt(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}function gt(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:mt}}function mt(t){mw(this.event)}function vt(){}function yt(t,e,i){if(t[t.rectHover?"rectContain":"contain"](e,i)){for(var n,o=t;o;){if(o.clipPath&&!o.clipPath.contain(e,i))return!1;o.silent&&(n=!0),o=o.parent}return!n||xw}return!1}function xt(){var t=new bw(6);return _t(t),t}function _t(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function wt(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 bt(t,e,i){var n=e[0]*i[0]+e[2]*i[1],o=e[1]*i[0]+e[3]*i[1],a=e[0]*i[2]+e[2]*i[3],r=e[1]*i[2]+e[3]*i[3],s=e[0]*i[4]+e[2]*i[5]+e[4],l=e[1]*i[4]+e[3]*i[5]+e[5];return t[0]=n,t[1]=o,t[2]=a,t[3]=r,t[4]=s,t[5]=l,t}function St(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 Mt(t,e,i){var n=e[0],o=e[2],a=e[4],r=e[1],s=e[3],l=e[5],u=Math.sin(i),h=Math.cos(i);return t[0]=n*h+r*u,t[1]=-n*u+r*h,t[2]=o*h+s*u,t[3]=-o*u+h*s,t[4]=h*a+u*l,t[5]=h*l-u*a,t}function It(t,e,i){var n=i[0],o=i[1];return t[0]=e[0]*n,t[1]=e[1]*o,t[2]=e[2]*n,t[3]=e[3]*o,t[4]=e[4]*n,t[5]=e[5]*o,t}function Tt(t,e){var i=e[0],n=e[2],o=e[4],a=e[1],r=e[3],s=e[5],l=i*r-a*n;return l?(l=1/l,t[0]=r*l,t[1]=-a*l,t[2]=-n*l,t[3]=i*l,t[4]=(n*s-r*o)*l,t[5]=(a*o-i*s)*l,t):null}function At(t){var e=xt();return wt(e,t),e}function Dt(t){return t>Iw||t<-Iw}function Ct(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}function Lt(t){return(t=Math.round(t))<0?0:t>255?255:t}function kt(t){return(t=Math.round(t))<0?0:t>360?360:t}function Pt(t){return t<0?0:t>1?1:t}function Nt(t){return Lt(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100*255:parseInt(t,10))}function Ot(t){return Pt(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100:parseFloat(t))}function Et(t,e,i){return i<0?i+=1:i>1&&(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 Rt(t,e,i){return t+(e-t)*i}function zt(t,e,i,n,o){return t[0]=e,t[1]=i,t[2]=n,t[3]=o,t}function Bt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function Vt(t,e){Vw&&Bt(Vw,e),Vw=Bw.put(t,Vw||e.slice())}function Gt(t,e){if(t){e=e||[];var i=Bw.get(t);if(i)return Bt(e,i);var n=(t+="").replace(/ /g,"").toLowerCase();if(n in zw)return Bt(e,zw[n]),Vt(t,e),e;if("#"!==n.charAt(0)){var o=n.indexOf("("),a=n.indexOf(")");if(-1!==o&&a+1===n.length){var r=n.substr(0,o),s=n.substr(o+1,a-(o+1)).split(","),l=1;switch(r){case"rgba":if(4!==s.length)return void zt(e,0,0,0,1);l=Ot(s.pop());case"rgb":return 3!==s.length?void zt(e,0,0,0,1):(zt(e,Nt(s[0]),Nt(s[1]),Nt(s[2]),l),Vt(t,e),e);case"hsla":return 4!==s.length?void zt(e,0,0,0,1):(s[3]=Ot(s[3]),Ft(s,e),Vt(t,e),e);case"hsl":return 3!==s.length?void zt(e,0,0,0,1):(Ft(s,e),Vt(t,e),e);default:return}}zt(e,0,0,0,1)}else{if(4===n.length)return(u=parseInt(n.substr(1),16))>=0&&u<=4095?(zt(e,(3840&u)>>4|(3840&u)>>8,240&u|(240&u)>>4,15&u|(15&u)<<4,1),Vt(t,e),e):void zt(e,0,0,0,1);if(7===n.length){var u=parseInt(n.substr(1),16);return u>=0&&u<=16777215?(zt(e,(16711680&u)>>16,(65280&u)>>8,255&u,1),Vt(t,e),e):void zt(e,0,0,0,1)}}}}function Ft(t,e){var i=(parseFloat(t[0])%360+360)%360/360,n=Ot(t[1]),o=Ot(t[2]),a=o<=.5?o*(n+1):o+n-o*n,r=2*o-a;return e=e||[],zt(e,Lt(255*Et(r,a,i+1/3)),Lt(255*Et(r,a,i)),Lt(255*Et(r,a,i-1/3)),1),4===t.length&&(e[3]=t[3]),e}function Wt(t){if(t){var e,i,n=t[0]/255,o=t[1]/255,a=t[2]/255,r=Math.min(n,o,a),s=Math.max(n,o,a),l=s-r,u=(s+r)/2;if(0===l)e=0,i=0;else{i=u<.5?l/(s+r):l/(2-s-r);var h=((s-n)/6+l/2)/l,c=((s-o)/6+l/2)/l,d=((s-a)/6+l/2)/l;n===s?e=d-c:o===s?e=1/3+h-d:a===s&&(e=2/3+c-h),e<0&&(e+=1),e>1&&(e-=1)}var f=[360*e,i,u];return null!=t[3]&&f.push(t[3]),f}}function Ht(t,e){var i=Gt(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,i[n]>255?i[n]=255:t[n]<0&&(i[n]=0);return qt(i,4===i.length?"rgba":"rgb")}}function Zt(t){var e=Gt(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)}function Ut(t,e,i){if(e&&e.length&&t>=0&&t<=1){i=i||[];var n=t*(e.length-1),o=Math.floor(n),a=Math.ceil(n),r=e[o],s=e[a],l=n-o;return i[0]=Lt(Rt(r[0],s[0],l)),i[1]=Lt(Rt(r[1],s[1],l)),i[2]=Lt(Rt(r[2],s[2],l)),i[3]=Pt(Rt(r[3],s[3],l)),i}}function Xt(t,e,i){if(e&&e.length&&t>=0&&t<=1){var n=t*(e.length-1),o=Math.floor(n),a=Math.ceil(n),r=Gt(e[o]),s=Gt(e[a]),l=n-o,u=qt([Lt(Rt(r[0],s[0],l)),Lt(Rt(r[1],s[1],l)),Lt(Rt(r[2],s[2],l)),Pt(Rt(r[3],s[3],l))],"rgba");return i?{color:u,leftIndex:o,rightIndex:a,value:n}:u}}function jt(t,e,i,n){if(t=Gt(t))return t=Wt(t),null!=e&&(t[0]=kt(e)),null!=i&&(t[1]=Ot(i)),null!=n&&(t[2]=Ot(n)),qt(Ft(t),"rgba")}function Yt(t,e){if((t=Gt(t))&&null!=e)return t[3]=Pt(e),qt(t,"rgba")}function qt(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+")"}}function Kt(t,e){return t[e]}function $t(t,e,i){t[e]=i}function Jt(t,e,i){return(e-t)*i+t}function Qt(t,e,i){return i>.5?e:t}function te(t,e,i,n,o){var a=t.length;if(1===o)for(s=0;so)t.length=o;else for(r=n;r=0&&!(m[i]<=e);i--);i=Math.min(i,u-2)}else{for(i=L;ie);i++);i=Math.min(i-1,u-2)}L=i,k=e;var n=m[i+1]-m[i];if(0!==n)if(I=(e-m[i])/n,l)if(A=v[i],T=v[0===i?i:i-1],D=v[i>u-2?u-1:i+1],C=v[i>u-3?u-1:i+2],d)ne(T,A,D,C,I,I*I,I*I*I,r(t,o),g);else{if(f)a=ne(T,A,D,C,I,I*I,I*I*I,P,1),a=re(P);else{if(p)return Qt(A,D,I);a=oe(T,A,D,C,I,I*I,I*I*I)}s(t,o,a)}else if(d)te(v[i],v[i+1],I,r(t,o),g);else{var a;if(f)te(v[i],v[i+1],I,P,1),a=re(P);else{if(p)return Qt(v[i],v[i+1],I);a=Jt(v[i],v[i+1],I)}s(t,o,a)}},ondestroy:i});return e&&"spline"!==e&&(N.easing=e),N}}}function ue(t,e,i,n,o,a,r,s){_(n)?(a=o,o=n,n=0):x(o)?(a=o,o="linear",n=0):x(n)?(a=n,n=0):x(i)?(a=i,i=500):i||(i=500),t.stopAnimation(),he(t,"",t,e,i,n,s);var l=t.animators.slice(),u=l.length;u||a&&a();for(var h=0;h0&&t.animate(e,!1).when(null==o?500:o,s).delay(a||0)}function ce(t,e,i,n){if(e){var o={};o[e]={},o[e][i]=n,t.attr(o)}else t.attr(i,n)}function de(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}function fe(t){for(var e=0;t>=eb;)e|=1&t,t>>=1;return t+e}function pe(t,e,i,n){var o=e+1;if(o===i)return 1;if(n(t[o++],t[e])<0){for(;o=0;)o++;return o-e}function ge(t,e,i){for(i--;e>>1])<0?l=a:s=a+1;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(;u>0;)t[s+u]=t[s+u-1],u--}t[s]=r}}function ve(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])>0){for(s=n-o;l0;)r=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}else{for(s=o+1;ls&&(l=s);var u=r;r=o-l,l=o-u}for(r++;r>>1);a(t,e[i+h])>0?r=h+1:l=h}return l}function ye(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])<0){for(s=o+1;ls&&(l=s);var u=r;r=o-l,l=o-u}else{for(s=n-o;l=0;)r=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}for(r++;r>>1);a(t,e[i+h])<0?l=h:r=h+1}return l}function xe(t,e){function i(i){var s=a[i],u=r[i],h=a[i+1],c=r[i+1];r[i]=u+c,i===l-3&&(a[i+1]=a[i+2],r[i+1]=r[i+2]),l--;var d=ye(t[h],t,s,u,0,e);s+=d,0!==(u-=d)&&0!==(c=ve(t[s+u-1],t,h,c,c-1,e))&&(u<=c?n(s,u,h,c):o(s,u,h,c))}function n(i,n,o,a){var r=0;for(r=0;r=ib||f>=ib);if(p)break;g<0&&(g=0),g+=2}if((s=g)<1&&(s=1),1===n){for(r=0;r=0;r--)t[f+r]=t[d+r];if(0===n){v=!0;break}}if(t[c--]=u[h--],1==--a){v=!0;break}if(0!=(m=a-ve(t[l],u,0,a,a-1,e))){for(a-=m,f=(c-=m)+1,d=(h-=m)+1,r=0;r=ib||m>=ib);if(v)break;p<0&&(p=0),p+=2}if((s=p)<1&&(s=1),1===a){for(f=(c-=n)+1,d=(l-=n)+1,r=n-1;r>=0;r--)t[f+r]=t[d+r];t[c]=u[h]}else{if(0===a)throw new Error;for(d=c-(a-1),r=0;r=0;r--)t[f+r]=t[d+r];t[c]=u[h]}else for(d=c-(a-1),r=0;r1;){var t=l-2;if(t>=1&&r[t-1]<=r[t]+r[t+1]||t>=2&&r[t-2]<=r[t]+r[t-1])r[t-1]r[t+1])break;i(t)}},this.forceMergeRuns=function(){for(;l>1;){var t=l-2;t>0&&r[t-1]s&&(l=s),me(t,i,i+l,i+a,e),a=l}r.pushRun(i,a),r.mergeRuns(),o-=a,i+=a}while(0!==o);r.forceMergeRuns()}}function we(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}function be(t,e,i){var n=null==e.x?0:e.x,o=null==e.x2?1:e.x2,a=null==e.y?0:e.y,r=null==e.y2?0:e.y2;return e.global||(n=n*i.width+i.x,o=o*i.width+i.x,a=a*i.height+i.y,r=r*i.height+i.y),n=isNaN(n)?0:n,o=isNaN(o)?1:o,a=isNaN(a)?0:a,r=isNaN(r)?0:r,t.createLinearGradient(n,a,o,r)}function Se(t,e,i){var n=i.width,o=i.height,a=Math.min(n,o),r=null==e.x?.5:e.x,s=null==e.y?.5:e.y,l=null==e.r?.5:e.r;return e.global||(r=r*n+i.x,s=s*o+i.y,l*=a),t.createRadialGradient(r,s,0,r,s,l)}function Me(){return!1}function Ie(t,e,i){var n=iw(),o=e.getWidth(),a=e.getHeight(),r=n.style;return r&&(r.position="absolute",r.left=0,r.top=0,r.width=o+"px",r.height=a+"px",n.setAttribute("data-zr-dom-id",t)),n.width=o*i,n.height=a*i,n}function Te(t){if("string"==typeof t){var e=mb.get(t);return e&&e.image}return t}function Ae(t,e,i,n,o){if(t){if("string"==typeof t){if(e&&e.__zrImageSrc===t||!i)return e;var a=mb.get(t),r={hostEl:i,cb:n,cbPayload:o};return a?!Ce(e=a.image)&&a.pending.push(r):((e=new Image).onload=e.onerror=De,mb.put(t,e.__cachedImgObj={image:e,pending:[r]}),e.src=e.__zrImageSrc=t),e}return t}return e}function De(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;exb&&(yb=0,vb={}),yb++,vb[i]=o,o}function ke(t,e,i,n,o,a,r,s){return r?Ne(t,e,i,n,o,r,a,s):Pe(t,e,i,n,o,a,s)}function Pe(t,e,i,n,o,a,r){var s=He(t,e,o,a,r),l=Le(t,e);o&&(l+=o[1]+o[3]);var u=s.outerHeight,h=new de(Oe(0,l,i),Ee(0,u,n),l,u);return h.lineHeight=s.lineHeight,h}function Ne(t,e,i,n,o,a,r,s){var l=Ze(t,{rich:r,truncate:s,font:e,textAlign:i,textPadding:o,textLineHeight:a}),u=l.outerWidth,h=l.outerHeight;return new de(Oe(0,u,i),Ee(0,h,n),u,h)}function Oe(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function Ee(t,e,i){return"middle"===i?t-=e/2:"bottom"===i&&(t-=e),t}function Re(t,e,i){var n=e.x,o=e.y,a=e.height,r=e.width,s=a/2,l="left",u="top";switch(t){case"left":n-=i,o+=s,l="right",u="middle";break;case"right":n+=i+r,o+=s,u="middle";break;case"top":n+=r/2,o-=i,l="center",u="bottom";break;case"bottom":n+=r/2,o+=a+i,l="center";break;case"inside":n+=r/2,o+=s,l="center",u="middle";break;case"insideLeft":n+=i,o+=s,u="middle";break;case"insideRight":n+=r-i,o+=s,l="right",u="middle";break;case"insideTop":n+=r/2,o+=i,l="center";break;case"insideBottom":n+=r/2,o+=a-i,l="center",u="bottom";break;case"insideTopLeft":n+=i,o+=i;break;case"insideTopRight":n+=r-i,o+=i,l="right";break;case"insideBottomLeft":n+=i,o+=a-i,u="bottom";break;case"insideBottomRight":n+=r-i,o+=a-i,l="right",u="bottom"}return{x:n,y:o,textAlign:l,textVerticalAlign:u}}function ze(t,e,i,n,o){if(!e)return"";var a=(t+"").split("\n");o=Be(e,i,n,o);for(var r=0,s=a.length;r=r;l++)s-=r;var u=Le(i,e);return u>s&&(i="",u=0),s=t-u,n.ellipsis=i,n.ellipsisWidth=u,n.contentWidth=s,n.containerWidth=t,n}function Ve(t,e){var i=e.containerWidth,n=e.font,o=e.contentWidth;if(!i)return"";var a=Le(t,n);if(a<=i)return t;for(var r=0;;r++){if(a<=o||r>=e.maxIterations){t+=e.ellipsis;break}var s=0===r?Ge(t,o,e.ascCharWidth,e.cnCharWidth):a>0?Math.floor(t.length*o/a):0;a=Le(t=t.substr(0,s),n)}return""===t&&(t=e.placeholder),t}function Ge(t,e,i,n){for(var o=0,a=0,r=t.length;au)t="",r=[];else if(null!=h)for(var c=Be(h-(i?i[1]+i[3]:0),e,o.ellipsis,{minChar:o.minChar,placeholder:o.placeholder}),d=0,f=r.length;do&&Ue(i,t.substring(o,a)),Ue(i,n[2],n[1]),o=_b.lastIndex}of)return{lines:[],width:0,height:0};k.textWidth=Le(k.text,_);var b=y.textWidth,S=null==b||"auto"===b;if("string"==typeof b&&"%"===b.charAt(b.length-1))k.percentWidth=b,u.push(k),b=0;else{if(S){b=k.textWidth;var M=y.textBackgroundColor,I=M&&M.image;I&&Ce(I=Te(I))&&(b=Math.max(b,I.width*w/I.height))}var T=x?x[1]+x[3]:0;b+=T;var C=null!=d?d-m:null;null!=C&&Cl&&(i*=l/(c=i+n),n*=l/c),o+a>l&&(o*=l/(c=o+a),a*=l/c),n+o>u&&(n*=u/(c=n+o),o*=u/c),i+a>u&&(i*=u/(c=i+a),a*=u/c),t.moveTo(r+i,s),t.lineTo(r+l-n,s),0!==n&&t.arc(r+l-n,s+n,n,-Math.PI/2,0),t.lineTo(r+l,s+u-o),0!==o&&t.arc(r+l-o,s+u-o,o,0,Math.PI/2),t.lineTo(r+a,s+u),0!==a&&t.arc(r+a,s+u-a,a,Math.PI/2,Math.PI),t.lineTo(r,s+i),0!==i&&t.arc(r+i,s+i,i,Math.PI,1.5*Math.PI)}function Ye(t){return qe(t),d(t.rich,qe),t}function qe(t){if(t){t.font=Xe(t);var e=t.textAlign;"middle"===e&&(e="center"),t.textAlign=null==e||Sb[e]?e:"left";var i=t.textVerticalAlign||t.textBaseline;"center"===i&&(i="middle"),t.textVerticalAlign=null==i||Mb[i]?i:"top",t.textPadding&&(t.textPadding=L(t.textPadding))}}function Ke(t,e,i,n,o,a){n.rich?Je(t,e,i,n,o,a):$e(t,e,i,n,o,a)}function $e(t,e,i,n,o,a){var r,s=ii(n),l=!1,u=e.__attrCachedBy===rb.PLAIN_TEXT;a!==sb?(a&&(r=a.style,l=!s&&u),e.__attrCachedBy=s?rb.NONE:rb.PLAIN_TEXT):u&&(e.__attrCachedBy=rb.NONE);var h=n.font||wb;h!==e.__fontCache&&(e.font=h,a!==sb&&(e.__fontCache=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=He(i,c,d,f,n.truncate));var g=p.outerHeight,m=p.lines,v=p.lineHeight,y=ai(g,n,o),x=y.baseX,_=y.baseY,w=y.textAlign||"left",b=y.textVerticalAlign;ti(e,n,o,x,_);var S=Ee(_,g,b),M=x,I=S;if(s||d){var T=Le(i,c);d&&(T+=d[1]+d[3]);var A=Oe(x,T,w);s&&ni(t,e,n,A,S,T,g),d&&(M=hi(x,w,d),I+=d[0])}e.textAlign=w,e.textBaseline="middle",e.globalAlpha=n.opacity||1;for(B=0;B=0&&"right"===(_=b[C]).textAlign;)ei(t,e,_,n,M,v,D,"right"),I-=_.width,D-=_.width,C--;for(A+=(a-(A-m)-(y-D)-I)/2;T<=C;)ei(t,e,_=b[T],n,M,v,A+_.width/2,"center"),A+=_.width,T++;v+=M}}function ti(t,e,i,n,o){if(i&&e.textRotation){var a=e.textOrigin;"center"===a?(n=i.width/2+i.x,o=i.height/2+i.y):a&&(n=a[0]+i.x,o=a[1]+i.y),t.translate(n,o),t.rotate(-e.textRotation),t.translate(-n,-o)}}function ei(t,e,i,n,o,a,r,s){var l=n.rich[i.styleName]||{};l.text=i.text;var u=i.textVerticalAlign,h=a+o/2;"top"===u?h=a+i.height/2:"bottom"===u&&(h=a+o-i.height/2),!i.isLineHolder&&ii(l)&&ni(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=hi(r,s,c),h-=i.height/2-c[2]-i.textHeight/2),ri(e,"shadowBlur",D(l.textShadowBlur,n.textShadowBlur,0)),ri(e,"shadowColor",l.textShadowColor||n.textShadowColor||"transparent"),ri(e,"shadowOffsetX",D(l.textShadowOffsetX,n.textShadowOffsetX,0)),ri(e,"shadowOffsetY",D(l.textShadowOffsetY,n.textShadowOffsetY,0)),ri(e,"textAlign",s),ri(e,"textBaseline","middle"),ri(e,"font",i.font||wb);var d=si(l.textStroke||n.textStroke,p),f=li(l.textFill||n.textFill),p=A(l.textStrokeWidth,n.textStrokeWidth);d&&(ri(e,"lineWidth",p),ri(e,"strokeStyle",d),e.strokeText(i.text,r,h)),f&&(ri(e,"fillStyle",f),e.fillText(i.text,r,h))}function ii(t){return!!(t.textBackgroundColor||t.textBorderWidth&&t.textBorderColor)}function ni(t,e,i,n,o,a,r){var s=i.textBackgroundColor,l=i.textBorderWidth,u=i.textBorderColor,h=_(s);if(ri(e,"shadowBlur",i.textBoxShadowBlur||0),ri(e,"shadowColor",i.textBoxShadowColor||"transparent"),ri(e,"shadowOffsetX",i.textBoxShadowOffsetX||0),ri(e,"shadowOffsetY",i.textBoxShadowOffsetY||0),h||l&&u){e.beginPath();var c=i.textBorderRadius;c?je(e,{x:n,y:o,width:a,height:r,r:c}):e.rect(n,o,a,r),e.closePath()}if(h)if(ri(e,"fillStyle",s),null!=i.fillOpacity){f=e.globalAlpha;e.globalAlpha=i.fillOpacity*i.opacity,e.fill(),e.globalAlpha=f}else e.fill();else if(w(s)){var d=s.image;(d=Ae(d,null,t,oi,s))&&Ce(d)&&e.drawImage(d,n,o,a,r)}if(l&&u)if(ri(e,"lineWidth",l),ri(e,"strokeStyle",u),null!=i.strokeOpacity){var f=e.globalAlpha;e.globalAlpha=i.strokeOpacity*i.opacity,e.stroke(),e.globalAlpha=f}else e.stroke()}function oi(t,e){e.image=t}function ai(t,e,i){var n=e.x||0,o=e.y||0,a=e.textAlign,r=e.textVerticalAlign;if(i){var s=e.textPosition;if(s instanceof Array)n=i.x+ui(s[0],i.width),o=i.y+ui(s[1],i.height);else{var l=Re(s,i,e.textDistance);n=l.x,o=l.y,a=a||l.textAlign,r=r||l.textVerticalAlign}var u=e.textOffset;u&&(n+=u[0],o+=u[1])}return{baseX:n,baseY:o,textAlign:a,textVerticalAlign:r}}function ri(t,e,i){return t[e]=ab(t,e,i),t[e]}function si(t,e){return null==t||e<=0||"transparent"===t||"none"===t?null:t.image||t.colorStops?"#000":t}function li(t){return null==t||"none"===t?null:t.image||t.colorStops?"#000":t}function ui(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}function hi(t,e,i){return"right"===e?t-i[1]:"center"===e?t+i[3]/2-i[1]/2:t+i[3]}function ci(t,e){return null!=t&&(t||e.textBackgroundColor||e.textBorderWidth&&e.textBorderColor||e.textPadding)}function di(t){t=t||{},Kw.call(this,t);for(var e in t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new ub(t.style,this),this._rect=null,this.__clipPaths=[]}function fi(t){di.call(this,t)}function pi(t){return parseInt(t,10)}function gi(t){return!!t&&(!!t.__builtin__||"function"==typeof t.resize&&"function"==typeof t.refresh)}function mi(t,e,i){return Db.copy(t.getBoundingRect()),t.transform&&Db.applyTransform(t.transform),Cb.width=e,Cb.height=i,!Db.intersect(Cb)}function vi(t,e){if(t===e)return!1;if(!t||!e||t.length!==e.length)return!0;for(var i=0;i=i.length&&i.push({option:t})}}),i}function Ni(t){var e=R();Hb(t,function(t,i){var n=t.exist;n&&e.set(n.id,t)}),Hb(t,function(t,i){var n=t.option;k(!n||null==n.id||!e.get(n.id)||e.get(n.id)===t,"id duplicates: "+(n&&n.id)),n&&null!=n.id&&e.set(n.id,t),!t.keyInfo&&(t.keyInfo={})}),Hb(t,function(t,i){var n=t.exist,o=t.option,a=t.keyInfo;if(Zb(o)){if(a.name=null!=o.name?o.name+"":n?n.name:Xb+i,n)a.id=n.id;else if(null!=o.id)a.id=o.id+"";else{var r=0;do{a.id="\0"+a.name+"\0"+r++}while(e.get(a.id))}e.set(a.id,t)}})}function Oi(t){var e=t.name;return!(!e||!e.indexOf(Xb))}function Ei(t){return Zb(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")}function Ri(t,e){function i(t,e,i){for(var n=0,o=t.length;n-aS&&taS||t<-aS}function Qi(t,e,i,n,o){var a=1-o;return a*a*(a*t+3*o*e)+o*o*(o*n+3*a*i)}function tn(t,e,i,n,o){var a=1-o;return 3*(((e-t)*a+2*(i-e)*o)*a+(n-i)*o*o)}function en(t,e,i,n,o,a){var r=n+3*(e-i)-t,s=3*(i-2*e+t),l=3*(e-t),u=t-o,h=s*s-3*r*l,c=s*l-9*r*u,d=l*l-3*s*u,f=0;if($i(h)&&$i(c))$i(s)?a[0]=0:(M=-l/s)>=0&&M<=1&&(a[f++]=M);else{var p=c*c-4*h*d;if($i(p)){var g=c/h,m=-g/2;(M=-s/r+g)>=0&&M<=1&&(a[f++]=M),m>=0&&m<=1&&(a[f++]=m)}else if(p>0){var v=oS(p),y=h*s+1.5*r*(-c+v),x=h*s+1.5*r*(-c-v);(M=(-s-((y=y<0?-nS(-y,lS):nS(y,lS))+(x=x<0?-nS(-x,lS):nS(x,lS))))/(3*r))>=0&&M<=1&&(a[f++]=M)}else{var _=(2*h*s-3*r*c)/(2*oS(h*h*h)),w=Math.acos(_)/3,b=oS(h),S=Math.cos(w),M=(-s-2*b*S)/(3*r),m=(-s+b*(S+sS*Math.sin(w)))/(3*r),I=(-s+b*(S-sS*Math.sin(w)))/(3*r);M>=0&&M<=1&&(a[f++]=M),m>=0&&m<=1&&(a[f++]=m),I>=0&&I<=1&&(a[f++]=I)}}return f}function nn(t,e,i,n,o){var a=6*i-12*e+6*t,r=9*e+3*n-3*t-9*i,s=3*e-3*t,l=0;if($i(r))Ji(a)&&(c=-s/a)>=0&&c<=1&&(o[l++]=c);else{var u=a*a-4*r*s;if($i(u))o[0]=-a/(2*r);else if(u>0){var h=oS(u),c=(-a+h)/(2*r),d=(-a-h)/(2*r);c>=0&&c<=1&&(o[l++]=c),d>=0&&d<=1&&(o[l++]=d)}}return l}function on(t,e,i,n,o,a){var r=(e-t)*o+t,s=(i-e)*o+e,l=(n-i)*o+i,u=(s-r)*o+r,h=(l-s)*o+s,c=(h-u)*o+u;a[0]=t,a[1]=r,a[2]=u,a[3]=c,a[4]=c,a[5]=h,a[6]=l,a[7]=n}function an(t,e,i,n,o,a,r,s,l,u,h){var c,d,f,p,g,m=.005,v=1/0;uS[0]=l,uS[1]=u;for(var y=0;y<1;y+=.05)hS[0]=Qi(t,i,o,r,y),hS[1]=Qi(e,n,a,s,y),(p=hw(uS,hS))=0&&p=0&&c<=1&&(o[l++]=c);else{var u=r*r-4*a*s;if($i(u))(c=-r/(2*a))>=0&&c<=1&&(o[l++]=c);else if(u>0){var h=oS(u),c=(-r+h)/(2*a),d=(-r-h)/(2*a);c>=0&&c<=1&&(o[l++]=c),d>=0&&d<=1&&(o[l++]=d)}}return l}function un(t,e,i){var n=t+i-2*e;return 0===n?.5:(t-e)/n}function hn(t,e,i,n,o){var a=(e-t)*n+t,r=(i-e)*n+e,s=(r-a)*n+a;o[0]=t,o[1]=a,o[2]=s,o[3]=s,o[4]=r,o[5]=i}function cn(t,e,i,n,o,a,r,s,l){var u,h=.005,c=1/0;uS[0]=r,uS[1]=s;for(var d=0;d<1;d+=.05)hS[0]=rn(t,i,o,d),hS[1]=rn(e,n,a,d),(m=hw(uS,hS))=0&&m1e-4)return s[0]=t-i,s[1]=e-n,l[0]=t+i,void(l[1]=e+n);if(vS[0]=gS(o)*i+t,vS[1]=pS(o)*n+e,yS[0]=gS(a)*i+t,yS[1]=pS(a)*n+e,u(s,vS,yS),h(l,vS,yS),(o%=mS)<0&&(o+=mS),(a%=mS)<0&&(a+=mS),o>a&&!r?a+=mS:oo&&(xS[0]=gS(f)*i+t,xS[1]=pS(f)*n+e,u(s,xS,s),h(l,xS,l))}function vn(t,e,i,n,o,a,r){if(0===o)return!1;var s=o,l=0,u=t;if(r>e+s&&r>n+s||rt+s&&a>i+s||ae+c&&h>n+c&&h>a+c&&h>s+c||ht+c&&u>i+c&&u>o+c&&u>r+c||ue+u&&l>n+u&&l>a+u||lt+u&&s>i+u&&s>o+u||si||h+uo&&(o+=RS);var d=Math.atan2(l,s);return d<0&&(d+=RS),d>=n&&d<=o||d+RS>=n&&d+RS<=o}function bn(t,e,i,n,o,a){if(a>e&&a>n||ao?r:0}function Sn(t,e){return Math.abs(t-e)e&&u>n&&u>a&&u>s||u1&&Mn(),c=Qi(e,n,a,s,FS[0]),p>1&&(d=Qi(e,n,a,s,FS[1]))),2===p?me&&s>n&&s>a||s=0&&u<=1){for(var h=0,c=rn(e,n,a,u),d=0;di||s<-i)return 0;u=Math.sqrt(i*i-s*s);GS[0]=-u,GS[1]=u;var l=Math.abs(n-o);if(l<1e-4)return 0;if(l%BS<1e-4){n=0,o=BS;p=a?1:-1;return r>=GS[0]+t&&r<=GS[1]+t?p:0}if(a){var u=n;n=_n(o),o=_n(u)}else n=_n(n),o=_n(o);n>o&&(o+=BS);for(var h=0,c=0;c<2;c++){var d=GS[c];if(d+t>r){var f=Math.atan2(s,d),p=a?1:-1;f<0&&(f=BS+f),(f>=n&&f<=o||f+BS>=n&&f+BS<=o)&&(f>Math.PI/2&&f<1.5*Math.PI&&(p=-p),h+=p)}}return h}function Dn(t,e,i,n,o){for(var a=0,r=0,s=0,l=0,u=0,h=0;h1&&(i||(a+=bn(r,s,l,u,n,o))),1===h&&(l=r=t[h],u=s=t[h+1]),c){case zS.M:r=l=t[h++],s=u=t[h++];break;case zS.L:if(i){if(vn(r,s,t[h],t[h+1],e,n,o))return!0}else a+=bn(r,s,t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case zS.C:if(i){if(yn(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=In(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case zS.Q:if(i){if(xn(r,s,t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=Tn(r,s,t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case zS.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;h>1?a+=bn(r,s,x,_,n,o):(l=x,u=_);var w=(n-d)*g/p+d;if(i){if(wn(d,f,g,m,m+v,y,e,w,o))return!0}else a+=An(d,f,g,m,m+v,y,w,o);r=Math.cos(m+v)*p+d,s=Math.sin(m+v)*g+f;break;case zS.R:l=r=t[h++],u=s=t[h++];var x=l+t[h++],_=u+t[h++];if(i){if(vn(l,u,x,u,e,n,o)||vn(x,u,x,_,e,n,o)||vn(x,_,l,_,e,n,o)||vn(l,_,l,u,e,n,o))return!0}else a+=bn(x,u,x,_,n,o),a+=bn(l,_,l,u,n,o);break;case zS.Z:if(i){if(vn(r,s,l,u,e,n,o))return!0}else a+=bn(r,s,l,u,n,o);r=l,s=u}}return i||Sn(s,u)||(a+=bn(r,s,l,u,n,o)||0),0!==a}function Cn(t,e,i){return Dn(t,0,!1,e,i)}function Ln(t,e,i,n){return Dn(t,e,!0,i,n)}function kn(t){di.call(this,t),this.path=null}function Pn(t,e,i,n,o,a,r,s,l,u,h){var c=l*(QS/180),d=JS(c)*(t-i)/2+$S(c)*(e-n)/2,f=-1*$S(c)*(t-i)/2+JS(c)*(e-n)/2,p=d*d/(r*r)+f*f/(s*s);p>1&&(r*=KS(p),s*=KS(p));var g=(o===a?-1:1)*KS((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+JS(c)*m-$S(c)*v,x=(e+n)/2+$S(c)*m+JS(c)*v,_=iM([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=iM(w,b);eM(w,b)<=-1&&(S=QS),eM(w,b)>=1&&(S=0),0===a&&S>0&&(S-=2*QS),1===a&&S<0&&(S+=2*QS),h.addData(u,y,x,r,s,_,S,c,a)}function Nn(t){if(!t)return new OS;for(var e,i=0,n=0,o=i,a=n,r=new OS,s=OS.CMD,l=t.match(nM),u=0;u=2){if(o&&"spline"!==o){var a=dM(n,o,i,e.smoothConstraint);t.moveTo(n[0][0],n[0][1]);for(var r=n.length,s=0;s<(i?r:r-1);s++){var l=a[2*s],u=a[2*s+1],h=n[(s+1)%r];t.bezierCurveTo(l[0],l[1],u[0],u[1],h[0],h[1])}}else{"spline"===o&&(n=cM(n,i)),t.moveTo(n[0][0],n[0][1]);for(var s=1,c=n.length;s=0)?(i={textFill:null,textStroke:t.textStroke,textStrokeWidth:t.textStrokeWidth},t.textFill="#fff",null==t.textStroke&&(t.textStroke=a,null==t.textStrokeWidth&&(t.textStrokeWidth=2))):null!=a&&(i={textFill:null},t.textFill=a),i&&(t.insideRollback=i)}}function wo(t){var e=t.insideRollback;e&&(t.textFill=e.textFill,t.textStroke=e.textStroke,t.textStrokeWidth=e.textStrokeWidth,t.insideRollback=null)}function bo(t,e){var i=e||e.getModel("textStyle");return P([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 So(t,e,i,n,o,a){if("function"==typeof o&&(a=o,o=null),n&&n.isAnimationEnabled()){var r=t?"Update":"",s=n.getShallow("animationDuration"+r),l=n.getShallow("animationEasing"+r),u=n.getShallow("animationDelay"+r);"function"==typeof u&&(u=u(o,n.getAnimationDelayParams?n.getAnimationDelayParams(e,o):null)),"function"==typeof s&&(s=s(o)),s>0?e.animateTo(i,s,u||0,l,a,!!a):(e.stopAnimation(),e.attr(i),a&&a())}else e.stopAnimation(),e.attr(i),a&&a()}function Mo(t,e,i,n,o){So(!0,t,e,i,n,o)}function Io(t,e,i,n,o){So(!1,t,e,i,n,o)}function To(t,e){for(var i=_t([]);t&&t!==e;)bt(i,t.getLocalTransform(),i),t=t.parent;return i}function Ao(t,e,i){return e&&!c(e)&&(e=Tw.getLocalTransform(e)),i&&(e=Tt([],e)),Q([],t,e)}function Do(t,e,i){var n=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),o=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),a=["left"===t?-n:"right"===t?n:0,"top"===t?-o:"bottom"===t?o:0];return a=Ao(a,e,i),Math.abs(a[0])>Math.abs(a[1])?a[0]>0?"right":"left":a[1]>0?"bottom":"top"}function Co(t,e,i,n){function o(t){var e={position:F(t.position),rotation:t.rotation};return t.shape&&(e.shape=a({},t.shape)),e}if(t&&e){var r=function(t){var e={};return t.traverse(function(t){!t.isGroup&&t.anid&&(e[t.anid]=t)}),e}(t);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=r[t.anid];if(e){var n=o(t);t.attr(o(e)),Mo(t,n,i,t.dataIndex)}}})}}function Lo(t,e){return f(t,function(t){var i=t[0];i=CM(i,e.x),i=LM(i,e.x+e.width);var n=t[1];return n=CM(n,e.y),n=LM(n,e.y+e.height),[i,n]})}function ko(t,e,i){var n=(e=a({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),r(n,i),new fi(e)):Un(t.replace("path://",""),e,i,"center")}function Po(t,e,i){this.parentModel=e,this.ecModel=i,this.option=t}function No(t,e,i){for(var n=0;n0){if(t<=e[0])return i[0];if(t>=e[1])return i[1]}else{if(t>=e[0])return i[0];if(t<=e[1])return i[1]}else{if(t===e[0])return i[0];if(t===e[1])return i[1]}return(t-e[0])/o*a+i[0]}function Bo(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?Ro(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t}function Vo(t,e,i){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),i?t:+t}function Go(t){return t.sort(function(t,e){return t-e}),t}function Fo(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 Wo(t){var e=t.toString(),i=e.indexOf("e");if(i>0){var n=+e.slice(i+1);return n<0?-n:0}var o=e.indexOf(".");return o<0?0:e.length-1-o}function Ho(t,e){var i=Math.log,n=Math.LN10,o=Math.floor(i(t[1]-t[0])/n),a=Math.round(i(Math.abs(e[1]-e[0]))/n),r=Math.min(Math.max(-o+a,0),20);return isFinite(r)?r:20}function Zo(t,e,i){if(!t[e])return 0;var n=p(t,function(t,e){return t+(isNaN(e)?0:e)},0);if(0===n)return 0;for(var o=Math.pow(10,i),a=f(t,function(t){return(isNaN(t)?0:t)/n*o*100}),r=100*o,s=f(a,function(t){return Math.floor(t)}),l=p(s,function(t,e){return t+e},0),u=f(a,function(t,e){return t-s[e]});lh&&(h=u[d],c=d);++s[c],u[c]=0,++l}return s[e]/o}function Uo(t){var e=2*Math.PI;return(t%e+e)%e}function Xo(t){return t>-ZM&&t=-20?+t.toFixed(n<0?-n:0):t}function $o(t){function e(t,i,n){return t.interval[n]=0}function Qo(t){return isNaN(t)?"-":(t=(t+"").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:"")}function ta(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}function ea(t){return null==t?"":(t+"").replace(qM,function(t,e){return KM[e]})}function ia(t,e,i){y(e)||(e=[e]);var n=e.length;if(!n)return"";for(var o=e[0].$vars||[],a=0;a':'':{renderMode:o,content:"{marker"+a+"|} ",style:{color:i}}:""}function aa(t,e){return t+="","0000".substr(0,e-t.length)+t}function ra(t,e,i){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var n=jo(e),o=i?"UTC":"",a=n["get"+o+"FullYear"](),r=n["get"+o+"Month"]()+1,s=n["get"+o+"Date"](),l=n["get"+o+"Hours"](),u=n["get"+o+"Minutes"](),h=n["get"+o+"Seconds"](),c=n["get"+o+"Milliseconds"]();return t=t.replace("MM",aa(r,2)).replace("M",r).replace("yyyy",a).replace("yy",a%100).replace("dd",aa(s,2)).replace("d",s).replace("hh",aa(l,2)).replace("h",l).replace("mm",aa(u,2)).replace("m",u).replace("ss",aa(h,2)).replace("s",h).replace("SSS",aa(c,3))}function sa(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t}function la(t,e,i,n,o){var a=0,r=0;null==n&&(n=1/0),null==o&&(o=1/0);var s=0;e.eachChild(function(l,u){var h,c,d=l.position,f=l.getBoundingRect(),p=e.childAt(u+1),g=p&&p.getBoundingRect();if("horizontal"===t){var m=f.width+(g?-g.x+f.x:0);(h=a+m)>n||l.newline?(a=0,h=m,r+=s+i,s=f.height):s=Math.max(s,f.height)}else{var v=f.height+(g?-g.y+f.y:0);(c=r+v)>o||l.newline?(a+=s+i,r=0,c=v,s=f.width):s=Math.max(s,f.width)}l.newline||(d[0]=a,d[1]=r,"horizontal"===t?a=h+i:r=c+i)})}function ua(t,e,i){var n=e.width,o=e.height,a=Bo(t.x,n),r=Bo(t.y,o),s=Bo(t.x2,n),l=Bo(t.y2,o);return(isNaN(a)||isNaN(parseFloat(t.x)))&&(a=0),(isNaN(s)||isNaN(parseFloat(t.x2)))&&(s=n),(isNaN(r)||isNaN(parseFloat(t.y)))&&(r=0),(isNaN(l)||isNaN(parseFloat(t.y2)))&&(l=o),i=YM(i||0),{width:Math.max(s-a-i[1]-i[3],0),height:Math.max(l-r-i[0]-i[2],0)}}function ha(t,e,i){i=YM(i||0);var n=e.width,o=e.height,a=Bo(t.left,n),r=Bo(t.top,o),s=Bo(t.right,n),l=Bo(t.bottom,o),u=Bo(t.width,n),h=Bo(t.height,o),c=i[2]+i[0],d=i[1]+i[3],f=t.aspect;switch(isNaN(u)&&(u=n-s-d-a),isNaN(h)&&(h=o-l-c-r),null!=f&&(isNaN(u)&&isNaN(h)&&(f>n/o?u=.8*n:h=.8*o),isNaN(u)&&(u=f*h),isNaN(h)&&(h=u/f)),isNaN(a)&&(a=n-s-u-d),isNaN(r)&&(r=o-l-h-c),t.left||t.right){case"center":a=n/2-u/2-i[3];break;case"right":a=n-u-d}switch(t.top||t.bottom){case"middle":case"center":r=o/2-h/2-i[0];break;case"bottom":r=o-h-c}a=a||0,r=r||0,isNaN(u)&&(u=n-d-a-(s||0)),isNaN(h)&&(h=o-c-r-(l||0));var p=new de(a+i[3],r+i[0],u,h);return p.margin=i,p}function ca(t,e,i,n,o){var a=!o||!o.hv||o.hv[0],s=!o||!o.hv||o.hv[1],l=o&&o.boundingMode||"all";if(a||s){var u;if("raw"===l)u="group"===t.type?new de(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(u=t.getBoundingRect(),t.needLocalTransform()){var h=t.getLocalTransform();(u=u.clone()).applyTransform(h)}e=ha(r({width:u.width,height:u.height},e),i,n);var c=t.position,d=a?e.x-u.x:0,f=s?e.y-u.y:0;t.attr("position","raw"===l?[d,f]:[c[0]+d,c[1]+f])}}function da(t,e){return null!=t[oI[e][0]]||null!=t[oI[e][1]]&&null!=t[oI[e][2]]}function fa(t,e,i){function n(i,n){var r={},l=0,u={},h=0;if(iI(i,function(e){u[e]=t[e]}),iI(i,function(t){o(e,t)&&(r[t]=u[t]=e[t]),a(r,t)&&l++,a(u,t)&&h++}),s[n])return a(e,i[1])?u[i[2]]=null:a(e,i[2])&&(u[i[1]]=null),u;if(2!==h&&l){if(l>=2)return r;for(var c=0;ce)return t[n];return t[i-1]}function va(t){var e=t.get("coordinateSystem"),i={coordSysName:e,coordSysDims:[],axisMap:R(),categoryAxisMap:R()},n=dI[e];if(n)return n(t,i,i.axisMap,i.categoryAxisMap),i}function ya(t){return"category"===t.get("type")}function xa(t){this.fromDataset=t.fromDataset,this.data=t.data||(t.sourceFormat===mI?{}:[]),this.sourceFormat=t.sourceFormat||vI,this.seriesLayoutBy=t.seriesLayoutBy||xI,this.dimensionsDefine=t.dimensionsDefine,this.encodeDefine=t.encodeDefine&&R(t.encodeDefine),this.startIndex=t.startIndex||0,this.dimensionsDetectCount=t.dimensionsDetectCount}function _a(t){var e=t.option.source,i=vI;if(S(e))i=yI;else if(y(e)){0===e.length&&(i=pI);for(var n=0,o=e.length;n=e:"max"===i?t<=e:t===e}function Ua(t,e){return t.join(",")===e.join(",")}function Xa(t,e){TI(e=e||{},function(e,i){if(null!=e){var n=t[i];if(sI.hasClass(i)){e=Di(e);var o=Pi(n=Di(n),e);t[i]=DI(o,function(t){return t.option&&t.exist?CI(t.exist,t.option,!0):t.exist||t.option})}else t[i]=CI(n,e,!0)}})}function ja(t){var e=t&&t.itemStyle;if(e)for(var i=0,o=NI.length;i=0;p--){var g=t[p];if(s||(d=g.data.rawIndexOf(g.stackedByDimension,c)),d>=0){var m=g.data.getByRawIndex(g.stackResultDimension,d);if(h>=0&&m>0||h<=0&&m<0){h+=m,f=m;break}}}return n[0]=h,n[1]=f,n});r.hostModel.setData(l),e.data=l})}function ar(t,e){xa.isInstance(t)||(t=xa.seriesDataToSource(t)),this._source=t;var i=this._data=t.data,n=t.sourceFormat;n===yI&&(this._offset=0,this._dimSize=e,this._data=i),a(this,VI[n===pI?n+"_"+t.seriesLayoutBy:n])}function rr(){return this._data.length}function sr(t){return this._data[t]}function lr(t){for(var e=0;ee.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function Sr(t,e){d(t.CHANGABLE_METHODS,function(i){t.wrapMethod(i,v(Mr,e))})}function Mr(t){var e=Ir(t);e&&e.setOutputEnd(this.count())}function Ir(t){var e=(t.ecModel||{}).scheduler,i=e&&e.getPipeline(t.uid);if(i){var n=i.currentTask;if(n){var o=n.agentStubMap;o&&(n=o.get(t.uid))}return n}}function Tr(){this.group=new tb,this.uid=Eo("viewChart"),this.renderTask=pr({plan:Cr,reset:Lr}),this.renderTask.context={view:this}}function Ar(t,e){if(t&&(t.trigger(e),"group"===t.type))for(var i=0;i=0?n():c=setTimeout(n,-a),u=o};return d.clear=function(){c&&(clearTimeout(c),c=null)},d.debounceNextCall=function(t){l=t},d}function Pr(t,e,i,n){var o=t[e];if(o){var a=o[eT]||o,r=o[nT];if(o[iT]!==i||r!==n){if(null==i||!n)return t[e]=a;(o=t[e]=kr(a,i,"debounce"===n))[eT]=a,o[nT]=n,o[iT]=i}return o}}function Nr(t,e){var i=t[e];i&&i[eT]&&(t[e]=i[eT])}function Or(t,e,i,n){this.ecInstance=t,this.api=e,this.unfinished;var i=this._dataProcessorHandlers=i.slice(),n=this._visualHandlers=n.slice();this._allHandlers=i.concat(n),this._stageTaskMap=R()}function Er(t,e,i,n,o){function a(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}o=o||{};var r;d(e,function(e,s){if(!o.visualType||o.visualType===e.visualType){var l=t._stageTaskMap.get(e.uid),u=l.seriesTaskMap,h=l.overallTask;if(h){var c,d=h.agentStubMap;d.each(function(t){a(o,t)&&(t.dirty(),c=!0)}),c&&h.dirty(),uT(h,n);var f=t.getPerformArgs(h,o.block);d.each(function(t){t.perform(f)}),r|=h.perform(f)}else u&&u.each(function(s,l){a(o,s)&&s.dirty();var u=t.getPerformArgs(s,o.block);u.skip=!e.performRawSeries&&i.isSeriesFiltered(s.context.model),uT(s,n),r|=s.perform(u)})}}),t.unfinished|=r}function Rr(t,e,i,n,o){function a(i){var a=i.uid,s=r.get(a)||r.set(a,pr({plan:Wr,reset:Hr,count:Ur}));s.context={model:i,ecModel:n,api:o,useClearVisual:e.isVisual&&!e.isLayout,plan:e.plan,reset:e.reset,scheduler:t},Xr(t,i,s)}var r=i.seriesTaskMap||(i.seriesTaskMap=R()),s=e.seriesType,l=e.getTargetSeries;e.createOnAllSeries?n.eachRawSeries(a):s?n.eachRawSeriesByType(s,a):l&&l(n,o).each(a);var u=t._pipelineMap;r.each(function(t,e){u.get(e)||(t.dispose(),r.removeKey(e))})}function zr(t,e,i,n,o){function a(e){var i=e.uid,n=s.get(i);n||(n=s.set(i,pr({reset:Vr,onDirty:Fr})),r.dirty()),n.context={model:e,overallProgress:h,modifyOutputEnd:c},n.agent=r,n.__block=h,Xr(t,e,n)}var r=i.overallTask=i.overallTask||pr({reset:Br});r.context={ecModel:n,api:o,overallReset:e.overallReset,scheduler:t};var s=r.agentStubMap=r.agentStubMap||R(),l=e.seriesType,u=e.getTargetSeries,h=!0,c=e.modifyOutputEnd;l?n.eachRawSeriesByType(l,a):u?u(n,o).each(a):(h=!1,d(n.getSeries(),a));var f=t._pipelineMap;s.each(function(t,e){f.get(e)||(t.dispose(),r.dirty(),s.removeKey(e))})}function Br(t){t.overallReset(t.ecModel,t.api,t.payload)}function Vr(t,e){return t.overallProgress&&Gr}function Gr(){this.agent.dirty(),this.getDownstream().dirty()}function Fr(){this.agent&&this.agent.dirty()}function Wr(t){return t.plan&&t.plan(t.model,t.ecModel,t.api,t.payload)}function Hr(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=Di(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?f(e,function(t,e){return Zr(e)}):hT}function Zr(t){return function(e,i){var n=i.data,o=i.resetDefines[t];if(o&&o.dataEach)for(var a=e.start;a0?parseInt(n,10)/100:n?parseFloat(n):0;var o=i.getAttribute("stop-color")||"#000000";e.addColorStop(n,o)}i=i.nextSibling}}function Jr(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),r(e.__inheritedStyle,t.__inheritedStyle))}function Qr(t){for(var e=P(t).split(xT),i=[],n=0;n0;a-=2){var r=o[a],s=o[a-1];switch(n=n||xt(),s){case"translate":r=P(r).split(xT),St(n,n,[parseFloat(r[0]),parseFloat(r[1]||0)]);break;case"scale":r=P(r).split(xT),It(n,n,[parseFloat(r[0]),parseFloat(r[1]||r[0])]);break;case"rotate":r=P(r).split(xT),Mt(n,n,parseFloat(r[0]));break;case"skew":r=P(r).split(xT),console.warn("Skew transform is not supported yet");break;case"matrix":r=P(r).split(xT);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)}function ns(t){var e=t.getAttribute("style"),i={};if(!e)return i;var n={};IT.lastIndex=0;for(var o;null!=(o=IT.exec(e));)n[o[1]]=o[2];for(var a in bT)bT.hasOwnProperty(a)&&null!=n[a]&&(i[bT[a]]=n[a]);return i}function os(t,e,i){var n=e/t.width,o=i/t.height,a=Math.min(n,o);return{scale:[a,a],position:[-(t.x+t.width/2)*a+e/2,-(t.y+t.height/2)*a+i/2]}}function as(t,e){return(new Kr).parse(t,e)}function rs(t){return function(e,i,n){e=e&&e.toLowerCase(),fw.prototype[t].call(this,e,i,n)}}function ss(){fw.call(this)}function ls(t,e,n){function o(t,e){return t.__prio-e.__prio}n=n||{},"string"==typeof e&&(e=KT[e]),this.id,this.group,this._dom=t;var a=this._zr=Ii(t,{renderer:n.renderer||"canvas",devicePixelRatio:n.devicePixelRatio,width:n.width,height:n.height});this._throttledZrFlush=kr(m(a.flush,a),17),(e=i(e))&&zI(e,!0),this._theme=e,this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._coordSysMgr=new Ga;var r=this._api=Ts(this);_e(qT,o),_e(XT,o),this._scheduler=new Or(this,r,XT,qT),fw.call(this,this._ecEventProcessor=new As),this._messageCenter=new ss,this._initEvents(),this.resize=m(this.resize,this),this._pendingActions=[],a.animation.on("frame",this._onframe,this),ms(a,this),N(this)}function us(t,e,i){var n,o=this._model,a=this._coordSysMgr.getCoordinateSystems();e=Vi(o,e);for(var r=0;re.get("hoverLayerThreshold")&&!U_.node&&i.traverse(function(t){t.isGroup||(t.useHoverLayer=!0)})}function Ms(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)})})}function Is(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 Ts(t){var e=t._coordSysMgr;return a(new Va(t),{getCoordinateSystems:m(e.getCoordinateSystems,e),getComponentByElement:function(e){for(;e;){var i=e.__ecComponentInfo;if(null!=i)return t._model.getComponent(i.mainType,i.index);e=e.parent}}})}function As(){this.eventInfo}function Ds(t){function e(t,e){for(var n=0;n65535?uA:cA}function $s(t){var e=t.constructor;return e===Array?t.slice():new e(t)}function Js(t,e){d(dA.concat(e.__wrappedMethods||[]),function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t.__wrappedMethods=e.__wrappedMethods,d(fA,function(n){t[n]=i(e[n])}),t._calculationInfo=a(e._calculationInfo)}function Qs(t,e,i,n,o){var a=lA[e.type],r=n-1,s=e.name,l=t[s][r];if(l&&l.length=0?this._indices[t]:-1}function ol(t,e){var i=t._idList[e];return null==i&&(i=el(t,t._idDimIdx,e)),null==i&&(i=sA+e),i}function al(t){return y(t)||(t=[t]),t}function rl(t,e){var i=t.dimensions,n=new pA(f(i,t.getDimensionInfo,t),t.hostModel);Js(n,t);for(var o=n._storage={},a=t._storage,r=0;r=0?(o[s]=sl(a[s]),n._rawExtent[s]=ll(),n._extent[s]=null):o[s]=a[s])}return n}function sl(t){for(var e=new Array(t.length),i=0;in&&(r=o.interval=n);var s=o.intervalPrecision=Sl(r);return Il(o.niceTickExtent=[wA(Math.ceil(t[0]/r)*r,s),wA(Math.floor(t[1]/r)*r,s)],t),o}function Sl(t){return Wo(t)+2}function Ml(t,e,i){t[e]=Math.max(Math.min(t[e],i[1]),i[0])}function Il(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),Ml(t,0,e),Ml(t,1,e),t[0]>t[1]&&(t[0]=t[1])}function Tl(t,e,i,n){var o=[];if(!t)return o;e[0]1e4)return[];return e[1]>(o.length?o[o.length-1]:i[1])&&o.push(e[1]),o}function Al(t){return t.get("stack")||MA+t.seriesIndex}function Dl(t){return t.dim+t.index}function Cl(t){var e=[],i=t.axis;if("category"===i.type){for(var n=i.getBandWidth(),o=0;o=0?"p":"n",b=m;p&&(o[r][_]||(o[r][_]={p:m,n:m}),b=o[r][_][w]);var S,M,I,T;if(g)S=b,M=(A=i.dataToPoint([x,_]))[1]+l,I=A[0]-m,T=u,Math.abs(I)a[1]?(n=a[1],o=a[0]):(n=a[0],o=a[1]);var r=e.toGlobalCoord(e.dataToCoord(0));return ro&&(r=o),r}function Bl(t,e){return RA(t,EA(e))}function Vl(t,e){var i,n,o,a=t.type,r=e.getMin(),s=e.getMax(),l=null!=r,u=null!=s,h=t.getExtent();"ordinal"===a?i=e.getCategories().length:(y(n=e.get("boundaryGap"))||(n=[n||0,n||0]),"boolean"==typeof n[0]&&(n=[0,0]),n[0]=Bo(n[0],1),n[1]=Bo(n[1],1),o=h[1]-h[0]||Math.abs(h[0])),null==r&&(r="ordinal"===a?i?0:NaN:h[0]-n[0]*o),null==s&&(s="ordinal"===a?i?i-1:NaN:h[1]+n[1]*o),"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(I(r)||I(s)||"ordinal"===a&&!t.getOrdinalMeta().categories.length),e.getNeedCrossZero()&&(r>0&&s>0&&!l&&(r=0),r<0&&s<0&&!u&&(s=0));var c=e.ecModel;if(c&&"time"===a){var f,p=Ll("bar",c);if(d(p,function(t){f|=t.getBaseAxis()===e.axis}),f){var g=kl(p),m=Gl(r,s,e,g);r=m.min,s=m.max}}return[r,s]}function Gl(t,e,i,n){var o=i.axis.getExtent(),a=o[1]-o[0],r=Nl(n,i.axis);if(void 0===r)return{min:t,max:e};var s=1/0;d(r,function(t){s=Math.min(t.offset,s)});var l=-1/0;d(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)/a)-h;return e+=c*(l/u),t-=c*(s/u),{min:t,max:e}}function Fl(t,e){var i=Vl(t,e),n=null!=e.getMin(),o=null!=e.getMax(),a=e.get("splitNumber");"log"===t.type&&(t.base=e.get("logBase"));var r=t.type;t.setExtent(i[0],i[1]),t.niceExtent({splitNumber:a,fixMin:n,fixMax:o,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 Wl(t,e){if(e=e||t.get("type"))switch(e){case"category":return new _A(t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),[1/0,-1/0]);case"value":return new SA;default:return(yl.getClass(e)||SA).create(t)}}function Hl(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(i>0&&n>0||i<0&&n<0)}function Zl(t){var e=t.getLabelModel().get("formatter"),i="category"===t.type?t.scale.getExtent()[0]:null;return"string"==typeof e?e=function(e){return function(i){return i=t.scale.getLabel(i),e.replace("{value}",null!=i?i:"")}}(e):"function"==typeof e?function(n,o){return null!=i&&(o=n-i),e(Ul(t,n),o)}:function(e){return t.scale.getLabel(e)}}function Ul(t,e){return"category"===t.type?t.scale.getLabel(e):e}function Xl(t){var e=t.model,i=t.scale;if(e.get("axisLabel.show")&&!i.isBlank()){var n,o,a="category"===t.type,r=i.getExtent();o=a?i.count():(n=i.getTicks()).length;var s,l=t.getLabelModel(),u=Zl(t),h=1;o>40&&(h=Math.ceil(o/40));for(var c=0;c>1^-(1&s),l=l>>1^-(1&l),o=s+=o,a=l+=a,n.push([s/i,l/i])}return n}function nu(t){return"category"===t.type?au(t):lu(t)}function ou(t,e){return"category"===t.type?su(t,e):{ticks:t.scale.getTicks()}}function au(t){var e=t.getLabelModel(),i=ru(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:i.labelCategoryInterval}:i}function ru(t,e){var i=uu(t,"labels"),n=Yl(e),o=hu(i,n);if(o)return o;var a,r;return a=x(n)?mu(t,n):gu(t,r="auto"===n?du(t):n),cu(i,n,{labels:a,labelCategoryInterval:r})}function su(t,e){var i=uu(t,"ticks"),n=Yl(e),o=hu(i,n);if(o)return o;var a,r;if(e.get("show")&&!t.scale.isBlank()||(a=[]),x(n))a=mu(t,n,!0);else if("auto"===n){var s=ru(t,t.getLabelModel());r=s.labelCategoryInterval,a=f(s.labels,function(t){return t.tickValue})}else a=gu(t,r=n,!0);return cu(i,n,{ticks:a,tickCategoryInterval:r})}function lu(t){var e=t.scale.getTicks(),i=Zl(t);return{labels:f(e,function(e,n){return{formattedLabel:i(e,n),rawLabel:t.scale.getLabel(e),tickValue:e}})}}function uu(t,e){return tD(t)[e]||(tD(t)[e]=[])}function hu(t,e){for(var i=0;i40&&(s=Math.max(1,Math.floor(r/40)));for(var l=a[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<=a[1];l+=s){var p=0,g=0,m=ke(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))),_=tD(t.model),w=_.lastAutoInterval,b=_.lastTickCount;return null!=w&&null!=b&&Math.abs(w-x)<=1&&Math.abs(b-r)<=1&&w>x?x=w:(_.lastTickCount=r,_.lastAutoInterval=x),x}function pu(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()}}function gu(t,e,i){function n(t){l.push(i?t:{formattedLabel:o(t),rawLabel:a.getLabel(t),tickValue:t})}var o=Zl(t),a=t.scale,r=a.getExtent(),s=t.getLabelModel(),l=[],u=Math.max((e||0)+1,1),h=r[0],c=a.count();0!==h&&u>1&&c/u>2&&(h=Math.round(Math.ceil(h/u)*u));var d=ql(t),f=s.get("showMinLabel")||d,p=s.get("showMaxLabel")||d;f&&h!==r[0]&&n(r[0]);for(var g=h;g<=r[1];g+=u)n(g);return p&&g!==r[1]&&n(r[1]),l}function mu(t,e,i){var n=t.scale,o=Zl(t),a=[];return d(n.getTicks(),function(t){var r=n.getLabel(t);e(t,r)&&a.push(i?t:{formattedLabel:o(t),rawLabel:r,tickValue:t})}),a}function vu(t,e){var i=(t[1]-t[0])/e/2;t[0]+=i,t[1]-=i}function yu(t,e,i,n,o){function a(t,e){return h?t>e:t0&&(t.coord-=u/(2*(e+1)))}),s={coord:e[r-1].coord+u},e.push(s)}var h=l[0]>l[1];a(e[0].coord,l[0])&&(o?e[0].coord=l[0]:e.shift()),o&&a(l[0],e[0].coord)&&e.unshift({coord:l[0]}),a(l[1],s.coord)&&(o?s.coord=l[1]:e.pop()),o&&a(s.coord,l[1])&&e.push({coord:l[1]})}}function xu(t,e){var i=t.mapDimension("defaultedLabel",!0),n=i.length;if(1===n)return dr(t,e,i[0]);if(n){for(var o=[],a=0;a0?i=n[0]:n[1]<0&&(i=n[1]),i}function Nu(t,e,i,n){var o=NaN;t.stacked&&(o=i.get(i.getCalculationInfo("stackedOverDimension"),n)),isNaN(o)&&(o=t.valueStart);var a=t.baseDataOffset,r=[];return r[a]=i.get(t.baseDim,n),r[1-a]=o,e.dataToPoint(r)}function Ou(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}function Eu(t){return isNaN(t[0])||isNaN(t[1])}function Ru(t,e,i,n,o,a,r,s,l,u,h){return"none"!==u&&u?zu.apply(this,arguments):Bu.apply(this,arguments)}function zu(t,e,i,n,o,a,r,s,l,u,h){for(var c=0,d=i,f=0;f=o||d<0)break;if(Eu(p)){if(h){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]);else if(l>0){var g=e[c],m="y"===u?1:0,v=(p[m]-g[m])*l;vD(xD,g),xD[m]=g[m]+v,vD(_D,p),_D[m]=p[m]-v,t.bezierCurveTo(xD[0],xD[1],_D[0],_D[1],p[0],p[1])}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Bu(t,e,i,n,o,a,r,s,l,u,h){for(var c=0,d=i,f=0;f=o||d<0)break;if(Eu(p)){if(h){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]),vD(xD,p);else if(l>0){var g=d+a,m=e[g];if(h)for(;m&&Eu(e[g]);)m=e[g+=a];var v=.5,y=e[c];if(!(m=e[g])||Eu(m))vD(_D,p);else{Eu(m)&&!h&&(m=p),U(yD,m,y);var x,_;if("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=uw(p,y),_=uw(p,m);mD(_D,p,yD,-l*(1-(v=_/(_+x))))}pD(xD,xD,s),gD(xD,xD,r),pD(_D,_D,s),gD(_D,_D,r),t.bezierCurveTo(xD[0],xD[1],_D[0],_D[1],p[0],p[1]),mD(xD,p,yD,l*v)}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Vu(t,e){var i=[1/0,1/0],n=[-1/0,-1/0];if(e)for(var o=0;on[0]&&(n[0]=a[0]),a[1]>n[1]&&(n[1]=a[1])}return{min:e?i:n,max:e?n:i}}function Gu(t,e){if(t.length===e.length){for(var i=0;ie[0]?1:-1;e[0]+=n*i,e[1]-=n*i}return e}function Hu(t,e,i){if(!i.valueDim)return[];for(var n=[],o=0,a=e.count();oa[1]&&a.reverse();var r=o.getExtent(),s=Math.PI/180;i&&(a[0]-=.5,a[1]+=.5);var l=new uM({shape:{cx:Vo(t.cx,1),cy:Vo(t.cy,1),r0:Vo(a[0],1),r:Vo(a[1],1),startAngle:-r[0]*s,endAngle:-r[1]*s,clockwise:o.inverse}});return e&&(l.shape.endAngle=-r[0]*s,Io(l,{shape:{endAngle:-r[1]*s}},n)),l}function Xu(t,e,i,n){return"polar"===t.type?Uu(t,e,i,n):Zu(t,e,i,n)}function ju(t,e,i){for(var n=e.getBaseAxis(),o="x"===n.dim||"radius"===n.dim?0:1,a=[],r=0;r=0;a--){var r=i[a].dimension,s=t.dimensions[r],l=t.getDimensionInfo(s);if("x"===(n=l&&l.coordDim)||"y"===n){o=i[a];break}}if(o){var u=e.getAxis(n),h=f(o.stops,function(t){return{coord:u.toGlobalCoord(u.dataToCoord(t.value)),color:t.color}}),c=h.length,p=o.outerColors.slice();c&&h[0].coord>h[c-1].coord&&(h.reverse(),p.reverse());var g=h[0].coord-10,m=h[c-1].coord+10,v=m-g;if(v<.001)return"transparent";d(h,function(t){t.offset=(t.coord-g)/v}),h.push({offset:c?h[c-1].offset:.5,color:p[1]||"transparent"}),h.unshift({offset:c?h[0].offset:.5,color:p[0]||"transparent"});var y=new IM(0,0,0,0,h,!0);return y[n]=g,y[n+"2"]=m,y}}}function qu(t,e,i){var n=t.get("showAllSymbol"),o="auto"===n;if(!n||o){var a=i.getAxesByScale("ordinal")[0];if(a&&(!o||!Ku(a,e))){var r=e.mapDimension(a.dim),s={};return d(a.getViewLabels(),function(t){s[t.tickValue]=1}),function(t){return!s.hasOwnProperty(e.get(r,t))}}}}function Ku(t,e){var i=t.getExtent(),n=Math.abs(i[1]-i[0])/t.scale.count();isNaN(n)&&(n=0);for(var o=e.count(),a=Math.max(1,Math.round(o/5)),r=0;rn)return!1;return!0}function $u(t){return this._axes[t]}function Ju(t){AD.call(this,t)}function Qu(t,e){return e.type||(e.data?"category":"value")}function th(t,e,i){return t.getCoordSysModel()===e}function eh(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this.model=t}function ih(t,e,i,n){function o(t){return t.dim+"_"+t.index}i.getAxesOnZeroOf=function(){return a?[a]:[]};var a,r=t[e],s=i.model,l=s.get("axisLine.onZero"),u=s.get("axisLine.onZeroAxisIndex");if(l){if(null!=u)nh(r[u])&&(a=r[u]);else for(var h in r)if(r.hasOwnProperty(h)&&nh(r[h])&&!n[o(r[h])]){a=r[h];break}a&&(n[o(a)]=!0)}}function nh(t){return t&&"category"!==t.type&&"time"!==t.type&&Hl(t)}function oh(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}}function ah(t,e){return f(RD,function(e){return t.getReferringComponents(e)[0]})}function rh(t){return"cartesian2d"===t.get("coordinateSystem")}function sh(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e}function lh(t,e,i,n){var o,a,r=Uo(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;return Xo(r-zD/2)?(a=l?"bottom":"top",o="center"):Xo(r-1.5*zD)?(a=l?"top":"bottom",o="center"):(a="middle",o=r<1.5*zD&&r>zD/2?l?"left":"right":l?"right":"left"),{rotation:r,textAlign:o,textVerticalAlign:a}}function uh(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}function hh(t,e,i){if(!ql(t.axis)){var n=t.get("axisLabel.showMinLabel"),o=t.get("axisLabel.showMaxLabel");e=e||[],i=i||[];var a=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?(ch(a),ch(u)):dh(a,r)&&(n?(ch(r),ch(h)):(ch(a),ch(u))),!1===o?(ch(s),ch(c)):dh(l,s)&&(o?(ch(l),ch(d)):(ch(s),ch(c)))}}function ch(t){t&&(t.ignore=!0)}function dh(t,e,i){var n=t&&t.getBoundingRect().clone(),o=e&&e.getBoundingRect().clone();if(n&&o){var a=_t([]);return Mt(a,a,-t.rotation),n.applyTransform(bt([],a,t.getLocalTransform())),o.applyTransform(bt([],a,e.getLocalTransform())),n.intersect(o)}}function fh(t){return"middle"===t||"center"===t}function ph(t,e,i){var n=e.axis;if(e.get("axisTick.show")&&!n.scale.isBlank()){for(var o=e.getModel("axisTick"),a=o.getModel("lineStyle"),s=o.get("length"),l=n.getTicksCoords(),u=[],h=[],c=t._transform,d=[],f=0;f=0||t===e}function bh(t){var e=Sh(t);if(e){var i=e.axisPointerModel,n=e.axis.scale,o=i.option,a=i.get("status"),r=i.get("value");null!=r&&(r=n.parse(r));var s=Ih(i);null==a&&(o.status=s?"show":"hide");var l=n.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==r||r>l[1])&&(r=l[1]),r0?"bottom":"top":o.width>0?"left":"right";l||Lh(t.style,d,n,u,a,i,p),co(t,d)}function Eh(t,e){var i=t.get($D)||0;return Math.min(i,Math.abs(e.width),Math.abs(e.height))}function Rh(t,e,i){var n=t.getData(),o=[],a=n.getLayout("valueAxisHorizontal")?1:0;o[1-a]=n.getLayout("valueAxisStart");var r=new tC({shape:{points:n.getLayout("largePoints")},incremental:!!i,__startPoint:o,__valueIdx:a});e.add(r),zh(r,t,n)}function zh(t,e,i){var n=i.getVisual("borderColor")||i.getVisual("color"),o=e.getModel("itemStyle").getItemStyle(["color","borderColor"]);t.useStyle(o),t.style.fill=null,t.style.stroke=n,t.style.lineWidth=i.getLayout("barWidth")}function Bh(t,e,i,n){var o=e.getData(),a=this.dataIndex,r=o.getName(a),s=e.get("selectedOffset");n.dispatchAction({type:"pieToggleSelect",from:t,name:r,seriesId:e.id}),o.each(function(t){Vh(o.getItemGraphicEl(t),o.getItemLayout(t),e.isSelected(o.getName(t)),s,i)})}function Vh(t,e,i,n,o){var a=(e.startAngle+e.endAngle)/2,r=Math.cos(a),s=Math.sin(a),l=i?n:0,u=[r*l,s*l];o?t.animate().when(200,{position:u}).start("bounceOut"):t.attr("position",u)}function Gh(t,e){function i(){a.ignore=a.hoverIgnore,r.ignore=r.hoverIgnore}function n(){a.ignore=a.normalIgnore,r.ignore=r.normalIgnore}tb.call(this);var o=new uM({z2:2}),a=new pM,r=new aM;this.add(o),this.add(a),this.add(r),this.updateData(t,e,!0),this.on("emphasis",i).on("normal",n).on("mouseover",i).on("mouseout",n)}function Fh(t,e,i,n,o,a,r){function s(e,i){for(var n=e;n>=0&&(t[n].y-=i,!(n>0&&t[n].y>t[n-1].y+t[n-1].height));n--);}function l(t,e,i,n,o,a){for(var r=e?Number.MAX_VALUE:0,s=0,l=t.length;s=r&&(d=r-10),!e&&d<=r&&(d=r+10),t[s].x=i+d*a,r=d}}t.sort(function(t,e){return t.y-e.y});for(var u,h=0,c=t.length,d=[],f=[],p=0;pe&&a+1t[a].y+t[a].height)return void s(a,n/2);s(i-1,n/2)}(p,c,-u),h=t[p].y+t[p].height;r-h<0&&s(c-1,h-r);for(p=0;p=i?f.push(t[p]):d.push(t[p]);l(d,!1,e,i,n,o),l(f,!0,e,i,n,o)}function Wh(t,e,i,n,o,a){for(var r=[],s=[],l=0;l3?1.4:o>1?1.2:1.1;uc(this,"zoom","zoomOnMouseWheel",t,{scale:n>0?s:1/s,originX:a,originY:r})}if(i){var l=Math.abs(n);uc(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(n>0?1:-1)*(l>3?.4:l>1?.15:.05),originX:a,originY:r})}}}function lc(t){ec(this._zr,"globalPan")||uc(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY})}function uc(t,e,i,n,o){t.pointerChecker&&t.pointerChecker(n,o.originX,o.originY)&&(mw(n.event),hc(t,e,i,n,o))}function hc(t,e,i,n,o){o.isAvailableBehavior=m(cc,null,i,n),t.trigger(e,o)}function cc(t,e,i){var n=i[t];return!t||n&&(!_(n)||e.event[n+"Key"])}function dc(t,e,i){var n=t.target,o=n.position;o[0]+=e,o[1]+=i,n.dirty()}function fc(t,e,i,n){var o=t.target,a=t.zoomLimit,r=o.position,s=o.scale,l=t.zoom=t.zoom||1;if(l*=e,a){var u=a.min||0,h=a.max||1/0;l=Math.max(Math.min(h,l),u)}var c=l/t.zoom;t.zoom=l,r[0]-=(i-r[0])*(c-1),r[1]-=(n-r[1])*(c-1),s[0]*=c,s[1]*=c,o.dirty()}function pc(t,e,i){var n=e.getComponentByElement(t.topTarget),o=n&&n.coordinateSystem;return n&&n!==i&&!NC[n.mainType]&&o&&o.model!==i}function gc(t,e){var i=t.getItemStyle(),n=t.get("areaColor");return null!=n&&(i.fill=n),i}function mc(t,e,i,n,o){i.off("click"),i.off("mousedown"),e.get("selectedMode")&&(i.on("mousedown",function(){t._mouseDownFlag=!0}),i.on("click",function(a){if(t._mouseDownFlag){t._mouseDownFlag=!1;for(var r=a.target;!r.__regions;)r=r.parent;if(r){var s={type:("geo"===e.mainType?"geo":"map")+"ToggleSelect",batch:f(r.__regions,function(t){return{name:t.name,from:o.uid}})};s[e.mainType+"Id"]=e.id,n.dispatchAction(s),vc(e,i)}}}))}function vc(t,e){e.eachChild(function(e){d(e.__regions,function(i){e.trigger(t.isSelected(i.name)?"emphasis":"normal")})})}function yc(t,e){var i=new tb;this.uid=Eo("ec_map_draw"),this._controller=new nc(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 tb),i.add(this._backgroundGroup=new tb)}function xc(t){var e=this[OC];e&&e.recordVersion===this[EC]&&_c(e,t)}function _c(t,e){var i=t.circle,n=t.labelModel,o=t.hoverLabelModel,a=t.emphasisText,r=t.normalText;e?(i.style.extendFrom(go({},o,{text:o.get("show")?a:null},{isRectText:!0,useInsideStyle:!1},!0)),i.__mapOriginalZ2=i.z2,i.z2+=PM):(go(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 wc(t,e,i){var n=t.getZoom(),o=t.getCenter(),a=e.zoom,r=t.dataToPoint(o);if(null!=e.dx&&null!=e.dy){r[0]-=e.dx,r[1]-=e.dy;o=t.pointToData(r);t.setCenter(o)}if(null!=a){if(i){var s=i.min||0,l=i.max||1/0;a=Math.max(Math.min(n*a,l),s)/n}t.scale[0]*=a,t.scale[1]*=a;var u=t.position,h=(e.originX-u[0])*(a-1),c=(e.originY-u[1])*(a-1);u[0]-=h,u[1]-=c,t.updateTransform();o=t.pointToData(r);t.setCenter(o),t.setZoom(a*n)}return{center:t.getCenter(),zoom:t.getZoom()}}function bc(){Tw.call(this)}function Sc(t){this.name=t,this.zoomLimit,Tw.call(this),this._roamTransformable=new bc,this._rawTransformable=new bc,this._center,this._zoom}function Mc(t,e,i,n){var o=i.seriesModel,a=o?o.coordinateSystem:null;return a===this?a[t](n):null}function Ic(t,e,i,n){Sc.call(this,t),this.map=e;var o=kC.load(e,i);this._nameCoordMap=o.nameCoordMap,this._regionsMap=o.regionsMap,this._invertLongitute=null==n||n,this.regions=o.regions,this._rect=o.boundingRect}function Tc(t,e,i,n){var o=i.geoModel,a=i.seriesModel,r=o?o.coordinateSystem:a?a.coordinateSystem||(a.getReferringComponents("geo")[0]||{}).coordinateSystem:null;return r===this?r[t](n):null}function Ac(t,e){var i=t.get("boundingCoords");if(null!=i){var n=i[0],o=i[1];isNaN(n[0])||isNaN(n[1])||isNaN(o[0])||isNaN(o[1])||this.setBoundingRect(n[0],n[1],o[0]-n[0],o[1]-n[1])}var a,r=this.getBoundingRect(),s=t.get("layoutCenter"),l=t.get("layoutSize"),u=e.getWidth(),h=e.getHeight(),c=r.width/r.height*this.aspectScale,d=!1;s&&l&&(s=[Bo(s[0],u),Bo(s[1],h)],l=Bo(l,Math.min(u,h)),isNaN(s[0])||isNaN(s[1])||isNaN(l)||(d=!0));if(d){var f={};c>1?(f.width=l,f.height=l/c):(f.height=l,f.width=l*c),f.y=s[1]-f.height/2,f.x=s[0]-f.width/2}else(a=t.getBoxLayoutParams()).aspect=c,f=ha(a,{width:u,height:h});this.setViewRect(f.x,f.y,f.width,f.height),this.setCenter(t.get("center")),this.setZoom(t.get("zoom"))}function Dc(t,e){d(e.get("geoCoord"),function(e,i){t.addGeoCoord(i,e)})}function Cc(t,e){var i={};return d(t,function(t){t.each(t.mapDimension("value"),function(e,n){var o="ec-"+t.getName(n);i[o]=i[o]||[],isNaN(e)||i[o].push(e)})}),t[0].map(t[0].mapDimension("value"),function(n,o){for(var a="ec-"+t[0].getName(o),r=0,s=1/0,l=-1/0,u=i[a].length,h=0;h=0;o--){var a=i[o];a.hierNode={defaultAncestor:null,ancestor:a,prelim:0,modifier:0,change:0,shift:0,i:o,thread:null},n.push(a)}}function Fc(t,e){var i=t.isExpand?t.children:[],n=t.parentNode.children,o=t.hierNode.i?n[t.hierNode.i-1]:null;if(i.length){Xc(t);var a=(i[0].hierNode.prelim+i[i.length-1].hierNode.prelim)/2;o?(t.hierNode.prelim=o.hierNode.prelim+e(t,o),t.hierNode.modifier=t.hierNode.prelim-a):t.hierNode.prelim=a}else o&&(t.hierNode.prelim=o.hierNode.prelim+e(t,o));t.parentNode.hierNode.defaultAncestor=jc(t,o,t.parentNode.hierNode.defaultAncestor||n[0],e)}function Wc(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t.setLayout({x:e},!0),t.hierNode.modifier+=t.parentNode.hierNode.modifier}function Hc(t){return arguments.length?t:Jc}function Zc(t,e){var i={};return t-=Math.PI/2,i.x=e*Math.cos(t),i.y=e*Math.sin(t),i}function Uc(t,e){return ha(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function Xc(t){for(var e=t.children,i=e.length,n=0,o=0;--i>=0;){var a=e[i];a.hierNode.prelim+=n,a.hierNode.modifier+=n,o+=a.hierNode.change,n+=a.hierNode.shift+o}}function jc(t,e,i,n){if(e){for(var o=t,a=t,r=a.parentNode.children[0],s=e,l=o.hierNode.modifier,u=a.hierNode.modifier,h=r.hierNode.modifier,c=s.hierNode.modifier;s=Yc(s),a=qc(a),s&&a;){o=Yc(o),r=qc(r),o.hierNode.ancestor=t;var d=s.hierNode.prelim+c-a.hierNode.prelim-u+n(s,a);d>0&&($c(Kc(s,t,i),t,d),u+=d,l+=d),c+=s.hierNode.modifier,u+=a.hierNode.modifier,l+=o.hierNode.modifier,h+=r.hierNode.modifier}s&&!Yc(o)&&(o.hierNode.thread=s,o.hierNode.modifier+=c-l),a&&!qc(r)&&(r.hierNode.thread=a,r.hierNode.modifier+=u-h,i=t)}return i}function Yc(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1]:t.hierNode.thread}function qc(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierNode.thread}function Kc(t,e,i){return t.hierNode.ancestor.parentNode===e.parentNode?t.hierNode.ancestor:i}function $c(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 Jc(t,e){return t.parentNode===e.parentNode?1:2}function Qc(t,e){var i=t.getItemLayout(e);return i&&!isNaN(i.x)&&!isNaN(i.y)&&"none"!==t.getItemVisual(e,"symbol")}function td(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 ed(t,e,i,n,o,a){var s=!i,l=t.tree.getNodeByDataIndex(e),a=td(l,l.getModel(),a),u=t.tree.root,h=l.parentNode===u?l:l.parentNode||l,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=l.getLayout();s?(i=new _u(t,e,a)).attr("position",[f.x,f.y]):i.updateData(t,e,a),i.__radialOldRawX=i.__radialRawX,i.__radialOldRawY=i.__radialRawY,i.__radialRawX=p.rawX,i.__radialRawY=p.rawY,n.add(i),t.setItemGraphicEl(e,i),Mo(i,{position:[p.x,p.y]},o);var g=i.getSymbolPath();if("radial"===a.layout){var m,v,y=u.children[0],x=y.getLayout(),_=y.children.length;if(p.x===x.x&&!0===l.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.xx.x)||(m-=Math.PI);var b=v?"left":"right";g.setStyle({textPosition:b,textRotation:-m,textOrigin:"center",verticalAlign:"middle"})}if(l.parentNode&&l.parentNode!==u){var S=i.__edge;S||(S=i.__edge=new wM({shape:nd(a,f,f),style:r({opacity:0,strokeNoScale:!0},a.lineStyle)})),Mo(S,{shape:nd(a,d,p),style:{opacity:1}},o),n.add(S)}}function id(t,e,i,n,o,a){for(var r,s=t.tree.getNodeByDataIndex(e),l=t.tree.root,a=td(s,s.getModel(),a),u=s.parentNode===l?s:s.parentNode||s;null==(r=u.getLayout());)u=u.parentNode===l?u:u.parentNode||u;Mo(i,{position:[r.x+1,r.y+1]},o,function(){n.remove(i),t.setItemGraphicEl(e,null)}),i.fadeOut(null,{keepLabel:!0});var h=i.__edge;h&&Mo(h,{shape:nd(a,r,r),style:{opacity:0}},o,function(){n.remove(h)})}function nd(t,e,i){var n,o,a,r,s,l,u,h,c=t.orient;if("radial"===t.layout){s=e.rawX,u=e.rawY,l=i.rawX,h=i.rawY;var d=Zc(s,u),f=Zc(s,u+(h-u)*t.curvature),p=Zc(l,h+(u-h)*t.curvature),g=Zc(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}}return s=e.x,u=e.y,l=i.x,h=i.y,"LR"!==c&&"RL"!==c||(n=s+(l-s)*t.curvature,o=u,a=l+(s-l)*t.curvature,r=h),"TB"!==c&&"BT"!==c||(n=s,o=u+(h-u)*t.curvature,a=l,r=h+(u-h)*t.curvature),{x1:s,y1:u,x2:l,y2:h,cpx1:n,cpy1:o,cpx2:a,cpy2:r}}function od(t,e,i){for(var n,o=[t],a=[];n=o.pop();)if(a.push(n),n.isExpand){var r=n.children;if(r.length)for(var s=0;s=0;a--)n.push(o[a])}}function rd(t,e){var i=Uc(t,e);t.layoutInfo=i;var n=t.get("layout"),o=0,a=0,r=null;"radial"===n?(o=2*Math.PI,a=Math.min(i.height,i.width)/2,r=Hc(function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth})):(o=i.width,a=i.height,r=Hc());var s=t.getData().tree.root,l=s.children[0];if(l){Gc(s),od(l,Fc,r),s.hierNode.modifier=-l.hierNode.prelim,ad(l,Wc);var u=l,h=l,c=l;ad(l,function(t){var e=t.getLayout().x;eh.getLayout().x&&(h=t),t.depth>c.depth&&(c=t)});var d=u===h?1:r(u,h)/2,f=d-u.getLayout().x,p=0,g=0,m=0,v=0;if("radial"===n)p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),ad(l,function(t){m=(t.getLayout().x+f)*p,v=(t.depth-1)*g;var e=Zc(m,v);t.setLayout({x:e.x,y:e.y,rawX:m,rawY:v},!0)});else{var y=t.getOrient();"RL"===y||"LR"===y?(g=a/(h.getLayout().x+d+f),p=o/(c.depth-1||1),ad(l,function(t){v=(t.getLayout().x+f)*g,m="LR"===y?(t.depth-1)*p:o-(t.depth-1)*p,t.setLayout({x:m,y:v},!0)})):"TB"!==y&&"BT"!==y||(p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),ad(l,function(t){m=(t.getLayout().x+f)*p,v="TB"===y?(t.depth-1)*g:a-(t.depth-1)*g,t.setLayout({x:m,y:v},!0)}))}}}function sd(t,e,i){if(t&&l(e,t.type)>=0){var n=i.getData().tree.root,o=t.targetNode;if("string"==typeof o&&(o=n.getNodeById(o)),o&&n.contains(o))return{node:o};var a=t.targetNodeId;if(null!=a&&(o=n.getNodeById(a)))return{node:o}}}function ld(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function ud(t,e){return l(ld(t),e)>=0}function hd(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}function cd(t){var e=0;d(t.children,function(t){cd(t);var i=t.value;y(i)&&(i=i[0]),e+=i});var i=t.value;y(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),y(t.value)?t.value[0]=i:t.value=i}function dd(t,e){var i=e.get("color");if(i){var n;return d(t=t||[],function(t){var e=new Po(t),i=e.get("color");(e.get("itemStyle.color")||i&&"none"!==i)&&(n=!0)}),n||((t[0]||(t[0]={})).color=i.slice()),t}}function fd(t){this.group=new tb,t.add(this.group)}function pd(t,e,i,n,o,a){var r=[[o?t:t-WC,e],[t+i,e],[t+i,e+n],[o?t:t-WC,e+n]];return!a&&r.splice(2,0,[t+i+WC,e+n/2]),!o&&r.push([t,e+n/2]),r}function gd(t,e,i){t.eventData={componentType:"series",componentSubType:"treemap",componentIndex:e.componentIndex,seriesIndex:e.componentIndex,seriesName:e.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:i&&i.dataIndex,name:i&&i.name},treePathInfo:i&&hd(i,e)}}function md(){var t,e=[],i={};return{add:function(t,n,o,a,r){return _(a)&&(r=a,a=0),!i[t.id]&&(i[t.id]=1,e.push({el:t,target:n,time:o,delay:a,easing:r}),!0)},done:function(e){return t=e,this},start:function(){for(var n=e.length,o=0,a=e.length;o=0;a--)null==i[a]&&(delete n[e[a]],e.pop())}function wd(t,e){var i=t.visual,n=[];w(i)?oL(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]),Cd(t,n)}function bd(t){return{applyVisual:function(e,i,n){e=this.mapValueToVisual(e),n("color",t(i("color"),e))},_doMap:Ad([0,1])}}function Sd(t){var e=this.option.visual;return e[Math.round(zo(t,[0,1],[0,e.length-1],!0))]||{}}function Md(t){return function(e,i,n){n(t,this.mapValueToVisual(e))}}function Id(t){var e=this.option.visual;return e[this.option.loop&&t!==rL?t%e.length:t]}function Td(){return this.option.visual[0]}function Ad(t){return{linear:function(e){return zo(e,t,this.option.visual,!0)},category:Id,piecewise:function(e,i){var n=Dd.call(this,i);return null==n&&(n=zo(e,t,this.option.visual,!0)),n},fixed:Td}}function Dd(t){var e=this.option,i=e.pieceList;if(e.hasSpecialVisual){var n=i[sL.findPieceIndex(t,i)];if(n&&n.visual)return n.visual[this.type]}}function Cd(t,e){return t.visual=e,"color"===t.type&&(t.parsedVisual=f(e,function(t){return Gt(t)})),e}function Ld(t,e,i){return t?e<=i:e=o.length||t===o[t.depth])&&kd(t,Bd(r,h,t,e,g,a),i,n,o,a)})}else l=Nd(h),t.setVisual("color",l)}}function Pd(t,e,i,n){var o=a({},e);return d(["color","colorAlpha","colorSaturation"],function(a){var r=t.get(a,!0);null==r&&i&&(r=i[a]),null==r&&(r=e[a]),null==r&&(r=n.get(a)),null!=r&&(o[a]=r)}),o}function Nd(t){var e=Ed(t,"color");if(e){var i=Ed(t,"colorAlpha"),n=Ed(t,"colorSaturation");return n&&(e=jt(e,null,null,n)),i&&(e=Yt(e,i)),e}}function Od(t,e){return null!=e?jt(e,null,null,t):null}function Ed(t,e){var i=t[e];if(null!=i&&"none"!==i)return i}function Rd(t,e,i,n,o,a){if(a&&a.length){var r=zd(e,"color")||null!=o.color&&"none"!==o.color&&(zd(e,"colorAlpha")||zd(e,"colorSaturation"));if(r){var s=e.get("visualMin"),l=e.get("visualMax"),u=i.dataExtent.slice();null!=s&&su[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 sL(c);return d.__drColorMappingBy=h,d}}}function zd(t,e){var i=t.get(e);return hL(i)&&i.length?{name:e,range:i}:null}function Bd(t,e,i,n,o,r){var s=a({},e);if(o){var l=o.type,u="color"===l&&o.__drColorMappingBy,h="index"===u?n:"id"===u?r.mapIdToIndex(i.getId()):i.getValue(t.get("visualDimension"));s[l]=o.mapValueToVisual(h)}return s}function Vd(t,e,i,n){var o,a;if(!t.isRemoved()){var r=t.getLayout();o=r.width,a=r.height;var s=(f=t.getModel()).get(vL),l=f.get(yL)/2,u=qd(f),h=Math.max(s,u),c=s-l,d=h-l,f=t.getModel();t.setLayout({borderWidth:s,upperHeight:h,upperLabelHeight:u},!0);var p=(o=fL(o-2*c,0))*(a=fL(a-c-d,0)),g=Gd(t,f,p,e,i,n);if(g.length){var m={x:c,y:d,width:o,height:a},v=pL(o,a),y=1/0,x=[];x.area=0;for(var _=0,w=g.length;_=0;l--){var u=o["asc"===n?r-l-1:l].getValue();u/i*es[1]&&(s[1]=e)})}else s=[NaN,NaN];return{sum:n,dataExtent:s}}function Zd(t,e,i){for(var n,o=0,a=1/0,r=0,s=t.length;ro&&(o=n));var l=t.area*t.area,u=e*e*i;return l?fL(u*o/l,l/(u*a)):1/0}function Ud(t,e,i,n,o){var a=e===i.width?0:1,r=1-a,s=["x","y"],l=["width","height"],u=i[s[a]],h=e?t.area/e:0;(o||h>i[l[r]])&&(h=i[l[r]]);for(var c=0,d=t.length;cUM&&(u=UM),a=s}u=0?n+=u:n-=u:p>=0?n-=u:n+=u}return n}function ff(t,e){return t.getVisual("opacity")||t.getModel().get(e)}function pf(t,e,i){var n=t.getGraphicEl(),o=ff(t,e);null!=i&&(null==o&&(o=1),o*=i),n.downplay&&n.downplay(),n.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",o)})}function gf(t,e){var i=ff(t,e),n=t.getGraphicEl();n.highlight&&n.highlight(),n.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",i)})}function mf(t){return t instanceof Array||(t=[t,t]),t}function vf(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")])}),yf(i)}}function yf(t){t.eachEdge(function(t){var e=t.getModel().get("lineStyle.curveness")||0,i=F(t.node1.getLayout()),n=F(t.node2.getLayout()),o=[i,n];+e&&o.push([(i[0]+n[0])/2-(i[1]-n[1])*e,(i[1]+n[1])/2-(n[0]-i[0])*e]),t.setLayout(o)})}function xf(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var i=e.getBoundingRect(),n=t.getData(),o=n.graph,a=0,r=n.getSum("value"),s=2*Math.PI/(r||n.count()),l=i.width/2+i.x,u=i.height/2+i.y,h=Math.min(i.width,i.height)/2;o.eachNode(function(t){var e=t.getValue("value");a+=s*(r?e:1)/2,t.setLayout([h*Math.cos(a)+l,h*Math.sin(a)+u]),a+=s*(r?e:1)/2}),n.setLayout({cx:l,cy:u}),o.eachEdge(function(t){var e,i=t.getModel().get("lineStyle.curveness")||0,n=F(t.node1.getLayout()),o=F(t.node2.getLayout()),a=(n[0]+o[0])/2,r=(n[1]+o[1])/2;+i&&(e=[l*(i*=3)+a*(1-i),u*i+r*(1-i)]),t.setLayout([n,o,e])})}}function _f(t,e,i){for(var n=i.rect,o=n.width,a=n.height,r=[n.x+o/2,n.y+a/2],s=null==i.gravity?.1:i.gravity,l=0;l0?-1:i<0?1:e?-1:1}}function kf(t,e){return Math.min(e[1],Math.max(e[0],t))}function Pf(t,e,i){this._axesMap=R(),this._axesLayout={},this.dimensions=t.dimensions,this._rect,this._model=t,this._init(t,e,i)}function Nf(t,e){return $L(JL(t,e[0]),e[1])}function Of(t,e){var i=e.layoutLength/(e.axisCount-1);return{position:i*t,axisNameAvailableWidth:i,axisLabelShow:!0}}function Ef(t,e){var i,n,o=e.layoutLength,a=e.axisExpandWidth,r=e.axisCount,s=e.axisCollapseWidth,l=e.winInnerIndices,u=s,h=!1;return tck}function Kf(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function $f(t,e,i,n){var o=new tb;return o.add(new vM({name:"main",style:ep(i),silent:!0,draggable:!0,cursor:"move",drift:ok(t,e,o,"nswe"),ondragend:ok(Yf,e,{isEnd:!0})})),ak(n,function(i){o.add(new vM({name:i,style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:ok(t,e,o,i),ondragend:ok(Yf,e,{isEnd:!0})}))}),o}function Jf(t,e,i,n){var o=n.brushStyle.lineWidth||0,a=lk(o,dk),r=i[0][0],s=i[1][0],l=r-o/2,u=s-o/2,h=i[0][1],c=i[1][1],d=h-a+o/2,f=c-a+o/2,p=h-r,g=c-s,m=p+o,v=g+o;tp(t,e,"main",r,s,p,g),n.transformable&&(tp(t,e,"w",l,u,a,v),tp(t,e,"e",d,u,a,v),tp(t,e,"n",l,u,m,a),tp(t,e,"s",l,f,m,a),tp(t,e,"nw",l,u,a,a),tp(t,e,"ne",d,u,a,a),tp(t,e,"sw",l,f,a,a),tp(t,e,"se",d,f,a,a))}function Qf(t,e){var i=e.__brushOption,n=i.transformable,o=e.childAt(0);o.useStyle(ep(i)),o.attr({silent:!n,cursor:n?"move":"default"}),ak(["w","e","n","s","se","sw","ne","nw"],function(i){var o=e.childOfName(i),a=op(t,i);o&&o.attr({silent:!n,invisible:!n,cursor:n?gk[a]+"-resize":null})})}function tp(t,e,i,n,o,a,r){var s=e.childOfName(i);s&&s.setShape(up(lp(t,e,[[n,o],[n+a,o+r]])))}function ep(t){return r({strokeNoScale:!0},t.brushStyle)}function ip(t,e,i,n){var o=[sk(t,i),sk(e,n)],a=[lk(t,i),lk(e,n)];return[[o[0],a[0]],[o[1],a[1]]]}function np(t){return To(t.group)}function op(t,e){if(e.length>1)return("e"===(i=[op(t,(e=e.split(""))[0]),op(t,e[1])])[0]||"w"===i[0])&&i.reverse(),i.join("");var i=Do({w:"left",e:"right",n:"top",s:"bottom"}[e],np(t));return{left:"w",right:"e",top:"n",bottom:"s"}[i]}function ap(t,e,i,n,o,a,r,s){var l=n.__brushOption,u=t(l.range),h=sp(i,a,r);ak(o.split(""),function(t){var e=pk[t];u[e[0]][e[1]]+=h[e[0]]}),l.range=e(ip(u[0][0],u[1][0],u[0][1],u[1][1])),Hf(i,n),Yf(i,{isEnd:!1})}function rp(t,e,i,n,o){var a=e.__brushOption.range,r=sp(t,i,n);ak(a,function(t){t[0]+=r[0],t[1]+=r[1]}),Hf(t,e),Yf(t,{isEnd:!1})}function sp(t,e,i){var n=t.group,o=n.transformCoordToLocal(e,i),a=n.transformCoordToLocal(0,0);return[o[0]-a[0],o[1]-a[1]]}function lp(t,e,n){var o=Xf(t,e);return o&&!0!==o?o.clipPath(n,t._transform):i(n)}function up(t){var e=sk(t[0][0],t[1][0]),i=sk(t[0][1],t[1][1]);return{x:e,y:i,width:lk(t[0][0],t[1][0])-e,height:lk(t[0][1],t[1][1])-i}}function hp(t,e,i){if(t._brushType){var n=t._zr,o=t._covers,a=Uf(t,e,i);if(!t._dragging)for(var r=0;r=i.length)return e;for(var o=-1,a=e.length,r=i[n++],s={},l={};++o=i.length)return t;var a=[],r=n[o++];return d(t,function(t,i){a.push({key:i,values:e(t,o)})}),r?a.sort(function(t,e){return r(t.key,e.key)}):a}var i=[],n=[];return{key:function(t){return i.push(t),this},sortKeys:function(t){return n[i.length-1]=t,this},entries:function(i){return e(t(i,0),0)}}}function Bp(t,e){return ha(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function Vp(t,e,i,n,o,a,r,s){Fp(t,e,i,o,a,s),Zp(t,e,a,o,n,r,s),eg(t,s)}function Gp(t){d(t,function(t){var e=Qp(t.outEdges,Jp),i=Qp(t.inEdges,Jp),n=Math.max(e,i);t.setLayout({value:n},!0)})}function Fp(t,e,i,n,o,a){for(var r=[],s=[],l=[],u=[],h=0,c=0;c0;a--)Yp(s,l*=.99,r),jp(s,o,i,n,r),tg(s,l,r),jp(s,o,i,n,r)}function Up(t){return"vertical"===t?function(t){return t.getLayout().y}:function(t){return t.getLayout().x}}function Xp(t,e,i,n,o,a,r){var s=[];d(e,function(t){var e=t.length,i=0,l=0;d(t,function(t){i+=t.getLayout().value}),l="vertical"===r?(o-(e-1)*a)/i:(n-(e-1)*a)/i,s.push(l)}),s.sort(function(t,e){return t-e});var l=s[0];d(e,function(t){d(t,function(t,e){var i=t.getLayout().value*l;"vertical"===r?(t.setLayout({x:e},!0),t.setLayout({dx:i},!0)):(t.setLayout({y:e},!0),t.setLayout({dy:i},!0))})}),d(i,function(t){var e=+t.getValue()*l;t.setLayout({dy:e},!0)})}function jp(t,e,i,n,o){d(t,function(t){var a,r,s,l=0,u=t.length;if("vertical"===o){var h;for(t.sort(function(t,e){return t.getLayout().x-e.getLayout().x}),s=0;s0&&(h=a.getLayout().x+r,a.setLayout({x:h},!0)),l=a.getLayout().x+a.getLayout().dx+e;if((r=l-e-n)>0)for(h=a.getLayout().x-r,a.setLayout({x:h},!0),l=h,s=u-2;s>=0;--s)(r=(a=t[s]).getLayout().x+a.getLayout().dx+e-l)>0&&(h=a.getLayout().x-r,a.setLayout({x:h},!0)),l=a.getLayout().x}else{var c;for(t.sort(function(t,e){return t.getLayout().y-e.getLayout().y}),s=0;s0&&(c=a.getLayout().y+r,a.setLayout({y:c},!0)),l=a.getLayout().y+a.getLayout().dy+e;if((r=l-e-i)>0)for(c=a.getLayout().y-r,a.setLayout({y:c},!0),l=c,s=u-2;s>=0;--s)(r=(a=t[s]).getLayout().y+a.getLayout().dy+e-l)>0&&(c=a.getLayout().y-r,a.setLayout({y:c},!0)),l=a.getLayout().y}})}function Yp(t,e,i){d(t.slice().reverse(),function(t){d(t,function(t){if(t.outEdges.length){var n=Qp(t.outEdges,qp,i)/Qp(t.outEdges,Jp,i);if("vertical"===i){var o=t.getLayout().x+(n-$p(t,i))*e;t.setLayout({x:o},!0)}else{var a=t.getLayout().y+(n-$p(t,i))*e;t.setLayout({y:a},!0)}}})})}function qp(t,e){return $p(t.node2,e)*t.getValue()}function Kp(t,e){return $p(t.node1,e)*t.getValue()}function $p(t,e){return"vertical"===e?t.getLayout().x+t.getLayout().dx/2:t.getLayout().y+t.getLayout().dy/2}function Jp(t){return t.getValue()}function Qp(t,e,i){for(var n=0,o=t.length,a=-1;++a0?"P":"N",a=n.getVisual("borderColor"+o)||n.getVisual("color"+o),r=i.getModel(Ek).getItemStyle(zk);e.useStyle(r),e.style.fill=null,e.style.stroke=a}function fg(t,e,i,n,o){return i>n?-1:i0?t.get(o,e-1)<=n?1:-1:1}function pg(t,e){var i,n=t.getBaseAxis(),o="category"===n.type?n.getBandWidth():(i=n.getExtent(),Math.abs(i[1]-i[0])/e.count()),a=Bo(A(t.get("barMaxWidth"),o),o),r=Bo(A(t.get("barMinWidth"),1),o),s=t.get("barWidth");return null!=s?Bo(s,o):Math.max(Math.min(o/2,a),r)}function gg(t){return y(t)||(t=[+t,+t]),t}function mg(t,e){t.eachChild(function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?e.color:null,fill:"fill"===e.brushType?e.color:null}})})}function vg(t,e){tb.call(this);var i=new _u(t,e),n=new tb;this.add(i),this.add(n),n.beforeUpdate=function(){this.attr(i.getScale())},this.updateData(t,e)}function yg(t){var e=t.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(t.data=f(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),o([e,t[0],t[1]])}))}function xg(t,e,i){tb.call(this),this.add(this.createLine(t,e,i)),this._updateEffectSymbol(t,e)}function _g(t,e,i){tb.call(this),this._createPolyline(t,e,i)}function wg(t,e,i){xg.call(this,t,e,i),this._lastFrame=0,this._lastFramePercent=0}function bg(){this.group=new tb}function Sg(t){return t instanceof Array||(t=[t,t]),t}function Mg(){var t=iw();this.canvas=t,this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={}}function Ig(t,e,i){var n=t[1]-t[0],o=(e=f(e,function(e){return{interval:[(e.interval[0]-t[0])/n,(e.interval[1]-t[0])/n]}})).length,a=0;return function(t){for(n=a;n=0;n--){var r=e[n].interval;if(r[0]<=t&&t<=r[1]){a=n;break}}return n>=0&&n=e[0]&&t<=e[1]}}function Ag(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}function Dg(t,e,i,n){var o=t.getItemLayout(e),a=i.get("symbolRepeat"),r=i.get("symbolClip"),s=i.get("symbolPosition")||"start",l=(i.get("symbolRotate")||0)*Math.PI/180||0,u=i.get("symbolPatternSize")||2,h=i.isAnimationEnabled(),c={dataIndex:e,layout:o,itemModel:i,symbolType:t.getItemVisual(e,"symbol")||"circle",color:t.getItemVisual(e,"color"),symbolClip:r,symbolRepeat:a,symbolRepeatDirection:i.get("symbolRepeatDirection"),symbolPatternSize:u,rotation:l,animationModel:h?i:null,hoverAnimation:h&&i.get("hoverAnimation"),z2:i.getShallow("z",!0)||0};Cg(i,a,o,n,c),kg(t,e,o,a,r,c.boundingLength,c.pxSign,u,n,c),Pg(i,c.symbolScale,l,n,c);var d=c.symbolSize,f=i.get("symbolOffset");return y(f)&&(f=[Bo(f[0],d[0]),Bo(f[1],d[1])]),Ng(i,d,o,a,r,f,s,c.valueLineWidth,c.boundingLength,c.repeatCutLength,n,c),c}function Cg(t,e,i,n,o){var a,r=n.valueDim,s=t.get("symbolBoundingData"),l=n.coordSys.getOtherAxis(n.coordSys.getBaseAxis()),u=l.toGlobalCoord(l.dataToCoord(0)),h=1-+(i[r.wh]<=0);if(y(s)){var c=[Lg(l,s[0])-u,Lg(l,s[1])-u];c[1]0?1:a<0?-1:0}function Lg(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function kg(t,e,i,n,o,a,r,s,l,u){var h=l.valueDim,c=l.categoryDim,d=Math.abs(i[c.wh]),f=t.getItemVisual(e,"symbolSize");y(f)?f=f.slice():(null==f&&(f="100%"),f=[f,f]),f[c.index]=Bo(f[c.index],d),f[h.index]=Bo(f[h.index],n?d:Math.abs(a)),u.symbolSize=f,(u.symbolScale=[f[0]/s,f[1]/s])[h.index]*=(l.isHorizontal?-1:1)*r}function Pg(t,e,i,n,o){var a=t.get(rP)||0;a&&(lP.attr({scale:e.slice(),rotation:i}),lP.updateTransform(),a/=lP.getLineScale(),a*=e[n.valueDim.index]),o.valueLineWidth=a}function Ng(t,e,i,n,o,r,s,l,u,h,c,d){var f=c.categoryDim,p=c.valueDim,g=d.pxSign,m=Math.max(e[p.index]+l,0),v=m;if(n){var y=Math.abs(u),x=T(t.get("symbolMargin"),"15%")+"",_=!1;x.lastIndexOf("!")===x.length-1&&(_=!0,x=x.slice(0,x.length-1)),x=Bo(x,e[p.index]);var w=Math.max(m+2*x,0),b=_?0:2*x,S=Jo(n),M=S?n:Kg((y+b)/w);w=m+2*(x=(y-M*m)/2/(_?M:M-1)),b=_?0:2*x,S||"fixed"===n||(M=h?Kg((Math.abs(h)+b)/w):0),v=M*w-b,d.repeatTimes=M,d.symbolMargin=x}var I=g*(v/2),A=d.pathPosition=[];A[f.index]=i[f.wh]/2,A[p.index]="start"===s?I:"end"===s?u-I:u/2,r&&(A[0]+=r[0],A[1]+=r[1]);var D=d.bundlePosition=[];D[f.index]=i[f.xy],D[p.index]=i[p.xy];var C=d.barRectShape=a({},i);C[p.wh]=g*Math.max(Math.abs(i[p.wh]),Math.abs(A[p.index]+I)),C[f.wh]=i[f.wh];var L=d.clipShape={};L[f.xy]=-i[f.xy],L[f.wh]=c.ecSize[f.wh],L[p.xy]=0,L[p.wh]=i[p.wh]}function Og(t){var e=t.symbolPatternSize,i=$l(t.symbolType,-e/2,-e/2,e,e,t.color);return i.attr({culling:!0}),"image"!==i.type&&i.setStyle({strokeNoScale:!0}),i}function Eg(t,e,i,n){function o(t){var e=l.slice(),n=i.pxSign,o=t;return("start"===i.symbolRepeatDirection?n>0:n<0)&&(o=h-1-t),e[u.index]=d*(o-h/2+.5)+l[u.index],{position:e,scale:i.symbolScale.slice(),rotation:i.rotation}}var a=t.__pictorialBundle,r=i.symbolSize,s=i.valueLineWidth,l=i.pathPosition,u=e.valueDim,h=i.repeatTimes||0,c=0,d=r[e.valueDim.index]+s+2*i.symbolMargin;for(jg(t,function(t){t.__pictorialAnimationIndex=c,t.__pictorialRepeatTimes=h,c0)],d=t.__pictorialBarRect;Lh(d.style,h,a,n,e.seriesModel,o,c),co(d,h)}function Kg(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}function $g(t,e,i){this.dimension="single",this.dimensions=["single"],this._axis=null,this._rect,this._init(t,e,i),this.model=t}function Jg(t,e){e=e||{};var i=t.coordinateSystem,n=t.axis,o={},a=n.position,r=n.orient,s=i.getRect(),l=[s.x,s.x+s.width,s.y,s.y+s.height],u={horizontal:{top:l[2],bottom:l[3]},vertical:{left:l[0],right:l[1]}};o.position=["vertical"===r?u.vertical[a]:l[0],"horizontal"===r?u.horizontal[a]:l[3]];o.rotation=Math.PI/2*{horizontal:0,vertical:1}[r];o.labelDirection=o.tickDirection=o.nameDirection={top:-1,bottom:1,right:1,left:-1}[a],t.get("axisTick.inside")&&(o.tickDirection=-o.tickDirection),T(e.labelInside,t.get("axisLabel.inside"))&&(o.labelDirection=-o.labelDirection);var h=e.rotate;return null==h&&(h=t.get("axisLabel.rotate")),o.labelRotation="top"===a?-h:h,o.z2=1,o}function Qg(t,e,i,n,o){var r=t.axis;if(!r.scale.isBlank()&&r.containData(e))if(t.involveSeries){var s=tm(e,t),l=s.payloadBatch,u=s.snapToValue;l[0]&&null==o.seriesIndex&&a(o,l[0]),!n&&t.snap&&r.containData(u)&&null!=u&&(e=u),i.showPointer(t,e,l,o),i.showTooltip(t,s,u)}else i.showPointer(t,e)}function tm(t,e){var i=e.axis,n=i.dim,o=t,a=[],r=Number.MAX_VALUE,s=-1;return pP(e.seriesModels,function(e,l){var u,h,c=e.getData().mapDimension(n,!0);if(e.getAxisTooltipData){var d=e.getAxisTooltipData(c,t,i);h=d.dataIndices,u=d.nestestValue}else{if(!(h=e.getData().indicesOfNearest(c[0],t,"category"===i.type?.5:null)).length)return;u=e.getData().get(c[0],h[0])}if(null!=u&&isFinite(u)){var f=t-u,p=Math.abs(f);p<=r&&((p=0&&s<0)&&(r=p,s=f,o=u,a.length=0),pP(h,function(t){a.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})}))}}),{payloadBatch:a,snapToValue:o}}function em(t,e,i,n){t[e.key]={value:i,payloadBatch:n}}function im(t,e,i,n){var o=i.payloadBatch,a=e.axis,r=a.model,s=e.axisPointerModel;if(e.triggerTooltip&&o.length){var l=e.coordSys.model,u=Th(l),h=t.map[u];h||(h=t.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(h)),h.dataByAxis.push({axisDim:a.dim,axisIndex:r.componentIndex,axisType:r.type,axisId:r.id,value:n,valueLabelOpt:{precision:s.get("label.precision"),formatter:s.get("label.formatter")},seriesDataIndices:o.slice()})}}function nm(t,e,i){var n=i.axesInfo=[];pP(e,function(e,i){var o=e.axisPointerModel.option,a=t[i];a?(!e.useHandle&&(o.status="show"),o.value=a.value,o.seriesDataIndices=(a.payloadBatch||[]).slice()):!e.useHandle&&(o.status="hide"),"show"===o.status&&n.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:o.value})})}function om(t,e,i,n){if(!lm(e)&&t.list.length){var o=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:i.tooltipOption,position:i.position,dataIndexInside:o.dataIndexInside,dataIndex:o.dataIndex,seriesIndex:o.seriesIndex,dataByCoordSys:t.list})}else n({type:"hideTip"})}function am(t,e,i){var n=i.getZr(),o=mP(n).axisPointerLastHighlights||{},a=mP(n).axisPointerLastHighlights={};pP(t,function(t,e){var i=t.axisPointerModel.option;"show"===i.status&&pP(i.seriesDataIndices,function(t){var e=t.seriesIndex+" | "+t.dataIndex;a[e]=t})});var r=[],s=[];d(o,function(t,e){!a[e]&&s.push(t)}),d(a,function(t,e){!o[e]&&r.push(t)}),s.length&&i.dispatchAction({type:"downplay",escapeConnect:!0,batch:s}),r.length&&i.dispatchAction({type:"highlight",escapeConnect:!0,batch:r})}function rm(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}}function sm(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 lm(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}function um(t,e,i){if(!U_.node){var n=e.getZr();vP(n).records||(vP(n).records={}),hm(n,e),(vP(n).records[t]||(vP(n).records[t]={})).handler=i}}function hm(t,e){function i(i,n){t.on(i,function(i){var o=pm(e);yP(vP(t).records,function(t){t&&n(t,i,o.dispatchAction)}),cm(o.pendings,e)})}vP(t).initialized||(vP(t).initialized=!0,i("click",v(fm,"click")),i("mousemove",v(fm,"mousemove")),i("globalout",dm))}function cm(t,e){var i,n=t.showTip.length,o=t.hideTip.length;n?i=t.showTip[n-1]:o&&(i=t.hideTip[o-1]),i&&(i.dispatchAction=null,e.dispatchAction(i))}function dm(t,e,i){t.handler("leave",null,i)}function fm(t,e,i,n){e.handler(t,i,n)}function pm(t){var e={showTip:[],hideTip:[]},i=function(n){var o=e[n.type];o?o.push(n):(n.dispatchAction=i,t.dispatchAction(n))};return{dispatchAction:i,pendings:e}}function gm(t,e){if(!U_.node){var i=e.getZr();(vP(i).records||{})[t]&&(vP(i).records[t]=null)}}function mm(){}function vm(t,e,i,n){ym(_P(i).lastProp,n)||(_P(i).lastProp=n,e?Mo(i,n,t):(i.stopAnimation(),i.attr(n)))}function ym(t,e){if(w(t)&&w(e)){var i=!0;return d(e,function(e,n){i=i&&ym(t[n],e)}),!!i}return t===e}function xm(t,e){t[e.get("label.show")?"show":"hide"]()}function _m(t){return{position:t.position.slice(),rotation:t.rotation||0}}function wm(t,e,i){var n=e.get("z"),o=e.get("zlevel");t&&t.traverse(function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=o&&(t.zlevel=o),t.silent=i)})}function bm(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 Sm(t,e,i,n,o){var a=Im(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=YM(r.get("padding")||0),l=r.getFont(),u=ke(a,l),h=o.position,c=u.width+s[1]+s[3],d=u.height+s[0]+s[2],f=o.align;"right"===f&&(h[0]-=c),"center"===f&&(h[0]-=c/2);var p=o.verticalAlign;"bottom"===p&&(h[1]-=d),"middle"===p&&(h[1]-=d/2),Mm(h,c,d,n);var g=r.get("backgroundColor");g&&"auto"!==g||(g=e.get("axisLine.lineStyle.color")),t.label={shape:{x:0,y:0,width:c,height:d,r:r.get("borderRadius")},position:h.slice(),style:{text:a,textFont:l,textFill:r.getTextColor(),textPosition:"inside",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 Mm(t,e,i,n){var o=n.getWidth(),a=n.getHeight();t[0]=Math.min(t[0]+e,o)-e,t[1]=Math.min(t[1]+i,a)-i,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}function Im(t,e,i,n,o){t=e.scale.parse(t);var a=e.scale.getLabel(t,{precision:o.precision}),r=o.formatter;if(r){var s={value:Ul(e,t),seriesData:[]};d(n,function(t){var e=i.getSeriesByIndex(t.seriesIndex),n=t.dataIndexInside,o=e&&e.getDataParams(n);o&&s.seriesData.push(o)}),_(r)?a=r.replace("{value}",a):x(r)&&(a=r(s))}return a}function Tm(t,e,i){var n=xt();return Mt(n,n,i.rotation),St(n,n,i.position),Ao([t.dataToCoord(e),(i.labelOffset||0)+(i.labelDirection||1)*(i.labelMargin||0)],n)}function Am(t,e,i,n,o,a){var r=BD.innerTextLayout(i.rotation,0,i.labelDirection);i.labelMargin=o.get("label.margin"),Sm(e,n,o,a,{position:Tm(n.axis,t,i),align:r.textAlign,verticalAlign:r.textVerticalAlign})}function Dm(t,e,i){return i=i||0,{x1:t[i],y1:t[1-i],x2:e[i],y2:e[1-i]}}function Cm(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}function Lm(t,e,i,n,o,a){return{cx:t,cy:e,r0:i,r:n,startAngle:o,endAngle:a,clockwise:!0}}function km(t,e){var i={};return i[e.dim+"AxisIndex"]=e.index,t.getCartesian(i)}function Pm(t){return"x"===t.dim?0:1}function Nm(t){return t.isHorizontal()?0:1}function Om(t,e){var i=t.getRect();return[i[IP[e]],i[IP[e]]+i[TP[e]]]}function Em(t,e,i){var n=new vM({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return Io(n,{shape:{width:t.width+20,height:t.height+20}},e,i),n}function Rm(t,e,i){if(t.count())for(var n,o=e.coordinateSystem,a=e.getLayerSeries(),r=t.mapDimension("single"),s=t.mapDimension("value"),l=f(a,function(e){return f(e.indices,function(e){var i=o.dataToPoint(t.get(r,e));return i[1]=t.get(s,e),i})}),u=zm(l),h=u.y0,c=i/u.max,d=a.length,p=a[0].indices.length,g=0;ga&&(a=u),n.push(u)}for(var h=0;ha&&(a=d)}return r.y0=o,r.max=a,r}function Bm(t){var e=0;d(t.children,function(t){Bm(t);var i=t.value;y(i)&&(i=i[0]),e+=i});var i=t.value;y(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),y(t.value)?t.value[0]=i:t.value=i}function Vm(t,e,i){function n(){r.ignore=r.hoverIgnore}function o(){r.ignore=r.normalIgnore}tb.call(this);var a=new uM({z2:kP});a.seriesIndex=e.seriesIndex;var r=new aM({z2:PP,silent:t.getModel("label").get("silent")});this.add(a),this.add(r),this.updateData(!0,t,"normal",e,i),this.on("emphasis",n).on("normal",o).on("mouseover",n).on("mouseout",o)}function Gm(t,e,i){var n=t.getVisual("color"),o=t.getVisual("visualMeta");o&&0!==o.length||(n=null);var a=t.getModel("itemStyle").get("color");if(a)return a;if(n)return n;if(0===t.depth)return i.option.color[0];var r=i.option.color.length;return a=i.option.color[Fm(t)%r]}function Fm(t){for(var e=t;e.depth>1;)e=e.parentNode;return l(t.getAncestors()[0].children,e)}function Wm(t,e,i){return i!==LP.NONE&&(i===LP.SELF?t===e:i===LP.ANCESTOR?t===e||t.isAncestorOf(e):t===e||t.isDescendantOf(e))}function Hm(t,e,i){e.getData().setItemVisual(t.dataIndex,"color",i)}function Zm(t,e){var i=t.children||[];t.children=Um(i,e),i.length&&d(t.children,function(t){Zm(t,e)})}function Um(t,e){if("function"==typeof e)return t.sort(e);var i="asc"===e;return t.sort(function(t,e){var n=(t.getValue()-e.getValue())*(i?1:-1);return 0===n?(t.dataIndex-e.dataIndex)*(i?-1:1):n})}function Xm(t,e){return e=e||[0,0],f(["x","y"],function(i,n){var o=this.getAxis(i),a=e[n],r=t[n]/2;return"category"===o.type?o.getBandWidth():Math.abs(o.dataToCoord(a-r)-o.dataToCoord(a+r))},this)}function jm(t,e){return e=e||[0,0],f([0,1],function(i){var n=e[i],o=t[i]/2,a=[],r=[];return a[i]=n-o,r[i]=n+o,a[1-i]=r[1-i]=e[1-i],Math.abs(this.dataToPoint(a)[i]-this.dataToPoint(r)[i])},this)}function Ym(t,e){var i=this.getAxis(),n=e instanceof Array?e[0]:e,o=(t instanceof Array?t[0]:t)/2;return"category"===i.type?i.getBandWidth():Math.abs(i.dataToCoord(n-o)-i.dataToCoord(n+o))}function qm(t,e){return f(["Radius","Angle"],function(i,n){var o=this["get"+i+"Axis"](),a=e[n],r=t[n]/2,s="dataTo"+i,l="category"===o.type?o.getBandWidth():Math.abs(o[s](a-r)-o[s](a+r));return"Angle"===i&&(l=l*Math.PI/180),l},this)}function Km(t){var e,i=t.type;if("path"===i){var n=t.shape,o=null!=n.width&&null!=n.height?{x:n.x||0,y:n.y||0,width:n.width,height:n.height}:null,a=lv(n);(e=Un(a,null,o,n.layout||"center")).__customPathData=a}else"image"===i?(e=new fi({})).__customImagePath=t.style.image:"text"===i?(e=new aM({})).__customText=t.style.text:e=new(0,RM[i.charAt(0).toUpperCase()+i.slice(1)]);return e.__customGraphicType=i,e.name=t.name,e}function $m(t,e,n,o,a,r,s){var l={},u=n.style||{};if(n.shape&&(l.shape=i(n.shape)),n.position&&(l.position=n.position.slice()),n.scale&&(l.scale=n.scale.slice()),n.origin&&(l.origin=n.origin.slice()),n.rotation&&(l.rotation=n.rotation),"image"===t.type&&n.style){h=l.style={};d(["x","y","width","height"],function(e){Jm(e,h,u,t.style,r)})}if("text"===t.type&&n.style){var h=l.style={};d(["x","y"],function(e){Jm(e,h,u,t.style,r)}),!u.hasOwnProperty("textFill")&&u.fill&&(u.textFill=u.fill),!u.hasOwnProperty("textStroke")&&u.stroke&&(u.textStroke=u.stroke)}if("group"!==t.type&&(t.useStyle(u),r)){t.style.opacity=0;var c=u.opacity;null==c&&(c=1),Io(t,{style:{opacity:c}},o,e)}r?t.attr(l):Mo(t,l,o,e),n.hasOwnProperty("z2")&&t.attr("z2",n.z2||0),n.hasOwnProperty("silent")&&t.attr("silent",n.silent),n.hasOwnProperty("invisible")&&t.attr("invisible",n.invisible),n.hasOwnProperty("ignore")&&t.attr("ignore",n.ignore),n.hasOwnProperty("info")&&t.attr("info",n.info);var f=n.styleEmphasis,p=!1===f;t.__cusHasEmphStl&&null==f||!t.__cusHasEmphStl&&p||(ao(t,f),t.__cusHasEmphStl=!p),s&&fo(t,!p)}function Jm(t,e,i,n,o){null==i[t]||o||(e[t]=i[t],i[t]=n[t])}function Qm(t,e,i,n){function o(t){null==t&&(t=h),v&&(c=e.getItemModel(t),d=c.getModel(VP),f=c.getModel(GP),p=e.getItemVisual(t,"color"),v=!1)}var s=t.get("renderItem"),l=t.coordinateSystem,u={};l&&(u=l.prepareCustoms?l.prepareCustoms():WP[l.type](l));var h,c,d,f,p,g=r({getWidth:n.getWidth,getHeight:n.getHeight,getZr:n.getZr,getDevicePixelRatio:n.getDevicePixelRatio,value:function(t,i){return null==i&&(i=h),e.get(e.getDimension(t||0),i)},style:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(zP).getItemStyle();null!=p&&(r.fill=p);var s=e.getItemVisual(n,"opacity");return null!=s&&(r.opacity=s),go(r,d,null,{autoColor:p,isRectText:!0}),r.text=d.getShallow("show")?A(t.getFormattedLabel(n,"normal"),xu(e,n)):null,i&&a(r,i),r},styleEmphasis:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(BP).getItemStyle();return go(r,f,null,{isRectText:!0},!0),r.text=f.getShallow("show")?D(t.getFormattedLabel(n,"emphasis"),t.getFormattedLabel(n,"normal"),xu(e,n)):null,i&&a(r,i),r},visual:function(t,i){return null==i&&(i=h),e.getItemVisual(i,t)},barLayout:function(t){if(l.getBaseAxis)return Cl(r({axis:l.getBaseAxis()},t),n)},currentSeriesIndices:function(){return i.getCurrentSeriesIndices()},font:function(t){return bo(t,i)}},u.api||{}),m={context:{},seriesId:t.id,seriesName:t.name,seriesIndex:t.seriesIndex,coordSys:u.coordSys,dataInsideLength:e.count(),encode:tv(t.getData())},v=!0;return function(t,i){return h=t,v=!0,s&&s(r({dataIndexInside:t,dataIndex:e.getRawIndex(t),actionType:i?i.type:null},m),g)}}function tv(t){var e={};return d(t.dimensions,function(i,n){var o=t.getDimensionInfo(i);if(!o.isExtraCoord){var a=o.coordDim;(e[a]=e[a]||[])[o.coordDimIndex]=n}}),e}function ev(t,e,i,n,o,a){return(t=iv(t,e,i,n,o,a,!0))&&a.setItemGraphicEl(e,t),t}function iv(t,e,i,n,o,a,r){var s=!i,l=(i=i||{}).type,u=i.shape,h=i.style;if(t&&(s||null!=l&&l!==t.__customGraphicType||"path"===l&&uv(u)&&lv(u)!==t.__customPathData||"image"===l&&hv(h,"image")&&h.image!==t.__customImagePath||"text"===l&&hv(u,"text")&&h.text!==t.__customText)&&(o.remove(t),t=null),!s){var c=!t;return!t&&(t=Km(i)),$m(t,e,i,n,a,c,r),"group"===l&&nv(t,e,i,n,a),o.add(t),t}}function nv(t,e,i,n,o){var a=i.children,r=a?a.length:0,s=i.$mergeChildren,l="byName"===s||i.diffChildrenByName,u=!1===s;if(r||l||u)if(l)ov({oldChildren:t.children()||[],newChildren:a||[],dataIndex:e,animatableModel:n,group:t,data:o});else{u&&t.removeAll();for(var h=0;hn?t-=l+a:t+=a),null!=r&&(e+u+r>o?e-=u+r:e+=r),[t,e]}function Ov(t,e,i,n,o){var a=i.getOuterSize(),r=a.width,s=a.height;return t=Math.min(t+r,n)-r,e=Math.min(e+s,o)-s,t=Math.max(t,0),e=Math.max(e,0),[t,e]}function Ev(t,e,i){var n=i[0],o=i[1],a=0,r=0,s=e.width,l=e.height;switch(t){case"inside":a=e.x+s/2-n/2,r=e.y+l/2-o/2;break;case"top":a=e.x+s/2-n/2,r=e.y-o-5;break;case"bottom":a=e.x+s/2-n/2,r=e.y+l+5;break;case"left":a=e.x-n-5,r=e.y+l/2-o/2;break;case"right":a=e.x+s+5,r=e.y+l/2-o/2}return[a,r]}function Rv(t){return"center"===t||"middle"===t}function zv(t){return t.get("stack")||"__ec_stack_"+t.seriesIndex}function Bv(t){return t.dim}function Vv(t,e){var i={};d(t,function(t,e){var n=t.getData(),o=t.coordinateSystem.getBaseAxis(),a=o.getExtent(),r="category"===o.type?o.getBandWidth():Math.abs(a[1]-a[0])/n.count(),s=i[Bv(o)]||{bandWidth:r,remainedWidth:r,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},l=s.stacks;i[Bv(o)]=s;var u=zv(t);l[u]||s.autoWidthCount++,l[u]=l[u]||{width:0,maxWidth:0};var h=Bo(t.get("barWidth"),r),c=Bo(t.get("barMaxWidth"),r),d=t.get("barGap"),f=t.get("barCategoryGap");h&&!l[u].width&&(h=Math.min(s.remainedWidth,h),l[u].width=h,s.remainedWidth-=h),c&&(l[u].maxWidth=c),null!=d&&(s.gap=d),null!=f&&(s.categoryGap=f)});var n={};return d(i,function(t,e){n[e]={};var i=t.stacks,o=t.bandWidth,a=Bo(t.categoryGap,o),r=Bo(t.gap,1),s=t.remainedWidth,l=t.autoWidthCount,u=(s-a)/(l+(l-1)*r);u=Math.max(u,0),d(i,function(t,e){var i=t.maxWidth;i&&ie[0]&&(e=e.slice().reverse());var n=t.coordToPoint([e[0],i]),o=t.coordToPoint([e[1],i]);return{x1:n[0],y1:n[1],x2:o[0],y2:o[1]}}function jv(t){return t.getRadiusAxis().inverse?0:1}function Yv(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()}function qv(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}}function Kv(t,e,i,n,o){var a=e.axis,r=a.dataToCoord(t),s=n.getAngleAxis().getExtent()[0];s=s/180*Math.PI;var l,u,h,c=n.getRadiusAxis().getExtent();if("radius"===a.dim){var d=xt();Mt(d,d,s),St(d,d,[n.cx,n.cy]),l=Ao([r,-o],d);var f=e.getModel("axisLabel").get("rotate")||0,p=BD.innerTextLayout(s,f*Math.PI/180,-1);u=p.textAlign,h=p.textVerticalAlign}else{var g=c[1];l=n.coordToPoint([g+o,r]);var m=n.cx,v=n.cy;u=Math.abs(l[0]-m)/g<.3?"center":l[0]>m?"left":"right",h=Math.abs(l[1]-v)/g<.3?"middle":l[1]>v?"top":"bottom"}return{position:l,align:u,verticalAlign:h}}function $v(t,e){e.update="updateView",Os(e,function(e,i){var n={};return i.eachComponent({mainType:"geo",query:e},function(i){i[t](e.name),d(i.coordinateSystem.regions,function(t){n[t.name]=i.isSelected(t.name)||!1})}),{selected:n,name:e.name}})}function Jv(t){var e={};d(t,function(t){e[t]=1}),t.length=0,d(e,function(e,i){t.push(i)})}function Qv(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}function ty(t,e,n){function o(){var t=function(){};return t.prototype.__hidden=t.prototype,new t}var a={};return yN(e,function(e){var r=a[e]=o();yN(t[e],function(t,o){if(sL.isValidType(o)){var a={type:o,visual:t};n&&n(a,e),r[o]=new sL(a),"opacity"===o&&((a=i(a)).type="colorAlpha",r.__hidden.__alphaForOpacity=new sL(a))}})}),a}function ey(t,e,n){var o;d(n,function(t){e.hasOwnProperty(t)&&Qv(e[t])&&(o=!0)}),o&&d(n,function(n){e.hasOwnProperty(n)&&Qv(e[n])?t[n]=i(e[n]):delete t[n]})}function iy(t,e,i,n,o,a){function r(t){return i.getItemVisual(h,t)}function s(t,e){i.setItemVisual(h,t,e)}function l(t,l){h=null==a?t:l;var c=i.getRawDataItem(h);if(!c||!1!==c.visualMap)for(var d=n.call(o,t),f=e[d],p=u[d],g=0,m=p.length;g1)return!1;var h=uy(i-t,o-t,n-e,a-e)/l;return!(h<0||h>1)}function ly(t){return t<=1e-6&&t>=-1e-6}function uy(t,e,i,n){return t*n-e*i}function hy(t,e,i){var n=this._targetInfoList=[],o={},a=dy(e,t);_N(TN,function(t,e){(!i||!i.include||wN(i.include,e)>=0)&&t(a,n,o)})}function cy(t){return t[0]>t[1]&&t.reverse(),t}function dy(t,e){return Vi(t,e,{includeMainTypes:MN})}function fy(t,e,i,n){var o=i.getAxis(["x","y"][t]),a=cy(f([0,1],function(t){return e?o.coordToData(o.toLocalCoord(n[t])):o.toGlobalCoord(o.dataToCoord(n[t]))})),r=[];return r[t]=a,r[1-t]=[NaN,NaN],{values:a,xyMinMax:r}}function py(t,e,i,n){return[e[0]-n[t]*i[0],e[1]-n[t]*i[1]]}function gy(t,e){var i=my(t),n=my(e),o=[i[0]/n[0],i[1]/n[1]];return isNaN(o[0])&&(o[0]=1),isNaN(o[1])&&(o[1]=1),o}function my(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}function vy(t,e,i,n,o){if(o){var a=t.getZr();a[NN]||(a[PN]||(a[PN]=yy),Pr(a,PN,i,e)(t,n))}}function yy(t,e){if(!t.isDisposed()){var i=t.getZr();i[NN]=!0,t.dispatchAction({type:"brushSelect",batch:e}),i[NN]=!1}}function xy(t,e,i,n){for(var o=0,a=e.length;o=0}function Ny(t,e,i){function n(t,e){return l(e.nodes,t)>=0}function o(t,n){var o=!1;return e(function(e){d(i(t,e)||[],function(t){n.records[e.name][t]&&(o=!0)})}),o}function a(t,n){n.nodes.push(t),e(function(e){d(i(t,e)||[],function(t){n.records[e.name][t]=!0})})}return function(i){var r={nodes:[],records:{}};if(e(function(t){r.records[t.name]={}}),!i)return r;a(i,r);var s;do{s=!1,t(function(t){!n(t,r)&&o(t,r)&&(a(t,r),s=!0)})}while(s);return r}}function Oy(t,e,i){var n=[1/0,-1/0];return UN(i,function(t){var i=t.getData();i&&UN(i.mapDimension(e,!0),function(t){var e=i.getApproximateExtent(t);e[0]n[1]&&(n[1]=e[1])})}),n[1]0?0:NaN);var r=i.getMax(!0);return null!=r&&"dataMax"!==r&&"function"!=typeof r?e[1]=r:o&&(e[1]=a>0?a-1:NaN),i.get("scale",!0)||(e[0]>0&&(e[0]=0),e[1]<0&&(e[1]=0)),e}function Ry(t,e){var i=t.getAxisModel(),n=t._percentWindow,o=t._valueWindow;if(n){var a=Ho(o,[0,500]);a=Math.min(a,20);var r=e||0===n[0]&&100===n[1];i.setRange(r?null:+o[0].toFixed(a),r?null:+o[1].toFixed(a))}}function zy(t){var e=t._minMaxSpan={},i=t._dataZoomModel;UN(["min","max"],function(n){e[n+"Span"]=i.get(n+"Span");var o=i.get(n+"ValueSpan");if(null!=o&&(e[n+"ValueSpan"]=o,null!=(o=t.getAxisModel().axis.scale.parse(o)))){var a=t._dataExtent;e[n+"Span"]=zo(a[0]+o,a,[0,100],!0)}})}function By(t){var e={};return YN(["start","end","startValue","endValue","throttle"],function(i){t.hasOwnProperty(i)&&(e[i]=t[i])}),e}function Vy(t,e){var i=t._rangePropMode,n=t.get("rangeMode");YN([["start","startValue"],["end","endValue"]],function(t,o){var a=null!=e[t[0]],r=null!=e[t[1]];a&&!r?i[o]="percent":!a&&r?i[o]="value":n?i[o]=n[o]:a&&(i[o]="percent")})}function Gy(t){return{x:"y",y:"x",radius:"angle",angle:"radius"}[t]}function Fy(t){return"vertical"===t?"ns-resize":"ew-resize"}function Wy(t,e){var i=Uy(t),n=e.dataZoomId,o=e.coordId;d(i,function(t,i){var a=t.dataZoomInfos;a[n]&&l(e.allCoordIds,o)<0&&(delete a[n],t.count--)}),jy(i);var a=i[o];a||((a=i[o]={coordId:o,dataZoomInfos:{},count:0}).controller=Xy(t,a),a.dispatchAction=v(Yy,t)),!a.dataZoomInfos[n]&&a.count++,a.dataZoomInfos[n]=e;var r=qy(a.dataZoomInfos);a.controller.enable(r.controlType,r.opt),a.controller.setPointerChecker(e.containsPoint),Pr(a,"dispatchAction",e.dataZoomModel.get("throttle",!0),"fixRate")}function Hy(t,e){var i=Uy(t);d(i,function(t){t.controller.dispose();var i=t.dataZoomInfos;i[e]&&(delete i[e],t.count--)}),jy(i)}function Zy(t){return t.type+"\0_"+t.id}function Uy(t){var e=t.getZr();return e[sO]||(e[sO]={})}function Xy(t,e){var i=new nc(t.getZr());return d(["pan","zoom","scrollMove"],function(t){i.on(t,function(i){var n=[];d(e.dataZoomInfos,function(o){if(i.isAvailableBehavior(o.dataZoomModel.option)){var a=(o.getRange||{})[t],r=a&&a(e.controller,i);!o.dataZoomModel.get("disabled",!0)&&r&&n.push({dataZoomId:o.dataZoomId,start:r[0],end:r[1]})}}),n.length&&e.dispatchAction(n)})}),i}function jy(t){d(t,function(e,i){e.count||(e.controller.dispose(),delete t[i])})}function Yy(t,e){t.dispatchAction({type:"dataZoom",batch:e})}function qy(t){var e,i={type_true:2,type_move:1,type_false:0,type_undefined:-1},n=!0;return d(t,function(t){var o=t.dataZoomModel,a=!o.get("disabled",!0)&&(!o.get("zoomLock",!0)||"move");i["type_"+a]>i["type_"+e]&&(e=a),n&=o.get("preventDefaultMouseMove",!0)}),{controlType:e,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!n}}}function Ky(t){return function(e,i,n,o){var a=this._range,r=a.slice(),s=e.axisModels[0];if(s){var l=t(r,s,e,i,n,o);return qL(l,r,[0,100],"all"),this._range=r,a[0]!==r[0]||a[1]!==r[1]?r:void 0}}}function $y(t,e){return t&&t.hasOwnProperty&&t.hasOwnProperty(e)}function Jy(t,e,i,n){for(var o=e.targetVisuals[n],a=sL.prepareVisualTypes(o),r={color:t.getData().getVisual("color")},s=0,l=a.length;s=0&&(r[a]=+r[a].toFixed(h)),r}function fx(t,e){var n=t.getData(),o=t.coordinateSystem;if(e&&!cx(e)&&!y(e.coord)&&o){var a=o.dimensions,r=px(e,n,o,t);if((e=i(e)).type&&WO[e.type]&&r.baseAxis&&r.valueAxis){var s=GO(a,r.baseAxis.dim),l=GO(a,r.valueAxis.dim);e.coord=WO[e.type](n,r.baseDataDim,r.valueDataDim,s,l),e.value=e.coord[l]}else{for(var u=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],h=0;h<2;h++)WO[u[h]]&&(u[h]=yx(n,n.mapDimension(a[h]),u[h]));e.coord=u}}return e}function px(t,e,i,n){var o={};return null!=t.valueIndex||null!=t.valueDim?(o.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,o.valueAxis=i.getAxis(gx(n,o.valueDataDim)),o.baseAxis=i.getOtherAxis(o.valueAxis),o.baseDataDim=e.mapDimension(o.baseAxis.dim)):(o.baseAxis=n.getBaseAxis(),o.valueAxis=i.getOtherAxis(o.baseAxis),o.baseDataDim=e.mapDimension(o.baseAxis.dim),o.valueDataDim=e.mapDimension(o.valueAxis.dim)),o}function gx(t,e){var i=t.getData(),n=i.dimensions;e=i.getDimension(e);for(var o=0;o=0)return!0}function Yx(t){for(var e=t.split(/\n+/g),i=[],n=f(Xx(e.shift()).split(lE),function(t){return{name:t,data:[]}}),o=0;o=0&&!i[o][n];o--);if(o<0){var a=t.queryComponents({mainType:"dataZoom",subType:"select",id:n})[0];if(a){var r=a.getPercentRange();i[0][n]={dataZoomId:n,start:r[0],end:r[1]}}}}),i.push(e)}function t_(t){var e=n_(t),i=e[e.length-1];e.length>1&&e.pop();var n={};return uE(i,function(t,i){for(var o=e.length-1;o>=0;o--)if(t=e[o][i]){n[i]=t;break}}),n}function e_(t){t[hE]=null}function i_(t){return n_(t).length}function n_(t){var e=t[hE];return e||(e=t[hE]=[{}]),e}function o_(t,e,i){(this._brushController=new Rf(i.getZr())).on("brush",m(this._onBrush,this)).mount(),this._isZoomActive}function a_(t){var e={};return d(["xAxisIndex","yAxisIndex"],function(i){e[i]=t[i],null==e[i]&&(e[i]="all"),(!1===e[i]||"none"===e[i])&&(e[i]=[])}),e}function r_(t,e){t.setIconStatus("back",i_(e)>1?"emphasis":"normal")}function s_(t,e,i,n,o){var a=i._isZoomActive;n&&"takeGlobalCursor"===n.type&&(a="dataZoomSelect"===n.key&&n.dataZoomSelectActive),i._isZoomActive=a,t.setIconStatus("zoom",a?"emphasis":"normal");var r=new hy(a_(t.option),e,{include:["grid"]});i._brushController.setPanels(r.makePanelOpts(o,function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"})).enableBrush(!!a&&{brushType:"auto",brushStyle:{lineWidth:0,fill:"rgba(0,0,0,0.2)"}})}function l_(t){this.model=t}function u_(t){return vE(t)}function h_(){if(!_E&&wE){_E=!0;var t=wE.styleSheets;t.length<31?wE.createStyleSheet().addRule(".zrvml","behavior:url(#default#VML)"):t[0].addRule(".zrvml","behavior:url(#default#VML)")}}function c_(t){return parseInt(t,10)}function d_(t,e){h_(),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 o=e.delFromStorage,a=e.addToStorage;e.delFromStorage=function(t){o.call(e,t),t&&t.onRemove&&t.onRemove(n)},e.addToStorage=function(t){t.onAdd&&t.onAdd(n),a.call(e,t)},this._firstPaint=!0}function f_(t){return function(){Yw('In IE8.0 VML mode painter not support method "'+t+'"')}}function p_(t){return document.createElementNS(eR,t)}function g_(t){return aR(1e4*t)/1e4}function m_(t){return t-cR}function v_(t,e){var i=e?t.textFill:t.fill;return null!=i&&i!==oR}function y_(t,e){var i=e?t.textStroke:t.stroke;return null!=i&&i!==oR}function x_(t,e){e&&__(t,"transform","matrix("+nR.call(e,",")+")")}function __(t,e,i){(!i||"linear"!==i.type&&"radial"!==i.type)&&t.setAttribute(e,i)}function w_(t,e,i){t.setAttributeNS("http://www.w3.org/1999/xlink",e,i)}function b_(t,e,i,n){if(v_(e,i)){var o=i?e.textFill:e.fill;o="transparent"===o?oR:o,"none"!==t.getAttribute("clip-path")&&o===oR&&(o="rgba(0, 0, 0, 0.002)"),__(t,"fill",o),__(t,"fill-opacity",null!=e.fillOpacity?e.fillOpacity*e.opacity:e.opacity)}else __(t,"fill",oR);if(y_(e,i)){var a=i?e.textStroke:e.stroke;__(t,"stroke",a="transparent"===a?oR:a),__(t,"stroke-width",(i?e.textStrokeWidth:e.lineWidth)/(!i&&e.strokeNoScale?n.getLineScale():1)),__(t,"paint-order",i?"stroke":"fill"),__(t,"stroke-opacity",null!=e.strokeOpacity?e.strokeOpacity:e.opacity),e.lineDash?(__(t,"stroke-dasharray",e.lineDash.join(",")),__(t,"stroke-dashoffset",aR(e.lineDashOffset||0))):__(t,"stroke-dasharray",""),e.lineCap&&__(t,"stroke-linecap",e.lineCap),e.lineJoin&&__(t,"stroke-linejoin",e.lineJoin),e.miterLimit&&__(t,"stroke-miterlimit",e.miterLimit)}else __(t,"stroke",oR)}function S_(t){for(var e=[],i=t.data,n=t.len(),o=0;o=uR||!m_(g)&&(d>-lR&&d<0||d>lR)==!!p;var y=g_(s+u*sR(c)),x=g_(l+h*rR(c));m&&(d=p?uR-1e-4:1e-4-uR,v=!0,9===o&&e.push("M",y,x));var _=g_(s+u*sR(c+d)),w=g_(l+h*rR(c+d));e.push("A",g_(u),g_(h),aR(f*hR),+v,+p,_,w);break;case iR.Z:a="Z";break;case iR.R:var _=g_(i[o++]),w=g_(i[o++]),b=g_(i[o++]),S=g_(i[o++]);e.push("M",_,w,"L",_+b,w,"L",_+b,w+S,"L",_,w+S,"L",_,w)}a&&e.push(a);for(var M=0;M=11),domSupported:"undefined"!=typeof document}}(navigator.userAgent),X_={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},j_={"[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},Y_=Object.prototype.toString,q_=Array.prototype,K_=q_.forEach,$_=q_.filter,J_=q_.slice,Q_=q_.map,tw=q_.reduce,ew={},iw=function(){return ew.createCanvas()};ew.createCanvas=function(){return document.createElement("canvas")};var nw,ow="__ec_primitive__";E.prototype={constructor:E,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){void 0!==e&&(t=m(t,e));for(var i in this.data)this.data.hasOwnProperty(i)&&t(this.data[i],i)},removeKey:function(t){delete this.data[t]}};var aw=(Object.freeze||Object)({$override:e,clone:i,merge:n,mergeAll:o,extend:a,defaults:r,createCanvas:iw,getContext:s,indexOf:l,inherits:u,mixin:h,isArrayLike:c,each:d,map:f,reduce:p,filter:g,find:function(t,e,i){if(t&&e)for(var n=0,o=t.length;n3&&(n=dw.call(n,1));for(var a=e.length,r=0;r4&&(n=dw.call(n,1,n.length-1));for(var a=n[n.length-1],r=e.length,s=0;s1&&n&&n.length>1){var a=ft(n)/ft(o);!isFinite(a)&&(a=1),e.pinchScale=a;var r=pt(n);return e.pinchX=r[0],e.pinchY=r[1],{type:"pinch",target:t[0].target,event:e}}}}},xw="silent";vt.prototype.dispose=function(){};var _w=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],ww=function(t,e,i,n){fw.call(this),this.storage=t,this.painter=e,this.painterRoot=n,i=i||new vt,this.proxy=null,this._hovered={},this._lastTouchMoment,this._lastX,this._lastY,this._gestureMgr,it.call(this),this.setHandlerProxy(i)};ww.prototype={constructor:ww,setHandlerProxy:function(t){this.proxy&&this.proxy.dispose(),t&&(d(_w,function(e){t.on&&t.on(e,this[e],this)},this),t.handler=this),this.proxy=t},mousemove:function(t){var e=t.zrX,i=t.zrY,n=this._hovered,o=n.target;o&&!o.__zr&&(o=(n=this.findHover(n.x,n.y)).target);var a=this._hovered=this.findHover(e,i),r=a.target,s=this.proxy;s.setCursor&&s.setCursor(r?r.cursor:"default"),o&&r!==o&&this.dispatchToElement(n,"mouseout",t),this.dispatchToElement(a,"mousemove",t),r&&r!==o&&this.dispatchToElement(a,"mouseover",t)},mouseout:function(t){this.dispatchToElement(this._hovered,"mouseout",t);var e,i=t.toElement||t.relatedTarget;do{i=i&&i.parentNode}while(i&&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 o="on"+e,a=gt(e,t,i);n&&(n[o]&&(a.cancelBubble=n[o].call(n,a)),n.trigger(e,a),n=n.parent,!a.cancelBubble););a.cancelBubble||(this.trigger(e,a),this.painter&&this.painter.eachOtherLayer(function(t){"function"==typeof t[o]&&t[o].call(t,a),t.trigger&&t.trigger(e,a)}))}},findHover:function(t,e,i){for(var n=this.storage.getDisplayList(),o={x:t,y:e},a=n.length-1;a>=0;a--){var r;if(n[a]!==i&&!n[a].ignore&&(r=yt(n[a],t,e))&&(!o.topTarget&&(o.topTarget=n[a]),r!==xw)){o.target=n[a];break}}return o},processGesture:function(t,e){this._gestureMgr||(this._gestureMgr=new vw);var i=this._gestureMgr;"start"===e&&i.clear();var n=i.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&i.clear(),n){var o=n.type;t.gestureEvent=o,this.dispatchToElement({target:n.target},o,n.event)}}},d(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){ww.prototype[t]=function(e){var i=this.findHover(e.zrX,e.zrY),n=i.target;if("mousedown"===t)this._downEl=n,this._downPoint=[e.zrX,e.zrY],this._upEl=n;else if("mouseup"===t)this._upEl=n;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||uw(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(i,t,e)}}),h(ww,fw),h(ww,it);var bw="undefined"==typeof Float32Array?Array:Float32Array,Sw=(Object.freeze||Object)({create:xt,identity:_t,copy:wt,mul:bt,translate:St,rotate:Mt,scale:It,invert:Tt,clone:At}),Mw=_t,Iw=5e-5,Tw=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},Aw=Tw.prototype;Aw.transform=null,Aw.needLocalTransform=function(){return Dt(this.rotation)||Dt(this.position[0])||Dt(this.position[1])||Dt(this.scale[0]-1)||Dt(this.scale[1]-1)};var Dw=[];Aw.updateTransform=function(){var t=this.parent,e=t&&t.transform,i=this.needLocalTransform(),n=this.transform;if(i||e){n=n||xt(),i?this.getLocalTransform(n):Mw(n),e&&(i?bt(n,t.transform,n):wt(n,t.transform)),this.transform=n;var o=this.globalScaleRatio;if(null!=o&&1!==o){this.getGlobalScale(Dw);var a=Dw[0]<0?-1:1,r=Dw[1]<0?-1:1,s=((Dw[0]-a)*o+a)/Dw[0]||0,l=((Dw[1]-r)*o+r)/Dw[1]||0;n[0]*=s,n[1]*=s,n[2]*=l,n[3]*=l}this.invTransform=this.invTransform||xt(),Tt(this.invTransform,n)}else n&&Mw(n)},Aw.getLocalTransform=function(t){return Tw.getLocalTransform(this,t)},Aw.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)},Aw.restoreTransform=function(t){var e=t.dpr||1;t.setTransform(e,0,0,e,0,0)};var Cw=[],Lw=xt();Aw.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],i=t[2]*t[2]+t[3]*t[3],n=this.position,o=this.scale;Dt(e-1)&&(e=Math.sqrt(e)),Dt(i-1)&&(i=Math.sqrt(i)),t[0]<0&&(e=-e),t[3]<0&&(i=-i),n[0]=t[4],n[1]=t[5],o[0]=e,o[1]=i,this.rotation=Math.atan2(-t[1]/i,t[0]/e)}},Aw.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(bt(Cw,t.invTransform,e),e=Cw);var i=this.origin;i&&(i[0]||i[1])&&(Lw[4]=i[0],Lw[5]=i[1],bt(Cw,e,Lw),Cw[4]-=i[0],Cw[5]-=i[1],e=Cw),this.setLocalTransform(e)}},Aw.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):(t[0]=1,t[1]=1,t)},Aw.transformCoordToLocal=function(t,e){var i=[t,e],n=this.invTransform;return n&&Q(i,i,n),i},Aw.transformCoordToGlobal=function(t,e){var i=[t,e],n=this.transform;return n&&Q(i,i,n),i},Tw.getLocalTransform=function(t,e){Mw(e=e||[]);var i=t.origin,n=t.scale||[1,1],o=t.rotation||0,a=t.position||[0,0];return i&&(e[4]-=i[0],e[5]-=i[1]),It(e,e,n),o&&Mt(e,e,o),i&&(e[4]+=i[0],e[5]+=i[1]),e[4]+=a[0],e[5]+=a[1],e};var kw={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:(!i||i<1?(i=1,e=.1):e=.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:(!i||i<1?(i=1,e=.1):e=.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:(!i||i<1?(i=1,e=.1):e=.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){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},backInOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-kw.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*kw.bounceIn(2*t):.5*kw.bounceOut(2*t-1)+.5}};Ct.prototype={constructor:Ct,step:function(t,e){if(this._initialized||(this._startTime=t+this._delay,this._initialized=!0),this._paused)this._pausedTime+=e;else{var i=(t-this._startTime-this._pausedTime)/this._life;if(!(i<0)){i=Math.min(i,1);var n=this.easing,o="string"==typeof n?kw[n]:n,a="function"==typeof o?o(i):i;return this.fire("frame",a),1===i?this.loop?(this.restart(t),"restart"):(this._needsRemove=!0,"destroy"):null}}},restart:function(t){var e=(t-this._startTime-this._pausedTime)%this._life;this._startTime=t-e+this.gap,this._pausedTime=0,this._needsRemove=!1},fire:function(t,e){this[t="on"+t]&&this[t](this._target,e)},pause:function(){this._paused=!0},resume:function(){this._paused=!1}};var Pw=function(){this.head=null,this.tail=null,this._len=0},Nw=Pw.prototype;Nw.insert=function(t){var e=new Ow(t);return this.insertEntry(e),e},Nw.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},Nw.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--},Nw.len=function(){return this._len},Nw.clear=function(){this.head=this.tail=null,this._len=0};var Ow=function(t){this.value=t,this.next,this.prev},Ew=function(t){this._list=new Pw,this._map={},this._maxSize=t||10,this._lastRemovedEntry=null},Rw=Ew.prototype;Rw.put=function(t,e){var i=this._list,n=this._map,o=null;if(null==n[t]){var a=i.len(),r=this._lastRemovedEntry;if(a>=this._maxSize&&a>0){var s=i.head;i.remove(s),delete n[s.key],o=s.value,this._lastRemovedEntry=s}r?r.value=e:r=new Ow(e),r.key=t,i.insertEntry(r),n[t]=r}return o},Rw.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},Rw.clear=function(){this._list.clear(),this._map={}};var zw={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]},Bw=new Ew(20),Vw=null,Gw=Ut,Fw=Xt,Ww=(Object.freeze||Object)({parse:Gt,lift:Ht,toHex:Zt,fastLerp:Ut,fastMapToColor:Gw,lerp:Xt,mapToColor:Fw,modifyHSL:jt,modifyAlpha:Yt,stringify:qt}),Hw=Array.prototype.slice,Zw=function(t,e,i,n){this._tracks={},this._target=t,this._loop=e||!1,this._getter=i||Kt,this._setter=n||$t,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};Zw.prototype={when:function(t,e){var i=this._tracks;for(var n in e)if(e.hasOwnProperty(n)){if(!i[n]){i[n]=[];var o=this._getter(this._target,n);if(null==o)continue;0!==t&&i[n].push({time:0,value:ae(o)})}i[n].push({time:t,value:e[n]})}return this},during:function(t){return this._onframeList.push(t),this},pause:function(){for(var t=0;t=i.x&&t<=i.x+i.width&&e>=i.y&&e<=i.y+i.height},clone:function(){return new de(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}}},de.create=function(t){return new de(t.x,t.y,t.width,t.height)};var tb=function(t){t=t||{},Kw.call(this,t);for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};tb.prototype={constructor:tb,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=0&&(i.splice(n,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__storage,i=this.__zr;e&&e!==t.__storage&&(e.addToStorage(t),t instanceof tb&&t.addChildrenToStorage(e)),i&&i.refresh()},remove:function(t){var e=this.__zr,i=this.__storage,n=this._children,o=l(n,t);return o<0?this:(n.splice(o,1),t.parent=null,i&&(i.delFromStorage(t),t instanceof tb&&t.delChildrenFromStorage(i)),e&&e.refresh(),this)},removeAll:function(){var t,e,i=this._children,n=this.__storage;for(e=0;e=0&&(this.delFromStorage(t),this._roots.splice(o,1),t instanceof tb&&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:we};var ob={shadowBlur:1,shadowOffsetX:1,shadowOffsetY:1,textShadowBlur:1,textShadowOffsetX:1,textShadowOffsetY:1,textBoxShadowBlur:1,textBoxShadowOffsetX:1,textBoxShadowOffsetY:1},ab=function(t,e,i){return ob.hasOwnProperty(e)?i*=t.dpr:i},rb={NONE:0,STYLE_BIND:1,PLAIN_TEXT:2},sb=9,lb=[["shadowBlur",0],["shadowOffsetX",0],["shadowOffsetY",0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],ub=function(t){this.extendFrom(t,!1)};ub.prototype={constructor:ub,fill:"#000",stroke:null,opacity:1,fillOpacity:null,strokeOpacity:null,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,font:null,textFont:null,fontStyle:null,fontWeight:null,fontSize:null,fontFamily:null,textTag:null,textFill:"#000",textStroke:null,textWidth:null,textHeight:null,textStrokeWidth:0,textLineHeight:null,textPosition:"inside",textRect:null,textOffset:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowColor:"transparent",textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textBoxShadowColor:"transparent",textBoxShadowBlur:0,textBoxShadowOffsetX:0,textBoxShadowOffsetY:0,transformText:!1,textRotation:0,textOrigin:null,textBackgroundColor:null,textBorderColor:null,textBorderWidth:0,textBorderRadius:0,textPadding:null,rich:null,truncate:null,blend:null,bind:function(t,e,i){var n=this,o=i&&i.style,a=!o||t.__attrCachedBy!==rb.STYLE_BIND;t.__attrCachedBy=rb.STYLE_BIND;for(var r=0;r0},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?Se:be)(t,e,i),o=e.colorStops,a=0;a=0&&i.splice(n,1),t.__hoverMir=null},clearHover:function(t){for(var e=this._hoverElements,i=0;i15)break}s.__drawIndex=m,s.__drawIndex0&&t>n[0]){for(r=0;rt);r++);a=i[n[r]]}if(n.splice(r+1,0,t),i[t]=e,!e.virtual)if(a){var l=a.dom;l.nextSibling?s.insertBefore(e.dom,l.nextSibling):s.appendChild(e.dom)}else s.firstChild?s.insertBefore(e.dom,s.firstChild):s.appendChild(e.dom)}else Yw("Layer of zlevel "+t+" is not valid")},eachLayer:function(t,e){var i,n,o=this._zlevelList;for(n=0;n0?.01:0),this._needsManuallyCompositing),a.__builtin__||Yw("ZLevel "+s+" has been used by unkown layer "+a.id),a!==i&&(a.__used=!0,a.__startIndex!==o&&(a.__dirty=!0),a.__startIndex=o,a.incremental?a.__drawIndex=-1:a.__drawIndex=o,e(o),i=a),r.__dirty&&(a.__dirty=!0,a.incremental&&a.__drawIndex<0&&(a.__drawIndex=o))}e(o),this.eachBuiltinLayer(function(t,e){!t.__used&&t.getElementCount()>0&&(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]?n(i[t],e,!0):i[t]=e;for(var o=0;o=0&&this._clips.splice(e,1)},removeAnimator:function(t){for(var e=t.getClips(),i=0;i=0||n&&l(n,r)<0)){var s=e.getShallow(r);null!=s&&(o[t[a][0]]=s)}}return o}},Qb=Jb([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),tS={getLineStyle:function(t){var e=Qb(this,t),i=this.getLineDash(e.lineWidth);return i&&(e.lineDash=i),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?null:"dashed"===e?[n,n]:[i,i]}},eS=Jb([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),iS={getAreaStyle:function(t,e){return eS(this,t,e)}},nS=Math.pow,oS=Math.sqrt,aS=1e-8,rS=1e-4,sS=oS(3),lS=1/3,uS=V(),hS=V(),cS=V(),dS=Math.min,fS=Math.max,pS=Math.sin,gS=Math.cos,mS=2*Math.PI,vS=V(),yS=V(),xS=V(),_S=[],wS=[],bS={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},SS=[],MS=[],IS=[],TS=[],AS=Math.min,DS=Math.max,CS=Math.cos,LS=Math.sin,kS=Math.sqrt,PS=Math.abs,NS="undefined"!=typeof Float32Array,OS=function(t){this._saveData=!t,this._saveData&&(this.data=[]),this._ctx=null};OS.prototype={constructor:OS,_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){this._ux=PS(1/Xw/t)||0,this._uy=PS(1/Xw/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return this._ctx=t,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(bS.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=PS(t-this._xi)>this._ux||PS(e-this._yi)>this._uy||this._len<5;return this.addData(bS.L,t,e),this._ctx&&i&&(this._needsDash()?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),i&&(this._xi=t,this._yi=e),this},bezierCurveTo:function(t,e,i,n,o,a){return this.addData(bS.C,t,e,i,n,o,a),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,i,n,o,a):this._ctx.bezierCurveTo(t,e,i,n,o,a)),this._xi=o,this._yi=a,this},quadraticCurveTo:function(t,e,i,n){return this.addData(bS.Q,t,e,i,n),this._ctx&&(this._needsDash()?this._dashedQuadraticTo(t,e,i,n):this._ctx.quadraticCurveTo(t,e,i,n)),this._xi=i,this._yi=n,this},arc:function(t,e,i,n,o,a){return this.addData(bS.A,t,e,i,i,n,o-n,0,a?0:1),this._ctx&&this._ctx.arc(t,e,i,n,o,a),this._xi=CS(o)*i+t,this._yi=LS(o)*i+e,this},arcTo:function(t,e,i,n,o){return this._ctx&&this._ctx.arcTo(t,e,i,n,o),this},rect:function(t,e,i,n){return this._ctx&&this._ctx.rect(t,e,i,n),this.addData(bS.R,t,e,i,n),this},closePath:function(){this.addData(bS.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,this._dashIdx=0;for(var e=0,i=0;ie.length&&(this._expandData(),e=this.data);for(var i=0;i0&&f<=t||h<0&&f>=t||0===h&&(c>0&&p<=e||c<0&&p>=e);)f+=h*(i=r[n=this._dashIdx]),p+=c*i,this._dashIdx=(n+1)%g,h>0&&fl||c>0&&pu||s[n%2?"moveTo":"lineTo"](h>=0?AS(f,t):DS(f,t),c>=0?AS(p,e):DS(p,e));h=f-t,c=p-e,this._dashOffset=-kS(h*h+c*c)},_dashedBezierTo:function(t,e,i,n,o,a){var r,s,l,u,h,c=this._dashSum,d=this._dashOffset,f=this._lineDash,p=this._ctx,g=this._xi,m=this._yi,v=Qi,y=0,x=this._dashIdx,_=f.length,w=0;for(d<0&&(d=c+d),d%=c,r=0;r<1;r+=.1)s=v(g,t,i,o,r+.1)-v(g,t,i,o,r),l=v(m,e,n,a,r+.1)-v(m,e,n,a,r),y+=kS(s*s+l*l);for(;x<_&&!((w+=f[x])>d);x++);for(r=(w-d)/y;r<=1;)u=v(g,t,i,o,r),h=v(m,e,n,a,r),x%2?p.moveTo(u,h):p.lineTo(u,h),r+=f[x]/y,x=(x+1)%_;x%2!=0&&p.lineTo(o,a),s=o-u,l=a-h,this._dashOffset=-kS(s*s+l*l)},_dashedQuadraticTo:function(t,e,i,n){var o=i,a=n;i=(i+2*t)/3,n=(n+2*e)/3,t=(this._xi+2*t)/3,e=(this._yi+2*e)/3,this._dashedBezierTo(t,e,i,n,o,a)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,NS&&(this.data=new Float32Array(t)))},getBoundingRect:function(){SS[0]=SS[1]=IS[0]=IS[1]=Number.MAX_VALUE,MS[0]=MS[1]=TS[0]=TS[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,i=0,n=0,o=0,a=0;al||PS(r-o)>u||c===h-1)&&(t.lineTo(a,r),n=a,o=r);break;case bS.C:t.bezierCurveTo(s[c++],s[c++],s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case bS.Q:t.quadraticCurveTo(s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case bS.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=g>m?g:m,b=g>m?1:g/m,S=g>m?m/g:1,M=v+y;Math.abs(g-m)>.001?(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=CS(v)*g+f,i=LS(v)*m+p),n=CS(M)*g+f,o=LS(M)*m+p;break;case bS.R:e=n=s[c],i=o=s[c+1],t.rect(s[c++],s[c++],s[c++],s[c++]);break;case bS.Z:t.closePath(),n=e,o=i}}}},OS.CMD=bS;var ES=2*Math.PI,RS=2*Math.PI,zS=OS.CMD,BS=2*Math.PI,VS=1e-4,GS=[-1,-1,-1],FS=[-1,-1],WS=fb.prototype.getCanvasPattern,HS=Math.abs,ZS=new OS(!0);kn.prototype={constructor:kn,type:"path",__dirtyPath:!0,strokeContainThreshold:5,subPixelOptimize:!1,brush:function(t,e){var i=this.style,n=this.path||ZS,o=i.hasStroke(),a=i.hasFill(),r=i.fill,s=i.stroke,l=a&&!!r.colorStops,u=o&&!!s.colorStops,h=a&&!!r.image,c=o&&!!s.image;if(i.bind(t,this,e),this.setTransform(t),this.__dirty){var d;l&&(d=d||this.getBoundingRect(),this._fillGradient=i.getGradient(t,r,d)),u&&(d=d||this.getBoundingRect(),this._strokeGradient=i.getGradient(t,s,d))}l?t.fillStyle=this._fillGradient:h&&(t.fillStyle=WS.call(r,t)),u?t.strokeStyle=this._strokeGradient:c&&(t.strokeStyle=WS.call(s,t));var f=i.lineDash,p=i.lineDashOffset,g=!!t.setLineDash,m=this.getGlobalScale();if(n.setScale(m[0],m[1]),this.__dirtyPath||f&&!g&&o?(n.beginPath(t),f&&!g&&(n.setLineDash(f),n.setLineDashOffset(p)),this.buildPath(n,this.shape,!1),this.path&&(this.__dirtyPath=!1)):(t.beginPath(),this.path.rebuildPath(t)),a)if(null!=i.fillOpacity){v=t.globalAlpha;t.globalAlpha=i.fillOpacity*i.opacity,n.fill(t),t.globalAlpha=v}else n.fill(t);if(f&&g&&(t.setLineDash(f),t.lineDashOffset=p),o)if(null!=i.strokeOpacity){var v=t.globalAlpha;t.globalAlpha=i.strokeOpacity*i.opacity,n.stroke(t),t.globalAlpha=v}else n.stroke(t);f&&g&&t.setLineDash([]),null!=i.text&&(this.restoreTransform(t),this.drawRectText(t,this.getBoundingRect()))},buildPath:function(t,e,i){},createPathProxy:function(){this.path=new OS},getBoundingRect:function(){var t=this._rect,e=this.style,i=!t;if(i){var n=this.path;n||(n=this.path=new OS),this.__dirtyPath&&(n.beginPath(),this.buildPath(n,this.shape,!1)),t=n.getBoundingRect()}if(this._rect=t,e.hasStroke()){var o=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||i){o.copy(t);var a=e.lineWidth,r=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(a=Math.max(a,this.strokeContainThreshold||4)),r>1e-10&&(o.width+=a/r,o.height+=a/r,o.x-=a/r/2,o.y-=a/r/2)}return o}return t},contain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this.getBoundingRect(),o=this.style;if(t=i[0],e=i[1],n.contain(t,e)){var a=this.path.data;if(o.hasStroke()){var r=o.lineWidth,s=o.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(o.hasFill()||(r=Math.max(r,this.strokeContainThreshold)),Ln(a,r/s,t,e)))return!0}if(o.hasFill())return Cn(a,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=this.__dirtyText=!0,this.__zr&&this.__zr.refresh(),this.__clipTarget&&this.__clipTarget.dirty()},animateShape:function(t){return this.animate("shape",t)},attrKV:function(t,e){"shape"===t?(this.setShape(e),this.__dirtyPath=!0,this._rect=null):di.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var i=this.shape;if(i){if(w(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&&HS(t[0]-1)>1e-10&&HS(t[3]-1)>1e-10?Math.sqrt(HS(t[0]*t[3]-t[2]*t[1])):1}},kn.extend=function(t){var e=function(e){kn.call(this,e),t.style&&this.style.extendFrom(t.style,!1);var i=t.shape;if(i){this.shape=this.shape||{};var n=this.shape;for(var o in i)!n.hasOwnProperty(o)&&i.hasOwnProperty(o)&&(n[o]=i[o])}t.init&&t.init.call(this,e)};u(e,kn);for(var i in t)"style"!==i&&"shape"!==i&&(e.prototype[i]=t[i]);return e},u(kn,di);var US=OS.CMD,XS=[[],[],[]],jS=Math.sqrt,YS=Math.atan2,qS=function(t,e){var i,n,o,a,r,s,l=t.data,u=US.M,h=US.C,c=US.L,d=US.R,f=US.A,p=US.Q;for(o=0,a=0;o=11?function(){var e,i=this.__clipPaths,n=this.style;if(i)for(var o=0;oi-2?i-1:c+1],u=t[c>i-3?i-1:c+2]);var p=d*d,g=d*p;n.push([zn(s[0],f[0],l[0],u[0],d,p,g),zn(s[1],f[1],l[1],u[1],d,p,g)])}return n},dM=function(t,e,i,n){var o,a,r,s,l=[],u=[],h=[],c=[];if(n){r=[1/0,1/0],s=[-1/0,-1/0];for(var d=0,f=t.length;d=i&&a>=o)return{x:i,y:o,width:n-i,height:a-o}},createIcon:ko,Group:tb,Image:fi,Text:aM,Circle:rM,Sector:uM,Ring:hM,Polygon:fM,Polyline:pM,Rect:vM,Line:xM,BezierCurve:wM,Arc:bM,IncrementalDisplayable:Hn,CompoundPath:SM,LinearGradient:IM,RadialGradient:TM,BoundingRect:de}),zM=["textStyle","color"],BM={getTextColor:function(t){var e=this.ecModel;return this.getShallow("color")||(!t&&e?e.get(zM):null)},getFont:function(){return bo({fontStyle:this.getShallow("fontStyle"),fontWeight:this.getShallow("fontWeight"),fontSize:this.getShallow("fontSize"),fontFamily:this.getShallow("fontFamily")},this.ecModel)},getTextRect:function(t){return ke(t,this.getFont(),this.getShallow("align"),this.getShallow("verticalAlign")||this.getShallow("baseline"),this.getShallow("padding"),this.getShallow("rich"),this.getShallow("truncateText"))}},VM=Jb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]),GM={getItemStyle:function(t,e){var i=VM(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]}},FM=h,WM=Bi();Po.prototype={constructor:Po,init:null,mergeOption:function(t){n(this.option,t,!0)},get:function(t,e){return null==t?this.option:No(this.option,this.parsePath(t),!e&&Oo(this,t))},getShallow:function(t,e){var i=this.option,n=null==i?i:i[t],o=!e&&Oo(this,t);return null==n&&o&&(n=o.getShallow(t)),n},getModel:function(t,e){var i,n=null==t?this.option:No(this.option,t=this.parsePath(t));return e=e||(i=Oo(this,t))&&i.getModel(t),new Po(n,e,this.ecModel)},isEmpty:function(){return null==this.option},restoreData:function(){},clone:function(){return new(0,this.constructor)(i(this.option))},setReadOnly:function(t){},parsePath:function(t){return"string"==typeof t&&(t=t.split(".")),t},customizeGetParent:function(t){WM(this).getParent=t},isAnimationEnabled:function(){if(!U_.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},Xi(Po),ji(Po),FM(Po,tS),FM(Po,iS),FM(Po,BM),FM(Po,GM);var HM=0,ZM=1e-4,UM=9007199254740991,XM=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/,jM=(Object.freeze||Object)({linearMap:zo,parsePercent:Bo,round:Vo,asc:Go,getPrecision:Fo,getPrecisionSafe:Wo,getPixelPrecision:Ho,getPercentWithPrecision:Zo,MAX_SAFE_INTEGER:UM,remRadian:Uo,isRadianAroundZero:Xo,parseDate:jo,quantity:Yo,nice:Ko,quantile:function(t,e){var i=(t.length-1)*e+1,n=Math.floor(i),o=+t[n-1],a=i-n;return a?o+a*(t[n]-o):o},reformIntervals:$o,isNumeric:Jo}),YM=L,qM=/([&<>"'])/g,KM={"&":"&","<":"<",">":">",'"':""","'":"'"},$M=["a","b","c","d","e","f","g"],JM=function(t,e){return"{"+t+(null==e?"":e)+"}"},QM=ze,tI=ke,eI=(Object.freeze||Object)({addCommas:Qo,toCamelCase:ta,normalizeCssArray:YM,encodeHTML:ea,formatTpl:ia,formatTplSimple:na,getTooltipMarker:oa,formatTime:ra,capitalFirst:sa,truncateText:QM,getTextRect:tI}),iI=d,nI=["left","right","top","bottom","width","height"],oI=[["width","left","right"],["height","top","bottom"]],aI=la,rI=(v(la,"vertical"),v(la,"horizontal"),Bi()),sI=Po.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,i,n){Po.call(this,t,e,i,n),this.uid=Eo("ec_cpt_model")},init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i)},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,o=i?pa(t):{};n(t,e.getTheme().get(this.mainType)),n(t,this.getDefaultOption()),i&&fa(t,o,i)},mergeOption:function(t,e){n(this.option,t,!0);var i=this.layoutMode;i&&fa(this.option,t,i)},optionUpdated:function(t,e){},getDefaultOption:function(){var t=rI(this);if(!t.defaultOption){for(var e=[],i=this.constructor;i;){var o=i.prototype.defaultOption;o&&e.push(o),i=i.superClass}for(var a={},r=e.length-1;r>=0;r--)a=n(a,e[r],!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)})}});Ki(sI,{registerWhenExtend:!0}),function(t){var e={};t.registerSubTypeDefaulter=function(t,i){t=Zi(t),e[t.main]=i},t.determineSubType=function(i,n){var o=n.type;if(!o){var a=Zi(i).main;t.hasSubTypes(i)&&e[a]&&(o=e[a](n))}return o}}(sI),function(t,e){function i(t){var i={},a=[];return d(t,function(r){var s=n(i,r),u=o(s.originalDeps=e(r),t);s.entryCount=u.length,0===s.entryCount&&a.push(r),d(u,function(t){l(s.predecessor,t)<0&&s.predecessor.push(t);var e=n(i,t);l(e.successor,t)<0&&e.successor.push(r)})}),{graph:i,noEntryList:a}}function n(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}function o(t,e){var i=[];return d(t,function(t){l(e,t)>=0&&i.push(t)}),i}t.topologicalTravel=function(t,e,n,o){function a(t){s[t].entryCount--,0===s[t].entryCount&&l.push(t)}if(t.length){var r=i(e),s=r.graph,l=r.noEntryList,u={};for(d(t,function(t){u[t]=!0});l.length;){var h=l.pop(),c=s[h],f=!!u[h];f&&(n.call(o,h,c.originalDeps.slice()),delete u[h]),d(c.successor,f?function(t){u[t]=!0,a(t)}:a)}d(u,function(){throw new Error("Circle dependency may exists")})}}}(sI,function(t){var e=[];return d(sI.getClassesByMainType(t),function(t){e=e.concat(t.prototype.dependencies||[])}),e=f(e,function(t){return Zi(t).main}),"dataset"!==t&&l(e,"dataset")<=0&&e.unshift("dataset"),e}),h(sI,{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 lI="";"undefined"!=typeof navigator&&(lI=navigator.platform||"");var uI={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],gradientColor:["#f6efa6","#d88273","#bf444c"],textStyle:{fontFamily:lI.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},hI=Bi(),cI={clearColorPalette:function(){hI(this).colorIdx=0,hI(this).colorNameMap={}},getColorFromPalette:function(t,e,i){var n=hI(e=e||this),o=n.colorIdx||0,a=n.colorNameMap=n.colorNameMap||{};if(a.hasOwnProperty(t))return a[t];var r=Di(this.get("color",!0)),s=this.get("colorLayer",!0),l=null!=i&&s?ma(s,i):r;if((l=l||r)&&l.length){var u=l[o];return t&&(a[t]=u),n.colorIdx=(o+1)%l.length,u}}},dI={cartesian2d:function(t,e,i,n){var o=t.getReferringComponents("xAxis")[0],a=t.getReferringComponents("yAxis")[0];e.coordSysDims=["x","y"],i.set("x",o),i.set("y",a),ya(o)&&(n.set("x",o),e.firstCategoryDimIndex=0),ya(a)&&(n.set("y",a),e.firstCategoryDimIndex=1)},singleAxis:function(t,e,i,n){var o=t.getReferringComponents("singleAxis")[0];e.coordSysDims=["single"],i.set("single",o),ya(o)&&(n.set("single",o),e.firstCategoryDimIndex=0)},polar:function(t,e,i,n){var o=t.getReferringComponents("polar")[0],a=o.findAxisModel("radiusAxis"),r=o.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],i.set("radius",a),i.set("angle",r),ya(a)&&(n.set("radius",a),e.firstCategoryDimIndex=0),ya(r)&&(n.set("angle",r),e.firstCategoryDimIndex=1)},geo:function(t,e,i,n){e.coordSysDims=["lng","lat"]},parallel:function(t,e,i,n){var o=t.ecModel,a=o.getComponent("parallel",t.get("parallelIndex")),r=e.coordSysDims=a.dimensions.slice();d(a.parallelAxisIndex,function(t,a){var s=o.getComponent("parallelAxis",t),l=r[a];i.set(l,s),ya(s)&&null==e.firstCategoryDimIndex&&(n.set(l,s),e.firstCategoryDimIndex=a)})}},fI="original",pI="arrayRows",gI="objectRows",mI="keyedColumns",vI="unknown",yI="typedArray",xI="column",_I="row";xa.seriesDataToSource=function(t){return new xa({data:t,sourceFormat:S(t)?yI:fI,fromDataset:!1})},ji(xa);var wI=Bi(),bI="\0_ec_inner",SI=Po.extend({init:function(t,e,i,n){i=i||{},this.option=null,this._theme=new Po(i),this._optionManager=n},setOption:function(t,e){k(!(bI 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)):Oa.call(this,n),e=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var o=i.getTimelineOption(this);o&&(this.mergeOption(o),e=!0)}if(!t||"recreate"===t||"media"===t){var a=i.getMediaOption(this,this._api);a.length&&d(a,function(t){this.mergeOption(t,e=!0)},this)}return e},mergeOption:function(t){var e=this.option,o=this._componentsMap,r=[];ba(this),d(t,function(t,o){null!=t&&(sI.hasClass(o)?o&&r.push(o):e[o]=null==e[o]?i(t):n(e[o],t,!0))}),sI.topologicalTravel(r,sI.getAllClassMainTypes(),function(i,n){var r=Di(t[i]),s=Pi(o.get(i),r);Ni(s),d(s,function(t,e){var n=t.option;w(n)&&(t.keyInfo.mainType=i,t.keyInfo.subType=Ra(i,n,t.exist))});var l=Ea(o,n);e[i]=[],o.set(i,[]),d(s,function(t,n){var r=t.exist,s=t.option;if(k(w(s)||r,"Empty component definition"),s){var u=sI.getClass(i,t.keyInfo.subType,!0);if(r&&r instanceof u)r.name=t.keyInfo.name,r.mergeOption(s,this),r.optionUpdated(s,!1);else{var h=a({dependentModels:l,componentIndex:n},t.keyInfo);a(r=new u(s,this,this,h),h),r.init(s,this,this,h),r.optionUpdated(null,!0)}}else r.mergeOption({},this),r.optionUpdated({},!1);o.get(i)[n]=r,e[i][n]=r.option},this),"series"===i&&za(this,o.get("series"))},this),this._seriesIndicesMap=R(this._seriesIndices=this._seriesIndices||[])},getOption:function(){var t=i(this.option);return d(t,function(e,i){if(sI.hasClass(i)){for(var n=(e=Di(e)).length-1;n>=0;n--)Ei(e[n])&&e.splice(n,1);t[i]=e}}),delete t[bI],t},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=t.index,n=t.id,o=t.name,a=this._componentsMap.get(e);if(!a||!a.length)return[];var r;if(null!=i)y(i)||(i=[i]),r=g(f(i,function(t){return a[t]}),function(t){return!!t});else if(null!=n){var s=y(n);r=g(a,function(t){return s&&l(n,t.id)>=0||!s&&t.id===n})}else if(null!=o){var u=y(o);r=g(a,function(t){return u&&l(o,t.name)>=0||!u&&t.name===o})}else r=a.slice();return Ba(r,t)},findComponents:function(t){var e=t.query,i=t.mainType,n=function(t){var e=i+"Index",n=i+"Id",o=i+"Name";return!t||null==t[e]&&null==t[n]&&null==t[o]?null:{mainType:i,index:t[e],id:t[n],name:t[o]}}(e);return function(e){return t.filter?g(e,t.filter):e}(Ba(n?this.queryComponents(n):this._componentsMap.get(i),t))},eachComponent:function(t,e,i){var n=this._componentsMap;"function"==typeof t?(i=e,e=t,n.each(function(t,n){d(t,function(t,o){e.call(i,n,t,o)})})):_(t)?d(n.get(t),e,i):w(t)&&d(this.findComponents(t),e,i)},getSeriesByName:function(t){return g(this._componentsMap.get("series"),function(e){return e.name===t})},getSeriesByIndex:function(t){return this._componentsMap.get("series")[t]},getSeriesByType:function(t){return g(this._componentsMap.get("series"),function(e){return e.subType===t})},getSeries:function(){return this._componentsMap.get("series").slice()},getSeriesCount:function(){return this._componentsMap.get("series").length},eachSeries:function(t,e){d(this._seriesIndices,function(i){var n=this._componentsMap.get("series")[i];t.call(e,n,i)},this)},eachRawSeries:function(t,e){d(this._componentsMap.get("series"),t,e)},eachSeriesByType:function(t,e,i){d(this._seriesIndices,function(n){var o=this._componentsMap.get("series")[n];o.subType===t&&e.call(i,o,n)},this)},eachRawSeriesByType:function(t,e,i){return d(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){za(this,g(this._componentsMap.get("series"),t,e))},restoreData:function(t){var e=this._componentsMap;za(this,e.get("series"));var i=[];e.each(function(t,e){i.push(e)}),sI.topologicalTravel(i,sI.getAllClassMainTypes(),function(i,n){d(e.get(i),function(e){("series"!==i||!Pa(e,t))&&e.restoreData()})})}});h(SI,cI);var MI=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption","getViewOfComponentModel","getViewOfSeriesModel"],II={};Ga.prototype={constructor:Ga,create:function(t,e){var i=[];d(II,function(n,o){var a=n.create(t,e);i=i.concat(a||[])}),this._coordinateSystems=i},update:function(t,e){d(this._coordinateSystems,function(i){i.update&&i.update(t,e)})},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},Ga.register=function(t,e){II[t]=e},Ga.get=function(t){return II[t]};var TI=d,AI=i,DI=f,CI=n,LI=/^(min|max)?(.+)$/;Fa.prototype={constructor:Fa,setOption:function(t,e){t&&d(Di(t.series),function(t){t&&t.data&&S(t.data)&&N(t.data)}),t=AI(t,!0);var i=this._optionBackup,n=Wa.call(this,t,e,!i);this._newBaseOption=n.baseOption,i?(Xa(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=DI(e.timelineOptions,AI),this._mediaList=DI(e.mediaList,AI),this._mediaDefault=AI(e.mediaDefault),this._currentMediaIndices=[],AI(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i.length){var n=t.getComponent("timeline");n&&(e=AI(i[n.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e=this._api.getWidth(),i=this._api.getHeight(),n=this._mediaList,o=this._mediaDefault,a=[],r=[];if(!n.length&&!o)return r;for(var s=0,l=n.length;s=1)&&(t=1),t}var i=this._upstream,n=t&&t.skip;if(this._dirty&&i){var o=this.context;o.data=o.outputData=i.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this);var a;this._plan&&!n&&(a=this._plan(this.context));var r=e(this._modBy),s=this._modDataCount||0,l=e(t&&t.modBy),u=t&&t.modDataCount||0;r===l&&s===u||(a="reset");var h;(this._dirty||"reset"===a)&&(this._dirty=!1,h=vr(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&&(h||d=i?null:t1&&a>0?e:t}};return s}();ZI.dirty=function(){this._dirty=!0,this._onDirty&&this._onDirty(this.context)},ZI.unfinished=function(){return this._progress&&this._dueIndex":"\n",s="richText"===n,l={},u=0,h=this.getData(),c=h.mapDimension("defaultedTooltip",!0),f=c.length,g=this.getRawValue(t),m=y(g),v=h.getItemVisual(t,"color");w(v)&&v.colorStops&&(v=(v.colorStops[0]||{}).color),v=v||"transparent";var x=(f>1||m&&!f?function(i){function o(t,i){var o=h.getDimensionInfo(i);if(o&&!1!==o.otherDims.tooltip){var c=o.type,d="sub"+a.seriesIndex+"at"+u,p=oa({color:v,type:"subItem",renderMode:n,markerId:d}),g="string"==typeof p?p:p.content,m=(r?g+ea(o.displayName||"-")+": ":"")+ea("ordinal"===c?t+"":"time"===c?e?"":ra("yyyy/MM/dd hh:mm:ss",t):Qo(t));m&&f.push(m),s&&(l[d]=v,++u)}}var r=p(i,function(t,e,i){var n=h.getDimensionInfo(i);return t|=n&&!1!==n.tooltip&&null!=n.displayName},0),f=[];c.length?d(c,function(e){o(dr(h,t,e),e)}):d(i,o);var g=r?s?"\n":"
":"",m=g+f.join(g||", ");return{renderMode:n,content:m,style:l}}(g):o(f?dr(h,t,c[0]):m?g[0]:g)).content,_=a.seriesIndex+"at"+u,b=oa({color:v,type:"item",renderMode:n,markerId:_});l[_]=v,++u;var S=h.getName(t),M=this.name;Oi(this)||(M=""),M=M?ea(M)+(e?": ":r):"";var I="string"==typeof b?b:b.content;return{html:e?I+M+x:M+I+(S?ea(S)+": "+x:x),markers:l}},isAnimationEnabled:function(){if(U_.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){this.dataTask.dirty()},getColorFromPalette:function(t,e,i){var n=this.ecModel,o=cI.getColorFromPalette.call(this,t,e,i);return o||(o=n.getColorFromPalette(t,e,i)),o},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});h(jI,HI),h(jI,cI);var YI=function(){this.group=new tb,this.uid=Eo("viewComponent")};YI.prototype={constructor:YI,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){},filterForExposedEvent:null};var qI=YI.prototype;qI.updateView=qI.updateLayout=qI.updateVisual=function(t,e,i,n){},Xi(YI),Ki(YI,{registerWhenExtend:!0});var KI=function(){var t=Bi();return function(e){var i=t(e),n=e.pipelineContext,o=i.large,a=i.progressiveRender,r=i.large=n.large,s=i.progressiveRender=n.progressiveRender;return!!(o^r||a^s)&&"reset"}},$I=Bi(),JI=KI();Tr.prototype={type:"chart",init:function(t,e){},render:function(t,e,i,n){},highlight:function(t,e,i,n){Dr(t.getData(),n,"emphasis")},downplay:function(t,e,i,n){Dr(t.getData(),n,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){},incrementalPrepareRender:null,incrementalRender:null,updateTransform:null,filterForExposedEvent:null};var QI=Tr.prototype;QI.updateView=QI.updateLayout=QI.updateVisual=function(t,e,i,n){this.render(t,e,i,n)},Xi(Tr),Ki(Tr,{registerWhenExtend:!0}),Tr.markUpdateMethod=function(t,e){$I(t).updateMethod=e};var tT={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)}}},eT="\0__throttleOriginMethod",iT="\0__throttleRate",nT="\0__throttleType",oT={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var i=t.getData(),n=(t.visualColorAccessPath||"itemStyle.color").split("."),o=t.get(n)||t.getColorFromPalette(t.name,null,e.getSeriesCount());if(i.setVisual("color",o),!e.isSeriesFiltered(t)){"function"!=typeof o||o instanceof MM||i.each(function(e){i.setItemVisual(e,"color",o(t.getDataParams(e)))});return{dataEach:i.hasItemOption?function(t,e){var i=t.getItemModel(e).get(n,!0);null!=i&&t.setItemVisual(e,"color",i)}:null}}}},aT={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:""}}}},rT=function(t,e){function i(t,e){if("string"!=typeof t)return t;var i=t;return d(e,function(t,e){i=i.replace(new RegExp("\\{\\s*"+e+"\\s*\\}","g"),t)}),i}function n(t){var e=a.get(t);if(null==e){for(var i=t.split("."),n=aT.aria,o=0;o1?"series.multiple.prefix":"series.single.prefix"),{seriesCount:r}),e.eachSeries(function(t,e){if(e1?"multiple":"single")+".";a=i(a=n(s?u+"withName":u+"withoutName"),{seriesId:t.seriesIndex,seriesName:t.get("name"),seriesType:o(t.subType)});var c=t.getData();window.data=c,c.count()>l?a+=i(n("data.partialData"),{displayCnt:l}):a+=n("data.allData");for(var d=[],p=0;pi.blockIndex?i.step:null,a=n&&n.modDataCount;return{step:o,modBy:null!=a?Math.ceil(a/o):null,modDataCount:a}}},lT.getPipeline=function(t){return this._pipelineMap.get(t)},lT.updateStreamModes=function(t,e){var i=this._pipelineMap.get(t.uid),n=t.getData().count(),o=i.progressiveEnabled&&e.incrementalPrepareRender&&n>=i.threshold,a=t.get("large")&&n>=t.get("largeThreshold"),r="mod"===t.get("progressiveChunkMode")?n:null;t.pipelineContext=i.context={progressiveRender:o,modDataCount:r,large:a}},lT.restorePipelines=function(t){var e=this,i=e._pipelineMap=R();t.eachSeries(function(t){var n=t.getProgressive(),o=t.uid;i.set(o,{id:o,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:n&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(n||700),count:0}),Xr(e,t,t.dataTask)})},lT.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.ecInstance.getModel(),i=this.api;d(this._allHandlers,function(n){var o=t.get(n.uid)||t.set(n.uid,[]);n.reset&&Rr(this,n,o,e,i),n.overallReset&&zr(this,n,o,e,i)},this)},lT.prepareView=function(t,e,i,n){var o=t.renderTask,a=o.context;a.model=e,a.ecModel=i,a.api=n,o.__block=!t.incrementalPrepareRender,Xr(this,e,o)},lT.performDataProcessorTasks=function(t,e){Er(this,this._dataProcessorHandlers,t,e,{block:!0})},lT.performVisualTasks=function(t,e,i){Er(this,this._visualHandlers,t,e,i)},lT.performSeriesTasks=function(t){var e;t.eachSeries(function(t){e|=t.dataTask.perform()}),this.unfinished|=e},lT.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 uT=lT.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},hT=Zr(0);Or.wrapStageHandler=function(t,e){return x(t)&&(t={overallReset:t,seriesType:jr(t)}),t.uid=Eo("stageHandler"),e&&(t.visualType=e),t};var cT,dT={},fT={};Yr(dT,SI),Yr(fT,Va),dT.eachSeriesByType=dT.eachRawSeriesByType=function(t){cT=t},dT.eachComponent=function(t){"series"===t.mainType&&t.subType&&(cT=t.subType)};var pT=["#37A2DA","#32C5E9","#67E0E3","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#E062AE","#E690D1","#e7bcf3","#9d96f5","#8378EA","#96BFFF"],gT={color:pT,colorLayer:[["#37A2DA","#ffd85c","#fd7b5f"],["#37A2DA","#67E0E3","#FFDB5C","#ff9f7f","#E062AE","#9d96f5"],["#37A2DA","#32C5E9","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#e7bcf3","#8378EA","#96BFFF"],pT]},mT=["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53","#eedd78","#73a373","#73b9bc","#7289ab","#91ca8c","#f49f42"],vT={color:mT,backgroundColor:"#333",tooltip:{axisPointer:{lineStyle:{color:"#eee"},crossStyle:{color:"#eee"}}},legend:{textStyle:{color:"#eee"}},textStyle:{color:"#eee"},title:{textStyle:{color:"#eee"}},toolbox:{iconStyle:{normal:{borderColor:"#eee"}}},dataZoom:{textStyle:{color:"#eee"}},visualMap:{textStyle:{color:"#eee"}},timeline:{lineStyle:{color:"#eee"},itemStyle:{normal:{color:mT[1]}},label:{normal:{textStyle:{color:"#eee"}}},controlStyle:{normal:{color:"#eee",borderColor:"#eee"}}},timeAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},logAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},valueAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},categoryAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},line:{symbol:"circle"},graph:{color:mT},gauge:{title:{textStyle:{color:"#eee"}}},candlestick:{itemStyle:{normal:{color:"#FD1050",color0:"#0CF49B",borderColor:"#FD1050",borderColor0:"#0CF49B"}}}};vT.categoryAxis.splitLine.show=!1,sI.extend({type:"dataset",defaultOption:{seriesLayoutBy:xI,sourceHeader:null,dimensions:null,source:null},optionUpdated:function(){_a(this)}}),YI.extend({type:"dataset"});var yT=kn.extend({type:"ellipse",shape:{cx:0,cy:0,rx:0,ry:0},buildPath:function(t,e){var i=.5522848,n=e.cx,o=e.cy,a=e.rx,r=e.ry,s=a*i,l=r*i;t.moveTo(n-a,o),t.bezierCurveTo(n-a,o-l,n-s,o-r,n,o-r),t.bezierCurveTo(n+s,o-r,n+a,o-l,n+a,o),t.bezierCurveTo(n+a,o+l,n+s,o+r,n,o+r),t.bezierCurveTo(n-s,o+r,n-a,o+l,n-a,o),t.closePath()}}),xT=/[\s,]+/;Kr.prototype.parse=function(t,e){e=e||{};var i=qr(t);if(!i)throw new Error("Illegal svg");var n=new tb;this._root=n;var o=i.getAttribute("viewBox")||"",a=parseFloat(i.getAttribute("width")||e.width),r=parseFloat(i.getAttribute("height")||e.height);isNaN(a)&&(a=null),isNaN(r)&&(r=null),ts(i,n,null,!0);for(var s=i.firstChild;s;)this._parseNode(s,n),s=s.nextSibling;var l,u;if(o){var h=P(o).split(xT);h.length>=4&&(l={x:parseFloat(h[0]||0),y:parseFloat(h[1]||0),width:parseFloat(h[2]),height:parseFloat(h[3])})}if(l&&null!=a&&null!=r&&(u=os(l,a,r),!e.ignoreViewBox)){var c=n;(n=new tb).add(c),c.scale=u.scale.slice(),c.position=u.position.slice()}return e.ignoreRootClip||null==a||null==r||n.setClipPath(new vM({shape:{x:0,y:0,width:a,height:r}})),{root:n,width:a,height:r,viewBoxRect:l,viewBoxTransform:u}},Kr.prototype._parseNode=function(t,e){var i=t.nodeName.toLowerCase();"defs"===i?this._isDefine=!0:"text"===i&&(this._isText=!0);var n;if(this._isDefine){if(r=wT[i]){var o=r.call(this,t),a=t.getAttribute("id");a&&(this._defs[a]=o)}}else{var r=_T[i];r&&(n=r.call(this,t,e),e.add(n))}for(var s=t.firstChild;s;)1===s.nodeType&&this._parseNode(s,n),3===s.nodeType&&this._isText&&this._parseText(s,n),s=s.nextSibling;"defs"===i?this._isDefine=!1:"text"===i&&(this._isText=!1)},Kr.prototype._parseText=function(t,e){if(1===t.nodeType){var i=t.getAttribute("dx")||0,n=t.getAttribute("dy")||0;this._textX+=parseFloat(i),this._textY+=parseFloat(n)}var o=new aM({style:{text:t.textContent,transformText:!0},position:[this._textX||0,this._textY||0]});Jr(e,o),ts(t,o,this._defs);var a=o.style.fontSize;a&&a<9&&(o.style.fontSize=9,o.scale=o.scale||[1,1],o.scale[0]*=a/9,o.scale[1]*=a/9);var r=o.getBoundingRect();return this._textX+=r.width,e.add(o),o};var _T={g:function(t,e){var i=new tb;return Jr(e,i),ts(t,i,this._defs),i},rect:function(t,e){var i=new vM;return Jr(e,i),ts(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 rM;return Jr(e,i),ts(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 xM;return Jr(e,i),ts(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 yT;return Jr(e,i),ts(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=Qr(i));var n=new fM({shape:{points:i||[]}});return Jr(e,n),ts(t,n,this._defs),n},polyline:function(t,e){var i=new kn;Jr(e,i),ts(t,i,this._defs);var n=t.getAttribute("points");return n&&(n=Qr(n)),new pM({shape:{points:n||[]}})},image:function(t,e){var i=new fi;return Jr(e,i),ts(t,i,this._defs),i.setStyle({image:t.getAttribute("xlink:href"),x:t.getAttribute("x"),y:t.getAttribute("y"),width:t.getAttribute("width"),height:t.getAttribute("height")}),i},text:function(t,e){var i=t.getAttribute("x")||0,n=t.getAttribute("y")||0,o=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0;this._textX=parseFloat(i)+parseFloat(o),this._textY=parseFloat(n)+parseFloat(a);var r=new tb;return Jr(e,r),ts(t,r,this._defs),r},tspan:function(t,e){var i=t.getAttribute("x"),n=t.getAttribute("y");null!=i&&(this._textX=parseFloat(i)),null!=n&&(this._textY=parseFloat(n));var o=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0,r=new tb;return Jr(e,r),ts(t,r,this._defs),this._textX+=o,this._textY+=a,r},path:function(t,e){var i=En(t.getAttribute("d")||"");return Jr(e,i),ts(t,i,this._defs),i}},wT={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||0,10),i=parseInt(t.getAttribute("y1")||0,10),n=parseInt(t.getAttribute("x2")||10,10),o=parseInt(t.getAttribute("y2")||0,10),a=new IM(e,i,n,o);return $r(t,a),a},radialgradient:function(t){}},bT={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"},ST=/url\(\s*#(.*?)\)/,MT=/(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g,IT=/([^\s:;]+)\s*:\s*([^:;]+)/g,TT=R(),AT={registerMap:function(t,e,i){var n;return y(e)?n=e:e.svg?n=[{type:"svg",source:e.svg,specialAreas:e.specialAreas}]:(e.geoJson&&!e.features&&(i=e.specialAreas,e=e.geoJson),n=[{type:"geoJSON",source:e,specialAreas:i}]),d(n,function(t){var e=t.type;"geoJson"===e&&(e=t.type="geoJSON"),(0,DT[e])(t)}),TT.set(t,n)},retrieveMap:function(t){return TT.get(t)}},DT={geoJSON:function(t){var e=t.source;t.geoJSON=_(e)?"undefined"!=typeof JSON&&JSON.parse?JSON.parse(e):new Function("return ("+e+");")():e},svg:function(t){t.svgXML=qr(t.source)}},CT=k,LT=d,kT=x,PT=w,NT=sI.parseClassType,OT=1e3,ET=1e3,RT=3e3,zT={PROCESSOR:{FILTER:OT,STATISTIC:5e3},VISUAL:{LAYOUT:ET,GLOBAL:2e3,CHART:RT,COMPONENT:4e3,BRUSH:5e3}},BT="__flagInMainProcess",VT="__optionUpdated",GT=/^[a-zA-Z0-9_]+$/;ss.prototype.on=rs("on"),ss.prototype.off=rs("off"),ss.prototype.one=rs("one"),h(ss,fw);var FT=ls.prototype;FT._onframe=function(){if(!this._disposed){var t=this._scheduler;if(this[VT]){var e=this[VT].silent;this[BT]=!0,hs(this),WT.update.call(this),this[BT]=!1,this[VT]=!1,ps.call(this,e),gs.call(this,e)}else if(t.unfinished){var i=1,n=this._model;this._api;t.unfinished=!1;do{var o=+new Date;t.performSeriesTasks(n),t.performDataProcessorTasks(n),ds(this,n),t.performVisualTasks(n),ws(this,this._model,0,"remain"),i-=+new Date-o}while(i>0&&t.unfinished);t.unfinished||this._zr.flush()}}},FT.getDom=function(){return this._dom},FT.getZr=function(){return this._zr},FT.setOption=function(t,e,i){var n;if(PT(e)&&(i=e.lazyUpdate,n=e.silent,e=e.notMerge),this[BT]=!0,!this._model||e){var o=new Fa(this._api),a=this._theme,r=this._model=new SI(null,null,a,o);r.scheduler=this._scheduler,r.init(null,null,a,o)}this._model.setOption(t,jT),i?(this[VT]={silent:n},this[BT]=!1):(hs(this),WT.update.call(this),this._zr.flush(),this[VT]=!1,this[BT]=!1,ps.call(this,n),gs.call(this,n))},FT.setTheme=function(){console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},FT.getModel=function(){return this._model},FT.getOption=function(){return this._model&&this._model.getOption()},FT.getWidth=function(){return this._zr.getWidth()},FT.getHeight=function(){return this._zr.getHeight()},FT.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},FT.getRenderedCanvas=function(t){if(U_.canvasSupported)return(t=t||{}).pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor"),this._zr.painter.getRenderedCanvas(t)},FT.getSvgDataUrl=function(){if(U_.svgSupported){var t=this._zr;return d(t.storage.getDisplayList(),function(t){t.stopAnimation(!0)}),t.painter.pathToDataUrl()}},FT.getDataURL=function(t){var e=(t=t||{}).excludeComponents,i=this._model,n=[],o=this;LT(e,function(t){i.eachComponent({mainType:t},function(t){var e=o._componentsMap[t.__viewId];e.group.ignore||(n.push(e),e.group.ignore=!0)})});var a="svg"===this._zr.painter.getType()?this.getSvgDataUrl():this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return LT(n,function(t){t.group.ignore=!1}),a},FT.getConnectedDataURL=function(t){if(U_.canvasSupported){var e=this.group,n=Math.min,o=Math.max;if(QT[e]){var a=1/0,r=1/0,s=-1/0,l=-1/0,u=[],h=t&&t.pixelRatio||1;d(JT,function(h,c){if(h.group===e){var d=h.getRenderedCanvas(i(t)),f=h.getDom().getBoundingClientRect();a=n(f.left,a),r=n(f.top,r),s=o(f.right,s),l=o(f.bottom,l),u.push({dom:d,left:f.left,top:f.top})}});var c=(s*=h)-(a*=h),f=(l*=h)-(r*=h),p=iw();p.width=c,p.height=f;var g=Ii(p);return LT(u,function(t){var e=new fi({style:{x:t.left*h-a,y:t.top*h-r,image:t.dom}});g.add(e)}),g.refreshImmediately(),p.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},FT.convertToPixel=v(us,"convertToPixel"),FT.convertFromPixel=v(us,"convertFromPixel"),FT.containPixel=function(t,e){var i;return t=Vi(this._model,t),d(t,function(t,n){n.indexOf("Models")>=0&&d(t,function(t){var o=t.coordinateSystem;if(o&&o.containPoint)i|=!!o.containPoint(e);else if("seriesModels"===n){var a=this._chartsMap[t.__viewId];a&&a.containPoint&&(i|=a.containPoint(e,t))}},this)},this),!!i},FT.getVisual=function(t,e){var i=(t=Vi(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)},FT.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},FT.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var WT={prepareAndUpdate:function(t){hs(this),WT.update.call(this,t)},update:function(t){var e=this._model,i=this._api,n=this._zr,o=this._coordSysMgr,a=this._scheduler;if(e){a.restoreData(e,t),a.performSeriesTasks(e),o.create(e,i),a.performDataProcessorTasks(e,t),ds(this,e),o.update(e,i),ys(e),a.performVisualTasks(e,t),xs(this,e,i,t);var r=e.get("backgroundColor")||"transparent";if(U_.canvasSupported)n.setBackgroundColor(r);else{var s=Gt(r);r=qt(s,"rgb"),0===s[3]&&(r="transparent")}bs(e,i)}},updateTransform:function(t){var e=this._model,i=this,n=this._api;if(e){var o=[];e.eachComponent(function(a,r){var s=i.getViewOfComponentModel(r);if(s&&s.__alive)if(s.updateTransform){var l=s.updateTransform(r,e,n,t);l&&l.update&&o.push(s)}else o.push(s)});var a=R();e.eachSeries(function(o){var r=i._chartsMap[o.__viewId];if(r.updateTransform){var s=r.updateTransform(o,e,n,t);s&&s.update&&a.set(o.uid,1)}else a.set(o.uid,1)}),ys(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0,dirtyMap:a}),ws(i,e,0,t,a),bs(e,this._api)}},updateView:function(t){var e=this._model;e&&(Tr.markUpdateMethod(t,"updateView"),ys(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0}),xs(this,this._model,this._api,t),bs(e,this._api))},updateVisual:function(t){WT.update.call(this,t)},updateLayout:function(t){WT.update.call(this,t)}};FT.resize=function(t){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[BT]=!0,i&&hs(this),WT.update.call(this),this[BT]=!1,ps.call(this,n),gs.call(this,n)}},FT.showLoading=function(t,e){if(PT(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),$T[t]){var i=$T[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},FT.hideLoading=function(){this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},FT.makeActionFromEvent=function(t){var e=a({},t);return e.type=UT[t.type],e},FT.dispatchAction=function(t,e){PT(e)||(e={silent:!!e}),ZT[t.type]&&this._model&&(this[BT]?this._pendingActions.push(t):(fs.call(this,t,e.silent),e.flush?this._zr.flush(!0):!1!==e.flush&&U_.browser.weChat&&this._throttledZrFlush(),ps.call(this,e.silent),gs.call(this,e.silent)))},FT.appendData=function(t){var e=t.seriesIndex;this.getModel().getSeriesByIndex(e).appendData(t),this._scheduler.unfinished=!0},FT.on=rs("on"),FT.off=rs("off"),FT.one=rs("one");var HT=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];FT._initEvents=function(){LT(HT,function(t){var e=function(e){var i,n=this.getModel(),o=e.target;if("globalout"===t)i={};else if(o&&null!=o.dataIndex){var r=o.dataModel||n.getSeriesByIndex(o.seriesIndex);i=r&&r.getDataParams(o.dataIndex,o.dataType,o)||{}}else o&&o.eventData&&(i=a({},o.eventData));if(i){var s=i.componentType,l=i.componentIndex;"markLine"!==s&&"markPoint"!==s&&"markArea"!==s||(s="series",l=i.seriesIndex);var u=s&&null!=l&&n.getComponent(s,l),h=u&&this["series"===u.mainType?"_chartsMap":"_componentsMap"][u.__viewId];i.event=e,i.type=t,this._ecEventProcessor.eventInfo={targetEl:o,packedEvent:i,model:u,view:h},this.trigger(t,i)}};e.zrEventfulCallAtLast=!0,this._zr.on(t,e,this)},this),LT(UT,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},FT.isDisposed=function(){return this._disposed},FT.clear=function(){this.setOption({series:[]},!0)},FT.dispose=function(){if(!this._disposed){this._disposed=!0,Fi(this.getDom(),iA,"");var t=this._api,e=this._model;LT(this._componentsViews,function(i){i.dispose(e,t)}),LT(this._chartsViews,function(i){i.dispose(e,t)}),this._zr.dispose(),delete JT[this.id]}},h(ls,fw),As.prototype={constructor:As,normalizeQuery:function(t){var e={},i={},n={};if(_(t)){var o=NT(t);e.mainType=o.main||null,e.subType=o.sub||null}else{var a=["Index","Name","Id"],r={name:1,dataIndex:1,dataType:1};d(t,function(t,o){for(var s=!1,l=0;l0&&h===o.length-u.length){var c=o.slice(0,h);"data"!==c&&(e.mainType=c,e[u.toLowerCase()]=t,s=!0)}}r.hasOwnProperty(o)&&(i[o]=t,s=!0),s||(n[o]=t)})}return{cptQuery:e,dataQuery:i,otherQuery:n}},filter:function(t,e,i){function n(t,e,i,n){return null==t[i]||e[n||i]===t[i]}var o=this.eventInfo;if(!o)return!0;var a=o.targetEl,r=o.packedEvent,s=o.model,l=o.view;if(!s||!l)return!0;var u=e.cptQuery,h=e.dataQuery;return n(u,s,"mainType")&&n(u,s,"subType")&&n(u,s,"index","componentIndex")&&n(u,s,"name")&&n(u,s,"id")&&n(h,r,"name")&&n(h,r,"dataIndex")&&n(h,r,"dataType")&&(!l.filterForExposedEvent||l.filterForExposedEvent(t,e.otherQuery,a,r))},afterTrigger:function(){this.eventInfo=null}};var ZT={},UT={},XT=[],jT=[],YT=[],qT=[],KT={},$T={},JT={},QT={},tA=new Date-0,eA=new Date-0,iA="_echarts_instance_",nA=Cs;zs(2e3,oT),Ps(zI),Ns(5e3,function(t){var e=R();t.eachSeries(function(t){var i=t.get("stack");if(i){var n=e.get(i)||e.set(i,[]),o=t.getData(),a={stackResultDimension:o.getCalculationInfo("stackResultDimension"),stackedOverDimension:o.getCalculationInfo("stackedOverDimension"),stackedDimension:o.getCalculationInfo("stackedDimension"),stackedByDimension:o.getCalculationInfo("stackedByDimension"),isStackedByIndex:o.getCalculationInfo("isStackedByIndex"),data:o,seriesModel:t};if(!a.stackedDimension||!a.isStackedByIndex&&!a.stackedByDimension)return;n.length&&o.setCalculationInfo("stackedOnSeries",n[n.length-1].seriesModel),n.push(a)}}),e.each(or)}),Vs("default",function(t,e){r(e=e||{},{text:"loading",color:"#c23531",textColor:"#000",maskColor:"rgba(255, 255, 255, 0.8)",zlevel:0});var i=new vM({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4}),n=new bM({shape:{startAngle:-sT/2,endAngle:-sT/2+.1,r:10},style:{stroke:e.color,lineCap:"round",lineWidth:5},zlevel:e.zlevel,z:10001}),o=new vM({style:{fill:"none",text:e.text,textPosition:"right",textDistance:10,textFill:e.textColor},zlevel:e.zlevel,z:10001});n.animateShape(!0).when(1e3,{endAngle:3*sT/2}).start("circularInOut"),n.animateShape(!0).when(1e3,{startAngle:3*sT/2}).delay(300).start("circularInOut");var a=new tb;return a.add(n),a.add(o),a.add(i),a.resize=function(){var e=t.getWidth()/2,a=t.getHeight()/2;n.setShape({cx:e,cy:a});var r=n.shape.r;o.setShape({x:e-r,y:a-r,width:2*r,height:2*r}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},a.resize(),a}),Os({type:"highlight",event:"highlight",update:"highlight"},B),Os({type:"downplay",event:"downplay",update:"downplay"},B),ks("light",gT),ks("dark",vT);Us.prototype={constructor:Us,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=[],o=[];for(Xs(t,{},n,"_oldKeyGetter",this),Xs(e,i,o,"_newKeyGetter",this),a=0;ax[1]&&(x[1]=y)}e&&(this._nameList[d]=e[f])}this._rawCount=this._count=l,this._extent={},tl(this)},gA._initDataFromProvider=function(t,e){if(!(t>=e)){for(var i,n=this._chunkSize,o=this._rawData,a=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;pM[1]&&(M[1]=S)}if(!o.pure){var I=u[v];if(m&&null==I)if(null!=m.name)u[v]=I=m.name;else if(null!=i){var T=r[i],A=a[T][y];if(A){I=A[x];var D=l[T].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,C=I,d[I]>0&&(C+="__ec__"+d[I]),d[I]++),null!=C&&(h[v]=C)}}!o.persistent&&o.clean&&o.clean(),this._rawCount=this._count=e,this._extent={},tl(this)}},gA.count=function(){return this._count},gA.getIndices=function(){var t=this._indices;if(t){var e=t.constructor,i=this._count;if(e===Array){n=new e(i);for(o=0;o=0&&e=0&&ea&&(a=s)}return i=[o,a],this._extent[t]=i,i},gA.getApproximateExtent=function(t){return t=this.getDimension(t),this._approximateExtent[t]||this.getDataExtent(t)},gA.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},gA.getCalculationInfo=function(t){return this._calculationInfo[t]},gA.setCalculationInfo=function(t,e){aA(t)?a(this._calculationInfo,t):this._calculationInfo[t]=e},gA.getSum=function(t){var e=0;if(this._storage[t])for(var i=0,n=this.count();i=this._rawCount||t<0)return-1;var e=this._indices,i=e[t];if(null!=i&&it))return a;o=a-1}}return-1},gA.indicesOfNearest=function(t,e,i){var n=[];if(!this._storage[t])return n;null==i&&(i=1/0);for(var o=Number.MAX_VALUE,a=-1,r=0,s=this.count();r=0&&a<0)&&(o=u,a=l,n.length=0),n.push(r))}return n},gA.getRawIndex=il,gA.getRawDataItem=function(t){if(this._rawData.persistent)return this._rawData.getItem(this.getRawIndex(t));for(var e=[],i=0;i=l&&w<=u||isNaN(w))&&(a[r++]=c),c++;h=!0}else if(2===n){for(var d=this._storage[s],v=this._storage[e[1]],y=t[e[1]][0],x=t[e[1]][1],f=0;f=l&&w<=u||isNaN(w))&&(b>=y&&b<=x||isNaN(b))&&(a[r++]=c),c++}h=!0}}if(!h)if(1===n)for(m=0;m=l&&w<=u||isNaN(w))&&(a[r++]=M)}else for(m=0;mt[I][1])&&(S=!1)}S&&(a[r++]=this.getRawIndex(m))}return rb[1]&&(b[1]=w)}}}return o},gA.downSample=function(t,e,i,n){for(var o=rl(this,[t]),a=o._storage,r=[],s=Math.floor(1/e),l=a[t],u=this.count(),h=this._chunkSize,c=o._rawExtent[t],d=new(Ks(this))(u),f=0,p=0;pu-p&&(s=u-p,r.length=s);for(var g=0;gc[1]&&(c[1]=x),d[f++]=_}return o._count=f,o._indices=d,o.getRawIndex=nl,o},gA.getItemModel=function(t){var e=this.hostModel;return new Po(this.getRawDataItem(t),e,e&&e.ecModel)},gA.diff=function(t){var e=this;return new Us(t?t.getIndices():[],this.getIndices(),function(e){return ol(t,e)},function(t){return ol(e,t)})},gA.getVisual=function(t){var e=this._visual;return e&&e[t]},gA.setVisual=function(t,e){if(aA(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},gA.setLayout=function(t,e){if(aA(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},gA.getLayout=function(t){return this._layout[t]},gA.getItemLayout=function(t){return this._itemLayouts[t]},gA.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?a(this._itemLayouts[t]||{},e):e},gA.clearItemLayouts=function(){this._itemLayouts.length=0},gA.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],o=n&&n[e];return null!=o||i?o:this.getVisual(e)},gA.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{},o=this.hasItemVisual;if(this._itemVisuals[t]=n,aA(e))for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a],o[a]=!0);else n[e]=i,o[e]=!0},gA.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};var mA=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};gA.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(mA,e)),this._graphicEls[t]=e},gA.getItemGraphicEl=function(t){return this._graphicEls[t]},gA.eachItemGraphicEl=function(t,e){d(this._graphicEls,function(i,n){i&&t&&t.call(e,i,n)})},gA.cloneShallow=function(t){if(!t){var e=f(this.dimensions,this.getDimensionInfo,this);t=new pA(e,this.hostModel)}if(t._storage=this._storage,Js(t,this),this._indices){var i=this._indices.constructor;t._indices=new i(this._indices)}else t._indices=null;return t.getRawIndex=t._indices?nl:il,t},gA.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(C(arguments)))})},gA.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],gA.CHANGABLE_METHODS=["filterSelf","selectRange"];var vA=function(t,e){return e=e||{},ul(e.coordDimensions||[],t,{dimsDef:e.dimensionsDefine||t.dimensionsDefine,encodeDef:e.encodeDefine||t.encodeDefine,dimCount:e.dimensionsCount,generateCoord:e.generateCoord,generateCoordCount:e.generateCoordCount})};yl.prototype.parse=function(t){return t},yl.prototype.getSetting=function(t){return this._setting[t]},yl.prototype.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},yl.prototype.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},yl.prototype.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},yl.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1])},yl.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},yl.prototype.getExtent=function(){return this._extent.slice()},yl.prototype.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},yl.prototype.isBlank=function(){return this._isBlank},yl.prototype.setBlank=function(t){this._isBlank=t},yl.prototype.getLabel=null,Xi(yl),Ki(yl,{registerWhenExtend:!0}),xl.createByAxisModel=function(t){var e=t.option,i=e.data,n=i&&f(i,wl);return new xl({categories:n,needCollect:!n,deduplication:!1!==e.dedplication})};var yA=xl.prototype;yA.getOrdinal=function(t){return _l(this).get(t)},yA.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=_l(this);return null==(e=n.get(t))&&(i?(e=this.categories.length,this.categories[e]=t,n.set(t,e)):e=NaN),e};var xA=yl.prototype,_A=yl.extend({type:"ordinal",init:function(t,e){t&&!y(t)||(t=new xl({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),xA.contain.call(this,t)&&null!=this._ordinalMeta.categories[t]},normalize:function(t){return xA.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(xA.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:B,niceExtent:B});_A.create=function(){return new _A};var wA=Vo,bA=Vo,SA=yl.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[1]&&(e[1]=t[1]),SA.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=Sl(t)},getTicks:function(){return Tl(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=Wo(t)||0:"auto"===i&&(i=this._intervalPrecision),t=bA(t,i,!0),Qo(t)},niceTicks:function(t,e,i){t=t||5;var n=this._extent,o=n[1]-n[0];if(isFinite(o)){o<0&&(o=-o,n.reverse());var a=bl(n,t,e,i);this._intervalPrecision=a.intervalPrecision,this._interval=a.interval,this._niceExtent=a.niceTickExtent}},niceExtent:function(t){var e=this._extent;if(e[0]===e[1])if(0!==e[0]){var i=e[0];t.fixMax?e[0]-=i/2:(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 o=this._interval;t.fixMin||(e[0]=bA(Math.floor(e[0]/o)*o)),t.fixMax||(e[1]=bA(Math.ceil(e[1]/o)*o))}});SA.create=function(){return new SA};var MA="__ec_stack_",IA="undefined"!=typeof Float32Array?Float32Array:Array,TA={seriesType:"bar",plan:KI(),reset:function(t){if(El(t)&&Rl(t)){var e=t.getData(),i=t.coordinateSystem,n=i.getBaseAxis(),o=i.getOtherAxis(n),a=e.mapDimension(o.dim),r=e.mapDimension(n.dim),s=o.isHorizontal(),l=s?0:1,u=Nl(kl([t]),n,t).width;return u>.5||(u=.5),{progress:function(t,e){for(var n,h=new IA(2*t.count),c=[],d=[],f=0;null!=(n=t.next());)d[l]=e.get(a,n),d[1-l]=e.get(r,n),c=i.dataToPoint(d,null,c),h[f++]=c[0],h[f++]=c[1];e.setLayout({largePoints:h,barWidth:u,valueAxisStart:zl(0,o),valueAxisHorizontal:s})}}}}},AA=SA.prototype,DA=Math.ceil,CA=Math.floor,LA=function(t,e,i,n){for(;i>>1;t[o][1]i&&(a=i);var r=PA.length,s=LA(PA,a,0,r),l=PA[Math.min(s,r-1)],u=l[1];"year"===l[0]&&(u*=Ko(o/u/t,!0));var h=this.getSetting("useUTC")?0:60*new Date(+n[0]||+n[1]).getTimezoneOffset()*1e3,c=[Math.round(DA((n[0]-h)/u)*u+h),Math.round(CA((n[1]-h)/u)*u+h)];Il(c,n),this._stepLvl=l,this._interval=u,this._niceExtent=c},parse:function(t){return+jo(t)}});d(["contain","normalize"],function(t){kA.prototype[t]=function(e){return AA[t].call(this,this.parse(e))}});var PA=[["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",36e5],["hh:mm\nMM-dd",72e5],["hh:mm\nMM-dd",216e5],["hh:mm\nMM-dd",432e5],["MM-dd\nyyyy",864e5],["MM-dd\nyyyy",1728e5],["MM-dd\nyyyy",2592e5],["MM-dd\nyyyy",3456e5],["MM-dd\nyyyy",432e6],["MM-dd\nyyyy",5184e5],["week",6048e5],["MM-dd\nyyyy",864e6],["week",12096e5],["week",18144e5],["month",26784e5],["week",36288e5],["month",53568e5],["week",6048e6],["quarter",8208e6],["month",107136e5],["month",13392e6],["half-year",16416e6],["month",214272e5],["month",26784e6],["year",32832e6]];kA.create=function(t){return new kA({useUTC:t.ecModel.get("useUTC")})};var NA=yl.prototype,OA=SA.prototype,EA=Wo,RA=Vo,zA=Math.floor,BA=Math.ceil,VA=Math.pow,GA=Math.log,FA=yl.extend({type:"log",base:10,$constructor:function(){yl.apply(this,arguments),this._originalScale=new SA},getTicks:function(){var t=this._originalScale,e=this._extent,i=t.getExtent();return f(OA.getTicks.call(this),function(n){var o=Vo(VA(this.base,n));return o=n===e[0]&&t.__fixMin?Bl(o,i[0]):o,o=n===e[1]&&t.__fixMax?Bl(o,i[1]):o},this)},getLabel:OA.getLabel,scale:function(t){return t=NA.scale.call(this,t),VA(this.base,t)},setExtent:function(t,e){var i=this.base;t=GA(t)/GA(i),e=GA(e)/GA(i),OA.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=NA.getExtent.call(this);e[0]=VA(t,e[0]),e[1]=VA(t,e[1]);var i=this._originalScale,n=i.getExtent();return i.__fixMin&&(e[0]=Bl(e[0],n[0])),i.__fixMax&&(e[1]=Bl(e[1],n[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=GA(t[0])/GA(e),t[1]=GA(t[1])/GA(e),NA.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=Yo(i);for(t/i*n<=.5&&(n*=10);!isNaN(n)&&Math.abs(n)<1&&Math.abs(n)>0;)n*=10;var o=[Vo(BA(e[0]/n)*n),Vo(zA(e[1]/n)*n)];this._interval=n,this._niceExtent=o}},niceExtent:function(t){OA.niceExtent.call(this,t);var e=this._originalScale;e.__fixMin=t.fixMin,e.__fixMax=t.fixMax}});d(["contain","normalize"],function(t){FA.prototype[t]=function(e){return e=GA(e)/GA(this.base),NA[t].call(this,e)}}),FA.create=function(){return new FA};var WA={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&&!I(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&&!I(i)&&(i=this.axis.scale.parse(i)),i},getNeedCrossZero:function(){var t=this.option;return null==t.rangeStart&&null==t.rangeEnd&&!t.scale},getCoordSysModel:B,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}},HA=Zn({type:"triangle",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n+a),t.lineTo(i-o,n+a),t.closePath()}}),ZA=Zn({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n),t.lineTo(i,n+a),t.lineTo(i-o,n),t.closePath()}}),UA=Zn({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,n=e.y,o=e.width/5*3,a=Math.max(o,e.height),r=o/2,s=r*r/(a-r),l=n-a+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()}}),XA=Zn({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.height,n=e.width,o=e.x,a=e.y,r=n/3*2;t.moveTo(o,a),t.lineTo(o+r,a+i),t.lineTo(o,a+i/4*3),t.lineTo(o-r,a+i),t.lineTo(o,a),t.closePath()}}),jA={line:function(t,e,i,n,o){o.x1=t,o.y1=e+n/2,o.x2=t+i,o.y2=e+n/2},rect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n},roundRect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n,o.r=Math.min(i,n)/4},square:function(t,e,i,n,o){var a=Math.min(i,n);o.x=t,o.y=e,o.width=a,o.height=a},circle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.r=Math.min(i,n)/2},diamond:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n},pin:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},arrow:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},triangle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n}},YA={};d({line:xM,rect:vM,roundRect:vM,square:vM,circle:rM,diamond:ZA,pin:UA,arrow:XA,triangle:HA},function(t,e){YA[e]=new t});var qA=Zn({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},beforeBrush:function(){var t=this.style;"pin"===this.shape.symbolType&&"inside"===t.textPosition&&(t.textPosition=["50%","40%"],t.textAlign="center",t.textVerticalAlign="middle")},buildPath:function(t,e,i){var n=e.symbolType,o=YA[n];"none"!==e.symbolType&&(o||(o=YA[n="rect"]),jA[n](e.x,e.y,e.width,e.height,o.shape),o.buildPath(t,o.shape,i))}}),KA={isDimensionStacked:fl,enableDataStack:dl,getStackedDimension:pl},$A=(Object.freeze||Object)({createList:function(t){return gl(t.getSource(),t)},getLayoutRect:ha,dataStack:KA,createScale:function(t,e){var i=e;Po.isInstance(e)||h(i=new Po(e),WA);var n=Wl(i);return n.setExtent(t[0],t[1]),Fl(n,i),n},mixinAxisModelCommonMethods:function(t){h(t,WA)},completeDimensions:ul,createDimensions:vA,createSymbol:$l}),JA=1e-8;tu.prototype={constructor:tu,properties:null,getBoundingRect:function(){var t=this._rect;if(t)return t;for(var e=Number.MAX_VALUE,i=[e,e],n=[-e,-e],o=[],a=[],r=this.geometries,s=0;s0}),function(t){var e=t.properties,i=t.geometry,n=i.coordinates,o=[];"Polygon"===i.type&&o.push({type:"polygon",exterior:n[0],interiors:n.slice(1)}),"MultiPolygon"===i.type&&d(n,function(t){t[0]&&o.push({type:"polygon",exterior:t[0],interiors:t.slice(1)})});var a=new tu(e.name,o,e.cp);return a.properties=e,a})},tD=Bi(),eD=[0,1],iD=function(t,e,i){this.dim=t,this.scale=e,this._extent=i||[0,0],this.inverse=!1,this.onBand=!1};iD.prototype={constructor:iD,contain:function(t){var e=this._extent,i=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return t>=i&&t<=n},containData:function(t){return this.contain(this.dataToCoord(t))},getExtent:function(){return this._extent.slice()},getPixelPrecision:function(t){return Ho(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&&vu(i=i.slice(),n.count()),zo(t,eD,i,e)},coordToData:function(t,e){var i=this._extent,n=this.scale;this.onBand&&"ordinal"===n.type&&vu(i=i.slice(),n.count());var o=zo(t,i,eD,e);return this.scale.scale(o)},pointToData:function(t,e){},getTicksCoords:function(t){var e=(t=t||{}).tickModel||this.getTickModel(),i=ou(this,e),n=f(i.ticks,function(t){return{coord:this.dataToCoord(t),tickValue:t}},this),o=e.get("alignWithLabel");return yu(this,n,i.tickCategoryInterval,o,t.clamp),n},getViewLabels:function(){return nu(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 fu(this)}};var nD=QA,oD={};d(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],function(t){oD[t]=aw[t]});var aD={};d(["extendShape","extendPath","makePath","makeImage","mergePath","resizePath","createIcon","setHoverStyle","setLabelStyle","setTextStyle","setText","getFont","updateProps","initProps","getTransform","clipPointsByRect","clipRectByRect","Group","Image","Text","Circle","Sector","Ring","Polygon","Polyline","Rect","Line","BezierCurve","Arc","IncrementalDisplayable","CompoundPath","LinearGradient","RadialGradient","BoundingRect"],function(t){aD[t]=RM[t]}),jI.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return gl(this.getSource(),this)},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clipOverflow:!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 rD=_u.prototype,sD=_u.getSymbolSize=function(t,e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array?i.slice():[+i,+i]};rD._createSymbol=function(t,e,i,n,o){this.removeAll();var a=$l(t,-1,-1,2,2,e.getItemVisual(i,"color"),o);a.attr({z2:100,culling:!0,scale:wu(n)}),a.drift=bu,this._symbolType=t,this.add(a)},rD.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(t)},rD.getSymbolPath=function(){return this.childAt(0)},rD.getScale=function(){return this.childAt(0).scale},rD.highlight=function(){this.childAt(0).trigger("emphasis")},rD.downplay=function(){this.childAt(0).trigger("normal")},rD.setZ=function(t,e){var i=this.childAt(0);i.zlevel=t,i.z=e},rD.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":"pointer"},rD.updateData=function(t,e,i){this.silent=!1;var n=t.getItemVisual(e,"symbol")||"circle",o=t.hostModel,a=sD(t,e),r=n!==this._symbolType;if(r){var s=t.getItemVisual(e,"symbolKeepAspect");this._createSymbol(n,t,e,a,s)}else(l=this.childAt(0)).silent=!1,Mo(l,{scale:wu(a)},o,e);if(this._updateCommon(t,e,a,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),Io(l,h,o,e)}this._seriesModel=o};var lD=["itemStyle"],uD=["emphasis","itemStyle"],hD=["label"],cD=["emphasis","label"];rD._updateCommon=function(t,e,i,n){var o=this.childAt(0),r=t.hostModel,s=t.getItemVisual(e,"color");"image"!==o.type&&o.useStyle({strokeNoScale:!0});var l=n&&n.itemStyle,u=n&&n.hoverItemStyle,h=n&&n.symbolRotate,c=n&&n.symbolOffset,d=n&&n.labelModel,f=n&&n.hoverLabelModel,p=n&&n.hoverAnimation,g=n&&n.cursorStyle;if(!n||t.hasItemOption){var m=n&&n.itemModel?n.itemModel:t.getItemModel(e);l=m.getModel(lD).getItemStyle(["color"]),u=m.getModel(uD).getItemStyle(),h=m.getShallow("symbolRotate"),c=m.getShallow("symbolOffset"),d=m.getModel(hD),f=m.getModel(cD),p=m.getShallow("hoverAnimation"),g=m.getShallow("cursor")}else u=a({},u);var v=o.style;o.attr("rotation",(h||0)*Math.PI/180||0),c&&o.attr("position",[Bo(c[0],i[0]),Bo(c[1],i[1])]),g&&o.attr("cursor",g),o.setColor(s,n&&n.symbolInnerColor),o.setStyle(l);var y=t.getItemVisual(e,"opacity");null!=y&&(v.opacity=y);var x=t.getItemVisual(e,"liftZ"),_=o.__z2Origin;null!=x?null==_&&(o.__z2Origin=o.z2,o.z2+=x):null!=_&&(o.z2=_,o.__z2Origin=null);var w=n&&n.useNameLabel;po(v,u,d,f,{labelFetcher:r,labelDataIndex:e,defaultText:function(e,i){return w?t.getName(e):xu(t,e)},isRectText:!0,autoColor:s}),o.off("mouseover").off("mouseout").off("emphasis").off("normal"),o.hoverStyle=u,co(o),o.__symbolOriginalScale=wu(i),p&&r.isAnimationEnabled()&&o.on("mouseover",Su).on("mouseout",Mu).on("emphasis",Iu).on("normal",Tu)},rD.fadeOut=function(t,e){var i=this.childAt(0);this.silent=i.silent=!0,!(e&&e.keepLabel)&&(i.style.text=null),Mo(i,{style:{opacity:0},scale:[0,0]},this._seriesModel,this.dataIndex,t)},u(_u,tb);var dD=Au.prototype;dD.updateData=function(t,e){e=Cu(e);var i=this.group,n=t.hostModel,o=this._data,a=this._symbolCtor,r=Lu(t);o||i.removeAll(),t.diff(o).add(function(n){var o=t.getItemLayout(n);if(Du(t,o,n,e)){var s=new a(t,n,r);s.attr("position",o),t.setItemGraphicEl(n,s),i.add(s)}}).update(function(s,l){var u=o.getItemGraphicEl(l),h=t.getItemLayout(s);Du(t,h,s,e)?(u?(u.updateData(t,s,r),Mo(u,{position:h},n)):(u=new a(t,s)).attr("position",h),i.add(u),t.setItemGraphicEl(s,u)):i.remove(u)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&e.fadeOut(function(){i.remove(e)})}).execute(),this._data=t},dD.isPersistent=function(){return!0},dD.updateLayout=function(){var t=this._data;t&&t.eachItemGraphicEl(function(e,i){var n=t.getItemLayout(i);e.attr("position",n)})},dD.incrementalPrepareUpdate=function(t){this._seriesScope=Lu(t),this._data=null,this.group.removeAll()},dD.incrementalUpdate=function(t,e,i){i=Cu(i);for(var n=t.start;n0&&Eu(i[o-1]);o--);for(;n0&&Eu(i[a-1]);a--);for(;o=0){var r=o.getItemGraphicEl(a);if(!r){var s=o.getItemLayout(a);if(!s)return;(r=new _u(o,a)).position=s,r.setZ(t.get("zlevel"),t.get("z")),r.ignore=isNaN(s[0])||isNaN(s[1]),r.__temp=!0,o.setItemGraphicEl(a,r),r.stopSymbolAnimation(!0),this.group.add(r)}r.highlight()}else Tr.prototype.highlight.call(this,t,e,i,n)},downplay:function(t,e,i,n){var o=t.getData(),a=zi(o,n);if(null!=a&&a>=0){var r=o.getItemGraphicEl(a);r&&(r.__temp?(o.setItemGraphicEl(a,null),this.group.remove(r)):r.downplay())}else Tr.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new wD({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var i=this._polygon;return i&&this._lineGroup.remove(i),i=new bD({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(i),this._polygon=i,i},_updateAnimation:function(t,e,i,n,o,a){var r=this._polyline,s=this._polygon,l=t.hostModel,u=fD(this._data,t,this._stackedOnPoints,e,this._coordSys,i,this._valueOrigin,a),h=u.current,c=u.stackedOnCurrent,d=u.next,f=u.stackedOnNext;o&&(h=ju(u.current,i,o),c=ju(u.stackedOnCurrent,i,o),d=ju(u.next,i,o),f=ju(u.stackedOnNext,i,o)),r.shape.__points=u.current,r.shape.points=h,Mo(r,{shape:{points:d}},l),s&&(s.setShape({points:h,stackedOnPoints:c}),Mo(s,{shape:{points:d,stackedOnPoints:f}},l));for(var p=[],g=u.status,m=0;me&&(e=t[i]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,i=0;ie[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},u(DD,iD);var CD={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)"]}}},LD={};LD.categoryAxis=n({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},CD),LD.valueAxis=n({boundaryGap:[0,0],splitNumber:5},CD),LD.timeAxis=r({scale:!0,min:"dataMin",max:"dataMax"},LD.valueAxis),LD.logAxis=r({scale:!0,logBase:10},LD.valueAxis);var kD=["value","category","time","log"],PD=function(t,e,i,a){d(kD,function(r){e.extend({type:t+"Axis."+r,mergeDefaultAndTheme:function(e,o){var a=this.layoutMode,s=a?pa(e):{};n(e,o.getTheme().get(r+"Axis")),n(e,this.getDefaultOption()),e.type=i(t,e),a&&fa(e,s,a)},optionUpdated:function(){"category"===this.option.type&&(this.__ordinalMeta=xl.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:o([{},LD[r+"Axis"],a],!0)})}),sI.registerSubTypeDefaulter(t+"Axis",v(i,t))},ND=sI.extend({type:"cartesian2dAxis",axis:null,init:function(){ND.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){ND.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){ND.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});n(ND.prototype,WA);var OD={offset:0};PD("x",ND,Qu,OD),PD("y",ND,Qu,OD),sI.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 ED=eh.prototype;ED.type="grid",ED.axisPointerEnabled=!0,ED.getRect=function(){return this._rect},ED.update=function(t,e){var i=this._axesMap;this._updateScale(t,this.model),d(i.x,function(t){Fl(t.scale,t.model)}),d(i.y,function(t){Fl(t.scale,t.model)});var n={};d(i.x,function(t){ih(i,"y",t,n)}),d(i.y,function(t){ih(i,"x",t,n)}),this.resize(this.model,e)},ED.resize=function(t,e,i){function n(){d(a,function(t){var e=t.isHorizontal(),i=e?[0,o.width]:[0,o.height],n=t.inverse?1:0;t.setExtent(i[n],i[1-n]),oh(t,e?o.x:o.y)})}var o=ha(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()});this._rect=o;var a=this._axesList;n(),!i&&t.get("containLabel")&&(d(a,function(t){if(!t.model.get("axisLabel.inside")){var e=Xl(t);if(e){var i=t.isHorizontal()?"height":"width",n=t.model.get("axisLabel.margin");o[i]-=e[i]+n,"top"===t.position?o.y+=e.height+n:"left"===t.position&&(o.x+=e.width+n)}}}),n())},ED.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]}},ED.getAxes=function(){return this._axesList.slice()},ED.getCartesian=function(t,e){if(null!=t&&null!=e){var i="x"+t+"y"+e;return this._coordsMap[i]}w(t)&&(e=t.yAxisIndex,t=t.xAxisIndex);for(var n=0,o=this._coordsList;nu[1]?-1:1,c=["start"===o?u[0]-h*l:"end"===o?u[1]+h*l:(u[0]+u[1])/2,fh(o)?t.labelOffset+r*l:0],d=e.get("nameRotate");null!=d&&(d=d*zD/180);var f;fh(o)?n=GD(t.rotation,null!=d?d:t.rotation,r):(n=lh(t,o,d||0,u),null!=(f=t.axisNameAvailableWidth)&&(f=Math.abs(f/Math.sin(n.rotation)),!isFinite(f)&&(f=null)));var p=s.getFont(),g=e.get("nameTruncate",!0)||{},m=g.ellipsis,v=T(t.nameTruncateMaxWidth,g.maxWidth,f),y=null!=m&&null!=v?QM(i,v,p,m,{minChar:2,placeholder:g.placeholder}):i,x=e.get("tooltip",!0),_=e.mainType,w={componentType:_,name:i,$vars:["name"]};w[_+"Index"]=e.componentIndex;var b=new aM({anid:"name",__fullText:i,__truncatedText:y,position:c,rotation:n.rotation,silent:uh(e),z2:1,tooltip:x&&x.show?a({content:i,formatter:function(){return i},formatterParams:w},x):null});go(b.style,s,{text:y,textFont:p,textFill:s.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:n.textAlign,textVerticalAlign:n.textVerticalAlign}),e.get("triggerEvent")&&(b.eventData=sh(e),b.eventData.targetType="axisName",b.eventData.name=i),this._dumbGroup.add(b),b.updateTransform(),this.group.add(b),b.decomposeTransform()}}},GD=BD.innerTextLayout=function(t,e,i){var n,o,a=Uo(e-t);return Xo(a)?(o=i>0?"top":"bottom",n="center"):Xo(a-zD)?(o=i>0?"bottom":"top",n="center"):(o="middle",n=a>0&&a0?"right":"left":i>0?"left":"right"),{rotation:a,textAlign:n,textVerticalAlign:o}},FD=d,WD=v,HD=Fs({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,i,n){this.axisPointerClass&&bh(t),HD.superApply(this,"render",arguments),Ah(this,t,0,i,0,!0)},updateAxisPointer:function(t,e,i,n,o){Ah(this,t,0,i,0,!1)},remove:function(t,e){var i=this._axisPointer;i&&i.remove(e),HD.superApply(this,"remove",arguments)},dispose:function(t,e){Dh(this,e),HD.superApply(this,"dispose",arguments)}}),ZD=[];HD.registerAxisPointerClass=function(t,e){ZD[t]=e},HD.getAxisPointerClass=function(t){return t&&ZD[t]};var UD=["axisLine","axisTickLabel","axisName"],XD=["splitArea","splitLine"],jD=HD.extend({type:"cartesianAxis",axisPointerClass:"CartesianAxisPointer",render:function(t,e,i,n){this.group.removeAll();var o=this._axisGroup;if(this._axisGroup=new tb,this.group.add(this._axisGroup),t.get("show")){var a=t.getCoordSysModel(),r=Ch(a,t),s=new BD(t,r);d(UD,s.add,s),this._axisGroup.add(s.getGroup()),d(XD,function(e){t.get(e+".show")&&this["_"+e](t,a)},this),Co(o,this._axisGroup,t),jD.superCall(this,"render",t,e,i,n)}},remove:function(){this._splitAreaColors=null},_splitLine:function(t,e){var i=t.axis;if(!i.scale.isBlank()){var n=t.getModel("splitLine"),o=n.getModel("lineStyle"),a=o.get("color");a=y(a)?a:[a];for(var s=e.coordinateSystem.getRect(),l=i.isHorizontal(),u=0,h=i.getTicksCoords({tickModel:n}),c=[],d=[],f=o.getLineStyle(),p=0;p1){var c;"string"==typeof o?c=ID[o]:"function"==typeof o&&(c=o),c&&t.setData(n.downSample(n.mapDimension(s.dim),1/h,c,TD))}}}}}("line"));var YD=jI.extend({type:"series.__base_bar__",getInitialData:function(t,e){return gl(this.getSource(),this)},getMarkerPosition:function(t){var e=this.coordinateSystem;if(e){var i=e.dataToPoint(e.clampData(t)),n=this.getData(),o=n.getLayout("offset"),a=n.getLayout("size");return i[e.getBaseAxis().isHorizontal()?0:1]+=o+a/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:{}}});YD.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 e>t&&(t=e),t}});var qD=Jb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),KD={getBarItemStyle:function(t){var e=qD(this,t);if(this.getBorderLineDash){var i=this.getBorderLineDash();i&&(e.lineDash=i)}return e}},$D=["itemStyle","barBorderWidth"];a(Po.prototype,KD),Hs({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(t,e,i){var n,o=this.group,a=t.getData(),r=this._data,s=t.coordinateSystem,l=s.getBaseAxis();"cartesian2d"===s.type?n=l.isHorizontal():"polar"===s.type&&(n="angle"===l.dim);var u=t.isAnimationEnabled()?t:null;a.diff(r).add(function(e){if(a.hasValue(e)){var i=a.getItemModel(e),r=QD[s.type](a,e,i),l=JD[s.type](a,e,i,r,n,u);a.setItemGraphicEl(e,l),o.add(l),Oh(l,a,e,i,r,t,n,"polar"===s.type)}}).update(function(e,i){var l=r.getItemGraphicEl(i);if(a.hasValue(e)){var h=a.getItemModel(e),c=QD[s.type](a,e,h);l?Mo(l,{shape:c},u,e):l=JD[s.type](a,e,h,c,n,u,!0),a.setItemGraphicEl(e,l),o.add(l),Oh(l,a,e,h,c,t,n,"polar"===s.type)}else o.remove(l)}).remove(function(t){var e=r.getItemGraphicEl(t);"cartesian2d"===s.type?e&&Ph(t,u,e):e&&Nh(t,u,e)}).execute(),this._data=a},_renderLarge:function(t,e,i){this._clear(),Rh(t,this.group)},_incrementalRenderLarge:function(t,e){Rh(e,this.group,!0)},dispose:B,remove:function(t){this._clear(t)},_clear:function(t){var e=this.group,i=this._data;t&&t.get("animation")&&i&&!this._isLargeDraw?i.eachItemGraphicEl(function(e){"sector"===e.type?Nh(e.dataIndex,t,e):Ph(e.dataIndex,t,e)}):e.removeAll(),this._data=null}});var JD={cartesian2d:function(t,e,i,n,o,r,s){var l=new vM({shape:a({},n)});if(r){var u=l.shape,h=o?"height":"width",c={};u[h]=0,c[h]=n[h],RM[s?"updateProps":"initProps"](l,{shape:c},r,e)}return l},polar:function(t,e,i,n,o,a,s){var l=n.startAngle0?1:-1,r=n.height>0?1:-1;return{x:n.x+a*o/2,y:n.y+r*o/2,width:n.width-a*o,height:n.height-r*o}},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}}},tC=kn.extend({type:"largeBar",shape:{points:[]},buildPath:function(t,e){for(var i=e.points,n=this.__startPoint,o=this.__valueIdx,a=0;a0&&"scale"!==u){var d=o.getItemLayout(0),f=Math.max(i.getWidth(),i.getHeight())/2,p=m(r.removeClipPath,r);r.setClipPath(this._createClipPath(d.cx,d.cy,f,d.startAngle,d.clockwise,p,t))}else r.removeClipPath();this._data=o}},dispose:function(){},_createClipPath:function(t,e,i,n,o,a,r){var s=new uM({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:o}});return Io(s,{shape:{endAngle:n+(o?1:-1)*Math.PI*2}},r,a),s},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,o=t[1]-i.cy,a=Math.sqrt(n*n+o*o);return a<=i.r&&a>=i.r0}}});var aC=function(t,e){d(e,function(e){e.update="updateView",Os(e,function(i,n){var o={};return n.eachComponent({mainType:"series",subType:t,query:i},function(t){t[e.method]&&t[e.method](i.name,i.dataIndex);var n=t.getData();n.each(function(e){var i=n.getName(e);o[i]=t.isSelected(i)||!1})}),{name:i.name,selected:o}})})},rC=function(t){return{getTargetSeries:function(e){var i={},n=R();return e.eachSeriesByType(t,function(t){t.__paletteScope=i,n.set(t.uid,t)}),n},reset:function(t,e){var i=t.getRawData(),n={},o=t.getData();o.each(function(t){var e=o.getRawIndex(t);n[e]=t}),i.each(function(e){var a=n[e],r=null!=a&&o.getItemVisual(a,"color",!0);if(r)i.setItemVisual(e,"color",r);else{var s=i.getItemModel(e).get("itemStyle.color")||t.getColorFromPalette(i.getName(e)||e+"",t.__paletteScope,i.count());i.setItemVisual(e,"color",s),null!=a&&o.setItemVisual(a,"color",s)}})}}},sC=function(t,e,i,n){var o,a,r=t.getData(),s=[],l=!1;r.each(function(i){var n,u,h,c,d=r.getItemLayout(i),f=r.getItemModel(i),p=f.getModel("label"),g=p.get("position")||f.get("emphasis.label.position"),m=f.getModel("labelLine"),v=m.get("length"),y=m.get("length2"),x=(d.startAngle+d.endAngle)/2,_=Math.cos(x),w=Math.sin(x);o=d.cx,a=d.cy;var b="inside"===g||"inner"===g;if("center"===g)n=d.cx,u=d.cy,c="center";else{var S=(b?(d.r+d.r0)/2*_:d.r*_)+o,M=(b?(d.r+d.r0)/2*w:d.r*w)+a;if(n=S+3*_,u=M+3*w,!b){var I=S+_*(v+e-d.r),T=M+w*(v+e-d.r),A=I+(_<0?-1:1)*y,D=T;n=A+(_<0?-5:5),u=D,h=[[S,M],[I,T],[A,D]]}c=b?"center":_>0?"left":"right"}var C=p.getFont(),L=p.get("rotate")?_<0?-x+Math.PI:-x:0,k=ke(t.getFormattedLabel(i,"normal")||r.getName(i),C,c,"top");l=!!L,d.label={x:n,y:u,position:g,height:k.height,len:v,len2:y,linePoints:h,textAlign:c,verticalAlign:"middle",rotation:L,inside:b},b||s.push(d.label)}),!l&&t.get("avoidLabelOverlap")&&Wh(s,o,a,e,i,n)},lC=2*Math.PI,uC=Math.PI/180,hC=function(t){return{seriesType:t,reset:function(t,e){var i=e.findComponents({mainType:"legend"});if(i&&i.length){var n=t.getData();n.filterSelf(function(t){for(var e=n.getName(t),o=0;o=0;s--){var l=2*s,u=n[l]-a/2,h=n[l+1]-r/2;if(t>=u&&e>=h&&t<=u+a&&e<=h+r)return s}return-1}}),dC=Zh.prototype;dC.isPersistent=function(){return!this._incremental},dC.updateData=function(t){this.group.removeAll();var e=new cC({rectHover:!0,cursor:"default"});e.setShape({points:t.getLayout("symbolPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},dC.updateLayout=function(t){if(!this._incremental){var e=t.getLayout("symbolPoints");this.group.eachChild(function(t){if(null!=t.startIndex){var i=2*(t.endIndex-t.startIndex),n=4*t.startIndex*2;e=new Float32Array(e.buffer,n,i)}t.setShape("points",e)})}},dC.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>2e6?(this._incremental||(this._incremental=new Hn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},dC.incrementalUpdate=function(t,e){var i;this._incremental?(i=new cC,this._incremental.addDisplayable(i,!0)):((i=new cC({rectHover:!0,cursor:"default",startIndex:t.start,endIndex:t.end})).incremental=!0,this.group.add(i)),i.setShape({points:e.getLayout("symbolPoints")}),this._setCommon(i,e,!!this._incremental)},dC._setCommon=function(t,e,i){var n=e.hostModel,o=e.getVisual("symbolSize");t.setShape("size",o instanceof Array?o:[o,o]),t.symbolProxy=$l(e.getVisual("symbol"),0,0,0,0),t.setColor=t.symbolProxy.setColor;var a=t.shape.size[0]<4;t.useStyle(n.getModel("itemStyle").getItemStyle(a?["color","shadowBlur","shadowColor"]:["color"]));var r=e.getVisual("color");r&&t.setColor(r),i||(t.seriesIndex=n.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var i=t.findDataIndex(e.offsetX,e.offsetY);i>=0&&(t.dataIndex=i+(t.startIndex||0))}))},dC.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},dC._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()},Hs({type:"scatter",render:function(t,e,i){var n=t.getData();this._updateSymbolDraw(n,t).updateData(n),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()),this._finished=t.end===e.getData().count()},updateTransform:function(t,e,i){var n=t.getData();if(this.group.dirty(),!this._finished||n.count()>1e4||!this._symbolDraw.isPersistent())return{update:!0};var o=MD().reset(t);o.progress&&o.progress({start:0,end:n.count()},n),this._symbolDraw.updateLayout(n)},_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 Zh:new Au,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(){}}),zs(SD("scatter","circle")),Rs(MD("scatter")),u(Uh,iD),Xh.prototype.getIndicatorAxes=function(){return this._indicatorAxes},Xh.prototype.dataToPoint=function(t,e){var i=this._indicatorAxes[e];return this.coordToPoint(i.dataToCoord(t),e)},Xh.prototype.coordToPoint=function(t,e){var i=this._indicatorAxes[e].angle;return[this.cx+t*Math.cos(i),this.cy-t*Math.sin(i)]},Xh.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 o,a=Math.atan2(-i,e),r=1/0,s=-1,l=0;ln[0]&&isFinite(c)&&isFinite(n[0]))}else{r.getTicks().length-1>a&&(u=i(u));var d=Math.round((n[0]+n[1])/2/u)*u,f=Math.round(a/2);r.setExtent(Vo(d-f*u),Vo(d+(a-f)*u)),r.setInterval(u)}})},Xh.dimensions=[],Xh.create=function(t,e){var i=[];return t.eachComponent("radar",function(n){var o=new Xh(n,t,e);i.push(o),n.coordinateSystem=o}),t.eachSeriesByType("radar",function(t){"radar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("radarIndex")||0])}),i},Ga.register("radar",Xh);var fC=LD.valueAxis,pC=(Gs({type:"radar",optionUpdated:function(){var t=this.get("boundaryGap"),e=this.get("splitNumber"),o=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"),p=this.get("nameGap"),g=this.get("triggerEvent"),m=f(this.get("indicator")||[],function(f){null!=f.max&&f.max>0&&!f.min?f.min=0:null!=f.min&&f.min<0&&!f.max&&(f.max=0);var m=h;if(null!=f.color&&(m=r({color:f.color},h)),f=n(i(f),{boundaryGap:t,splitNumber:e,scale:o,axisLine:s,axisTick:l,axisLabel:u,name:f.text,nameLocation:"end",nameGap:p,nameTextStyle:m,triggerEvent:g},!1),c||(f.name=""),"string"==typeof d){var v=f.name;f.name=d.replace("{value}",null!=v?v:"")}else"function"==typeof d&&(f.name=d(f.name,f));var y=a(new Po(f,null,this.ecModel),WA);return y.mainType="radar",y.componentIndex=this.componentIndex,y},this);this.getIndicatorModels=function(){return m}},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:n({lineStyle:{color:"#bbb"}},fC.axisLine),axisLabel:jh(fC.axisLabel,!1),axisTick:jh(fC.axisTick,!1),splitLine:jh(fC.splitLine,!0),splitArea:jh(fC.splitArea,!0),indicator:[]}}),["axisLine","axisTickLabel","axisName"]);Fs({type:"radar",render:function(t,e,i){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},_buildAxes:function(t){var e=t.coordinateSystem;d(f(e.getIndicatorAxes(),function(t){return new BD(t.model,{position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})}),function(t){d(pC,t.add,t),this.group.add(t.getGroup())},this)},_buildSplitLineAndArea:function(t){function e(t,e,i){var n=i%e.length;return t[n]=t[n]||[],n}var i=t.coordinateSystem,n=i.getIndicatorAxes();if(n.length){var o=t.get("shape"),a=t.getModel("splitLine"),s=t.getModel("splitArea"),l=a.getModel("lineStyle"),u=s.getModel("areaStyle"),h=a.get("show"),c=s.get("show"),p=l.get("color"),g=u.get("color");p=y(p)?p:[p],g=y(g)?g:[g];var m=[],v=[];if("circle"===o)for(var x=n[0].getTicksCoords(),_=i.cx,w=i.cy,b=0;b"+f(i,function(i,n){var o=e.get(e.mapDimension(i.dim),t);return ea(i.name+" : "+o)}).join("
")},defaultOption:{zlevel:0,z:2,coordinateSystem:"radar",legendHoverLink:!0,radarIndex:0,lineStyle:{width:2,type:"solid"},label:{position:"top"},symbol:"emptyCircle",symbolSize:4}});Hs({type:"radar",render:function(t,e,n){function o(t,e){var i=t.getItemVisual(e,"symbol")||"circle",n=t.getItemVisual(e,"color");if("none"!==i){var o=Yh(t.getItemVisual(e,"symbolSize")),a=$l(i,-1,-1,2,2,n);return a.attr({style:{strokeNoScale:!0},z2:100,scale:[o[0]/2,o[1]/2]}),a}}function a(e,i,n,a,r,s){n.removeAll();for(var l=0;l"+ea(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)"}}}}),iC);var PC="\0_ec_interaction_mutex";Os({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},function(){}),h(nc,fw);var NC={axisPointer:1,tooltip:1,brush:1};yc.prototype={constructor:yc,draw:function(t,e,i,n,o){var a="geo"===t.mainType,r=t.getData&&t.getData();a&&e.eachComponent({mainType:"series",subType:"map"},function(e){r||e.getHostGeoModel()!==t||(r=e.getData())});var s=t.coordinateSystem;this._updateBackground(s);var l=this._regionsGroup,u=this.group,h=s.scale,c={position:s.position,scale:h};!l.childAt(0)||o?u.attr(c):Mo(u,c,t),l.removeAll();var f=["itemStyle"],p=["emphasis","itemStyle"],g=["label"],m=["emphasis","label"],v=R();d(s.regions,function(e){var i=v.get(e.name)||v.set(e.name,new tb),n=new SM({shape:{paths:[]}});i.add(n);var o,s=(C=t.getRegionModel(e.name)||t).getModel(f),u=C.getModel(p),c=gc(s),y=gc(u),x=C.getModel(g),_=C.getModel(m);if(r){o=r.indexOfName(e.name);var w=r.getItemVisual(o,"color",!0);w&&(c.fill=w)}d(e.geometries,function(t){if("polygon"===t.type){n.shape.paths.push(new fM({shape:{points:t.exterior}}));for(var e=0;e<(t.interiors?t.interiors.length:0);e++)n.shape.paths.push(new fM({shape:{points:t.interiors[e]}}))}}),n.setStyle(c),n.style.strokeNoScale=!0,n.culling=!0;var b=x.get("show"),S=_.get("show"),M=r&&isNaN(r.get(r.mapDimension("value"),o)),I=r&&r.getItemLayout(o);if(a||M&&(b||S)||I&&I.showLabel){var T,A=a?e.name:o;(!r||o>=0)&&(T=t);var D=new aM({position:e.center.slice(),scale:[1/h[0],1/h[1]],z2:10,silent:!0});po(D.style,D.hoverStyle={},x,_,{labelFetcher:T,labelDataIndex:A,defaultText:e.name,useInsideStyle:!1},{textAlign:"center",textVerticalAlign:"middle"}),i.add(D)}if(r)r.setItemGraphicEl(o,i);else{var C=t.getRegionModel(e.name);n.eventData={componentType:"geo",componentIndex:t.componentIndex,geoIndex:t.componentIndex,name:e.name,region:C&&C.option||{}}}(i.__regions||(i.__regions=[])).push(e),co(i,y,{hoverSilentOnTouch:!!t.get("selectedMode")}),l.add(i)}),this._updateController(t,e,i),mc(this,t,l,i,n),vc(t,l)},remove:function(){this._regionsGroup.removeAll(),this._backgroundGroup.removeAll(),this._controller.dispose(),this._mapName&&kC.removeGraphic(this._mapName,this.uid),this._mapName=null,this._controllerHost={}},_updateBackground:function(t){var e=t.map;this._mapName!==e&&d(kC.makeGraphic(e,this.uid),function(t){this._backgroundGroup.add(t)},this),this._mapName=e},_updateController:function(t,e,i){function n(){var e={type:"geoRoam",componentType:l};return e[l+"Id"]=t.id,e}var o=t.coordinateSystem,r=this._controller,s=this._controllerHost;s.zoomLimit=t.get("scaleLimit"),s.zoom=o.getZoom(),r.enable(t.get("roam")||!1);var l=t.mainType;r.off("pan").on("pan",function(t){this._mouseDownFlag=!1,dc(s,t.dx,t.dy),i.dispatchAction(a(n(),{dx:t.dx,dy:t.dy}))},this),r.off("zoom").on("zoom",function(t){if(this._mouseDownFlag=!1,fc(s,t.scale,t.originX,t.originY),i.dispatchAction(a(n(),{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),r.setPointerChecker(function(e,n,a){return o.getViewRectAfterRoam().contain(n,a)&&!pc(e,i,t)})}};var OC="__seriesMapHighDown",EC="__seriesMapCallKey";Hs({type:"map",render:function(t,e,i,n){if(!n||"mapToggleSelect"!==n.type||n.from!==this.uid){var o=this.group;if(o.removeAll(),!t.getHostGeoModel()){if(n&&"geoRoam"===n.type&&"series"===n.componentType&&n.seriesId===t.id)(a=this._mapDraw)&&o.add(a.group);else if(t.needsDrawMap){var a=this._mapDraw||new yc(i,!0);o.add(a.group),a.draw(t,e,i,this,n),this._mapDraw=a}else this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null;t.get("showLegendSymbol")&&e.getComponent("legend")&&this._renderSymbols(t,e,i)}}},remove:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null,this.group.removeAll()},dispose:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null},_renderSymbols:function(t,e,i){var n=t.originalData,o=this.group;n.each(n.mapDimension("value"),function(e,i){if(!isNaN(e)){var r=n.getItemLayout(i);if(r&&r.point){var s=r.point,l=r.offset,u=new rM({style:{fill:t.getData().getVisual("color")},shape:{cx:s[0]+9*l,cy:s[1],r:3},silent:!0,z2:8+(l?0:PM+1)});if(!l){var h=t.mainSeries.getData(),c=n.getName(i),d=h.indexOfName(c),f=n.getItemModel(i),p=f.getModel("label"),g=f.getModel("emphasis.label"),m=h.getItemGraphicEl(d),y=A(t.getFormattedLabel(d,"normal"),c),x=A(t.getFormattedLabel(d,"emphasis"),y),_=m[OC],w=Math.random();if(!_){_=m[OC]={};var b=v(xc,!0),S=v(xc,!1);m.on("mouseover",b).on("mouseout",S).on("emphasis",b).on("normal",S)}m[EC]=w,a(_,{recordVersion:w,circle:u,labelModel:p,hoverLabelModel:g,emphasisText:x,normalText:y}),_c(_,!1)}o.add(u)}}})}}),Os({type:"geoRoam",event:"geoRoam",update:"updateTransform"},function(t,e){var i=t.componentType||"series";e.eachComponent({mainType:i,query:t},function(e){var n=e.coordinateSystem;if("geo"===n.type){var o=wc(n,t,e.get("scaleLimit"));e.setCenter&&e.setCenter(o.center),e.setZoom&&e.setZoom(o.zoom),"series"===i&&d(e.seriesGroup,function(t){t.setCenter(o.center),t.setZoom(o.zoom)})}})});var RC=Q;h(bc,Tw),Sc.prototype={constructor:Sc,type:"view",dimensions:["x","y"],setBoundingRect:function(t,e,i,n){return this._rect=new de(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 de(t,e,i,n)},transformTo:function(t,e,i,n){var o=this.getBoundingRect(),a=this._rawTransformable;a.transform=o.calculateTransform(new de(t,e,i,n)),a.decomposeTransform(),this._updateTransform()},setCenter:function(t){t&&(this._center=t,this._updateCenterAndZoom())},setZoom:function(t){t=t||1;var e=this.zoomLimit;e&&(null!=e.max&&(t=Math.min(e.max,t)),null!=e.min&&(t=Math.max(e.min,t))),this._zoom=t,this._updateCenterAndZoom()},getDefaultCenter:function(){var t=this.getBoundingRect();return[t.x+t.width/2,t.y+t.height/2]},getCenter:function(){return this._center||this.getDefaultCenter()},getZoom:function(){return this._zoom||1},getRoamTransform:function(){return this._roamTransformable.getLocalTransform()},_updateCenterAndZoom:function(){var t=this._rawTransformable.getLocalTransform(),e=this._roamTransformable,i=this.getDefaultCenter(),n=this.getCenter(),o=this.getZoom();n=Q([],n,t),i=Q([],i,t),e.origin=n,e.position=[i[0]-n[0],i[1]-n[1]],e.scale=[o,o],this._updateTransform()},_updateTransform:function(){var t=this._roamTransformable,e=this._rawTransformable;e.parent=t,t.updateTransform(),e.updateTransform(),wt(this.transform||(this.transform=[]),e.transform||xt()),this._rawTransform=e.getLocalTransform(),this.invTransform=this.invTransform||[],Tt(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?RC(i,t,n):G(i,t)},pointToData:function(t){var e=this.invTransform;return e?RC([],t,e):[t[0],t[1]]},convertToPixel:v(Mc,"dataToPoint"),convertFromPixel:v(Mc,"pointToData"),containPoint:function(t){return this.getViewRectAfterRoam().contain(t[0],t[1])}},h(Sc,Tw),Ic.prototype={constructor:Ic,type:"geo",dimensions:["lng","lat"],containCoord:function(t){for(var e=this.regions,i=0;ie&&(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=0&&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),o=this.getLevelModel();return o||0!==this.children.length&&(0===this.children.length||!1!==this.isExpand)||(e=this.getLeavesModel()),n.getModel(t,(o||e||i.hostModel).getModel(t))}},getLevelModel:function(){return(this.hostTree.levelModels||[])[this.depth]},getLeavesModel:function(){return this.hostTree.leavesModel},setVisual:function(t,e){this.dataIndex>=0&&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)}},Bc.prototype={constructor:Bc,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;ia&&(a=t.depth)});var r=t.expandAndCollapse&&t.initialTreeDepth>=0?t.initialTreeDepth:a;return o.root.eachNode("preorder",function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=r}),o.data},getOrient:function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},formatTooltip:function(t){for(var e=this.getData().tree,i=e.root.children[0],n=e.getNodeByDataIndex(t),o=n.getValue(),a=n.name;n&&n!==i;)a=n.parentNode.name+"."+a,n=n.parentNode;return ea(a+(isNaN(o)||null==o?"":" : "+o))},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}}),Hs({type:"tree",init:function(t,e){this._oldTree,this._mainGroup=new tb,this._controller=new nc(e.getZr()),this._controllerHost={target:this.group},this.group.add(this._mainGroup)},render:function(t,e,i,n){var o=t.getData(),a=t.layoutInfo,r=this._mainGroup,s=t.get("layout");"radial"===s?r.attr("position",[a.x+a.width/2,a.y+a.height/2]):r.attr("position",[a.x,a.y]),this._updateViewCoordSys(t),this._updateController(t,e,i);var l=this._data,u={expandAndCollapse:t.get("expandAndCollapse"),layout:s,orient:t.getOrient(),curvature:t.get("lineStyle.curveness"),symbolRotate:t.get("symbolRotate"),symbolOffset:t.get("symbolOffset"),hoverAnimation:t.get("hoverAnimation"),useNameLabel:!0,fadeIn:!0};o.diff(l).add(function(e){Qc(o,e)&&ed(o,e,null,r,t,u)}).update(function(e,i){var n=l.getItemGraphicEl(i);Qc(o,e)?ed(o,e,n,r,t,u):n&&id(l,i,n,r,t,u)}).remove(function(e){var i=l.getItemGraphicEl(e);i&&id(l,e,i,r,t,u)}).execute(),this._nodeScaleRatio=t.get("nodeScaleRatio"),this._updateNodeAndLinkScale(t),!0===u.expandAndCollapse&&o.eachItemGraphicEl(function(e,n){e.off("click").on("click",function(){i.dispatchAction({type:"treeExpandAndCollapse",seriesId:t.id,dataIndex:n})})}),this._data=o},_updateViewCoordSys:function(t){var e=t.getData(),i=[];e.each(function(t){var n=e.getItemLayout(t);!n||isNaN(n.x)||isNaN(n.y)||i.push([+n.x,+n.y])});var n=[],o=[];dn(i,n,o),o[0]-n[0]==0&&(o[0]+=1,n[0]-=1),o[1]-n[1]==0&&(o[1]+=1,n[1]-=1);var a=t.coordinateSystem=new Sc;a.zoomLimit=t.get("scaleLimit"),a.setBoundingRect(n[0],n[1],o[0]-n[0],o[1]-n[1]),a.setCenter(t.get("center")),a.setZoom(t.get("zoom")),this.group.attr({position:a.position,scale:a.scale}),this._viewCoordSys=a},_updateController:function(t,e,i){var n=this._controller,o=this._controllerHost,a=this.group;n.setPointerChecker(function(e,n,o){var r=a.getBoundingRect();return r.applyTransform(a.transform),r.contain(n,o)&&!pc(e,i,t)}),n.enable(t.get("roam")),o.zoomLimit=t.get("scaleLimit"),o.zoom=t.coordinateSystem.getZoom(),n.off("pan").off("zoom").on("pan",function(e){dc(o,e.dx,e.dy),i.dispatchAction({seriesId:t.id,type:"treeRoam",dx:e.dx,dy:e.dy})},this).on("zoom",function(e){fc(o,e.scale,e.originX,e.originY),i.dispatchAction({seriesId:t.id,type:"treeRoam",zoom:e.scale,originX:e.originX,originY:e.originY}),this._updateNodeAndLinkScale(t)},this)},_updateNodeAndLinkScale:function(t){var e=t.getData(),i=this._getNodeGlobalScale(t),n=[i,i];e.eachItemGraphicEl(function(t,e){t.attr("scale",n)})},_getNodeGlobalScale:function(t){var e=t.coordinateSystem;if("view"!==e.type)return 1;var i=this._nodeScaleRatio,n=e.scale,o=n&&n[0]||1;return((e.getZoom()-1)*i+1)/o},dispose:function(){this._controller&&this._controller.dispose(),this._controllerHost={}},remove:function(){this._mainGroup.removeAll(),this._data=null}}),Os({type:"treeExpandAndCollapse",event:"treeExpandAndCollapse",update:"update"},function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},function(e){var i=t.dataIndex,n=e.getData().tree.getNodeByDataIndex(i);n.isExpand=!n.isExpand})}),Os({type:"treeRoam",event:"treeRoam",update:"none"},function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},function(e){var i=wc(e.coordinateSystem,t);e.setCenter&&e.setCenter(i.center),e.setZoom&&e.setZoom(i.zoom)})});zs(SD("tree","circle")),Rs(function(t,e){t.eachSeriesByType("tree",function(t){rd(t,e)})}),jI.extend({type:"series.treemap",layoutMode:"box",dependencies:["grid","polar"],_viewRoot:null,defaultOption:{progressive:0,hoverLayerThreshold:1/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};cd(i);var n=t.levels||[];n=t.levels=dd(n,e);var o={};return o.levels=n,Bc.createTree(i,this,o).data},optionUpdated:function(){this.resetViewRoot()},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=Qo(y(i)?i[0]:i);return ea(e.getName(t)+": "+n)},getDataParams:function(t){var e=jI.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return e.treePathInfo=hd(i,this),e},setLayoutInfo:function(t){this.layoutInfo=this.layoutInfo||{},a(this.layoutInfo,t)},mapIdToIndex:function(t){var e=this._idIndexMap;e||(e=this._idIndexMap=R(),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 WC=5;fd.prototype={constructor:fd,render:function(t,e,i,n){var o=t.getModel("breadcrumb"),a=this.group;if(a.removeAll(),o.get("show")&&i){var r=o.getModel("itemStyle"),s=r.getModel("textStyle"),l={pos:{left:o.get("left"),right:o.get("right"),top:o.get("top"),bottom:o.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:o.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(i,l,s),this._renderContent(t,l,r,s,n),ca(a,l.pos,l.box)}},_prepare:function(t,e,i){for(var n=t;n;n=n.parentNode){var o=n.getModel().get("name"),a=i.getTextRect(o),r=Math.max(a.width+16,e.emptyItemWidth);e.totalWidth+=r+8,e.renderList.push({node:n,text:o,width:r})}},_renderContent:function(t,e,i,n,o){for(var a=0,s=e.emptyItemWidth,l=t.get("breadcrumb.height"),u=ua(e.pos,e.box),h=e.totalWidth,c=e.renderList,d=c.length-1;d>=0;d--){var f=c[d],p=f.node,g=f.width,m=f.text;h>u.width&&(h-=g-s,g=s,m=null);var y=new fM({shape:{points:pd(a,0,g,l,d===c.length-1,0===d)},style:r(i.getItemStyle(),{lineJoin:"bevel",text:m,textFill:n.getTextColor(),textFont:n.getFont()}),z:10,onclick:v(o,p)});this.group.add(y),gd(y,t,p),a+=g+8}},remove:function(){this.group.removeAll()}};var HC=m,ZC=tb,UC=vM,XC=d,jC=["label"],YC=["emphasis","label"],qC=["upperLabel"],KC=["emphasis","upperLabel"],$C=10,JC=1,QC=2,tL=Jb([["fill","color"],["stroke","strokeColor"],["lineWidth","strokeWidth"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),eL=function(t){var e=tL(t);return e.stroke=e.fill=e.lineWidth=null,e};Hs({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(!(l(e.findComponents({mainType:"series",subType:"treemap",query:n}),t)<0)){this.seriesModel=t,this.api=i,this.ecModel=e;var o=sd(n,["treemapZoomToNode","treemapRootToNode"],t),a=n&&n.type,r=t.layoutInfo,s=!this._oldTree,u=this._storage,h="treemapRootToNode"===a&&o&&u?{rootNodeGroup:u.nodeGroup[o.node.getRawIndex()],direction:n.direction}:null,c=this._giveContainerGroup(r),d=this._doRender(c,t,h);s||a&&"treemapZoomToNode"!==a&&"treemapRootToNode"!==a?d.renderFinally():this._doAnimation(c,d,t,h),this._resetController(i),this._renderBreadcrumb(t,i,o)}},_giveContainerGroup:function(t){var e=this._containerGroup;return e||(e=this._containerGroup=new ZC,this._initEvents(e),this.group.add(e)),e.attr("position",[t.x,t.y]),e},_doRender:function(t,e,i){function n(t,e,i,o,a){function r(t){return t.getId()}function s(r,s){var l=null!=r?t[r]:null,u=null!=s?e[s]:null,c=h(l,u,i,a);c&&n(l&&l.viewChildren||[],u&&u.viewChildren||[],c,o,a+1)}o?(e=t,XC(t,function(t,e){!t.isRemoved()&&s(e,e)})):new Us(e,t,r,r).add(s).update(s).remove(v(s,null)).execute()}var o=e.getData().tree,a=this._oldTree,r={nodeGroup:[],background:[],content:[]},s={nodeGroup:[],background:[],content:[]},l=this._storage,u=[],h=v(vd,e,s,l,i,r,u);n(o.root?[o.root]:[],a&&a.root?[a.root]:[],t,o===a||!a,0);var c=function(t){var e={nodeGroup:[],background:[],content:[]};return t&&XC(t,function(t,i){var n=e[i];XC(t,function(t){t&&(n.push(t),t.__tmWillDelete=1)})}),e}(l);return this._oldTree=o,this._storage=s,{lastsForAnimation:r,willDeleteEls:c,renderFinally:function(){XC(c,function(t){XC(t,function(t){t.parent&&t.parent.remove(t)})}),XC(u,function(t){t.invisible=!0,t.dirty()})}}},_doAnimation:function(t,e,i,n){if(i.get("animation")){var o=i.get("animationDurationUpdate"),r=i.get("animationEasing"),s=md();XC(e.willDeleteEls,function(t,e){XC(t,function(t,i){if(!t.invisible){var a,l=t.parent;if(n&&"drillDown"===n.direction)a=l===n.rootNodeGroup?{shape:{x:0,y:0,width:l.__tmNodeWidth,height:l.__tmNodeHeight},style:{opacity:0}}:{style:{opacity:0}};else{var u=0,h=0;l.__tmWillDelete||(u=l.__tmNodeWidth/2,h=l.__tmNodeHeight/2),a="nodeGroup"===e?{position:[u,h],style:{opacity:0}}:{shape:{x:u,y:h,width:0,height:0},style:{opacity:0}}}a&&s.add(t,a,o,r)}})}),XC(this._storage,function(t,i){XC(t,function(t,n){var l=e.lastsForAnimation[i][n],u={};l&&("nodeGroup"===i?l.old&&(u.position=t.position.slice(),t.attr("position",l.old)):(l.old&&(u.shape=a({},t.shape),t.setShape(l.old)),l.fadein?(t.setStyle("opacity",0),u.style={opacity:1}):1!==t.style.opacity&&(u.style={opacity:1})),s.add(t,u,o,r))})},this),this._state="animating",s.done(HC(function(){this._state="ready",e.renderFinally()},this)).start()}},_resetController:function(t){var e=this._controller;e||((e=this._controller=new nc(t.getZr())).enable(this.seriesModel.get("roam")),e.on("pan",HC(this._onPan,this)),e.on("zoom",HC(this._onZoom,this)));var i=new de(0,0,t.getWidth(),t.getHeight());e.setPointerChecker(function(t,e,n){return i.contain(e,n)})},_clearController:function(){var t=this._controller;t&&(t.dispose(),t=null)},_onPan:function(t){if("animating"!==this._state&&(Math.abs(t.dx)>3||Math.abs(t.dy)>3)){var e=this.seriesModel.getData().tree.root;if(!e)return;var i=e.getLayout();if(!i)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:i.x+t.dx,y:i.y+t.dy,width:i.width,height:i.height}})}},_onZoom:function(t){var e=t.originX,i=t.originY;if("animating"!==this._state){var n=this.seriesModel.getData().tree.root;if(!n)return;var o=n.getLayout();if(!o)return;var a=new de(o.x,o.y,o.width,o.height),r=this.seriesModel.layoutInfo;e-=r.x,i-=r.y;var s=xt();St(s,s,[-e,-i]),It(s,s,[t.scale,t.scale]),St(s,s,[e,i]),a.applyTransform(s),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:a.x,y:a.y,width:a.width,height:a.height}})}},_initEvents:function(t){t.on("click",function(t){if("ready"===this._state){var e=this.seriesModel.get("nodeClick",!0);if(e){var i=this.findTarget(t.offsetX,t.offsetY);if(i){var n=i.node;if(n.getLayout().isLeafRoot)this._rootToNode(i);else if("zoomToNode"===e)this._zoomToNode(i);else if("link"===e){var o=n.hostTree.data.getItemModel(n.dataIndex),a=o.get("link",!0),r=o.get("target",!0)||"blank";a&&window.open(a,r)}}}}},this)},_renderBreadcrumb:function(t,e,i){i||(i=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(e.getWidth()/2,e.getHeight()/2))||(i={node:t.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new fd(this.group))).render(t,e,i.node,HC(function(e){"animating"!==this._state&&(ud(t.getViewRoot(),e)?this._rootToNode({node:e}):this._zoomToNode({node:e}))},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(t,e){var i;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},function(n){var o=this._storage.background[n.getRawIndex()];if(o){var a=o.transformCoordToLocal(t,e),r=o.shape;if(!(r.x<=a[0]&&a[0]<=r.x+r.width&&r.y<=a[1]&&a[1]<=r.y+r.height))return!1;i={node:n,offsetX:a[0],offsetY:a[1]}}},this),i}});for(var iL=["treemapZoomToNode","treemapRender","treemapMove"],nL=0;nL=0&&t.call(e,i[o],o)},SL.eachEdge=function(t,e){for(var i=this.edges,n=i.length,o=0;o=0&&i[o].node1.dataIndex>=0&&i[o].node2.dataIndex>=0&&t.call(e,i[o],o)},SL.breadthFirstTraverse=function(t,e,i,n){if($d.isInstance(e)||(e=this._nodesMap[Kd(e)]),e){for(var o="out"===i?"outEdges":"in"===i?"inEdges":"edges",a=0;a=0&&i.node2.dataIndex>=0});for(var o=0,a=n.length;o=0&&this[t][e].setItemVisual(this.dataIndex,i,n)},getVisual:function(i,n){return this[t][e].getItemVisual(this.dataIndex,i,n)},setLayout:function(i,n){this.dataIndex>=0&&this[t][e].setItemLayout(this.dataIndex,i,n)},getLayout:function(){return this[t][e].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[t][e].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[t][e].getRawIndex(this.dataIndex)}}};h($d,ML("hostGraph","data")),h(Jd,ML("hostGraph","edgeData")),bL.Node=$d,bL.Edge=Jd,ji($d),ji(Jd);var IL=function(t,e,i,n,o){for(var a=new bL(n),r=0;r "+f)),h++)}var p,g=i.get("coordinateSystem");if("cartesian2d"===g||"polar"===g)p=gl(t,i);else{var m=Ga.get(g),v=m&&"view"!==m.type?m.dimensions||[]:[];l(v,"value")<0&&v.concat(["value"]);var y=vA(t,{coordDimensions:v});(p=new pA(y,i)).initData(t)}var x=new pA(["value"],i);return x.initData(u,s),o&&o(p,x),Lc({mainData:p,struct:a,structAttr:"graph",datas:{node:p,edge:x},datasAttr:{node:"data",edge:"edgeData"}}),a.update(),a},TL=Ws({type:"series.graph",init:function(t){TL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this._categoriesData},this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeOption:function(t){TL.superApply(this,"mergeOption",arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeDefaultAndTheme:function(t){TL.superApply(this,"mergeDefaultAndTheme",arguments),Ci(t,["edgeLabel"],["show"])},getInitialData:function(t,e){var i=t.edges||t.links||[],n=t.data||t.nodes||[],o=this;if(n&&i)return IL(n,i,this,!0,function(t,i){function n(t){return(t=this.parsePath(t))&&"label"===t[0]?r:t&&"emphasis"===t[0]&&"label"===t[1]?l:this.parentModel}t.wrapMethod("getItemModel",function(t){var e=o._categoriesModels[t.getShallow("category")];return e&&(e.parentModel=t.parentModel,t.parentModel=e),t});var a=o.getModel("edgeLabel"),r=new Po({label:a.option},a.parentModel,e),s=o.getModel("emphasis.edgeLabel"),l=new Po({emphasis:{label:s.option}},s.parentModel,e);i.wrapMethod("getItemModel",function(t){return t.customizeGetParent(n),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){var n=this.getData(),o=this.getDataParams(t,i),a=n.graph.getEdgeByIndex(t),r=n.getName(a.node1.dataIndex),s=n.getName(a.node2.dataIndex),l=[];return null!=r&&l.push(r),null!=s&&l.push(s),l=ea(l.join(" > ")),o.value&&(l+=" : "+ea(o.value)),l}return TL.superApply(this,"formatTooltip",arguments)},_updateCategoriesData:function(){var t=f(this.option.categories||[],function(t){return null!=t.value?t:a({value:0},t)}),e=new pA(["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 TL.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}}}}),AL=xM.prototype,DL=wM.prototype,CL=Zn({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){(Qd(e)?AL:DL).buildPath(t,e)},pointAt:function(t){return Qd(this.shape)?AL.pointAt.call(this,t):DL.pointAt.call(this,t)},tangentAt:function(t){var e=this.shape,i=Qd(e)?[e.x2-e.x1,e.y2-e.y1]:DL.tangentAt.call(this,t);return q(i,i)}}),LL=["fromSymbol","toSymbol"],kL=af.prototype;kL.beforeUpdate=function(){var t=this,e=t.childOfName("fromSymbol"),i=t.childOfName("toSymbol"),n=t.childOfName("label");if(e||i||!n.ignore){for(var o=1,a=this.parent;a;)a.scale&&(o/=a.scale[0]),a=a.parent;var r=t.childOfName("line");if(this.__dirty||r.__dirty){var s=r.shape.percent,l=r.pointAt(0),u=r.pointAt(s),h=U([],u,l);if(q(h,h),e&&(e.attr("position",l),c=r.tangentAt(0),e.attr("rotation",Math.PI/2-Math.atan2(c[1],c[0])),e.attr("scale",[o*s,o*s])),i){i.attr("position",u);var c=r.tangentAt(1);i.attr("rotation",-Math.PI/2-Math.atan2(c[1],c[0])),i.attr("scale",[o*s,o*s])}if(!n.ignore){n.attr("position",u);var d,f,p,g=5*o;if("end"===n.__position)d=[h[0]*g+u[0],h[1]*g+u[1]],f=h[0]>.8?"left":h[0]<-.8?"right":"center",p=h[1]>.8?"top":h[1]<-.8?"bottom":"middle";else if("middle"===n.__position){var m=s/2,v=[(c=r.tangentAt(m))[1],-c[0]],y=r.pointAt(m);v[1]>0&&(v[0]=-v[0],v[1]=-v[1]),d=[y[0]+v[0]*g,y[1]+v[1]*g],f="center",p="bottom";var x=-Math.atan2(c[1],c[0]);u[0].8?"right":h[0]<-.8?"left":"center",p=h[1]>.8?"bottom":h[1]<-.8?"top":"middle";n.attr({style:{textVerticalAlign:n.__verticalAlign||p,textAlign:n.__textAlign||f},position:d,scale:[o,o]})}}}},kL._createLine=function(t,e,i){var n=t.hostModel,o=nf(t.getItemLayout(e));o.shape.percent=0,Io(o,{shape:{percent:1}},n,e),this.add(o);var a=new aM({name:"label"});this.add(a),d(LL,function(i){var n=ef(i,t,e);this.add(n),this[tf(i)]=t.getItemVisual(e,i)},this),this._updateCommonStl(t,e,i)},kL.updateData=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=t.getItemLayout(e),r={shape:{}};of(r.shape,a),Mo(o,r,n,e),d(LL,function(i){var n=t.getItemVisual(e,i),o=tf(i);if(this[o]!==n){this.remove(this.childOfName(i));var a=ef(i,t,e);this.add(a)}this[o]=n},this),this._updateCommonStl(t,e,i)},kL._updateCommonStl=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=i&&i.lineStyle,s=i&&i.hoverLineStyle,l=i&&i.labelModel,u=i&&i.hoverLabelModel;if(!i||t.hasItemOption){var h=t.getItemModel(e);a=h.getModel("lineStyle").getLineStyle(),s=h.getModel("emphasis.lineStyle").getLineStyle(),l=h.getModel("label"),u=h.getModel("emphasis.label")}var c=t.getItemVisual(e,"color"),f=D(t.getItemVisual(e,"opacity"),a.opacity,1);o.useStyle(r({strokeNoScale:!0,fill:"none",stroke:c,opacity:f},a)),o.hoverStyle=s,d(LL,function(t){var e=this.childOfName(t);e&&(e.setColor(c),e.setStyle({opacity:f}))},this);var p,g,m=l.getShallow("show"),v=u.getShallow("show"),y=this.childOfName("label");if((m||v)&&(p=c||"#000",null==(g=n.getFormattedLabel(e,"normal",t.dataType)))){var x=n.getRawValue(e);g=null==x?t.getName(e):isFinite(x)?Vo(x):x}var _=m?g:null,w=v?A(n.getFormattedLabel(e,"emphasis",t.dataType),g):null,b=y.style;null==_&&null==w||(go(y.style,l,{text:_},{autoColor:p}),y.__textAlign=b.textAlign,y.__verticalAlign=b.textVerticalAlign,y.__position=l.get("position")||"middle"),y.hoverStyle=null!=w?{text:w,textFill:u.getTextColor(!0),fontStyle:u.getShallow("fontStyle"),fontWeight:u.getShallow("fontWeight"),fontSize:u.getShallow("fontSize"),fontFamily:u.getShallow("fontFamily")}:{text:null},y.ignore=!m&&!v,co(this)},kL.highlight=function(){this.trigger("emphasis")},kL.downplay=function(){this.trigger("normal")},kL.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},kL.setLinePoints=function(t){var e=this.childOfName("line");of(e.shape,t),e.dirty()},u(af,tb);var PL=rf.prototype;PL.isPersistent=function(){return!0},PL.updateData=function(t){var e=this,i=e.group,n=e._lineData;e._lineData=t,n||i.removeAll();var o=uf(t);t.diff(n).add(function(i){sf(e,t,i,o)}).update(function(i,a){lf(e,n,t,a,i,o)}).remove(function(t){i.remove(n.getItemGraphicEl(t))}).execute()},PL.updateLayout=function(){var t=this._lineData;t&&t.eachItemGraphicEl(function(e,i){e.updateLayout(t,i)},this)},PL.incrementalPrepareUpdate=function(t){this._seriesScope=uf(t),this._lineData=null,this.group.removeAll()},PL.incrementalUpdate=function(t,e){for(var i=t.start;i=o/3?1:2),l=e.y-n(r)*a*(a>=o/3?1:2);r=e.angle-Math.PI/2,t.moveTo(s,l),t.lineTo(e.x+i(r)*a,e.y+n(r)*a),t.lineTo(e.x+i(e.angle)*o,e.y+n(e.angle)*o),t.lineTo(e.x-i(r)*a,e.y-n(r)*a),t.lineTo(s,l)}}),ZL=2*Math.PI,UL=(Tr.extend({type:"gauge",render:function(t,e,i){this.group.removeAll();var n=t.get("axisLine.lineStyle.color"),o=bf(t,i);this._renderMain(t,e,i,n,o)},dispose:function(){},_renderMain:function(t,e,i,n,o){for(var a=this.group,r=t.getModel("axisLine").getModel("lineStyle"),s=t.get("clockwise"),l=-t.get("startAngle")/180*Math.PI,u=-t.get("endAngle")/180*Math.PI,h=(u-l)%ZL,c=l,d=r.get("width"),f=0;f=t&&(0===e?0:n[e-1][0]).4?"bottom":"middle",textAlign:A<-.4?"left":A>.4?"right":"center"},{autoColor:P}),silent:!0}))}if(g.get("show")&&T!==v){for(var N=0;N<=y;N++){var A=Math.cos(w),D=Math.sin(w),O=new xM({shape:{x1:A*c+u,y1:D*c+h,x2:A*(c-_)+u,y2:D*(c-_)+h},silent:!0,style:I});"auto"===I.stroke&&O.setStyle({stroke:n((T+N/y)/v)}),l.add(O),w+=S}w-=S}else w+=b}},_renderPointer:function(t,e,i,n,o,a,r,s){var l=this.group,u=this._data;if(t.get("pointer.show")){var h=[+t.get("min"),+t.get("max")],c=[a,r],d=t.getData(),f=d.mapDimension("value");d.diff(u).add(function(e){var i=new HL({shape:{angle:a}});Io(i,{shape:{angle:zo(d.get(f,e),h,c,!0)}},t),l.add(i),d.setItemGraphicEl(e,i)}).update(function(e,i){var n=u.getItemGraphicEl(i);Mo(n,{shape:{angle:zo(d.get(f,e),h,c,!0)}},t),l.add(n),d.setItemGraphicEl(e,n)}).remove(function(t){var e=u.getItemGraphicEl(t);l.remove(e)}).execute(),d.eachItemGraphicEl(function(t,e){var i=d.getItemModel(e),a=i.getModel("pointer");t.setShape({x:o.cx,y:o.cy,width:Bo(a.get("width"),o.r),r:Bo(a.get("length"),o.r)}),t.useStyle(i.getModel("itemStyle").getItemStyle()),"auto"===t.style.fill&&t.setStyle("fill",n(zo(d.get(f,e),h,[0,1],!0))),co(t,i.getModel("emphasis.itemStyle").getItemStyle())}),this._data=d}else u&&u.eachItemGraphicEl(function(t){l.remove(t)})},_renderTitle:function(t,e,i,n,o){var a=t.getData(),r=a.mapDimension("value"),s=t.getModel("title");if(s.get("show")){var l=s.get("offsetCenter"),u=o.cx+Bo(l[0],o.r),h=o.cy+Bo(l[1],o.r),c=+t.get("min"),d=+t.get("max"),f=n(zo(t.getData().get(r,0),[c,d],[0,1],!0));this.group.add(new aM({silent:!0,style:go({},s,{x:u,y:h,text:a.getName(0),textAlign:"center",textVerticalAlign:"middle"},{autoColor:f,forceRich:!0})}))}},_renderDetail:function(t,e,i,n,o){var a=t.getModel("detail"),r=+t.get("min"),s=+t.get("max");if(a.get("show")){var l=a.get("offsetCenter"),u=o.cx+Bo(l[0],o.r),h=o.cy+Bo(l[1],o.r),c=Bo(a.get("width"),o.r),d=Bo(a.get("height"),o.r),f=t.getData(),p=f.get(f.mapDimension("value"),0),g=n(zo(p,[r,s],[0,1],!0));this.group.add(new aM({silent:!0,style:go({},a,{x:u,y:h,text:Sf(p,a.get("formatter")),textWidth:isNaN(c)?null:c,textHeight:isNaN(d)?null:d,textAlign:"center",textVerticalAlign:"middle"},{autoColor:g,forceRich:!0})}))}}}),Ws({type:"series.funnel",init:function(t){UL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this._defaultLabelLine(t)},getInitialData:function(t,e){return eC(this,["value"])},_defaultLabelLine:function(t){Ci(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=UL.superCall(this,"getDataParams",t),n=e.mapDimension("value"),o=e.getSum(n);return i.percent=o?+(e.get(n,t)/o*100).toFixed(2):0,i.$vars.push("percent"),i},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1,type:"solid"}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}}}})),XL=Mf.prototype,jL=["itemStyle","opacity"];XL.updateData=function(t,e,i){var n=this.childAt(0),o=t.hostModel,a=t.getItemModel(e),s=t.getItemLayout(e),l=t.getItemModel(e).get(jL);l=null==l?1:l,n.useStyle({}),i?(n.setShape({points:s.points}),n.setStyle({opacity:0}),Io(n,{style:{opacity:l}},o,e)):Mo(n,{style:{opacity:l},shape:{points:s.points}},o,e);var u=a.getModel("itemStyle"),h=t.getItemVisual(e,"color");n.setStyle(r({lineJoin:"round",fill:h},u.getItemStyle(["opacity"]))),n.hoverStyle=u.getModel("emphasis").getItemStyle(),this._updateLabel(t,e),co(this)},XL._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),o=t.hostModel,a=t.getItemModel(e),r=t.getItemLayout(e).label,s=t.getItemVisual(e,"color");Mo(i,{shape:{points:r.linePoints||r.linePoints}},o,e),Mo(n,{style:{x:r.x,y:r.y}},o,e),n.attr({rotation:r.rotation,origin:[r.x,r.y],z2:10});var l=a.getModel("label"),u=a.getModel("emphasis.label"),h=a.getModel("labelLine"),c=a.getModel("emphasis.labelLine"),s=t.getItemVisual(e,"color");po(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()},u(Mf,tb);Tr.extend({type:"funnel",render:function(t,e,i){var n=t.getData(),o=this._data,a=this.group;n.diff(o).add(function(t){var e=new Mf(n,t);n.setItemGraphicEl(t,e),a.add(e)}).update(function(t,e){var i=o.getItemGraphicEl(e);i.updateData(n,t),a.add(i),n.setItemGraphicEl(t,i)}).remove(function(t){var e=o.getItemGraphicEl(t);a.remove(e)}).execute(),this._data=n},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}});zs(rC("funnel")),Rs(function(t,e,i){t.eachSeriesByType("funnel",function(t){var i=t.getData(),n=i.mapDimension("value"),o=t.get("sort"),a=If(t,e),r=Tf(i,o),s=[Bo(t.get("minSize"),a.width),Bo(t.get("maxSize"),a.width)],l=i.getDataExtent(n),u=t.get("min"),h=t.get("max");null==u&&(u=Math.min(l[0],0)),null==h&&(h=l[1]);var c=t.get("funnelAlign"),d=t.get("gap"),f=(a.height-d*(i.count()-1))/i.count(),p=a.y,g=function(t,e){var o,r=zo(i.get(n,t)||0,[u,h],s,!0);switch(c){case"left":o=a.x;break;case"center":o=a.x+(a.width-r)/2;break;case"right":o=a.x+a.width-r}return[[o,e],[o+r,e]]};"ascending"===o&&(f=-f,d=-d,p+=a.height,r=r.reverse());for(var m=0;ma&&(e[1-n]=e[n]+h.sign*a),e},KL=d,$L=Math.min,JL=Math.max,QL=Math.floor,tk=Math.ceil,ek=Vo,ik=Math.PI;Pf.prototype={type:"parallel",constructor:Pf,_init:function(t,e,i){var n=t.dimensions,o=t.parallelAxisIndex;KL(n,function(t,i){var n=o[i],a=e.getComponent("parallelAxis",n),r=this._axesMap.set(t,new YL(t,Wl(a),[0,0],a.get("type"),n)),s="category"===r.type;r.onBand=s&&a.get("boundaryGap"),r.inverse=a.get("inverse"),a.axis=r,r.model=a,r.coordinateSystem=a.coordinateSystem=this},this)},update:function(t,e){this._updateAxesFromSeries(this._model,t)},containPoint:function(t){var e=this._makeLayoutInfo(),i=e.axisBase,n=e.layoutBase,o=e.pixelDimIndex,a=t[1-o],r=t[o];return a>=i&&a<=i+e.axisLength&&r>=n&&r<=n+e.layoutLength},getModel:function(){return this._model},_updateAxesFromSeries:function(t,e){e.eachSeries(function(i){if(t.contains(i,e)){var n=i.getData();KL(this.dimensions,function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(n,n.mapDimension(t)),Fl(e.scale,e.model)},this)}},this)},resize:function(t,e){this._rect=ha(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),this._layoutAxes()},getRect:function(){return this._rect},_makeLayoutInfo:function(){var t,e=this._model,i=this._rect,n=["x","y"],o=["width","height"],a=e.get("layout"),r="horizontal"===a?0:1,s=i[o[r]],l=[0,s],u=this.dimensions.length,h=Nf(e.get("axisExpandWidth"),l),c=Nf(e.get("axisExpandCount")||0,[0,u]),d=e.get("axisExpandable")&&u>3&&u>c&&c>1&&h>0&&s>0,f=e.get("axisExpandWindow");f?(t=Nf(f[1]-f[0],l),f[1]=f[0]+t):(t=Nf(h*(c-1),l),(f=[h*(e.get("axisExpandCenter")||QL(u/2))-t/2])[1]=f[0]+t);var p=(s-t)/(u-c);p<3&&(p=0);var g=[QL(ek(f[0]/h,1))+1,tk(ek(f[1]/h,1))-1],m=p/h*f[0];return{layout:a,pixelDimIndex:r,layoutBase:i[n[r]],layoutLength:s,axisBase:i[n[1-r]],axisLength:i[o[1-r]],axisExpandable:d,axisExpandWidth:h,axisCollapseWidth:p,axisExpandWindow:f,axisCount:u,winInnerIndices:g,axisExpandWindow0Pos:m}},_layoutAxes:function(){var t=this._rect,e=this._axesMap,i=this.dimensions,n=this._makeLayoutInfo(),o=n.layout;e.each(function(t){var e=[0,n.axisLength],i=t.inverse?1:0;t.setExtent(e[i],e[1-i])}),KL(i,function(e,i){var a=(n.axisExpandable?Ef:Of)(i,n),r={horizontal:{x:a.position,y:n.axisLength},vertical:{x:0,y:a.position}},s={horizontal:ik/2,vertical:0},l=[r[o].x+t.x,r[o].y+t.y],u=s[o],h=xt();Mt(h,h,u),St(h,h,l),this._axesLayout[e]={position:l,rotation:u,transform:h,axisNameAvailableWidth:a.axisNameAvailableWidth,axisLabelShow:a.axisLabelShow,nameTruncateMaxWidth:a.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(t,e,i,n){null==i&&(i=0),null==n&&(n=t.count());var o=this._axesMap,a=this.dimensions,r=[],s=[];d(a,function(e){r.push(t.mapDimension(e)),s.push(o.get(e).model)});for(var l=this.hasAxisBrushed(),u=i;uo*(1-h[0])?(l="jump",r=s-o*(1-h[2])):(r=s-o*h[1])>=0&&(r=s-o*(1-h[1]))<=0&&(r=0),(r*=e.axisExpandWidth/u)?qL(r,n,a,"all"):l="none";else{o=n[1]-n[0];(n=[JL(0,a[1]*s/o-o/2)])[1]=$L(a[1],n[0]+o),n[0]=n[1]-o}return{axisExpandWindow:n,behavior:l}}},Ga.register("parallel",{create:function(t,e){var i=[];return t.eachComponent("parallel",function(n,o){var a=new Pf(n,t,e);a.name="parallel_"+o,a.resize(n,e),n.coordinateSystem=a,a.model=n,i.push(a)}),t.eachSeries(function(e){if("parallel"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"parallel",index:e.get("parallelIndex"),id:e.get("parallelId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}});var nk=sI.extend({type:"baseParallelAxis",axis:null,activeIntervals:[],getAreaSelectStyle:function(){return Jb([["fill","color"],["lineWidth","borderWidth"],["stroke","borderColor"],["width","width"],["opacity","opacity"]])(this.getModel("areaSelectStyle"))},setActiveIntervals:function(t){var e=this.activeIntervals=i(t);if(e)for(var n=e.length-1;n>=0;n--)Go(e[n])},getActiveState:function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t||isNaN(t))return"inactive";if(1===e.length){var i=e[0];if(i[0]<=t&&t<=i[1])return"active"}else for(var n=0,o=e.length;n5)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&&Mp(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})}}};Ps(function(t){Df(t),Cf(t)}),jI.extend({type:"series.parallel",dependencies:["parallel"],visualColorAccessPath:"lineStyle.color",getInitialData:function(t,e){var i=this.getSource();return Ip(i,this),gl(i,this)},getRawIndicesByActiveState:function(t){var e=this.coordinateSystem,i=this.getData(),n=[];return e.eachActiveState(i,function(e,o){t===e&&n.push(i.getRawIndex(o))}),n},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"}});var Sk=.3,Mk=(Tr.extend({type:"parallel",init:function(){this._dataGroup=new tb,this.group.add(this._dataGroup),this._data,this._initialized},render:function(t,e,i,n){var o=this._dataGroup,a=t.getData(),r=this._data,s=t.coordinateSystem,l=s.dimensions,u=Lp(t);if(a.diff(r).add(function(t){kp(Cp(a,o,t,l,s),a,t,u)}).update(function(e,i){var o=r.getItemGraphicEl(i),h=Dp(a,e,l,s);a.setItemGraphicEl(e,o),Mo(o,{shape:{points:h}},n&&!1===n.animation?null:t,e),kp(o,a,e,u)}).remove(function(t){var e=r.getItemGraphicEl(t);o.remove(e)}).execute(),!this._initialized){this._initialized=!0;var h=Ap(s,t,function(){setTimeout(function(){o.removeClipPath()})});o.setClipPath(h)}this._data=a},incrementalPrepareRender:function(t,e,i){this._initialized=!0,this._data=null,this._dataGroup.removeAll()},incrementalRender:function(t,e,i){for(var n=e.getData(),o=e.coordinateSystem,a=o.dimensions,r=Lp(e),s=t.start;sn&&(n=e)}),d(e,function(e){var o=new sL({type:"color",mappingMethod:"linear",dataExtent:[i,n],visual:t.get("color")}).mapValueToVisual(e.getLayout().value);e.setVisual("color",o);var a=e.getModel().get("itemStyle.color");null!=a&&e.setVisual("color",a)})}})});var Ck={_baseAxisDim:null,getInitialData:function(t,e){var i,n,o=e.getComponent("xAxis",this.get("xAxisIndex")),a=e.getComponent("yAxis",this.get("yAxisIndex")),r=o.get("type"),s=a.get("type");"category"===r?(t.layout="horizontal",i=o.getOrdinalMeta(),n=!0):"category"===s?(t.layout="vertical",i=a.getOrdinalMeta(),n=!0):t.layout=t.layout||"horizontal";var l=["x","y"],u="horizontal"===t.layout?0:1,h=this._baseAxisDim=l[u],c=l[1-u],f=[o,a],p=f[u].get("type"),g=f[1-u].get("type"),m=t.data;if(m&&n){var v=[];d(m,function(t,e){var i;t.value&&y(t.value)?(i=t.value.slice(),t.value.unshift(e)):y(t)?(i=t.slice(),t.unshift(e)):i=t,v.push(i)}),t.data=v}var x=this.defaultValueDimensions;return eC(this,{coordDimensions:[{name:h,type:Ys(p),ordinalMeta:i,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:c,type:Ys(g),dimsDef:x.slice()}],dimensionsCount:x.length+1})},getBaseAxis:function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis}};h(jI.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}}),Ck,!0);var Lk=["itemStyle"],kk=["emphasis","itemStyle"],Pk=(Tr.extend({type:"boxplot",render:function(t,e,i){var n=t.getData(),o=this.group,a=this._data;this._data||o.removeAll();var r="horizontal"===t.get("layout")?1:0;n.diff(a).add(function(t){if(n.hasValue(t)){var e=ig(n.getItemLayout(t),n,t,r,!0);n.setItemGraphicEl(t,e),o.add(e)}}).update(function(t,e){var i=a.getItemGraphicEl(e);if(n.hasValue(t)){var s=n.getItemLayout(t);i?ng(s,i,n,t):i=ig(s,n,t,r),o.add(i),n.setItemGraphicEl(t,i)}else o.remove(i)}).remove(function(t){var e=a.getItemGraphicEl(t);e&&o.remove(e)}).execute(),this._data=n},remove:function(t){var e=this.group,i=this._data;this._data=null,i&&i.eachItemGraphicEl(function(t){t&&e.remove(t)})},dispose:B}),kn.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();n0?Wk:Hk)}function n(t,e){return e.get(t>0?Gk:Fk)}var o=t.getData(),a=t.pipelineContext.large;if(o.setVisual({legendSymbol:"roundRect",colorP:i(1,t),colorN:i(-1,t),borderColorP:n(1,t),borderColorN:n(-1,t)}),!e.isSeriesFiltered(t))return!a&&{progress:function(t,e){for(var o;null!=(o=t.next());){var a=e.getItemModel(o),r=e.getItemLayout(o).sign;e.setItemVisual(o,{color:i(r,a),borderColor:n(r,a)})}}}}},Uk="undefined"!=typeof Float32Array?Float32Array:Array,Xk={seriesType:"candlestick",plan:KI(),reset:function(t){var e=t.coordinateSystem,i=t.getData(),n=pg(t,i),o=0,a=1,r=["x","y"],s=i.mapDimension(r[o]),l=i.mapDimension(r[a],!0),u=l[0],h=l[1],c=l[2],d=l[3];if(i.setLayout({candleWidth:n,isSimpleBox:n<=1.3}),!(null==s||l.length<4))return{progress:t.pipelineContext.large?function(t,i){for(var n,r,l=new Uk(5*t.count),f=0,p=[],g=[];null!=(r=t.next());){var m=i.get(s,r),v=i.get(u,r),y=i.get(h,r),x=i.get(c,r),_=i.get(d,r);isNaN(m)||isNaN(x)||isNaN(_)?(l[f++]=NaN,f+=4):(l[f++]=fg(i,r,v,y,h),p[o]=m,p[a]=x,n=e.dataToPoint(p,null,g),l[f++]=n?n[0]:NaN,l[f++]=n?n[1]:NaN,p[a]=_,n=e.dataToPoint(p,null,g),l[f++]=n?n[1]:NaN)}i.setLayout("largePoints",l)}:function(t,i){function r(t,i){var n=[];return n[o]=i,n[a]=t,isNaN(i)||isNaN(t)?[NaN,NaN]:e.dataToPoint(n)}function l(t,e,i){var a=e.slice(),r=e.slice();a[o]=$n(a[o]+n/2,1,!1),r[o]=$n(r[o]-n/2,1,!0),i?t.push(a,r):t.push(r,a)}function f(t){return t[o]=$n(t[o],1),t}for(var p;null!=(p=t.next());){var g=i.get(s,p),m=i.get(u,p),v=i.get(h,p),y=i.get(c,p),x=i.get(d,p),_=Math.min(m,v),w=Math.max(m,v),b=r(_,g),S=r(w,g),M=r(y,g),I=r(x,g),T=[];l(T,S,0),l(T,b,1),T.push(f(I),f(S),f(M),f(b)),i.setItemLayout(p,{sign:fg(i,p,m,v,h),initBaseline:m>v?S[a]:b[a],ends:T,brushRect:function(t,e,i){var s=r(t,i),l=r(e,i);return s[o]-=n/2,l[o]-=n/2,{x:s[0],y:s[1],width:a?n:l[0]-s[0],height:a?l[1]-s[1]:n}}(y,x,g)})}}}}};Ps(function(t){t&&y(t.series)&&d(t.series,function(t){w(t)&&"k"===t.type&&(t.type="candlestick")})}),zs(Zk),Rs(Xk),jI.extend({type:"series.effectScatter",dependencies:["grid","polar"],getInitialData:function(t,e){return gl(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}});var jk=vg.prototype;jk.stopEffectAnimation=function(){this.childAt(1).removeAll()},jk.startEffectAnimation=function(t){for(var e=t.symbolType,i=t.color,n=this.childAt(1),o=0;o<3;o++){var a=$l(e,-1,-1,2,2,i);a.attr({style:{strokeNoScale:!0},z2:99,silent:!0,scale:[.5,.5]});var r=-o/3*t.period+t.effectOffset;a.animate("",!0).when(t.period,{scale:[t.rippleScale/2,t.rippleScale/2]}).delay(r).start(),a.animateStyle(!0).when(t.period,{opacity:0}).delay(r).start(),n.add(a)}mg(n,t)},jk.updateEffectAnimation=function(t){for(var e=this._effectCfg,i=this.childAt(1),n=["symbolType","period","rippleScale"],o=0;o "))},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,label:{show:!1,position:"end"},lineStyle:{opacity:.5}}}),$k=xg.prototype;$k.createLine=function(t,e,i){return new af(t,e,i)},$k._updateEffectSymbol=function(t,e){var i=t.getItemModel(e).getModel("effect"),n=i.get("symbolSize"),o=i.get("symbol");y(n)||(n=[n,n]);var a=i.get("color")||t.getItemVisual(e,"color"),r=this.childAt(1);this._symbolType!==o&&(this.remove(r),(r=$l(o,-.5,-.5,1,1,a)).z2=100,r.culling=!0,this.add(r)),r&&(r.setStyle("shadowColor",a),r.setStyle(i.getItemStyle(["color"])),r.attr("scale",n),r.setColor(a),r.attr("scale",n),this._symbolType=o,this._updateEffectAnimation(t,i,e))},$k._updateEffectAnimation=function(t,e,i){var n=this.childAt(1);if(n){var o=this,a=t.getItemLayout(i),r=1e3*e.get("period"),s=e.get("loop"),l=e.get("constantSpeed"),u=T(e.get("delay"),function(e){return e/t.count()*r/3}),h="function"==typeof u;if(n.ignore=!0,this.updateAnimationPoints(n,a),l>0&&(r=this.getLineLength(n)/l*1e3),r!==this._period||s!==this._loop){n.stopAnimation();var c=u;h&&(c=u(i)),n.__t>0&&(c=-r*n.__t),n.__t=0;var d=n.animate("",s).when(r,{__t:1}).delay(c).during(function(){o.updateSymbolPosition(n)});s||d.done(function(){o.remove(n)}),d.start()}this._period=r,this._loop=s}},$k.getLineLength=function(t){return uw(t.__p1,t.__cp1)+uw(t.__cp1,t.__p2)},$k.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]},$k.updateData=function(t,e,i){this.childAt(0).updateData(t,e,i),this._updateEffectSymbol(t,e)},$k.updateSymbolPosition=function(t){var e=t.__p1,i=t.__p2,n=t.__cp1,o=t.__t,a=t.position,r=rn,s=sn;a[0]=r(e[0],n[0],i[0],o),a[1]=r(e[1],n[1],i[1],o);var l=s(e[0],n[0],i[0],o),u=s(e[1],n[1],i[1],o);t.rotation=-Math.atan2(u,l)-Math.PI/2,t.ignore=!1},$k.updateLayout=function(t,e){this.childAt(0).updateLayout(t,e);var i=t.getItemModel(e).getModel("effect");this._updateEffectAnimation(t,i,e)},u(xg,tb);var Jk=_g.prototype;Jk._createPolyline=function(t,e,i){var n=t.getItemLayout(e),o=new pM({shape:{points:n}});this.add(o),this._updateCommonStl(t,e,i)},Jk.updateData=function(t,e,i){var n=t.hostModel;Mo(this.childAt(0),{shape:{points:t.getItemLayout(e)}},n,e),this._updateCommonStl(t,e,i)},Jk._updateCommonStl=function(t,e,i){var n=this.childAt(0),o=t.getItemModel(e),a=t.getItemVisual(e,"color"),s=i&&i.lineStyle,l=i&&i.hoverLineStyle;i&&!t.hasItemOption||(s=o.getModel("lineStyle").getLineStyle(),l=o.getModel("emphasis.lineStyle").getLineStyle()),n.useStyle(r({strokeNoScale:!0,fill:"none",stroke:a},s)),n.hoverStyle=l,co(this)},Jk.updateLayout=function(t,e){this.childAt(0).setShape("points",t.getItemLayout(e))},u(_g,tb);var Qk=wg.prototype;Qk.createLine=function(t,e,i){return new _g(t,e,i)},Qk.updateAnimationPoints=function(t,e){this._points=e;for(var i=[0],n=0,o=1;o=0&&!(n[r]<=e);r--);r=Math.min(r,o-2)}else{for(var r=a;re);r++);r=Math.min(r-1,o-2)}J(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}},u(wg,xg);var tP=Zn({shape:{polyline:!1,curveness:0,segs:[]},buildPath:function(t,e){var i=e.segs,n=e.curveness;if(e.polyline)for(r=0;r0){t.moveTo(i[r++],i[r++]);for(var a=1;a0){var c=(s+u)/2-(l-h)*n,d=(l+h)/2-(u-s)*n;t.quadraticCurveTo(c,d,u,h)}else t.lineTo(u,h)}},findDataIndex:function(t,e){var i=this.shape,n=i.segs,o=i.curveness;if(i.polyline)for(var a=0,r=0;r0)for(var l=n[r++],u=n[r++],h=1;h0){if(xn(l,u,(l+c)/2-(u-d)*o,(u+d)/2-(c-l)*o,c,d))return a}else if(vn(l,u,c,d))return a;a++}return-1}}),eP=bg.prototype;eP.isPersistent=function(){return!this._incremental},eP.updateData=function(t){this.group.removeAll();var e=new tP({rectHover:!0,cursor:"default"});e.setShape({segs:t.getLayout("linesPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},eP.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>5e5?(this._incremental||(this._incremental=new Hn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},eP.incrementalUpdate=function(t,e){var i=new tP;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))},eP.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},eP._setCommon=function(t,e,i){var n=e.hostModel;t.setShape({polyline:n.get("polyline"),curveness:n.get("lineStyle.curveness")}),t.useStyle(n.getModel("lineStyle").getLineStyle()),t.style.strokeNoScale=!0;var o=e.getVisual("color");o&&t.setStyle("stroke",o),t.setStyle("fill"),i||(t.seriesIndex=n.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var i=t.findDataIndex(e.offsetX,e.offsetY);i>0&&(t.dataIndex=i+t.__startIndex)}))},eP._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()};var iP={seriesType:"lines",plan:KI(),reset:function(t){var e=t.coordinateSystem,i=t.get("polyline"),n=t.pipelineContext.large;return{progress:function(o,a){var r=[];if(n){var s,l=o.end-o.start;if(i){for(var u=0,h=o.start;h0){var I=a(v)?s:l;v>0&&(v=v*S+b),x[_++]=I[M],x[_++]=I[M+1],x[_++]=I[M+2],x[_++]=I[M+3]*v*256}else _+=4}return c.putImageData(y,0,0),h},_getBrush:function(){var t=this._brushCanvas||(this._brushCanvas=iw()),e=this.pointSize+this.blurSize,i=2*e;t.width=i,t.height=i;var n=t.getContext("2d");return n.clearRect(0,0,i,i),n.shadowOffsetX=i,n.shadowBlur=this.blurSize,n.shadowColor="#000",n.beginPath(),n.arc(-e,e,this.pointSize,0,2*Math.PI,!0),n.closePath(),n.fill(),t},_getGradient:function(t,e,i){for(var n=this._gradientPixels,o=n[i]||(n[i]=new Uint8ClampedArray(1024)),a=[0,0,0,0],r=0,s=0;s<256;s++)e[i](s/255,!0,a),o[r++]=a[0],o[r++]=a[1],o[r++]=a[2],o[r++]=a[3];return o}},Hs({type:"heatmap",render:function(t,e,i){var n;e.eachComponent("visualMap",function(e){e.eachTargetSeries(function(i){i===t&&(n=e)})}),this.group.removeAll(),this._incrementalDisplayable=null;var o=t.coordinateSystem;"cartesian2d"===o.type||"calendar"===o.type?this._renderOnCartesianAndCalendar(t,i,0,t.getData().count()):Ag(o)&&this._renderOnGeo(o,t,n,i)},incrementalPrepareRender:function(t,e,i){this.group.removeAll()},incrementalRender:function(t,e,i,n){e.coordinateSystem&&this._renderOnCartesianAndCalendar(e,n,t.start,t.end,!0)},_renderOnCartesianAndCalendar:function(t,e,i,n,o){var r,s,l=t.coordinateSystem;if("cartesian2d"===l.type){var u=l.getAxis("x"),h=l.getAxis("y");r=u.getBandWidth(),s=h.getBandWidth()}for(var c=this.group,d=t.getData(),f=t.getModel("itemStyle").getItemStyle(["color"]),p=t.getModel("emphasis.itemStyle").getItemStyle(),g=t.getModel("label"),m=t.getModel("emphasis.label"),v=l.type,y="cartesian2d"===v?[d.mapDimension("x"),d.mapDimension("y"),d.mapDimension("value")]:[d.mapDimension("time"),d.mapDimension("value")],x=i;x=e.y&&t[1]<=e.y+e.height:i.contain(i.toLocalCoord(t[1]))&&t[0]>=e.y&&t[0]<=e.y+e.height},pointToData:function(t){var e=this.getAxis();return[e.coordToData(e.toLocalCoord(t["horizontal"===e.orient?0:1]))]},dataToPoint:function(t){var e=this.getAxis(),i=this.getRect(),n=[],o="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),n[o]=e.toGlobalCoord(e.dataToCoord(+t)),n[1-o]=0===o?i.y+i.height/2:i.x+i.width/2,n}},Ga.register("single",{create:function(t,e){var i=[];return t.eachComponent("singleAxis",function(n,o){var a=new $g(n,t,e);a.name="single_"+o,a.resize(n,e),n.coordinateSystem=a,i.push(a)}),t.eachSeries(function(e){if("singleAxis"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"singleAxis",index:e.get("singleAxisIndex"),id:e.get("singleAxisId")})[0];e.coordinateSystem=i&&i.coordinateSystem}}),i},dimensions:$g.prototype.dimensions});var hP=["axisLine","axisTickLabel","axisName"],cP=HD.extend({type:"singleAxis",axisPointerClass:"SingleAxisPointer",render:function(t,e,i,n){var o=this.group;o.removeAll();var a=Jg(t),r=new BD(t,a);d(hP,r.add,r),o.add(r.getGroup()),t.get("splitLine.show")&&this._splitLine(t),cP.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"),o=n.get("width"),a=n.get("color");a=a instanceof Array?a:[a];for(var r=t.coordinateSystem.getRect(),s=e.isHorizontal(),l=[],u=0,h=e.getTicksCoords({tickModel:i}),c=[],d=[],f=0;f=0)&&i({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})})},remove:function(t,e){gm(e.getZr(),"axisPointer"),xP.superApply(this._model,"remove",arguments)},dispose:function(t,e){gm("axisPointer",e),xP.superApply(this._model,"dispose",arguments)}}),_P=Bi(),wP=i,bP=m;(mm.prototype={_group:null,_lastGraphicKey:null,_handle:null,_dragging:!1,_lastValue:null,_lastStatus:null,_payloadInfo:null,animationThreshold:15,render:function(t,e,i,n){var o=e.get("value"),a=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=i,n||this._lastValue!==o||this._lastStatus!==a){this._lastValue=o,this._lastStatus=a;var r=this._group,s=this._handle;if(!a||"hide"===a)return r&&r.hide(),void(s&&s.hide());r&&r.show(),s&&s.show();var l={};this.makeElOption(l,o,t,e,i);var u=l.graphicKey;u!==this._lastGraphicKey&&this.clear(i),this._lastGraphicKey=u;var h=this._moveAnimation=this.determineAnimation(t,e);if(r){var c=v(vm,e,h);this.updatePointerEl(r,l,c,e),this.updateLabelEl(r,l,c,e)}else r=this._group=new tb,this.createPointerEl(r,l,t,e),this.createLabelEl(r,l,t,e),i.getZr().add(r);wm(r,e,!0),this._renderHandle(o)}},remove:function(t){this.clear(t)},dispose:function(t){this.clear(t)},determineAnimation:function(t,e){var i=e.get("animation"),n=t.axis,o="category"===n.type,a=e.get("snap");if(!a&&!o)return!1;if("auto"===i||null==i){var r=this.animationThreshold;if(o&&n.getBandWidth()>r)return!0;if(a){var s=Sh(t).seriesDataCount,l=n.getExtent();return Math.abs(l[0]-l[1])/s>r}return!1}return!0===i},makeElOption:function(t,e,i,n,o){},createPointerEl:function(t,e,i,n){var o=e.pointer;if(o){var a=_P(t).pointerEl=new RM[o.type](wP(e.pointer));t.add(a)}},createLabelEl:function(t,e,i,n){if(e.label){var o=_P(t).labelEl=new vM(wP(e.label));t.add(o),xm(o,n)}},updatePointerEl:function(t,e,i){var n=_P(t).pointerEl;n&&(n.setStyle(e.pointer.style),i(n,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,i,n){var o=_P(t).labelEl;o&&(o.setStyle(e.label.style),i(o,{shape:e.label.shape,position:e.label.position}),xm(o,n))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e=this._axisPointerModel,i=this._api.getZr(),n=this._handle,o=e.getModel("handle"),a=e.get("status");if(!o.get("show")||!a||"hide"===a)return n&&i.remove(n),void(this._handle=null);var r;this._handle||(r=!0,n=this._handle=ko(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){mw(t.event)},onmousedown:bP(this._onHandleDragMove,this,0,0),drift:bP(this._onHandleDragMove,this),ondragend:bP(this._onHandleDragEnd,this)}),i.add(n)),wm(n,e,!1);n.setStyle(o.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var s=o.get("size");y(s)||(s=[s,s]),n.attr("scale",[s[0]/2,s[1]/2]),Pr(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,r)}},_moveHandleToValue:function(t,e){vm(this._axisPointerModel,!e&&this._moveAnimation,this._handle,_m(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var i=this._handle;if(i){this._dragging=!0;var n=this.updateHandleTransform(_m(i),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=n,i.stopAnimation(),i.attr(_m(n)),_P(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 i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}}).constructor=mm,Xi(mm);var SP=mm.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.grid,s=n.get("type"),l=km(r,a).getOtherAxis(a).getGlobalExtent(),u=a.toGlobalCoord(a.dataToCoord(e,!0));if(s&&"none"!==s){var h=bm(n),c=MP[s](a,u,l,h);c.style=h,t.graphicKey=c.type,t.pointer=c}Am(e,t,Ch(r.model,i),i,n,o)},getHandleTransform:function(t,e,i){var n=Ch(e.axis.grid.model,e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:Tm(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.grid,r=o.getGlobalExtent(!0),s=km(a,o).getOtherAxis(o).getGlobalExtent(),l="x"===o.dim?0:1,u=t.position;u[l]+=e[l],u[l]=Math.min(r[1],u[l]),u[l]=Math.max(r[0],u[l]);var h=(s[1]+s[0])/2,c=[h,h];c[l]=u[l];return{position:u,rotation:t.rotation,cursorPoint:c,tooltipOption:[{verticalAlign:"middle"},{align:"center"}][l]}}}),MP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Pm(t));return qn({shape:o,style:n}),{type:"Line",shape:o}},shadow:function(t,e,i,n){var o=Math.max(1,t.getBandWidth()),a=i[1]-i[0];return{type:"Rect",shape:Cm([e-o/2,i[0]],[o,a],Pm(t))}}};HD.registerAxisPointerClass("CartesianAxisPointer",SP),Ps(function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!y(e)&&(t.axisPointer.link=[e])}}),Ns(zT.PROCESSOR.STATISTIC,function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=mh(t,e)}),Os({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},function(t,e,i){var n=t.currTrigger,o=[t.x,t.y],a=t,r=t.dispatchAction||m(i.dispatchAction,i),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){lm(o)&&(o=fP({seriesIndex:a.seriesIndex,dataIndex:a.dataIndex},e).point);var l=lm(o),u=a.axesInfo,h=s.axesInfo,c="leave"===n||lm(o),d={},f={},p={list:[],map:{}},g={showPointer:gP(em,f),showTooltip:gP(im,p)};pP(s.coordSysMap,function(t,e){var i=l||t.containPoint(o);pP(s.coordSysAxesInfo[e],function(t,e){var n=t.axis,a=rm(u,t);if(!c&&i&&(!u||a)){var r=a&&a.value;null!=r||l||(r=n.pointToData(o)),null!=r&&Qg(t,r,g,!1,d)}})});var v={};return pP(h,function(t,e){var i=t.linkGroup;i&&!f[e]&&pP(i.axesInfo,function(e,n){var o=f[n];if(e!==t&&o){var a=o.value;i.mapper&&(a=t.axis.scale.parse(i.mapper(a,sm(e),sm(t)))),v[t.key]=a}})}),pP(v,function(t,e){Qg(h[e],t,g,!0,d)}),nm(f,h,d),om(p,o,t,r),am(h,0,i),d}});var IP=["x","y"],TP=["width","height"],AP=mm.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.coordinateSystem,s=Om(r,1-Nm(a)),l=r.dataToPoint(e)[0],u=n.get("type");if(u&&"none"!==u){var h=bm(n),c=DP[u](a,l,s,h);c.style=h,t.graphicKey=c.type,t.pointer=c}Am(e,t,Jg(i),i,n,o)},getHandleTransform:function(t,e,i){var n=Jg(e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:Tm(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.coordinateSystem,r=Nm(o),s=Om(a,r),l=t.position;l[r]+=e[r],l[r]=Math.min(s[1],l[r]),l[r]=Math.max(s[0],l[r]);var u=Om(a,1-r),h=(u[1]+u[0])/2,c=[h,h];return c[r]=l[r],{position:l,rotation:t.rotation,cursorPoint:c,tooltipOption:{verticalAlign:"middle"}}}}),DP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Nm(t));return qn({shape:o,style:n}),{type:"Line",shape:o}},shadow:function(t,e,i,n){var o=t.getBandWidth(),a=i[1]-i[0];return{type:"Rect",shape:Cm([e-o/2,i[0]],[o,a],Nm(t))}}};HD.registerAxisPointerClass("SingleAxisPointer",AP),Fs({type:"single"});var CP=jI.extend({type:"series.themeRiver",dependencies:["singleAxis"],nameMap:null,init:function(t){CP.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()}},fixData:function(t){for(var e=t.length,i=f(zp().key(function(t){return t[2]}).entries(t),function(t){return{name:t.key,dataList:t.values}}),n=i.length,o=-1,a=-1,r=0;ro&&(o=s,a=r)}for(var l=0;lMath.PI/2?"right":"left"):x&&"center"!==x?"left"===x?(f=u.r0+y,p>Math.PI/2&&(x="right")):"right"===x&&(f=u.r-y,p>Math.PI/2&&(x="left")):(f=(u.r+u.r0)/2,x="center"),d.attr("style",{text:l,textAlign:x,textVerticalAlign:n("verticalAlign")||"middle",opacity:n("opacity")});var _=f*g+u.cx,w=f*m+u.cy;d.attr("position",[_,w]);var b=n("rotate"),S=0;"radial"===b?(S=-p)<-Math.PI/2&&(S+=Math.PI):"tangential"===b?(S=Math.PI/2-p)>Math.PI/2?S-=Math.PI:S<-Math.PI/2&&(S+=Math.PI):"number"==typeof b&&(S=b*Math.PI/180),d.attr("rotation",S)},NP._initEvents=function(t,e,i,n){t.off("mouseover").off("mouseout").off("emphasis").off("normal");var o=this,a=function(){o.onEmphasis(n)},r=function(){o.onNormal()};i.isAnimationEnabled()&&t.on("mouseover",a).on("mouseout",r).on("emphasis",a).on("normal",r).on("downplay",function(){o.onDownplay()}).on("highlight",function(){o.onHighlight()})},u(Vm,tb);Tr.extend({type:"sunburst",init:function(){},render:function(t,e,i,n){function o(i,n){if(c||!i||i.getValue()||(i=null),i!==l&&n!==l)if(n&&n.piece)i?(n.piece.updateData(!1,i,"normal",t,e),s.setItemGraphicEl(i.dataIndex,n.piece)):a(n);else if(i){var o=new Vm(i,t,e);h.add(o),s.setItemGraphicEl(i.dataIndex,o)}}function a(t){t&&t.piece&&(h.remove(t.piece),t.piece=null)}var r=this;this.seriesModel=t,this.api=i,this.ecModel=e;var s=t.getData(),l=s.tree.root,u=t.getViewRoot(),h=this.group,c=t.get("renderLabelForZeroData"),d=[];u.eachNode(function(t){d.push(t)});var f=this._oldChildren||[];if(function(t,e){function i(t){return t.getId()}function n(i,n){o(null==i?null:t[i],null==n?null:e[n])}0===t.length&&0===e.length||new Us(e,t,i,i).add(n).update(n).remove(v(n,null)).execute()}(d,f),function(i,n){if(n.depth>0){r.virtualPiece?r.virtualPiece.updateData(!1,i,"normal",t,e):(r.virtualPiece=new Vm(i,t,e),h.add(r.virtualPiece)),n.piece._onclickEvent&&n.piece.off("click",n.piece._onclickEvent);var o=function(t){r._rootToNode(n.parentNode)};n.piece._onclickEvent=o,r.virtualPiece.on("click",o)}else r.virtualPiece&&(h.remove(r.virtualPiece),r.virtualPiece=null)}(l,u),n&&n.highlight&&n.highlight.piece){var p=t.getShallow("highlightPolicy");n.highlight.piece.onEmphasis(p)}else if(n&&n.unhighlight){var g=this.virtualPiece;!g&&l.children.length&&(g=l.children[0].piece),g&&g.onNormal()}this._initEvents(),this._oldChildren=d},dispose:function(){},_initEvents:function(){var t=this,e=function(e){var i=!1;t.seriesModel.getViewRoot().eachNode(function(n){if(!i&&n.piece&&n.piece.childAt(0)===e.target){var o=n.getModel().get("nodeClick");if("rootToNode"===o)t._rootToNode(n);else if("link"===o){var a=n.getModel(),r=a.get("link");if(r){var s=a.get("target",!0)||"_blank";window.open(r,s)}}i=!0}})};this.group._onclickEvent&&this.group.off("click",this.group._onclickEvent),this.group.on("click",e),this.group._onclickEvent=e},_rootToNode:function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:"sunburstRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,o=t[1]-i.cy,a=Math.sqrt(n*n+o*o);return a<=i.r&&a>=i.r0}}});var OP="sunburstRootToNode";Os({type:OP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=sd(t,[OP],e);if(n){var o=e.getViewRoot();o&&(t.direction=ud(o,n.node)?"rollUp":"drillDown"),e.resetViewRoot(n.node)}})});var EP="sunburstHighlight";Os({type:EP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=sd(t,[EP],e);n&&(t.highlight=n.node)})});Os({type:"sunburstUnhighlight",update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){t.unhighlight=!0})});var RP=Math.PI/180;zs(v(rC,"sunburst")),Rs(v(function(t,e,i,n){e.eachSeriesByType(t,function(t){var e=t.get("center"),n=t.get("radius");y(n)||(n=[0,n]),y(e)||(e=[e,e]);var o=i.getWidth(),a=i.getHeight(),r=Math.min(o,a),s=Bo(e[0],o),l=Bo(e[1],a),u=Bo(n[0],r/2),h=Bo(n[1],r/2),c=-t.get("startAngle")*RP,f=t.get("minAngle")*RP,p=t.getData().tree.root,g=t.getViewRoot(),m=g.depth,v=t.get("sort");null!=v&&Zm(g,v);var x=0;d(g.children,function(t){!isNaN(t.getValue())&&x++});var _=g.getValue(),w=Math.PI/(_||x)*2,b=g.depth>0,S=g.height-(b?-1:1),M=(h-u)/(S||1),I=t.get("clockwise"),T=t.get("stillShowZeroSum"),A=I?1:-1,D=function(t,e){if(t){var i=e;if(t!==p){var n=t.getValue(),o=0===_&&T?w:n*w;on[1]&&n.reverse(),{coordSys:{type:"polar",cx:t.cx,cy:t.cy,r:n[1],r0:n[0]},api:{coord:m(function(n){var o=e.dataToRadius(n[0]),a=i.dataToAngle(n[1]),r=t.coordToPoint([o,a]);return r.push(o,a*Math.PI/180),r}),size:m(qm,t)}}},calendar:function(t){var e=t.getRect(),i=t.getRangeInfo();return{coordSys:{type:"calendar",x:e.x,y:e.y,width:e.width,height:e.height,cellWidth:t.getCellWidth(),cellHeight:t.getCellHeight(),rangeInfo:{start:i.start,end:i.end,weeks:i.weeks,dayCount:i.allDay}},api:{coord:function(e,i){return t.dataToPoint(e,i)}}}}};jI.extend({type:"series.custom",dependencies:["grid","polar","geo","singleAxis","calendar"],defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,useTransform:!0},getInitialData:function(t,e){return gl(this.getSource(),this)},getDataParams:function(t,e,i){var n=jI.prototype.getDataParams.apply(this,arguments);return i&&(n.info=i.info),n}}),Tr.extend({type:"custom",_data:null,render:function(t,e,i,n){var o=this._data,a=t.getData(),r=this.group,s=Qm(t,a,e,i);a.diff(o).add(function(e){ev(null,e,s(e,n),t,r,a)}).update(function(e,i){ev(o.getItemGraphicEl(i),e,s(e,n),t,r,a)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&r.remove(e)}).execute(),this._data=a},incrementalPrepareRender:function(t,e,i){this.group.removeAll(),this._data=null},incrementalRender:function(t,e,i,n,o){for(var a=e.getData(),r=Qm(e,a,i,n),s=t.start;s=0;l--)null==o[l]?o.splice(l,1):delete o[l].$action},_flatten:function(t,e,i){d(t,function(t){if(t){i&&(t.parentOption=i),e.push(t);var n=t.children;"group"===t.type&&n&&this._flatten(n,e,t),delete t.children}},this)},useElOptionsToUpdate:function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t}});Fs({type:"graphic",init:function(t,e){this._elMap=R(),this._lastGraphicModel},render:function(t,e,i){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t),this._relocate(t,i)},_updateElements:function(t){var e=t.useElOptionsToUpdate();if(e){var i=this._elMap,n=this.group;d(e,function(e){var o=e.$action,a=e.id,r=i.get(a),s=e.parentId,l=null!=s?i.get(s):n,u=e.style;"text"===e.type&&u&&(e.hv&&e.hv[1]&&(u.textVerticalAlign=u.textBaseline=null),!u.hasOwnProperty("textFill")&&u.fill&&(u.textFill=u.fill),!u.hasOwnProperty("textStroke")&&u.stroke&&(u.textStroke=u.stroke));var h=fv(e);o&&"merge"!==o?"replace"===o?(dv(r,i),cv(a,l,h,i)):"remove"===o&&dv(r,i):r?r.attr(h):cv(a,l,h,i);var c=i.get(a);c&&(c.__ecGraphicWidth=e.width,c.__ecGraphicHeight=e.height,yv(c,t))})}},_relocate:function(t,e){for(var i=t.option.elements,n=this.group,o=this._elMap,a=i.length-1;a>=0;a--){var r=i[a],s=o.get(r.id);if(s){var l=s.parent;ca(s,r,l===n?{width:e.getWidth(),height:e.getHeight()}:{width:l.__ecGraphicWidth||0,height:l.__ecGraphicHeight||0},null,{hv:r.hv,boundingMode:r.bounding})}}},_clear:function(){var t=this._elMap;t.each(function(e){dv(e,t)}),this._elMap=R()},dispose:function(){this._clear()}});var ZP=Gs({type:"legend.plain",dependencies:["series"],layoutMode:{type:"box",ignoreSize:!0},init:function(t,e,i){this.mergeDefaultAndTheme(t,i),t.selected=t.selected||{}},mergeOption:function(t){ZP.superCall(this,"mergeOption",t)},optionUpdated:function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,i=0;i=0},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",textStyle:{color:"#333"},selectedMode:!0,tooltip:{show:!1}}});Os("legendToggleSelect","legendselectchanged",v(xv,"toggleSelected")),Os("legendSelect","legendselected",v(xv,"select")),Os("legendUnSelect","legendunselected",v(xv,"unSelect"));var UP=v,XP=d,jP=tb,YP=Fs({type:"legend.plain",newlineDisabled:!1,init:function(){this.group.add(this._contentGroup=new jP),this._backgroundEl,this._isFirstRender=!0},getContentGroup:function(){return this._contentGroup},render:function(t,e,i){var n=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var o=t.get("align");o&&"auto"!==o||(o="right"===t.get("left")&&"vertical"===t.get("orient")?"right":"left"),this.renderInner(o,t,e,i);var a=t.getBoxLayoutParams(),s={width:i.getWidth(),height:i.getHeight()},l=t.get("padding"),u=ha(a,s,l),h=this.layoutInner(t,o,u,n),c=ha(r({width:h.width,height:h.height},a),s,l);this.group.attr("position",[c.x-h.x,c.y-h.y]),this.group.add(this._backgroundEl=wv(h,t))}},resetInner:function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl)},renderInner:function(t,e,i,n){var o=this.getContentGroup(),a=R(),r=e.get("selectedMode"),s=[];i.eachRawSeries(function(t){!t.get("legendHoverLink")&&s.push(t.id)}),XP(e.getData(),function(l,u){var h=l.get("name");if(this.newlineDisabled||""!==h&&"\n"!==h){var c=i.getSeriesByName(h)[0];if(!a.get(h))if(c){var d=c.getData(),f=d.getVisual("color");"function"==typeof f&&(f=f(c.getDataParams(0)));var p=d.getVisual("legendSymbol")||"roundRect",g=d.getVisual("symbol");this._createItem(h,u,l,e,p,g,t,f,r).on("click",UP(bv,h,n)).on("mouseover",UP(Sv,c.name,null,n,s)).on("mouseout",UP(Mv,c.name,null,n,s)),a.set(h,!0)}else i.eachRawSeries(function(i){if(!a.get(h)&&i.legendDataProvider){var o=i.legendDataProvider(),c=o.indexOfName(h);if(c<0)return;var d=o.getItemVisual(c,"color");this._createItem(h,u,l,e,"roundRect",null,t,d,r).on("click",UP(bv,h,n)).on("mouseover",UP(Sv,null,h,n,s)).on("mouseout",UP(Mv,null,h,n,s)),a.set(h,!0)}},this)}else o.add(new jP({newline:!0}))},this)},_createItem:function(t,e,i,n,o,r,s,l,u){var h=n.get("itemWidth"),c=n.get("itemHeight"),d=n.get("inactiveColor"),f=n.get("symbolKeepAspect"),p=n.isSelected(t),g=new jP,m=i.getModel("textStyle"),v=i.get("icon"),y=i.getModel("tooltip"),x=y.parentModel;if(o=v||o,g.add($l(o,0,0,h,c,p?l:d,null==f||f)),!v&&r&&(r!==o||"none"===r)){var _=.8*c;"none"===r&&(r="circle"),g.add($l(r,(h-_)/2,(c-_)/2,_,_,p?l:d,null==f||f))}var w="left"===s?h+5:-5,b=s,S=n.get("formatter"),M=t;"string"==typeof S&&S?M=S.replace("{name}",null!=t?t:""):"function"==typeof S&&(M=S(t)),g.add(new aM({style:go({},m,{text:M,x:w,y:c/2,textFill:p?m.getTextColor():d,textAlign:b,textVerticalAlign:"middle"})}));var I=new vM({shape:g.getBoundingRect(),invisible:!0,tooltip:y.get("show")?a({content:t,formatter:x.get("formatter",!0)||function(){return t},formatterParams:{componentType:"legend",legendIndex:n.componentIndex,name:t,$vars:["name"]}},y.option):null});return g.add(I),g.eachChild(function(t){t.silent=!0}),I.silent=!u,this.getContentGroup().add(g),co(g),g.__legendDataIndex=e,g},layoutInner:function(t,e,i){var n=this.getContentGroup();aI(t.get("orient"),n,t.get("itemGap"),i.width,i.height);var o=n.getBoundingRect();return n.attr("position",[-o.x,-o.y]),this.group.getBoundingRect()},remove:function(){this.getContentGroup().removeAll(),this._isFirstRender=!0}});Ns(function(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries(function(t){for(var i=0;ii[l],p=[-c.x,-c.y];n||(p[s]=o.position[s]);var g=[0,0],m=[-d.x,-d.y],v=A(t.get("pageButtonGap",!0),t.get("itemGap",!0));f&&("end"===t.get("pageButtonPosition",!0)?m[s]+=i[l]-d[l]:g[s]+=d[l]+v),m[1-s]+=c[u]/2-d[u]/2,o.attr("position",p),a.attr("position",g),r.attr("position",m);var y=this.group.getBoundingRect();if((y={x:0,y:0})[l]=f?i[l]:c[l],y[u]=Math.max(c[u],d[u]),y[h]=Math.min(0,d[h]+m[1-s]),a.__rectSize=i[l],f){var x={x:0,y:0};x[l]=Math.max(i[l]-d[l]-v,0),x[u]=y[u],a.setClipPath(new vM({shape:x})),a.__rectSize=x[l]}else r.eachChild(function(t){t.attr({invisible:!0,silent:!0})});var _=this._getPageInfo(t);return null!=_.pageIndex&&Mo(o,{position:_.contentPosition},!!f&&t),this._updatePageInfoView(t,_),y},_pageGo:function(t,e,i){var n=this._getPageInfo(e)[t];null!=n&&i.dispatchAction({type:"legendScroll",scrollDataIndex:n,legendId:e.id})},_updatePageInfoView:function(t,e){var i=this._controllerGroup;d(["pagePrev","pageNext"],function(n){var o=null!=e[n+"DataIndex"],a=i.childOfName(n);a&&(a.setStyle("fill",o?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),a.cursor=o?"pointer":"default")});var n=i.childOfName("pageText"),o=t.get("pageFormatter"),a=e.pageIndex,r=null!=a?a+1:0,s=e.pageCount;n&&o&&n.setStyle("text",_(o)?o.replace("{current}",r).replace("{total}",s):o({current:r,total:s}))},_getPageInfo:function(t){function e(t){if(t){var e=t.getBoundingRect(),i=e[l]+t.position[r];return{s:i,e:i+e[s],i:t.__legendDataIndex}}}function i(t,e){return t.e>=e&&t.s<=e+a}var n=t.get("scrollDataIndex",!0),o=this.getContentGroup(),a=this._containerGroup.__rectSize,r=t.getOrient().index,s=$P[r],l=JP[r],u=this._findTargetItemIndex(n),h=o.children(),c=h[u],d=h.length,f=d?1:0,p={contentPosition:o.position.slice(),pageCount:f,pageIndex:f-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!c)return p;var g=e(c);p.contentPosition[r]=-g.s;for(var m=u+1,v=g,y=g,x=null;m<=d;++m)(!(x=e(h[m]))&&y.e>v.s+a||x&&!i(x,v.s))&&(v=y.i>v.i?y:x)&&(null==p.pageNextDataIndex&&(p.pageNextDataIndex=v.i),++p.pageCount),y=x;for(var m=u-1,v=g,y=g,x=null;m>=-1;--m)(x=e(h[m]))&&i(y,x.s)||!(v.i=0;){var r=o.indexOf("|}"),s=o.substr(a+"{marker".length,r-a-"{marker".length);s.indexOf("sub")>-1?n["marker"+s]={textWidth:4,textHeight:4,textBorderRadius:2,textBackgroundColor:e[s],textOffset:[3,0]}:n["marker"+s]={textWidth:10,textHeight:10,textBorderRadius:5,textBackgroundColor:e[s]},a=(o=o.substr(r+1)).indexOf("{marker")}this.el=new aM({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 l=this;this.el.on("mouseover",function(){l._enterable&&(clearTimeout(l._hideTimeout),l._show=!0),l._inContent=!0}),this.el.on("mouseout",function(){l._enterable&&l._show&&l.hideLater(l._hideDelay),l._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.hide(),this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(m(this.hide,this),t)):this.hide())},isShow:function(){return this._show},getOuterSize:function(){return this.getSize()}};var nN=m,oN=d,aN=Bo,rN=new vM({shape:{x:-1,y:-1,width:2,height:2}});Fs({type:"tooltip",init:function(t,e){if(!U_.node){var i=t.getComponent("tooltip").get("renderMode");this._renderMode=Hi(i);var n;"html"===this._renderMode?(n=new Cv(e.getDom(),e),this._newLine="
"):(n=new Lv(e),this._newLine="\n"),this._tooltipContent=n}},render:function(t,e,i){if(!U_.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 t=this._tooltipModel.get("triggerOn");um("itemTooltip",this._api,nN(function(e,i,n){"none"!==t&&(t.indexOf(e)>=0?this._tryShow(i,n):"leave"===e&&this._hide(n))},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(){n.manuallyShowTip(t,e,i,{x:n._lastX,y:n._lastY})})}},manuallyShowTip:function(t,e,i,n){if(n.from!==this.uid&&!U_.node){var o=Pv(n,i);this._ticket="";var a=n.dataByCoordSys;if(n.tooltip&&null!=n.x&&null!=n.y){var r=rN;r.position=[n.x,n.y],r.update(),r.tooltip=n.tooltip,this._tryShow({offsetX:n.x,offsetY:n.y,target:r},o)}else if(a)this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,event:{},dataByCoordSys:n.dataByCoordSys,tooltipOption:n.tooltipOption},o);else if(null!=n.seriesIndex){if(this._manuallyAxisShowTip(t,e,i,n))return;var s=fP(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:{}},o)}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:{}},o))}},manuallyHideTip:function(t,e,i,n){var o=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&o.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,n.from!==this.uid&&this._hide(Pv(n,i))},_manuallyAxisShowTip:function(t,e,i,n){var o=n.seriesIndex,a=n.dataIndex,r=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=o&&null!=a&&null!=r){var s=e.getSeriesByIndex(o);if(s&&"axis"===(t=kv([s.getData().getItemModel(a),s,(s.coordinateSystem||{}).model,t])).get("trigger"))return i.dispatchAction({type:"updateAxisPointer",seriesIndex:o,dataIndex:a,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=m(e,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(e,i):e()},_showAxisTooltip:function(t,e){var i=this._ecModel,o=this._tooltipModel,a=[e.offsetX,e.offsetY],r=[],s=[],l=kv([e.tooltipOption,o]),u=this._renderMode,h=this._newLine,c={};oN(t,function(t){oN(t.dataByAxis,function(t){var e=i.getComponent(t.axisDim+"Axis",t.axisIndex),o=t.value,a=[];if(e&&null!=o){var l=Im(o,e.axis,i,t.seriesDataIndices,t.valueLabelOpt);d(t.seriesDataIndices,function(r){var h=i.getSeriesByIndex(r.seriesIndex),d=r.dataIndexInside,f=h&&h.getDataParams(d);if(f.axisDim=t.axisDim,f.axisIndex=t.axisIndex,f.axisType=t.axisType,f.axisId=t.axisId,f.axisValue=Ul(e.axis,o),f.axisValueLabel=l,f){s.push(f);var p,g=h.formatTooltip(d,!0,null,u);if(w(g)){p=g.html;var m=g.markers;n(c,m)}else p=g;a.push(p)}});var f=l;"html"!==u?r.push(a.join(h)):r.push((f?ea(f)+h:"")+a.join(h))}})},this),r.reverse(),r=r.join(this._newLine+this._newLine);var f=e.position;this._showOrMove(l,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(l,f,a[0],a[1],this._tooltipContent,s):this._showTooltipContent(l,r,s,Math.random(),a[0],a[1],f,void 0,c)})},_showSeriesItemTooltip:function(t,e,i){var n=this._ecModel,o=e.seriesIndex,a=n.getSeriesByIndex(o),r=e.dataModel||a,s=e.dataIndex,l=e.dataType,u=r.getData(),h=kv([u.getItemModel(s),r,a&&(a.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);w(g)?(d=g.html,f=g.markers):(d=g,f=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:o,from:this.uid})}},_showComponentItemTooltip:function(t,e,i){var n=e.tooltip;if("string"==typeof n){var o=n;n={content:o,formatter:o}}var a=new Po(n,this._tooltipModel,this._ecModel),r=a.get("content"),s=Math.random();this._showOrMove(a,function(){this._showTooltipContent(a,r,a.get("formatterParams")||{},s,t.offsetX,t.offsetY,t.position,e)}),i({type:"showTip",from:this.uid})},_showTooltipContent:function(t,e,i,n,o,a,r,s,l){if(this._ticket="",t.get("showContent")&&t.get("show")){var u=this._tooltipContent,h=t.get("formatter");r=r||t.get("position");var c=e;if(h&&"string"==typeof h)c=ia(h,i,!0);else if("function"==typeof h){var d=nN(function(e,n){e===this._ticket&&(u.setContent(n,l,t),this._updatePosition(t,r,o,a,u,i,s))},this);this._ticket=n,c=h(i,n,d)}u.setContent(c,l,t),u.show(t),this._updatePosition(t,r,o,a,u,i,s)}},_updatePosition:function(t,e,i,n,o,a,r){var s=this._api.getWidth(),l=this._api.getHeight();e=e||t.get("position");var u=o.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],a,o.el,d,{viewSize:[s,l],contentSize:u.slice()})),y(e))i=aN(e[0],s),n=aN(e[1],l);else if(w(e)){e.width=u[0],e.height=u[1];var f=ha(e,{width:s,height:l});i=f.x,n=f.y,h=null,c=null}else"string"==typeof e&&r?(i=(p=Ev(e,d,u))[0],n=p[1]):(i=(p=Nv(i,n,o,s,l,h?null:20,c?null:20))[0],n=p[1]);if(h&&(i-=Rv(h)?u[0]/2:"right"===h?u[0]:0),c&&(n-=Rv(c)?u[1]/2:"bottom"===c?u[1]:0),t.get("confine")){var p=Ov(i,n,o,s,l);i=p[0],n=p[1]}o.moveTo(i,n)},_updateContentNotChangedOnAxis:function(t){var e=this._lastDataByCoordSys,i=!!e&&e.length===t.length;return i&&oN(e,function(e,n){var o=e.dataByAxis||{},a=(t[n]||{}).dataByAxis||[];(i&=o.length===a.length)&&oN(o,function(t,e){var n=a[e]||{},o=t.seriesDataIndices||[],r=n.seriesDataIndices||[];(i&=t.value===n.value&&t.axisType===n.axisType&&t.axisId===n.axisId&&o.length===r.length)&&oN(o,function(t,e){var n=r[e];i&=t.seriesIndex===n.seriesIndex&&t.dataIndex===n.dataIndex})})}),this._lastDataByCoordSys=t,!!i},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){U_.node||(this._tooltipContent.hide(),gm("itemTooltip",e))}}),Os({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),Os({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){}),Gv.prototype={constructor:Gv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToRadius:iD.prototype.dataToCoord,radiusToData:iD.prototype.coordToData},u(Gv,iD);var sN=Bi();Fv.prototype={constructor:Fv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToAngle:iD.prototype.dataToCoord,angleToData:iD.prototype.coordToData,calculateCategoryInterval:function(){var t=this,e=t.getLabelModel(),i=t.scale,n=i.getExtent(),o=i.count();if(n[1]-n[0]<1)return 0;var a=n[0],r=t.dataToCoord(a+1)-t.dataToCoord(a),s=Math.abs(r),l=ke(a,e.getFont(),"center","top"),u=Math.max(l.height,7)/s;isNaN(u)&&(u=1/0);var h=Math.max(0,Math.floor(u)),c=sN(t.model),d=c.lastAutoInterval,f=c.lastTickCount;return null!=d&&null!=f&&Math.abs(d-h)<=1&&Math.abs(f-o)<=1&&d>h?h=d:(c.lastTickCount=o,c.lastAutoInterval=h),h}},u(Fv,iD);var lN=function(t){this.name=t||"",this.cx=0,this.cy=0,this._radiusAxis=new Gv,this._angleAxis=new Fv,this._radiusAxis.polar=this._angleAxis.polar=this};lN.prototype={type:"polar",axisPointerEnabled:!0,constructor:lN,dimensions:["radius","angle"],model:null,containPoint:function(t){var e=this.pointToCoord(t);return this._radiusAxis.contain(e[0])&&this._angleAxis.contain(e[1])},containData:function(t){return this._radiusAxis.containData(t[0])&&this._angleAxis.containData(t[1])},getAxis:function(t){return this["_"+t+"Axis"]},getAxes:function(){return[this._radiusAxis,this._angleAxis]},getAxesByScale:function(t){var e=[],i=this._angleAxis,n=this._radiusAxis;return i.scale.type===t&&e.push(i),n.scale.type===t&&e.push(n),e},getAngleAxis:function(){return this._angleAxis},getRadiusAxis:function(){return this._radiusAxis},getOtherAxis:function(t){var e=this._angleAxis;return t===e?this._radiusAxis:e},getBaseAxis:function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},getTooltipAxes:function(t){var e=null!=t&&"auto"!==t?this.getAxis(t):this.getBaseAxis();return{baseAxes:[e],otherAxes:[this.getOtherAxis(e)]}},dataToPoint:function(t,e){return this.coordToPoint([this._radiusAxis.dataToRadius(t[0],e),this._angleAxis.dataToAngle(t[1],e)])},pointToData:function(t,e){var i=this.pointToCoord(t);return[this._radiusAxis.radiusToData(i[0],e),this._angleAxis.angleToData(i[1],e)]},pointToCoord:function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=this.getAngleAxis(),o=n.getExtent(),a=Math.min(o[0],o[1]),r=Math.max(o[0],o[1]);n.inverse?a=r-360:r=a+360;var s=Math.sqrt(e*e+i*i);e/=s,i/=s;for(var l=Math.atan2(-i,e)/Math.PI*180,u=lr;)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]}};var uN=sI.extend({type:"polarAxis",axis:null,getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"polar",index:this.option.polarIndex,id:this.option.polarId})[0]}});n(uN.prototype,WA);var hN={angle:{startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:!1}},radius:{splitNumber:5}};PD("angle",uN,Wv,hN.angle),PD("radius",uN,Wv,hN.radius),Gs({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%"}});var cN={dimensions:lN.prototype.dimensions,create:function(t,e){var i=[];return t.eachComponent("polar",function(t,n){var o=new lN(n);o.update=Zv;var a=o.getRadiusAxis(),r=o.getAngleAxis(),s=t.findAxisModel("radiusAxis"),l=t.findAxisModel("angleAxis");Uv(a,s),Uv(r,l),Hv(o,t,e),i.push(o),t.coordinateSystem=o,o.model=t}),t.eachSeries(function(e){if("polar"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"polar",index:e.get("polarIndex"),id:e.get("polarId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}};Ga.register("polar",cN);var dN=["axisLine","axisLabel","axisTick","splitLine","splitArea"];HD.extend({type:"angleAxis",axisPointerClass:"PolarAxisPointer",render:function(t,e){if(this.group.removeAll(),t.get("show")){var n=t.axis,o=n.polar,a=o.getRadiusAxis().getExtent(),r=n.getTicksCoords(),s=f(n.getViewLabels(),function(t){return(t=i(t)).coord=n.dataToCoord(t.tickValue),t});Yv(s),Yv(r),d(dN,function(e){!t.get(e+".show")||n.scale.isBlank()&&"axisLine"!==e||this["_"+e](t,o,r,a,s)},this)}},_axisLine:function(t,e,i,n){var o=t.getModel("axisLine.lineStyle"),a=new rM({shape:{cx:e.cx,cy:e.cy,r:n[jv(e)]},style:o.getLineStyle(),z2:1,silent:!0});a.style.fill=null,this.group.add(a)},_axisTick:function(t,e,i,n){var o=t.getModel("axisTick"),a=(o.get("inside")?-1:1)*o.get("length"),s=n[jv(e)],l=f(i,function(t){return new xM({shape:Xv(e,[s,s+a],t.coord)})});this.group.add(NM(l,{style:r(o.getModel("lineStyle").getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")})}))},_axisLabel:function(t,e,i,n,o){var a=t.getCategories(!0),r=t.getModel("axisLabel"),s=r.get("margin");d(o,function(i,o){var l=r,u=i.tickValue,h=n[jv(e)],c=e.coordToPoint([h+s,i.coord]),d=e.cx,f=e.cy,p=Math.abs(c[0]-d)/h<.3?"center":c[0]>d?"left":"right",g=Math.abs(c[1]-f)/h<.3?"middle":c[1]>f?"top":"bottom";a&&a[u]&&a[u].textStyle&&(l=new Po(a[u].textStyle,r,r.ecModel));var m=new aM({silent:!0});this.group.add(m),go(m.style,l,{x:c[0],y:c[1],textFill:l.getTextColor()||t.get("axisLine.lineStyle.color"),text:i.formattedLabel,textAlign:p,textVerticalAlign:g})},this)},_splitLine:function(t,e,i,n){var o=t.getModel("splitLine").getModel("lineStyle"),a=o.get("color"),s=0;a=a instanceof Array?a:[a];for(var l=[],u=0;u=0?"p":"n",M=y;v&&(n[r][b]||(n[r][b]={p:y,n:y}),M=n[r][b][S]);var I,T,A,D;if("radius"===h.dim){var C=h.dataToRadius(w)-y,L=a.dataToAngle(b);Math.abs(C)=0},IN.findTargetInfo=function(t,e){for(var i=this._targetInfoList,n=dy(e,t),o=0;o=0||wN(n,t.getAxis("y").model)>=0)&&a.push(t)}),e.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:a[0],coordSyses:a,getPanelRect:DN.grid,xAxisDeclared:r[t.id],yAxisDeclared:s[t.id]})}))},geo:function(t,e){_N(t.geoModels,function(t){var i=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:i,coordSyses:[i],getPanelRect:DN.geo})})}},AN=[function(t,e){var i=t.xAxisModel,n=t.yAxisModel,o=t.gridModel;return!o&&i&&(o=i.axis.grid.model),!o&&n&&(o=n.axis.grid.model),o&&o===e.gridModel},function(t,e){var i=t.geoModel;return i&&i===e.geoModel}],DN={grid:function(){return this.coordSys.grid.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(To(t)),e}},CN={lineX:bN(fy,0),lineY:bN(fy,1),rect:function(t,e,i){var n=e[SN[t]]([i[0][0],i[1][0]]),o=e[SN[t]]([i[0][1],i[1][1]]),a=[cy([n[0],o[0]]),cy([n[1],o[1]])];return{values:a,xyMinMax:a}},polygon:function(t,e,i){var n=[[1/0,-1/0],[1/0,-1/0]];return{values:f(i,function(i){var o=e[SN[t]](i);return n[0][0]=Math.min(n[0][0],o[0]),n[1][0]=Math.min(n[1][0],o[1]),n[0][1]=Math.max(n[0][1],o[0]),n[1][1]=Math.max(n[1][1],o[1]),o}),xyMinMax:n}}},LN={lineX:bN(py,0),lineY:bN(py,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,e,i){return f(t,function(t,n){return[t[0]-i[0]*e[n][0],t[1]-i[1]*e[n][1]]})}},kN=["inBrush","outOfBrush"],PN="__ecBrushSelect",NN="__ecInBrushSelectEvent",ON=zT.VISUAL.BRUSH;Rs(ON,function(t,e,i){t.eachComponent({mainType:"brush"},function(e){i&&"takeGlobalCursor"===i.type&&e.setBrushOption("brush"===i.key?i.brushOption:{brushType:!1}),(e.brushTargetManager=new hy(e.option,t)).setInputRanges(e.areas,t)})}),zs(ON,function(t,e,n){var o,a,s=[];t.eachComponent({mainType:"brush"},function(e,n){function l(t){return"all"===m||v[t]}function u(t){return!!t.length}function h(t,e){var i=t.coordinateSystem;w|=i.hasAxisBrushed(),l(e)&&i.eachActiveState(t.getData(),function(t,e){"active"===t&&(x[e]=1)})}function c(i,n,o){var a=_y(i);if(a&&!wy(e,n)&&(d(b,function(n){a[n.brushType]&&e.brushTargetManager.controlSeries(n,i,t)&&o.push(n),w|=u(o)}),l(n)&&u(o))){var r=i.getData();r.each(function(t){xy(a,o,r,t)&&(x[t]=1)})}}var p={brushId:e.id,brushIndex:n,brushName:e.name,areas:i(e.areas),selected:[]};s.push(p);var g=e.option,m=g.brushLink,v=[],x=[],_=[],w=0;n||(o=g.throttleType,a=g.throttleDelay);var b=f(e.areas,function(t){return by(r({boundingRect:EN[t.brushType](t)},t))}),S=ty(e.option,kN,function(t){t.mappingMethod="fixed"});y(m)&&d(m,function(t){v[t]=1}),t.eachSeries(function(t,e){var i=_[e]=[];"parallel"===t.subType?h(t,e):c(t,e,i)}),t.eachSeries(function(t,e){var i={seriesId:t.id,seriesIndex:e,seriesName:t.name,dataIndex:[]};p.selected.push(i);var n=_y(t),o=_[e],a=t.getData(),r=l(e)?function(t){return x[t]?(i.dataIndex.push(a.getRawIndex(t)),"inBrush"):"outOfBrush"}:function(t){return xy(n,o,a,t)?(i.dataIndex.push(a.getRawIndex(t)),"inBrush"):"outOfBrush"};(l(e)?w:u(o))&&iy(kN,S,a,r)})}),vy(e,o,a,s,n)});var EN={lineX:B,lineY:B,rect:function(t){return Sy(t.range)},polygon:function(t){for(var e,i=t.range,n=0,o=i.length;ne[0][1]&&(e[0][1]=a[0]),a[1]e[1][1]&&(e[1][1]=a[1])}return e&&Sy(e)}},RN=["#ddd"];Gs({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&&ey(i,t,["inBrush","outOfBrush"]);var n=i.inBrush=i.inBrush||{};i.outOfBrush=i.outOfBrush||{color:RN},n.hasOwnProperty("liftZ")||(n.liftZ=5)},setAreas:function(t){t&&(this.areas=f(t,function(t){return My(this.option,t)},this))},setBrushOption:function(t){this.brushOption=My(this.option,t),this.brushType=this.brushOption.brushType}});Fs({type:"brush",init:function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new Rf(e.getZr())).on("brush",m(this._onBrush,this)).mount()},render:function(t){return this.model=t,Iy.apply(this,arguments)},updateTransform:Iy,updateView:Iy,dispose:function(){this._brushController.dispose()},_onBrush:function(t,e){var n=this.model.id;this.model.brushTargetManager.setOutputRanges(t,this.ecModel),(!e.isEnd||e.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:n,areas:i(t),$from:n})}}),Os({type:"brush",event:"brush"},function(t,e){e.eachComponent({mainType:"brush",query:t},function(e){e.setAreas(t.areas)})}),Os({type:"brushSelect",event:"brushSelected",update:"none"},function(){});var zN={},BN=aT.toolbox.brush;Dy.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:i(BN.title)};var VN=Dy.prototype;VN.render=VN.updateView=function(t,e,i){var n,o,a;e.eachComponent({mainType:"brush"},function(t){n=t.brushType,o=t.brushOption.brushMode||"single",a|=t.areas.length}),this._brushType=n,this._brushMode=o,d(t.get("type",!0),function(e){t.setIconStatus(e,("keep"===e?"multiple"===o:"clear"===e?a:e===n)?"emphasis":"normal")})},VN.getIcons=function(){var t=this.model,e=t.get("icon",!0),i={};return d(t.get("type",!0),function(t){e[t]&&(i[t]=e[t])}),i},VN.onclick=function(t,e,i){var n=this._brushType,o=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"===o?"single":"multiple":o}})},Ty("brush",Dy),Ps(function(t,e){var i=t&&t.brush;if(y(i)||(i=i?[i]:[]),i.length){var n=[];d(i,function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(n=n.concat(e))});var o=t&&t.toolbox;y(o)&&(o=o[0]),o||(o={feature:{}},t.toolbox=[o]);var a=o.feature||(o.feature={}),r=a.brush||(a.brush={}),s=r.type||(r.type=[]);s.push.apply(s,n),Jv(s),e&&!s.length&&s.push.apply(s,vN)}});Cy.prototype={constructor:Cy,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=jo(t)).getFullYear(),i=t.getMonth()+1;i=i<10?"0"+i:i;var n=t.getDate();n=n<10?"0"+n:n;var o=t.getDay();return o=Math.abs((o+7-this.getFirstDayOfWeek())%7),{y:e,m:i,d:n,day:o,time:t.getTime(),formatedDate:e+"-"+i+"-"+n,date:t}},getNextNDay:function(t,e){return 0===(e=e||0)?this.getDateInfo(t):((t=new Date(this.getDateInfo(t).time)).setDate(t.getDate()+e),this.getDateInfo(t))},update:function(t,e){function i(t,e){return null!=t[e]&&"auto"!==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 n=this._rangeInfo.weeks||1,o=["width","height"],a=this._model.get("cellSize").slice(),r=this._model.getBoxLayoutParams(),s="horizontal"===this._orient?[n,7]:[7,n];d([0,1],function(t){i(a,t)&&(r[o[t]]=a[t]*s[t])});var l={width:e.getWidth(),height:e.getHeight()},u=this._rect=ha(r,l);d([0,1],function(t){i(a,t)||(a[t]=u[o[t]]/s[t])}),this._sw=a[0],this._sh=a[1]},dataToPoint:function(t,e){y(t)&&(t=t[0]),null==e&&(e=!0);var i=this.getDateInfo(t),n=this._rangeInfo,o=i.formatedDate;if(e&&!(i.time>=n.start.time&&i.timea.end.time&&t.reverse(),t},_getRangeInfo:function(t){var e;(t=[this.getDateInfo(t[0]),this.getDateInfo(t[1])])[0].time>t[1].time&&(e=!0,t.reverse());var i=Math.floor(t[1].time/864e5)-Math.floor(t[0].time/864e5)+1,n=new Date(t[0].time),o=n.getDate(),a=t[1].date.getDate();if(n.setDate(o+i-1),n.getDate()!==a)for(var r=n.getTime()-t[1].time>0?1:-1;n.getDate()!==a&&(n.getTime()-t[1].time)*r>0;)i-=r,n.setDate(o+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&&en.lweek)return!1;var o=7*(t-1)-n.fweek+e,a=new Date(n.start.time);return a.setDate(n.start.d+o),this.getDateInfo(a)}},Cy.dimensions=Cy.prototype.dimensions,Cy.getDimensionsInfo=Cy.prototype.getDimensionsInfo,Cy.create=function(t,e){var i=[];return t.eachComponent("calendar",function(n){var o=new Cy(n,t,e);i.push(o),n.coordinateSystem=o}),t.eachSeries(function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("calendarIndex")||0])}),i},Ga.register("calendar",Cy);var GN=sI.extend({type:"calendar",coordinateSystem:null,defaultOption:{zlevel:0,z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",nameMap:"en",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",nameMap:"en",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},init:function(t,e,i,n){var o=pa(t);GN.superApply(this,"init",arguments),ky(t,o)},mergeOption:function(t,e){GN.superApply(this,"mergeOption",arguments),ky(this.option,t)}}),FN={EN:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CN:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},WN={EN:["S","M","T","W","T","F","S"],CN:["日","一","二","三","四","五","六"]};Fs({type:"calendar",_tlpoints:null,_blpoints:null,_firstDayOfMonth:null,_firstDayPoints:null,render:function(t,e,i){var n=this.group;n.removeAll();var o=t.coordinateSystem,a=o.getRangeInfo(),r=o.getOrient();this._renderDayRect(t,a,n),this._renderLines(t,a,r,n),this._renderYearText(t,a,r,n),this._renderMonthText(t,r,n),this._renderWeekText(t,a,r,n)},_renderDayRect:function(t,e,i){for(var n=t.coordinateSystem,o=t.getModel("itemStyle").getItemStyle(),a=n.getCellWidth(),r=n.getCellHeight(),s=e.start.time;s<=e.end.time;s=n.getNextNDay(s,1).time){var l=n.dataToRect([s],!1).tl,u=new vM({shape:{x:l[0],y:l[1],width:a,height:r},cursor:"default",style:o});i.add(u)}},_renderLines:function(t,e,i,n){function o(e){a._firstDayOfMonth.push(r.getDateInfo(e)),a._firstDayPoints.push(r.dataToRect([e],!1).tl);var o=a._getLinePointsOfOneWeek(t,e,i);a._tlpoints.push(o[0]),a._blpoints.push(o[o.length-1]),l&&a._drawSplitline(o,s,n)}var a=this,r=t.coordinateSystem,s=t.getModel("splitLine.lineStyle").getLineStyle(),l=t.get("splitLine.show"),u=s.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var h=e.start,c=0;h.time<=e.end.time;c++){o(h.formatedDate),0===c&&(h=r.getDateInfo(e.start.y+"-"+e.start.m));var d=h.date;d.setMonth(d.getMonth()+1),h=r.getDateInfo(d)}o(r.getNextNDay(e.end.time,1).formatedDate),l&&this._drawSplitline(a._getEdgesPoints(a._tlpoints,u,i),s,n),l&&this._drawSplitline(a._getEdgesPoints(a._blpoints,u,i),s,n)},_getEdgesPoints:function(t,e,i){var n=[t[0].slice(),t[t.length-1].slice()],o="horizontal"===i?0:1;return n[0][o]=n[0][o]-e/2,n[1][o]=n[1][o]+e/2,n},_drawSplitline:function(t,e,i){var n=new pM({z2:20,shape:{points:t},style:e});i.add(n)},_getLinePointsOfOneWeek:function(t,e,i){var n=t.coordinateSystem;e=n.getDateInfo(e);for(var o=[],a=0;a<7;a++){var r=n.getNextNDay(e.time,a),s=n.dataToRect([r.time],!1);o[2*r.day]=s.tl,o[2*r.day+1]=s["horizontal"===i?"bl":"tr"]}return o},_formatterLabel:function(t,e){return"string"==typeof t&&t?na(t,e):"function"==typeof t?t(e):e.nameMap},_yearTextPositionControl:function(t,e,i,n,o){e=e.slice();var a=["center","bottom"];"bottom"===n?(e[1]+=o,a=["center","top"]):"left"===n?e[0]-=o:"right"===n?(e[0]+=o,a=["center","top"]):e[1]-=o;var r=0;return"left"!==n&&"right"!==n||(r=Math.PI/2),{rotation:r,position:e,style:{textAlign:a[0],textVerticalAlign:a[1]}}},_renderYearText:function(t,e,i,n){var o=t.getModel("yearLabel");if(o.get("show")){var a=o.get("margin"),r=o.get("position");r||(r="horizontal"!==i?"top":"left");var s=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],l=(s[0][0]+s[1][0])/2,u=(s[0][1]+s[1][1])/2,h="horizontal"===i?0:1,c={top:[l,s[h][1]],bottom:[l,s[1-h][1]],left:[s[1-h][0],u],right:[s[h][0],u]},d=e.start.y;+e.end.y>+e.start.y&&(d=d+"-"+e.end.y);var f=o.get("formatter"),p={start:e.start.y,end:e.end.y,nameMap:d},g=this._formatterLabel(f,p),m=new aM({z2:30});go(m.style,o,{text:g}),m.attr(this._yearTextPositionControl(m,c[r],i,r,a)),n.add(m)}},_monthTextPositionControl:function(t,e,i,n,o){var a="left",r="top",s=t[0],l=t[1];return"horizontal"===i?(l+=o,e&&(a="center"),"start"===n&&(r="bottom")):(s+=o,e&&(r="middle"),"start"===n&&(a="right")),{x:s,y:l,textAlign:a,textVerticalAlign:r}},_renderMonthText:function(t,e,i){var n=t.getModel("monthLabel");if(n.get("show")){var o=n.get("nameMap"),r=n.get("margin"),s=n.get("position"),l=n.get("align"),u=[this._tlpoints,this._blpoints];_(o)&&(o=FN[o.toUpperCase()]||[]);var h="start"===s?0:1,c="horizontal"===e?0:1;r="start"===s?-r:r;for(var d="center"===l,f=0;f=r[0]&&t<=r[1]}if(t===this._dataZoomModel){var n=this._dimName,o=this.getTargetSeriesModels(),a=t.get("filterMode"),r=this._valueWindow;"none"!==a&&UN(o,function(t){var e=t.getData(),o=e.mapDimension(n,!0);o.length&&("weakFilter"===a?e.filterSelf(function(t){for(var i,n,a,s=0;sr[1];if(u&&!h&&!c)return!0;u&&(a=!0),h&&(i=!0),c&&(n=!0)}return a&&i&&n}):UN(o,function(n){if("empty"===a)t.setData(e.map(n,function(t){return i(t)?t:NaN}));else{var o={};o[n]=r,e.selectRange(o)}}),UN(o,function(t){e.setApproximateExtent(r,t)}))})}}};var YN=d,qN=ZN,KN=Gs({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=By(t);this.mergeDefaultAndTheme(t,i),this.doInit(n)},mergeOption:function(t){var e=By(t);n(this.option,t,!0),this.doInit(e)},doInit:function(t){var e=this.option;U_.canvasSupported||(e.realtime=!1),this._setDefaultThrottle(t),Vy(this,t),YN([["start","startValue"],["end","endValue"]],function(t,i){"value"===this._rangePropMode[i]&&(e[t[0]]=null)},this),this.textStyleModel=this.getModel("textStyle"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var t=this._axisProxies;this.eachTargetAxis(function(e,i,n,o){var a=this.dependentModels[e.axis][i],r=a.__dzAxisProxy||(a.__dzAxisProxy=new jN(e.name,i,this,o));t[e.name+"_"+i]=r},this)},_resetTarget:function(){var t=this.option,e=this._judgeAutoMode();qN(function(e){var i=e.axisIndex;t[i]=Di(t[i])},this),"axisIndex"===e?this._autoSetAxisIndex():"orient"===e&&this._autoSetOrient()},_judgeAutoMode:function(){var t=this.option,e=!1;qN(function(i){null!=t[i.axisIndex]&&(e=!0)},this);var i=t.orient;return null==i&&e?"orient":e?void 0:(null==i&&(t.orient="horizontal"),"axisIndex")},_autoSetAxisIndex:function(){var t=!0,e=this.get("orient",!0),i=this.option,n=this.dependentModels;if(t){var o="vertical"===e?"y":"x";n[o+"Axis"].length?(i[o+"AxisIndex"]=[0],t=!1):YN(n.singleAxis,function(n){t&&n.get("orient",!0)===e&&(i.singleAxisIndex=[n.componentIndex],t=!1)})}t&&qN(function(e){if(t){var n=[],o=this.dependentModels[e.axis];if(o.length&&!n.length)for(var a=0,r=o.length;a0?100:20}},getFirstTargetAxisModel:function(){var t;return qN(function(e){if(null==t){var i=this.get(e.axisIndex);i.length&&(t=this.dependentModels[e.axis][i[0]])}},this),t},eachTargetAxis:function(t,e){var i=this.ecModel;qN(function(n){YN(this.get(n.axisIndex),function(o){t.call(e,n,o,this,i)},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(t,e){var i=this.option;YN([["start","startValue"],["end","endValue"]],function(e){null==t[e[0]]&&null==t[e[1]]||(i[e[0]]=t[e[0]],i[e[1]]=t[e[1]])},this),!e&&Vy(this,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()}}),$N=YI.extend({type:"dataZoom",render:function(t,e,i,n){this.dataZoomModel=t,this.ecModel=e,this.api=i},getTargetCoordInfo:function(){function t(t,e,i,n){for(var o,a=0;a0&&e%g)p+=f;else{var i=null==t||isNaN(t)||""===t,n=i?0:QN(t,a,u,!0);i&&!l&&e?(c.push([c[c.length-1][0],0]),d.push([d[d.length-1][0],0])):!i&&l&&(c.push([p,0]),d.push([p,0])),c.push([p,n]),d.push([p,n]),p+=f,l=i}});var m=this.dataZoomModel;this._displayables.barGroup.add(new fM({shape:{points:c},style:r({fill:m.get("dataBackgroundColor")},m.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new pM({shape:{points:d},style:m.getModel("dataBackground.lineStyle").getLineStyle(),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(!1!==e){var i,n=this.ecModel;return t.eachTargetAxis(function(o,a){d(t.getAxisProxy(o.name,a).getTargetSeriesModels(),function(t){if(!(i||!0!==e&&l(aO,t.get("type"))<0)){var r,s=n.getComponent(o.axis,a).axis,u=Gy(o.name),h=t.coordinateSystem;null!=u&&h.getOtherAxis&&(r=h.getOtherAxis(s).inverse),u=t.getData().mapDimension(u),i={thisAxis:s,series:t,thisDim:o.name,otherDim:u,otherAxisInverse:r}}},this)},this),i}},_renderHandle:function(){var t=this._displayables,e=t.handles=[],i=t.handleLabels=[],n=this._displayables.barGroup,o=this._size,a=this.dataZoomModel;n.add(t.filler=new JN({draggable:!0,cursor:Fy(this._orient),drift:eO(this._onDragMove,this,"all"),onmousemove:function(t){mw(t.event)},ondragstart:eO(this._showDataInfo,this,!0),ondragend:eO(this._onDragEnd,this),onmouseover:eO(this._showDataInfo,this,!0),onmouseout:eO(this._showDataInfo,this,!1),style:{fill:a.get("fillerColor"),textPosition:"inside"}})),n.add(new JN(Kn({silent:!0,shape:{x:0,y:0,width:o[0],height:o[1]},style:{stroke:a.get("dataBackgroundColor")||a.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}}))),iO([0,1],function(t){var o=ko(a.get("handleIcon"),{cursor:Fy(this._orient),draggable:!0,drift:eO(this._onDragMove,this,t),onmousemove:function(t){mw(t.event)},ondragend:eO(this._onDragEnd,this),onmouseover:eO(this._showDataInfo,this,!0),onmouseout:eO(this._showDataInfo,this,!1)},{x:-1,y:0,width:2,height:2}),r=o.getBoundingRect();this._handleHeight=Bo(a.get("handleSize"),this._size[1]),this._handleWidth=r.width/r.height*this._handleHeight,o.setStyle(a.getModel("handleStyle").getItemStyle());var s=a.get("handleColor");null!=s&&(o.style.fill=s),n.add(e[t]=o);var l=a.textStyleModel;this.group.add(i[t]=new aM({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textVerticalAlign:"middle",textAlign:"center",textFill:l.getTextColor(),textFont:l.getFont()},z2:10}))},this)},_resetInterval:function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[QN(t[0],[0,100],e,!0),QN(t[1],[0,100],e,!0)]},_updateInterval:function(t,e){var i=this.dataZoomModel,n=this._handleEnds,o=this._getViewExtent(),a=i.findRepresentativeAxisProxy().getMinMaxSpan(),r=[0,100];qL(e,n,o,i.get("zoomLock")?"all":t,null!=a.minSpan?QN(a.minSpan,r,o,!0):null,null!=a.maxSpan?QN(a.maxSpan,r,o,!0):null);var s=this._range,l=this._range=tO([QN(n[0],o,r,!0),QN(n[1],o,r,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},_updateView:function(t){var e=this._displayables,i=this._handleEnds,n=tO(i.slice()),o=this._size;iO([0,1],function(t){var n=e.handles[t],a=this._handleHeight;n.attr({scale:[a/2,a/2],position:[i[t],o[1]/2-a/2]})},this),e.filler.setShape({x:n[0],y:0,width:n[1]-n[0],height:o[1]}),this._updateDataInfo(t)},_updateDataInfo:function(t){function e(t){var e=To(n.handles[t].parent,this.group),i=Do(0===t?"right":"left",e),s=this._handleWidth/2+oO,l=Ao([c[t]+(0===t?-s:s),this._size[1]/2],e);o[t].setStyle({x:l[0],y:l[1],textVerticalAlign:a===nO?"middle":i,textAlign:a===nO?i:"center",text:r[t]})}var i=this.dataZoomModel,n=this._displayables,o=n.handleLabels,a=this._orient,r=["",""];if(i.get("showDetail")){var s=i.findRepresentativeAxisProxy();if(s){var l=s.getAxisModel().axis,u=this._range,h=t?s.calculateDataWindow({start:u[0],end:u[1]}).valueWindow:s.getDataValueWindow();r=[this._formatLabel(h[0],l),this._formatLabel(h[1],l)]}}var c=tO(this._handleEnds.slice());e.call(this,0),e.call(this,1)},_formatLabel:function(t,e){var i=this.dataZoomModel,n=i.get("labelFormatter"),o=i.get("labelPrecision");null!=o&&"auto"!==o||(o=e.getPixelPrecision());var a=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel(Math.round(t)):t.toFixed(Math.min(o,20));return x(n)?n(t,a):_(n)?n.replace("{value}",a):a},_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=Ao([e,i],this._displayables.barGroup.getLocalTransform(),!0),o=this._updateInterval(t,n[0]),a=this.dataZoomModel.get("realtime");this._updateView(!a),o&&a&&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,o=(n[0]+n[1])/2,a=this._updateInterval("all",i[0]-o);this._updateView(),a&&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 t;if(iO(this.getTargetCoordInfo(),function(e){if(!t&&e.length){var i=e[0].model.coordinateSystem;t=i.getRect&&i.getRect()}}),!t){var e=this.api.getWidth(),i=this.api.getHeight();t={x:.2*e,y:.2*i,width:.6*e,height:.6*i}}return t}});KN.extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}});var sO="\0_ec_dataZoom_roams",lO=m,uO=$N.extend({type:"dataZoom.inside",init:function(t,e){this._range},render:function(t,e,i,n){uO.superApply(this,"render",arguments),this._range=t.getPercentRange(),d(this.getTargetCoordInfo(),function(e,n){var o=f(e,function(t){return Zy(t.model)});d(e,function(e){var a=e.model,r={};d(["pan","zoom","scrollMove"],function(t){r[t]=lO(hO[t],this,e,n)},this),Wy(i,{coordId:Zy(a),allCoordIds:o,containsPoint:function(t,e,i){return a.coordinateSystem.containPoint([e,i])},dataZoomId:t.id,dataZoomModel:t,getRange:r})},this)},this)},dispose:function(){Hy(this.api,this.dataZoomModel.id),uO.superApply(this,"dispose",arguments),this._range=null}}),hO={zoom:function(t,e,i,n){var o=this._range,a=o.slice(),r=t.axisModels[0];if(r){var s=cO[e](null,[n.originX,n.originY],r,i,t),l=(s.signal>0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(a[1]-a[0])+a[0],u=Math.max(1/n.scale,0);a[0]=(a[0]-l)*u+l,a[1]=(a[1]-l)*u+l;var h=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return qL(0,a,[0,100],0,h.minSpan,h.maxSpan),this._range=a,o[0]!==a[0]||o[1]!==a[1]?a:void 0}},pan:Ky(function(t,e,i,n,o,a){var r=cO[n]([a.oldX,a.oldY],[a.newX,a.newY],e,o,i);return r.signal*(t[1]-t[0])*r.pixel/r.pixelLength}),scrollMove:Ky(function(t,e,i,n,o,a){return cO[n]([0,0],[a.scrollDelta,a.scrollDelta],e,o,i).signal*(t[1]-t[0])*a.scrollDelta})},cO={grid:function(t,e,i,n,o){var a=i.axis,r={},s=o.model.coordinateSystem.getRect();return t=t||[0,0],"x"===a.dim?(r.pixel=e[0]-t[0],r.pixelLength=s.width,r.pixelStart=s.x,r.signal=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=s.height,r.pixelStart=s.y,r.signal=a.inverse?-1:1),r},polar:function(t,e,i,n,o){var a=i.axis,r={},s=o.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=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=u[1]-u[0],r.pixelStart=u[0],r.signal=a.inverse?-1:1),r},singleAxis:function(t,e,i,n,o){var a=i.axis,r=o.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===a.orient?(s.pixel=e[0]-t[0],s.pixelLength=r.width,s.pixelStart=r.x,s.signal=a.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=r.height,s.pixelStart=r.y,s.signal=a.inverse?-1:1),s}};Ns({getTargetSeries:function(t){var e=R();return t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,i,n){d(n.getAxisProxy(t.name,i).getTargetSeriesModels(),function(t){e.set(t.uid,t)})})}),e},modifyOutputEnd:!0,overallReset:function(t,e){t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,i,n){n.getAxisProxy(t.name,i).reset(n,e)}),t.eachTargetAxis(function(t,i,n){n.getAxisProxy(t.name,i).filterData(n,e)})}),t.eachComponent("dataZoom",function(t){var e=t.findRepresentativeAxisProxy(),i=e.getDataPercentWindow(),n=e.getDataValueWindow();t.setRawRange({start:i[0],end:i[1],startValue:n[0],endValue:n[1]},!0)})}}),Os("dataZoom",function(t,e){var i=Ny(m(e.eachComponent,e,"dataZoom"),ZN,function(t,e){return t.get(e.axisIndex)}),n=[];e.eachComponent({mainType:"dataZoom",query:t},function(t,e){n.push.apply(n,i(t).nodes)}),d(n,function(e,i){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})})});var dO=d,fO=function(t){var e=t&&t.visualMap;y(e)||(e=e?[e]:[]),dO(e,function(t){if(t){$y(t,"splitList")&&!$y(t,"pieces")&&(t.pieces=t.splitList,delete t.splitList);var e=t.pieces;e&&y(e)&&dO(e,function(t){w(t)&&($y(t,"start")&&!$y(t,"min")&&(t.min=t.start),$y(t,"end")&&!$y(t,"max")&&(t.max=t.end))})}})};sI.registerSubTypeDefaulter("visualMap",function(t){return t.categories||(t.pieces?t.pieces.length>0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"});var pO=zT.VISUAL.COMPONENT;zs(pO,{createOnAllSeries:!0,reset:function(t,e){var i=[];return e.eachComponent("visualMap",function(e){var n=t.pipelineContext;!e.isTargetSeries(t)||n&&n.large||i.push(ny(e.stateList,e.targetVisuals,m(e.getValueState,e),e.getDataDimension(t.getData())))}),i}}),zs(pO,{createOnAllSeries:!0,reset:function(t,e){var i=t.getData(),n=[];e.eachComponent("visualMap",function(e){if(e.isTargetSeries(t)){var o=e.getVisualMeta(m(Jy,null,t,e))||{stops:[],outerColors:[]},a=e.getDataDimension(i),r=i.getDimensionInfo(a);null!=r&&(o.dimension=r.index,n.push(o))}}),t.getData().setVisual("visualMeta",n)}});var gO={get:function(t,e,n){var o=i((mO[t]||{})[e]);return n&&y(o)?o[o.length-1]:o}},mO={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]}},vO=sL.mapVisual,yO=sL.eachVisual,xO=y,_O=d,wO=Go,bO=zo,SO=B,MO=Gs({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;U_.canvasSupported||(i.realtime=!1),!e&&ey(i,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},resetVisual:function(t){var e=this.stateList;t=m(t,this),this.controllerVisuals=ty(this.option.controller,e,t),this.targetVisuals=ty(this.option.target,e,t)},getTargetSeriesIndices:function(){var t=this.option.seriesIndex,e=[];return null==t||"all"===t?this.ecModel.eachSeries(function(t,i){e.push(i)}):e=Di(t),e},eachTargetSeries:function(t,e){d(this.getTargetSeriesIndices(),function(i){t.call(e,this.ecModel.getSeriesByIndex(i))},this)},isTargetSeries:function(t){var e=!1;return this.eachTargetSeries(function(i){i===t&&(e=!0)}),e},formatValueText:function(t,e,i){function n(t){return t===l[0]?"min":t===l[1]?"max":(+t).toFixed(Math.min(s,20))}var o,a,r=this.option,s=r.precision,l=this.dataBound,u=r.formatter;return i=i||["<",">"],y(t)&&(t=t.slice(),o=!0),a=e?t:o?[n(t[0]),n(t[1])]:n(t),_(u)?u.replace("{value}",o?a[0]:a).replace("{value2}",o?a[1]:a):x(u)?o?u(t[0],t[1]):u(t):o?t[0]===l[0]?i[0]+" "+a[1]:t[1]===l[1]?i[1]+" "+a[0]:a[0]+" - "+a[1]:a},resetExtent:function(){var t=this.option,e=wO([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,o=n.length-1;o>=0;o--){var a=n[o];if(!t.getDimensionInfo(a).isCalculationCoord)return a}}},getExtent:function(){return this._dataExtent.slice()},completeVisualOption:function(){function t(t){xO(o.color)&&!t.inRange&&(t.inRange={color:o.color.slice().reverse()}),t.inRange=t.inRange||{color:e.get("gradientColor")},_O(this.stateList,function(e){var i=t[e];if(_(i)){var n=gO.get(i,"active",l);n?(t[e]={},t[e][i]=n):delete t[e]}},this)}var e=this.ecModel,o=this.option,a={inRange:o.inRange,outOfRange:o.outOfRange},r=o.target||(o.target={}),s=o.controller||(o.controller={});n(r,a),n(s,a);var l=this.isCategory();t.call(this,r),t.call(this,s),function(t,e,i){var n=t[e],o=t[i];n&&!o&&(o=t[i]={},_O(n,function(t,e){if(sL.isValidType(e)){var i=gO.get(e,"inactive",l);null!=i&&(o[e]=i,"color"!==e||o.hasOwnProperty("opacity")||o.hasOwnProperty("colorAlpha")||(o.opacity=[0,0]))}}))}.call(this,r,"inRange","outOfRange"),function(t){var e=(t.inRange||{}).symbol||(t.outOfRange||{}).symbol,n=(t.inRange||{}).symbolSize||(t.outOfRange||{}).symbolSize,o=this.get("inactiveColor");_O(this.stateList,function(a){var r=this.itemSize,s=t[a];s||(s=t[a]={color:l?o:[o]}),null==s.symbol&&(s.symbol=e&&i(e)||(l?"roundRect":["roundRect"])),null==s.symbolSize&&(s.symbolSize=n&&i(n)||(l?r[0]:[r[0],r[0]])),s.symbol=vO(s.symbol,function(t){return"none"===t||"square"===t?"roundRect":t});var u=s.symbolSize;if(null!=u){var h=-1/0;yO(u,function(t){t>h&&(h=t)}),s.symbolSize=vO(u,function(t){return bO(t,[0,h],[0,r[0]],!0)})}},this)}.call(this,s)},resetItemSize:function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},isCategory:function(){return!!this.option.categories},setSelected:SO,getValueState:SO,getVisualMeta:SO}),IO=[20,140],TO=MO.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){TO.superApply(this,"optionUpdated",arguments),this.resetExtent(),this.resetVisual(function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()}),this._resetRange()},resetItemSize:function(){TO.superApply(this,"resetItemSize",arguments);var t=this.itemSize;"horizontal"===this._orient&&t.reverse(),(null==t[0]||isNaN(t[0]))&&(t[0]=IO[0]),(null==t[1]||isNaN(t[1]))&&(t[1]=IO[1])},_resetRange:function(){var t=this.getExtent(),e=this.option.range;!e||e.auto?(t.auto=1,this.option.range=t):y(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(){MO.prototype.completeVisualOption.apply(this,arguments),d(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=Go((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]=i[1]||t<=e[1])?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){t[0]<=e&&e<=t[1]&&n.push(i)},this),e.push({seriesId:i.id,dataIndex:n})},this),e},getVisualMeta:function(t){function e(e,i){o.push({value:e,color:t(e,i)})}for(var i=Qy(0,0,this.getExtent()),n=Qy(0,0,this.option.range.slice()),o=[],a=0,r=0,s=n.length,l=i.length;rt[1])break;i.push({color:this.getControllerVisual(a,"color",e),offset:o/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 tb("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(t,e){if(this._useHandle){var i=this._shapes,n=this.visualMapModel,o=i.handleThumbs,a=i.handleLabels;CO([0,1],function(r){var s=o[r];s.setStyle("fill",e.handlesColor[r]),s.position[1]=t[r];var l=Ao(i.handleLabelPoints[r],To(s,this.group));a[r].setStyle({x:l[0],y:l[1],text:n.formatValueText(this._dataInterval[r]),textVerticalAlign:"middle",textAlign:this._applyTransform("horizontal"===this._orient?0===r?"bottom":"top":"left",i.barGroup)})},this)}},_showIndicator:function(t,e,i,n){var o=this.visualMapModel,a=o.getExtent(),r=o.itemSize,s=[0,r[1]],l=DO(t,a,s,!0),u=this._shapes,h=u.indicator;if(h){h.position[1]=l,h.attr("invisible",!1),h.setShape("points",ox(!!i,n,l,r[1]));var c=this.getControllerVisual(t,"color",{convertOpacityToAlpha:!0});h.setStyle("fill",c);var d=Ao(u.indicatorLabelPoint,To(h,this.group)),f=u.indicatorLabel;f.attr("invisible",!1);var p=this._applyTransform("left",u.barGroup),g=this._orient;f.setStyle({text:(i||"")+o.formatValueText(e),textVerticalAlign:"horizontal"===g?p:"middle",textAlign:"horizontal"===g?"center":p,x:d[0],y:d[1]})}},_enableHoverLinkToSeries:function(){var t=this;this._shapes.barGroup.on("mousemove",function(e){if(t._hovering=!0,!t._dragging){var i=t.visualMapModel.itemSize,n=t._applyTransform([e.offsetX,e.offsetY],t._shapes.barGroup,!0,!0);n[1]=LO(kO(0,n[1]),i[1]),t._doHoverLinkToSeries(n[1],0<=n[0]&&n[0]<=i[0])}}).on("mouseout",function(){t._hovering=!1,!t._dragging&&t._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 o=[0,n[1]],a=i.getExtent();t=LO(kO(o[0],t),o[1]);var r=ax(i,a,o),s=[t-r,t+r],l=DO(t,o,a,!0),u=[DO(s[0],o,a,!0),DO(s[1],o,a,!0)];s[0]o[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||rx(i))&&(c=this._hoverLinkDataIndices=i.findTargetDataIndices(u));var d=Ri(h,c);this._dispatchHighDown("downplay",ex(d[0])),this._dispatchHighDown("highlight",ex(d[1]))}},_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 o=n.getData(e.dataType),a=o.get(i.getDataDimension(o),e.dataIndex,!0);isNaN(a)||this._showIndicator(a,a)}}},_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",ex(t)),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 o=To(e,n?null:this.group);return RM[y(t)?"applyTransform":"transformDirection"](t,o,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()}});Os({type:"selectDataRange",event:"dataRangeSelected",update:"update"},function(t,e){e.eachComponent({mainType:"visualMap",query:t},function(e){e.setSelected(t.selected)})}),Ps(fO);var EO=MO.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){EO.superApply(this,"optionUpdated",arguments),this._pieceList=[],this.resetExtent();var n=this._mode=this._determineMode();RO[this._mode].call(this),this._resetSelected(t,e);var o=this.option.categories;this.resetVisual(function(t,e){"categories"===n?(t.mappingMethod="category",t.categories=i(o)):(t.dataExtent=this.getExtent(),t.mappingMethod="piecewise",t.pieceList=f(this._pieceList,function(t){var t=i(t);return"inRange"!==e&&(t.visual=null),t}))})},completeVisualOption:function(){function t(t,e,i){return t&&t[e]&&(w(t[e])?t[e].hasOwnProperty(i):t[e]===i)}var e=this.option,i={},n=sL.listVisualTypes(),o=this.isCategory();d(e.pieces,function(t){d(n,function(e){t.hasOwnProperty(e)&&(i[e]=1)})}),d(i,function(i,n){var a=0;d(this.stateList,function(i){a|=t(e,i,n)||t(e.target,i,n)},this),!a&&d(this.stateList,function(t){(e[t]||(e[t]={}))[n]=gO.get(n,"inRange"===t?"active":"inactive",o)})},this),MO.prototype.completeVisualOption.apply(this,arguments)},_resetSelected:function(t,e){var i=this.option,n=this._pieceList,o=(e?i:t).selected||{};if(i.selected=o,d(n,function(t,e){var i=this.getSelectedMapKey(t);o.hasOwnProperty(i)||(o[i]=!0)},this),"single"===i.selectedMode){var a=!1;d(n,function(t,e){var i=this.getSelectedMapKey(t);o[i]&&(a?o[i]=!1:a=!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&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},setSelected:function(t){this.option.selected=i(t)},getValueState:function(t){var e=sL.findPieceIndex(t,this._pieceList);return null!=e&&this.option.selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){sL.findPieceIndex(e,this._pieceList)===t&&n.push(i)},this),e.push({seriesId:i.id,dataIndex:n})},this),e},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(t){function e(e,a){var r=o.getRepresentValue({interval:e});a||(a=o.getValueState(r));var s=t(r,a);e[0]===-1/0?n[0]=s:e[1]===1/0?n[1]=s:i.push({value:e[0],color:s},{value:e[1],color:s})}if(!this.isCategory()){var i=[],n=[],o=this,a=this._pieceList.slice();if(a.length){var r=a[0].interval[0];r!==-1/0&&a.unshift({interval:[-1/0,r]}),(r=a[a.length-1].interval[1])!==1/0&&a.push({interval:[r,1/0]})}else a.push({interval:[-1/0,1/0]});var s=-1/0;return d(a,function(t){var i=t.interval;i&&(i[0]>s&&e([s,i[0]],"outOfRange"),e(i.slice()),s=i[1])},this),{stops:i,outerColors:n}}}}),RO={splitNumber:function(){var t=this.option,e=this._pieceList,i=Math.min(t.precision,20),n=this.getExtent(),o=t.splitNumber;o=Math.max(parseInt(o,10),1),t.splitNumber=o;for(var a=(n[1]-n[0])/o;+a.toFixed(i)!==a&&i<5;)i++;t.precision=i,a=+a.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+o;r","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t.interval,!1,i)},this)}};AO.extend({type:"visualMap.piecewise",doRender:function(){var t=this.group;t.removeAll();var e=this.visualMapModel,i=e.get("textGap"),n=e.textStyleModel,o=n.getFont(),a=n.getTextColor(),r=this._getItemAlign(),s=e.itemSize,l=this._getViewData(),u=l.endsText,h=T(e.get("showLabel",!0),!u);u&&this._renderEndsText(t,u[0],s,h,r),d(l.viewPieceList,function(n){var l=n.piece,u=new tb;u.onclick=m(this._onItemClick,this,l),this._enableHoverLink(u,n.indexInModelPieceList);var c=e.getRepresentValue(l);if(this._createItemSymbol(u,c,[0,0,s[0],s[1]]),h){var d=this.visualMapModel.getValueState(c);u.add(new aM({style:{x:"right"===r?-i:s[0]+i,y:s[1]/2,text:l.text,textVerticalAlign:"middle",textAlign:r,textFont:o,textFill:a,opacity:"outOfRange"===d?.5:1}}))}t.add(u)},this),u&&this._renderEndsText(t,u[1],s,h,r),aI(e.get("orient"),t,e.get("itemGap")),this.renderBackground(t),this.positionGroup(t)},_enableHoverLink:function(t,e){function i(t){var i=this.visualMapModel;i.option.hoverLink&&this.api.dispatchAction({type:t,batch:ex(i.findTargetDataIndices(e))})}t.on("mouseover",m(i,this,"highlight")).on("mouseout",m(i,this,"downplay"))},_getItemAlign:function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return tx(t,this.api,t.itemSize);var i=e.align;return i&&"auto"!==i||(i="left"),i},_renderEndsText:function(t,e,i,n,o){if(e){var a=new tb,r=this.visualMapModel.textStyleModel;a.add(new aM({style:{x:n?"right"===o?i[0]:0:i[0]/2,y:i[1]/2,textVerticalAlign:"middle",textAlign:n?o:"center",text:e,textFont:r.getFont(),textFill:r.getTextColor()}})),t.add(a)}},_getViewData:function(){var t=this.visualMapModel,e=f(t.getPieceList(),function(t,e){return{piece:t,indexInModelPieceList:e}}),i=t.get("text"),n=t.get("orient"),o=t.get("inverse");return("horizontal"===n?o:!o)?e.reverse():i&&(i=i.slice().reverse()),{viewPieceList:e,endsText:i}},_createItemSymbol:function(t,e,i){t.add($l(this.getControllerVisual(e,"symbol"),i[0],i[1],i[2],i[3],this.getControllerVisual(e,"color")))},_onItemClick:function(t){var e=this.visualMapModel,n=e.option,o=i(n.selected),a=e.getSelectedMapKey(t);"single"===n.selectedMode?(o[a]=!0,d(o,function(t,e){o[e]=e===a})):o[a]=!o[a],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:o})}});Ps(fO);var zO=Qo,BO=ea,VO=Gs({type:"marker",dependencies:["series","grid","polar","geo"],init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i),this.mergeOption(t,i,n.createdBySelf,!0)},isAnimationEnabled:function(){if(U_.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},mergeOption:function(t,e,i,n){var o=this.constructor,r=this.mainType+"Model";i||e.eachSeries(function(t){var i=t.get(this.mainType,!0),s=t[r];i&&i.data?(s?s.mergeOption(i,e,!0):(n&&ux(i),d(i.data,function(t){t instanceof Array?(ux(t[0]),ux(t[1])):ux(t)}),a(s=new o(i,this,e),{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),s.__hostSeries=t),t[r]=s):t[r]=null},this)},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=y(i)?f(i,zO).join(", "):zO(i),o=e.getName(t),a=BO(this.name);return(null!=i||o)&&(a+="
"),o&&(a+=BO(o),null!=i&&(a+=" : ")),null!=i&&(a+=BO(n)),a},getData:function(){return this._data},setData:function(t){this._data=t}});h(VO,HI),VO.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 GO=l,FO=v,WO={min:FO(dx,"min"),max:FO(dx,"max"),average:FO(dx,"average")},HO=Fs({type:"marker",init:function(){this.markerGroupMap=R()},render:function(t,e,i){var n=this.markerGroupMap;n.each(function(t){t.__keep=!1});var o=this.type+"Model";e.eachSeries(function(t){var n=t[o];n&&this.renderSeries(t,n,e,i)},this),n.each(function(t){!t.__keep&&this.group.remove(t.group)},this)},renderSeries:function(){}});HO.extend({type:"markPoint",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markPointModel;e&&(xx(e.getData(),t,i),this.markerGroupMap.get(t.id).updateLayout(e))},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,a=t.id,r=t.getData(),s=this.markerGroupMap,l=s.get(a)||s.set(a,new Au),u=_x(o,t,e);e.setData(u),xx(e.getData(),t,n),u.each(function(t){var i=u.getItemModel(t),n=i.getShallow("symbolSize");"function"==typeof n&&(n=n(e.getRawValue(t),e.getDataParams(t))),u.setItemVisual(t,{symbolSize:n,color:i.get("itemStyle.color")||r.getVisual("color"),symbol:i.getShallow("symbol")})}),l.updateData(u),this.group.add(l.group),u.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=e})}),l.__keep=!0,l.group.silent=e.get("silent")||t.get("silent")}}),Ps(function(t){t.markPoint=t.markPoint||{}}),VO.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"}});var ZO=function(t,e,o,r){var s=t.getData(),l=r.type;if(!y(r)&&("min"===l||"max"===l||"average"===l||"median"===l||null!=r.xAxis||null!=r.yAxis)){var u,h;if(null!=r.yAxis||null!=r.xAxis)u=null!=r.yAxis?"y":"x",e.getAxis(u),h=T(r.yAxis,r.xAxis);else{var c=px(r,s,e,t);u=c.valueDataDim,c.valueAxis,h=yx(s,u,l)}var d="x"===u?0:1,f=1-d,p=i(r),g={};p.type=null,p.coord=[],g.coord=[],p.coord[f]=-1/0,g.coord[f]=1/0;var m=o.get("precision");m>=0&&"number"==typeof h&&(h=+h.toFixed(Math.min(m,20))),p.coord[d]=g.coord[d]=h,r=[p,g,{type:l,valueIndex:r.valueIndex,value:h}]}return r=[fx(t,r[0]),fx(t,r[1]),a({},r[2])],r[2].type=r[2].type||"",n(r[2],r[0]),n(r[2],r[1]),r};HO.extend({type:"markLine",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markLineModel;if(e){var n=e.getData(),o=e.__from,a=e.__to;o.each(function(e){Ix(o,e,!0,t,i),Ix(a,e,!1,t,i)}),n.each(function(t){n.setItemLayout(t,[o.getItemLayout(t),a.getItemLayout(t)])}),this.markerGroupMap.get(t.id).updateLayout()}},this)},renderSeries:function(t,e,i,n){function o(e,i,o){var a=e.getItemModel(i);Ix(e,i,o,t,n),e.setItemVisual(i,{symbolSize:a.get("symbolSize")||g[o?0:1],symbol:a.get("symbol",!0)||p[o?0:1],color:a.get("itemStyle.color")||s.getVisual("color")})}var a=t.coordinateSystem,r=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(r)||l.set(r,new rf);this.group.add(u.group);var h=Tx(a,t,e),c=h.from,d=h.to,f=h.line;e.__from=c,e.__to=d,e.setData(f);var p=e.get("symbol"),g=e.get("symbolSize");y(p)||(p=[p,p]),"number"==typeof g&&(g=[g,g]),h.from.each(function(t){o(c,t,!0),o(d,t,!1)}),f.each(function(t){var e=f.getItemModel(t).get("lineStyle.color");f.setItemVisual(t,{color:e||c.getItemVisual(t,"color")}),f.setItemLayout(t,[c.getItemLayout(t),d.getItemLayout(t)]),f.setItemVisual(t,{fromSymbolSize:c.getItemVisual(t,"symbolSize"),fromSymbol:c.getItemVisual(t,"symbol"),toSymbolSize:d.getItemVisual(t,"symbolSize"),toSymbol:d.getItemVisual(t,"symbol")})}),u.updateData(f),h.line.eachItemGraphicEl(function(t,i){t.traverse(function(t){t.dataModel=e})}),u.__keep=!0,u.group.silent=e.get("silent")||t.get("silent")}}),Ps(function(t){t.markLine=t.markLine||{}}),VO.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"}}}});var UO=function(t,e,i,n){var a=fx(t,n[0]),r=fx(t,n[1]),s=T,l=a.coord,u=r.coord;l[0]=s(l[0],-1/0),l[1]=s(l[1],-1/0),u[0]=s(u[0],1/0),u[1]=s(u[1],1/0);var h=o([{},a,r]);return h.coord=[a.coord,r.coord],h.x0=a.x,h.y0=a.y,h.x1=r.x,h.y1=r.y,h},XO=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];HO.extend({type:"markArea",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markAreaModel;if(e){var n=e.getData();n.each(function(e){var o=f(XO,function(o){return Lx(n,e,o,t,i)});n.setItemLayout(e,o),n.getItemGraphicEl(e).setShape("points",o)})}},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,a=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(a)||l.set(a,{group:new tb});this.group.add(u.group),u.__keep=!0;var h=kx(o,t,e);e.setData(h),h.each(function(e){h.setItemLayout(e,f(XO,function(i){return Lx(h,e,i,t,n)})),h.setItemVisual(e,{color:s.getVisual("color")})}),h.diff(u.__data).add(function(t){var e=new fM({shape:{points:h.getItemLayout(t)}});h.setItemGraphicEl(t,e),u.group.add(e)}).update(function(t,i){var n=u.__data.getItemGraphicEl(i);Mo(n,{shape:{points:h.getItemLayout(t)}},e,t),u.group.add(n),h.setItemGraphicEl(t,n)}).remove(function(t){var e=u.__data.getItemGraphicEl(t);u.group.remove(e)}).execute(),h.eachItemGraphicEl(function(t,i){var n=h.getItemModel(i),o=n.getModel("label"),a=n.getModel("emphasis.label"),s=h.getItemVisual(i,"color");t.useStyle(r(n.getModel("itemStyle").getItemStyle(),{fill:Yt(s,.4),stroke:s})),t.hoverStyle=n.getModel("emphasis.itemStyle").getItemStyle(),po(t.style,t.hoverStyle,o,a,{labelFetcher:e,labelDataIndex:i,defaultText:h.getName(i)||"",isRectText:!0,autoColor:s}),co(t,{}),t.dataModel=e}),u.__data=h,u.group.silent=e.get("silent")||t.get("silent")}}),Ps(function(t){t.markArea=t.markArea||{}});sI.registerSubTypeDefaulter("timeline",function(){return"slider"}),Os({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"),r({currentIndex:i.option.currentIndex},t)}),Os({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var i=e.getComponent("timeline");i&&null!=t.playState&&i.setPlayState(t.playState)});var jO=sI.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){jO.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:(t>=e&&(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||[],n=t.axisType,o=this._names=[];if("category"===n){var a=[];d(e,function(t,e){var n,r=Li(t);w(t)?(n=i(t)).value=e:n=e,a.push(n),_(r)||null!=r&&!isNaN(r)||(r=""),o.push(r+"")}),e=a}var r={category:"ordinal",time:"time"}[n]||"number";(this._data=new pA([{name:"value",type:r}],this)).initData(e,o)},getData:function(){return this._data},getCategories:function(){if("category"===this.get("axisType"))return this._names.slice()}});h(jO.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:[]}}),HI);var YO=YI.extend({type:"timeline"}),qO=function(t,e,i,n){iD.call(this,t,e,i),this.type=n||"value",this.model=null};qO.prototype={constructor:qO,getLabelModel:function(){return this.model.getModel("label")},isHorizontal:function(){return"horizontal"===this.model.get("orient")}},u(qO,iD);var KO=m,$O=d,JO=Math.PI;YO.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(t,e,i,n){if(this.model=t,this.api=i,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var o=this._layout(t,i),a=this._createGroup("mainGroup"),r=this._createGroup("labelGroup"),s=this._axis=this._createAxis(o,t);t.formatTooltip=function(t){return ea(s.scale.getLabel(t))},$O(["AxisLine","AxisTick","Control","CurrentPointer"],function(e){this["_render"+e](o,a,s,t)},this),this._renderAxisLabel(o,r,s,t),this._position(o,t)}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"),o=Ex(t,e);null==i||"auto"===i?i="horizontal"===n?o.y+o.height/2=0||"+"===i?"left":"right"},r={horizontal:i>=0||"+"===i?"top":"bottom",vertical:"middle"},s={horizontal:0,vertical:JO/2},l="vertical"===n?o.height:o.width,u=t.getModel("controlStyle"),h=u.get("show",!0),c=h?u.get("itemSize"):0,d=h?u.get("itemGap"):0,f=c+d,p=t.get("label.rotate")||0;p=p*JO/180;var g,m,v,y,x=u.get("position",!0),_=h&&u.get("showPlayBtn",!0),w=h&&u.get("showPrevBtn",!0),b=h&&u.get("showNextBtn",!0),S=0,M=l;return"left"===x||"bottom"===x?(_&&(g=[0,0],S+=f),w&&(m=[S,0],S+=f),b&&(v=[M-c,0],M-=f)):(_&&(g=[M-c,0],M-=f),w&&(m=[0,0],S+=f),b&&(v=[M-c,0],M-=f)),y=[S,M],t.get("inverse")&&y.reverse(),{viewRect:o,mainLength:l,orient:n,rotation:s[n],labelRotation:p,labelPosOpt:i,labelAlign:t.get("label.align")||a[n],labelBaseline:t.get("label.verticalAlign")||t.get("label.baseline")||r[n],playPosition:g,prevBtnPosition:m,nextBtnPosition:v,axisExtent:y,controlSize:c,controlGap:d}},_position:function(t,e){function i(t){var e=t.position;t.origin=[c[0][0]-e[0],c[1][0]-e[1]]}function n(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function o(t,e,i,n,o){t[n]+=i[n][o]-e[n][o]}var a=this._mainGroup,r=this._labelGroup,s=t.viewRect;if("vertical"===t.orient){var l=xt(),u=s.x,h=s.y+s.height;St(l,l,[-u,-h]),Mt(l,l,-JO/2),St(l,l,[u,h]),(s=s.clone()).applyTransform(l)}var c=n(s),d=n(a.getBoundingRect()),f=n(r.getBoundingRect()),p=a.position,g=r.position;g[0]=p[0]=c[0][0];var m=t.labelPosOpt;if(isNaN(m))o(p,d,c,1,v="+"===m?0:1),o(g,f,c,1,1-v);else{var v=m>=0?0:1;o(p,d,c,1,v),g[1]=p[1]+m}a.attr("position",p),r.attr("position",g),a.rotation=r.rotation=t.rotation,i(a),i(r)},_createAxis:function(t,e){var i=e.getData(),n=e.get("axisType"),o=Wl(e,n);o.getTicks=function(){return i.mapArray(["value"],function(t){return t})};var a=i.getDataExtent("value");o.setExtent(a[0],a[1]),o.niceTicks();var r=new qO("value",o,t.axisExtent,n);return r.model=e,r},_createGroup:function(t){var e=this["_"+t]=new tb;return this.group.add(e),e},_renderAxisLine:function(t,e,i,n){var o=i.getExtent();n.get("lineStyle.show")&&e.add(new xM({shape:{x1:o[0],y1:0,x2:o[1],y2:0},style:a({lineCap:"round"},n.getModel("lineStyle").getLineStyle()),silent:!0,z2:1}))},_renderAxisTick:function(t,e,i,n){var o=n.getData(),a=i.scale.getTicks();$O(a,function(t){var a=i.dataToCoord(t),r=o.getItemModel(t),s=r.getModel("itemStyle"),l=r.getModel("emphasis.itemStyle"),u={position:[a,0],onclick:KO(this._changeTimeline,this,t)},h=zx(r,s,e,u);co(h,l.getItemStyle()),r.get("tooltip")?(h.dataIndex=t,h.dataModel=n):h.dataIndex=h.dataModel=null},this)},_renderAxisLabel:function(t,e,i,n){if(i.getLabelModel().get("show")){var o=n.getData(),a=i.getViewLabels();$O(a,function(n){var a=n.tickValue,r=o.getItemModel(a),s=r.getModel("label"),l=r.getModel("emphasis.label"),u=i.dataToCoord(n.tickValue),h=new aM({position:[u,0],rotation:t.labelRotation-t.rotation,onclick:KO(this._changeTimeline,this,a),silent:!1});go(h.style,s,{text:n.formattedLabel,textAlign:t.labelAlign,textVerticalAlign:t.labelBaseline}),e.add(h),co(h,go({},l))},this)}},_renderControl:function(t,e,i,n){function o(t,i,o,h){if(t){var c=Rx(n,i,u,{position:t,origin:[a/2,0],rotation:h?-r:0,rectHover:!0,style:s,onclick:o});e.add(c),co(c,l)}}var a=t.controlSize,r=t.rotation,s=n.getModel("controlStyle").getItemStyle(),l=n.getModel("emphasis.controlStyle").getItemStyle(),u=[0,-a/2,a,a],h=n.getPlayState(),c=n.get("inverse",!0);o(t.nextBtnPosition,"controlStyle.nextIcon",KO(this._changeTimeline,this,c?"-":"+")),o(t.prevBtnPosition,"controlStyle.prevIcon",KO(this._changeTimeline,this,c?"+":"-")),o(t.playPosition,"controlStyle."+(h?"stopIcon":"playIcon"),KO(this._handlePlayClick,this,!h),!0)},_renderCurrentPointer:function(t,e,i,n){var o=n.getData(),a=n.getCurrentIndex(),r=o.getItemModel(a).getModel("checkpointStyle"),s=this,l={onCreate:function(t){t.draggable=!0,t.drift=KO(s._handlePointerDrag,s),t.ondragend=KO(s._handlePointerDragend,s),Bx(t,a,i,n,!0)},onUpdate:function(t){Bx(t,a,i,n)}};this._currentPointer=zx(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=Go(this._axis.getExtent().slice());i>n[1]&&(i=n[1]),ii.getHeight()&&(n.textPosition="top",l=!0);var u=l?-5-o.height:s+8;a+o.width/2>i.getWidth()?(n.textPosition=["100%",u],n.textAlign="right"):a-o.width/2<0&&(n.textPosition=[0,u],n.textAlign="left")}})}},updateView:function(t,e,i,n){d(this._features,function(t){t.updateView&&t.updateView(t.model,e,i,n)})},remove:function(t,e){d(this._features,function(i){i.remove&&i.remove(t,e)}),this.group.removeAll()},dispose:function(t,e){d(this._features,function(i){i.dispose&&i.dispose(t,e)})}});var tE=aT.toolbox.saveAsImage;Gx.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:tE.title,type:"png",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:tE.lang.slice()},Gx.prototype.unusable=!U_.canvasSupported,Gx.prototype.onclick=function(t,e){var i=this.model,n=i.get("name")||t.get("title.0.text")||"echarts",o=document.createElement("a"),a=i.get("type",!0)||"png";o.download=n+"."+a,o.target="_blank";var r=e.getConnectedDataURL({type:a,backgroundColor:i.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",excludeComponents:i.get("excludeComponents"),pixelRatio:i.get("pixelRatio")});if(o.href=r,"function"!=typeof MouseEvent||U_.browser.ie||U_.browser.edge)if(window.navigator.msSaveOrOpenBlob){for(var s=atob(r.split(",")[1]),l=s.length,u=new Uint8Array(l);l--;)u[l]=s.charCodeAt(l);var h=new Blob([u]);window.navigator.msSaveOrOpenBlob(h,n+"."+a)}else{var c=i.get("lang"),d='';window.open().document.write(d)}else{var f=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});o.dispatchEvent(f)}},Ty("saveAsImage",Gx);var eE=aT.toolbox.magicType;Fx.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:i(eE.title),option:{},seriesIndex:{}};var iE=Fx.prototype;iE.getIcons=function(){var t=this.model,e=t.get("icon"),i={};return d(t.get("type"),function(t){e[t]&&(i[t]=e[t])}),i};var nE={line:function(t,e,i,o){if("bar"===t)return n({id:e,type:"line",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},o.get("option.line")||{},!0)},bar:function(t,e,i,o){if("line"===t)return n({id:e,type:"bar",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},o.get("option.bar")||{},!0)},stack:function(t,e,i,o){if("line"===t||"bar"===t)return n({id:e,stack:"__ec_magicType_stack__"},o.get("option.stack")||{},!0)},tiled:function(t,e,i,o){if("line"===t||"bar"===t)return n({id:e,stack:""},o.get("option.tiled")||{},!0)}},oE=[["line","bar"],["stack","tiled"]];iE.onclick=function(t,e,i){var n=this.model,o=n.get("seriesIndex."+i);if(nE[i]){var a={series:[]};d(oE,function(t){l(t,i)>=0&&d(t,function(t){n.setIconStatus(t,"normal")})}),n.setIconStatus(i,"emphasis"),t.eachComponent({mainType:"series",query:null==o?null:{seriesIndex:o}},function(e){var o=e.subType,s=e.id,l=nE[i](o,s,e,n);l&&(r(l,e.option),a.series.push(l));var u=e.coordinateSystem;if(u&&"cartesian2d"===u.type&&("line"===i||"bar"===i)){var h=u.getAxesByScale("ordinal")[0];if(h){var c=h.dim+"Axis",d=t.queryComponents({mainType:c,index:e.get(name+"Index"),id:e.get(name+"Id")})[0].componentIndex;a[c]=a[c]||[];for(var f=0;f<=d;f++)a[c][d]=a[c][d]||{};a[c][d].boundaryGap="bar"===i}}}),e.dispatchAction({type:"changeMagicType",currentType:i,newOption:a})}},Os({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),Ty("magicType",Fx);var aE=aT.toolbox.dataView,rE=new Array(60).join("-"),sE="\t",lE=new RegExp("["+sE+"]+","g");$x.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:i(aE.title),lang:i(aE.lang),backgroundColor:"#fff",textColor:"#000",textareaColor:"#fff",textareaBorderColor:"#333",buttonColor:"#c23531",buttonTextColor:"#fff"},$x.prototype.onclick=function(t,e){function i(){n.removeChild(a),x._dom=null}var n=e.getDom(),o=this.model;this._dom&&n.removeChild(this._dom);var a=document.createElement("div");a.style.cssText="position:absolute;left:5px;top:5px;bottom:5px;right:5px;",a.style.backgroundColor=o.get("backgroundColor")||"#fff";var r=document.createElement("h4"),s=o.get("lang")||[];r.innerHTML=s[0]||o.get("title"),r.style.cssText="margin: 10px 20px;",r.style.color=o.get("textColor");var l=document.createElement("div"),u=document.createElement("textarea");l.style.cssText="display:block;width:100%;overflow:auto;";var h=o.get("optionToContent"),c=o.get("contentToOption"),d=Ux(t);if("function"==typeof h){var f=h(e.getOption());"string"==typeof f?l.innerHTML=f:M(f)&&l.appendChild(f)}else l.appendChild(u),u.readOnly=o.get("readOnly"),u.style.cssText="width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;",u.style.color=o.get("textColor"),u.style.borderColor=o.get("textareaBorderColor"),u.style.backgroundColor=o.get("textareaColor"),u.value=d.value;var p=d.meta,g=document.createElement("div");g.style.cssText="position:absolute;bottom:0;left:0;right:0;";var m="float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",v=document.createElement("div"),y=document.createElement("div");m+=";background-color:"+o.get("buttonColor"),m+=";color:"+o.get("buttonTextColor");var x=this;ht(v,"click",i),ht(y,"click",function(){var t;try{t="function"==typeof c?c(l,e.getOption()):Kx(u.value,p)}catch(t){throw i(),new Error("Data view format error "+t)}t&&e.dispatchAction({type:"changeDataView",newOption:t}),i()}),v.innerHTML=s[1],y.innerHTML=s[2],y.style.cssText=m,v.style.cssText=m,!o.get("readOnly")&&g.appendChild(y),g.appendChild(v),ht(u,"keydown",function(t){if(9===(t.keyCode||t.which)){var e=this.value,i=this.selectionStart,n=this.selectionEnd;this.value=e.substring(0,i)+sE+e.substring(n),this.selectionStart=this.selectionEnd=i+1,mw(t)}}),a.appendChild(r),a.appendChild(l),a.appendChild(g),l.style.height=n.clientHeight-80+"px",n.appendChild(a),this._dom=a},$x.prototype.remove=function(t,e){this._dom&&e.getDom().removeChild(this._dom)},$x.prototype.dispose=function(t,e){this.remove(t,e)},Ty("dataView",$x),Os({type:"changeDataView",event:"dataViewChanged",update:"prepareAndUpdate"},function(t,e){var i=[];d(t.newOption.series,function(t){var n=e.getSeriesByName(t.name)[0];if(n){var o=n.get("data");i.push({name:t.name,data:Jx(t.data,o)})}else i.push(a({type:"scatter"},t))}),e.mergeOption(r({series:i},t.newOption))});var uE=d,hE="\0_ec_hist_store";KN.extend({type:"dataZoom.select"}),$N.extend({type:"dataZoom.select"});var cE=aT.toolbox.dataZoom,dE=d,fE="\0_ec_\0toolbox-dataZoom_";o_.defaultOption={show:!0,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:i(cE.title)};var pE=o_.prototype;pE.render=function(t,e,i,n){this.model=t,this.ecModel=e,this.api=i,s_(t,e,this,n,i),r_(t,e)},pE.onclick=function(t,e,i){gE[i].call(this)},pE.remove=function(t,e){this._brushController.unmount()},pE.dispose=function(t,e){this._brushController.dispose()};var gE={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(t_(this.ecModel))}};pE._onBrush=function(t,e){function i(t,e,i){var r=e.getAxis(t),s=r.model,l=n(t,s,a),u=l.findRepresentativeAxisProxy(s).getMinMaxSpan();null==u.minValueSpan&&null==u.maxValueSpan||(i=qL(0,i.slice(),r.scale.getExtent(),0,u.minValueSpan,u.maxValueSpan)),l&&(o[l.id]={dataZoomId:l.id,startValue:i[0],endValue:i[1]})}function n(t,e,i){var n;return i.eachComponent({mainType:"dataZoom",subType:"select"},function(i){i.getAxisModel(t,e.componentIndex)&&(n=i)}),n}if(e.isEnd&&t.length){var o={},a=this.ecModel;this._brushController.updateCovers([]),new hy(a_(this.model.option),a,{include:["grid"]}).matchOutputRanges(t,a,function(t,e,n){if("cartesian2d"===n.type){var o=t.brushType;"rect"===o?(i("x",n,e[0]),i("y",n,e[1])):i({lineX:"x",lineY:"y"}[o],n,e)}}),Qx(a,o),this._dispatchZoomAction(o)}},pE._dispatchZoomAction=function(t){var e=[];dE(t,function(t,n){e.push(i(t))}),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},Ty("dataZoom",o_),Ps(function(t){function e(t,e){if(e){var o=t+"Index",a=e[o];null==a||"all"===a||y(a)||(a=!1===a||"none"===a?[]:[a]),i(t,function(e,i){if(null==a||"all"===a||-1!==l(a,i)){var r={type:"select",$fromToolbox:!0,id:fE+t+i};r[o]=i,n.push(r)}})}}function i(e,i){var n=t[e];y(n)||(n=n?[n]:[]),dE(n,i)}if(t){var n=t.dataZoom||(t.dataZoom=[]);y(n)||(t.dataZoom=n=[n]);var o=t.toolbox;if(o&&(y(o)&&(o=o[0]),o&&o.feature)){var a=o.feature.dataZoom;e("xAxis",a),e("yAxis",a)}}});var mE=aT.toolbox.restore;l_.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:mE.title},l_.prototype.onclick=function(t,e,i){e_(t),e.dispatchAction({type:"restore",from:this.uid})},Ty("restore",l_),Os({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")});var vE,yE="urn:schemas-microsoft-com:vml",xE="undefined"==typeof window?null:window,_E=!1,wE=xE&&xE.document;if(wE&&!U_.canvasSupported)try{!wE.namespaces.zrvml&&wE.namespaces.add("zrvml",yE),vE=function(t){return wE.createElement("')}}catch(t){vE=function(t){return wE.createElement("<"+t+' xmlns="'+yE+'" class="zrvml">')}}var bE=OS.CMD,SE=Math.round,ME=Math.sqrt,IE=Math.abs,TE=Math.cos,AE=Math.sin,DE=Math.max;if(!U_.canvasSupported){var CE=21600,LE=CE/2,kE=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=CE+","+CE,t.coordorigin="0,0"},PE=function(t){return String(t).replace(/&/g,"&").replace(/"/g,""")},NE=function(t,e,i){return"rgb("+[t,e,i].join(",")+")"},OE=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},EE=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},RE=function(t,e,i){return 1e5*(parseFloat(t)||0)+1e3*(parseFloat(e)||0)+i},zE=function(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t},BE=function(t,e,i){var n=Gt(e);i=+i,isNaN(i)&&(i=1),n&&(t.color=NE(n[0],n[1],n[2]),t.opacity=i*n[3])},VE=function(t){var e=Gt(t);return[NE(e[0],e[1],e[2]),e[3]]},GE=function(t,e,i){var n=e.fill;if(null!=n)if(n instanceof MM){var o,a=0,r=[0,0],s=0,l=1,u=i.getBoundingRect(),h=u.width,c=u.height;if("linear"===n.type){o="gradient";var d=i.transform,f=[n.x*h,n.y*c],p=[n.x2*h,n.y2*c];d&&(Q(f,f,d),Q(p,p,d));var g=p[0]-f[0],m=p[1]-f[1];(a=180*Math.atan2(g,m)/Math.PI)<0&&(a+=360),a<1e-6&&(a=0)}else{o="gradientradial";var f=[n.x*h,n.y*c],d=i.transform,v=i.scale,y=h,x=c;r=[(f[0]-u.x)/y,(f[1]-u.y)/x],d&&Q(f,f,d),y/=v[0]*CE,x/=v[1]*CE;var _=DE(y,x);s=0/_,l=2*n.r/_-s}var w=n.colorStops.slice();w.sort(function(t,e){return t.offset-e.offset});for(var b=w.length,S=[],M=[],I=0;I=2){var D=S[0][0],C=S[1][0],L=S[0][1]*e.opacity,k=S[1][1]*e.opacity;t.type=o,t.method="none",t.focus="100%",t.angle=a,t.color=D,t.color2=C,t.colors=M.join(","),t.opacity=k,t.opacity2=L}"radial"===o&&(t.focusposition=r.join(","))}else BE(t,n,e.opacity)},FE=function(t,e){null!=e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof MM||BE(t,e.stroke,e.opacity)},WE=function(t,e,i,n){var o="fill"===e,a=t.getElementsByTagName(e)[0];null!=i[e]&&"none"!==i[e]&&(o||!o&&i.lineWidth)?(t[o?"filled":"stroked"]="true",i[e]instanceof MM&&EE(t,a),a||(a=u_(e)),o?GE(a,i,n):FE(a,i),OE(t,a)):(t[o?"filled":"stroked"]="false",EE(t,a))},HE=[[],[],[]],ZE=function(t,e){var i,n,o,a,r,s,l=bE.M,u=bE.C,h=bE.L,c=bE.A,d=bE.Q,f=[],p=t.data,g=t.len();for(a=0;a.01?N&&(O+=.0125):Math.abs(E-D)<1e-4?N&&OA?x-=.0125:x+=.0125:N&&ED?y+=.0125:y-=.0125),f.push(R,SE(((A-C)*M+b)*CE-LE),",",SE(((D-L)*I+S)*CE-LE),",",SE(((A+C)*M+b)*CE-LE),",",SE(((D+L)*I+S)*CE-LE),",",SE((O*M+b)*CE-LE),",",SE((E*I+S)*CE-LE),",",SE((y*M+b)*CE-LE),",",SE((x*I+S)*CE-LE)),r=y,s=x;break;case bE.R:var z=HE[0],B=HE[1];z[0]=p[a++],z[1]=p[a++],B[0]=z[0]+p[a++],B[1]=z[1]+p[a++],e&&(Q(z,z,e),Q(B,B,e)),z[0]=SE(z[0]*CE-LE),B[0]=SE(B[0]*CE-LE),z[1]=SE(z[1]*CE-LE),B[1]=SE(B[1]*CE-LE),f.push(" m ",z[0],",",z[1]," l ",B[0],",",z[1]," l ",B[0],",",B[1]," l ",z[0],",",B[1]);break;case bE.Z:f.push(" x ")}if(i>0){f.push(n);for(var V=0;V100&&(YE=0,jE={});var i,n=qE.style;try{n.font=t,i=n.fontFamily.split(",")[0]}catch(t){}e={style:n.fontStyle||"normal",variant:n.fontVariant||"normal",weight:n.fontWeight||"normal",size:0|parseFloat(n.fontSize||12),family:i||"Microsoft YaHei"},jE[t]=e,YE++}return e};!function(t,e){bb[t]=e}("measureText",function(t,e){var i=wE;XE||((XE=i.createElement("div")).style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",wE.body.appendChild(XE));try{XE.style.font=e}catch(t){}return XE.innerHTML="",XE.appendChild(i.createTextNode(t)),{width:XE.offsetWidth}});for(var $E=new de,JE=[Ab,di,fi,kn,aM],QE=0;QE=o&&u+1>=a){for(var h=[],c=0;c=o&&c+1>=a)return T_(0,s.components);l[i]=s}else l[i]=void 0}r++}();if(d)return d}},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 o=e.length,a=i.length,r=t.newPos,s=r-n,l=0;r+1=0;--n)if(e[n]===t)return!0;return!1}),i):null:i[0]},D_.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)}}},D_.prototype.addDom=function(t){this.getDefs(!0).appendChild(t)},D_.prototype.removeDom=function(t){var e=this.getDefs(!1);e&&t[this._domName]&&(e.removeChild(t[this._domName]),t[this._domName]=null)},D_.prototype.getDoms=function(){var t=this.getDefs(!1);if(!t)return[];var e=[];return d(this._tagNames,function(i){var n=t.getElementsByTagName(i);e=e.concat([].slice.call(n))}),e},D_.prototype.markAllUnused=function(){var t=this;d(this.getDoms(),function(e){e[t._markLabel]="0"})},D_.prototype.markUsed=function(t){t&&(t[this._markLabel]="1")},D_.prototype.removeUnused=function(){var t=this.getDefs(!1);if(t){var e=this;d(this.getDoms(),function(i){"1"!==i[e._markLabel]&&t.removeChild(i)})}},D_.prototype.getSvgProxy=function(t){return t instanceof kn?dR:t instanceof fi?fR:t instanceof aM?pR:dR},D_.prototype.getTextSvgElement=function(t){return t.__textSvgEl},D_.prototype.getSvgElement=function(t){return t.__svgEl},u(C_,D_),C_.prototype.addWithoutUpdate=function(t,e){if(e&&e.style){var i=this;d(["fill","stroke"],function(n){if(e.style[n]&&("linear"===e.style[n].type||"radial"===e.style[n].type)){var o,a=e.style[n],r=i.getDefs(!0);a._dom?(o=a._dom,r.contains(a._dom)||i.addDom(o)):o=i.add(a),i.markUsed(e);var s=o.getAttribute("id");t.setAttribute(n,"url(#"+s+")")}})}},C_.prototype.add=function(t){var e;if("linear"===t.type)e=this.createElement("linearGradient");else{if("radial"!==t.type)return Yw("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},C_.prototype.update=function(t){var e=this;D_.prototype.update.call(this,t,function(){var i=t.type,n=t._dom.tagName;"linear"===i&&"linearGradient"===n||"radial"===i&&"radialGradient"===n?e.updateDom(t,t._dom):(e.removeDom(t),e.add(t))})},C_.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 Yw("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,o=i.length;n0){var n,o,a=this.getDefs(!0),r=e[0],s=i?"_textDom":"_dom";r[s]?(o=r[s].getAttribute("id"),n=r[s],a.contains(n)||a.appendChild(n)):(o="zr"+this._zrId+"-clip-"+this.nextId,++this.nextId,(n=this.createElement("clipPath")).setAttribute("id",o),a.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);bt(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(#"+o+")"),e.length>1&&this.updateDom(n,e.slice(1),i)}else t&&t.setAttribute("clip-path","none")},L_.prototype.markUsed=function(t){var e=this;t.__clipPaths&&t.__clipPaths.length>0&&d(t.__clipPaths,function(t){t._dom&&D_.prototype.markUsed.call(e,t._dom),t._textDom&&D_.prototype.markUsed.call(e,t._textDom)})},u(k_,D_),k_.prototype.addWithoutUpdate=function(t,e){if(e&&P_(e.style)){var i,n=e.style;n._shadowDom?(i=n._shadowDom,this.getDefs(!0).contains(n._shadowDom)||this.addDom(i)):i=this.add(e),this.markUsed(e);var o=i.getAttribute("id");t.style.filter="url(#"+o+")"}},k_.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},k_.prototype.update=function(t,e){var i=e.style;if(P_(i)){var n=this;D_.prototype.update.call(this,e,function(t){n.updateDom(e,t._shadowDom)})}else this.remove(t,i)},k_.prototype.remove=function(t,e){null!=e._shadowDomId&&(this.removeDom(e),t.style.filter="")},k_.prototype.updateDom=function(t,e){var i=e.getElementsByTagName("feDropShadow");i=0===i.length?this.createElement("feDropShadow"):i[0];var n,o,a,r,s=t.style,l=t.scale?t.scale[0]||1:1,u=t.scale?t.scale[1]||1:1;if(s.shadowBlur||s.shadowOffsetX||s.shadowOffsetY)n=s.shadowOffsetX||0,o=s.shadowOffsetY||0,a=s.shadowBlur,r=s.shadowColor;else{if(!s.textShadowBlur)return void this.removeDom(e,s);n=s.textShadowOffsetX||0,o=s.textShadowOffsetY||0,a=s.textShadowBlur,r=s.textShadowColor}i.setAttribute("dx",n/l),i.setAttribute("dy",o/u),i.setAttribute("flood-color",r);var h=a/2/l+" "+a/2/u;i.setAttribute("stdDeviation",h),e.setAttribute("x","-100%"),e.setAttribute("y","-100%"),e.setAttribute("width",Math.ceil(a/2*200)+"%"),e.setAttribute("height",Math.ceil(a/2*200)+"%"),e.appendChild(i),s._shadowDom=e},k_.prototype.markUsed=function(t){var e=t.style;e&&e._shadowDom&&D_.prototype.markUsed.call(this,e._shadowDom)};var xR=function(t,e,i,n){this.root=t,this.storage=e,this._opts=i=a({},i||{});var o=p_("svg");o.setAttribute("xmlns","http://www.w3.org/2000/svg"),o.setAttribute("version","1.1"),o.setAttribute("baseProfile","full"),o.style.cssText="user-select:none;position:absolute;left:0;top:0;",this.gradientManager=new C_(n,o),this.clipPathManager=new L_(n,o),this.shadowManager=new k_(n,o);var r=document.createElement("div");r.style.cssText="overflow:hidden;position:relative",this._svgRoot=o,this._viewport=r,t.appendChild(r),r.appendChild(o),this.resize(i.width,i.height),this._visibleList=[]};xR.prototype={constructor:xR,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=this._svgRoot,n=this._visibleList,o=t.length,a=[];for(e=0;e=0;--n)if(e[n]===t)return!0;return!1}),i):null:i[0]},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 o=i.style;o.width=t+"px",o.height=e+"px";var a=this._svgRoot;a.setAttribute("width",t),a.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],o=["paddingLeft","paddingTop"][t],a=["paddingRight","paddingBottom"][t];if(null!=e[i]&&"auto"!==e[i])return parseFloat(e[i]);var r=this.root,s=document.defaultView.getComputedStyle(r);return(r[n]||N_(s[i])||N_(r.style[i]))-(N_(s[o])||0)-(N_(s[a])||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}},d(["getLayer","insertLayer","eachLayer","eachBuiltinLayer","eachOtherLayer","getLayers","modLayer","delLayer","clearLayer","toDataURL","pathToImage"],function(t){xR.prototype[t]=F_(t)}),Ti("svg",xR),t.version="4.2.0",t.dependencies={zrender:"4.0.6"},t.PRIORITY=zT,t.init=function(t,e,i){var n=Ls(t);if(n)return n;var o=new ls(t,e,i);return o.id="ec_"+tA++,JT[o.id]=o,Fi(t,iA,o.id),Ds(o),o},t.connect=function(t){if(y(t)){var e=t;t=null,LT(e,function(e){null!=e.group&&(t=e.group)}),t=t||"g_"+eA++,LT(e,function(e){e.group=t})}return QT[t]=!0,t},t.disConnect=Cs,t.disconnect=nA,t.dispose=function(t){"string"==typeof t?t=JT[t]:t instanceof ls||(t=Ls(t)),t instanceof ls&&!t.isDisposed()&&t.dispose()},t.getInstanceByDom=Ls,t.getInstanceById=function(t){return JT[t]},t.registerTheme=ks,t.registerPreprocessor=Ps,t.registerProcessor=Ns,t.registerPostUpdate=function(t){YT.push(t)},t.registerAction=Os,t.registerCoordinateSystem=Es,t.getCoordinateSystemDimensions=function(t){var e=Ga.get(t);if(e)return e.getDimensionsInfo?e.getDimensionsInfo():e.dimensions.slice()},t.registerLayout=Rs,t.registerVisual=zs,t.registerLoading=Vs,t.extendComponentModel=Gs,t.extendComponentView=Fs,t.extendSeriesModel=Ws,t.extendChartView=Hs,t.setCanvasCreator=function(t){e("createCanvas",t)},t.registerMap=function(t,e,i){AT.registerMap(t,e,i)},t.getMap=function(t){var e=AT.retrieveMap(t);return e&&e[0]&&{geoJson:e[0].geoJSON,specialAreas:e[0].specialAreas}},t.dataTool={},t.zrender=Wb,t.number=jM,t.format=eI,t.throttle=kr,t.helper=$A,t.matrix=Sw,t.vector=cw,t.color=Ww,t.parseGeoJSON=QA,t.parseGeoJson=nD,t.util=oD,t.graphic=aD,t.List=pA,t.Model=Po,t.Axis=iD,t.env=U_}); diff --git a/pages/domoTest/ec-canvas/wx-canvas.js b/pages/domoTest/ec-canvas/wx-canvas.js new file mode 100644 index 0000000..23ce9ad --- /dev/null +++ b/pages/domoTest/ec-canvas/wx-canvas.js @@ -0,0 +1,97 @@ +export default class WxCanvas { + constructor(ctx, canvasId) { + this.ctx = ctx; + this.canvasId = canvasId; + this.chart = null; + + // this._initCanvas(zrender, ctx); + this._initStyle(ctx); + this._initEvent(); + } + + getContext(contextType) { + if (contextType === '2d') { + return this.ctx; + } + } + + // canvasToTempFilePath(opt) { + // if (!opt.canvasId) { + // opt.canvasId = this.canvasId; + // } + + // return wx.canvasToTempFilePath(opt, this); + // } + + setChart(chart) { + this.chart = chart; + } + + attachEvent () { + // noop + } + + detachEvent() { + // noop + } + + _initCanvas(zrender, ctx) { + zrender.util.getContext = function () { + return ctx; + }; + + zrender.util.$override('measureText', function (text, font) { + ctx.font = font || '12px sans-serif'; + return ctx.measureText(text); + }); + } + + _initStyle(ctx) { + var styles = ['fillStyle', 'strokeStyle', 'globalAlpha', + 'textAlign', 'textBaseAlign', 'shadow', 'lineWidth', + 'lineCap', 'lineJoin', 'lineDash', 'miterLimit', 'fontSize']; + + styles.forEach(style => { + Object.defineProperty(ctx, style, { + set: value => { + if (style !== 'fillStyle' && style !== 'strokeStyle' + || value !== 'none' && value !== null + ) { + ctx['set' + style.charAt(0).toUpperCase() + style.slice(1)](value); + } + } + }); + }); + + ctx.createRadialGradient = () => { + return ctx.createCircularGradient(arguments); + }; + } + + _initEvent() { + this.event = {}; + const eventNames = [{ + wxName: 'touchStart', + ecName: 'mousedown' + }, { + wxName: 'touchMove', + ecName: 'mousemove' + }, { + wxName: 'touchEnd', + ecName: 'mouseup' + }, { + wxName: 'touchEnd', + ecName: 'click' + }]; + + eventNames.forEach(name => { + this.event[name.wxName] = e => { + const touch = e.touches[0]; + this.chart.getZr().handler.dispatch(name.ecName, { + zrX: name.wxName === 'tap' ? touch.clientX : touch.x, + zrY: name.wxName === 'tap' ? touch.clientY : touch.y + }); + }; + }); + } +} diff --git a/pages/domoTest/wxchartTest/wxChatTest.js b/pages/domoTest/wxchartTest/wxChatTest.js index 75dcd15..0f8559a 100644 --- a/pages/domoTest/wxchartTest/wxChatTest.js +++ b/pages/domoTest/wxchartTest/wxChatTest.js @@ -1,78 +1,107 @@ -let Charts = require('../../../utils/wxcharts.js'); //引入wxChart文件 -var app = getApp(); -var lineChart = null; -Page({ +import * as echarts from '../ec-canvas/echarts'; +const API = require('../../../utils/api.js') +const AJAX = require('../../../utils/ajax.js') + +const app = getApp(); - /** - * 页面的初始数据 - */ +function setOption(chart, xdata, ydata, titleName) { + const option = { + title: { + text: titleName, + padding: [10, 0, 0, 20], + textStyle: { + fontSize: 16, + color: '#000000' + }, + top: '10rpx' + }, + backgroundColor: "#fff", + color: ["#006EFF", "#67E0E3", "#9FE6B8"], + animation: false, + grid: { + show: false + }, + xAxis: { + type: 'category', + data: xdata, //x轴上的数据是动态的,所以我作为参数传进来 + axisLabel: { + interval: 5, //x轴间隔多少显示刻度 + fontSize: 8 + } + }, + yAxis: { + x: 'center', + scale: true, + type: 'value', + axisLabel: { + formatter: function (value) { + var val = value / 100 + '元'; + return val + } + } + }, + series: [{ + type: 'line', + data: ydata, //y轴上的数据也是动态的,也作为参数传进来 + symbol: 'none', + lineStyle: { + width: 1 + } + }] + }; + chart.setOption(option) +} + +Page({ data: { - date: '' + ecOne: { + lazyLoad: true + }, + timer: '', //因为我要实时刷新,所以设置了个定时器 + xData: [], + yData: [], + titleName: '' }, - - /** - * 生命周期函数--监听页面加载 - */ onLoad: function (options) { - //获取系统当前时间 - let that = this - var myDate = new Date(); - var date = myDate.toLocaleDateString(); - console.log(date) - that.setData({ - date: date, //选择时间 + var _this = this; + this.getOneOption(`收入`); + this.setData({ //每隔一分钟刷新一次 + timer: setInterval(function () { + _this.getOneOption(`支出`); + }, 6000) }) - - // 折线图 - var windowWidth = '', windowHeight = ''; //定义宽高 - try { - var res = wx.getSystemInfoSync(); //试图获取屏幕宽高数据 - windowWidth = res.windowWidth / 750 * 700 //以设计图750为主进行比例算换 - windowHeight = res.windowWidth / 750 * 500 //以设计图750为主进行比例算换 - } catch (e) { - console.error('getSystemInfoSync failed!'); //如果获取失败 - } - - lineChart = new Charts({ - canvasId: 'lineCanvas', - type: 'line', - animation: true, //是否开启动画 - categories: ['06', '07', '08', '09', '10', '11', '12'], - series: [{ - name: '月教师好评情况', - data: [15, 20, 45, 37, 40, 80, 25], - format: function (val) { - return val.toFixed(2) + '分'; - } - }], - xAxis: { //是否隐藏x轴分割线 - disableGrid: true, - }, - yAxis: { - title: '教师好评总分数', - format: function (val) { - return val.toFixed(2); - }, - }, - width: windowWidth, //图表展示内容宽度 - height: windowHeight, //图表展示内容高度 - dataLabel: true, //是否在图表上直接显示数据 - dataPointShape: true, //是否在图标上显示数据点标志 - extra: { - lineStyle: 'curve' //曲线 - }, - }); }, - /** - * 点击数据点显示对应的数据 - */ - touchHandler: function (e) { - lineChart.showToolTip(e, { - // background: '#7cb5ec', - format: function (item, category) { - return category + ' ' + item.name + ':' + item.data - } + onReady: function () { //这一步是一定要注意的 + this.oneComponent = this.selectComponent('#mychart-one'); + }, + onUnload: function () { + clearInterval(this.data.timer) + }, + init_one: function () { //初始化第一个图表 + this.oneComponent.init((canvas, width, height) => { + const chart = echarts.init(canvas, null, { + width: width, + height: height + }); + setOption(chart, this.data.xData, this.data.yData, this.data.titleName) + this.chart = chart; + return chart; }); }, - + getOneOption: function (titleName) { //这一步其实就要给图表加上数据 + var _this = this; + let resultUrl = API.api.assetsDetails + '/35/1571825706341' + AJAX.getRequest(resultUrl).then(response => { + console.log(response.data) + let resData = response.data + //res.xdata和res.ydata是我们需要的数据,即在x轴和y轴展示的数据,记住一定是数组哦! + let yDataList = titleName == '支出' ? resData.pays : resData.incomes + _this.setData({ + xData: resData.categories, + yData: yDataList, + titleName: titleName + }) + _this.init_one() + }) + }, }) \ No newline at end of file diff --git a/pages/domoTest/wxchartTest/wxChatTest.json b/pages/domoTest/wxchartTest/wxChatTest.json index 8835af0..b7dd744 100644 --- a/pages/domoTest/wxchartTest/wxChatTest.json +++ b/pages/domoTest/wxchartTest/wxChatTest.json @@ -1,3 +1,5 @@ { - "usingComponents": {} + "usingComponents": { + "ec-canvas": "../ec-canvas/ec-canvas" + } } \ No newline at end of file diff --git a/pages/domoTest/wxchartTest/wxChatTest.wxml b/pages/domoTest/wxchartTest/wxChatTest.wxml index d11639d..6271378 100644 --- a/pages/domoTest/wxchartTest/wxChatTest.wxml +++ b/pages/domoTest/wxchartTest/wxChatTest.wxml @@ -1,8 +1,4 @@ - - - - - - - + + + \ No newline at end of file diff --git a/pages/domoTest/wxchartTest/wxChatTest.wxss b/pages/domoTest/wxchartTest/wxChatTest.wxss index a8e62db..aeeaad2 100644 --- a/pages/domoTest/wxchartTest/wxChatTest.wxss +++ b/pages/domoTest/wxchartTest/wxChatTest.wxss @@ -1,17 +1,12 @@ -/* 折线 */ -.chart{ - width: 95%; - height: 550rpx; - margin: 0 auto; - padding-top: 50rpx; - background: #fff; +.content { + width: 100%; + background-color: #F2F2F2; + overflow-y: auto; } - -.chart-info{ - height: 500rpx; -} - -.canvas { - width: 380px; - height: 400px; +#mychart-one { + position: absolute; + top: 0; + height: 50%; + left: 0; + right: 0; } \ No newline at end of file diff --git a/utils/api.js b/utils/api.js index ab19b2f..e290123 100644 --- a/utils/api.js +++ b/utils/api.js @@ -4,8 +4,8 @@ let api = { // TODO:配置接口文档信息 -api.baseUrl = 'http://192.168.1.102:12000'; -// api.baseUrl = 'https://be.yangyoki.top:12000'; +// api.baseUrl = 'http://192.168.1.102:12000'; +api.baseUrl = 'https://be.yangyoki.top:12000'; api.imageHostDowm = 'https://be.yangyoki.top:12000'; api.imageHost = 'https://be.yangyoki.top:12000/'; diff --git a/utils/wxcharts.js b/utils/wxcharts.js deleted file mode 100644 index e2fb996..0000000 --- a/utils/wxcharts.js +++ /dev/null @@ -1,2044 +0,0 @@ -/* - * charts for WeChat small app v1.0 - * - * https://github.com/xiaolin3303/wx-charts - * 2016-11-28 - * - * Designed and built with all the love of Web - */ - -'use strict'; - -var config = { - yAxisWidth: 15, - yAxisSplit: 5, - xAxisHeight: 15, - xAxisLineHeight: 15, - legendHeight: 15, - yAxisTitleWidth: 15, - padding: 12, - columePadding: 3, - fontSize: 10, - dataPointShape: ['diamond', 'circle', 'triangle', 'rect'], - colors: ['#7cb5ec', '#f7a35c', '#434348', '#90ed7d', '#f15c80', '#8085e9'], - pieChartLinePadding: 25, - pieChartTextPadding: 15, - xAxisTextPadding: 3, - titleColor: '#333333', - titleFontSize: 20, - subtitleColor: '#999999', - subtitleFontSize: 15, - toolTipPadding: 3, - toolTipBackground: '#000000', - toolTipOpacity: 0.7, - toolTipLineHeight: 14, - radarGridCount: 3, - radarLabelTextMargin: 15 -}; - -// Object.assign polyfill -// https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign -function assign(target, varArgs) { - if (target == null) { - // TypeError if undefined or null - throw new TypeError('Cannot convert undefined or null to object'); - } - - var to = Object(target); - - for (var index = 1; index < arguments.length; index++) { - var nextSource = arguments[index]; - - if (nextSource != null) { - // Skip over if undefined or null - for (var nextKey in nextSource) { - // Avoid bugs when hasOwnProperty is shadowed - if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { - to[nextKey] = nextSource[nextKey]; - } - } - } - } - return to; -} - -var util = { - toFixed: function toFixed(num, limit) { - limit = limit || 2; - if (this.isFloat(num)) { - num = num.toFixed(limit); - } - return num; - }, - isFloat: function isFloat(num) { - return num % 1 !== 0; - }, - approximatelyEqual: function approximatelyEqual(num1, num2) { - return Math.abs(num1 - num2) < 1e-10; - }, - isSameSign: function isSameSign(num1, num2) { - return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2; - }, - isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) { - return this.isSameSign(p1.x, p2.x); - }, - isCollision: function isCollision(obj1, obj2) { - obj1.end = {}; - obj1.end.x = obj1.start.x + obj1.width; - obj1.end.y = obj1.start.y - obj1.height; - obj2.end = {}; - obj2.end.x = obj2.start.x + obj2.width; - obj2.end.y = obj2.start.y - obj2.height; - var flag = obj2.start.x > obj1.end.x || obj2.end.x < obj1.start.x || obj2.end.y > obj1.start.y || obj2.start.y < obj1.end.y; - - return !flag; - } -}; - -function findRange(num, type, limit) { - if (isNaN(num)) { - throw new Error('[wxCharts] unvalid series data!'); - } - limit = limit || 10; - type = type ? type : 'upper'; - var multiple = 1; - while (limit < 1) { - limit *= 10; - multiple *= 10; - } - if (type === 'upper') { - num = Math.ceil(num * multiple); - } else { - num = Math.floor(num * multiple); - } - while (num % limit !== 0) { - if (type === 'upper') { - num++; - } else { - num--; - } - } - - return num / multiple; -} - -function calValidDistance(distance, chartData, config, opts) { - - var dataChartAreaWidth = opts.width - config.padding - chartData.xAxisPoints[0]; - var dataChartWidth = chartData.eachSpacing * opts.categories.length; - var validDistance = distance; - if (distance >= 0) { - validDistance = 0; - } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) { - validDistance = dataChartAreaWidth - dataChartWidth; - } - return validDistance; -} - -function isInAngleRange(angle, startAngle, endAngle) { - function adjust(angle) { - while (angle < 0) { - angle += 2 * Math.PI; - } - while (angle > 2 * Math.PI) { - angle -= 2 * Math.PI; - } - - return angle; - } - - angle = adjust(angle); - startAngle = adjust(startAngle); - endAngle = adjust(endAngle); - if (startAngle > endAngle) { - endAngle += 2 * Math.PI; - if (angle < startAngle) { - angle += 2 * Math.PI; - } - } - - return angle >= startAngle && angle <= endAngle; -} - -function calRotateTranslate(x, y, h) { - var xv = x; - var yv = h - y; - - var transX = xv + (h - yv - xv) / Math.sqrt(2); - transX *= -1; - - var transY = (h - yv) * (Math.sqrt(2) - 1) - (h - yv - xv) / Math.sqrt(2); - - return { - transX: transX, - transY: transY - }; -} - -function createCurveControlPoints(points, i) { - - function isNotMiddlePoint(points, i) { - if (points[i - 1] && points[i + 1]) { - return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y, points[i + 1].y); - } else { - return false; - } - } - - var a = 0.2; - var b = 0.2; - var pAx = null; - var pAy = null; - var pBx = null; - var pBy = null; - if (i < 1) { - pAx = points[0].x + (points[1].x - points[0].x) * a; - pAy = points[0].y + (points[1].y - points[0].y) * a; - } else { - pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a; - pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a; - } - - if (i > points.length - 3) { - var last = points.length - 1; - pBx = points[last].x - (points[last].x - points[last - 1].x) * b; - pBy = points[last].y - (points[last].y - points[last - 1].y) * b; - } else { - pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b; - pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b; - } - - // fix issue https://github.com/xiaolin3303/wx-charts/issues/79 - if (isNotMiddlePoint(points, i + 1)) { - pBy = points[i + 1].y; - } - if (isNotMiddlePoint(points, i)) { - pAy = points[i].y; - } - - return { - ctrA: { x: pAx, y: pAy }, - ctrB: { x: pBx, y: pBy } - }; -} - -function convertCoordinateOrigin(x, y, center) { - return { - x: center.x + x, - y: center.y - y - }; -} - -function avoidCollision(obj, target) { - if (target) { - // is collision test - while (util.isCollision(obj, target)) { - if (obj.start.x > 0) { - obj.start.y--; - } else if (obj.start.x < 0) { - obj.start.y++; - } else { - if (obj.start.y > 0) { - obj.start.y++; - } else { - obj.start.y--; - } - } - } - } - return obj; -} - -function fillSeriesColor(series, config) { - var index = 0; - return series.map(function (item) { - if (!item.color) { - item.color = config.colors[index]; - index = (index + 1) % config.colors.length; - } - return item; - }); -} - -function getDataRange(minData, maxData) { - var limit = 0; - var range = maxData - minData; - if (range >= 10000) { - limit = 1000; - } else if (range >= 1000) { - limit = 100; - } else if (range >= 100) { - limit = 10; - } else if (range >= 10) { - limit = 5; - } else if (range >= 1) { - limit = 1; - } else if (range >= 0.1) { - limit = 0.1; - } else { - limit = 0.01; - } - return { - minRange: findRange(minData, 'lower', limit), - maxRange: findRange(maxData, 'upper', limit) - }; -} - -function measureText(text) { - var fontSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10; - - // wx canvas 未实现measureText方法, 此处自行实现 - text = String(text); - var text = text.split(''); - var width = 0; - text.forEach(function (item) { - if (/[a-zA-Z]/.test(item)) { - width += 7; - } else if (/[0-9]/.test(item)) { - width += 5.5; - } else if (/\./.test(item)) { - width += 2.7; - } else if (/-/.test(item)) { - width += 3.25; - } else if (/[\u4e00-\u9fa5]/.test(item)) { - width += 10; - } else if (/\(|\)/.test(item)) { - width += 3.73; - } else if (/\s/.test(item)) { - width += 2.5; - } else if (/%/.test(item)) { - width += 8; - } else { - width += 10; - } - }); - return width * fontSize / 10; -} - -function dataCombine(series) { - return series.reduce(function (a, b) { - return (a.data ? a.data : a).concat(b.data); - }, []); -} - -function getSeriesDataItem(series, index) { - var data = []; - series.forEach(function (item) { - if (item.data[index] !== null && typeof item.data[index] !== 'undefined') { - var seriesItem = {}; - seriesItem.color = item.color; - seriesItem.name = item.name; - seriesItem.data = item.format ? item.format(item.data[index]) : item.data[index]; - data.push(seriesItem); - } - }); - - return data; -} - - - -function getMaxTextListLength(list) { - var lengthList = list.map(function (item) { - return measureText(item); - }); - return Math.max.apply(null, lengthList); -} - -function getRadarCoordinateSeries(length) { - var eachAngle = 2 * Math.PI / length; - var CoordinateSeries = []; - for (var i = 0; i < length; i++) { - CoordinateSeries.push(eachAngle * i); - } - - return CoordinateSeries.map(function (item) { - return -1 * item + Math.PI / 2; - }); -} - -function getToolTipData(seriesData, calPoints, index, categories) { - var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; - - var textList = seriesData.map(function (item) { - return { - text: option.format ? option.format(item, categories[index]) : item.name + ': ' + item.data, - color: item.color - }; - }); - var validCalPoints = []; - var offset = { - x: 0, - y: 0 - }; - calPoints.forEach(function (points) { - if (typeof points[index] !== 'undefined' && points[index] !== null) { - validCalPoints.push(points[index]); - } - }); - validCalPoints.forEach(function (item) { - offset.x = Math.round(item.x); - offset.y += item.y; - }); - - offset.y /= validCalPoints.length; - return { textList: textList, offset: offset }; -} - -function findCurrentIndex(currentPoints, xAxisPoints, opts, config) { - var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0; - - var currentIndex = -1; - if (isInExactChartArea(currentPoints, opts, config)) { - xAxisPoints.forEach(function (item, index) { - if (currentPoints.x + offset > item) { - currentIndex = index; - } - }); - } - - return currentIndex; -} - -function isInExactChartArea(currentPoints, opts, config) { - return currentPoints.x < opts.width - config.padding && currentPoints.x > config.padding + config.yAxisWidth + config.yAxisTitleWidth && currentPoints.y > config.padding && currentPoints.y < opts.height - config.legendHeight - config.xAxisHeight - config.padding; -} - -function findRadarChartCurrentIndex(currentPoints, radarData, count) { - var eachAngleArea = 2 * Math.PI / count; - var currentIndex = -1; - if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) { - var fixAngle = function fixAngle(angle) { - if (angle < 0) { - angle += 2 * Math.PI; - } - if (angle > 2 * Math.PI) { - angle -= 2 * Math.PI; - } - return angle; - }; - - var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x); - angle = -1 * angle; - if (angle < 0) { - angle += 2 * Math.PI; - } - - var angleList = radarData.angleList.map(function (item) { - item = fixAngle(-1 * item); - - return item; - }); - - angleList.forEach(function (item, index) { - var rangeStart = fixAngle(item - eachAngleArea / 2); - var rangeEnd = fixAngle(item + eachAngleArea / 2); - if (rangeEnd < rangeStart) { - rangeEnd += 2 * Math.PI; - } - if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <= rangeEnd) { - currentIndex = index; - } - }); - } - - return currentIndex; -} - -function findPieChartCurrentIndex(currentPoints, pieData) { - var currentIndex = -1; - if (isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) { - var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x); - angle = -angle; - for (var i = 0, len = pieData.series.length; i < len; i++) { - var item = pieData.series[i]; - if (isInAngleRange(angle, item._start_, item._start_ + item._proportion_ * 2 * Math.PI)) { - currentIndex = i; - break; - } - } - } - - return currentIndex; -} - -function isInExactPieChartArea(currentPoints, center, radius) { - return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2); -} - -function splitPoints(points) { - var newPoints = []; - var items = []; - points.forEach(function (item, index) { - if (item !== null) { - items.push(item); - } else { - if (items.length) { - newPoints.push(items); - } - items = []; - } - }); - if (items.length) { - newPoints.push(items); - } - - return newPoints; -} - -function calLegendData(series, opts, config) { - if (opts.legend === false) { - return { - legendList: [], - legendHeight: 0 - }; - } - var padding = 5; - var marginTop = 8; - var shapeWidth = 15; - var legendList = []; - var widthCount = 0; - var currentRow = []; - series.forEach(function (item) { - var itemWidth = 3 * padding + shapeWidth + measureText(item.name || 'undefined'); - if (widthCount + itemWidth > opts.width) { - legendList.push(currentRow); - widthCount = itemWidth; - currentRow = [item]; - } else { - widthCount += itemWidth; - currentRow.push(item); - } - }); - if (currentRow.length) { - legendList.push(currentRow); - } - - return { - legendList: legendList, - legendHeight: legendList.length * (config.fontSize + marginTop) + padding - }; -} - -function calCategoriesData(categories, opts, config) { - var result = { - angle: 0, - xAxisHeight: config.xAxisHeight - }; - - var _getXAxisPoints = getXAxisPoints(categories, opts, config), - eachSpacing = _getXAxisPoints.eachSpacing; - - // get max length of categories text - - - var categoriesTextLenth = categories.map(function (item) { - return measureText(item); - }); - - var maxTextLength = Math.max.apply(this, categoriesTextLenth); - - if (maxTextLength + 2 * config.xAxisTextPadding > eachSpacing) { - result.angle = 45 * Math.PI / 180; - result.xAxisHeight = 2 * config.xAxisTextPadding + maxTextLength * Math.sin(result.angle); - } - - return result; -} - -function getRadarDataPoints(angleList, center, radius, series, opts) { - var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1; - - var radarOption = opts.extra.radar || {}; - radarOption.max = radarOption.max || 0; - var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series))); - - var data = []; - series.forEach(function (each) { - var listItem = {}; - listItem.color = each.color; - listItem.data = []; - each.data.forEach(function (item, index) { - var tmp = {}; - tmp.angle = angleList[index]; - - tmp.proportion = item / maxData; - tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion * process * Math.sin(tmp.angle), center); - listItem.data.push(tmp); - }); - - data.push(listItem); - }); - - return data; -} - -function getPieDataPoints(series) { - var process = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; - - var count = 0; - var _start_ = 0; - series.forEach(function (item) { - item.data = item.data === null ? 0 : item.data; - count += item.data; - }); - series.forEach(function (item) { - item.data = item.data === null ? 0 : item.data; - item._proportion_ = item.data / count * process; - }); - series.forEach(function (item) { - item._start_ = _start_; - _start_ += 2 * item._proportion_ * Math.PI; - }); - - return series; -} - -function getPieTextMaxLength(series) { - series = getPieDataPoints(series); - var maxLength = 0; - series.forEach(function (item) { - var text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%'; - maxLength = Math.max(maxLength, measureText(text)); - }); - - return maxLength; -} - -function fixColumeData(points, eachSpacing, columnLen, index, config, opts) { - return points.map(function (item) { - if (item === null) { - return null; - } - item.width = (eachSpacing - 2 * config.columePadding) / columnLen; - - if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { - // customer column width - item.width = Math.min(item.width, +opts.extra.column.width); - } else { - // default width should less tran 25px - // don't ask me why, I don't know - item.width = Math.min(item.width, 25); - } - item.x += (index + 0.5 - columnLen / 2) * item.width; - - return item; - }); -} - -function getXAxisPoints(categories, opts, config) { - var yAxisTotalWidth = config.yAxisWidth + config.yAxisTitleWidth; - var spacingValid = opts.width - 2 * config.padding - yAxisTotalWidth; - var dataCount = opts.enableScroll ? Math.min(5, categories.length) : categories.length; - var eachSpacing = spacingValid / dataCount; - - var xAxisPoints = []; - var startX = config.padding + yAxisTotalWidth; - var endX = opts.width - config.padding; - categories.forEach(function (item, index) { - xAxisPoints.push(startX + index * eachSpacing); - }); - if (opts.enableScroll === true) { - xAxisPoints.push(startX + categories.length * eachSpacing); - } else { - xAxisPoints.push(endX); - } - - return { xAxisPoints: xAxisPoints, startX: startX, endX: endX, eachSpacing: eachSpacing }; -} - -function getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) { - var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1; - - var points = []; - var validHeight = opts.height - 2 * config.padding - config.xAxisHeight - config.legendHeight; - data.forEach(function (item, index) { - if (item === null) { - points.push(null); - } else { - var point = {}; - point.x = xAxisPoints[index] + Math.round(eachSpacing / 2); - var height = validHeight * (item - minRange) / (maxRange - minRange); - height *= process; - point.y = opts.height - config.xAxisHeight - config.legendHeight - Math.round(height) - config.padding; - points.push(point); - } - }); - - return points; -} - -function getYAxisTextList(series, opts, config) { - var data = dataCombine(series); - // remove null from data - data = data.filter(function (item) { - return item !== null; - }); - var minData = Math.min.apply(this, data); - var maxData = Math.max.apply(this, data); - if (typeof opts.yAxis.min === 'number') { - minData = Math.min(opts.yAxis.min, minData); - } - if (typeof opts.yAxis.max === 'number') { - maxData = Math.max(opts.yAxis.max, maxData); - } - - // fix issue https://github.com/xiaolin3303/wx-charts/issues/9 - if (minData === maxData) { - var rangeSpan = maxData || 1; - minData -= rangeSpan; - maxData += rangeSpan; - } - - var dataRange = getDataRange(minData, maxData); - var minRange = dataRange.minRange; - var maxRange = dataRange.maxRange; - - var range = []; - var eachRange = (maxRange - minRange) / config.yAxisSplit; - - for (var i = 0; i <= config.yAxisSplit; i++) { - range.push(minRange + eachRange * i); - } - return range.reverse(); -} - -function calYAxisData(series, opts, config) { - - var ranges = getYAxisTextList(series, opts, config); - var yAxisWidth = config.yAxisWidth; - var rangesFormat = ranges.map(function (item) { - item = util.toFixed(item, 2); - item = opts.yAxis.format ? opts.yAxis.format(Number(item)) : item; - yAxisWidth = Math.max(yAxisWidth, measureText(item) + 5); - return item; - }); - if (opts.yAxis.disabled === true) { - yAxisWidth = 0; - } - - return { rangesFormat: rangesFormat, ranges: ranges, yAxisWidth: yAxisWidth }; -} - -function drawPointShape(points, color, shape, context) { - context.beginPath(); - context.setStrokeStyle("#ffffff"); - context.setLineWidth(1); - context.setFillStyle(color); - - if (shape === 'diamond') { - points.forEach(function (item, index) { - if (item !== null) { - context.moveTo(item.x, item.y - 4.5); - context.lineTo(item.x - 4.5, item.y); - context.lineTo(item.x, item.y + 4.5); - context.lineTo(item.x + 4.5, item.y); - context.lineTo(item.x, item.y - 4.5); - } - }); - } else if (shape === 'circle') { - points.forEach(function (item, index) { - if (item !== null) { - context.moveTo(item.x + 3.5, item.y); - context.arc(item.x, item.y, 4, 0, 2 * Math.PI, false); - } - }); - } else if (shape === 'rect') { - points.forEach(function (item, index) { - if (item !== null) { - context.moveTo(item.x - 3.5, item.y - 3.5); - context.rect(item.x - 3.5, item.y - 3.5, 7, 7); - } - }); - } else if (shape === 'triangle') { - points.forEach(function (item, index) { - if (item !== null) { - context.moveTo(item.x, item.y - 4.5); - context.lineTo(item.x - 4.5, item.y + 4.5); - context.lineTo(item.x + 4.5, item.y + 4.5); - context.lineTo(item.x, item.y - 4.5); - } - }); - } - context.closePath(); - context.fill(); - context.stroke(); -} - -function drawRingTitle(opts, config, context) { - var titlefontSize = opts.title.fontSize || config.titleFontSize; - var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize; - var title = opts.title.name || ''; - var subtitle = opts.subtitle.name || ''; - var titleFontColor = opts.title.color || config.titleColor; - var subtitleFontColor = opts.subtitle.color || config.subtitleColor; - var titleHeight = title ? titlefontSize : 0; - var subtitleHeight = subtitle ? subtitlefontSize : 0; - var margin = 5; - if (subtitle) { - var textWidth = measureText(subtitle, subtitlefontSize); - var startX = (opts.width - textWidth) / 2 + (opts.subtitle.offsetX || 0); - var startY = (opts.height - config.legendHeight + subtitlefontSize) / 2; - if (title) { - startY -= (titleHeight + margin) / 2; - } - context.beginPath(); - context.setFontSize(subtitlefontSize); - context.setFillStyle(subtitleFontColor); - context.fillText(subtitle, startX, startY); - context.stroke(); - context.closePath(); - } - if (title) { - var _textWidth = measureText(title, titlefontSize); - var _startX = (opts.width - _textWidth) / 2 + (opts.title.offsetX || 0); - var _startY = (opts.height - config.legendHeight + titlefontSize) / 2; - if (subtitle) { - _startY += (subtitleHeight + margin) / 2; - } - context.beginPath(); - context.setFontSize(titlefontSize); - context.setFillStyle(titleFontColor); - context.fillText(title, _startX, _startY); - context.stroke(); - context.closePath(); - } -} - -function drawPointText(points, series, config, context) { - // 绘制数据文案 - var data = series.data; - - context.beginPath(); - context.setFontSize(config.fontSize); - context.setFillStyle('#666666'); - points.forEach(function (item, index) { - if (item !== null) { - var formatVal = series.format ? series.format(data[index]) : data[index]; - context.fillText(formatVal, item.x - measureText(formatVal) / 2, item.y - 2); - } - }); - context.closePath(); - context.stroke(); -} - -function drawRadarLabel(angleList, radius, centerPosition, opts, config, context) { - var radarOption = opts.extra.radar || {}; - radius += config.radarLabelTextMargin; - context.beginPath(); - context.setFontSize(config.fontSize); - context.setFillStyle(radarOption.labelColor || '#666666'); - angleList.forEach(function (angle, index) { - var pos = { - x: radius * Math.cos(angle), - y: radius * Math.sin(angle) - }; - var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition); - var startX = posRelativeCanvas.x; - var startY = posRelativeCanvas.y; - if (util.approximatelyEqual(pos.x, 0)) { - startX -= measureText(opts.categories[index] || '') / 2; - } else if (pos.x < 0) { - startX -= measureText(opts.categories[index] || ''); - } - context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2); - }); - context.stroke(); - context.closePath(); -} - -function drawPieText(series, opts, config, context, radius, center) { - var lineRadius = radius + config.pieChartLinePadding; - var textObjectCollection = []; - var lastTextObject = null; - - var seriesConvert = series.map(function (item) { - var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2); - var text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%'; - var color = item.color; - return { arc: arc, text: text, color: color }; - }); - seriesConvert.forEach(function (item) { - // line end - var orginX1 = Math.cos(item.arc) * lineRadius; - var orginY1 = Math.sin(item.arc) * lineRadius; - - // line start - var orginX2 = Math.cos(item.arc) * radius; - var orginY2 = Math.sin(item.arc) * radius; - - // text start - var orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding; - var orginY3 = orginY1; - - var textWidth = measureText(item.text); - var startY = orginY3; - - if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, { x: orginX3 })) { - if (orginX3 > 0) { - startY = Math.min(orginY3, lastTextObject.start.y); - } else if (orginX1 < 0) { - startY = Math.max(orginY3, lastTextObject.start.y); - } else { - if (orginY3 > 0) { - startY = Math.max(orginY3, lastTextObject.start.y); - } else { - startY = Math.min(orginY3, lastTextObject.start.y); - } - } - } - - if (orginX3 < 0) { - orginX3 -= textWidth; - } - - var textObject = { - lineStart: { - x: orginX2, - y: orginY2 - }, - lineEnd: { - x: orginX1, - y: orginY1 - }, - start: { - x: orginX3, - y: startY - }, - width: textWidth, - height: config.fontSize, - text: item.text, - color: item.color - }; - - lastTextObject = avoidCollision(textObject, lastTextObject); - textObjectCollection.push(lastTextObject); - }); - - textObjectCollection.forEach(function (item) { - var lineStartPoistion = convertCoordinateOrigin(item.lineStart.x, item.lineStart.y, center); - var lineEndPoistion = convertCoordinateOrigin(item.lineEnd.x, item.lineEnd.y, center); - var textPosition = convertCoordinateOrigin(item.start.x, item.start.y, center); - context.setLineWidth(1); - context.setFontSize(config.fontSize); - context.beginPath(); - context.setStrokeStyle(item.color); - context.setFillStyle(item.color); - context.moveTo(lineStartPoistion.x, lineStartPoistion.y); - var curveStartX = item.start.x < 0 ? textPosition.x + item.width : textPosition.x; - var textStartX = item.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5; - context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y); - context.moveTo(lineStartPoistion.x, lineStartPoistion.y); - context.stroke(); - context.closePath(); - context.beginPath(); - context.moveTo(textPosition.x + item.width, textPosition.y); - context.arc(curveStartX, textPosition.y, 2, 0, 2 * Math.PI); - context.closePath(); - context.fill(); - context.beginPath(); - context.setFillStyle('#666666'); - context.fillText(item.text, textStartX, textPosition.y + 3); - context.closePath(); - context.stroke(); - - context.closePath(); - }); -} - -function drawToolTipSplitLine(offsetX, opts, config, context) { - var startY = config.padding; - var endY = opts.height - config.padding - config.xAxisHeight - config.legendHeight; - context.beginPath(); - context.setStrokeStyle('#cccccc'); - context.setLineWidth(1); - context.moveTo(offsetX, startY); - context.lineTo(offsetX, endY); - context.stroke(); - context.closePath(); -} - -function drawToolTip(textList, offset, opts, config, context) { - var legendWidth = 4; - var legendMarginRight = 5; - var arrowWidth = 8; - var isOverRightBorder = false; - offset = assign({ - x: 0, - y: 0 - }, offset); - offset.y -= 8; - var textWidth = textList.map(function (item) { - return measureText(item.text); - }); - - var toolTipWidth = legendWidth + legendMarginRight + 4 * config.toolTipPadding + Math.max.apply(null, textWidth); - var toolTipHeight = 2 * config.toolTipPadding + textList.length * config.toolTipLineHeight; - - // if beyond the right border - if (offset.x - Math.abs(opts._scrollDistance_) + arrowWidth + toolTipWidth > opts.width) { - isOverRightBorder = true; - } - - // draw background rect - context.beginPath(); - context.setFillStyle(opts.tooltip.option.background || config.toolTipBackground); - context.setGlobalAlpha(config.toolTipOpacity); - if (isOverRightBorder) { - context.moveTo(offset.x, offset.y + 10); - context.lineTo(offset.x - arrowWidth, offset.y + 10 - 5); - context.lineTo(offset.x - arrowWidth, offset.y + 10 + 5); - context.moveTo(offset.x, offset.y + 10); - context.fillRect(offset.x - toolTipWidth - arrowWidth, offset.y, toolTipWidth, toolTipHeight); - } else { - context.moveTo(offset.x, offset.y + 10); - context.lineTo(offset.x + arrowWidth, offset.y + 10 - 5); - context.lineTo(offset.x + arrowWidth, offset.y + 10 + 5); - context.moveTo(offset.x, offset.y + 10); - context.fillRect(offset.x + arrowWidth, offset.y, toolTipWidth, toolTipHeight); - } - - context.closePath(); - context.fill(); - context.setGlobalAlpha(1); - - // draw legend - textList.forEach(function (item, index) { - context.beginPath(); - context.setFillStyle(item.color); - var startX = offset.x + arrowWidth + 2 * config.toolTipPadding; - var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index + config.toolTipPadding; - if (isOverRightBorder) { - startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding; - } - context.fillRect(startX, startY, legendWidth, config.fontSize); - context.closePath(); - }); - - // draw text list - context.beginPath(); - context.setFontSize(config.fontSize); - context.setFillStyle('#ffffff'); - textList.forEach(function (item, index) { - var startX = offset.x + arrowWidth + 2 * config.toolTipPadding + legendWidth + legendMarginRight; - if (isOverRightBorder) { - startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding + +legendWidth + legendMarginRight; - } - var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index + config.toolTipPadding; - context.fillText(item.text, startX, startY + config.fontSize); - }); - context.stroke(); - context.closePath(); -} - -function drawYAxisTitle(title, opts, config, context) { - var startX = config.xAxisHeight + (opts.height - config.xAxisHeight - measureText(title)) / 2; - context.save(); - context.beginPath(); - context.setFontSize(config.fontSize); - context.setFillStyle(opts.yAxis.titleFontColor || '#333333'); - context.translate(0, opts.height); - context.rotate(-90 * Math.PI / 180); - context.fillText(title, startX, config.padding + 0.5 * config.fontSize); - context.stroke(); - context.closePath(); - context.restore(); -} - -function drawColumnDataPoints(series, opts, config, context) { - var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; - - var _calYAxisData = calYAxisData(series, opts, config), - ranges = _calYAxisData.ranges; - - var _getXAxisPoints = getXAxisPoints(opts.categories, opts, config), - xAxisPoints = _getXAxisPoints.xAxisPoints, - eachSpacing = _getXAxisPoints.eachSpacing; - - var minRange = ranges.pop(); - var maxRange = ranges.shift(); - context.save(); - if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { - context.translate(opts._scrollDistance_, 0); - } - - series.forEach(function (eachSeries, seriesIndex) { - var data = eachSeries.data; - var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); - points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts); - - // 绘制柱状数据图 - context.beginPath(); - context.setFillStyle(eachSeries.color); - points.forEach(function (item, index) { - if (item !== null) { - var startX = item.x - item.width / 2 + 1; - var height = opts.height - item.y - config.padding - config.xAxisHeight - config.legendHeight; - context.moveTo(startX, item.y); - context.rect(startX, item.y, item.width - 2, height); - } - }); - context.closePath(); - context.fill(); - }); - series.forEach(function (eachSeries, seriesIndex) { - var data = eachSeries.data; - var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); - points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts); - if (opts.dataLabel !== false && process === 1) { - drawPointText(points, eachSeries, config, context); - } - }); - context.restore(); - return { - xAxisPoints: xAxisPoints, - eachSpacing: eachSpacing - }; -} - -function drawAreaDataPoints(series, opts, config, context) { - var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; - - var _calYAxisData2 = calYAxisData(series, opts, config), - ranges = _calYAxisData2.ranges; - - var _getXAxisPoints2 = getXAxisPoints(opts.categories, opts, config), - xAxisPoints = _getXAxisPoints2.xAxisPoints, - eachSpacing = _getXAxisPoints2.eachSpacing; - - var minRange = ranges.pop(); - var maxRange = ranges.shift(); - var endY = opts.height - config.padding - config.xAxisHeight - config.legendHeight; - var calPoints = []; - - context.save(); - if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { - context.translate(opts._scrollDistance_, 0); - } - - if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { - drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context); - } - - series.forEach(function (eachSeries, seriesIndex) { - var data = eachSeries.data; - var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); - calPoints.push(points); - - var splitPointList = splitPoints(points); - - splitPointList.forEach(function (points) { - // 绘制区域数据 - context.beginPath(); - context.setStrokeStyle(eachSeries.color); - context.setFillStyle(eachSeries.color); - context.setGlobalAlpha(0.6); - context.setLineWidth(2); - if (points.length > 1) { - var firstPoint = points[0]; - var lastPoint = points[points.length - 1]; - - context.moveTo(firstPoint.x, firstPoint.y); - if (opts.extra.lineStyle === 'curve') { - points.forEach(function (item, index) { - if (index > 0) { - var ctrlPoint = createCurveControlPoints(points, index - 1); - context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); - } - }); - } else { - points.forEach(function (item, index) { - if (index > 0) { - context.lineTo(item.x, item.y); - } - }); - } - - context.lineTo(lastPoint.x, endY); - context.lineTo(firstPoint.x, endY); - context.lineTo(firstPoint.x, firstPoint.y); - } else { - var item = points[0]; - context.moveTo(item.x - eachSpacing / 2, item.y); - context.lineTo(item.x + eachSpacing / 2, item.y); - context.lineTo(item.x + eachSpacing / 2, endY); - context.lineTo(item.x - eachSpacing / 2, endY); - context.moveTo(item.x - eachSpacing / 2, item.y); - } - context.closePath(); - context.fill(); - context.setGlobalAlpha(1); - }); - - if (opts.dataPointShape !== false) { - var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length]; - drawPointShape(points, eachSeries.color, shape, context); - } - }); - if (opts.dataLabel !== false && process === 1) { - series.forEach(function (eachSeries, seriesIndex) { - var data = eachSeries.data; - var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); - drawPointText(points, eachSeries, config, context); - }); - } - - context.restore(); - - return { - xAxisPoints: xAxisPoints, - calPoints: calPoints, - eachSpacing: eachSpacing - }; -} - -function drawLineDataPoints(series, opts, config, context) { - var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; - - var _calYAxisData3 = calYAxisData(series, opts, config), - ranges = _calYAxisData3.ranges; - - var _getXAxisPoints3 = getXAxisPoints(opts.categories, opts, config), - xAxisPoints = _getXAxisPoints3.xAxisPoints, - eachSpacing = _getXAxisPoints3.eachSpacing; - - var minRange = ranges.pop(); - var maxRange = ranges.shift(); - var calPoints = []; - - context.save(); - if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { - context.translate(opts._scrollDistance_, 0); - } - - if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { - drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context); - } - - series.forEach(function (eachSeries, seriesIndex) { - var data = eachSeries.data; - var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); - calPoints.push(points); - var splitPointList = splitPoints(points); - - splitPointList.forEach(function (points, index) { - context.beginPath(); - context.setStrokeStyle(eachSeries.color); - context.setLineWidth(2); - if (points.length === 1) { - context.moveTo(points[0].x, points[0].y); - context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); - } else { - context.moveTo(points[0].x, points[0].y); - if (opts.extra.lineStyle === 'curve') { - points.forEach(function (item, index) { - if (index > 0) { - var ctrlPoint = createCurveControlPoints(points, index - 1); - context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); - } - }); - } else { - points.forEach(function (item, index) { - if (index > 0) { - context.lineTo(item.x, item.y); - } - }); - } - context.moveTo(points[0].x, points[0].y); - } - context.closePath(); - context.stroke(); - }); - - if (opts.dataPointShape !== false) { - var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length]; - drawPointShape(points, eachSeries.color, shape, context); - } - }); - if (opts.dataLabel !== false && process === 1) { - series.forEach(function (eachSeries, seriesIndex) { - var data = eachSeries.data; - var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); - drawPointText(points, eachSeries, config, context); - }); - } - - context.restore(); - - return { - xAxisPoints: xAxisPoints, - calPoints: calPoints, - eachSpacing: eachSpacing - }; -} - -function drawToolTipBridge(opts, config, context, process) { - context.save(); - if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { - context.translate(opts._scrollDistance_, 0); - } - if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { - drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context); - } - context.restore(); -} - -function drawXAxis(categories, opts, config, context) { - var _getXAxisPoints4 = getXAxisPoints(categories, opts, config), - xAxisPoints = _getXAxisPoints4.xAxisPoints, - startX = _getXAxisPoints4.startX, - endX = _getXAxisPoints4.endX, - eachSpacing = _getXAxisPoints4.eachSpacing; - - var startY = opts.height - config.padding - config.xAxisHeight - config.legendHeight; - var endY = startY + config.xAxisLineHeight; - - context.save(); - if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) { - context.translate(opts._scrollDistance_, 0); - } - - context.beginPath(); - context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc"); - - if (opts.xAxis.disableGrid !== true) { - if (opts.xAxis.type === 'calibration') { - xAxisPoints.forEach(function (item, index) { - if (index > 0) { - context.moveTo(item - eachSpacing / 2, startY); - context.lineTo(item - eachSpacing / 2, startY + 4); - } - }); - } else { - xAxisPoints.forEach(function (item, index) { - context.moveTo(item, startY); - context.lineTo(item, endY); - }); - } - } - context.closePath(); - context.stroke(); - - // 对X轴列表做抽稀处理 - var validWidth = opts.width - 2 * config.padding - config.yAxisWidth - config.yAxisTitleWidth; - var maxXAxisListLength = Math.min(categories.length, Math.ceil(validWidth / config.fontSize / 1.5)); - var ratio = Math.ceil(categories.length / maxXAxisListLength); - - categories = categories.map(function (item, index) { - return index % ratio !== 0 ? '' : item; - }); - - if (config._xAxisTextAngle_ === 0) { - context.beginPath(); - context.setFontSize(config.fontSize); - context.setFillStyle(opts.xAxis.fontColor || '#666666'); - categories.forEach(function (item, index) { - var offset = eachSpacing / 2 - measureText(item) / 2; - context.fillText(item, xAxisPoints[index] + offset, startY + config.fontSize + 5); - }); - context.closePath(); - context.stroke(); - } else { - categories.forEach(function (item, index) { - context.save(); - context.beginPath(); - context.setFontSize(config.fontSize); - context.setFillStyle(opts.xAxis.fontColor || '#666666'); - var textWidth = measureText(item); - var offset = eachSpacing / 2 - textWidth; - - var _calRotateTranslate = calRotateTranslate(xAxisPoints[index] + eachSpacing / 2, startY + config.fontSize / 2 + 5, opts.height), - transX = _calRotateTranslate.transX, - transY = _calRotateTranslate.transY; - - context.rotate(-1 * config._xAxisTextAngle_); - context.translate(transX, transY); - context.fillText(item, xAxisPoints[index] + offset, startY + config.fontSize + 5); - context.closePath(); - context.stroke(); - context.restore(); - }); - } - - context.restore(); -} - -function drawYAxisGrid(opts, config, context) { - var spacingValid = opts.height - 2 * config.padding - config.xAxisHeight - config.legendHeight; - var eachSpacing = Math.floor(spacingValid / config.yAxisSplit); - var yAxisTotalWidth = config.yAxisWidth + config.yAxisTitleWidth; - var startX = config.padding + yAxisTotalWidth; - var endX = opts.width - config.padding; - - var points = []; - for (var i = 0; i < config.yAxisSplit; i++) { - points.push(config.padding + eachSpacing * i); - } - points.push(config.padding + eachSpacing * config.yAxisSplit + 2); - - context.beginPath(); - context.setStrokeStyle(opts.yAxis.gridColor || "#cccccc"); - context.setLineWidth(1); - points.forEach(function (item, index) { - context.moveTo(startX, item); - context.lineTo(endX, item); - }); - context.closePath(); - context.stroke(); -} - -function drawYAxis(series, opts, config, context) { - if (opts.yAxis.disabled === true) { - return; - } - - var _calYAxisData4 = calYAxisData(series, opts, config), - rangesFormat = _calYAxisData4.rangesFormat; - - var yAxisTotalWidth = config.yAxisWidth + config.yAxisTitleWidth; - - var spacingValid = opts.height - 2 * config.padding - config.xAxisHeight - config.legendHeight; - var eachSpacing = Math.floor(spacingValid / config.yAxisSplit); - var startX = config.padding + yAxisTotalWidth; - var endX = opts.width - config.padding; - var endY = opts.height - config.padding - config.xAxisHeight - config.legendHeight; - - // set YAxis background - context.setFillStyle(opts.background || '#ffffff'); - if (opts._scrollDistance_ < 0) { - context.fillRect(0, 0, startX, endY + config.xAxisHeight + 5); - } - context.fillRect(endX, 0, opts.width, endY + config.xAxisHeight + 5); - - var points = []; - for (var i = 0; i <= config.yAxisSplit; i++) { - points.push(config.padding + eachSpacing * i); - } - - context.stroke(); - context.beginPath(); - context.setFontSize(config.fontSize); - context.setFillStyle(opts.yAxis.fontColor || '#666666'); - rangesFormat.forEach(function (item, index) { - var pos = points[index] ? points[index] : endY; - context.fillText(item, config.padding + config.yAxisTitleWidth, pos + config.fontSize / 2); - }); - context.closePath(); - context.stroke(); - - if (opts.yAxis.title) { - drawYAxisTitle(opts.yAxis.title, opts, config, context); - } -} - -function drawLegend(series, opts, config, context) { - if (!opts.legend) { - return; - } - // each legend shape width 15px - // the spacing between shape and text in each legend is the `padding` - // each legend spacing is the `padding` - // legend margin top `config.padding` - - var _calLegendData = calLegendData(series, opts, config), - legendList = _calLegendData.legendList; - - var padding = 5; - var marginTop = 8; - var shapeWidth = 15; - legendList.forEach(function (itemList, listIndex) { - var width = 0; - itemList.forEach(function (item) { - item.name = item.name || 'undefined'; - width += 3 * padding + measureText(item.name) + shapeWidth; - }); - var startX = (opts.width - width) / 2 + padding; - var startY = opts.height - config.padding - config.legendHeight + listIndex * (config.fontSize + marginTop) + padding + marginTop; - - context.setFontSize(config.fontSize); - itemList.forEach(function (item) { - switch (opts.type) { - case 'line': - context.beginPath(); - context.setLineWidth(1); - context.setStrokeStyle(item.color); - context.moveTo(startX - 2, startY + 5); - context.lineTo(startX + 17, startY + 5); - context.stroke(); - context.closePath(); - context.beginPath(); - context.setLineWidth(1); - context.setStrokeStyle('#ffffff'); - context.setFillStyle(item.color); - context.moveTo(startX + 7.5, startY + 5); - context.arc(startX + 7.5, startY + 5, 4, 0, 2 * Math.PI); - context.fill(); - context.stroke(); - context.closePath(); - break; - case 'pie': - case 'ring': - context.beginPath(); - context.setFillStyle(item.color); - context.moveTo(startX + 7.5, startY + 5); - context.arc(startX + 7.5, startY + 5, 7, 0, 2 * Math.PI); - context.closePath(); - context.fill(); - break; - default: - context.beginPath(); - context.setFillStyle(item.color); - context.moveTo(startX, startY); - context.rect(startX, startY, 15, 10); - context.closePath(); - context.fill(); - } - startX += padding + shapeWidth; - context.beginPath(); - context.setFillStyle(opts.extra.legendTextColor || '#333333'); - context.fillText(item.name, startX, startY + 9); - context.closePath(); - context.stroke(); - startX += measureText(item.name) + 2 * padding; - }); - }); -} -function drawPieDataPoints(series, opts, config, context) { - var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; - - var pieOption = opts.extra.pie || {}; - series = getPieDataPoints(series, process); - var centerPosition = { - x: opts.width / 2, - y: (opts.height - config.legendHeight) / 2 - }; - var radius = Math.min(centerPosition.x - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, centerPosition.y - config.pieChartLinePadding - config.pieChartTextPadding); - if (opts.dataLabel) { - radius -= 10; - } else { - radius -= 2 * config.padding; - } - series = series.map(function (eachSeries) { - eachSeries._start_ += (pieOption.offsetAngle || 0) * Math.PI / 180; - return eachSeries; - }); - series.forEach(function (eachSeries) { - context.beginPath(); - context.setLineWidth(2); - context.setStrokeStyle('#ffffff'); - context.setFillStyle(eachSeries.color); - context.moveTo(centerPosition.x, centerPosition.y); - context.arc(centerPosition.x, centerPosition.y, radius, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI); - context.closePath(); - context.fill(); - if (opts.disablePieStroke !== true) { - context.stroke(); - } - }); - - if (opts.type === 'ring') { - var innerPieWidth = radius * 0.6; - if (typeof opts.extra.ringWidth === 'number' && opts.extra.ringWidth > 0) { - innerPieWidth = Math.max(0, radius - opts.extra.ringWidth); - } - context.beginPath(); - context.setFillStyle(opts.background || '#ffffff'); - context.moveTo(centerPosition.x, centerPosition.y); - context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI); - context.closePath(); - context.fill(); - } - - if (opts.dataLabel !== false && process === 1) { - // fix https://github.com/xiaolin3303/wx-charts/issues/132 - var valid = false; - for (var i = 0, len = series.length; i < len; i++) { - if (series[i].data > 0) { - valid = true; - break; - } - } - - if (valid) { - drawPieText(series, opts, config, context, radius, centerPosition); - } - } - - if (process === 1 && opts.type === 'ring') { - drawRingTitle(opts, config, context); - } - - return { - center: centerPosition, - radius: radius, - series: series - }; -} - -function drawRadarDataPoints(series, opts, config, context) { - var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; - - var radarOption = opts.extra.radar || {}; - var coordinateAngle = getRadarCoordinateSeries(opts.categories.length); - var centerPosition = { - x: opts.width / 2, - y: (opts.height - config.legendHeight) / 2 - }; - - var radius = Math.min(centerPosition.x - (getMaxTextListLength(opts.categories) + config.radarLabelTextMargin), centerPosition.y - config.radarLabelTextMargin); - - radius -= config.padding; - - // draw grid - context.beginPath(); - context.setLineWidth(1); - context.setStrokeStyle(radarOption.gridColor || "#cccccc"); - coordinateAngle.forEach(function (angle) { - var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition); - context.moveTo(centerPosition.x, centerPosition.y); - context.lineTo(pos.x, pos.y); - }); - context.stroke(); - context.closePath(); - - // draw split line grid - - var _loop = function _loop(i) { - var startPos = {}; - context.beginPath(); - context.setLineWidth(1); - context.setStrokeStyle(radarOption.gridColor || "#cccccc"); - coordinateAngle.forEach(function (angle, index) { - var pos = convertCoordinateOrigin(radius / config.radarGridCount * i * Math.cos(angle), radius / config.radarGridCount * i * Math.sin(angle), centerPosition); - if (index === 0) { - startPos = pos; - context.moveTo(pos.x, pos.y); - } else { - context.lineTo(pos.x, pos.y); - } - }); - context.lineTo(startPos.x, startPos.y); - context.stroke(); - context.closePath(); - }; - - for (var i = 1; i <= config.radarGridCount; i++) { - _loop(i); - } - - var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process); - radarDataPoints.forEach(function (eachSeries, seriesIndex) { - // 绘制区域数据 - context.beginPath(); - context.setFillStyle(eachSeries.color); - context.setGlobalAlpha(0.6); - eachSeries.data.forEach(function (item, index) { - if (index === 0) { - context.moveTo(item.position.x, item.position.y); - } else { - context.lineTo(item.position.x, item.position.y); - } - }); - context.closePath(); - context.fill(); - context.setGlobalAlpha(1); - - if (opts.dataPointShape !== false) { - var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length]; - var points = eachSeries.data.map(function (item) { - return item.position; - }); - drawPointShape(points, eachSeries.color, shape, context); - } - }); - // draw label text - drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context); - - return { - center: centerPosition, - radius: radius, - angleList: coordinateAngle - }; -} - -function drawCanvas(opts, context) { - context.draw(); -} - -var Timing = { - easeIn: function easeIn(pos) { - return Math.pow(pos, 3); - }, - - easeOut: function easeOut(pos) { - return Math.pow(pos - 1, 3) + 1; - }, - - easeInOut: function easeInOut(pos) { - if ((pos /= 0.5) < 1) { - return 0.5 * Math.pow(pos, 3); - } else { - return 0.5 * (Math.pow(pos - 2, 3) + 2); - } - }, - - linear: function linear(pos) { - return pos; - } -}; - -function Animation(opts) { - this.isStop = false; - opts.duration = typeof opts.duration === 'undefined' ? 1000 : opts.duration; - opts.timing = opts.timing || 'linear'; - - var delay = 17; - - var createAnimationFrame = function createAnimationFrame() { - if (typeof requestAnimationFrame !== 'undefined') { - return requestAnimationFrame; - } else if (typeof setTimeout !== 'undefined') { - return function (step, delay) { - setTimeout(function () { - var timeStamp = +new Date(); - step(timeStamp); - }, delay); - }; - } else { - return function (step) { - step(null); - }; - } - }; - var animationFrame = createAnimationFrame(); - var startTimeStamp = null; - var _step = function step(timestamp) { - if (timestamp === null || this.isStop === true) { - opts.onProcess && opts.onProcess(1); - opts.onAnimationFinish && opts.onAnimationFinish(); - return; - } - if (startTimeStamp === null) { - startTimeStamp = timestamp; - } - if (timestamp - startTimeStamp < opts.duration) { - var process = (timestamp - startTimeStamp) / opts.duration; - var timingFunction = Timing[opts.timing]; - process = timingFunction(process); - opts.onProcess && opts.onProcess(process); - animationFrame(_step, delay); - } else { - opts.onProcess && opts.onProcess(1); - opts.onAnimationFinish && opts.onAnimationFinish(); - } - }; - _step = _step.bind(this); - - animationFrame(_step, delay); -} - -// stop animation immediately -// and tigger onAnimationFinish -Animation.prototype.stop = function () { - this.isStop = true; -}; - -function drawCharts(type, opts, config, context) { - var _this = this; - - var series = opts.series; - var categories = opts.categories; - series = fillSeriesColor(series, config); - - var _calLegendData = calLegendData(series, opts, config), - legendHeight = _calLegendData.legendHeight; - - config.legendHeight = legendHeight; - - var _calYAxisData = calYAxisData(series, opts, config), - yAxisWidth = _calYAxisData.yAxisWidth; - - config.yAxisWidth = yAxisWidth; - if (categories && categories.length) { - var _calCategoriesData = calCategoriesData(categories, opts, config), - xAxisHeight = _calCategoriesData.xAxisHeight, - angle = _calCategoriesData.angle; - - config.xAxisHeight = xAxisHeight; - config._xAxisTextAngle_ = angle; - } - if (type === 'pie' || type === 'ring') { - config._pieTextMaxLength_ = opts.dataLabel === false ? 0 : getPieTextMaxLength(series); - } - - var duration = opts.animation ? 1000 : 0; - this.animationInstance && this.animationInstance.stop(); - switch (type) { - case 'line': - this.animationInstance = new Animation({ - timing: 'easeIn', - duration: duration, - onProcess: function onProcess(process) { - drawYAxisGrid(opts, config, context); - - var _drawLineDataPoints = drawLineDataPoints(series, opts, config, context, process), - xAxisPoints = _drawLineDataPoints.xAxisPoints, - calPoints = _drawLineDataPoints.calPoints, - eachSpacing = _drawLineDataPoints.eachSpacing; - - _this.chartData.xAxisPoints = xAxisPoints; - _this.chartData.calPoints = calPoints; - _this.chartData.eachSpacing = eachSpacing; - drawXAxis(categories, opts, config, context); - drawLegend(opts.series, opts, config, context); - drawYAxis(series, opts, config, context); - drawToolTipBridge(opts, config, context, process); - drawCanvas(opts, context); - }, - onAnimationFinish: function onAnimationFinish() { - _this.event.trigger('renderComplete'); - } - }); - break; - case 'column': - this.animationInstance = new Animation({ - timing: 'easeIn', - duration: duration, - onProcess: function onProcess(process) { - drawYAxisGrid(opts, config, context); - - var _drawColumnDataPoints = drawColumnDataPoints(series, opts, config, context, process), - xAxisPoints = _drawColumnDataPoints.xAxisPoints, - eachSpacing = _drawColumnDataPoints.eachSpacing; - - _this.chartData.xAxisPoints = xAxisPoints; - _this.chartData.eachSpacing = eachSpacing; - drawXAxis(categories, opts, config, context); - drawLegend(opts.series, opts, config, context); - drawYAxis(series, opts, config, context); - drawCanvas(opts, context); - }, - onAnimationFinish: function onAnimationFinish() { - _this.event.trigger('renderComplete'); - } - }); - break; - case 'area': - this.animationInstance = new Animation({ - timing: 'easeIn', - duration: duration, - onProcess: function onProcess(process) { - drawYAxisGrid(opts, config, context); - - var _drawAreaDataPoints = drawAreaDataPoints(series, opts, config, context, process), - xAxisPoints = _drawAreaDataPoints.xAxisPoints, - calPoints = _drawAreaDataPoints.calPoints, - eachSpacing = _drawAreaDataPoints.eachSpacing; - - _this.chartData.xAxisPoints = xAxisPoints; - _this.chartData.calPoints = calPoints; - _this.chartData.eachSpacing = eachSpacing; - drawXAxis(categories, opts, config, context); - drawLegend(opts.series, opts, config, context); - drawYAxis(series, opts, config, context); - drawToolTipBridge(opts, config, context, process); - drawCanvas(opts, context); - }, - onAnimationFinish: function onAnimationFinish() { - _this.event.trigger('renderComplete'); - } - }); - break; - case 'ring': - case 'pie': - this.animationInstance = new Animation({ - timing: 'easeInOut', - duration: duration, - onProcess: function onProcess(process) { - _this.chartData.pieData = drawPieDataPoints(series, opts, config, context, process); - drawLegend(opts.series, opts, config, context); - drawCanvas(opts, context); - }, - onAnimationFinish: function onAnimationFinish() { - _this.event.trigger('renderComplete'); - } - }); - break; - case 'radar': - this.animationInstance = new Animation({ - timing: 'easeInOut', - duration: duration, - onProcess: function onProcess(process) { - _this.chartData.radarData = drawRadarDataPoints(series, opts, config, context, process); - drawLegend(opts.series, opts, config, context); - drawCanvas(opts, context); - }, - onAnimationFinish: function onAnimationFinish() { - _this.event.trigger('renderComplete'); - } - }); - break; - } -} - -// simple event implement - -function Event() { - this.events = {}; -} - -Event.prototype.addEventListener = function (type, listener) { - this.events[type] = this.events[type] || []; - this.events[type].push(listener); -}; - -Event.prototype.trigger = function () { - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - var type = args[0]; - var params = args.slice(1); - if (!!this.events[type]) { - this.events[type].forEach(function (listener) { - try { - listener.apply(null, params); - } catch (e) { - console.error(e); - } - }); - } -}; - -var Charts = function Charts(opts) { - opts.title = opts.title || {}; - opts.subtitle = opts.subtitle || {}; - opts.yAxis = opts.yAxis || {}; - opts.xAxis = opts.xAxis || {}; - opts.extra = opts.extra || {}; - opts.legend = opts.legend === false ? false : true; - opts.animation = opts.animation === false ? false : true; - var config$$1 = assign({}, config); - config$$1.yAxisTitleWidth = opts.yAxis.disabled !== true && opts.yAxis.title ? config$$1.yAxisTitleWidth : 0; - config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : config$$1.pieChartLinePadding; - config$$1.pieChartTextPadding = opts.dataLabel === false ? 0 : config$$1.pieChartTextPadding; - - this.opts = opts; - this.config = config$$1; - this.context = wx.createCanvasContext(opts.canvasId); - // store calcuated chart data - // such as chart point coordinate - this.chartData = {}; - this.event = new Event(); - this.scrollOption = { - currentOffset: 0, - startTouchX: 0, - distance: 0 - }; - - drawCharts.call(this, opts.type, opts, config$$1, this.context); -}; - -Charts.prototype.updateData = function () { - var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - this.opts.series = data.series || this.opts.series; - this.opts.categories = data.categories || this.opts.categories; - - this.opts.title = assign({}, this.opts.title, data.title || {}); - this.opts.subtitle = assign({}, this.opts.subtitle, data.subtitle || {}); - - drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); -}; - -Charts.prototype.stopAnimation = function () { - this.animationInstance && this.animationInstance.stop(); -}; - -Charts.prototype.addEventListener = function (type, listener) { - this.event.addEventListener(type, listener); -}; - -Charts.prototype.getCurrentDataIndex = function (e) { - var touches = e.touches && e.touches.length ? e.touches : e.changedTouches; - if (touches && touches.length) { - var _touches$ = touches[0], - x = _touches$.x, - y = _touches$.y; - - if (this.opts.type === 'pie' || this.opts.type === 'ring') { - return findPieChartCurrentIndex({ x: x, y: y }, this.chartData.pieData); - } else if (this.opts.type === 'radar') { - return findRadarChartCurrentIndex({ x: x, y: y }, this.chartData.radarData, this.opts.categories.length); - } else { - return findCurrentIndex({ x: x, y: y }, this.chartData.xAxisPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset)); - } - } - return -1; -}; - -Charts.prototype.showToolTip = function (e) { - var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - if (this.opts.type === 'line' || this.opts.type === 'area') { - var index = this.getCurrentDataIndex(e); - var currentOffset = this.scrollOption.currentOffset; - - var opts = assign({}, this.opts, { - _scrollDistance_: currentOffset, - animation: false - }); - if (index > -1) { - var seriesData = getSeriesDataItem(this.opts.series, index); - if (seriesData.length !== 0) { - var _getToolTipData = getToolTipData(seriesData, this.chartData.calPoints, index, this.opts.categories, option), - textList = _getToolTipData.textList, - offset = _getToolTipData.offset; - - opts.tooltip = { - textList: textList, - offset: offset, - option: option - }; - } - } - drawCharts.call(this, opts.type, opts, this.config, this.context); - } -}; - -Charts.prototype.scrollStart = function (e) { - if (e.touches[0] && this.opts.enableScroll === true) { - this.scrollOption.startTouchX = e.touches[0].x; - } -}; - -Charts.prototype.scroll = function (e) { - // TODO throtting... - if (e.touches[0] && this.opts.enableScroll === true) { - var _distance = e.touches[0].x - this.scrollOption.startTouchX; - var currentOffset = this.scrollOption.currentOffset; - - var validDistance = calValidDistance(currentOffset + _distance, this.chartData, this.config, this.opts); - - this.scrollOption.distance = _distance = validDistance - currentOffset; - var opts = assign({}, this.opts, { - _scrollDistance_: currentOffset + _distance, - animation: false - }); - - drawCharts.call(this, opts.type, opts, this.config, this.context); - } -}; - -Charts.prototype.scrollEnd = function (e) { - if (this.opts.enableScroll === true) { - var _scrollOption = this.scrollOption, - currentOffset = _scrollOption.currentOffset, - distance = _scrollOption.distance; - - this.scrollOption.currentOffset = currentOffset + distance; - this.scrollOption.distance = 0; - } -}; - -module.exports = Charts; -- Gitee From de7a9394ff2905fc33657ba8b643912b8b688fa7 Mon Sep 17 00:00:00 2001 From: "2689725568@qq.com" Date: Wed, 23 Oct 2019 21:44:17 +0800 Subject: [PATCH 11/14] =?UTF-8?q?feat:=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.json | 3 +- pages/domoTest/wxchartTest/wxChatTest.js | 41 +++++--- pages/domoTest/wxchartTest/wxChatTest.wxml | 2 +- .../bookkeepingdetail/bookkeepingdetail.wxml | 6 +- pages/me/me.js | 10 +- pages/me/me.wxml | 9 +- pages/me/myBill/myBill.js | 99 +++++++++++++++++++ pages/me/myBill/myBill.json | 3 + pages/me/myBill/myBill.wxml | 13 +++ pages/me/myBill/myBill.wxss | 44 +++++++++ utils/api.js | 4 +- utils/wxcharts.js | 8 +- 12 files changed, 217 insertions(+), 25 deletions(-) create mode 100644 pages/me/myBill/myBill.js create mode 100644 pages/me/myBill/myBill.json create mode 100644 pages/me/myBill/myBill.wxml create mode 100644 pages/me/myBill/myBill.wxss diff --git a/app.json b/app.json index 1f0f436..3ccbbde 100644 --- a/app.json +++ b/app.json @@ -1,7 +1,8 @@ { "pages": [ - "pages/domoTest/wxchartTest/wxChatTest", + "pages/me/myBill/myBill", "pages/index/authoriztion/authoriztion", + "pages/domoTest/wxchartTest/wxChatTest", "pages/domoTest/kyhbTest/kyhbTest", "pages/domoTest/uploadTest/uploadTest", "pages/domoTest/regionTest/test", diff --git a/pages/domoTest/wxchartTest/wxChatTest.js b/pages/domoTest/wxchartTest/wxChatTest.js index 75dcd15..18960cd 100644 --- a/pages/domoTest/wxchartTest/wxChatTest.js +++ b/pages/domoTest/wxchartTest/wxChatTest.js @@ -1,4 +1,6 @@ let Charts = require('../../../utils/wxcharts.js'); //引入wxChart文件 +let API = require('../../../utils/api.js'); +let AJAX = require('../../../utils/ajax.js'); var app = getApp(); var lineChart = null; Page({ @@ -7,7 +9,9 @@ Page({ * 页面的初始数据 */ data: { - date: '' + date: '', + categories: [], + timeData:[] }, /** @@ -16,13 +20,23 @@ Page({ onLoad: function (options) { //获取系统当前时间 let that = this - var myDate = new Date(); - var date = myDate.toLocaleDateString(); - console.log(date) - that.setData({ - date: date, //选择时间 + var myDate = new Date().getTime(); + // 获取数据信息 + let requestUrl = API.api.assetsDetails + '/35/1568922718000' + AJAX.getRequest(requestUrl).then(res => { + let resData = res.data + that.setData({ + categories: resData.categories, + pays: resData.pays, + incomes: resData.incomes + }) + that.createChart(resData.pays) }) + }, + + createChart: function (letData) { + let that = this // 折线图 var windowWidth = '', windowHeight = ''; //定义宽高 try { @@ -37,16 +51,17 @@ Page({ canvasId: 'lineCanvas', type: 'line', animation: true, //是否开启动画 - categories: ['06', '07', '08', '09', '10', '11', '12'], + categories: that.data.categories, series: [{ - name: '月教师好评情况', - data: [15, 20, 45, 37, 40, 80, 25], + name: '支出情况', + data: letData, format: function (val) { return val.toFixed(2) + '分'; } }], xAxis: { //是否隐藏x轴分割线 disableGrid: true, + type: 'calibration:' }, yAxis: { title: '教师好评总分数', @@ -56,23 +71,23 @@ Page({ }, width: windowWidth, //图表展示内容宽度 height: windowHeight, //图表展示内容高度 - dataLabel: true, //是否在图表上直接显示数据 + dataLabel: false, //是否在图表上直接显示数据 dataPointShape: true, //是否在图标上显示数据点标志 extra: { lineStyle: 'curve' //曲线 }, }); }, + + /** * 点击数据点显示对应的数据 */ - touchHandler: function (e) { + touchHandler: function () { lineChart.showToolTip(e, { - // background: '#7cb5ec', format: function (item, category) { return category + ' ' + item.name + ':' + item.data } }); }, - }) \ No newline at end of file diff --git a/pages/domoTest/wxchartTest/wxChatTest.wxml b/pages/domoTest/wxchartTest/wxChatTest.wxml index d11639d..2e3ccae 100644 --- a/pages/domoTest/wxchartTest/wxChatTest.wxml +++ b/pages/domoTest/wxchartTest/wxChatTest.wxml @@ -1,8 +1,8 @@ +111 - \ No newline at end of file diff --git a/pages/index/bookkeepingdetail/bookkeepingdetail.wxml b/pages/index/bookkeepingdetail/bookkeepingdetail.wxml index cd3743b..e634f09 100644 --- a/pages/index/bookkeepingdetail/bookkeepingdetail.wxml +++ b/pages/index/bookkeepingdetail/bookkeepingdetail.wxml @@ -18,14 +18,14 @@ 消费记录 - + - + diff --git a/pages/me/me.js b/pages/me/me.js index c63f609..d89d6a3 100644 --- a/pages/me/me.js +++ b/pages/me/me.js @@ -9,8 +9,6 @@ Page({ * 页面的初始数据 */ data: { - avatarUrl: wx.getStorageSync('avatarUrl'), - nickName: wx.getStorageSync('nickName'), userInfo: {}, tempUserInfo: {}, // 显示用户修改信息 @@ -49,6 +47,14 @@ Page({ }) }) }, + /** + * 跳转到我的账单 + */ + gotoMyBill:function() { + wx.navigateTo({ + url: '/pages/me/myBill/myBill?userid=' + wx.getStorageSync('userId') + }) + }, updateUserInfo: function (userId,userInfo) { let requestData = {} requestData.nickName = userInfo.nickName diff --git a/pages/me/me.wxml b/pages/me/me.wxml index d1997f9..aaab974 100644 --- a/pages/me/me.wxml +++ b/pages/me/me.wxml @@ -12,10 +12,17 @@ {{userInfo.monthBudget}} + + + 账单 + + - + + + 消费金额 - {{bookkeepingObj.moneyView}} + {{bookkeepingObj.moneyView}} 元 - 消费地点 {{bookkeepingObj.address}} + 消费地点 {{bookkeepingObj.address}}{{bookkeepingObj.addressDetail}} @@ -18,14 +18,12 @@ 消费记录 - - - + + + + + - @@ -49,7 +47,7 @@ 消费地点 {{bookkeepingObj.address}} - + @@ -57,19 +55,17 @@ 消费记录 - - - + + - - - + + 备注 - diff --git a/pages/index/index.js b/pages/index/index.js index e6fd5e7..3827443 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -53,7 +53,7 @@ Page({ let bookkeepingId = e.currentTarget.dataset.id console.log(`当前获取到的id是:` + bookkeepingId) wx.navigateTo({ - url: '/pages/index/bookkeepingdetail/bookkeepingdetail?bookkeepingid=' + bookkeepingId + url: '/pages/index/bookkeepingdetail/bookkeepingdetail?form=index&bookkeepingid=' + bookkeepingId }) }, diff --git a/pages/me/myBill/myBill.js b/pages/me/myBill/myBill.js index 690425e..bf0d816 100644 --- a/pages/me/myBill/myBill.js +++ b/pages/me/myBill/myBill.js @@ -5,7 +5,9 @@ const API = require('../../../utils/api.js'); const AJAX = require('../../../utils/ajax.js'); const DateUtils = require('../../../utils/date.js') - +/** + * 初始化图表 + */ function setOption(chart, xdata, ydata, titleName) { const option = { title: { @@ -23,6 +25,10 @@ function setOption(chart, xdata, ydata, titleName) { grid: { show: false }, + tooltip: { + show: true, + trigger: 'axis' + }, xAxis: { type: 'category', data: xdata, //x轴上的数据是动态的,所以我作为参数传进来 @@ -37,12 +43,13 @@ function setOption(chart, xdata, ydata, titleName) { type: 'value', axisLabel: { formatter: function(value) { - var val = value / 100 + '元'; + var val = value + '元'; return val } } }, series: [{ + name: '今日收入', type: 'line', data: ydata, //y轴上的数据也是动态的,也作为参数传进来 symbol: 'none', @@ -53,6 +60,63 @@ function setOption(chart, xdata, ydata, titleName) { }; chart.setOption(option) } +/** + * 初始化图文 + */ +function setOptionPie(chart, data, titleName) { + var option = { + title: { + text: titleName, + left: 'center', + textStyle: { + fontSize: 16, + color: '#000000', + }, + top: '10rpx' + }, + backgroundColor: "#ffffff", + color: ["#37A2DA", "#32C5E9", "#67E0E3", "#91F2DE", "#FFDB5C", "#FF9F7F"], + series: [{ + label: { + normal: { + fontSize: 14 + } + }, + type: 'pie', + center: ['50%', '50%'], + radius: [0, '60%'], + data: data, + // itemStyle: { + // emphasis: { + // shadowBlur: 10, + // shadowOffsetX: 0, + // shadowColor: 'rgba(0, 2, 2, 0.3)' + // } + // } + itemStyle: { + normal: { + label: { + show: true, + position: 'inner', + formatter: function (params) { + return (params.percent - 0).toFixed(0) + '%' + } + }, + labelLine: { + show: false + } + }, + emphasis: { + label: { + show: true, + formatter: "{b}\n{d}%" + } + } + } + }] + }; + chart.setOption(option) +} Page({ @@ -78,7 +142,14 @@ Page({ // 收入分类所占比重 consumeIncomeProportion: [], // 支出分类所占比重 - consumePayProportion: [] + consumePayProportion: [], + // 当前用户消费有效日期 + billObj: { + startTime: '2019-09-27', + endTime: '2019-10-27' + }, + // 支出分类标题 + chartTitleType: '收入分类', }, /** @@ -146,9 +217,11 @@ Page({ console.log(e.currentTarget.dataset.type) let isPayShow = e.currentTarget.dataset.type === 'income' ? true : false let chartTitle = e.currentTarget.dataset.type === 'income' ? '每日收入' : '每日支出' + let chartTitleType = e.currentTarget.dataset.type === 'income' ? '收入分类' : '支出分类' this.setData({ isPayShow: isPayShow, - chartTitle: chartTitle + chartTitle: chartTitle, + chartTitleType: chartTitleType, }) this.initCanvas() }, @@ -163,7 +236,7 @@ Page({ // 请求数据信息 this.getTimeResult(new Date(e.detail.value).getTime()) }, - initCanvas: function(chartTitle) { //初始化第一个图表 + initCanvas: function() { //初始化第一个图表 this.lineComponent.init((canvas, width, height) => { const chart = echarts.init(canvas, null, { width: width, @@ -179,8 +252,8 @@ Page({ width: width, height: height }); - let yData = this.data.chartTitle === '每日收入' ? this.data.incomes : this.data.pays - setOption(chart, this.data.categories, yData, this.data.chartTitle) + let data = this.data.chartTitleType === '收入分类' ? this.data.consumeIncomeProportion : this.data.consumePayProportion + setOptionPie(chart, data, this.data.chartTitleType) this.chart = chart; return chart; }); @@ -189,16 +262,20 @@ Page({ getTimeResult: function(valueTime) { var _this = this; // let resultUrl = API.api.assetsDetails + '/' + wx.getStorageSync('userId') +'/' + valueTime; - let resultUrl = API.api.assetsDetails + '/35/' + valueTime; + let resultUrl = API.api.assetsDetails + '/' + wx.getStorageSync('userId') + '/' + valueTime; AJAX.getRequest(resultUrl).then(response => { console.log(response.data) let resData = response.data + let billObj = {} + billObj.startTime = resData.billStartTime + billObj.endTime = resData.billEndTime _this.setData({ categories: resData.categories, incomes: resData.incomes, pays: resData.pays, consumeIncomeProportion: resData.consumeIncomeProportion, - consumePayProportion: resData.consumePayProportion + consumePayProportion: resData.consumePayProportion, + billObj: billObj, }) // 渲染图表信息 _this.initCanvas() diff --git a/pages/me/myBill/myBill.wxml b/pages/me/myBill/myBill.wxml index 6d42db9..41cbf9c 100644 --- a/pages/me/myBill/myBill.wxml +++ b/pages/me/myBill/myBill.wxml @@ -1,6 +1,6 @@ - - + + ======== {{date}} ======== diff --git a/pages/me/myBill/myBill.wxss b/pages/me/myBill/myBill.wxss index b418943..c720666 100644 --- a/pages/me/myBill/myBill.wxss +++ b/pages/me/myBill/myBill.wxss @@ -55,8 +55,12 @@ } #mychart-pie { position: absolute; - top: 55%; + top: 57%; height: 50%; left: 0; right: 0; +} +.picker { + text-align: center; + padding: 16rpx 0rpx; } \ No newline at end of file diff --git a/utils/api.js b/utils/api.js index e290123..b33363b 100644 --- a/utils/api.js +++ b/utils/api.js @@ -4,8 +4,8 @@ let api = { // TODO:配置接口文档信息 -// api.baseUrl = 'http://192.168.1.102:12000'; -api.baseUrl = 'https://be.yangyoki.top:12000'; +api.baseUrl = 'http://192.168.1.103:12000'; +// api.baseUrl = 'https://be.yangyoki.top:12000'; api.imageHostDowm = 'https://be.yangyoki.top:12000'; api.imageHost = 'https://be.yangyoki.top:12000/'; diff --git a/utils/qqMapWxUtil.js b/utils/qqMapWxUtil.js index 2d32ed5..d8a5d1d 100644 --- a/utils/qqMapWxUtil.js +++ b/utils/qqMapWxUtil.js @@ -28,6 +28,7 @@ function reverseGeocoder(location) { let province = skdRes.result.address_component.province let city = skdRes.result.address_component.city let district = skdRes.result.address_component.district + let street_number = skdRes.result.address_component.street_number region.push(province) region.push(city) region.push(district) @@ -35,7 +36,8 @@ function reverseGeocoder(location) { let responseObj = {}; responseObj.markers = markers; responseObj.region = region; - responseObj.address = skdRes.result.address; + responseObj.address = province + city + district; + responseObj.addressDetail = street_number; // 如业务需求可继续补充数据 resolve(responseObj); // that.setData({ -- Gitee From 0b0eb15bec11477542fe0404ee5f61509d0ea195 Mon Sep 17 00:00:00 2001 From: "2689725568@qq.com" Date: Thu, 31 Oct 2019 00:45:41 +0800 Subject: [PATCH 13/14] =?UTF-8?q?feat:=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.json | 13 +- app.wxss | 8 +- pages/consume/consume.js | 53 +++-- pages/consume/consume.json | 15 +- pages/consume/consume.wxml | 63 ++++-- pages/consume/consume.wxss | 62 +++++- pages/domoTest/ec-canvas/ec-canvas.js | 135 ------------- pages/domoTest/ec-canvas/ec-canvas.json | 4 - pages/domoTest/ec-canvas/ec-canvas.wxml | 4 - pages/domoTest/ec-canvas/ec-canvas.wxss | 4 - pages/domoTest/ec-canvas/echarts.js | 22 --- pages/domoTest/ec-canvas/wx-canvas.js | 97 --------- pages/domoTest/getFormId/getformId.js | 71 ------- pages/domoTest/getFormId/getformId.json | 3 - pages/domoTest/getFormId/getformId.wxml | 4 - pages/domoTest/getFormId/getformId.wxss | 1 - pages/domoTest/kyhbTest/kyhbTest.js | 160 --------------- pages/domoTest/kyhbTest/kyhbTest.json | 3 - pages/domoTest/kyhbTest/kyhbTest.wxml | 28 --- pages/domoTest/kyhbTest/kyhbTest.wxss | 56 ------ pages/domoTest/regionTest/test.js | 187 ------------------ pages/domoTest/regionTest/test.json | 3 - pages/domoTest/regionTest/test.wxml | 22 --- pages/domoTest/regionTest/test.wxss | 1 - pages/domoTest/uploadTest/uploadTest.js | 115 ----------- pages/domoTest/uploadTest/uploadTest.json | 3 - pages/domoTest/uploadTest/uploadTest.wxml | 6 - pages/domoTest/uploadTest/uploadTest.wxss | 1 - pages/domoTest/wxchartTest/wxChatTest.js | 107 ---------- pages/domoTest/wxchartTest/wxChatTest.wxml | 4 - pages/domoTest/wxchartTest/wxChatTest.wxss | 19 -- pages/index/address/address.js | 13 +- .../bookkeepingdetail/bookkeepingdetail.js | 13 +- .../bookkeepingdetail/bookkeepingdetail.wxml | 2 +- pages/me/me.js | 12 ++ pages/me/me.json | 11 +- pages/me/me.wxml | 40 +++- pages/me/me.wxss | 4 +- project.config.json | 3 +- template/dist/action-sheet/index.js | 47 +++++ template/dist/action-sheet/index.json | 8 + template/dist/action-sheet/index.wxml | 23 +++ template/dist/action-sheet/index.wxss | 1 + template/dist/alert/index.js | 37 ++++ template/dist/alert/index.json | 7 + template/dist/alert/index.wxml | 15 ++ template/dist/alert/index.wxss | 1 + template/dist/avatar/index.js | 20 ++ template/dist/avatar/index.json | 3 + template/dist/avatar/index.wxml | 4 + template/dist/avatar/index.wxss | 1 + template/dist/badge/index.js | 29 +++ template/dist/badge/index.json | 3 + template/dist/badge/index.wxml | 5 + template/dist/badge/index.wxss | 1 + template/dist/base/index.js | 37 ++++ template/dist/button/index.js | 80 ++++++++ template/dist/button/index.json | 3 + template/dist/button/index.wxml | 20 ++ template/dist/button/index.wxss | 1 + template/dist/card/index.js | 26 +++ template/dist/card/index.json | 3 + template/dist/card/index.wxml | 11 ++ template/dist/card/index.wxss | 1 + template/dist/cell-group/index.js | 33 ++++ template/dist/cell-group/index.json | 3 + template/dist/cell-group/index.wxml | 3 + template/dist/cell/index.js | 86 ++++++++ template/dist/cell/index.json | 3 + template/dist/cell/index.wxml | 16 ++ template/dist/cell/index.wxss | 1 + template/dist/checkbox-group/index.js | 38 ++++ template/dist/checkbox-group/index.json | 7 + template/dist/checkbox-group/index.wxml | 3 + template/dist/checkbox-group/index.wxss | 0 template/dist/checkbox/index.js | 56 ++++++ template/dist/checkbox/index.json | 7 + template/dist/checkbox/index.wxml | 8 + template/dist/checkbox/index.wxss | 1 + template/dist/col/index.js | 20 ++ template/dist/col/index.json | 3 + template/dist/col/index.wxml | 1 + template/dist/col/index.wxss | 1 + template/dist/collapse-item/index.js | 46 +++++ .../dist/collapse-item/index.json | 6 +- template/dist/collapse-item/index.wxml | 9 + template/dist/collapse-item/index.wxss | 1 + template/dist/collapse/index.js | 31 +++ template/dist/collapse/index.json | 3 + template/dist/collapse/index.wxml | 4 + template/dist/collapse/index.wxss | 0 template/dist/count-down/index.js | 90 +++++++++ template/dist/count-down/index.json | 4 + template/dist/count-down/index.wxml | 4 + template/dist/count-down/index.wxss | 0 template/dist/divider/index.js | 25 +++ template/dist/divider/index.json | 3 + template/dist/divider/index.wxml | 19 ++ template/dist/divider/index.wxss | 1 + template/dist/drawer/index.js | 33 ++++ template/dist/drawer/index.json | 3 + template/dist/drawer/index.wxml | 6 + template/dist/drawer/index.wxss | 1 + template/dist/grid-icon/index.js | 10 + template/dist/grid-icon/index.json | 3 + template/dist/grid-icon/index.wxml | 1 + template/dist/grid-icon/index.wxss | 1 + template/dist/grid-item/index.js | 16 ++ template/dist/grid-item/index.json | 3 + template/dist/grid-item/index.wxml | 1 + template/dist/grid-item/index.wxss | 1 + template/dist/grid-label/index.js | 10 + template/dist/grid-label/index.json | 3 + template/dist/grid-label/index.wxml | 1 + template/dist/grid-label/index.wxss | 1 + template/dist/grid/index.js | 50 +++++ template/dist/grid/index.json | 3 + template/dist/grid/index.wxml | 1 + template/dist/grid/index.wxss | 1 + template/dist/icon/index.js | 22 +++ template/dist/icon/index.json | 3 + template/dist/icon/index.wxml | 1 + template/dist/icon/index.wxss | 1 + template/dist/index-item/index.js | 32 +++ template/dist/index-item/index.json | 3 + template/dist/index-item/index.wxml | 11 ++ template/dist/index-item/index.wxss | 1 + template/dist/index/index.js | 158 +++++++++++++++ template/dist/index/index.json | 3 + template/dist/index/index.wxml | 38 ++++ template/dist/index/index.wxss | 1 + template/dist/input-number/index.js | 101 ++++++++++ template/dist/input-number/index.json | 3 + template/dist/input-number/index.wxml | 5 + template/dist/input-number/index.wxss | 1 + template/dist/input/index.js | 61 ++++++ template/dist/input/index.json | 3 + template/dist/input/index.wxml | 31 +++ template/dist/input/index.wxss | 1 + template/dist/load-more/index.js | 14 ++ template/dist/load-more/index.json | 3 + template/dist/load-more/index.wxml | 8 + template/dist/load-more/index.wxss | 1 + template/dist/message/index.js | 45 +++++ template/dist/message/index.json | 3 + template/dist/message/index.wxml | 3 + template/dist/message/index.wxss | 1 + template/dist/modal/index.js | 54 +++++ template/dist/modal/index.json | 9 + template/dist/modal/index.wxml | 40 ++++ template/dist/modal/index.wxss | 1 + template/dist/notice-bar/index.js | 112 +++++++++++ template/dist/notice-bar/index.json | 7 + template/dist/notice-bar/index.wxml | 9 + template/dist/notice-bar/index.wxss | 1 + template/dist/page/index.js | 42 ++++ template/dist/page/index.json | 7 + template/dist/page/index.wxml | 14 ++ template/dist/page/index.wxss | 1 + template/dist/panel/index.js | 19 ++ template/dist/panel/index.json | 3 + template/dist/panel/index.wxml | 4 + template/dist/panel/index.wxss | 1 + template/dist/progress/index.js | 23 +++ template/dist/progress/index.json | 3 + template/dist/progress/index.wxml | 10 + template/dist/progress/index.wxss | 1 + template/dist/radio-group/index.js | 38 ++++ template/dist/radio-group/index.json | 7 + template/dist/radio-group/index.wxml | 3 + template/dist/radio-group/index.wxss | 0 template/dist/radio/index.js | 56 ++++++ template/dist/radio/index.json | 7 + template/dist/radio/index.wxml | 8 + template/dist/radio/index.wxss | 1 + template/dist/rate/index.js | 69 +++++++ template/dist/rate/index.json | 6 + template/dist/rate/index.wxml | 23 +++ template/dist/rate/index.wxss | 1 + template/dist/row/index.js | 9 + template/dist/row/index.json | 3 + template/dist/row/index.wxml | 1 + template/dist/row/index.wxss | 1 + template/dist/slide/index.js | 15 ++ template/dist/slide/index.json | 8 + template/dist/slide/index.wxml | 4 + template/dist/slide/index.wxss | 0 template/dist/spin/index.js | 23 +++ template/dist/spin/index.json | 3 + template/dist/spin/index.wxml | 6 + template/dist/spin/index.wxss | 1 + template/dist/step/index.js | 52 +++++ template/dist/step/index.json | 7 + template/dist/step/index.wxml | 70 +++++++ template/dist/step/index.wxss | 1 + template/dist/steps/index.js | 50 +++++ template/dist/steps/index.json | 3 + template/dist/steps/index.wxml | 3 + template/dist/steps/index.wxss | 1 + template/dist/sticky-item/index.js | 40 ++++ template/dist/sticky-item/index.json | 3 + template/dist/sticky-item/index.wxml | 10 + template/dist/sticky-item/index.wxss | 1 + template/dist/sticky/index.js | 63 ++++++ template/dist/sticky/index.json | 3 + template/dist/sticky/index.wxml | 3 + template/dist/sticky/index.wxss | 0 template/dist/sticky/tab-bar-item/index.js | 62 ++++++ template/dist/sticky/tab-bar-item/index.json | 8 + template/dist/sticky/tab-bar-item/index.wxml | 10 + template/dist/sticky/tab-bar-item/index.wxss | 1 + template/dist/swipeout/index.js | 161 +++++++++++++++ template/dist/swipeout/index.json | 7 + template/dist/swipeout/index.wxml | 39 ++++ template/dist/swipeout/index.wxss | 1 + template/dist/switch/index.js | 38 ++++ template/dist/switch/index.json | 3 + template/dist/switch/index.wxml | 26 +++ template/dist/switch/index.wxss | 1 + template/dist/tab-bar/index.js | 66 +++++++ template/dist/tab-bar/index.json | 3 + template/dist/tab-bar/index.wxml | 6 + template/dist/tab-bar/index.wxss | 1 + template/dist/tab/index.js | 50 +++++ template/dist/tab/index.json | 7 + template/dist/tab/index.wxml | 9 + template/dist/tab/index.wxss | 1 + template/dist/tabs/index.js | 56 ++++++ template/dist/tabs/index.json | 3 + template/dist/tabs/index.wxml | 2 + template/dist/tabs/index.wxss | 1 + template/dist/tag/index.js | 42 ++++ template/dist/tag/index.json | 3 + template/dist/tag/index.wxml | 27 +++ template/dist/tag/index.wxss | 1 + template/dist/toast/index.js | 48 +++++ template/dist/toast/index.json | 7 + template/dist/toast/index.wxml | 16 ++ template/dist/toast/index.wxss | 1 + utils/ajax.js | 68 +------ utils/api.js | 4 +- 241 files changed, 3557 insertions(+), 1188 deletions(-) delete mode 100644 pages/domoTest/ec-canvas/ec-canvas.js delete mode 100644 pages/domoTest/ec-canvas/ec-canvas.json delete mode 100644 pages/domoTest/ec-canvas/ec-canvas.wxml delete mode 100644 pages/domoTest/ec-canvas/ec-canvas.wxss delete mode 100644 pages/domoTest/ec-canvas/echarts.js delete mode 100644 pages/domoTest/ec-canvas/wx-canvas.js delete mode 100644 pages/domoTest/getFormId/getformId.js delete mode 100644 pages/domoTest/getFormId/getformId.json delete mode 100644 pages/domoTest/getFormId/getformId.wxml delete mode 100644 pages/domoTest/getFormId/getformId.wxss delete mode 100644 pages/domoTest/kyhbTest/kyhbTest.js delete mode 100644 pages/domoTest/kyhbTest/kyhbTest.json delete mode 100644 pages/domoTest/kyhbTest/kyhbTest.wxml delete mode 100644 pages/domoTest/kyhbTest/kyhbTest.wxss delete mode 100644 pages/domoTest/regionTest/test.js delete mode 100644 pages/domoTest/regionTest/test.json delete mode 100644 pages/domoTest/regionTest/test.wxml delete mode 100644 pages/domoTest/regionTest/test.wxss delete mode 100644 pages/domoTest/uploadTest/uploadTest.js delete mode 100644 pages/domoTest/uploadTest/uploadTest.json delete mode 100644 pages/domoTest/uploadTest/uploadTest.wxml delete mode 100644 pages/domoTest/uploadTest/uploadTest.wxss delete mode 100644 pages/domoTest/wxchartTest/wxChatTest.js delete mode 100644 pages/domoTest/wxchartTest/wxChatTest.wxml delete mode 100644 pages/domoTest/wxchartTest/wxChatTest.wxss create mode 100644 template/dist/action-sheet/index.js create mode 100644 template/dist/action-sheet/index.json create mode 100644 template/dist/action-sheet/index.wxml create mode 100644 template/dist/action-sheet/index.wxss create mode 100644 template/dist/alert/index.js create mode 100644 template/dist/alert/index.json create mode 100644 template/dist/alert/index.wxml create mode 100644 template/dist/alert/index.wxss create mode 100644 template/dist/avatar/index.js create mode 100644 template/dist/avatar/index.json create mode 100644 template/dist/avatar/index.wxml create mode 100644 template/dist/avatar/index.wxss create mode 100644 template/dist/badge/index.js create mode 100644 template/dist/badge/index.json create mode 100644 template/dist/badge/index.wxml create mode 100644 template/dist/badge/index.wxss create mode 100644 template/dist/base/index.js create mode 100644 template/dist/button/index.js create mode 100644 template/dist/button/index.json create mode 100644 template/dist/button/index.wxml create mode 100644 template/dist/button/index.wxss create mode 100644 template/dist/card/index.js create mode 100644 template/dist/card/index.json create mode 100644 template/dist/card/index.wxml create mode 100644 template/dist/card/index.wxss create mode 100644 template/dist/cell-group/index.js create mode 100644 template/dist/cell-group/index.json create mode 100644 template/dist/cell-group/index.wxml create mode 100644 template/dist/cell/index.js create mode 100644 template/dist/cell/index.json create mode 100644 template/dist/cell/index.wxml create mode 100644 template/dist/cell/index.wxss create mode 100644 template/dist/checkbox-group/index.js create mode 100644 template/dist/checkbox-group/index.json create mode 100644 template/dist/checkbox-group/index.wxml create mode 100644 template/dist/checkbox-group/index.wxss create mode 100644 template/dist/checkbox/index.js create mode 100644 template/dist/checkbox/index.json create mode 100644 template/dist/checkbox/index.wxml create mode 100644 template/dist/checkbox/index.wxss create mode 100644 template/dist/col/index.js create mode 100644 template/dist/col/index.json create mode 100644 template/dist/col/index.wxml create mode 100644 template/dist/col/index.wxss create mode 100644 template/dist/collapse-item/index.js rename pages/domoTest/wxchartTest/wxChatTest.json => template/dist/collapse-item/index.json (34%) create mode 100644 template/dist/collapse-item/index.wxml create mode 100644 template/dist/collapse-item/index.wxss create mode 100644 template/dist/collapse/index.js create mode 100644 template/dist/collapse/index.json create mode 100644 template/dist/collapse/index.wxml create mode 100644 template/dist/collapse/index.wxss create mode 100644 template/dist/count-down/index.js create mode 100644 template/dist/count-down/index.json create mode 100644 template/dist/count-down/index.wxml create mode 100644 template/dist/count-down/index.wxss create mode 100644 template/dist/divider/index.js create mode 100644 template/dist/divider/index.json create mode 100644 template/dist/divider/index.wxml create mode 100644 template/dist/divider/index.wxss create mode 100644 template/dist/drawer/index.js create mode 100644 template/dist/drawer/index.json create mode 100644 template/dist/drawer/index.wxml create mode 100644 template/dist/drawer/index.wxss create mode 100644 template/dist/grid-icon/index.js create mode 100644 template/dist/grid-icon/index.json create mode 100644 template/dist/grid-icon/index.wxml create mode 100644 template/dist/grid-icon/index.wxss create mode 100644 template/dist/grid-item/index.js create mode 100644 template/dist/grid-item/index.json create mode 100644 template/dist/grid-item/index.wxml create mode 100644 template/dist/grid-item/index.wxss create mode 100644 template/dist/grid-label/index.js create mode 100644 template/dist/grid-label/index.json create mode 100644 template/dist/grid-label/index.wxml create mode 100644 template/dist/grid-label/index.wxss create mode 100644 template/dist/grid/index.js create mode 100644 template/dist/grid/index.json create mode 100644 template/dist/grid/index.wxml create mode 100644 template/dist/grid/index.wxss create mode 100644 template/dist/icon/index.js create mode 100644 template/dist/icon/index.json create mode 100644 template/dist/icon/index.wxml create mode 100644 template/dist/icon/index.wxss create mode 100644 template/dist/index-item/index.js create mode 100644 template/dist/index-item/index.json create mode 100644 template/dist/index-item/index.wxml create mode 100644 template/dist/index-item/index.wxss create mode 100644 template/dist/index/index.js create mode 100644 template/dist/index/index.json create mode 100644 template/dist/index/index.wxml create mode 100644 template/dist/index/index.wxss create mode 100644 template/dist/input-number/index.js create mode 100644 template/dist/input-number/index.json create mode 100644 template/dist/input-number/index.wxml create mode 100644 template/dist/input-number/index.wxss create mode 100644 template/dist/input/index.js create mode 100644 template/dist/input/index.json create mode 100644 template/dist/input/index.wxml create mode 100644 template/dist/input/index.wxss create mode 100644 template/dist/load-more/index.js create mode 100644 template/dist/load-more/index.json create mode 100644 template/dist/load-more/index.wxml create mode 100644 template/dist/load-more/index.wxss create mode 100644 template/dist/message/index.js create mode 100644 template/dist/message/index.json create mode 100644 template/dist/message/index.wxml create mode 100644 template/dist/message/index.wxss create mode 100644 template/dist/modal/index.js create mode 100644 template/dist/modal/index.json create mode 100644 template/dist/modal/index.wxml create mode 100644 template/dist/modal/index.wxss create mode 100644 template/dist/notice-bar/index.js create mode 100644 template/dist/notice-bar/index.json create mode 100644 template/dist/notice-bar/index.wxml create mode 100644 template/dist/notice-bar/index.wxss create mode 100644 template/dist/page/index.js create mode 100644 template/dist/page/index.json create mode 100644 template/dist/page/index.wxml create mode 100644 template/dist/page/index.wxss create mode 100644 template/dist/panel/index.js create mode 100644 template/dist/panel/index.json create mode 100644 template/dist/panel/index.wxml create mode 100644 template/dist/panel/index.wxss create mode 100644 template/dist/progress/index.js create mode 100644 template/dist/progress/index.json create mode 100644 template/dist/progress/index.wxml create mode 100644 template/dist/progress/index.wxss create mode 100644 template/dist/radio-group/index.js create mode 100644 template/dist/radio-group/index.json create mode 100644 template/dist/radio-group/index.wxml create mode 100644 template/dist/radio-group/index.wxss create mode 100644 template/dist/radio/index.js create mode 100644 template/dist/radio/index.json create mode 100644 template/dist/radio/index.wxml create mode 100644 template/dist/radio/index.wxss create mode 100644 template/dist/rate/index.js create mode 100644 template/dist/rate/index.json create mode 100644 template/dist/rate/index.wxml create mode 100644 template/dist/rate/index.wxss create mode 100644 template/dist/row/index.js create mode 100644 template/dist/row/index.json create mode 100644 template/dist/row/index.wxml create mode 100644 template/dist/row/index.wxss create mode 100644 template/dist/slide/index.js create mode 100644 template/dist/slide/index.json create mode 100644 template/dist/slide/index.wxml create mode 100644 template/dist/slide/index.wxss create mode 100644 template/dist/spin/index.js create mode 100644 template/dist/spin/index.json create mode 100644 template/dist/spin/index.wxml create mode 100644 template/dist/spin/index.wxss create mode 100644 template/dist/step/index.js create mode 100644 template/dist/step/index.json create mode 100644 template/dist/step/index.wxml create mode 100644 template/dist/step/index.wxss create mode 100644 template/dist/steps/index.js create mode 100644 template/dist/steps/index.json create mode 100644 template/dist/steps/index.wxml create mode 100644 template/dist/steps/index.wxss create mode 100644 template/dist/sticky-item/index.js create mode 100644 template/dist/sticky-item/index.json create mode 100644 template/dist/sticky-item/index.wxml create mode 100644 template/dist/sticky-item/index.wxss create mode 100644 template/dist/sticky/index.js create mode 100644 template/dist/sticky/index.json create mode 100644 template/dist/sticky/index.wxml create mode 100644 template/dist/sticky/index.wxss create mode 100644 template/dist/sticky/tab-bar-item/index.js create mode 100644 template/dist/sticky/tab-bar-item/index.json create mode 100644 template/dist/sticky/tab-bar-item/index.wxml create mode 100644 template/dist/sticky/tab-bar-item/index.wxss create mode 100644 template/dist/swipeout/index.js create mode 100644 template/dist/swipeout/index.json create mode 100644 template/dist/swipeout/index.wxml create mode 100644 template/dist/swipeout/index.wxss create mode 100644 template/dist/switch/index.js create mode 100644 template/dist/switch/index.json create mode 100644 template/dist/switch/index.wxml create mode 100644 template/dist/switch/index.wxss create mode 100644 template/dist/tab-bar/index.js create mode 100644 template/dist/tab-bar/index.json create mode 100644 template/dist/tab-bar/index.wxml create mode 100644 template/dist/tab-bar/index.wxss create mode 100644 template/dist/tab/index.js create mode 100644 template/dist/tab/index.json create mode 100644 template/dist/tab/index.wxml create mode 100644 template/dist/tab/index.wxss create mode 100644 template/dist/tabs/index.js create mode 100644 template/dist/tabs/index.json create mode 100644 template/dist/tabs/index.wxml create mode 100644 template/dist/tabs/index.wxss create mode 100644 template/dist/tag/index.js create mode 100644 template/dist/tag/index.json create mode 100644 template/dist/tag/index.wxml create mode 100644 template/dist/tag/index.wxss create mode 100644 template/dist/toast/index.js create mode 100644 template/dist/toast/index.json create mode 100644 template/dist/toast/index.wxml create mode 100644 template/dist/toast/index.wxss diff --git a/app.json b/app.json index e1f9094..dddae92 100644 --- a/app.json +++ b/app.json @@ -1,17 +1,14 @@ { "pages": [ "pages/index/authoriztion/authoriztion", + "pages/consume/consume", + "pages/me/me", "pages/index/address/address", "pages/me/myBill/myBill", - "pages/domoTest/wxchartTest/wxChatTest", - "pages/domoTest/kyhbTest/kyhbTest", - "pages/domoTest/uploadTest/uploadTest", - "pages/domoTest/regionTest/test", - "pages/domoTest/getFormId/getformId", "pages/index/bookkeepingdetail/bookkeepingdetail", - "pages/consume/consume", - "pages/index/index", - "pages/me/me" + + "pages/index/index" + ], "window": { "backgroundTextStyle": "light", diff --git a/app.wxss b/app.wxss index bc6d08f..304f110 100644 --- a/app.wxss +++ b/app.wxss @@ -9,7 +9,7 @@ box-sizing: border-box; } */ /**app.wxss**/ -.container { +/* .container { position: absolute; top: 0; bottom: 0; @@ -21,4 +21,8 @@ align-items: center; justify-content: space-between; box-sizing: border-box; -} +} */ +.loading { + width: 100%; + height: 100%; +} \ No newline at end of file diff --git a/pages/consume/consume.js b/pages/consume/consume.js index 49ca825..0c61d8e 100644 --- a/pages/consume/consume.js +++ b/pages/consume/consume.js @@ -37,18 +37,31 @@ Page({ showType:true, // 计算器集合 calculatorList:[ - [{ "value": "7" }, { "value": "8" }, { "value": "9" }, { "value": "DEL" }], - [{ "value": "4" }, { "value": "5" }, { "value": "6" }, { "value": "+" }], - [{ "value": "1" }, { "value": "2" }, { "value": "3" }, { "value": "-" }]] + [{ "value": "7" }, { "value": "8" }, { "value": "9" }], + [{ "value": "4" }, { "value": "5" }, { "value": "6" }], + [{ "value": "1" }, { "value": "2" }, { "value": "3" }], + [{ "value": "C" }, { "value": "0" }, { "value": "." }]], + current: '0', + loading: false }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { - console.log(`这里是onLoad`) - // 获取到微信地理位置 - this.getWxLocation() + console.log(`这里是onLoad`,options) + console.log(`这里是onLoad,地址来哪里` + options.form) + console.log(`这里是onLoad,地址来哪里` + options.address) + console.log(`这里是onLoad,详情地址来哪里` + options.addressDetail) + if(options.form === 'address') { + this.setData({ + address: options.address, + addressDetail:options.addressDetail + }) + } else { + // 获取到微信地理位置 + this.getWxLocation() + } }, /** * 获取当前位置信息 @@ -126,7 +139,9 @@ Page({ * 跳转定位 */ gotoAddress() { - console.log(`跳转定位功能`) + wx.navigateTo({ + url: '../index/address/address?form=consume&address=' + this.data.address + '&addressDetail=' + this.data.addressDetail, + }) }, /** * 支出收入类型转换 @@ -138,6 +153,12 @@ Page({ }) this.getConsumeType(event.currentTarget.dataset.type) }, + handleChange({ detail }) { + this.setData({ + current: detail.key + }); + this.getConsumeType(detail.key) + }, getConsumeType: function (type) { let that = this; let requestUrl = API.api.consumeTypes + '/type?type=' + type; @@ -331,6 +352,14 @@ Page({ * 保存按钮 */ saveBookkeeping: function () { + let that = this + // 进行loaing + if(this.data.loading) { + return; + } + this.setData({ + loading:true + }) let money = 0; if (this.data.addorDel = '+') { money = Number(this.data.toatlMoney) + Number(this.data.money); @@ -343,8 +372,6 @@ Page({ TOAST.showToastSuccess('金额不能为0') return } - let tempPaths = [] - // 进行金额转换 money = money * 100; let requestObj = {}; @@ -353,15 +380,13 @@ Page({ requestObj.money = money; requestObj.address = this.data.address; requestObj.addressDetail = this.data.addressDetail; - // console.log(this.data.imagePathList) - // if (this.data.imagePathList.length > 0) { - // requestObj.bigImage1 = this.data.imagePathList[0]; - // requestObj.bigImage2 = this.data.imagePathList[1] ? this.data.imagePathList[1] : null; - // } requestObj.imageUrl = JSON.stringify(this.data.imagePathList); console.log('保存的数据来着',requestObj) let requestUrl = API.api.bookkeepings; AJAX.postRequest(requestUrl, requestObj).then(response => { + that.setData({ + loading:false + }) wx.switchTab({ url: '/pages/index/index' }) diff --git a/pages/consume/consume.json b/pages/consume/consume.json index 8c3d940..7885d68 100644 --- a/pages/consume/consume.json +++ b/pages/consume/consume.json @@ -3,5 +3,18 @@ "navigationBarTextStyle": "white", "navigationBarTitleText": "消费记账", "backgroundColor": "#ffffff", - "backgroundTextStyle": "light" + "backgroundTextStyle": "light", + "usingComponents": { + "i-tabs": "../../template/dist/tabs/index", + "i-tab": "../../template/dist/tab/index", + "i-row": "../../template/dist/row/index", + "i-col": "../../template/dist/col/index", + "i-avatar": "../../template/dist/avatar/index", + "i-button": "../../template/dist/button/index", + "i-grid": "../../template/dist/grid/index", + "i-grid-item": "../../template/dist/grid-item/index", + "i-grid-icon": "../../template/dist/grid-icon/index", + "i-grid-label": "../../template/dist/grid-label/index", + "i-spin": "../../template/dist/spin/index" + } } \ No newline at end of file diff --git a/pages/consume/consume.wxml b/pages/consume/consume.wxml index 012861f..d28bb42 100644 --- a/pages/consume/consume.wxml +++ b/pages/consume/consume.wxml @@ -1,32 +1,37 @@ - - - - 支出 - 收入 - + + + 加载中 + + + + + + - + {{consumeType.name}} - {{toatlMoney}} {{addorDel}} {{money}} 元 - {{money}} 元 + {{money}} 元 - - + + + + + {{item.name}} + + - + - - + --> + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
\ No newline at end of file diff --git a/pages/consume/consume.wxss b/pages/consume/consume.wxss index 85ecb47..49d075f 100644 --- a/pages/consume/consume.wxss +++ b/pages/consume/consume.wxss @@ -37,8 +37,8 @@ page { border-bottom:1rpx solid #ccc; } .consume-type-icon .consume-icon { - width: 15%; - padding: 5rpx 10rpx; + width: 8%; + padding: 21rpx 40rpx; } .consume-type-icon span { display: flex; @@ -89,9 +89,9 @@ page { flex-direction: row; } .fix-item { - background-color: #aae6f9; - width: 27%; - height: 50px; + background-color: #FFFFFF; + width: 100%; + height: 75%; display: flex; /*使子项目水平居中 */ justify-content: center; @@ -115,3 +115,55 @@ page { .section_btn_right{ flex:2; } + + + + + + + +.container{ + position: absolute; + bottom: 0; + left: 0; + width: 100%; +} +.container1{ + display:flex; + flex-direction: row; + height:400rpx; +} +.left{ + flex: 3; + height: 100%; +} +.right{ + flex: 1; + height: 100%; +} +.tr{ + width:100%; + height:25%; + display:flex; + align-items: center; + justify-content: center; +} +.tr button{ + height:100%; + background-color:#FFFFFF; + flex:1; + vertical-align:middle; + text-align:center; + border:1px solid #fff; +} +.remove{ + width:100%; + height:25%; + vertical-align:middle; + background-color: #FFFFFF; + text-align: center; + background-size: 74% 80%; + background-image:url(https://be.yangyoki.top:12000/images/consume/icon/delete.png); + background-repeat: no-repeat; + background-position: center; +} \ No newline at end of file diff --git a/pages/domoTest/ec-canvas/ec-canvas.js b/pages/domoTest/ec-canvas/ec-canvas.js deleted file mode 100644 index 9cc2454..0000000 --- a/pages/domoTest/ec-canvas/ec-canvas.js +++ /dev/null @@ -1,135 +0,0 @@ -import WxCanvas from './wx-canvas'; -import * as echarts from './echarts'; - -let ctx; - -Component({ - properties: { - canvasId: { - type: String, - value: 'ec-canvas' - }, - - ec: { - type: Object - } - }, - - data: { - - }, - - ready: function () { - if (!this.data.ec) { - console.warn('组件需绑定 ec 变量,例:'); - return; - } - - if (!this.data.ec.lazyLoad) { - this.init(); - } - }, - - methods: { - init: function (callback) { - const version = wx.version.version.split('.').map(n => parseInt(n, 10)); - const isValid = version[0] > 1 || (version[0] === 1 && version[1] > 9) - || (version[0] === 1 && version[1] === 9 && version[2] >= 91); - if (!isValid) { - console.error('微信基础库版本过低,需大于等于 1.9.91。' - + '参见:https://github.com/ecomfe/echarts-for-weixin' - + '#%E5%BE%AE%E4%BF%A1%E7%89%88%E6%9C%AC%E8%A6%81%E6%B1%82'); - return; - } - - ctx = wx.createCanvasContext(this.data.canvasId, this); - - const canvas = new WxCanvas(ctx, this.data.canvasId); - - echarts.setCanvasCreator(() => { - return canvas; - }); - - var query = wx.createSelectorQuery().in(this); - query.select('.ec-canvas').boundingClientRect(res => { - if (typeof callback === 'function') { - this.chart = callback(canvas, res.width, res.height); - } - else if (this.data.ec && typeof this.data.ec.onInit === 'function') { - this.chart = this.data.ec.onInit(canvas, res.width, res.height); - } - else { - this.triggerEvent('init', { - canvas: canvas, - width: res.width, - height: res.height - }); - } - }).exec(); - }, - - canvasToTempFilePath(opt) { - if (!opt.canvasId) { - opt.canvasId = this.data.canvasId; - } - - ctx.draw(true, () => { - wx.canvasToTempFilePath(opt, this); - }); - }, - - touchStart(e) { - if (this.chart && e.touches.length > 0) { - var touch = e.touches[0]; - var handler = this.chart.getZr().handler; - handler.dispatch('mousedown', { - zrX: touch.x, - zrY: touch.y - }); - handler.dispatch('mousemove', { - zrX: touch.x, - zrY: touch.y - }); - handler.processGesture(wrapTouch(e), 'start'); - } - }, - - touchMove(e) { - if (this.chart && e.touches.length > 0) { - var touch = e.touches[0]; - var handler = this.chart.getZr().handler; - handler.dispatch('mousemove', { - zrX: touch.x, - zrY: touch.y - }); - handler.processGesture(wrapTouch(e), 'change'); - } - }, - - touchEnd(e) { - if (this.chart) { - const touch = e.changedTouches ? e.changedTouches[0] : {}; - var handler = this.chart.getZr().handler; - handler.dispatch('mouseup', { - zrX: touch.x, - zrY: touch.y - }); - handler.dispatch('click', { - zrX: touch.x, - zrY: touch.y - }); - handler.processGesture(wrapTouch(e), 'end'); - } - } - } -}); - -function wrapTouch(event) { - for (let i = 0; i < event.touches.length; ++i) { - const touch = event.touches[i]; - touch.offsetX = touch.x; - touch.offsetY = touch.y; - } - return event; -} diff --git a/pages/domoTest/ec-canvas/ec-canvas.json b/pages/domoTest/ec-canvas/ec-canvas.json deleted file mode 100644 index e8cfaaf..0000000 --- a/pages/domoTest/ec-canvas/ec-canvas.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "component": true, - "usingComponents": {} -} \ No newline at end of file diff --git a/pages/domoTest/ec-canvas/ec-canvas.wxml b/pages/domoTest/ec-canvas/ec-canvas.wxml deleted file mode 100644 index 33cfaf7..0000000 --- a/pages/domoTest/ec-canvas/ec-canvas.wxml +++ /dev/null @@ -1,4 +0,0 @@ - - diff --git a/pages/domoTest/ec-canvas/ec-canvas.wxss b/pages/domoTest/ec-canvas/ec-canvas.wxss deleted file mode 100644 index 0d64b10..0000000 --- a/pages/domoTest/ec-canvas/ec-canvas.wxss +++ /dev/null @@ -1,4 +0,0 @@ -.ec-canvas { - width: 100%; - height: 100%; -} diff --git a/pages/domoTest/ec-canvas/echarts.js b/pages/domoTest/ec-canvas/echarts.js deleted file mode 100644 index 77743db..0000000 --- a/pages/domoTest/ec-canvas/echarts.js +++ /dev/null @@ -1,22 +0,0 @@ - -/* -* 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";function e(t,e){"createCanvas"===t&&(nw=null),ew[t]=e}function i(t){if(null==t||"object"!=typeof t)return t;var e=t,n=Y_.call(t);if("[object Array]"===n){if(!O(t)){e=[];for(var o=0,a=t.length;o=0){var o="touchend"!==n?e.targetTouches[0]:e.changedTouches[0];o&&st(t,o,e,i)}else st(t,e,e,i),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;var a=e.button;return null==e.which&&void 0!==a&&gw.test(e.type)&&(e.which=1&a?1:2&a?3:4&a?2:0),e}function ht(t,e,i){pw?t.addEventListener(e,i):t.attachEvent("on"+e,i)}function ct(t,e,i){pw?t.removeEventListener(e,i):t.detachEvent("on"+e,i)}function dt(t){return 2===t.which||3===t.which}function ft(t){var e=t[1][0]-t[0][0],i=t[1][1]-t[0][1];return Math.sqrt(e*e+i*i)}function pt(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}function gt(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:mt}}function mt(t){mw(this.event)}function vt(){}function yt(t,e,i){if(t[t.rectHover?"rectContain":"contain"](e,i)){for(var n,o=t;o;){if(o.clipPath&&!o.clipPath.contain(e,i))return!1;o.silent&&(n=!0),o=o.parent}return!n||xw}return!1}function xt(){var t=new bw(6);return _t(t),t}function _t(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function wt(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 bt(t,e,i){var n=e[0]*i[0]+e[2]*i[1],o=e[1]*i[0]+e[3]*i[1],a=e[0]*i[2]+e[2]*i[3],r=e[1]*i[2]+e[3]*i[3],s=e[0]*i[4]+e[2]*i[5]+e[4],l=e[1]*i[4]+e[3]*i[5]+e[5];return t[0]=n,t[1]=o,t[2]=a,t[3]=r,t[4]=s,t[5]=l,t}function St(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 Mt(t,e,i){var n=e[0],o=e[2],a=e[4],r=e[1],s=e[3],l=e[5],u=Math.sin(i),h=Math.cos(i);return t[0]=n*h+r*u,t[1]=-n*u+r*h,t[2]=o*h+s*u,t[3]=-o*u+h*s,t[4]=h*a+u*l,t[5]=h*l-u*a,t}function It(t,e,i){var n=i[0],o=i[1];return t[0]=e[0]*n,t[1]=e[1]*o,t[2]=e[2]*n,t[3]=e[3]*o,t[4]=e[4]*n,t[5]=e[5]*o,t}function Tt(t,e){var i=e[0],n=e[2],o=e[4],a=e[1],r=e[3],s=e[5],l=i*r-a*n;return l?(l=1/l,t[0]=r*l,t[1]=-a*l,t[2]=-n*l,t[3]=i*l,t[4]=(n*s-r*o)*l,t[5]=(a*o-i*s)*l,t):null}function At(t){var e=xt();return wt(e,t),e}function Dt(t){return t>Iw||t<-Iw}function Ct(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}function Lt(t){return(t=Math.round(t))<0?0:t>255?255:t}function kt(t){return(t=Math.round(t))<0?0:t>360?360:t}function Pt(t){return t<0?0:t>1?1:t}function Nt(t){return Lt(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100*255:parseInt(t,10))}function Ot(t){return Pt(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100:parseFloat(t))}function Et(t,e,i){return i<0?i+=1:i>1&&(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 Rt(t,e,i){return t+(e-t)*i}function zt(t,e,i,n,o){return t[0]=e,t[1]=i,t[2]=n,t[3]=o,t}function Bt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function Vt(t,e){Vw&&Bt(Vw,e),Vw=Bw.put(t,Vw||e.slice())}function Gt(t,e){if(t){e=e||[];var i=Bw.get(t);if(i)return Bt(e,i);var n=(t+="").replace(/ /g,"").toLowerCase();if(n in zw)return Bt(e,zw[n]),Vt(t,e),e;if("#"!==n.charAt(0)){var o=n.indexOf("("),a=n.indexOf(")");if(-1!==o&&a+1===n.length){var r=n.substr(0,o),s=n.substr(o+1,a-(o+1)).split(","),l=1;switch(r){case"rgba":if(4!==s.length)return void zt(e,0,0,0,1);l=Ot(s.pop());case"rgb":return 3!==s.length?void zt(e,0,0,0,1):(zt(e,Nt(s[0]),Nt(s[1]),Nt(s[2]),l),Vt(t,e),e);case"hsla":return 4!==s.length?void zt(e,0,0,0,1):(s[3]=Ot(s[3]),Ft(s,e),Vt(t,e),e);case"hsl":return 3!==s.length?void zt(e,0,0,0,1):(Ft(s,e),Vt(t,e),e);default:return}}zt(e,0,0,0,1)}else{if(4===n.length)return(u=parseInt(n.substr(1),16))>=0&&u<=4095?(zt(e,(3840&u)>>4|(3840&u)>>8,240&u|(240&u)>>4,15&u|(15&u)<<4,1),Vt(t,e),e):void zt(e,0,0,0,1);if(7===n.length){var u=parseInt(n.substr(1),16);return u>=0&&u<=16777215?(zt(e,(16711680&u)>>16,(65280&u)>>8,255&u,1),Vt(t,e),e):void zt(e,0,0,0,1)}}}}function Ft(t,e){var i=(parseFloat(t[0])%360+360)%360/360,n=Ot(t[1]),o=Ot(t[2]),a=o<=.5?o*(n+1):o+n-o*n,r=2*o-a;return e=e||[],zt(e,Lt(255*Et(r,a,i+1/3)),Lt(255*Et(r,a,i)),Lt(255*Et(r,a,i-1/3)),1),4===t.length&&(e[3]=t[3]),e}function Wt(t){if(t){var e,i,n=t[0]/255,o=t[1]/255,a=t[2]/255,r=Math.min(n,o,a),s=Math.max(n,o,a),l=s-r,u=(s+r)/2;if(0===l)e=0,i=0;else{i=u<.5?l/(s+r):l/(2-s-r);var h=((s-n)/6+l/2)/l,c=((s-o)/6+l/2)/l,d=((s-a)/6+l/2)/l;n===s?e=d-c:o===s?e=1/3+h-d:a===s&&(e=2/3+c-h),e<0&&(e+=1),e>1&&(e-=1)}var f=[360*e,i,u];return null!=t[3]&&f.push(t[3]),f}}function Ht(t,e){var i=Gt(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,i[n]>255?i[n]=255:t[n]<0&&(i[n]=0);return qt(i,4===i.length?"rgba":"rgb")}}function Zt(t){var e=Gt(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)}function Ut(t,e,i){if(e&&e.length&&t>=0&&t<=1){i=i||[];var n=t*(e.length-1),o=Math.floor(n),a=Math.ceil(n),r=e[o],s=e[a],l=n-o;return i[0]=Lt(Rt(r[0],s[0],l)),i[1]=Lt(Rt(r[1],s[1],l)),i[2]=Lt(Rt(r[2],s[2],l)),i[3]=Pt(Rt(r[3],s[3],l)),i}}function Xt(t,e,i){if(e&&e.length&&t>=0&&t<=1){var n=t*(e.length-1),o=Math.floor(n),a=Math.ceil(n),r=Gt(e[o]),s=Gt(e[a]),l=n-o,u=qt([Lt(Rt(r[0],s[0],l)),Lt(Rt(r[1],s[1],l)),Lt(Rt(r[2],s[2],l)),Pt(Rt(r[3],s[3],l))],"rgba");return i?{color:u,leftIndex:o,rightIndex:a,value:n}:u}}function jt(t,e,i,n){if(t=Gt(t))return t=Wt(t),null!=e&&(t[0]=kt(e)),null!=i&&(t[1]=Ot(i)),null!=n&&(t[2]=Ot(n)),qt(Ft(t),"rgba")}function Yt(t,e){if((t=Gt(t))&&null!=e)return t[3]=Pt(e),qt(t,"rgba")}function qt(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+")"}}function Kt(t,e){return t[e]}function $t(t,e,i){t[e]=i}function Jt(t,e,i){return(e-t)*i+t}function Qt(t,e,i){return i>.5?e:t}function te(t,e,i,n,o){var a=t.length;if(1===o)for(s=0;so)t.length=o;else for(r=n;r=0&&!(m[i]<=e);i--);i=Math.min(i,u-2)}else{for(i=L;ie);i++);i=Math.min(i-1,u-2)}L=i,k=e;var n=m[i+1]-m[i];if(0!==n)if(I=(e-m[i])/n,l)if(A=v[i],T=v[0===i?i:i-1],D=v[i>u-2?u-1:i+1],C=v[i>u-3?u-1:i+2],d)ne(T,A,D,C,I,I*I,I*I*I,r(t,o),g);else{if(f)a=ne(T,A,D,C,I,I*I,I*I*I,P,1),a=re(P);else{if(p)return Qt(A,D,I);a=oe(T,A,D,C,I,I*I,I*I*I)}s(t,o,a)}else if(d)te(v[i],v[i+1],I,r(t,o),g);else{var a;if(f)te(v[i],v[i+1],I,P,1),a=re(P);else{if(p)return Qt(v[i],v[i+1],I);a=Jt(v[i],v[i+1],I)}s(t,o,a)}},ondestroy:i});return e&&"spline"!==e&&(N.easing=e),N}}}function ue(t,e,i,n,o,a,r,s){_(n)?(a=o,o=n,n=0):x(o)?(a=o,o="linear",n=0):x(n)?(a=n,n=0):x(i)?(a=i,i=500):i||(i=500),t.stopAnimation(),he(t,"",t,e,i,n,s);var l=t.animators.slice(),u=l.length;u||a&&a();for(var h=0;h0&&t.animate(e,!1).when(null==o?500:o,s).delay(a||0)}function ce(t,e,i,n){if(e){var o={};o[e]={},o[e][i]=n,t.attr(o)}else t.attr(i,n)}function de(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}function fe(t){for(var e=0;t>=eb;)e|=1&t,t>>=1;return t+e}function pe(t,e,i,n){var o=e+1;if(o===i)return 1;if(n(t[o++],t[e])<0){for(;o=0;)o++;return o-e}function ge(t,e,i){for(i--;e>>1])<0?l=a:s=a+1;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(;u>0;)t[s+u]=t[s+u-1],u--}t[s]=r}}function ve(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])>0){for(s=n-o;l0;)r=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}else{for(s=o+1;ls&&(l=s);var u=r;r=o-l,l=o-u}for(r++;r>>1);a(t,e[i+h])>0?r=h+1:l=h}return l}function ye(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])<0){for(s=o+1;ls&&(l=s);var u=r;r=o-l,l=o-u}else{for(s=n-o;l=0;)r=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}for(r++;r>>1);a(t,e[i+h])<0?l=h:r=h+1}return l}function xe(t,e){function i(i){var s=a[i],u=r[i],h=a[i+1],c=r[i+1];r[i]=u+c,i===l-3&&(a[i+1]=a[i+2],r[i+1]=r[i+2]),l--;var d=ye(t[h],t,s,u,0,e);s+=d,0!==(u-=d)&&0!==(c=ve(t[s+u-1],t,h,c,c-1,e))&&(u<=c?n(s,u,h,c):o(s,u,h,c))}function n(i,n,o,a){var r=0;for(r=0;r=ib||f>=ib);if(p)break;g<0&&(g=0),g+=2}if((s=g)<1&&(s=1),1===n){for(r=0;r=0;r--)t[f+r]=t[d+r];if(0===n){v=!0;break}}if(t[c--]=u[h--],1==--a){v=!0;break}if(0!=(m=a-ve(t[l],u,0,a,a-1,e))){for(a-=m,f=(c-=m)+1,d=(h-=m)+1,r=0;r=ib||m>=ib);if(v)break;p<0&&(p=0),p+=2}if((s=p)<1&&(s=1),1===a){for(f=(c-=n)+1,d=(l-=n)+1,r=n-1;r>=0;r--)t[f+r]=t[d+r];t[c]=u[h]}else{if(0===a)throw new Error;for(d=c-(a-1),r=0;r=0;r--)t[f+r]=t[d+r];t[c]=u[h]}else for(d=c-(a-1),r=0;r1;){var t=l-2;if(t>=1&&r[t-1]<=r[t]+r[t+1]||t>=2&&r[t-2]<=r[t]+r[t-1])r[t-1]r[t+1])break;i(t)}},this.forceMergeRuns=function(){for(;l>1;){var t=l-2;t>0&&r[t-1]s&&(l=s),me(t,i,i+l,i+a,e),a=l}r.pushRun(i,a),r.mergeRuns(),o-=a,i+=a}while(0!==o);r.forceMergeRuns()}}function we(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}function be(t,e,i){var n=null==e.x?0:e.x,o=null==e.x2?1:e.x2,a=null==e.y?0:e.y,r=null==e.y2?0:e.y2;return e.global||(n=n*i.width+i.x,o=o*i.width+i.x,a=a*i.height+i.y,r=r*i.height+i.y),n=isNaN(n)?0:n,o=isNaN(o)?1:o,a=isNaN(a)?0:a,r=isNaN(r)?0:r,t.createLinearGradient(n,a,o,r)}function Se(t,e,i){var n=i.width,o=i.height,a=Math.min(n,o),r=null==e.x?.5:e.x,s=null==e.y?.5:e.y,l=null==e.r?.5:e.r;return e.global||(r=r*n+i.x,s=s*o+i.y,l*=a),t.createRadialGradient(r,s,0,r,s,l)}function Me(){return!1}function Ie(t,e,i){var n=iw(),o=e.getWidth(),a=e.getHeight(),r=n.style;return r&&(r.position="absolute",r.left=0,r.top=0,r.width=o+"px",r.height=a+"px",n.setAttribute("data-zr-dom-id",t)),n.width=o*i,n.height=a*i,n}function Te(t){if("string"==typeof t){var e=mb.get(t);return e&&e.image}return t}function Ae(t,e,i,n,o){if(t){if("string"==typeof t){if(e&&e.__zrImageSrc===t||!i)return e;var a=mb.get(t),r={hostEl:i,cb:n,cbPayload:o};return a?!Ce(e=a.image)&&a.pending.push(r):((e=new Image).onload=e.onerror=De,mb.put(t,e.__cachedImgObj={image:e,pending:[r]}),e.src=e.__zrImageSrc=t),e}return t}return e}function De(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;exb&&(yb=0,vb={}),yb++,vb[i]=o,o}function ke(t,e,i,n,o,a,r,s){return r?Ne(t,e,i,n,o,r,a,s):Pe(t,e,i,n,o,a,s)}function Pe(t,e,i,n,o,a,r){var s=He(t,e,o,a,r),l=Le(t,e);o&&(l+=o[1]+o[3]);var u=s.outerHeight,h=new de(Oe(0,l,i),Ee(0,u,n),l,u);return h.lineHeight=s.lineHeight,h}function Ne(t,e,i,n,o,a,r,s){var l=Ze(t,{rich:r,truncate:s,font:e,textAlign:i,textPadding:o,textLineHeight:a}),u=l.outerWidth,h=l.outerHeight;return new de(Oe(0,u,i),Ee(0,h,n),u,h)}function Oe(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function Ee(t,e,i){return"middle"===i?t-=e/2:"bottom"===i&&(t-=e),t}function Re(t,e,i){var n=e.x,o=e.y,a=e.height,r=e.width,s=a/2,l="left",u="top";switch(t){case"left":n-=i,o+=s,l="right",u="middle";break;case"right":n+=i+r,o+=s,u="middle";break;case"top":n+=r/2,o-=i,l="center",u="bottom";break;case"bottom":n+=r/2,o+=a+i,l="center";break;case"inside":n+=r/2,o+=s,l="center",u="middle";break;case"insideLeft":n+=i,o+=s,u="middle";break;case"insideRight":n+=r-i,o+=s,l="right",u="middle";break;case"insideTop":n+=r/2,o+=i,l="center";break;case"insideBottom":n+=r/2,o+=a-i,l="center",u="bottom";break;case"insideTopLeft":n+=i,o+=i;break;case"insideTopRight":n+=r-i,o+=i,l="right";break;case"insideBottomLeft":n+=i,o+=a-i,u="bottom";break;case"insideBottomRight":n+=r-i,o+=a-i,l="right",u="bottom"}return{x:n,y:o,textAlign:l,textVerticalAlign:u}}function ze(t,e,i,n,o){if(!e)return"";var a=(t+"").split("\n");o=Be(e,i,n,o);for(var r=0,s=a.length;r=r;l++)s-=r;var u=Le(i,e);return u>s&&(i="",u=0),s=t-u,n.ellipsis=i,n.ellipsisWidth=u,n.contentWidth=s,n.containerWidth=t,n}function Ve(t,e){var i=e.containerWidth,n=e.font,o=e.contentWidth;if(!i)return"";var a=Le(t,n);if(a<=i)return t;for(var r=0;;r++){if(a<=o||r>=e.maxIterations){t+=e.ellipsis;break}var s=0===r?Ge(t,o,e.ascCharWidth,e.cnCharWidth):a>0?Math.floor(t.length*o/a):0;a=Le(t=t.substr(0,s),n)}return""===t&&(t=e.placeholder),t}function Ge(t,e,i,n){for(var o=0,a=0,r=t.length;au)t="",r=[];else if(null!=h)for(var c=Be(h-(i?i[1]+i[3]:0),e,o.ellipsis,{minChar:o.minChar,placeholder:o.placeholder}),d=0,f=r.length;do&&Ue(i,t.substring(o,a)),Ue(i,n[2],n[1]),o=_b.lastIndex}of)return{lines:[],width:0,height:0};k.textWidth=Le(k.text,_);var b=y.textWidth,S=null==b||"auto"===b;if("string"==typeof b&&"%"===b.charAt(b.length-1))k.percentWidth=b,u.push(k),b=0;else{if(S){b=k.textWidth;var M=y.textBackgroundColor,I=M&&M.image;I&&Ce(I=Te(I))&&(b=Math.max(b,I.width*w/I.height))}var T=x?x[1]+x[3]:0;b+=T;var C=null!=d?d-m:null;null!=C&&Cl&&(i*=l/(c=i+n),n*=l/c),o+a>l&&(o*=l/(c=o+a),a*=l/c),n+o>u&&(n*=u/(c=n+o),o*=u/c),i+a>u&&(i*=u/(c=i+a),a*=u/c),t.moveTo(r+i,s),t.lineTo(r+l-n,s),0!==n&&t.arc(r+l-n,s+n,n,-Math.PI/2,0),t.lineTo(r+l,s+u-o),0!==o&&t.arc(r+l-o,s+u-o,o,0,Math.PI/2),t.lineTo(r+a,s+u),0!==a&&t.arc(r+a,s+u-a,a,Math.PI/2,Math.PI),t.lineTo(r,s+i),0!==i&&t.arc(r+i,s+i,i,Math.PI,1.5*Math.PI)}function Ye(t){return qe(t),d(t.rich,qe),t}function qe(t){if(t){t.font=Xe(t);var e=t.textAlign;"middle"===e&&(e="center"),t.textAlign=null==e||Sb[e]?e:"left";var i=t.textVerticalAlign||t.textBaseline;"center"===i&&(i="middle"),t.textVerticalAlign=null==i||Mb[i]?i:"top",t.textPadding&&(t.textPadding=L(t.textPadding))}}function Ke(t,e,i,n,o,a){n.rich?Je(t,e,i,n,o,a):$e(t,e,i,n,o,a)}function $e(t,e,i,n,o,a){var r,s=ii(n),l=!1,u=e.__attrCachedBy===rb.PLAIN_TEXT;a!==sb?(a&&(r=a.style,l=!s&&u),e.__attrCachedBy=s?rb.NONE:rb.PLAIN_TEXT):u&&(e.__attrCachedBy=rb.NONE);var h=n.font||wb;h!==e.__fontCache&&(e.font=h,a!==sb&&(e.__fontCache=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=He(i,c,d,f,n.truncate));var g=p.outerHeight,m=p.lines,v=p.lineHeight,y=ai(g,n,o),x=y.baseX,_=y.baseY,w=y.textAlign||"left",b=y.textVerticalAlign;ti(e,n,o,x,_);var S=Ee(_,g,b),M=x,I=S;if(s||d){var T=Le(i,c);d&&(T+=d[1]+d[3]);var A=Oe(x,T,w);s&&ni(t,e,n,A,S,T,g),d&&(M=hi(x,w,d),I+=d[0])}e.textAlign=w,e.textBaseline="middle",e.globalAlpha=n.opacity||1;for(B=0;B=0&&"right"===(_=b[C]).textAlign;)ei(t,e,_,n,M,v,D,"right"),I-=_.width,D-=_.width,C--;for(A+=(a-(A-m)-(y-D)-I)/2;T<=C;)ei(t,e,_=b[T],n,M,v,A+_.width/2,"center"),A+=_.width,T++;v+=M}}function ti(t,e,i,n,o){if(i&&e.textRotation){var a=e.textOrigin;"center"===a?(n=i.width/2+i.x,o=i.height/2+i.y):a&&(n=a[0]+i.x,o=a[1]+i.y),t.translate(n,o),t.rotate(-e.textRotation),t.translate(-n,-o)}}function ei(t,e,i,n,o,a,r,s){var l=n.rich[i.styleName]||{};l.text=i.text;var u=i.textVerticalAlign,h=a+o/2;"top"===u?h=a+i.height/2:"bottom"===u&&(h=a+o-i.height/2),!i.isLineHolder&&ii(l)&&ni(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=hi(r,s,c),h-=i.height/2-c[2]-i.textHeight/2),ri(e,"shadowBlur",D(l.textShadowBlur,n.textShadowBlur,0)),ri(e,"shadowColor",l.textShadowColor||n.textShadowColor||"transparent"),ri(e,"shadowOffsetX",D(l.textShadowOffsetX,n.textShadowOffsetX,0)),ri(e,"shadowOffsetY",D(l.textShadowOffsetY,n.textShadowOffsetY,0)),ri(e,"textAlign",s),ri(e,"textBaseline","middle"),ri(e,"font",i.font||wb);var d=si(l.textStroke||n.textStroke,p),f=li(l.textFill||n.textFill),p=A(l.textStrokeWidth,n.textStrokeWidth);d&&(ri(e,"lineWidth",p),ri(e,"strokeStyle",d),e.strokeText(i.text,r,h)),f&&(ri(e,"fillStyle",f),e.fillText(i.text,r,h))}function ii(t){return!!(t.textBackgroundColor||t.textBorderWidth&&t.textBorderColor)}function ni(t,e,i,n,o,a,r){var s=i.textBackgroundColor,l=i.textBorderWidth,u=i.textBorderColor,h=_(s);if(ri(e,"shadowBlur",i.textBoxShadowBlur||0),ri(e,"shadowColor",i.textBoxShadowColor||"transparent"),ri(e,"shadowOffsetX",i.textBoxShadowOffsetX||0),ri(e,"shadowOffsetY",i.textBoxShadowOffsetY||0),h||l&&u){e.beginPath();var c=i.textBorderRadius;c?je(e,{x:n,y:o,width:a,height:r,r:c}):e.rect(n,o,a,r),e.closePath()}if(h)if(ri(e,"fillStyle",s),null!=i.fillOpacity){f=e.globalAlpha;e.globalAlpha=i.fillOpacity*i.opacity,e.fill(),e.globalAlpha=f}else e.fill();else if(w(s)){var d=s.image;(d=Ae(d,null,t,oi,s))&&Ce(d)&&e.drawImage(d,n,o,a,r)}if(l&&u)if(ri(e,"lineWidth",l),ri(e,"strokeStyle",u),null!=i.strokeOpacity){var f=e.globalAlpha;e.globalAlpha=i.strokeOpacity*i.opacity,e.stroke(),e.globalAlpha=f}else e.stroke()}function oi(t,e){e.image=t}function ai(t,e,i){var n=e.x||0,o=e.y||0,a=e.textAlign,r=e.textVerticalAlign;if(i){var s=e.textPosition;if(s instanceof Array)n=i.x+ui(s[0],i.width),o=i.y+ui(s[1],i.height);else{var l=Re(s,i,e.textDistance);n=l.x,o=l.y,a=a||l.textAlign,r=r||l.textVerticalAlign}var u=e.textOffset;u&&(n+=u[0],o+=u[1])}return{baseX:n,baseY:o,textAlign:a,textVerticalAlign:r}}function ri(t,e,i){return t[e]=ab(t,e,i),t[e]}function si(t,e){return null==t||e<=0||"transparent"===t||"none"===t?null:t.image||t.colorStops?"#000":t}function li(t){return null==t||"none"===t?null:t.image||t.colorStops?"#000":t}function ui(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}function hi(t,e,i){return"right"===e?t-i[1]:"center"===e?t+i[3]/2-i[1]/2:t+i[3]}function ci(t,e){return null!=t&&(t||e.textBackgroundColor||e.textBorderWidth&&e.textBorderColor||e.textPadding)}function di(t){t=t||{},Kw.call(this,t);for(var e in t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new ub(t.style,this),this._rect=null,this.__clipPaths=[]}function fi(t){di.call(this,t)}function pi(t){return parseInt(t,10)}function gi(t){return!!t&&(!!t.__builtin__||"function"==typeof t.resize&&"function"==typeof t.refresh)}function mi(t,e,i){return Db.copy(t.getBoundingRect()),t.transform&&Db.applyTransform(t.transform),Cb.width=e,Cb.height=i,!Db.intersect(Cb)}function vi(t,e){if(t===e)return!1;if(!t||!e||t.length!==e.length)return!0;for(var i=0;i=i.length&&i.push({option:t})}}),i}function Ni(t){var e=R();Hb(t,function(t,i){var n=t.exist;n&&e.set(n.id,t)}),Hb(t,function(t,i){var n=t.option;k(!n||null==n.id||!e.get(n.id)||e.get(n.id)===t,"id duplicates: "+(n&&n.id)),n&&null!=n.id&&e.set(n.id,t),!t.keyInfo&&(t.keyInfo={})}),Hb(t,function(t,i){var n=t.exist,o=t.option,a=t.keyInfo;if(Zb(o)){if(a.name=null!=o.name?o.name+"":n?n.name:Xb+i,n)a.id=n.id;else if(null!=o.id)a.id=o.id+"";else{var r=0;do{a.id="\0"+a.name+"\0"+r++}while(e.get(a.id))}e.set(a.id,t)}})}function Oi(t){var e=t.name;return!(!e||!e.indexOf(Xb))}function Ei(t){return Zb(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")}function Ri(t,e){function i(t,e,i){for(var n=0,o=t.length;n-aS&&taS||t<-aS}function Qi(t,e,i,n,o){var a=1-o;return a*a*(a*t+3*o*e)+o*o*(o*n+3*a*i)}function tn(t,e,i,n,o){var a=1-o;return 3*(((e-t)*a+2*(i-e)*o)*a+(n-i)*o*o)}function en(t,e,i,n,o,a){var r=n+3*(e-i)-t,s=3*(i-2*e+t),l=3*(e-t),u=t-o,h=s*s-3*r*l,c=s*l-9*r*u,d=l*l-3*s*u,f=0;if($i(h)&&$i(c))$i(s)?a[0]=0:(M=-l/s)>=0&&M<=1&&(a[f++]=M);else{var p=c*c-4*h*d;if($i(p)){var g=c/h,m=-g/2;(M=-s/r+g)>=0&&M<=1&&(a[f++]=M),m>=0&&m<=1&&(a[f++]=m)}else if(p>0){var v=oS(p),y=h*s+1.5*r*(-c+v),x=h*s+1.5*r*(-c-v);(M=(-s-((y=y<0?-nS(-y,lS):nS(y,lS))+(x=x<0?-nS(-x,lS):nS(x,lS))))/(3*r))>=0&&M<=1&&(a[f++]=M)}else{var _=(2*h*s-3*r*c)/(2*oS(h*h*h)),w=Math.acos(_)/3,b=oS(h),S=Math.cos(w),M=(-s-2*b*S)/(3*r),m=(-s+b*(S+sS*Math.sin(w)))/(3*r),I=(-s+b*(S-sS*Math.sin(w)))/(3*r);M>=0&&M<=1&&(a[f++]=M),m>=0&&m<=1&&(a[f++]=m),I>=0&&I<=1&&(a[f++]=I)}}return f}function nn(t,e,i,n,o){var a=6*i-12*e+6*t,r=9*e+3*n-3*t-9*i,s=3*e-3*t,l=0;if($i(r))Ji(a)&&(c=-s/a)>=0&&c<=1&&(o[l++]=c);else{var u=a*a-4*r*s;if($i(u))o[0]=-a/(2*r);else if(u>0){var h=oS(u),c=(-a+h)/(2*r),d=(-a-h)/(2*r);c>=0&&c<=1&&(o[l++]=c),d>=0&&d<=1&&(o[l++]=d)}}return l}function on(t,e,i,n,o,a){var r=(e-t)*o+t,s=(i-e)*o+e,l=(n-i)*o+i,u=(s-r)*o+r,h=(l-s)*o+s,c=(h-u)*o+u;a[0]=t,a[1]=r,a[2]=u,a[3]=c,a[4]=c,a[5]=h,a[6]=l,a[7]=n}function an(t,e,i,n,o,a,r,s,l,u,h){var c,d,f,p,g,m=.005,v=1/0;uS[0]=l,uS[1]=u;for(var y=0;y<1;y+=.05)hS[0]=Qi(t,i,o,r,y),hS[1]=Qi(e,n,a,s,y),(p=hw(uS,hS))=0&&p=0&&c<=1&&(o[l++]=c);else{var u=r*r-4*a*s;if($i(u))(c=-r/(2*a))>=0&&c<=1&&(o[l++]=c);else if(u>0){var h=oS(u),c=(-r+h)/(2*a),d=(-r-h)/(2*a);c>=0&&c<=1&&(o[l++]=c),d>=0&&d<=1&&(o[l++]=d)}}return l}function un(t,e,i){var n=t+i-2*e;return 0===n?.5:(t-e)/n}function hn(t,e,i,n,o){var a=(e-t)*n+t,r=(i-e)*n+e,s=(r-a)*n+a;o[0]=t,o[1]=a,o[2]=s,o[3]=s,o[4]=r,o[5]=i}function cn(t,e,i,n,o,a,r,s,l){var u,h=.005,c=1/0;uS[0]=r,uS[1]=s;for(var d=0;d<1;d+=.05)hS[0]=rn(t,i,o,d),hS[1]=rn(e,n,a,d),(m=hw(uS,hS))=0&&m1e-4)return s[0]=t-i,s[1]=e-n,l[0]=t+i,void(l[1]=e+n);if(vS[0]=gS(o)*i+t,vS[1]=pS(o)*n+e,yS[0]=gS(a)*i+t,yS[1]=pS(a)*n+e,u(s,vS,yS),h(l,vS,yS),(o%=mS)<0&&(o+=mS),(a%=mS)<0&&(a+=mS),o>a&&!r?a+=mS:oo&&(xS[0]=gS(f)*i+t,xS[1]=pS(f)*n+e,u(s,xS,s),h(l,xS,l))}function vn(t,e,i,n,o,a,r){if(0===o)return!1;var s=o,l=0,u=t;if(r>e+s&&r>n+s||rt+s&&a>i+s||ae+c&&h>n+c&&h>a+c&&h>s+c||ht+c&&u>i+c&&u>o+c&&u>r+c||ue+u&&l>n+u&&l>a+u||lt+u&&s>i+u&&s>o+u||si||h+uo&&(o+=RS);var d=Math.atan2(l,s);return d<0&&(d+=RS),d>=n&&d<=o||d+RS>=n&&d+RS<=o}function bn(t,e,i,n,o,a){if(a>e&&a>n||ao?r:0}function Sn(t,e){return Math.abs(t-e)e&&u>n&&u>a&&u>s||u1&&Mn(),c=Qi(e,n,a,s,FS[0]),p>1&&(d=Qi(e,n,a,s,FS[1]))),2===p?me&&s>n&&s>a||s=0&&u<=1){for(var h=0,c=rn(e,n,a,u),d=0;di||s<-i)return 0;u=Math.sqrt(i*i-s*s);GS[0]=-u,GS[1]=u;var l=Math.abs(n-o);if(l<1e-4)return 0;if(l%BS<1e-4){n=0,o=BS;p=a?1:-1;return r>=GS[0]+t&&r<=GS[1]+t?p:0}if(a){var u=n;n=_n(o),o=_n(u)}else n=_n(n),o=_n(o);n>o&&(o+=BS);for(var h=0,c=0;c<2;c++){var d=GS[c];if(d+t>r){var f=Math.atan2(s,d),p=a?1:-1;f<0&&(f=BS+f),(f>=n&&f<=o||f+BS>=n&&f+BS<=o)&&(f>Math.PI/2&&f<1.5*Math.PI&&(p=-p),h+=p)}}return h}function Dn(t,e,i,n,o){for(var a=0,r=0,s=0,l=0,u=0,h=0;h1&&(i||(a+=bn(r,s,l,u,n,o))),1===h&&(l=r=t[h],u=s=t[h+1]),c){case zS.M:r=l=t[h++],s=u=t[h++];break;case zS.L:if(i){if(vn(r,s,t[h],t[h+1],e,n,o))return!0}else a+=bn(r,s,t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case zS.C:if(i){if(yn(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=In(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case zS.Q:if(i){if(xn(r,s,t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=Tn(r,s,t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case zS.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;h>1?a+=bn(r,s,x,_,n,o):(l=x,u=_);var w=(n-d)*g/p+d;if(i){if(wn(d,f,g,m,m+v,y,e,w,o))return!0}else a+=An(d,f,g,m,m+v,y,w,o);r=Math.cos(m+v)*p+d,s=Math.sin(m+v)*g+f;break;case zS.R:l=r=t[h++],u=s=t[h++];var x=l+t[h++],_=u+t[h++];if(i){if(vn(l,u,x,u,e,n,o)||vn(x,u,x,_,e,n,o)||vn(x,_,l,_,e,n,o)||vn(l,_,l,u,e,n,o))return!0}else a+=bn(x,u,x,_,n,o),a+=bn(l,_,l,u,n,o);break;case zS.Z:if(i){if(vn(r,s,l,u,e,n,o))return!0}else a+=bn(r,s,l,u,n,o);r=l,s=u}}return i||Sn(s,u)||(a+=bn(r,s,l,u,n,o)||0),0!==a}function Cn(t,e,i){return Dn(t,0,!1,e,i)}function Ln(t,e,i,n){return Dn(t,e,!0,i,n)}function kn(t){di.call(this,t),this.path=null}function Pn(t,e,i,n,o,a,r,s,l,u,h){var c=l*(QS/180),d=JS(c)*(t-i)/2+$S(c)*(e-n)/2,f=-1*$S(c)*(t-i)/2+JS(c)*(e-n)/2,p=d*d/(r*r)+f*f/(s*s);p>1&&(r*=KS(p),s*=KS(p));var g=(o===a?-1:1)*KS((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+JS(c)*m-$S(c)*v,x=(e+n)/2+$S(c)*m+JS(c)*v,_=iM([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=iM(w,b);eM(w,b)<=-1&&(S=QS),eM(w,b)>=1&&(S=0),0===a&&S>0&&(S-=2*QS),1===a&&S<0&&(S+=2*QS),h.addData(u,y,x,r,s,_,S,c,a)}function Nn(t){if(!t)return new OS;for(var e,i=0,n=0,o=i,a=n,r=new OS,s=OS.CMD,l=t.match(nM),u=0;u=2){if(o&&"spline"!==o){var a=dM(n,o,i,e.smoothConstraint);t.moveTo(n[0][0],n[0][1]);for(var r=n.length,s=0;s<(i?r:r-1);s++){var l=a[2*s],u=a[2*s+1],h=n[(s+1)%r];t.bezierCurveTo(l[0],l[1],u[0],u[1],h[0],h[1])}}else{"spline"===o&&(n=cM(n,i)),t.moveTo(n[0][0],n[0][1]);for(var s=1,c=n.length;s=0)?(i={textFill:null,textStroke:t.textStroke,textStrokeWidth:t.textStrokeWidth},t.textFill="#fff",null==t.textStroke&&(t.textStroke=a,null==t.textStrokeWidth&&(t.textStrokeWidth=2))):null!=a&&(i={textFill:null},t.textFill=a),i&&(t.insideRollback=i)}}function wo(t){var e=t.insideRollback;e&&(t.textFill=e.textFill,t.textStroke=e.textStroke,t.textStrokeWidth=e.textStrokeWidth,t.insideRollback=null)}function bo(t,e){var i=e||e.getModel("textStyle");return P([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 So(t,e,i,n,o,a){if("function"==typeof o&&(a=o,o=null),n&&n.isAnimationEnabled()){var r=t?"Update":"",s=n.getShallow("animationDuration"+r),l=n.getShallow("animationEasing"+r),u=n.getShallow("animationDelay"+r);"function"==typeof u&&(u=u(o,n.getAnimationDelayParams?n.getAnimationDelayParams(e,o):null)),"function"==typeof s&&(s=s(o)),s>0?e.animateTo(i,s,u||0,l,a,!!a):(e.stopAnimation(),e.attr(i),a&&a())}else e.stopAnimation(),e.attr(i),a&&a()}function Mo(t,e,i,n,o){So(!0,t,e,i,n,o)}function Io(t,e,i,n,o){So(!1,t,e,i,n,o)}function To(t,e){for(var i=_t([]);t&&t!==e;)bt(i,t.getLocalTransform(),i),t=t.parent;return i}function Ao(t,e,i){return e&&!c(e)&&(e=Tw.getLocalTransform(e)),i&&(e=Tt([],e)),Q([],t,e)}function Do(t,e,i){var n=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),o=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),a=["left"===t?-n:"right"===t?n:0,"top"===t?-o:"bottom"===t?o:0];return a=Ao(a,e,i),Math.abs(a[0])>Math.abs(a[1])?a[0]>0?"right":"left":a[1]>0?"bottom":"top"}function Co(t,e,i,n){function o(t){var e={position:F(t.position),rotation:t.rotation};return t.shape&&(e.shape=a({},t.shape)),e}if(t&&e){var r=function(t){var e={};return t.traverse(function(t){!t.isGroup&&t.anid&&(e[t.anid]=t)}),e}(t);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=r[t.anid];if(e){var n=o(t);t.attr(o(e)),Mo(t,n,i,t.dataIndex)}}})}}function Lo(t,e){return f(t,function(t){var i=t[0];i=CM(i,e.x),i=LM(i,e.x+e.width);var n=t[1];return n=CM(n,e.y),n=LM(n,e.y+e.height),[i,n]})}function ko(t,e,i){var n=(e=a({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),r(n,i),new fi(e)):Un(t.replace("path://",""),e,i,"center")}function Po(t,e,i){this.parentModel=e,this.ecModel=i,this.option=t}function No(t,e,i){for(var n=0;n0){if(t<=e[0])return i[0];if(t>=e[1])return i[1]}else{if(t>=e[0])return i[0];if(t<=e[1])return i[1]}else{if(t===e[0])return i[0];if(t===e[1])return i[1]}return(t-e[0])/o*a+i[0]}function Bo(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?Ro(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t}function Vo(t,e,i){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),i?t:+t}function Go(t){return t.sort(function(t,e){return t-e}),t}function Fo(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 Wo(t){var e=t.toString(),i=e.indexOf("e");if(i>0){var n=+e.slice(i+1);return n<0?-n:0}var o=e.indexOf(".");return o<0?0:e.length-1-o}function Ho(t,e){var i=Math.log,n=Math.LN10,o=Math.floor(i(t[1]-t[0])/n),a=Math.round(i(Math.abs(e[1]-e[0]))/n),r=Math.min(Math.max(-o+a,0),20);return isFinite(r)?r:20}function Zo(t,e,i){if(!t[e])return 0;var n=p(t,function(t,e){return t+(isNaN(e)?0:e)},0);if(0===n)return 0;for(var o=Math.pow(10,i),a=f(t,function(t){return(isNaN(t)?0:t)/n*o*100}),r=100*o,s=f(a,function(t){return Math.floor(t)}),l=p(s,function(t,e){return t+e},0),u=f(a,function(t,e){return t-s[e]});lh&&(h=u[d],c=d);++s[c],u[c]=0,++l}return s[e]/o}function Uo(t){var e=2*Math.PI;return(t%e+e)%e}function Xo(t){return t>-ZM&&t=-20?+t.toFixed(n<0?-n:0):t}function $o(t){function e(t,i,n){return t.interval[n]=0}function Qo(t){return isNaN(t)?"-":(t=(t+"").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:"")}function ta(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}function ea(t){return null==t?"":(t+"").replace(qM,function(t,e){return KM[e]})}function ia(t,e,i){y(e)||(e=[e]);var n=e.length;if(!n)return"";for(var o=e[0].$vars||[],a=0;a':'':{renderMode:o,content:"{marker"+a+"|} ",style:{color:i}}:""}function aa(t,e){return t+="","0000".substr(0,e-t.length)+t}function ra(t,e,i){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var n=jo(e),o=i?"UTC":"",a=n["get"+o+"FullYear"](),r=n["get"+o+"Month"]()+1,s=n["get"+o+"Date"](),l=n["get"+o+"Hours"](),u=n["get"+o+"Minutes"](),h=n["get"+o+"Seconds"](),c=n["get"+o+"Milliseconds"]();return t=t.replace("MM",aa(r,2)).replace("M",r).replace("yyyy",a).replace("yy",a%100).replace("dd",aa(s,2)).replace("d",s).replace("hh",aa(l,2)).replace("h",l).replace("mm",aa(u,2)).replace("m",u).replace("ss",aa(h,2)).replace("s",h).replace("SSS",aa(c,3))}function sa(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t}function la(t,e,i,n,o){var a=0,r=0;null==n&&(n=1/0),null==o&&(o=1/0);var s=0;e.eachChild(function(l,u){var h,c,d=l.position,f=l.getBoundingRect(),p=e.childAt(u+1),g=p&&p.getBoundingRect();if("horizontal"===t){var m=f.width+(g?-g.x+f.x:0);(h=a+m)>n||l.newline?(a=0,h=m,r+=s+i,s=f.height):s=Math.max(s,f.height)}else{var v=f.height+(g?-g.y+f.y:0);(c=r+v)>o||l.newline?(a+=s+i,r=0,c=v,s=f.width):s=Math.max(s,f.width)}l.newline||(d[0]=a,d[1]=r,"horizontal"===t?a=h+i:r=c+i)})}function ua(t,e,i){var n=e.width,o=e.height,a=Bo(t.x,n),r=Bo(t.y,o),s=Bo(t.x2,n),l=Bo(t.y2,o);return(isNaN(a)||isNaN(parseFloat(t.x)))&&(a=0),(isNaN(s)||isNaN(parseFloat(t.x2)))&&(s=n),(isNaN(r)||isNaN(parseFloat(t.y)))&&(r=0),(isNaN(l)||isNaN(parseFloat(t.y2)))&&(l=o),i=YM(i||0),{width:Math.max(s-a-i[1]-i[3],0),height:Math.max(l-r-i[0]-i[2],0)}}function ha(t,e,i){i=YM(i||0);var n=e.width,o=e.height,a=Bo(t.left,n),r=Bo(t.top,o),s=Bo(t.right,n),l=Bo(t.bottom,o),u=Bo(t.width,n),h=Bo(t.height,o),c=i[2]+i[0],d=i[1]+i[3],f=t.aspect;switch(isNaN(u)&&(u=n-s-d-a),isNaN(h)&&(h=o-l-c-r),null!=f&&(isNaN(u)&&isNaN(h)&&(f>n/o?u=.8*n:h=.8*o),isNaN(u)&&(u=f*h),isNaN(h)&&(h=u/f)),isNaN(a)&&(a=n-s-u-d),isNaN(r)&&(r=o-l-h-c),t.left||t.right){case"center":a=n/2-u/2-i[3];break;case"right":a=n-u-d}switch(t.top||t.bottom){case"middle":case"center":r=o/2-h/2-i[0];break;case"bottom":r=o-h-c}a=a||0,r=r||0,isNaN(u)&&(u=n-d-a-(s||0)),isNaN(h)&&(h=o-c-r-(l||0));var p=new de(a+i[3],r+i[0],u,h);return p.margin=i,p}function ca(t,e,i,n,o){var a=!o||!o.hv||o.hv[0],s=!o||!o.hv||o.hv[1],l=o&&o.boundingMode||"all";if(a||s){var u;if("raw"===l)u="group"===t.type?new de(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(u=t.getBoundingRect(),t.needLocalTransform()){var h=t.getLocalTransform();(u=u.clone()).applyTransform(h)}e=ha(r({width:u.width,height:u.height},e),i,n);var c=t.position,d=a?e.x-u.x:0,f=s?e.y-u.y:0;t.attr("position","raw"===l?[d,f]:[c[0]+d,c[1]+f])}}function da(t,e){return null!=t[oI[e][0]]||null!=t[oI[e][1]]&&null!=t[oI[e][2]]}function fa(t,e,i){function n(i,n){var r={},l=0,u={},h=0;if(iI(i,function(e){u[e]=t[e]}),iI(i,function(t){o(e,t)&&(r[t]=u[t]=e[t]),a(r,t)&&l++,a(u,t)&&h++}),s[n])return a(e,i[1])?u[i[2]]=null:a(e,i[2])&&(u[i[1]]=null),u;if(2!==h&&l){if(l>=2)return r;for(var c=0;ce)return t[n];return t[i-1]}function va(t){var e=t.get("coordinateSystem"),i={coordSysName:e,coordSysDims:[],axisMap:R(),categoryAxisMap:R()},n=dI[e];if(n)return n(t,i,i.axisMap,i.categoryAxisMap),i}function ya(t){return"category"===t.get("type")}function xa(t){this.fromDataset=t.fromDataset,this.data=t.data||(t.sourceFormat===mI?{}:[]),this.sourceFormat=t.sourceFormat||vI,this.seriesLayoutBy=t.seriesLayoutBy||xI,this.dimensionsDefine=t.dimensionsDefine,this.encodeDefine=t.encodeDefine&&R(t.encodeDefine),this.startIndex=t.startIndex||0,this.dimensionsDetectCount=t.dimensionsDetectCount}function _a(t){var e=t.option.source,i=vI;if(S(e))i=yI;else if(y(e)){0===e.length&&(i=pI);for(var n=0,o=e.length;n=e:"max"===i?t<=e:t===e}function Ua(t,e){return t.join(",")===e.join(",")}function Xa(t,e){TI(e=e||{},function(e,i){if(null!=e){var n=t[i];if(sI.hasClass(i)){e=Di(e);var o=Pi(n=Di(n),e);t[i]=DI(o,function(t){return t.option&&t.exist?CI(t.exist,t.option,!0):t.exist||t.option})}else t[i]=CI(n,e,!0)}})}function ja(t){var e=t&&t.itemStyle;if(e)for(var i=0,o=NI.length;i=0;p--){var g=t[p];if(s||(d=g.data.rawIndexOf(g.stackedByDimension,c)),d>=0){var m=g.data.getByRawIndex(g.stackResultDimension,d);if(h>=0&&m>0||h<=0&&m<0){h+=m,f=m;break}}}return n[0]=h,n[1]=f,n});r.hostModel.setData(l),e.data=l})}function ar(t,e){xa.isInstance(t)||(t=xa.seriesDataToSource(t)),this._source=t;var i=this._data=t.data,n=t.sourceFormat;n===yI&&(this._offset=0,this._dimSize=e,this._data=i),a(this,VI[n===pI?n+"_"+t.seriesLayoutBy:n])}function rr(){return this._data.length}function sr(t){return this._data[t]}function lr(t){for(var e=0;ee.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function Sr(t,e){d(t.CHANGABLE_METHODS,function(i){t.wrapMethod(i,v(Mr,e))})}function Mr(t){var e=Ir(t);e&&e.setOutputEnd(this.count())}function Ir(t){var e=(t.ecModel||{}).scheduler,i=e&&e.getPipeline(t.uid);if(i){var n=i.currentTask;if(n){var o=n.agentStubMap;o&&(n=o.get(t.uid))}return n}}function Tr(){this.group=new tb,this.uid=Eo("viewChart"),this.renderTask=pr({plan:Cr,reset:Lr}),this.renderTask.context={view:this}}function Ar(t,e){if(t&&(t.trigger(e),"group"===t.type))for(var i=0;i=0?n():c=setTimeout(n,-a),u=o};return d.clear=function(){c&&(clearTimeout(c),c=null)},d.debounceNextCall=function(t){l=t},d}function Pr(t,e,i,n){var o=t[e];if(o){var a=o[eT]||o,r=o[nT];if(o[iT]!==i||r!==n){if(null==i||!n)return t[e]=a;(o=t[e]=kr(a,i,"debounce"===n))[eT]=a,o[nT]=n,o[iT]=i}return o}}function Nr(t,e){var i=t[e];i&&i[eT]&&(t[e]=i[eT])}function Or(t,e,i,n){this.ecInstance=t,this.api=e,this.unfinished;var i=this._dataProcessorHandlers=i.slice(),n=this._visualHandlers=n.slice();this._allHandlers=i.concat(n),this._stageTaskMap=R()}function Er(t,e,i,n,o){function a(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}o=o||{};var r;d(e,function(e,s){if(!o.visualType||o.visualType===e.visualType){var l=t._stageTaskMap.get(e.uid),u=l.seriesTaskMap,h=l.overallTask;if(h){var c,d=h.agentStubMap;d.each(function(t){a(o,t)&&(t.dirty(),c=!0)}),c&&h.dirty(),uT(h,n);var f=t.getPerformArgs(h,o.block);d.each(function(t){t.perform(f)}),r|=h.perform(f)}else u&&u.each(function(s,l){a(o,s)&&s.dirty();var u=t.getPerformArgs(s,o.block);u.skip=!e.performRawSeries&&i.isSeriesFiltered(s.context.model),uT(s,n),r|=s.perform(u)})}}),t.unfinished|=r}function Rr(t,e,i,n,o){function a(i){var a=i.uid,s=r.get(a)||r.set(a,pr({plan:Wr,reset:Hr,count:Ur}));s.context={model:i,ecModel:n,api:o,useClearVisual:e.isVisual&&!e.isLayout,plan:e.plan,reset:e.reset,scheduler:t},Xr(t,i,s)}var r=i.seriesTaskMap||(i.seriesTaskMap=R()),s=e.seriesType,l=e.getTargetSeries;e.createOnAllSeries?n.eachRawSeries(a):s?n.eachRawSeriesByType(s,a):l&&l(n,o).each(a);var u=t._pipelineMap;r.each(function(t,e){u.get(e)||(t.dispose(),r.removeKey(e))})}function zr(t,e,i,n,o){function a(e){var i=e.uid,n=s.get(i);n||(n=s.set(i,pr({reset:Vr,onDirty:Fr})),r.dirty()),n.context={model:e,overallProgress:h,modifyOutputEnd:c},n.agent=r,n.__block=h,Xr(t,e,n)}var r=i.overallTask=i.overallTask||pr({reset:Br});r.context={ecModel:n,api:o,overallReset:e.overallReset,scheduler:t};var s=r.agentStubMap=r.agentStubMap||R(),l=e.seriesType,u=e.getTargetSeries,h=!0,c=e.modifyOutputEnd;l?n.eachRawSeriesByType(l,a):u?u(n,o).each(a):(h=!1,d(n.getSeries(),a));var f=t._pipelineMap;s.each(function(t,e){f.get(e)||(t.dispose(),r.dirty(),s.removeKey(e))})}function Br(t){t.overallReset(t.ecModel,t.api,t.payload)}function Vr(t,e){return t.overallProgress&&Gr}function Gr(){this.agent.dirty(),this.getDownstream().dirty()}function Fr(){this.agent&&this.agent.dirty()}function Wr(t){return t.plan&&t.plan(t.model,t.ecModel,t.api,t.payload)}function Hr(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=Di(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?f(e,function(t,e){return Zr(e)}):hT}function Zr(t){return function(e,i){var n=i.data,o=i.resetDefines[t];if(o&&o.dataEach)for(var a=e.start;a0?parseInt(n,10)/100:n?parseFloat(n):0;var o=i.getAttribute("stop-color")||"#000000";e.addColorStop(n,o)}i=i.nextSibling}}function Jr(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),r(e.__inheritedStyle,t.__inheritedStyle))}function Qr(t){for(var e=P(t).split(xT),i=[],n=0;n0;a-=2){var r=o[a],s=o[a-1];switch(n=n||xt(),s){case"translate":r=P(r).split(xT),St(n,n,[parseFloat(r[0]),parseFloat(r[1]||0)]);break;case"scale":r=P(r).split(xT),It(n,n,[parseFloat(r[0]),parseFloat(r[1]||r[0])]);break;case"rotate":r=P(r).split(xT),Mt(n,n,parseFloat(r[0]));break;case"skew":r=P(r).split(xT),console.warn("Skew transform is not supported yet");break;case"matrix":r=P(r).split(xT);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)}function ns(t){var e=t.getAttribute("style"),i={};if(!e)return i;var n={};IT.lastIndex=0;for(var o;null!=(o=IT.exec(e));)n[o[1]]=o[2];for(var a in bT)bT.hasOwnProperty(a)&&null!=n[a]&&(i[bT[a]]=n[a]);return i}function os(t,e,i){var n=e/t.width,o=i/t.height,a=Math.min(n,o);return{scale:[a,a],position:[-(t.x+t.width/2)*a+e/2,-(t.y+t.height/2)*a+i/2]}}function as(t,e){return(new Kr).parse(t,e)}function rs(t){return function(e,i,n){e=e&&e.toLowerCase(),fw.prototype[t].call(this,e,i,n)}}function ss(){fw.call(this)}function ls(t,e,n){function o(t,e){return t.__prio-e.__prio}n=n||{},"string"==typeof e&&(e=KT[e]),this.id,this.group,this._dom=t;var a=this._zr=Ii(t,{renderer:n.renderer||"canvas",devicePixelRatio:n.devicePixelRatio,width:n.width,height:n.height});this._throttledZrFlush=kr(m(a.flush,a),17),(e=i(e))&&zI(e,!0),this._theme=e,this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._coordSysMgr=new Ga;var r=this._api=Ts(this);_e(qT,o),_e(XT,o),this._scheduler=new Or(this,r,XT,qT),fw.call(this,this._ecEventProcessor=new As),this._messageCenter=new ss,this._initEvents(),this.resize=m(this.resize,this),this._pendingActions=[],a.animation.on("frame",this._onframe,this),ms(a,this),N(this)}function us(t,e,i){var n,o=this._model,a=this._coordSysMgr.getCoordinateSystems();e=Vi(o,e);for(var r=0;re.get("hoverLayerThreshold")&&!U_.node&&i.traverse(function(t){t.isGroup||(t.useHoverLayer=!0)})}function Ms(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)})})}function Is(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 Ts(t){var e=t._coordSysMgr;return a(new Va(t),{getCoordinateSystems:m(e.getCoordinateSystems,e),getComponentByElement:function(e){for(;e;){var i=e.__ecComponentInfo;if(null!=i)return t._model.getComponent(i.mainType,i.index);e=e.parent}}})}function As(){this.eventInfo}function Ds(t){function e(t,e){for(var n=0;n65535?uA:cA}function $s(t){var e=t.constructor;return e===Array?t.slice():new e(t)}function Js(t,e){d(dA.concat(e.__wrappedMethods||[]),function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t.__wrappedMethods=e.__wrappedMethods,d(fA,function(n){t[n]=i(e[n])}),t._calculationInfo=a(e._calculationInfo)}function Qs(t,e,i,n,o){var a=lA[e.type],r=n-1,s=e.name,l=t[s][r];if(l&&l.length=0?this._indices[t]:-1}function ol(t,e){var i=t._idList[e];return null==i&&(i=el(t,t._idDimIdx,e)),null==i&&(i=sA+e),i}function al(t){return y(t)||(t=[t]),t}function rl(t,e){var i=t.dimensions,n=new pA(f(i,t.getDimensionInfo,t),t.hostModel);Js(n,t);for(var o=n._storage={},a=t._storage,r=0;r=0?(o[s]=sl(a[s]),n._rawExtent[s]=ll(),n._extent[s]=null):o[s]=a[s])}return n}function sl(t){for(var e=new Array(t.length),i=0;in&&(r=o.interval=n);var s=o.intervalPrecision=Sl(r);return Il(o.niceTickExtent=[wA(Math.ceil(t[0]/r)*r,s),wA(Math.floor(t[1]/r)*r,s)],t),o}function Sl(t){return Wo(t)+2}function Ml(t,e,i){t[e]=Math.max(Math.min(t[e],i[1]),i[0])}function Il(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),Ml(t,0,e),Ml(t,1,e),t[0]>t[1]&&(t[0]=t[1])}function Tl(t,e,i,n){var o=[];if(!t)return o;e[0]1e4)return[];return e[1]>(o.length?o[o.length-1]:i[1])&&o.push(e[1]),o}function Al(t){return t.get("stack")||MA+t.seriesIndex}function Dl(t){return t.dim+t.index}function Cl(t){var e=[],i=t.axis;if("category"===i.type){for(var n=i.getBandWidth(),o=0;o=0?"p":"n",b=m;p&&(o[r][_]||(o[r][_]={p:m,n:m}),b=o[r][_][w]);var S,M,I,T;if(g)S=b,M=(A=i.dataToPoint([x,_]))[1]+l,I=A[0]-m,T=u,Math.abs(I)a[1]?(n=a[1],o=a[0]):(n=a[0],o=a[1]);var r=e.toGlobalCoord(e.dataToCoord(0));return ro&&(r=o),r}function Bl(t,e){return RA(t,EA(e))}function Vl(t,e){var i,n,o,a=t.type,r=e.getMin(),s=e.getMax(),l=null!=r,u=null!=s,h=t.getExtent();"ordinal"===a?i=e.getCategories().length:(y(n=e.get("boundaryGap"))||(n=[n||0,n||0]),"boolean"==typeof n[0]&&(n=[0,0]),n[0]=Bo(n[0],1),n[1]=Bo(n[1],1),o=h[1]-h[0]||Math.abs(h[0])),null==r&&(r="ordinal"===a?i?0:NaN:h[0]-n[0]*o),null==s&&(s="ordinal"===a?i?i-1:NaN:h[1]+n[1]*o),"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(I(r)||I(s)||"ordinal"===a&&!t.getOrdinalMeta().categories.length),e.getNeedCrossZero()&&(r>0&&s>0&&!l&&(r=0),r<0&&s<0&&!u&&(s=0));var c=e.ecModel;if(c&&"time"===a){var f,p=Ll("bar",c);if(d(p,function(t){f|=t.getBaseAxis()===e.axis}),f){var g=kl(p),m=Gl(r,s,e,g);r=m.min,s=m.max}}return[r,s]}function Gl(t,e,i,n){var o=i.axis.getExtent(),a=o[1]-o[0],r=Nl(n,i.axis);if(void 0===r)return{min:t,max:e};var s=1/0;d(r,function(t){s=Math.min(t.offset,s)});var l=-1/0;d(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)/a)-h;return e+=c*(l/u),t-=c*(s/u),{min:t,max:e}}function Fl(t,e){var i=Vl(t,e),n=null!=e.getMin(),o=null!=e.getMax(),a=e.get("splitNumber");"log"===t.type&&(t.base=e.get("logBase"));var r=t.type;t.setExtent(i[0],i[1]),t.niceExtent({splitNumber:a,fixMin:n,fixMax:o,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 Wl(t,e){if(e=e||t.get("type"))switch(e){case"category":return new _A(t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),[1/0,-1/0]);case"value":return new SA;default:return(yl.getClass(e)||SA).create(t)}}function Hl(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(i>0&&n>0||i<0&&n<0)}function Zl(t){var e=t.getLabelModel().get("formatter"),i="category"===t.type?t.scale.getExtent()[0]:null;return"string"==typeof e?e=function(e){return function(i){return i=t.scale.getLabel(i),e.replace("{value}",null!=i?i:"")}}(e):"function"==typeof e?function(n,o){return null!=i&&(o=n-i),e(Ul(t,n),o)}:function(e){return t.scale.getLabel(e)}}function Ul(t,e){return"category"===t.type?t.scale.getLabel(e):e}function Xl(t){var e=t.model,i=t.scale;if(e.get("axisLabel.show")&&!i.isBlank()){var n,o,a="category"===t.type,r=i.getExtent();o=a?i.count():(n=i.getTicks()).length;var s,l=t.getLabelModel(),u=Zl(t),h=1;o>40&&(h=Math.ceil(o/40));for(var c=0;c>1^-(1&s),l=l>>1^-(1&l),o=s+=o,a=l+=a,n.push([s/i,l/i])}return n}function nu(t){return"category"===t.type?au(t):lu(t)}function ou(t,e){return"category"===t.type?su(t,e):{ticks:t.scale.getTicks()}}function au(t){var e=t.getLabelModel(),i=ru(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:i.labelCategoryInterval}:i}function ru(t,e){var i=uu(t,"labels"),n=Yl(e),o=hu(i,n);if(o)return o;var a,r;return a=x(n)?mu(t,n):gu(t,r="auto"===n?du(t):n),cu(i,n,{labels:a,labelCategoryInterval:r})}function su(t,e){var i=uu(t,"ticks"),n=Yl(e),o=hu(i,n);if(o)return o;var a,r;if(e.get("show")&&!t.scale.isBlank()||(a=[]),x(n))a=mu(t,n,!0);else if("auto"===n){var s=ru(t,t.getLabelModel());r=s.labelCategoryInterval,a=f(s.labels,function(t){return t.tickValue})}else a=gu(t,r=n,!0);return cu(i,n,{ticks:a,tickCategoryInterval:r})}function lu(t){var e=t.scale.getTicks(),i=Zl(t);return{labels:f(e,function(e,n){return{formattedLabel:i(e,n),rawLabel:t.scale.getLabel(e),tickValue:e}})}}function uu(t,e){return tD(t)[e]||(tD(t)[e]=[])}function hu(t,e){for(var i=0;i40&&(s=Math.max(1,Math.floor(r/40)));for(var l=a[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<=a[1];l+=s){var p=0,g=0,m=ke(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))),_=tD(t.model),w=_.lastAutoInterval,b=_.lastTickCount;return null!=w&&null!=b&&Math.abs(w-x)<=1&&Math.abs(b-r)<=1&&w>x?x=w:(_.lastTickCount=r,_.lastAutoInterval=x),x}function pu(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()}}function gu(t,e,i){function n(t){l.push(i?t:{formattedLabel:o(t),rawLabel:a.getLabel(t),tickValue:t})}var o=Zl(t),a=t.scale,r=a.getExtent(),s=t.getLabelModel(),l=[],u=Math.max((e||0)+1,1),h=r[0],c=a.count();0!==h&&u>1&&c/u>2&&(h=Math.round(Math.ceil(h/u)*u));var d=ql(t),f=s.get("showMinLabel")||d,p=s.get("showMaxLabel")||d;f&&h!==r[0]&&n(r[0]);for(var g=h;g<=r[1];g+=u)n(g);return p&&g!==r[1]&&n(r[1]),l}function mu(t,e,i){var n=t.scale,o=Zl(t),a=[];return d(n.getTicks(),function(t){var r=n.getLabel(t);e(t,r)&&a.push(i?t:{formattedLabel:o(t),rawLabel:r,tickValue:t})}),a}function vu(t,e){var i=(t[1]-t[0])/e/2;t[0]+=i,t[1]-=i}function yu(t,e,i,n,o){function a(t,e){return h?t>e:t0&&(t.coord-=u/(2*(e+1)))}),s={coord:e[r-1].coord+u},e.push(s)}var h=l[0]>l[1];a(e[0].coord,l[0])&&(o?e[0].coord=l[0]:e.shift()),o&&a(l[0],e[0].coord)&&e.unshift({coord:l[0]}),a(l[1],s.coord)&&(o?s.coord=l[1]:e.pop()),o&&a(s.coord,l[1])&&e.push({coord:l[1]})}}function xu(t,e){var i=t.mapDimension("defaultedLabel",!0),n=i.length;if(1===n)return dr(t,e,i[0]);if(n){for(var o=[],a=0;a0?i=n[0]:n[1]<0&&(i=n[1]),i}function Nu(t,e,i,n){var o=NaN;t.stacked&&(o=i.get(i.getCalculationInfo("stackedOverDimension"),n)),isNaN(o)&&(o=t.valueStart);var a=t.baseDataOffset,r=[];return r[a]=i.get(t.baseDim,n),r[1-a]=o,e.dataToPoint(r)}function Ou(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}function Eu(t){return isNaN(t[0])||isNaN(t[1])}function Ru(t,e,i,n,o,a,r,s,l,u,h){return"none"!==u&&u?zu.apply(this,arguments):Bu.apply(this,arguments)}function zu(t,e,i,n,o,a,r,s,l,u,h){for(var c=0,d=i,f=0;f=o||d<0)break;if(Eu(p)){if(h){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]);else if(l>0){var g=e[c],m="y"===u?1:0,v=(p[m]-g[m])*l;vD(xD,g),xD[m]=g[m]+v,vD(_D,p),_D[m]=p[m]-v,t.bezierCurveTo(xD[0],xD[1],_D[0],_D[1],p[0],p[1])}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Bu(t,e,i,n,o,a,r,s,l,u,h){for(var c=0,d=i,f=0;f=o||d<0)break;if(Eu(p)){if(h){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]),vD(xD,p);else if(l>0){var g=d+a,m=e[g];if(h)for(;m&&Eu(e[g]);)m=e[g+=a];var v=.5,y=e[c];if(!(m=e[g])||Eu(m))vD(_D,p);else{Eu(m)&&!h&&(m=p),U(yD,m,y);var x,_;if("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=uw(p,y),_=uw(p,m);mD(_D,p,yD,-l*(1-(v=_/(_+x))))}pD(xD,xD,s),gD(xD,xD,r),pD(_D,_D,s),gD(_D,_D,r),t.bezierCurveTo(xD[0],xD[1],_D[0],_D[1],p[0],p[1]),mD(xD,p,yD,l*v)}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Vu(t,e){var i=[1/0,1/0],n=[-1/0,-1/0];if(e)for(var o=0;on[0]&&(n[0]=a[0]),a[1]>n[1]&&(n[1]=a[1])}return{min:e?i:n,max:e?n:i}}function Gu(t,e){if(t.length===e.length){for(var i=0;ie[0]?1:-1;e[0]+=n*i,e[1]-=n*i}return e}function Hu(t,e,i){if(!i.valueDim)return[];for(var n=[],o=0,a=e.count();oa[1]&&a.reverse();var r=o.getExtent(),s=Math.PI/180;i&&(a[0]-=.5,a[1]+=.5);var l=new uM({shape:{cx:Vo(t.cx,1),cy:Vo(t.cy,1),r0:Vo(a[0],1),r:Vo(a[1],1),startAngle:-r[0]*s,endAngle:-r[1]*s,clockwise:o.inverse}});return e&&(l.shape.endAngle=-r[0]*s,Io(l,{shape:{endAngle:-r[1]*s}},n)),l}function Xu(t,e,i,n){return"polar"===t.type?Uu(t,e,i,n):Zu(t,e,i,n)}function ju(t,e,i){for(var n=e.getBaseAxis(),o="x"===n.dim||"radius"===n.dim?0:1,a=[],r=0;r=0;a--){var r=i[a].dimension,s=t.dimensions[r],l=t.getDimensionInfo(s);if("x"===(n=l&&l.coordDim)||"y"===n){o=i[a];break}}if(o){var u=e.getAxis(n),h=f(o.stops,function(t){return{coord:u.toGlobalCoord(u.dataToCoord(t.value)),color:t.color}}),c=h.length,p=o.outerColors.slice();c&&h[0].coord>h[c-1].coord&&(h.reverse(),p.reverse());var g=h[0].coord-10,m=h[c-1].coord+10,v=m-g;if(v<.001)return"transparent";d(h,function(t){t.offset=(t.coord-g)/v}),h.push({offset:c?h[c-1].offset:.5,color:p[1]||"transparent"}),h.unshift({offset:c?h[0].offset:.5,color:p[0]||"transparent"});var y=new IM(0,0,0,0,h,!0);return y[n]=g,y[n+"2"]=m,y}}}function qu(t,e,i){var n=t.get("showAllSymbol"),o="auto"===n;if(!n||o){var a=i.getAxesByScale("ordinal")[0];if(a&&(!o||!Ku(a,e))){var r=e.mapDimension(a.dim),s={};return d(a.getViewLabels(),function(t){s[t.tickValue]=1}),function(t){return!s.hasOwnProperty(e.get(r,t))}}}}function Ku(t,e){var i=t.getExtent(),n=Math.abs(i[1]-i[0])/t.scale.count();isNaN(n)&&(n=0);for(var o=e.count(),a=Math.max(1,Math.round(o/5)),r=0;rn)return!1;return!0}function $u(t){return this._axes[t]}function Ju(t){AD.call(this,t)}function Qu(t,e){return e.type||(e.data?"category":"value")}function th(t,e,i){return t.getCoordSysModel()===e}function eh(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this.model=t}function ih(t,e,i,n){function o(t){return t.dim+"_"+t.index}i.getAxesOnZeroOf=function(){return a?[a]:[]};var a,r=t[e],s=i.model,l=s.get("axisLine.onZero"),u=s.get("axisLine.onZeroAxisIndex");if(l){if(null!=u)nh(r[u])&&(a=r[u]);else for(var h in r)if(r.hasOwnProperty(h)&&nh(r[h])&&!n[o(r[h])]){a=r[h];break}a&&(n[o(a)]=!0)}}function nh(t){return t&&"category"!==t.type&&"time"!==t.type&&Hl(t)}function oh(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}}function ah(t,e){return f(RD,function(e){return t.getReferringComponents(e)[0]})}function rh(t){return"cartesian2d"===t.get("coordinateSystem")}function sh(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e}function lh(t,e,i,n){var o,a,r=Uo(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;return Xo(r-zD/2)?(a=l?"bottom":"top",o="center"):Xo(r-1.5*zD)?(a=l?"top":"bottom",o="center"):(a="middle",o=r<1.5*zD&&r>zD/2?l?"left":"right":l?"right":"left"),{rotation:r,textAlign:o,textVerticalAlign:a}}function uh(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}function hh(t,e,i){if(!ql(t.axis)){var n=t.get("axisLabel.showMinLabel"),o=t.get("axisLabel.showMaxLabel");e=e||[],i=i||[];var a=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?(ch(a),ch(u)):dh(a,r)&&(n?(ch(r),ch(h)):(ch(a),ch(u))),!1===o?(ch(s),ch(c)):dh(l,s)&&(o?(ch(l),ch(d)):(ch(s),ch(c)))}}function ch(t){t&&(t.ignore=!0)}function dh(t,e,i){var n=t&&t.getBoundingRect().clone(),o=e&&e.getBoundingRect().clone();if(n&&o){var a=_t([]);return Mt(a,a,-t.rotation),n.applyTransform(bt([],a,t.getLocalTransform())),o.applyTransform(bt([],a,e.getLocalTransform())),n.intersect(o)}}function fh(t){return"middle"===t||"center"===t}function ph(t,e,i){var n=e.axis;if(e.get("axisTick.show")&&!n.scale.isBlank()){for(var o=e.getModel("axisTick"),a=o.getModel("lineStyle"),s=o.get("length"),l=n.getTicksCoords(),u=[],h=[],c=t._transform,d=[],f=0;f=0||t===e}function bh(t){var e=Sh(t);if(e){var i=e.axisPointerModel,n=e.axis.scale,o=i.option,a=i.get("status"),r=i.get("value");null!=r&&(r=n.parse(r));var s=Ih(i);null==a&&(o.status=s?"show":"hide");var l=n.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==r||r>l[1])&&(r=l[1]),r0?"bottom":"top":o.width>0?"left":"right";l||Lh(t.style,d,n,u,a,i,p),co(t,d)}function Eh(t,e){var i=t.get($D)||0;return Math.min(i,Math.abs(e.width),Math.abs(e.height))}function Rh(t,e,i){var n=t.getData(),o=[],a=n.getLayout("valueAxisHorizontal")?1:0;o[1-a]=n.getLayout("valueAxisStart");var r=new tC({shape:{points:n.getLayout("largePoints")},incremental:!!i,__startPoint:o,__valueIdx:a});e.add(r),zh(r,t,n)}function zh(t,e,i){var n=i.getVisual("borderColor")||i.getVisual("color"),o=e.getModel("itemStyle").getItemStyle(["color","borderColor"]);t.useStyle(o),t.style.fill=null,t.style.stroke=n,t.style.lineWidth=i.getLayout("barWidth")}function Bh(t,e,i,n){var o=e.getData(),a=this.dataIndex,r=o.getName(a),s=e.get("selectedOffset");n.dispatchAction({type:"pieToggleSelect",from:t,name:r,seriesId:e.id}),o.each(function(t){Vh(o.getItemGraphicEl(t),o.getItemLayout(t),e.isSelected(o.getName(t)),s,i)})}function Vh(t,e,i,n,o){var a=(e.startAngle+e.endAngle)/2,r=Math.cos(a),s=Math.sin(a),l=i?n:0,u=[r*l,s*l];o?t.animate().when(200,{position:u}).start("bounceOut"):t.attr("position",u)}function Gh(t,e){function i(){a.ignore=a.hoverIgnore,r.ignore=r.hoverIgnore}function n(){a.ignore=a.normalIgnore,r.ignore=r.normalIgnore}tb.call(this);var o=new uM({z2:2}),a=new pM,r=new aM;this.add(o),this.add(a),this.add(r),this.updateData(t,e,!0),this.on("emphasis",i).on("normal",n).on("mouseover",i).on("mouseout",n)}function Fh(t,e,i,n,o,a,r){function s(e,i){for(var n=e;n>=0&&(t[n].y-=i,!(n>0&&t[n].y>t[n-1].y+t[n-1].height));n--);}function l(t,e,i,n,o,a){for(var r=e?Number.MAX_VALUE:0,s=0,l=t.length;s=r&&(d=r-10),!e&&d<=r&&(d=r+10),t[s].x=i+d*a,r=d}}t.sort(function(t,e){return t.y-e.y});for(var u,h=0,c=t.length,d=[],f=[],p=0;pe&&a+1t[a].y+t[a].height)return void s(a,n/2);s(i-1,n/2)}(p,c,-u),h=t[p].y+t[p].height;r-h<0&&s(c-1,h-r);for(p=0;p=i?f.push(t[p]):d.push(t[p]);l(d,!1,e,i,n,o),l(f,!0,e,i,n,o)}function Wh(t,e,i,n,o,a){for(var r=[],s=[],l=0;l3?1.4:o>1?1.2:1.1;uc(this,"zoom","zoomOnMouseWheel",t,{scale:n>0?s:1/s,originX:a,originY:r})}if(i){var l=Math.abs(n);uc(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(n>0?1:-1)*(l>3?.4:l>1?.15:.05),originX:a,originY:r})}}}function lc(t){ec(this._zr,"globalPan")||uc(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY})}function uc(t,e,i,n,o){t.pointerChecker&&t.pointerChecker(n,o.originX,o.originY)&&(mw(n.event),hc(t,e,i,n,o))}function hc(t,e,i,n,o){o.isAvailableBehavior=m(cc,null,i,n),t.trigger(e,o)}function cc(t,e,i){var n=i[t];return!t||n&&(!_(n)||e.event[n+"Key"])}function dc(t,e,i){var n=t.target,o=n.position;o[0]+=e,o[1]+=i,n.dirty()}function fc(t,e,i,n){var o=t.target,a=t.zoomLimit,r=o.position,s=o.scale,l=t.zoom=t.zoom||1;if(l*=e,a){var u=a.min||0,h=a.max||1/0;l=Math.max(Math.min(h,l),u)}var c=l/t.zoom;t.zoom=l,r[0]-=(i-r[0])*(c-1),r[1]-=(n-r[1])*(c-1),s[0]*=c,s[1]*=c,o.dirty()}function pc(t,e,i){var n=e.getComponentByElement(t.topTarget),o=n&&n.coordinateSystem;return n&&n!==i&&!NC[n.mainType]&&o&&o.model!==i}function gc(t,e){var i=t.getItemStyle(),n=t.get("areaColor");return null!=n&&(i.fill=n),i}function mc(t,e,i,n,o){i.off("click"),i.off("mousedown"),e.get("selectedMode")&&(i.on("mousedown",function(){t._mouseDownFlag=!0}),i.on("click",function(a){if(t._mouseDownFlag){t._mouseDownFlag=!1;for(var r=a.target;!r.__regions;)r=r.parent;if(r){var s={type:("geo"===e.mainType?"geo":"map")+"ToggleSelect",batch:f(r.__regions,function(t){return{name:t.name,from:o.uid}})};s[e.mainType+"Id"]=e.id,n.dispatchAction(s),vc(e,i)}}}))}function vc(t,e){e.eachChild(function(e){d(e.__regions,function(i){e.trigger(t.isSelected(i.name)?"emphasis":"normal")})})}function yc(t,e){var i=new tb;this.uid=Eo("ec_map_draw"),this._controller=new nc(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 tb),i.add(this._backgroundGroup=new tb)}function xc(t){var e=this[OC];e&&e.recordVersion===this[EC]&&_c(e,t)}function _c(t,e){var i=t.circle,n=t.labelModel,o=t.hoverLabelModel,a=t.emphasisText,r=t.normalText;e?(i.style.extendFrom(go({},o,{text:o.get("show")?a:null},{isRectText:!0,useInsideStyle:!1},!0)),i.__mapOriginalZ2=i.z2,i.z2+=PM):(go(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 wc(t,e,i){var n=t.getZoom(),o=t.getCenter(),a=e.zoom,r=t.dataToPoint(o);if(null!=e.dx&&null!=e.dy){r[0]-=e.dx,r[1]-=e.dy;o=t.pointToData(r);t.setCenter(o)}if(null!=a){if(i){var s=i.min||0,l=i.max||1/0;a=Math.max(Math.min(n*a,l),s)/n}t.scale[0]*=a,t.scale[1]*=a;var u=t.position,h=(e.originX-u[0])*(a-1),c=(e.originY-u[1])*(a-1);u[0]-=h,u[1]-=c,t.updateTransform();o=t.pointToData(r);t.setCenter(o),t.setZoom(a*n)}return{center:t.getCenter(),zoom:t.getZoom()}}function bc(){Tw.call(this)}function Sc(t){this.name=t,this.zoomLimit,Tw.call(this),this._roamTransformable=new bc,this._rawTransformable=new bc,this._center,this._zoom}function Mc(t,e,i,n){var o=i.seriesModel,a=o?o.coordinateSystem:null;return a===this?a[t](n):null}function Ic(t,e,i,n){Sc.call(this,t),this.map=e;var o=kC.load(e,i);this._nameCoordMap=o.nameCoordMap,this._regionsMap=o.regionsMap,this._invertLongitute=null==n||n,this.regions=o.regions,this._rect=o.boundingRect}function Tc(t,e,i,n){var o=i.geoModel,a=i.seriesModel,r=o?o.coordinateSystem:a?a.coordinateSystem||(a.getReferringComponents("geo")[0]||{}).coordinateSystem:null;return r===this?r[t](n):null}function Ac(t,e){var i=t.get("boundingCoords");if(null!=i){var n=i[0],o=i[1];isNaN(n[0])||isNaN(n[1])||isNaN(o[0])||isNaN(o[1])||this.setBoundingRect(n[0],n[1],o[0]-n[0],o[1]-n[1])}var a,r=this.getBoundingRect(),s=t.get("layoutCenter"),l=t.get("layoutSize"),u=e.getWidth(),h=e.getHeight(),c=r.width/r.height*this.aspectScale,d=!1;s&&l&&(s=[Bo(s[0],u),Bo(s[1],h)],l=Bo(l,Math.min(u,h)),isNaN(s[0])||isNaN(s[1])||isNaN(l)||(d=!0));if(d){var f={};c>1?(f.width=l,f.height=l/c):(f.height=l,f.width=l*c),f.y=s[1]-f.height/2,f.x=s[0]-f.width/2}else(a=t.getBoxLayoutParams()).aspect=c,f=ha(a,{width:u,height:h});this.setViewRect(f.x,f.y,f.width,f.height),this.setCenter(t.get("center")),this.setZoom(t.get("zoom"))}function Dc(t,e){d(e.get("geoCoord"),function(e,i){t.addGeoCoord(i,e)})}function Cc(t,e){var i={};return d(t,function(t){t.each(t.mapDimension("value"),function(e,n){var o="ec-"+t.getName(n);i[o]=i[o]||[],isNaN(e)||i[o].push(e)})}),t[0].map(t[0].mapDimension("value"),function(n,o){for(var a="ec-"+t[0].getName(o),r=0,s=1/0,l=-1/0,u=i[a].length,h=0;h=0;o--){var a=i[o];a.hierNode={defaultAncestor:null,ancestor:a,prelim:0,modifier:0,change:0,shift:0,i:o,thread:null},n.push(a)}}function Fc(t,e){var i=t.isExpand?t.children:[],n=t.parentNode.children,o=t.hierNode.i?n[t.hierNode.i-1]:null;if(i.length){Xc(t);var a=(i[0].hierNode.prelim+i[i.length-1].hierNode.prelim)/2;o?(t.hierNode.prelim=o.hierNode.prelim+e(t,o),t.hierNode.modifier=t.hierNode.prelim-a):t.hierNode.prelim=a}else o&&(t.hierNode.prelim=o.hierNode.prelim+e(t,o));t.parentNode.hierNode.defaultAncestor=jc(t,o,t.parentNode.hierNode.defaultAncestor||n[0],e)}function Wc(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t.setLayout({x:e},!0),t.hierNode.modifier+=t.parentNode.hierNode.modifier}function Hc(t){return arguments.length?t:Jc}function Zc(t,e){var i={};return t-=Math.PI/2,i.x=e*Math.cos(t),i.y=e*Math.sin(t),i}function Uc(t,e){return ha(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function Xc(t){for(var e=t.children,i=e.length,n=0,o=0;--i>=0;){var a=e[i];a.hierNode.prelim+=n,a.hierNode.modifier+=n,o+=a.hierNode.change,n+=a.hierNode.shift+o}}function jc(t,e,i,n){if(e){for(var o=t,a=t,r=a.parentNode.children[0],s=e,l=o.hierNode.modifier,u=a.hierNode.modifier,h=r.hierNode.modifier,c=s.hierNode.modifier;s=Yc(s),a=qc(a),s&&a;){o=Yc(o),r=qc(r),o.hierNode.ancestor=t;var d=s.hierNode.prelim+c-a.hierNode.prelim-u+n(s,a);d>0&&($c(Kc(s,t,i),t,d),u+=d,l+=d),c+=s.hierNode.modifier,u+=a.hierNode.modifier,l+=o.hierNode.modifier,h+=r.hierNode.modifier}s&&!Yc(o)&&(o.hierNode.thread=s,o.hierNode.modifier+=c-l),a&&!qc(r)&&(r.hierNode.thread=a,r.hierNode.modifier+=u-h,i=t)}return i}function Yc(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1]:t.hierNode.thread}function qc(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierNode.thread}function Kc(t,e,i){return t.hierNode.ancestor.parentNode===e.parentNode?t.hierNode.ancestor:i}function $c(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 Jc(t,e){return t.parentNode===e.parentNode?1:2}function Qc(t,e){var i=t.getItemLayout(e);return i&&!isNaN(i.x)&&!isNaN(i.y)&&"none"!==t.getItemVisual(e,"symbol")}function td(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 ed(t,e,i,n,o,a){var s=!i,l=t.tree.getNodeByDataIndex(e),a=td(l,l.getModel(),a),u=t.tree.root,h=l.parentNode===u?l:l.parentNode||l,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=l.getLayout();s?(i=new _u(t,e,a)).attr("position",[f.x,f.y]):i.updateData(t,e,a),i.__radialOldRawX=i.__radialRawX,i.__radialOldRawY=i.__radialRawY,i.__radialRawX=p.rawX,i.__radialRawY=p.rawY,n.add(i),t.setItemGraphicEl(e,i),Mo(i,{position:[p.x,p.y]},o);var g=i.getSymbolPath();if("radial"===a.layout){var m,v,y=u.children[0],x=y.getLayout(),_=y.children.length;if(p.x===x.x&&!0===l.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.xx.x)||(m-=Math.PI);var b=v?"left":"right";g.setStyle({textPosition:b,textRotation:-m,textOrigin:"center",verticalAlign:"middle"})}if(l.parentNode&&l.parentNode!==u){var S=i.__edge;S||(S=i.__edge=new wM({shape:nd(a,f,f),style:r({opacity:0,strokeNoScale:!0},a.lineStyle)})),Mo(S,{shape:nd(a,d,p),style:{opacity:1}},o),n.add(S)}}function id(t,e,i,n,o,a){for(var r,s=t.tree.getNodeByDataIndex(e),l=t.tree.root,a=td(s,s.getModel(),a),u=s.parentNode===l?s:s.parentNode||s;null==(r=u.getLayout());)u=u.parentNode===l?u:u.parentNode||u;Mo(i,{position:[r.x+1,r.y+1]},o,function(){n.remove(i),t.setItemGraphicEl(e,null)}),i.fadeOut(null,{keepLabel:!0});var h=i.__edge;h&&Mo(h,{shape:nd(a,r,r),style:{opacity:0}},o,function(){n.remove(h)})}function nd(t,e,i){var n,o,a,r,s,l,u,h,c=t.orient;if("radial"===t.layout){s=e.rawX,u=e.rawY,l=i.rawX,h=i.rawY;var d=Zc(s,u),f=Zc(s,u+(h-u)*t.curvature),p=Zc(l,h+(u-h)*t.curvature),g=Zc(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}}return s=e.x,u=e.y,l=i.x,h=i.y,"LR"!==c&&"RL"!==c||(n=s+(l-s)*t.curvature,o=u,a=l+(s-l)*t.curvature,r=h),"TB"!==c&&"BT"!==c||(n=s,o=u+(h-u)*t.curvature,a=l,r=h+(u-h)*t.curvature),{x1:s,y1:u,x2:l,y2:h,cpx1:n,cpy1:o,cpx2:a,cpy2:r}}function od(t,e,i){for(var n,o=[t],a=[];n=o.pop();)if(a.push(n),n.isExpand){var r=n.children;if(r.length)for(var s=0;s=0;a--)n.push(o[a])}}function rd(t,e){var i=Uc(t,e);t.layoutInfo=i;var n=t.get("layout"),o=0,a=0,r=null;"radial"===n?(o=2*Math.PI,a=Math.min(i.height,i.width)/2,r=Hc(function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth})):(o=i.width,a=i.height,r=Hc());var s=t.getData().tree.root,l=s.children[0];if(l){Gc(s),od(l,Fc,r),s.hierNode.modifier=-l.hierNode.prelim,ad(l,Wc);var u=l,h=l,c=l;ad(l,function(t){var e=t.getLayout().x;eh.getLayout().x&&(h=t),t.depth>c.depth&&(c=t)});var d=u===h?1:r(u,h)/2,f=d-u.getLayout().x,p=0,g=0,m=0,v=0;if("radial"===n)p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),ad(l,function(t){m=(t.getLayout().x+f)*p,v=(t.depth-1)*g;var e=Zc(m,v);t.setLayout({x:e.x,y:e.y,rawX:m,rawY:v},!0)});else{var y=t.getOrient();"RL"===y||"LR"===y?(g=a/(h.getLayout().x+d+f),p=o/(c.depth-1||1),ad(l,function(t){v=(t.getLayout().x+f)*g,m="LR"===y?(t.depth-1)*p:o-(t.depth-1)*p,t.setLayout({x:m,y:v},!0)})):"TB"!==y&&"BT"!==y||(p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),ad(l,function(t){m=(t.getLayout().x+f)*p,v="TB"===y?(t.depth-1)*g:a-(t.depth-1)*g,t.setLayout({x:m,y:v},!0)}))}}}function sd(t,e,i){if(t&&l(e,t.type)>=0){var n=i.getData().tree.root,o=t.targetNode;if("string"==typeof o&&(o=n.getNodeById(o)),o&&n.contains(o))return{node:o};var a=t.targetNodeId;if(null!=a&&(o=n.getNodeById(a)))return{node:o}}}function ld(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function ud(t,e){return l(ld(t),e)>=0}function hd(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}function cd(t){var e=0;d(t.children,function(t){cd(t);var i=t.value;y(i)&&(i=i[0]),e+=i});var i=t.value;y(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),y(t.value)?t.value[0]=i:t.value=i}function dd(t,e){var i=e.get("color");if(i){var n;return d(t=t||[],function(t){var e=new Po(t),i=e.get("color");(e.get("itemStyle.color")||i&&"none"!==i)&&(n=!0)}),n||((t[0]||(t[0]={})).color=i.slice()),t}}function fd(t){this.group=new tb,t.add(this.group)}function pd(t,e,i,n,o,a){var r=[[o?t:t-WC,e],[t+i,e],[t+i,e+n],[o?t:t-WC,e+n]];return!a&&r.splice(2,0,[t+i+WC,e+n/2]),!o&&r.push([t,e+n/2]),r}function gd(t,e,i){t.eventData={componentType:"series",componentSubType:"treemap",componentIndex:e.componentIndex,seriesIndex:e.componentIndex,seriesName:e.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:i&&i.dataIndex,name:i&&i.name},treePathInfo:i&&hd(i,e)}}function md(){var t,e=[],i={};return{add:function(t,n,o,a,r){return _(a)&&(r=a,a=0),!i[t.id]&&(i[t.id]=1,e.push({el:t,target:n,time:o,delay:a,easing:r}),!0)},done:function(e){return t=e,this},start:function(){for(var n=e.length,o=0,a=e.length;o=0;a--)null==i[a]&&(delete n[e[a]],e.pop())}function wd(t,e){var i=t.visual,n=[];w(i)?oL(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]),Cd(t,n)}function bd(t){return{applyVisual:function(e,i,n){e=this.mapValueToVisual(e),n("color",t(i("color"),e))},_doMap:Ad([0,1])}}function Sd(t){var e=this.option.visual;return e[Math.round(zo(t,[0,1],[0,e.length-1],!0))]||{}}function Md(t){return function(e,i,n){n(t,this.mapValueToVisual(e))}}function Id(t){var e=this.option.visual;return e[this.option.loop&&t!==rL?t%e.length:t]}function Td(){return this.option.visual[0]}function Ad(t){return{linear:function(e){return zo(e,t,this.option.visual,!0)},category:Id,piecewise:function(e,i){var n=Dd.call(this,i);return null==n&&(n=zo(e,t,this.option.visual,!0)),n},fixed:Td}}function Dd(t){var e=this.option,i=e.pieceList;if(e.hasSpecialVisual){var n=i[sL.findPieceIndex(t,i)];if(n&&n.visual)return n.visual[this.type]}}function Cd(t,e){return t.visual=e,"color"===t.type&&(t.parsedVisual=f(e,function(t){return Gt(t)})),e}function Ld(t,e,i){return t?e<=i:e=o.length||t===o[t.depth])&&kd(t,Bd(r,h,t,e,g,a),i,n,o,a)})}else l=Nd(h),t.setVisual("color",l)}}function Pd(t,e,i,n){var o=a({},e);return d(["color","colorAlpha","colorSaturation"],function(a){var r=t.get(a,!0);null==r&&i&&(r=i[a]),null==r&&(r=e[a]),null==r&&(r=n.get(a)),null!=r&&(o[a]=r)}),o}function Nd(t){var e=Ed(t,"color");if(e){var i=Ed(t,"colorAlpha"),n=Ed(t,"colorSaturation");return n&&(e=jt(e,null,null,n)),i&&(e=Yt(e,i)),e}}function Od(t,e){return null!=e?jt(e,null,null,t):null}function Ed(t,e){var i=t[e];if(null!=i&&"none"!==i)return i}function Rd(t,e,i,n,o,a){if(a&&a.length){var r=zd(e,"color")||null!=o.color&&"none"!==o.color&&(zd(e,"colorAlpha")||zd(e,"colorSaturation"));if(r){var s=e.get("visualMin"),l=e.get("visualMax"),u=i.dataExtent.slice();null!=s&&su[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 sL(c);return d.__drColorMappingBy=h,d}}}function zd(t,e){var i=t.get(e);return hL(i)&&i.length?{name:e,range:i}:null}function Bd(t,e,i,n,o,r){var s=a({},e);if(o){var l=o.type,u="color"===l&&o.__drColorMappingBy,h="index"===u?n:"id"===u?r.mapIdToIndex(i.getId()):i.getValue(t.get("visualDimension"));s[l]=o.mapValueToVisual(h)}return s}function Vd(t,e,i,n){var o,a;if(!t.isRemoved()){var r=t.getLayout();o=r.width,a=r.height;var s=(f=t.getModel()).get(vL),l=f.get(yL)/2,u=qd(f),h=Math.max(s,u),c=s-l,d=h-l,f=t.getModel();t.setLayout({borderWidth:s,upperHeight:h,upperLabelHeight:u},!0);var p=(o=fL(o-2*c,0))*(a=fL(a-c-d,0)),g=Gd(t,f,p,e,i,n);if(g.length){var m={x:c,y:d,width:o,height:a},v=pL(o,a),y=1/0,x=[];x.area=0;for(var _=0,w=g.length;_=0;l--){var u=o["asc"===n?r-l-1:l].getValue();u/i*es[1]&&(s[1]=e)})}else s=[NaN,NaN];return{sum:n,dataExtent:s}}function Zd(t,e,i){for(var n,o=0,a=1/0,r=0,s=t.length;ro&&(o=n));var l=t.area*t.area,u=e*e*i;return l?fL(u*o/l,l/(u*a)):1/0}function Ud(t,e,i,n,o){var a=e===i.width?0:1,r=1-a,s=["x","y"],l=["width","height"],u=i[s[a]],h=e?t.area/e:0;(o||h>i[l[r]])&&(h=i[l[r]]);for(var c=0,d=t.length;cUM&&(u=UM),a=s}u=0?n+=u:n-=u:p>=0?n-=u:n+=u}return n}function ff(t,e){return t.getVisual("opacity")||t.getModel().get(e)}function pf(t,e,i){var n=t.getGraphicEl(),o=ff(t,e);null!=i&&(null==o&&(o=1),o*=i),n.downplay&&n.downplay(),n.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",o)})}function gf(t,e){var i=ff(t,e),n=t.getGraphicEl();n.highlight&&n.highlight(),n.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",i)})}function mf(t){return t instanceof Array||(t=[t,t]),t}function vf(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")])}),yf(i)}}function yf(t){t.eachEdge(function(t){var e=t.getModel().get("lineStyle.curveness")||0,i=F(t.node1.getLayout()),n=F(t.node2.getLayout()),o=[i,n];+e&&o.push([(i[0]+n[0])/2-(i[1]-n[1])*e,(i[1]+n[1])/2-(n[0]-i[0])*e]),t.setLayout(o)})}function xf(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var i=e.getBoundingRect(),n=t.getData(),o=n.graph,a=0,r=n.getSum("value"),s=2*Math.PI/(r||n.count()),l=i.width/2+i.x,u=i.height/2+i.y,h=Math.min(i.width,i.height)/2;o.eachNode(function(t){var e=t.getValue("value");a+=s*(r?e:1)/2,t.setLayout([h*Math.cos(a)+l,h*Math.sin(a)+u]),a+=s*(r?e:1)/2}),n.setLayout({cx:l,cy:u}),o.eachEdge(function(t){var e,i=t.getModel().get("lineStyle.curveness")||0,n=F(t.node1.getLayout()),o=F(t.node2.getLayout()),a=(n[0]+o[0])/2,r=(n[1]+o[1])/2;+i&&(e=[l*(i*=3)+a*(1-i),u*i+r*(1-i)]),t.setLayout([n,o,e])})}}function _f(t,e,i){for(var n=i.rect,o=n.width,a=n.height,r=[n.x+o/2,n.y+a/2],s=null==i.gravity?.1:i.gravity,l=0;l0?-1:i<0?1:e?-1:1}}function kf(t,e){return Math.min(e[1],Math.max(e[0],t))}function Pf(t,e,i){this._axesMap=R(),this._axesLayout={},this.dimensions=t.dimensions,this._rect,this._model=t,this._init(t,e,i)}function Nf(t,e){return $L(JL(t,e[0]),e[1])}function Of(t,e){var i=e.layoutLength/(e.axisCount-1);return{position:i*t,axisNameAvailableWidth:i,axisLabelShow:!0}}function Ef(t,e){var i,n,o=e.layoutLength,a=e.axisExpandWidth,r=e.axisCount,s=e.axisCollapseWidth,l=e.winInnerIndices,u=s,h=!1;return tck}function Kf(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function $f(t,e,i,n){var o=new tb;return o.add(new vM({name:"main",style:ep(i),silent:!0,draggable:!0,cursor:"move",drift:ok(t,e,o,"nswe"),ondragend:ok(Yf,e,{isEnd:!0})})),ak(n,function(i){o.add(new vM({name:i,style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:ok(t,e,o,i),ondragend:ok(Yf,e,{isEnd:!0})}))}),o}function Jf(t,e,i,n){var o=n.brushStyle.lineWidth||0,a=lk(o,dk),r=i[0][0],s=i[1][0],l=r-o/2,u=s-o/2,h=i[0][1],c=i[1][1],d=h-a+o/2,f=c-a+o/2,p=h-r,g=c-s,m=p+o,v=g+o;tp(t,e,"main",r,s,p,g),n.transformable&&(tp(t,e,"w",l,u,a,v),tp(t,e,"e",d,u,a,v),tp(t,e,"n",l,u,m,a),tp(t,e,"s",l,f,m,a),tp(t,e,"nw",l,u,a,a),tp(t,e,"ne",d,u,a,a),tp(t,e,"sw",l,f,a,a),tp(t,e,"se",d,f,a,a))}function Qf(t,e){var i=e.__brushOption,n=i.transformable,o=e.childAt(0);o.useStyle(ep(i)),o.attr({silent:!n,cursor:n?"move":"default"}),ak(["w","e","n","s","se","sw","ne","nw"],function(i){var o=e.childOfName(i),a=op(t,i);o&&o.attr({silent:!n,invisible:!n,cursor:n?gk[a]+"-resize":null})})}function tp(t,e,i,n,o,a,r){var s=e.childOfName(i);s&&s.setShape(up(lp(t,e,[[n,o],[n+a,o+r]])))}function ep(t){return r({strokeNoScale:!0},t.brushStyle)}function ip(t,e,i,n){var o=[sk(t,i),sk(e,n)],a=[lk(t,i),lk(e,n)];return[[o[0],a[0]],[o[1],a[1]]]}function np(t){return To(t.group)}function op(t,e){if(e.length>1)return("e"===(i=[op(t,(e=e.split(""))[0]),op(t,e[1])])[0]||"w"===i[0])&&i.reverse(),i.join("");var i=Do({w:"left",e:"right",n:"top",s:"bottom"}[e],np(t));return{left:"w",right:"e",top:"n",bottom:"s"}[i]}function ap(t,e,i,n,o,a,r,s){var l=n.__brushOption,u=t(l.range),h=sp(i,a,r);ak(o.split(""),function(t){var e=pk[t];u[e[0]][e[1]]+=h[e[0]]}),l.range=e(ip(u[0][0],u[1][0],u[0][1],u[1][1])),Hf(i,n),Yf(i,{isEnd:!1})}function rp(t,e,i,n,o){var a=e.__brushOption.range,r=sp(t,i,n);ak(a,function(t){t[0]+=r[0],t[1]+=r[1]}),Hf(t,e),Yf(t,{isEnd:!1})}function sp(t,e,i){var n=t.group,o=n.transformCoordToLocal(e,i),a=n.transformCoordToLocal(0,0);return[o[0]-a[0],o[1]-a[1]]}function lp(t,e,n){var o=Xf(t,e);return o&&!0!==o?o.clipPath(n,t._transform):i(n)}function up(t){var e=sk(t[0][0],t[1][0]),i=sk(t[0][1],t[1][1]);return{x:e,y:i,width:lk(t[0][0],t[1][0])-e,height:lk(t[0][1],t[1][1])-i}}function hp(t,e,i){if(t._brushType){var n=t._zr,o=t._covers,a=Uf(t,e,i);if(!t._dragging)for(var r=0;r=i.length)return e;for(var o=-1,a=e.length,r=i[n++],s={},l={};++o=i.length)return t;var a=[],r=n[o++];return d(t,function(t,i){a.push({key:i,values:e(t,o)})}),r?a.sort(function(t,e){return r(t.key,e.key)}):a}var i=[],n=[];return{key:function(t){return i.push(t),this},sortKeys:function(t){return n[i.length-1]=t,this},entries:function(i){return e(t(i,0),0)}}}function Bp(t,e){return ha(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function Vp(t,e,i,n,o,a,r,s){Fp(t,e,i,o,a,s),Zp(t,e,a,o,n,r,s),eg(t,s)}function Gp(t){d(t,function(t){var e=Qp(t.outEdges,Jp),i=Qp(t.inEdges,Jp),n=Math.max(e,i);t.setLayout({value:n},!0)})}function Fp(t,e,i,n,o,a){for(var r=[],s=[],l=[],u=[],h=0,c=0;c0;a--)Yp(s,l*=.99,r),jp(s,o,i,n,r),tg(s,l,r),jp(s,o,i,n,r)}function Up(t){return"vertical"===t?function(t){return t.getLayout().y}:function(t){return t.getLayout().x}}function Xp(t,e,i,n,o,a,r){var s=[];d(e,function(t){var e=t.length,i=0,l=0;d(t,function(t){i+=t.getLayout().value}),l="vertical"===r?(o-(e-1)*a)/i:(n-(e-1)*a)/i,s.push(l)}),s.sort(function(t,e){return t-e});var l=s[0];d(e,function(t){d(t,function(t,e){var i=t.getLayout().value*l;"vertical"===r?(t.setLayout({x:e},!0),t.setLayout({dx:i},!0)):(t.setLayout({y:e},!0),t.setLayout({dy:i},!0))})}),d(i,function(t){var e=+t.getValue()*l;t.setLayout({dy:e},!0)})}function jp(t,e,i,n,o){d(t,function(t){var a,r,s,l=0,u=t.length;if("vertical"===o){var h;for(t.sort(function(t,e){return t.getLayout().x-e.getLayout().x}),s=0;s0&&(h=a.getLayout().x+r,a.setLayout({x:h},!0)),l=a.getLayout().x+a.getLayout().dx+e;if((r=l-e-n)>0)for(h=a.getLayout().x-r,a.setLayout({x:h},!0),l=h,s=u-2;s>=0;--s)(r=(a=t[s]).getLayout().x+a.getLayout().dx+e-l)>0&&(h=a.getLayout().x-r,a.setLayout({x:h},!0)),l=a.getLayout().x}else{var c;for(t.sort(function(t,e){return t.getLayout().y-e.getLayout().y}),s=0;s0&&(c=a.getLayout().y+r,a.setLayout({y:c},!0)),l=a.getLayout().y+a.getLayout().dy+e;if((r=l-e-i)>0)for(c=a.getLayout().y-r,a.setLayout({y:c},!0),l=c,s=u-2;s>=0;--s)(r=(a=t[s]).getLayout().y+a.getLayout().dy+e-l)>0&&(c=a.getLayout().y-r,a.setLayout({y:c},!0)),l=a.getLayout().y}})}function Yp(t,e,i){d(t.slice().reverse(),function(t){d(t,function(t){if(t.outEdges.length){var n=Qp(t.outEdges,qp,i)/Qp(t.outEdges,Jp,i);if("vertical"===i){var o=t.getLayout().x+(n-$p(t,i))*e;t.setLayout({x:o},!0)}else{var a=t.getLayout().y+(n-$p(t,i))*e;t.setLayout({y:a},!0)}}})})}function qp(t,e){return $p(t.node2,e)*t.getValue()}function Kp(t,e){return $p(t.node1,e)*t.getValue()}function $p(t,e){return"vertical"===e?t.getLayout().x+t.getLayout().dx/2:t.getLayout().y+t.getLayout().dy/2}function Jp(t){return t.getValue()}function Qp(t,e,i){for(var n=0,o=t.length,a=-1;++a0?"P":"N",a=n.getVisual("borderColor"+o)||n.getVisual("color"+o),r=i.getModel(Ek).getItemStyle(zk);e.useStyle(r),e.style.fill=null,e.style.stroke=a}function fg(t,e,i,n,o){return i>n?-1:i0?t.get(o,e-1)<=n?1:-1:1}function pg(t,e){var i,n=t.getBaseAxis(),o="category"===n.type?n.getBandWidth():(i=n.getExtent(),Math.abs(i[1]-i[0])/e.count()),a=Bo(A(t.get("barMaxWidth"),o),o),r=Bo(A(t.get("barMinWidth"),1),o),s=t.get("barWidth");return null!=s?Bo(s,o):Math.max(Math.min(o/2,a),r)}function gg(t){return y(t)||(t=[+t,+t]),t}function mg(t,e){t.eachChild(function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?e.color:null,fill:"fill"===e.brushType?e.color:null}})})}function vg(t,e){tb.call(this);var i=new _u(t,e),n=new tb;this.add(i),this.add(n),n.beforeUpdate=function(){this.attr(i.getScale())},this.updateData(t,e)}function yg(t){var e=t.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(t.data=f(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),o([e,t[0],t[1]])}))}function xg(t,e,i){tb.call(this),this.add(this.createLine(t,e,i)),this._updateEffectSymbol(t,e)}function _g(t,e,i){tb.call(this),this._createPolyline(t,e,i)}function wg(t,e,i){xg.call(this,t,e,i),this._lastFrame=0,this._lastFramePercent=0}function bg(){this.group=new tb}function Sg(t){return t instanceof Array||(t=[t,t]),t}function Mg(){var t=iw();this.canvas=t,this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={}}function Ig(t,e,i){var n=t[1]-t[0],o=(e=f(e,function(e){return{interval:[(e.interval[0]-t[0])/n,(e.interval[1]-t[0])/n]}})).length,a=0;return function(t){for(n=a;n=0;n--){var r=e[n].interval;if(r[0]<=t&&t<=r[1]){a=n;break}}return n>=0&&n=e[0]&&t<=e[1]}}function Ag(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}function Dg(t,e,i,n){var o=t.getItemLayout(e),a=i.get("symbolRepeat"),r=i.get("symbolClip"),s=i.get("symbolPosition")||"start",l=(i.get("symbolRotate")||0)*Math.PI/180||0,u=i.get("symbolPatternSize")||2,h=i.isAnimationEnabled(),c={dataIndex:e,layout:o,itemModel:i,symbolType:t.getItemVisual(e,"symbol")||"circle",color:t.getItemVisual(e,"color"),symbolClip:r,symbolRepeat:a,symbolRepeatDirection:i.get("symbolRepeatDirection"),symbolPatternSize:u,rotation:l,animationModel:h?i:null,hoverAnimation:h&&i.get("hoverAnimation"),z2:i.getShallow("z",!0)||0};Cg(i,a,o,n,c),kg(t,e,o,a,r,c.boundingLength,c.pxSign,u,n,c),Pg(i,c.symbolScale,l,n,c);var d=c.symbolSize,f=i.get("symbolOffset");return y(f)&&(f=[Bo(f[0],d[0]),Bo(f[1],d[1])]),Ng(i,d,o,a,r,f,s,c.valueLineWidth,c.boundingLength,c.repeatCutLength,n,c),c}function Cg(t,e,i,n,o){var a,r=n.valueDim,s=t.get("symbolBoundingData"),l=n.coordSys.getOtherAxis(n.coordSys.getBaseAxis()),u=l.toGlobalCoord(l.dataToCoord(0)),h=1-+(i[r.wh]<=0);if(y(s)){var c=[Lg(l,s[0])-u,Lg(l,s[1])-u];c[1]0?1:a<0?-1:0}function Lg(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function kg(t,e,i,n,o,a,r,s,l,u){var h=l.valueDim,c=l.categoryDim,d=Math.abs(i[c.wh]),f=t.getItemVisual(e,"symbolSize");y(f)?f=f.slice():(null==f&&(f="100%"),f=[f,f]),f[c.index]=Bo(f[c.index],d),f[h.index]=Bo(f[h.index],n?d:Math.abs(a)),u.symbolSize=f,(u.symbolScale=[f[0]/s,f[1]/s])[h.index]*=(l.isHorizontal?-1:1)*r}function Pg(t,e,i,n,o){var a=t.get(rP)||0;a&&(lP.attr({scale:e.slice(),rotation:i}),lP.updateTransform(),a/=lP.getLineScale(),a*=e[n.valueDim.index]),o.valueLineWidth=a}function Ng(t,e,i,n,o,r,s,l,u,h,c,d){var f=c.categoryDim,p=c.valueDim,g=d.pxSign,m=Math.max(e[p.index]+l,0),v=m;if(n){var y=Math.abs(u),x=T(t.get("symbolMargin"),"15%")+"",_=!1;x.lastIndexOf("!")===x.length-1&&(_=!0,x=x.slice(0,x.length-1)),x=Bo(x,e[p.index]);var w=Math.max(m+2*x,0),b=_?0:2*x,S=Jo(n),M=S?n:Kg((y+b)/w);w=m+2*(x=(y-M*m)/2/(_?M:M-1)),b=_?0:2*x,S||"fixed"===n||(M=h?Kg((Math.abs(h)+b)/w):0),v=M*w-b,d.repeatTimes=M,d.symbolMargin=x}var I=g*(v/2),A=d.pathPosition=[];A[f.index]=i[f.wh]/2,A[p.index]="start"===s?I:"end"===s?u-I:u/2,r&&(A[0]+=r[0],A[1]+=r[1]);var D=d.bundlePosition=[];D[f.index]=i[f.xy],D[p.index]=i[p.xy];var C=d.barRectShape=a({},i);C[p.wh]=g*Math.max(Math.abs(i[p.wh]),Math.abs(A[p.index]+I)),C[f.wh]=i[f.wh];var L=d.clipShape={};L[f.xy]=-i[f.xy],L[f.wh]=c.ecSize[f.wh],L[p.xy]=0,L[p.wh]=i[p.wh]}function Og(t){var e=t.symbolPatternSize,i=$l(t.symbolType,-e/2,-e/2,e,e,t.color);return i.attr({culling:!0}),"image"!==i.type&&i.setStyle({strokeNoScale:!0}),i}function Eg(t,e,i,n){function o(t){var e=l.slice(),n=i.pxSign,o=t;return("start"===i.symbolRepeatDirection?n>0:n<0)&&(o=h-1-t),e[u.index]=d*(o-h/2+.5)+l[u.index],{position:e,scale:i.symbolScale.slice(),rotation:i.rotation}}var a=t.__pictorialBundle,r=i.symbolSize,s=i.valueLineWidth,l=i.pathPosition,u=e.valueDim,h=i.repeatTimes||0,c=0,d=r[e.valueDim.index]+s+2*i.symbolMargin;for(jg(t,function(t){t.__pictorialAnimationIndex=c,t.__pictorialRepeatTimes=h,c0)],d=t.__pictorialBarRect;Lh(d.style,h,a,n,e.seriesModel,o,c),co(d,h)}function Kg(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}function $g(t,e,i){this.dimension="single",this.dimensions=["single"],this._axis=null,this._rect,this._init(t,e,i),this.model=t}function Jg(t,e){e=e||{};var i=t.coordinateSystem,n=t.axis,o={},a=n.position,r=n.orient,s=i.getRect(),l=[s.x,s.x+s.width,s.y,s.y+s.height],u={horizontal:{top:l[2],bottom:l[3]},vertical:{left:l[0],right:l[1]}};o.position=["vertical"===r?u.vertical[a]:l[0],"horizontal"===r?u.horizontal[a]:l[3]];o.rotation=Math.PI/2*{horizontal:0,vertical:1}[r];o.labelDirection=o.tickDirection=o.nameDirection={top:-1,bottom:1,right:1,left:-1}[a],t.get("axisTick.inside")&&(o.tickDirection=-o.tickDirection),T(e.labelInside,t.get("axisLabel.inside"))&&(o.labelDirection=-o.labelDirection);var h=e.rotate;return null==h&&(h=t.get("axisLabel.rotate")),o.labelRotation="top"===a?-h:h,o.z2=1,o}function Qg(t,e,i,n,o){var r=t.axis;if(!r.scale.isBlank()&&r.containData(e))if(t.involveSeries){var s=tm(e,t),l=s.payloadBatch,u=s.snapToValue;l[0]&&null==o.seriesIndex&&a(o,l[0]),!n&&t.snap&&r.containData(u)&&null!=u&&(e=u),i.showPointer(t,e,l,o),i.showTooltip(t,s,u)}else i.showPointer(t,e)}function tm(t,e){var i=e.axis,n=i.dim,o=t,a=[],r=Number.MAX_VALUE,s=-1;return pP(e.seriesModels,function(e,l){var u,h,c=e.getData().mapDimension(n,!0);if(e.getAxisTooltipData){var d=e.getAxisTooltipData(c,t,i);h=d.dataIndices,u=d.nestestValue}else{if(!(h=e.getData().indicesOfNearest(c[0],t,"category"===i.type?.5:null)).length)return;u=e.getData().get(c[0],h[0])}if(null!=u&&isFinite(u)){var f=t-u,p=Math.abs(f);p<=r&&((p=0&&s<0)&&(r=p,s=f,o=u,a.length=0),pP(h,function(t){a.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})}))}}),{payloadBatch:a,snapToValue:o}}function em(t,e,i,n){t[e.key]={value:i,payloadBatch:n}}function im(t,e,i,n){var o=i.payloadBatch,a=e.axis,r=a.model,s=e.axisPointerModel;if(e.triggerTooltip&&o.length){var l=e.coordSys.model,u=Th(l),h=t.map[u];h||(h=t.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(h)),h.dataByAxis.push({axisDim:a.dim,axisIndex:r.componentIndex,axisType:r.type,axisId:r.id,value:n,valueLabelOpt:{precision:s.get("label.precision"),formatter:s.get("label.formatter")},seriesDataIndices:o.slice()})}}function nm(t,e,i){var n=i.axesInfo=[];pP(e,function(e,i){var o=e.axisPointerModel.option,a=t[i];a?(!e.useHandle&&(o.status="show"),o.value=a.value,o.seriesDataIndices=(a.payloadBatch||[]).slice()):!e.useHandle&&(o.status="hide"),"show"===o.status&&n.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:o.value})})}function om(t,e,i,n){if(!lm(e)&&t.list.length){var o=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:i.tooltipOption,position:i.position,dataIndexInside:o.dataIndexInside,dataIndex:o.dataIndex,seriesIndex:o.seriesIndex,dataByCoordSys:t.list})}else n({type:"hideTip"})}function am(t,e,i){var n=i.getZr(),o=mP(n).axisPointerLastHighlights||{},a=mP(n).axisPointerLastHighlights={};pP(t,function(t,e){var i=t.axisPointerModel.option;"show"===i.status&&pP(i.seriesDataIndices,function(t){var e=t.seriesIndex+" | "+t.dataIndex;a[e]=t})});var r=[],s=[];d(o,function(t,e){!a[e]&&s.push(t)}),d(a,function(t,e){!o[e]&&r.push(t)}),s.length&&i.dispatchAction({type:"downplay",escapeConnect:!0,batch:s}),r.length&&i.dispatchAction({type:"highlight",escapeConnect:!0,batch:r})}function rm(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}}function sm(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 lm(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}function um(t,e,i){if(!U_.node){var n=e.getZr();vP(n).records||(vP(n).records={}),hm(n,e),(vP(n).records[t]||(vP(n).records[t]={})).handler=i}}function hm(t,e){function i(i,n){t.on(i,function(i){var o=pm(e);yP(vP(t).records,function(t){t&&n(t,i,o.dispatchAction)}),cm(o.pendings,e)})}vP(t).initialized||(vP(t).initialized=!0,i("click",v(fm,"click")),i("mousemove",v(fm,"mousemove")),i("globalout",dm))}function cm(t,e){var i,n=t.showTip.length,o=t.hideTip.length;n?i=t.showTip[n-1]:o&&(i=t.hideTip[o-1]),i&&(i.dispatchAction=null,e.dispatchAction(i))}function dm(t,e,i){t.handler("leave",null,i)}function fm(t,e,i,n){e.handler(t,i,n)}function pm(t){var e={showTip:[],hideTip:[]},i=function(n){var o=e[n.type];o?o.push(n):(n.dispatchAction=i,t.dispatchAction(n))};return{dispatchAction:i,pendings:e}}function gm(t,e){if(!U_.node){var i=e.getZr();(vP(i).records||{})[t]&&(vP(i).records[t]=null)}}function mm(){}function vm(t,e,i,n){ym(_P(i).lastProp,n)||(_P(i).lastProp=n,e?Mo(i,n,t):(i.stopAnimation(),i.attr(n)))}function ym(t,e){if(w(t)&&w(e)){var i=!0;return d(e,function(e,n){i=i&&ym(t[n],e)}),!!i}return t===e}function xm(t,e){t[e.get("label.show")?"show":"hide"]()}function _m(t){return{position:t.position.slice(),rotation:t.rotation||0}}function wm(t,e,i){var n=e.get("z"),o=e.get("zlevel");t&&t.traverse(function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=o&&(t.zlevel=o),t.silent=i)})}function bm(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 Sm(t,e,i,n,o){var a=Im(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=YM(r.get("padding")||0),l=r.getFont(),u=ke(a,l),h=o.position,c=u.width+s[1]+s[3],d=u.height+s[0]+s[2],f=o.align;"right"===f&&(h[0]-=c),"center"===f&&(h[0]-=c/2);var p=o.verticalAlign;"bottom"===p&&(h[1]-=d),"middle"===p&&(h[1]-=d/2),Mm(h,c,d,n);var g=r.get("backgroundColor");g&&"auto"!==g||(g=e.get("axisLine.lineStyle.color")),t.label={shape:{x:0,y:0,width:c,height:d,r:r.get("borderRadius")},position:h.slice(),style:{text:a,textFont:l,textFill:r.getTextColor(),textPosition:"inside",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 Mm(t,e,i,n){var o=n.getWidth(),a=n.getHeight();t[0]=Math.min(t[0]+e,o)-e,t[1]=Math.min(t[1]+i,a)-i,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}function Im(t,e,i,n,o){t=e.scale.parse(t);var a=e.scale.getLabel(t,{precision:o.precision}),r=o.formatter;if(r){var s={value:Ul(e,t),seriesData:[]};d(n,function(t){var e=i.getSeriesByIndex(t.seriesIndex),n=t.dataIndexInside,o=e&&e.getDataParams(n);o&&s.seriesData.push(o)}),_(r)?a=r.replace("{value}",a):x(r)&&(a=r(s))}return a}function Tm(t,e,i){var n=xt();return Mt(n,n,i.rotation),St(n,n,i.position),Ao([t.dataToCoord(e),(i.labelOffset||0)+(i.labelDirection||1)*(i.labelMargin||0)],n)}function Am(t,e,i,n,o,a){var r=BD.innerTextLayout(i.rotation,0,i.labelDirection);i.labelMargin=o.get("label.margin"),Sm(e,n,o,a,{position:Tm(n.axis,t,i),align:r.textAlign,verticalAlign:r.textVerticalAlign})}function Dm(t,e,i){return i=i||0,{x1:t[i],y1:t[1-i],x2:e[i],y2:e[1-i]}}function Cm(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}function Lm(t,e,i,n,o,a){return{cx:t,cy:e,r0:i,r:n,startAngle:o,endAngle:a,clockwise:!0}}function km(t,e){var i={};return i[e.dim+"AxisIndex"]=e.index,t.getCartesian(i)}function Pm(t){return"x"===t.dim?0:1}function Nm(t){return t.isHorizontal()?0:1}function Om(t,e){var i=t.getRect();return[i[IP[e]],i[IP[e]]+i[TP[e]]]}function Em(t,e,i){var n=new vM({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return Io(n,{shape:{width:t.width+20,height:t.height+20}},e,i),n}function Rm(t,e,i){if(t.count())for(var n,o=e.coordinateSystem,a=e.getLayerSeries(),r=t.mapDimension("single"),s=t.mapDimension("value"),l=f(a,function(e){return f(e.indices,function(e){var i=o.dataToPoint(t.get(r,e));return i[1]=t.get(s,e),i})}),u=zm(l),h=u.y0,c=i/u.max,d=a.length,p=a[0].indices.length,g=0;ga&&(a=u),n.push(u)}for(var h=0;ha&&(a=d)}return r.y0=o,r.max=a,r}function Bm(t){var e=0;d(t.children,function(t){Bm(t);var i=t.value;y(i)&&(i=i[0]),e+=i});var i=t.value;y(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),y(t.value)?t.value[0]=i:t.value=i}function Vm(t,e,i){function n(){r.ignore=r.hoverIgnore}function o(){r.ignore=r.normalIgnore}tb.call(this);var a=new uM({z2:kP});a.seriesIndex=e.seriesIndex;var r=new aM({z2:PP,silent:t.getModel("label").get("silent")});this.add(a),this.add(r),this.updateData(!0,t,"normal",e,i),this.on("emphasis",n).on("normal",o).on("mouseover",n).on("mouseout",o)}function Gm(t,e,i){var n=t.getVisual("color"),o=t.getVisual("visualMeta");o&&0!==o.length||(n=null);var a=t.getModel("itemStyle").get("color");if(a)return a;if(n)return n;if(0===t.depth)return i.option.color[0];var r=i.option.color.length;return a=i.option.color[Fm(t)%r]}function Fm(t){for(var e=t;e.depth>1;)e=e.parentNode;return l(t.getAncestors()[0].children,e)}function Wm(t,e,i){return i!==LP.NONE&&(i===LP.SELF?t===e:i===LP.ANCESTOR?t===e||t.isAncestorOf(e):t===e||t.isDescendantOf(e))}function Hm(t,e,i){e.getData().setItemVisual(t.dataIndex,"color",i)}function Zm(t,e){var i=t.children||[];t.children=Um(i,e),i.length&&d(t.children,function(t){Zm(t,e)})}function Um(t,e){if("function"==typeof e)return t.sort(e);var i="asc"===e;return t.sort(function(t,e){var n=(t.getValue()-e.getValue())*(i?1:-1);return 0===n?(t.dataIndex-e.dataIndex)*(i?-1:1):n})}function Xm(t,e){return e=e||[0,0],f(["x","y"],function(i,n){var o=this.getAxis(i),a=e[n],r=t[n]/2;return"category"===o.type?o.getBandWidth():Math.abs(o.dataToCoord(a-r)-o.dataToCoord(a+r))},this)}function jm(t,e){return e=e||[0,0],f([0,1],function(i){var n=e[i],o=t[i]/2,a=[],r=[];return a[i]=n-o,r[i]=n+o,a[1-i]=r[1-i]=e[1-i],Math.abs(this.dataToPoint(a)[i]-this.dataToPoint(r)[i])},this)}function Ym(t,e){var i=this.getAxis(),n=e instanceof Array?e[0]:e,o=(t instanceof Array?t[0]:t)/2;return"category"===i.type?i.getBandWidth():Math.abs(i.dataToCoord(n-o)-i.dataToCoord(n+o))}function qm(t,e){return f(["Radius","Angle"],function(i,n){var o=this["get"+i+"Axis"](),a=e[n],r=t[n]/2,s="dataTo"+i,l="category"===o.type?o.getBandWidth():Math.abs(o[s](a-r)-o[s](a+r));return"Angle"===i&&(l=l*Math.PI/180),l},this)}function Km(t){var e,i=t.type;if("path"===i){var n=t.shape,o=null!=n.width&&null!=n.height?{x:n.x||0,y:n.y||0,width:n.width,height:n.height}:null,a=lv(n);(e=Un(a,null,o,n.layout||"center")).__customPathData=a}else"image"===i?(e=new fi({})).__customImagePath=t.style.image:"text"===i?(e=new aM({})).__customText=t.style.text:e=new(0,RM[i.charAt(0).toUpperCase()+i.slice(1)]);return e.__customGraphicType=i,e.name=t.name,e}function $m(t,e,n,o,a,r,s){var l={},u=n.style||{};if(n.shape&&(l.shape=i(n.shape)),n.position&&(l.position=n.position.slice()),n.scale&&(l.scale=n.scale.slice()),n.origin&&(l.origin=n.origin.slice()),n.rotation&&(l.rotation=n.rotation),"image"===t.type&&n.style){h=l.style={};d(["x","y","width","height"],function(e){Jm(e,h,u,t.style,r)})}if("text"===t.type&&n.style){var h=l.style={};d(["x","y"],function(e){Jm(e,h,u,t.style,r)}),!u.hasOwnProperty("textFill")&&u.fill&&(u.textFill=u.fill),!u.hasOwnProperty("textStroke")&&u.stroke&&(u.textStroke=u.stroke)}if("group"!==t.type&&(t.useStyle(u),r)){t.style.opacity=0;var c=u.opacity;null==c&&(c=1),Io(t,{style:{opacity:c}},o,e)}r?t.attr(l):Mo(t,l,o,e),n.hasOwnProperty("z2")&&t.attr("z2",n.z2||0),n.hasOwnProperty("silent")&&t.attr("silent",n.silent),n.hasOwnProperty("invisible")&&t.attr("invisible",n.invisible),n.hasOwnProperty("ignore")&&t.attr("ignore",n.ignore),n.hasOwnProperty("info")&&t.attr("info",n.info);var f=n.styleEmphasis,p=!1===f;t.__cusHasEmphStl&&null==f||!t.__cusHasEmphStl&&p||(ao(t,f),t.__cusHasEmphStl=!p),s&&fo(t,!p)}function Jm(t,e,i,n,o){null==i[t]||o||(e[t]=i[t],i[t]=n[t])}function Qm(t,e,i,n){function o(t){null==t&&(t=h),v&&(c=e.getItemModel(t),d=c.getModel(VP),f=c.getModel(GP),p=e.getItemVisual(t,"color"),v=!1)}var s=t.get("renderItem"),l=t.coordinateSystem,u={};l&&(u=l.prepareCustoms?l.prepareCustoms():WP[l.type](l));var h,c,d,f,p,g=r({getWidth:n.getWidth,getHeight:n.getHeight,getZr:n.getZr,getDevicePixelRatio:n.getDevicePixelRatio,value:function(t,i){return null==i&&(i=h),e.get(e.getDimension(t||0),i)},style:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(zP).getItemStyle();null!=p&&(r.fill=p);var s=e.getItemVisual(n,"opacity");return null!=s&&(r.opacity=s),go(r,d,null,{autoColor:p,isRectText:!0}),r.text=d.getShallow("show")?A(t.getFormattedLabel(n,"normal"),xu(e,n)):null,i&&a(r,i),r},styleEmphasis:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(BP).getItemStyle();return go(r,f,null,{isRectText:!0},!0),r.text=f.getShallow("show")?D(t.getFormattedLabel(n,"emphasis"),t.getFormattedLabel(n,"normal"),xu(e,n)):null,i&&a(r,i),r},visual:function(t,i){return null==i&&(i=h),e.getItemVisual(i,t)},barLayout:function(t){if(l.getBaseAxis)return Cl(r({axis:l.getBaseAxis()},t),n)},currentSeriesIndices:function(){return i.getCurrentSeriesIndices()},font:function(t){return bo(t,i)}},u.api||{}),m={context:{},seriesId:t.id,seriesName:t.name,seriesIndex:t.seriesIndex,coordSys:u.coordSys,dataInsideLength:e.count(),encode:tv(t.getData())},v=!0;return function(t,i){return h=t,v=!0,s&&s(r({dataIndexInside:t,dataIndex:e.getRawIndex(t),actionType:i?i.type:null},m),g)}}function tv(t){var e={};return d(t.dimensions,function(i,n){var o=t.getDimensionInfo(i);if(!o.isExtraCoord){var a=o.coordDim;(e[a]=e[a]||[])[o.coordDimIndex]=n}}),e}function ev(t,e,i,n,o,a){return(t=iv(t,e,i,n,o,a,!0))&&a.setItemGraphicEl(e,t),t}function iv(t,e,i,n,o,a,r){var s=!i,l=(i=i||{}).type,u=i.shape,h=i.style;if(t&&(s||null!=l&&l!==t.__customGraphicType||"path"===l&&uv(u)&&lv(u)!==t.__customPathData||"image"===l&&hv(h,"image")&&h.image!==t.__customImagePath||"text"===l&&hv(u,"text")&&h.text!==t.__customText)&&(o.remove(t),t=null),!s){var c=!t;return!t&&(t=Km(i)),$m(t,e,i,n,a,c,r),"group"===l&&nv(t,e,i,n,a),o.add(t),t}}function nv(t,e,i,n,o){var a=i.children,r=a?a.length:0,s=i.$mergeChildren,l="byName"===s||i.diffChildrenByName,u=!1===s;if(r||l||u)if(l)ov({oldChildren:t.children()||[],newChildren:a||[],dataIndex:e,animatableModel:n,group:t,data:o});else{u&&t.removeAll();for(var h=0;hn?t-=l+a:t+=a),null!=r&&(e+u+r>o?e-=u+r:e+=r),[t,e]}function Ov(t,e,i,n,o){var a=i.getOuterSize(),r=a.width,s=a.height;return t=Math.min(t+r,n)-r,e=Math.min(e+s,o)-s,t=Math.max(t,0),e=Math.max(e,0),[t,e]}function Ev(t,e,i){var n=i[0],o=i[1],a=0,r=0,s=e.width,l=e.height;switch(t){case"inside":a=e.x+s/2-n/2,r=e.y+l/2-o/2;break;case"top":a=e.x+s/2-n/2,r=e.y-o-5;break;case"bottom":a=e.x+s/2-n/2,r=e.y+l+5;break;case"left":a=e.x-n-5,r=e.y+l/2-o/2;break;case"right":a=e.x+s+5,r=e.y+l/2-o/2}return[a,r]}function Rv(t){return"center"===t||"middle"===t}function zv(t){return t.get("stack")||"__ec_stack_"+t.seriesIndex}function Bv(t){return t.dim}function Vv(t,e){var i={};d(t,function(t,e){var n=t.getData(),o=t.coordinateSystem.getBaseAxis(),a=o.getExtent(),r="category"===o.type?o.getBandWidth():Math.abs(a[1]-a[0])/n.count(),s=i[Bv(o)]||{bandWidth:r,remainedWidth:r,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},l=s.stacks;i[Bv(o)]=s;var u=zv(t);l[u]||s.autoWidthCount++,l[u]=l[u]||{width:0,maxWidth:0};var h=Bo(t.get("barWidth"),r),c=Bo(t.get("barMaxWidth"),r),d=t.get("barGap"),f=t.get("barCategoryGap");h&&!l[u].width&&(h=Math.min(s.remainedWidth,h),l[u].width=h,s.remainedWidth-=h),c&&(l[u].maxWidth=c),null!=d&&(s.gap=d),null!=f&&(s.categoryGap=f)});var n={};return d(i,function(t,e){n[e]={};var i=t.stacks,o=t.bandWidth,a=Bo(t.categoryGap,o),r=Bo(t.gap,1),s=t.remainedWidth,l=t.autoWidthCount,u=(s-a)/(l+(l-1)*r);u=Math.max(u,0),d(i,function(t,e){var i=t.maxWidth;i&&ie[0]&&(e=e.slice().reverse());var n=t.coordToPoint([e[0],i]),o=t.coordToPoint([e[1],i]);return{x1:n[0],y1:n[1],x2:o[0],y2:o[1]}}function jv(t){return t.getRadiusAxis().inverse?0:1}function Yv(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()}function qv(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}}function Kv(t,e,i,n,o){var a=e.axis,r=a.dataToCoord(t),s=n.getAngleAxis().getExtent()[0];s=s/180*Math.PI;var l,u,h,c=n.getRadiusAxis().getExtent();if("radius"===a.dim){var d=xt();Mt(d,d,s),St(d,d,[n.cx,n.cy]),l=Ao([r,-o],d);var f=e.getModel("axisLabel").get("rotate")||0,p=BD.innerTextLayout(s,f*Math.PI/180,-1);u=p.textAlign,h=p.textVerticalAlign}else{var g=c[1];l=n.coordToPoint([g+o,r]);var m=n.cx,v=n.cy;u=Math.abs(l[0]-m)/g<.3?"center":l[0]>m?"left":"right",h=Math.abs(l[1]-v)/g<.3?"middle":l[1]>v?"top":"bottom"}return{position:l,align:u,verticalAlign:h}}function $v(t,e){e.update="updateView",Os(e,function(e,i){var n={};return i.eachComponent({mainType:"geo",query:e},function(i){i[t](e.name),d(i.coordinateSystem.regions,function(t){n[t.name]=i.isSelected(t.name)||!1})}),{selected:n,name:e.name}})}function Jv(t){var e={};d(t,function(t){e[t]=1}),t.length=0,d(e,function(e,i){t.push(i)})}function Qv(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}function ty(t,e,n){function o(){var t=function(){};return t.prototype.__hidden=t.prototype,new t}var a={};return yN(e,function(e){var r=a[e]=o();yN(t[e],function(t,o){if(sL.isValidType(o)){var a={type:o,visual:t};n&&n(a,e),r[o]=new sL(a),"opacity"===o&&((a=i(a)).type="colorAlpha",r.__hidden.__alphaForOpacity=new sL(a))}})}),a}function ey(t,e,n){var o;d(n,function(t){e.hasOwnProperty(t)&&Qv(e[t])&&(o=!0)}),o&&d(n,function(n){e.hasOwnProperty(n)&&Qv(e[n])?t[n]=i(e[n]):delete t[n]})}function iy(t,e,i,n,o,a){function r(t){return i.getItemVisual(h,t)}function s(t,e){i.setItemVisual(h,t,e)}function l(t,l){h=null==a?t:l;var c=i.getRawDataItem(h);if(!c||!1!==c.visualMap)for(var d=n.call(o,t),f=e[d],p=u[d],g=0,m=p.length;g1)return!1;var h=uy(i-t,o-t,n-e,a-e)/l;return!(h<0||h>1)}function ly(t){return t<=1e-6&&t>=-1e-6}function uy(t,e,i,n){return t*n-e*i}function hy(t,e,i){var n=this._targetInfoList=[],o={},a=dy(e,t);_N(TN,function(t,e){(!i||!i.include||wN(i.include,e)>=0)&&t(a,n,o)})}function cy(t){return t[0]>t[1]&&t.reverse(),t}function dy(t,e){return Vi(t,e,{includeMainTypes:MN})}function fy(t,e,i,n){var o=i.getAxis(["x","y"][t]),a=cy(f([0,1],function(t){return e?o.coordToData(o.toLocalCoord(n[t])):o.toGlobalCoord(o.dataToCoord(n[t]))})),r=[];return r[t]=a,r[1-t]=[NaN,NaN],{values:a,xyMinMax:r}}function py(t,e,i,n){return[e[0]-n[t]*i[0],e[1]-n[t]*i[1]]}function gy(t,e){var i=my(t),n=my(e),o=[i[0]/n[0],i[1]/n[1]];return isNaN(o[0])&&(o[0]=1),isNaN(o[1])&&(o[1]=1),o}function my(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}function vy(t,e,i,n,o){if(o){var a=t.getZr();a[NN]||(a[PN]||(a[PN]=yy),Pr(a,PN,i,e)(t,n))}}function yy(t,e){if(!t.isDisposed()){var i=t.getZr();i[NN]=!0,t.dispatchAction({type:"brushSelect",batch:e}),i[NN]=!1}}function xy(t,e,i,n){for(var o=0,a=e.length;o=0}function Ny(t,e,i){function n(t,e){return l(e.nodes,t)>=0}function o(t,n){var o=!1;return e(function(e){d(i(t,e)||[],function(t){n.records[e.name][t]&&(o=!0)})}),o}function a(t,n){n.nodes.push(t),e(function(e){d(i(t,e)||[],function(t){n.records[e.name][t]=!0})})}return function(i){var r={nodes:[],records:{}};if(e(function(t){r.records[t.name]={}}),!i)return r;a(i,r);var s;do{s=!1,t(function(t){!n(t,r)&&o(t,r)&&(a(t,r),s=!0)})}while(s);return r}}function Oy(t,e,i){var n=[1/0,-1/0];return UN(i,function(t){var i=t.getData();i&&UN(i.mapDimension(e,!0),function(t){var e=i.getApproximateExtent(t);e[0]n[1]&&(n[1]=e[1])})}),n[1]0?0:NaN);var r=i.getMax(!0);return null!=r&&"dataMax"!==r&&"function"!=typeof r?e[1]=r:o&&(e[1]=a>0?a-1:NaN),i.get("scale",!0)||(e[0]>0&&(e[0]=0),e[1]<0&&(e[1]=0)),e}function Ry(t,e){var i=t.getAxisModel(),n=t._percentWindow,o=t._valueWindow;if(n){var a=Ho(o,[0,500]);a=Math.min(a,20);var r=e||0===n[0]&&100===n[1];i.setRange(r?null:+o[0].toFixed(a),r?null:+o[1].toFixed(a))}}function zy(t){var e=t._minMaxSpan={},i=t._dataZoomModel;UN(["min","max"],function(n){e[n+"Span"]=i.get(n+"Span");var o=i.get(n+"ValueSpan");if(null!=o&&(e[n+"ValueSpan"]=o,null!=(o=t.getAxisModel().axis.scale.parse(o)))){var a=t._dataExtent;e[n+"Span"]=zo(a[0]+o,a,[0,100],!0)}})}function By(t){var e={};return YN(["start","end","startValue","endValue","throttle"],function(i){t.hasOwnProperty(i)&&(e[i]=t[i])}),e}function Vy(t,e){var i=t._rangePropMode,n=t.get("rangeMode");YN([["start","startValue"],["end","endValue"]],function(t,o){var a=null!=e[t[0]],r=null!=e[t[1]];a&&!r?i[o]="percent":!a&&r?i[o]="value":n?i[o]=n[o]:a&&(i[o]="percent")})}function Gy(t){return{x:"y",y:"x",radius:"angle",angle:"radius"}[t]}function Fy(t){return"vertical"===t?"ns-resize":"ew-resize"}function Wy(t,e){var i=Uy(t),n=e.dataZoomId,o=e.coordId;d(i,function(t,i){var a=t.dataZoomInfos;a[n]&&l(e.allCoordIds,o)<0&&(delete a[n],t.count--)}),jy(i);var a=i[o];a||((a=i[o]={coordId:o,dataZoomInfos:{},count:0}).controller=Xy(t,a),a.dispatchAction=v(Yy,t)),!a.dataZoomInfos[n]&&a.count++,a.dataZoomInfos[n]=e;var r=qy(a.dataZoomInfos);a.controller.enable(r.controlType,r.opt),a.controller.setPointerChecker(e.containsPoint),Pr(a,"dispatchAction",e.dataZoomModel.get("throttle",!0),"fixRate")}function Hy(t,e){var i=Uy(t);d(i,function(t){t.controller.dispose();var i=t.dataZoomInfos;i[e]&&(delete i[e],t.count--)}),jy(i)}function Zy(t){return t.type+"\0_"+t.id}function Uy(t){var e=t.getZr();return e[sO]||(e[sO]={})}function Xy(t,e){var i=new nc(t.getZr());return d(["pan","zoom","scrollMove"],function(t){i.on(t,function(i){var n=[];d(e.dataZoomInfos,function(o){if(i.isAvailableBehavior(o.dataZoomModel.option)){var a=(o.getRange||{})[t],r=a&&a(e.controller,i);!o.dataZoomModel.get("disabled",!0)&&r&&n.push({dataZoomId:o.dataZoomId,start:r[0],end:r[1]})}}),n.length&&e.dispatchAction(n)})}),i}function jy(t){d(t,function(e,i){e.count||(e.controller.dispose(),delete t[i])})}function Yy(t,e){t.dispatchAction({type:"dataZoom",batch:e})}function qy(t){var e,i={type_true:2,type_move:1,type_false:0,type_undefined:-1},n=!0;return d(t,function(t){var o=t.dataZoomModel,a=!o.get("disabled",!0)&&(!o.get("zoomLock",!0)||"move");i["type_"+a]>i["type_"+e]&&(e=a),n&=o.get("preventDefaultMouseMove",!0)}),{controlType:e,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!n}}}function Ky(t){return function(e,i,n,o){var a=this._range,r=a.slice(),s=e.axisModels[0];if(s){var l=t(r,s,e,i,n,o);return qL(l,r,[0,100],"all"),this._range=r,a[0]!==r[0]||a[1]!==r[1]?r:void 0}}}function $y(t,e){return t&&t.hasOwnProperty&&t.hasOwnProperty(e)}function Jy(t,e,i,n){for(var o=e.targetVisuals[n],a=sL.prepareVisualTypes(o),r={color:t.getData().getVisual("color")},s=0,l=a.length;s=0&&(r[a]=+r[a].toFixed(h)),r}function fx(t,e){var n=t.getData(),o=t.coordinateSystem;if(e&&!cx(e)&&!y(e.coord)&&o){var a=o.dimensions,r=px(e,n,o,t);if((e=i(e)).type&&WO[e.type]&&r.baseAxis&&r.valueAxis){var s=GO(a,r.baseAxis.dim),l=GO(a,r.valueAxis.dim);e.coord=WO[e.type](n,r.baseDataDim,r.valueDataDim,s,l),e.value=e.coord[l]}else{for(var u=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],h=0;h<2;h++)WO[u[h]]&&(u[h]=yx(n,n.mapDimension(a[h]),u[h]));e.coord=u}}return e}function px(t,e,i,n){var o={};return null!=t.valueIndex||null!=t.valueDim?(o.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,o.valueAxis=i.getAxis(gx(n,o.valueDataDim)),o.baseAxis=i.getOtherAxis(o.valueAxis),o.baseDataDim=e.mapDimension(o.baseAxis.dim)):(o.baseAxis=n.getBaseAxis(),o.valueAxis=i.getOtherAxis(o.baseAxis),o.baseDataDim=e.mapDimension(o.baseAxis.dim),o.valueDataDim=e.mapDimension(o.valueAxis.dim)),o}function gx(t,e){var i=t.getData(),n=i.dimensions;e=i.getDimension(e);for(var o=0;o=0)return!0}function Yx(t){for(var e=t.split(/\n+/g),i=[],n=f(Xx(e.shift()).split(lE),function(t){return{name:t,data:[]}}),o=0;o=0&&!i[o][n];o--);if(o<0){var a=t.queryComponents({mainType:"dataZoom",subType:"select",id:n})[0];if(a){var r=a.getPercentRange();i[0][n]={dataZoomId:n,start:r[0],end:r[1]}}}}),i.push(e)}function t_(t){var e=n_(t),i=e[e.length-1];e.length>1&&e.pop();var n={};return uE(i,function(t,i){for(var o=e.length-1;o>=0;o--)if(t=e[o][i]){n[i]=t;break}}),n}function e_(t){t[hE]=null}function i_(t){return n_(t).length}function n_(t){var e=t[hE];return e||(e=t[hE]=[{}]),e}function o_(t,e,i){(this._brushController=new Rf(i.getZr())).on("brush",m(this._onBrush,this)).mount(),this._isZoomActive}function a_(t){var e={};return d(["xAxisIndex","yAxisIndex"],function(i){e[i]=t[i],null==e[i]&&(e[i]="all"),(!1===e[i]||"none"===e[i])&&(e[i]=[])}),e}function r_(t,e){t.setIconStatus("back",i_(e)>1?"emphasis":"normal")}function s_(t,e,i,n,o){var a=i._isZoomActive;n&&"takeGlobalCursor"===n.type&&(a="dataZoomSelect"===n.key&&n.dataZoomSelectActive),i._isZoomActive=a,t.setIconStatus("zoom",a?"emphasis":"normal");var r=new hy(a_(t.option),e,{include:["grid"]});i._brushController.setPanels(r.makePanelOpts(o,function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"})).enableBrush(!!a&&{brushType:"auto",brushStyle:{lineWidth:0,fill:"rgba(0,0,0,0.2)"}})}function l_(t){this.model=t}function u_(t){return vE(t)}function h_(){if(!_E&&wE){_E=!0;var t=wE.styleSheets;t.length<31?wE.createStyleSheet().addRule(".zrvml","behavior:url(#default#VML)"):t[0].addRule(".zrvml","behavior:url(#default#VML)")}}function c_(t){return parseInt(t,10)}function d_(t,e){h_(),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 o=e.delFromStorage,a=e.addToStorage;e.delFromStorage=function(t){o.call(e,t),t&&t.onRemove&&t.onRemove(n)},e.addToStorage=function(t){t.onAdd&&t.onAdd(n),a.call(e,t)},this._firstPaint=!0}function f_(t){return function(){Yw('In IE8.0 VML mode painter not support method "'+t+'"')}}function p_(t){return document.createElementNS(eR,t)}function g_(t){return aR(1e4*t)/1e4}function m_(t){return t-cR}function v_(t,e){var i=e?t.textFill:t.fill;return null!=i&&i!==oR}function y_(t,e){var i=e?t.textStroke:t.stroke;return null!=i&&i!==oR}function x_(t,e){e&&__(t,"transform","matrix("+nR.call(e,",")+")")}function __(t,e,i){(!i||"linear"!==i.type&&"radial"!==i.type)&&t.setAttribute(e,i)}function w_(t,e,i){t.setAttributeNS("http://www.w3.org/1999/xlink",e,i)}function b_(t,e,i,n){if(v_(e,i)){var o=i?e.textFill:e.fill;o="transparent"===o?oR:o,"none"!==t.getAttribute("clip-path")&&o===oR&&(o="rgba(0, 0, 0, 0.002)"),__(t,"fill",o),__(t,"fill-opacity",null!=e.fillOpacity?e.fillOpacity*e.opacity:e.opacity)}else __(t,"fill",oR);if(y_(e,i)){var a=i?e.textStroke:e.stroke;__(t,"stroke",a="transparent"===a?oR:a),__(t,"stroke-width",(i?e.textStrokeWidth:e.lineWidth)/(!i&&e.strokeNoScale?n.getLineScale():1)),__(t,"paint-order",i?"stroke":"fill"),__(t,"stroke-opacity",null!=e.strokeOpacity?e.strokeOpacity:e.opacity),e.lineDash?(__(t,"stroke-dasharray",e.lineDash.join(",")),__(t,"stroke-dashoffset",aR(e.lineDashOffset||0))):__(t,"stroke-dasharray",""),e.lineCap&&__(t,"stroke-linecap",e.lineCap),e.lineJoin&&__(t,"stroke-linejoin",e.lineJoin),e.miterLimit&&__(t,"stroke-miterlimit",e.miterLimit)}else __(t,"stroke",oR)}function S_(t){for(var e=[],i=t.data,n=t.len(),o=0;o=uR||!m_(g)&&(d>-lR&&d<0||d>lR)==!!p;var y=g_(s+u*sR(c)),x=g_(l+h*rR(c));m&&(d=p?uR-1e-4:1e-4-uR,v=!0,9===o&&e.push("M",y,x));var _=g_(s+u*sR(c+d)),w=g_(l+h*rR(c+d));e.push("A",g_(u),g_(h),aR(f*hR),+v,+p,_,w);break;case iR.Z:a="Z";break;case iR.R:var _=g_(i[o++]),w=g_(i[o++]),b=g_(i[o++]),S=g_(i[o++]);e.push("M",_,w,"L",_+b,w,"L",_+b,w+S,"L",_,w+S,"L",_,w)}a&&e.push(a);for(var M=0;M=11),domSupported:"undefined"!=typeof document}}(navigator.userAgent),X_={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},j_={"[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},Y_=Object.prototype.toString,q_=Array.prototype,K_=q_.forEach,$_=q_.filter,J_=q_.slice,Q_=q_.map,tw=q_.reduce,ew={},iw=function(){return ew.createCanvas()};ew.createCanvas=function(){return document.createElement("canvas")};var nw,ow="__ec_primitive__";E.prototype={constructor:E,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){void 0!==e&&(t=m(t,e));for(var i in this.data)this.data.hasOwnProperty(i)&&t(this.data[i],i)},removeKey:function(t){delete this.data[t]}};var aw=(Object.freeze||Object)({$override:e,clone:i,merge:n,mergeAll:o,extend:a,defaults:r,createCanvas:iw,getContext:s,indexOf:l,inherits:u,mixin:h,isArrayLike:c,each:d,map:f,reduce:p,filter:g,find:function(t,e,i){if(t&&e)for(var n=0,o=t.length;n3&&(n=dw.call(n,1));for(var a=e.length,r=0;r4&&(n=dw.call(n,1,n.length-1));for(var a=n[n.length-1],r=e.length,s=0;s1&&n&&n.length>1){var a=ft(n)/ft(o);!isFinite(a)&&(a=1),e.pinchScale=a;var r=pt(n);return e.pinchX=r[0],e.pinchY=r[1],{type:"pinch",target:t[0].target,event:e}}}}},xw="silent";vt.prototype.dispose=function(){};var _w=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],ww=function(t,e,i,n){fw.call(this),this.storage=t,this.painter=e,this.painterRoot=n,i=i||new vt,this.proxy=null,this._hovered={},this._lastTouchMoment,this._lastX,this._lastY,this._gestureMgr,it.call(this),this.setHandlerProxy(i)};ww.prototype={constructor:ww,setHandlerProxy:function(t){this.proxy&&this.proxy.dispose(),t&&(d(_w,function(e){t.on&&t.on(e,this[e],this)},this),t.handler=this),this.proxy=t},mousemove:function(t){var e=t.zrX,i=t.zrY,n=this._hovered,o=n.target;o&&!o.__zr&&(o=(n=this.findHover(n.x,n.y)).target);var a=this._hovered=this.findHover(e,i),r=a.target,s=this.proxy;s.setCursor&&s.setCursor(r?r.cursor:"default"),o&&r!==o&&this.dispatchToElement(n,"mouseout",t),this.dispatchToElement(a,"mousemove",t),r&&r!==o&&this.dispatchToElement(a,"mouseover",t)},mouseout:function(t){this.dispatchToElement(this._hovered,"mouseout",t);var e,i=t.toElement||t.relatedTarget;do{i=i&&i.parentNode}while(i&&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 o="on"+e,a=gt(e,t,i);n&&(n[o]&&(a.cancelBubble=n[o].call(n,a)),n.trigger(e,a),n=n.parent,!a.cancelBubble););a.cancelBubble||(this.trigger(e,a),this.painter&&this.painter.eachOtherLayer(function(t){"function"==typeof t[o]&&t[o].call(t,a),t.trigger&&t.trigger(e,a)}))}},findHover:function(t,e,i){for(var n=this.storage.getDisplayList(),o={x:t,y:e},a=n.length-1;a>=0;a--){var r;if(n[a]!==i&&!n[a].ignore&&(r=yt(n[a],t,e))&&(!o.topTarget&&(o.topTarget=n[a]),r!==xw)){o.target=n[a];break}}return o},processGesture:function(t,e){this._gestureMgr||(this._gestureMgr=new vw);var i=this._gestureMgr;"start"===e&&i.clear();var n=i.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&i.clear(),n){var o=n.type;t.gestureEvent=o,this.dispatchToElement({target:n.target},o,n.event)}}},d(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){ww.prototype[t]=function(e){var i=this.findHover(e.zrX,e.zrY),n=i.target;if("mousedown"===t)this._downEl=n,this._downPoint=[e.zrX,e.zrY],this._upEl=n;else if("mouseup"===t)this._upEl=n;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||uw(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(i,t,e)}}),h(ww,fw),h(ww,it);var bw="undefined"==typeof Float32Array?Array:Float32Array,Sw=(Object.freeze||Object)({create:xt,identity:_t,copy:wt,mul:bt,translate:St,rotate:Mt,scale:It,invert:Tt,clone:At}),Mw=_t,Iw=5e-5,Tw=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},Aw=Tw.prototype;Aw.transform=null,Aw.needLocalTransform=function(){return Dt(this.rotation)||Dt(this.position[0])||Dt(this.position[1])||Dt(this.scale[0]-1)||Dt(this.scale[1]-1)};var Dw=[];Aw.updateTransform=function(){var t=this.parent,e=t&&t.transform,i=this.needLocalTransform(),n=this.transform;if(i||e){n=n||xt(),i?this.getLocalTransform(n):Mw(n),e&&(i?bt(n,t.transform,n):wt(n,t.transform)),this.transform=n;var o=this.globalScaleRatio;if(null!=o&&1!==o){this.getGlobalScale(Dw);var a=Dw[0]<0?-1:1,r=Dw[1]<0?-1:1,s=((Dw[0]-a)*o+a)/Dw[0]||0,l=((Dw[1]-r)*o+r)/Dw[1]||0;n[0]*=s,n[1]*=s,n[2]*=l,n[3]*=l}this.invTransform=this.invTransform||xt(),Tt(this.invTransform,n)}else n&&Mw(n)},Aw.getLocalTransform=function(t){return Tw.getLocalTransform(this,t)},Aw.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)},Aw.restoreTransform=function(t){var e=t.dpr||1;t.setTransform(e,0,0,e,0,0)};var Cw=[],Lw=xt();Aw.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],i=t[2]*t[2]+t[3]*t[3],n=this.position,o=this.scale;Dt(e-1)&&(e=Math.sqrt(e)),Dt(i-1)&&(i=Math.sqrt(i)),t[0]<0&&(e=-e),t[3]<0&&(i=-i),n[0]=t[4],n[1]=t[5],o[0]=e,o[1]=i,this.rotation=Math.atan2(-t[1]/i,t[0]/e)}},Aw.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(bt(Cw,t.invTransform,e),e=Cw);var i=this.origin;i&&(i[0]||i[1])&&(Lw[4]=i[0],Lw[5]=i[1],bt(Cw,e,Lw),Cw[4]-=i[0],Cw[5]-=i[1],e=Cw),this.setLocalTransform(e)}},Aw.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):(t[0]=1,t[1]=1,t)},Aw.transformCoordToLocal=function(t,e){var i=[t,e],n=this.invTransform;return n&&Q(i,i,n),i},Aw.transformCoordToGlobal=function(t,e){var i=[t,e],n=this.transform;return n&&Q(i,i,n),i},Tw.getLocalTransform=function(t,e){Mw(e=e||[]);var i=t.origin,n=t.scale||[1,1],o=t.rotation||0,a=t.position||[0,0];return i&&(e[4]-=i[0],e[5]-=i[1]),It(e,e,n),o&&Mt(e,e,o),i&&(e[4]+=i[0],e[5]+=i[1]),e[4]+=a[0],e[5]+=a[1],e};var kw={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:(!i||i<1?(i=1,e=.1):e=.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:(!i||i<1?(i=1,e=.1):e=.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:(!i||i<1?(i=1,e=.1):e=.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){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},backInOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-kw.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*kw.bounceIn(2*t):.5*kw.bounceOut(2*t-1)+.5}};Ct.prototype={constructor:Ct,step:function(t,e){if(this._initialized||(this._startTime=t+this._delay,this._initialized=!0),this._paused)this._pausedTime+=e;else{var i=(t-this._startTime-this._pausedTime)/this._life;if(!(i<0)){i=Math.min(i,1);var n=this.easing,o="string"==typeof n?kw[n]:n,a="function"==typeof o?o(i):i;return this.fire("frame",a),1===i?this.loop?(this.restart(t),"restart"):(this._needsRemove=!0,"destroy"):null}}},restart:function(t){var e=(t-this._startTime-this._pausedTime)%this._life;this._startTime=t-e+this.gap,this._pausedTime=0,this._needsRemove=!1},fire:function(t,e){this[t="on"+t]&&this[t](this._target,e)},pause:function(){this._paused=!0},resume:function(){this._paused=!1}};var Pw=function(){this.head=null,this.tail=null,this._len=0},Nw=Pw.prototype;Nw.insert=function(t){var e=new Ow(t);return this.insertEntry(e),e},Nw.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},Nw.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--},Nw.len=function(){return this._len},Nw.clear=function(){this.head=this.tail=null,this._len=0};var Ow=function(t){this.value=t,this.next,this.prev},Ew=function(t){this._list=new Pw,this._map={},this._maxSize=t||10,this._lastRemovedEntry=null},Rw=Ew.prototype;Rw.put=function(t,e){var i=this._list,n=this._map,o=null;if(null==n[t]){var a=i.len(),r=this._lastRemovedEntry;if(a>=this._maxSize&&a>0){var s=i.head;i.remove(s),delete n[s.key],o=s.value,this._lastRemovedEntry=s}r?r.value=e:r=new Ow(e),r.key=t,i.insertEntry(r),n[t]=r}return o},Rw.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},Rw.clear=function(){this._list.clear(),this._map={}};var zw={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]},Bw=new Ew(20),Vw=null,Gw=Ut,Fw=Xt,Ww=(Object.freeze||Object)({parse:Gt,lift:Ht,toHex:Zt,fastLerp:Ut,fastMapToColor:Gw,lerp:Xt,mapToColor:Fw,modifyHSL:jt,modifyAlpha:Yt,stringify:qt}),Hw=Array.prototype.slice,Zw=function(t,e,i,n){this._tracks={},this._target=t,this._loop=e||!1,this._getter=i||Kt,this._setter=n||$t,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};Zw.prototype={when:function(t,e){var i=this._tracks;for(var n in e)if(e.hasOwnProperty(n)){if(!i[n]){i[n]=[];var o=this._getter(this._target,n);if(null==o)continue;0!==t&&i[n].push({time:0,value:ae(o)})}i[n].push({time:t,value:e[n]})}return this},during:function(t){return this._onframeList.push(t),this},pause:function(){for(var t=0;t=i.x&&t<=i.x+i.width&&e>=i.y&&e<=i.y+i.height},clone:function(){return new de(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}}},de.create=function(t){return new de(t.x,t.y,t.width,t.height)};var tb=function(t){t=t||{},Kw.call(this,t);for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};tb.prototype={constructor:tb,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=0&&(i.splice(n,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__storage,i=this.__zr;e&&e!==t.__storage&&(e.addToStorage(t),t instanceof tb&&t.addChildrenToStorage(e)),i&&i.refresh()},remove:function(t){var e=this.__zr,i=this.__storage,n=this._children,o=l(n,t);return o<0?this:(n.splice(o,1),t.parent=null,i&&(i.delFromStorage(t),t instanceof tb&&t.delChildrenFromStorage(i)),e&&e.refresh(),this)},removeAll:function(){var t,e,i=this._children,n=this.__storage;for(e=0;e=0&&(this.delFromStorage(t),this._roots.splice(o,1),t instanceof tb&&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:we};var ob={shadowBlur:1,shadowOffsetX:1,shadowOffsetY:1,textShadowBlur:1,textShadowOffsetX:1,textShadowOffsetY:1,textBoxShadowBlur:1,textBoxShadowOffsetX:1,textBoxShadowOffsetY:1},ab=function(t,e,i){return ob.hasOwnProperty(e)?i*=t.dpr:i},rb={NONE:0,STYLE_BIND:1,PLAIN_TEXT:2},sb=9,lb=[["shadowBlur",0],["shadowOffsetX",0],["shadowOffsetY",0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],ub=function(t){this.extendFrom(t,!1)};ub.prototype={constructor:ub,fill:"#000",stroke:null,opacity:1,fillOpacity:null,strokeOpacity:null,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,font:null,textFont:null,fontStyle:null,fontWeight:null,fontSize:null,fontFamily:null,textTag:null,textFill:"#000",textStroke:null,textWidth:null,textHeight:null,textStrokeWidth:0,textLineHeight:null,textPosition:"inside",textRect:null,textOffset:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowColor:"transparent",textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textBoxShadowColor:"transparent",textBoxShadowBlur:0,textBoxShadowOffsetX:0,textBoxShadowOffsetY:0,transformText:!1,textRotation:0,textOrigin:null,textBackgroundColor:null,textBorderColor:null,textBorderWidth:0,textBorderRadius:0,textPadding:null,rich:null,truncate:null,blend:null,bind:function(t,e,i){var n=this,o=i&&i.style,a=!o||t.__attrCachedBy!==rb.STYLE_BIND;t.__attrCachedBy=rb.STYLE_BIND;for(var r=0;r0},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?Se:be)(t,e,i),o=e.colorStops,a=0;a=0&&i.splice(n,1),t.__hoverMir=null},clearHover:function(t){for(var e=this._hoverElements,i=0;i15)break}s.__drawIndex=m,s.__drawIndex0&&t>n[0]){for(r=0;rt);r++);a=i[n[r]]}if(n.splice(r+1,0,t),i[t]=e,!e.virtual)if(a){var l=a.dom;l.nextSibling?s.insertBefore(e.dom,l.nextSibling):s.appendChild(e.dom)}else s.firstChild?s.insertBefore(e.dom,s.firstChild):s.appendChild(e.dom)}else Yw("Layer of zlevel "+t+" is not valid")},eachLayer:function(t,e){var i,n,o=this._zlevelList;for(n=0;n0?.01:0),this._needsManuallyCompositing),a.__builtin__||Yw("ZLevel "+s+" has been used by unkown layer "+a.id),a!==i&&(a.__used=!0,a.__startIndex!==o&&(a.__dirty=!0),a.__startIndex=o,a.incremental?a.__drawIndex=-1:a.__drawIndex=o,e(o),i=a),r.__dirty&&(a.__dirty=!0,a.incremental&&a.__drawIndex<0&&(a.__drawIndex=o))}e(o),this.eachBuiltinLayer(function(t,e){!t.__used&&t.getElementCount()>0&&(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]?n(i[t],e,!0):i[t]=e;for(var o=0;o=0&&this._clips.splice(e,1)},removeAnimator:function(t){for(var e=t.getClips(),i=0;i=0||n&&l(n,r)<0)){var s=e.getShallow(r);null!=s&&(o[t[a][0]]=s)}}return o}},Qb=Jb([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),tS={getLineStyle:function(t){var e=Qb(this,t),i=this.getLineDash(e.lineWidth);return i&&(e.lineDash=i),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?null:"dashed"===e?[n,n]:[i,i]}},eS=Jb([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),iS={getAreaStyle:function(t,e){return eS(this,t,e)}},nS=Math.pow,oS=Math.sqrt,aS=1e-8,rS=1e-4,sS=oS(3),lS=1/3,uS=V(),hS=V(),cS=V(),dS=Math.min,fS=Math.max,pS=Math.sin,gS=Math.cos,mS=2*Math.PI,vS=V(),yS=V(),xS=V(),_S=[],wS=[],bS={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},SS=[],MS=[],IS=[],TS=[],AS=Math.min,DS=Math.max,CS=Math.cos,LS=Math.sin,kS=Math.sqrt,PS=Math.abs,NS="undefined"!=typeof Float32Array,OS=function(t){this._saveData=!t,this._saveData&&(this.data=[]),this._ctx=null};OS.prototype={constructor:OS,_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){this._ux=PS(1/Xw/t)||0,this._uy=PS(1/Xw/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return this._ctx=t,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(bS.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=PS(t-this._xi)>this._ux||PS(e-this._yi)>this._uy||this._len<5;return this.addData(bS.L,t,e),this._ctx&&i&&(this._needsDash()?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),i&&(this._xi=t,this._yi=e),this},bezierCurveTo:function(t,e,i,n,o,a){return this.addData(bS.C,t,e,i,n,o,a),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,i,n,o,a):this._ctx.bezierCurveTo(t,e,i,n,o,a)),this._xi=o,this._yi=a,this},quadraticCurveTo:function(t,e,i,n){return this.addData(bS.Q,t,e,i,n),this._ctx&&(this._needsDash()?this._dashedQuadraticTo(t,e,i,n):this._ctx.quadraticCurveTo(t,e,i,n)),this._xi=i,this._yi=n,this},arc:function(t,e,i,n,o,a){return this.addData(bS.A,t,e,i,i,n,o-n,0,a?0:1),this._ctx&&this._ctx.arc(t,e,i,n,o,a),this._xi=CS(o)*i+t,this._yi=LS(o)*i+e,this},arcTo:function(t,e,i,n,o){return this._ctx&&this._ctx.arcTo(t,e,i,n,o),this},rect:function(t,e,i,n){return this._ctx&&this._ctx.rect(t,e,i,n),this.addData(bS.R,t,e,i,n),this},closePath:function(){this.addData(bS.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,this._dashIdx=0;for(var e=0,i=0;ie.length&&(this._expandData(),e=this.data);for(var i=0;i0&&f<=t||h<0&&f>=t||0===h&&(c>0&&p<=e||c<0&&p>=e);)f+=h*(i=r[n=this._dashIdx]),p+=c*i,this._dashIdx=(n+1)%g,h>0&&fl||c>0&&pu||s[n%2?"moveTo":"lineTo"](h>=0?AS(f,t):DS(f,t),c>=0?AS(p,e):DS(p,e));h=f-t,c=p-e,this._dashOffset=-kS(h*h+c*c)},_dashedBezierTo:function(t,e,i,n,o,a){var r,s,l,u,h,c=this._dashSum,d=this._dashOffset,f=this._lineDash,p=this._ctx,g=this._xi,m=this._yi,v=Qi,y=0,x=this._dashIdx,_=f.length,w=0;for(d<0&&(d=c+d),d%=c,r=0;r<1;r+=.1)s=v(g,t,i,o,r+.1)-v(g,t,i,o,r),l=v(m,e,n,a,r+.1)-v(m,e,n,a,r),y+=kS(s*s+l*l);for(;x<_&&!((w+=f[x])>d);x++);for(r=(w-d)/y;r<=1;)u=v(g,t,i,o,r),h=v(m,e,n,a,r),x%2?p.moveTo(u,h):p.lineTo(u,h),r+=f[x]/y,x=(x+1)%_;x%2!=0&&p.lineTo(o,a),s=o-u,l=a-h,this._dashOffset=-kS(s*s+l*l)},_dashedQuadraticTo:function(t,e,i,n){var o=i,a=n;i=(i+2*t)/3,n=(n+2*e)/3,t=(this._xi+2*t)/3,e=(this._yi+2*e)/3,this._dashedBezierTo(t,e,i,n,o,a)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,NS&&(this.data=new Float32Array(t)))},getBoundingRect:function(){SS[0]=SS[1]=IS[0]=IS[1]=Number.MAX_VALUE,MS[0]=MS[1]=TS[0]=TS[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,i=0,n=0,o=0,a=0;al||PS(r-o)>u||c===h-1)&&(t.lineTo(a,r),n=a,o=r);break;case bS.C:t.bezierCurveTo(s[c++],s[c++],s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case bS.Q:t.quadraticCurveTo(s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case bS.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=g>m?g:m,b=g>m?1:g/m,S=g>m?m/g:1,M=v+y;Math.abs(g-m)>.001?(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=CS(v)*g+f,i=LS(v)*m+p),n=CS(M)*g+f,o=LS(M)*m+p;break;case bS.R:e=n=s[c],i=o=s[c+1],t.rect(s[c++],s[c++],s[c++],s[c++]);break;case bS.Z:t.closePath(),n=e,o=i}}}},OS.CMD=bS;var ES=2*Math.PI,RS=2*Math.PI,zS=OS.CMD,BS=2*Math.PI,VS=1e-4,GS=[-1,-1,-1],FS=[-1,-1],WS=fb.prototype.getCanvasPattern,HS=Math.abs,ZS=new OS(!0);kn.prototype={constructor:kn,type:"path",__dirtyPath:!0,strokeContainThreshold:5,subPixelOptimize:!1,brush:function(t,e){var i=this.style,n=this.path||ZS,o=i.hasStroke(),a=i.hasFill(),r=i.fill,s=i.stroke,l=a&&!!r.colorStops,u=o&&!!s.colorStops,h=a&&!!r.image,c=o&&!!s.image;if(i.bind(t,this,e),this.setTransform(t),this.__dirty){var d;l&&(d=d||this.getBoundingRect(),this._fillGradient=i.getGradient(t,r,d)),u&&(d=d||this.getBoundingRect(),this._strokeGradient=i.getGradient(t,s,d))}l?t.fillStyle=this._fillGradient:h&&(t.fillStyle=WS.call(r,t)),u?t.strokeStyle=this._strokeGradient:c&&(t.strokeStyle=WS.call(s,t));var f=i.lineDash,p=i.lineDashOffset,g=!!t.setLineDash,m=this.getGlobalScale();if(n.setScale(m[0],m[1]),this.__dirtyPath||f&&!g&&o?(n.beginPath(t),f&&!g&&(n.setLineDash(f),n.setLineDashOffset(p)),this.buildPath(n,this.shape,!1),this.path&&(this.__dirtyPath=!1)):(t.beginPath(),this.path.rebuildPath(t)),a)if(null!=i.fillOpacity){v=t.globalAlpha;t.globalAlpha=i.fillOpacity*i.opacity,n.fill(t),t.globalAlpha=v}else n.fill(t);if(f&&g&&(t.setLineDash(f),t.lineDashOffset=p),o)if(null!=i.strokeOpacity){var v=t.globalAlpha;t.globalAlpha=i.strokeOpacity*i.opacity,n.stroke(t),t.globalAlpha=v}else n.stroke(t);f&&g&&t.setLineDash([]),null!=i.text&&(this.restoreTransform(t),this.drawRectText(t,this.getBoundingRect()))},buildPath:function(t,e,i){},createPathProxy:function(){this.path=new OS},getBoundingRect:function(){var t=this._rect,e=this.style,i=!t;if(i){var n=this.path;n||(n=this.path=new OS),this.__dirtyPath&&(n.beginPath(),this.buildPath(n,this.shape,!1)),t=n.getBoundingRect()}if(this._rect=t,e.hasStroke()){var o=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||i){o.copy(t);var a=e.lineWidth,r=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(a=Math.max(a,this.strokeContainThreshold||4)),r>1e-10&&(o.width+=a/r,o.height+=a/r,o.x-=a/r/2,o.y-=a/r/2)}return o}return t},contain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this.getBoundingRect(),o=this.style;if(t=i[0],e=i[1],n.contain(t,e)){var a=this.path.data;if(o.hasStroke()){var r=o.lineWidth,s=o.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(o.hasFill()||(r=Math.max(r,this.strokeContainThreshold)),Ln(a,r/s,t,e)))return!0}if(o.hasFill())return Cn(a,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=this.__dirtyText=!0,this.__zr&&this.__zr.refresh(),this.__clipTarget&&this.__clipTarget.dirty()},animateShape:function(t){return this.animate("shape",t)},attrKV:function(t,e){"shape"===t?(this.setShape(e),this.__dirtyPath=!0,this._rect=null):di.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var i=this.shape;if(i){if(w(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&&HS(t[0]-1)>1e-10&&HS(t[3]-1)>1e-10?Math.sqrt(HS(t[0]*t[3]-t[2]*t[1])):1}},kn.extend=function(t){var e=function(e){kn.call(this,e),t.style&&this.style.extendFrom(t.style,!1);var i=t.shape;if(i){this.shape=this.shape||{};var n=this.shape;for(var o in i)!n.hasOwnProperty(o)&&i.hasOwnProperty(o)&&(n[o]=i[o])}t.init&&t.init.call(this,e)};u(e,kn);for(var i in t)"style"!==i&&"shape"!==i&&(e.prototype[i]=t[i]);return e},u(kn,di);var US=OS.CMD,XS=[[],[],[]],jS=Math.sqrt,YS=Math.atan2,qS=function(t,e){var i,n,o,a,r,s,l=t.data,u=US.M,h=US.C,c=US.L,d=US.R,f=US.A,p=US.Q;for(o=0,a=0;o=11?function(){var e,i=this.__clipPaths,n=this.style;if(i)for(var o=0;oi-2?i-1:c+1],u=t[c>i-3?i-1:c+2]);var p=d*d,g=d*p;n.push([zn(s[0],f[0],l[0],u[0],d,p,g),zn(s[1],f[1],l[1],u[1],d,p,g)])}return n},dM=function(t,e,i,n){var o,a,r,s,l=[],u=[],h=[],c=[];if(n){r=[1/0,1/0],s=[-1/0,-1/0];for(var d=0,f=t.length;d=i&&a>=o)return{x:i,y:o,width:n-i,height:a-o}},createIcon:ko,Group:tb,Image:fi,Text:aM,Circle:rM,Sector:uM,Ring:hM,Polygon:fM,Polyline:pM,Rect:vM,Line:xM,BezierCurve:wM,Arc:bM,IncrementalDisplayable:Hn,CompoundPath:SM,LinearGradient:IM,RadialGradient:TM,BoundingRect:de}),zM=["textStyle","color"],BM={getTextColor:function(t){var e=this.ecModel;return this.getShallow("color")||(!t&&e?e.get(zM):null)},getFont:function(){return bo({fontStyle:this.getShallow("fontStyle"),fontWeight:this.getShallow("fontWeight"),fontSize:this.getShallow("fontSize"),fontFamily:this.getShallow("fontFamily")},this.ecModel)},getTextRect:function(t){return ke(t,this.getFont(),this.getShallow("align"),this.getShallow("verticalAlign")||this.getShallow("baseline"),this.getShallow("padding"),this.getShallow("rich"),this.getShallow("truncateText"))}},VM=Jb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]),GM={getItemStyle:function(t,e){var i=VM(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]}},FM=h,WM=Bi();Po.prototype={constructor:Po,init:null,mergeOption:function(t){n(this.option,t,!0)},get:function(t,e){return null==t?this.option:No(this.option,this.parsePath(t),!e&&Oo(this,t))},getShallow:function(t,e){var i=this.option,n=null==i?i:i[t],o=!e&&Oo(this,t);return null==n&&o&&(n=o.getShallow(t)),n},getModel:function(t,e){var i,n=null==t?this.option:No(this.option,t=this.parsePath(t));return e=e||(i=Oo(this,t))&&i.getModel(t),new Po(n,e,this.ecModel)},isEmpty:function(){return null==this.option},restoreData:function(){},clone:function(){return new(0,this.constructor)(i(this.option))},setReadOnly:function(t){},parsePath:function(t){return"string"==typeof t&&(t=t.split(".")),t},customizeGetParent:function(t){WM(this).getParent=t},isAnimationEnabled:function(){if(!U_.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},Xi(Po),ji(Po),FM(Po,tS),FM(Po,iS),FM(Po,BM),FM(Po,GM);var HM=0,ZM=1e-4,UM=9007199254740991,XM=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/,jM=(Object.freeze||Object)({linearMap:zo,parsePercent:Bo,round:Vo,asc:Go,getPrecision:Fo,getPrecisionSafe:Wo,getPixelPrecision:Ho,getPercentWithPrecision:Zo,MAX_SAFE_INTEGER:UM,remRadian:Uo,isRadianAroundZero:Xo,parseDate:jo,quantity:Yo,nice:Ko,quantile:function(t,e){var i=(t.length-1)*e+1,n=Math.floor(i),o=+t[n-1],a=i-n;return a?o+a*(t[n]-o):o},reformIntervals:$o,isNumeric:Jo}),YM=L,qM=/([&<>"'])/g,KM={"&":"&","<":"<",">":">",'"':""","'":"'"},$M=["a","b","c","d","e","f","g"],JM=function(t,e){return"{"+t+(null==e?"":e)+"}"},QM=ze,tI=ke,eI=(Object.freeze||Object)({addCommas:Qo,toCamelCase:ta,normalizeCssArray:YM,encodeHTML:ea,formatTpl:ia,formatTplSimple:na,getTooltipMarker:oa,formatTime:ra,capitalFirst:sa,truncateText:QM,getTextRect:tI}),iI=d,nI=["left","right","top","bottom","width","height"],oI=[["width","left","right"],["height","top","bottom"]],aI=la,rI=(v(la,"vertical"),v(la,"horizontal"),Bi()),sI=Po.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,i,n){Po.call(this,t,e,i,n),this.uid=Eo("ec_cpt_model")},init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i)},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,o=i?pa(t):{};n(t,e.getTheme().get(this.mainType)),n(t,this.getDefaultOption()),i&&fa(t,o,i)},mergeOption:function(t,e){n(this.option,t,!0);var i=this.layoutMode;i&&fa(this.option,t,i)},optionUpdated:function(t,e){},getDefaultOption:function(){var t=rI(this);if(!t.defaultOption){for(var e=[],i=this.constructor;i;){var o=i.prototype.defaultOption;o&&e.push(o),i=i.superClass}for(var a={},r=e.length-1;r>=0;r--)a=n(a,e[r],!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)})}});Ki(sI,{registerWhenExtend:!0}),function(t){var e={};t.registerSubTypeDefaulter=function(t,i){t=Zi(t),e[t.main]=i},t.determineSubType=function(i,n){var o=n.type;if(!o){var a=Zi(i).main;t.hasSubTypes(i)&&e[a]&&(o=e[a](n))}return o}}(sI),function(t,e){function i(t){var i={},a=[];return d(t,function(r){var s=n(i,r),u=o(s.originalDeps=e(r),t);s.entryCount=u.length,0===s.entryCount&&a.push(r),d(u,function(t){l(s.predecessor,t)<0&&s.predecessor.push(t);var e=n(i,t);l(e.successor,t)<0&&e.successor.push(r)})}),{graph:i,noEntryList:a}}function n(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}function o(t,e){var i=[];return d(t,function(t){l(e,t)>=0&&i.push(t)}),i}t.topologicalTravel=function(t,e,n,o){function a(t){s[t].entryCount--,0===s[t].entryCount&&l.push(t)}if(t.length){var r=i(e),s=r.graph,l=r.noEntryList,u={};for(d(t,function(t){u[t]=!0});l.length;){var h=l.pop(),c=s[h],f=!!u[h];f&&(n.call(o,h,c.originalDeps.slice()),delete u[h]),d(c.successor,f?function(t){u[t]=!0,a(t)}:a)}d(u,function(){throw new Error("Circle dependency may exists")})}}}(sI,function(t){var e=[];return d(sI.getClassesByMainType(t),function(t){e=e.concat(t.prototype.dependencies||[])}),e=f(e,function(t){return Zi(t).main}),"dataset"!==t&&l(e,"dataset")<=0&&e.unshift("dataset"),e}),h(sI,{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 lI="";"undefined"!=typeof navigator&&(lI=navigator.platform||"");var uI={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],gradientColor:["#f6efa6","#d88273","#bf444c"],textStyle:{fontFamily:lI.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},hI=Bi(),cI={clearColorPalette:function(){hI(this).colorIdx=0,hI(this).colorNameMap={}},getColorFromPalette:function(t,e,i){var n=hI(e=e||this),o=n.colorIdx||0,a=n.colorNameMap=n.colorNameMap||{};if(a.hasOwnProperty(t))return a[t];var r=Di(this.get("color",!0)),s=this.get("colorLayer",!0),l=null!=i&&s?ma(s,i):r;if((l=l||r)&&l.length){var u=l[o];return t&&(a[t]=u),n.colorIdx=(o+1)%l.length,u}}},dI={cartesian2d:function(t,e,i,n){var o=t.getReferringComponents("xAxis")[0],a=t.getReferringComponents("yAxis")[0];e.coordSysDims=["x","y"],i.set("x",o),i.set("y",a),ya(o)&&(n.set("x",o),e.firstCategoryDimIndex=0),ya(a)&&(n.set("y",a),e.firstCategoryDimIndex=1)},singleAxis:function(t,e,i,n){var o=t.getReferringComponents("singleAxis")[0];e.coordSysDims=["single"],i.set("single",o),ya(o)&&(n.set("single",o),e.firstCategoryDimIndex=0)},polar:function(t,e,i,n){var o=t.getReferringComponents("polar")[0],a=o.findAxisModel("radiusAxis"),r=o.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],i.set("radius",a),i.set("angle",r),ya(a)&&(n.set("radius",a),e.firstCategoryDimIndex=0),ya(r)&&(n.set("angle",r),e.firstCategoryDimIndex=1)},geo:function(t,e,i,n){e.coordSysDims=["lng","lat"]},parallel:function(t,e,i,n){var o=t.ecModel,a=o.getComponent("parallel",t.get("parallelIndex")),r=e.coordSysDims=a.dimensions.slice();d(a.parallelAxisIndex,function(t,a){var s=o.getComponent("parallelAxis",t),l=r[a];i.set(l,s),ya(s)&&null==e.firstCategoryDimIndex&&(n.set(l,s),e.firstCategoryDimIndex=a)})}},fI="original",pI="arrayRows",gI="objectRows",mI="keyedColumns",vI="unknown",yI="typedArray",xI="column",_I="row";xa.seriesDataToSource=function(t){return new xa({data:t,sourceFormat:S(t)?yI:fI,fromDataset:!1})},ji(xa);var wI=Bi(),bI="\0_ec_inner",SI=Po.extend({init:function(t,e,i,n){i=i||{},this.option=null,this._theme=new Po(i),this._optionManager=n},setOption:function(t,e){k(!(bI 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)):Oa.call(this,n),e=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var o=i.getTimelineOption(this);o&&(this.mergeOption(o),e=!0)}if(!t||"recreate"===t||"media"===t){var a=i.getMediaOption(this,this._api);a.length&&d(a,function(t){this.mergeOption(t,e=!0)},this)}return e},mergeOption:function(t){var e=this.option,o=this._componentsMap,r=[];ba(this),d(t,function(t,o){null!=t&&(sI.hasClass(o)?o&&r.push(o):e[o]=null==e[o]?i(t):n(e[o],t,!0))}),sI.topologicalTravel(r,sI.getAllClassMainTypes(),function(i,n){var r=Di(t[i]),s=Pi(o.get(i),r);Ni(s),d(s,function(t,e){var n=t.option;w(n)&&(t.keyInfo.mainType=i,t.keyInfo.subType=Ra(i,n,t.exist))});var l=Ea(o,n);e[i]=[],o.set(i,[]),d(s,function(t,n){var r=t.exist,s=t.option;if(k(w(s)||r,"Empty component definition"),s){var u=sI.getClass(i,t.keyInfo.subType,!0);if(r&&r instanceof u)r.name=t.keyInfo.name,r.mergeOption(s,this),r.optionUpdated(s,!1);else{var h=a({dependentModels:l,componentIndex:n},t.keyInfo);a(r=new u(s,this,this,h),h),r.init(s,this,this,h),r.optionUpdated(null,!0)}}else r.mergeOption({},this),r.optionUpdated({},!1);o.get(i)[n]=r,e[i][n]=r.option},this),"series"===i&&za(this,o.get("series"))},this),this._seriesIndicesMap=R(this._seriesIndices=this._seriesIndices||[])},getOption:function(){var t=i(this.option);return d(t,function(e,i){if(sI.hasClass(i)){for(var n=(e=Di(e)).length-1;n>=0;n--)Ei(e[n])&&e.splice(n,1);t[i]=e}}),delete t[bI],t},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=t.index,n=t.id,o=t.name,a=this._componentsMap.get(e);if(!a||!a.length)return[];var r;if(null!=i)y(i)||(i=[i]),r=g(f(i,function(t){return a[t]}),function(t){return!!t});else if(null!=n){var s=y(n);r=g(a,function(t){return s&&l(n,t.id)>=0||!s&&t.id===n})}else if(null!=o){var u=y(o);r=g(a,function(t){return u&&l(o,t.name)>=0||!u&&t.name===o})}else r=a.slice();return Ba(r,t)},findComponents:function(t){var e=t.query,i=t.mainType,n=function(t){var e=i+"Index",n=i+"Id",o=i+"Name";return!t||null==t[e]&&null==t[n]&&null==t[o]?null:{mainType:i,index:t[e],id:t[n],name:t[o]}}(e);return function(e){return t.filter?g(e,t.filter):e}(Ba(n?this.queryComponents(n):this._componentsMap.get(i),t))},eachComponent:function(t,e,i){var n=this._componentsMap;"function"==typeof t?(i=e,e=t,n.each(function(t,n){d(t,function(t,o){e.call(i,n,t,o)})})):_(t)?d(n.get(t),e,i):w(t)&&d(this.findComponents(t),e,i)},getSeriesByName:function(t){return g(this._componentsMap.get("series"),function(e){return e.name===t})},getSeriesByIndex:function(t){return this._componentsMap.get("series")[t]},getSeriesByType:function(t){return g(this._componentsMap.get("series"),function(e){return e.subType===t})},getSeries:function(){return this._componentsMap.get("series").slice()},getSeriesCount:function(){return this._componentsMap.get("series").length},eachSeries:function(t,e){d(this._seriesIndices,function(i){var n=this._componentsMap.get("series")[i];t.call(e,n,i)},this)},eachRawSeries:function(t,e){d(this._componentsMap.get("series"),t,e)},eachSeriesByType:function(t,e,i){d(this._seriesIndices,function(n){var o=this._componentsMap.get("series")[n];o.subType===t&&e.call(i,o,n)},this)},eachRawSeriesByType:function(t,e,i){return d(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){za(this,g(this._componentsMap.get("series"),t,e))},restoreData:function(t){var e=this._componentsMap;za(this,e.get("series"));var i=[];e.each(function(t,e){i.push(e)}),sI.topologicalTravel(i,sI.getAllClassMainTypes(),function(i,n){d(e.get(i),function(e){("series"!==i||!Pa(e,t))&&e.restoreData()})})}});h(SI,cI);var MI=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption","getViewOfComponentModel","getViewOfSeriesModel"],II={};Ga.prototype={constructor:Ga,create:function(t,e){var i=[];d(II,function(n,o){var a=n.create(t,e);i=i.concat(a||[])}),this._coordinateSystems=i},update:function(t,e){d(this._coordinateSystems,function(i){i.update&&i.update(t,e)})},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},Ga.register=function(t,e){II[t]=e},Ga.get=function(t){return II[t]};var TI=d,AI=i,DI=f,CI=n,LI=/^(min|max)?(.+)$/;Fa.prototype={constructor:Fa,setOption:function(t,e){t&&d(Di(t.series),function(t){t&&t.data&&S(t.data)&&N(t.data)}),t=AI(t,!0);var i=this._optionBackup,n=Wa.call(this,t,e,!i);this._newBaseOption=n.baseOption,i?(Xa(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=DI(e.timelineOptions,AI),this._mediaList=DI(e.mediaList,AI),this._mediaDefault=AI(e.mediaDefault),this._currentMediaIndices=[],AI(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i.length){var n=t.getComponent("timeline");n&&(e=AI(i[n.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e=this._api.getWidth(),i=this._api.getHeight(),n=this._mediaList,o=this._mediaDefault,a=[],r=[];if(!n.length&&!o)return r;for(var s=0,l=n.length;s=1)&&(t=1),t}var i=this._upstream,n=t&&t.skip;if(this._dirty&&i){var o=this.context;o.data=o.outputData=i.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this);var a;this._plan&&!n&&(a=this._plan(this.context));var r=e(this._modBy),s=this._modDataCount||0,l=e(t&&t.modBy),u=t&&t.modDataCount||0;r===l&&s===u||(a="reset");var h;(this._dirty||"reset"===a)&&(this._dirty=!1,h=vr(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&&(h||d=i?null:t1&&a>0?e:t}};return s}();ZI.dirty=function(){this._dirty=!0,this._onDirty&&this._onDirty(this.context)},ZI.unfinished=function(){return this._progress&&this._dueIndex":"\n",s="richText"===n,l={},u=0,h=this.getData(),c=h.mapDimension("defaultedTooltip",!0),f=c.length,g=this.getRawValue(t),m=y(g),v=h.getItemVisual(t,"color");w(v)&&v.colorStops&&(v=(v.colorStops[0]||{}).color),v=v||"transparent";var x=(f>1||m&&!f?function(i){function o(t,i){var o=h.getDimensionInfo(i);if(o&&!1!==o.otherDims.tooltip){var c=o.type,d="sub"+a.seriesIndex+"at"+u,p=oa({color:v,type:"subItem",renderMode:n,markerId:d}),g="string"==typeof p?p:p.content,m=(r?g+ea(o.displayName||"-")+": ":"")+ea("ordinal"===c?t+"":"time"===c?e?"":ra("yyyy/MM/dd hh:mm:ss",t):Qo(t));m&&f.push(m),s&&(l[d]=v,++u)}}var r=p(i,function(t,e,i){var n=h.getDimensionInfo(i);return t|=n&&!1!==n.tooltip&&null!=n.displayName},0),f=[];c.length?d(c,function(e){o(dr(h,t,e),e)}):d(i,o);var g=r?s?"\n":"
":"",m=g+f.join(g||", ");return{renderMode:n,content:m,style:l}}(g):o(f?dr(h,t,c[0]):m?g[0]:g)).content,_=a.seriesIndex+"at"+u,b=oa({color:v,type:"item",renderMode:n,markerId:_});l[_]=v,++u;var S=h.getName(t),M=this.name;Oi(this)||(M=""),M=M?ea(M)+(e?": ":r):"";var I="string"==typeof b?b:b.content;return{html:e?I+M+x:M+I+(S?ea(S)+": "+x:x),markers:l}},isAnimationEnabled:function(){if(U_.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){this.dataTask.dirty()},getColorFromPalette:function(t,e,i){var n=this.ecModel,o=cI.getColorFromPalette.call(this,t,e,i);return o||(o=n.getColorFromPalette(t,e,i)),o},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});h(jI,HI),h(jI,cI);var YI=function(){this.group=new tb,this.uid=Eo("viewComponent")};YI.prototype={constructor:YI,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){},filterForExposedEvent:null};var qI=YI.prototype;qI.updateView=qI.updateLayout=qI.updateVisual=function(t,e,i,n){},Xi(YI),Ki(YI,{registerWhenExtend:!0});var KI=function(){var t=Bi();return function(e){var i=t(e),n=e.pipelineContext,o=i.large,a=i.progressiveRender,r=i.large=n.large,s=i.progressiveRender=n.progressiveRender;return!!(o^r||a^s)&&"reset"}},$I=Bi(),JI=KI();Tr.prototype={type:"chart",init:function(t,e){},render:function(t,e,i,n){},highlight:function(t,e,i,n){Dr(t.getData(),n,"emphasis")},downplay:function(t,e,i,n){Dr(t.getData(),n,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){},incrementalPrepareRender:null,incrementalRender:null,updateTransform:null,filterForExposedEvent:null};var QI=Tr.prototype;QI.updateView=QI.updateLayout=QI.updateVisual=function(t,e,i,n){this.render(t,e,i,n)},Xi(Tr),Ki(Tr,{registerWhenExtend:!0}),Tr.markUpdateMethod=function(t,e){$I(t).updateMethod=e};var tT={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)}}},eT="\0__throttleOriginMethod",iT="\0__throttleRate",nT="\0__throttleType",oT={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var i=t.getData(),n=(t.visualColorAccessPath||"itemStyle.color").split("."),o=t.get(n)||t.getColorFromPalette(t.name,null,e.getSeriesCount());if(i.setVisual("color",o),!e.isSeriesFiltered(t)){"function"!=typeof o||o instanceof MM||i.each(function(e){i.setItemVisual(e,"color",o(t.getDataParams(e)))});return{dataEach:i.hasItemOption?function(t,e){var i=t.getItemModel(e).get(n,!0);null!=i&&t.setItemVisual(e,"color",i)}:null}}}},aT={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:""}}}},rT=function(t,e){function i(t,e){if("string"!=typeof t)return t;var i=t;return d(e,function(t,e){i=i.replace(new RegExp("\\{\\s*"+e+"\\s*\\}","g"),t)}),i}function n(t){var e=a.get(t);if(null==e){for(var i=t.split("."),n=aT.aria,o=0;o1?"series.multiple.prefix":"series.single.prefix"),{seriesCount:r}),e.eachSeries(function(t,e){if(e1?"multiple":"single")+".";a=i(a=n(s?u+"withName":u+"withoutName"),{seriesId:t.seriesIndex,seriesName:t.get("name"),seriesType:o(t.subType)});var c=t.getData();window.data=c,c.count()>l?a+=i(n("data.partialData"),{displayCnt:l}):a+=n("data.allData");for(var d=[],p=0;pi.blockIndex?i.step:null,a=n&&n.modDataCount;return{step:o,modBy:null!=a?Math.ceil(a/o):null,modDataCount:a}}},lT.getPipeline=function(t){return this._pipelineMap.get(t)},lT.updateStreamModes=function(t,e){var i=this._pipelineMap.get(t.uid),n=t.getData().count(),o=i.progressiveEnabled&&e.incrementalPrepareRender&&n>=i.threshold,a=t.get("large")&&n>=t.get("largeThreshold"),r="mod"===t.get("progressiveChunkMode")?n:null;t.pipelineContext=i.context={progressiveRender:o,modDataCount:r,large:a}},lT.restorePipelines=function(t){var e=this,i=e._pipelineMap=R();t.eachSeries(function(t){var n=t.getProgressive(),o=t.uid;i.set(o,{id:o,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:n&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(n||700),count:0}),Xr(e,t,t.dataTask)})},lT.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.ecInstance.getModel(),i=this.api;d(this._allHandlers,function(n){var o=t.get(n.uid)||t.set(n.uid,[]);n.reset&&Rr(this,n,o,e,i),n.overallReset&&zr(this,n,o,e,i)},this)},lT.prepareView=function(t,e,i,n){var o=t.renderTask,a=o.context;a.model=e,a.ecModel=i,a.api=n,o.__block=!t.incrementalPrepareRender,Xr(this,e,o)},lT.performDataProcessorTasks=function(t,e){Er(this,this._dataProcessorHandlers,t,e,{block:!0})},lT.performVisualTasks=function(t,e,i){Er(this,this._visualHandlers,t,e,i)},lT.performSeriesTasks=function(t){var e;t.eachSeries(function(t){e|=t.dataTask.perform()}),this.unfinished|=e},lT.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 uT=lT.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},hT=Zr(0);Or.wrapStageHandler=function(t,e){return x(t)&&(t={overallReset:t,seriesType:jr(t)}),t.uid=Eo("stageHandler"),e&&(t.visualType=e),t};var cT,dT={},fT={};Yr(dT,SI),Yr(fT,Va),dT.eachSeriesByType=dT.eachRawSeriesByType=function(t){cT=t},dT.eachComponent=function(t){"series"===t.mainType&&t.subType&&(cT=t.subType)};var pT=["#37A2DA","#32C5E9","#67E0E3","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#E062AE","#E690D1","#e7bcf3","#9d96f5","#8378EA","#96BFFF"],gT={color:pT,colorLayer:[["#37A2DA","#ffd85c","#fd7b5f"],["#37A2DA","#67E0E3","#FFDB5C","#ff9f7f","#E062AE","#9d96f5"],["#37A2DA","#32C5E9","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#e7bcf3","#8378EA","#96BFFF"],pT]},mT=["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53","#eedd78","#73a373","#73b9bc","#7289ab","#91ca8c","#f49f42"],vT={color:mT,backgroundColor:"#333",tooltip:{axisPointer:{lineStyle:{color:"#eee"},crossStyle:{color:"#eee"}}},legend:{textStyle:{color:"#eee"}},textStyle:{color:"#eee"},title:{textStyle:{color:"#eee"}},toolbox:{iconStyle:{normal:{borderColor:"#eee"}}},dataZoom:{textStyle:{color:"#eee"}},visualMap:{textStyle:{color:"#eee"}},timeline:{lineStyle:{color:"#eee"},itemStyle:{normal:{color:mT[1]}},label:{normal:{textStyle:{color:"#eee"}}},controlStyle:{normal:{color:"#eee",borderColor:"#eee"}}},timeAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},logAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},valueAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},categoryAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},line:{symbol:"circle"},graph:{color:mT},gauge:{title:{textStyle:{color:"#eee"}}},candlestick:{itemStyle:{normal:{color:"#FD1050",color0:"#0CF49B",borderColor:"#FD1050",borderColor0:"#0CF49B"}}}};vT.categoryAxis.splitLine.show=!1,sI.extend({type:"dataset",defaultOption:{seriesLayoutBy:xI,sourceHeader:null,dimensions:null,source:null},optionUpdated:function(){_a(this)}}),YI.extend({type:"dataset"});var yT=kn.extend({type:"ellipse",shape:{cx:0,cy:0,rx:0,ry:0},buildPath:function(t,e){var i=.5522848,n=e.cx,o=e.cy,a=e.rx,r=e.ry,s=a*i,l=r*i;t.moveTo(n-a,o),t.bezierCurveTo(n-a,o-l,n-s,o-r,n,o-r),t.bezierCurveTo(n+s,o-r,n+a,o-l,n+a,o),t.bezierCurveTo(n+a,o+l,n+s,o+r,n,o+r),t.bezierCurveTo(n-s,o+r,n-a,o+l,n-a,o),t.closePath()}}),xT=/[\s,]+/;Kr.prototype.parse=function(t,e){e=e||{};var i=qr(t);if(!i)throw new Error("Illegal svg");var n=new tb;this._root=n;var o=i.getAttribute("viewBox")||"",a=parseFloat(i.getAttribute("width")||e.width),r=parseFloat(i.getAttribute("height")||e.height);isNaN(a)&&(a=null),isNaN(r)&&(r=null),ts(i,n,null,!0);for(var s=i.firstChild;s;)this._parseNode(s,n),s=s.nextSibling;var l,u;if(o){var h=P(o).split(xT);h.length>=4&&(l={x:parseFloat(h[0]||0),y:parseFloat(h[1]||0),width:parseFloat(h[2]),height:parseFloat(h[3])})}if(l&&null!=a&&null!=r&&(u=os(l,a,r),!e.ignoreViewBox)){var c=n;(n=new tb).add(c),c.scale=u.scale.slice(),c.position=u.position.slice()}return e.ignoreRootClip||null==a||null==r||n.setClipPath(new vM({shape:{x:0,y:0,width:a,height:r}})),{root:n,width:a,height:r,viewBoxRect:l,viewBoxTransform:u}},Kr.prototype._parseNode=function(t,e){var i=t.nodeName.toLowerCase();"defs"===i?this._isDefine=!0:"text"===i&&(this._isText=!0);var n;if(this._isDefine){if(r=wT[i]){var o=r.call(this,t),a=t.getAttribute("id");a&&(this._defs[a]=o)}}else{var r=_T[i];r&&(n=r.call(this,t,e),e.add(n))}for(var s=t.firstChild;s;)1===s.nodeType&&this._parseNode(s,n),3===s.nodeType&&this._isText&&this._parseText(s,n),s=s.nextSibling;"defs"===i?this._isDefine=!1:"text"===i&&(this._isText=!1)},Kr.prototype._parseText=function(t,e){if(1===t.nodeType){var i=t.getAttribute("dx")||0,n=t.getAttribute("dy")||0;this._textX+=parseFloat(i),this._textY+=parseFloat(n)}var o=new aM({style:{text:t.textContent,transformText:!0},position:[this._textX||0,this._textY||0]});Jr(e,o),ts(t,o,this._defs);var a=o.style.fontSize;a&&a<9&&(o.style.fontSize=9,o.scale=o.scale||[1,1],o.scale[0]*=a/9,o.scale[1]*=a/9);var r=o.getBoundingRect();return this._textX+=r.width,e.add(o),o};var _T={g:function(t,e){var i=new tb;return Jr(e,i),ts(t,i,this._defs),i},rect:function(t,e){var i=new vM;return Jr(e,i),ts(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 rM;return Jr(e,i),ts(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 xM;return Jr(e,i),ts(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 yT;return Jr(e,i),ts(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=Qr(i));var n=new fM({shape:{points:i||[]}});return Jr(e,n),ts(t,n,this._defs),n},polyline:function(t,e){var i=new kn;Jr(e,i),ts(t,i,this._defs);var n=t.getAttribute("points");return n&&(n=Qr(n)),new pM({shape:{points:n||[]}})},image:function(t,e){var i=new fi;return Jr(e,i),ts(t,i,this._defs),i.setStyle({image:t.getAttribute("xlink:href"),x:t.getAttribute("x"),y:t.getAttribute("y"),width:t.getAttribute("width"),height:t.getAttribute("height")}),i},text:function(t,e){var i=t.getAttribute("x")||0,n=t.getAttribute("y")||0,o=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0;this._textX=parseFloat(i)+parseFloat(o),this._textY=parseFloat(n)+parseFloat(a);var r=new tb;return Jr(e,r),ts(t,r,this._defs),r},tspan:function(t,e){var i=t.getAttribute("x"),n=t.getAttribute("y");null!=i&&(this._textX=parseFloat(i)),null!=n&&(this._textY=parseFloat(n));var o=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0,r=new tb;return Jr(e,r),ts(t,r,this._defs),this._textX+=o,this._textY+=a,r},path:function(t,e){var i=En(t.getAttribute("d")||"");return Jr(e,i),ts(t,i,this._defs),i}},wT={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||0,10),i=parseInt(t.getAttribute("y1")||0,10),n=parseInt(t.getAttribute("x2")||10,10),o=parseInt(t.getAttribute("y2")||0,10),a=new IM(e,i,n,o);return $r(t,a),a},radialgradient:function(t){}},bT={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"},ST=/url\(\s*#(.*?)\)/,MT=/(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g,IT=/([^\s:;]+)\s*:\s*([^:;]+)/g,TT=R(),AT={registerMap:function(t,e,i){var n;return y(e)?n=e:e.svg?n=[{type:"svg",source:e.svg,specialAreas:e.specialAreas}]:(e.geoJson&&!e.features&&(i=e.specialAreas,e=e.geoJson),n=[{type:"geoJSON",source:e,specialAreas:i}]),d(n,function(t){var e=t.type;"geoJson"===e&&(e=t.type="geoJSON"),(0,DT[e])(t)}),TT.set(t,n)},retrieveMap:function(t){return TT.get(t)}},DT={geoJSON:function(t){var e=t.source;t.geoJSON=_(e)?"undefined"!=typeof JSON&&JSON.parse?JSON.parse(e):new Function("return ("+e+");")():e},svg:function(t){t.svgXML=qr(t.source)}},CT=k,LT=d,kT=x,PT=w,NT=sI.parseClassType,OT=1e3,ET=1e3,RT=3e3,zT={PROCESSOR:{FILTER:OT,STATISTIC:5e3},VISUAL:{LAYOUT:ET,GLOBAL:2e3,CHART:RT,COMPONENT:4e3,BRUSH:5e3}},BT="__flagInMainProcess",VT="__optionUpdated",GT=/^[a-zA-Z0-9_]+$/;ss.prototype.on=rs("on"),ss.prototype.off=rs("off"),ss.prototype.one=rs("one"),h(ss,fw);var FT=ls.prototype;FT._onframe=function(){if(!this._disposed){var t=this._scheduler;if(this[VT]){var e=this[VT].silent;this[BT]=!0,hs(this),WT.update.call(this),this[BT]=!1,this[VT]=!1,ps.call(this,e),gs.call(this,e)}else if(t.unfinished){var i=1,n=this._model;this._api;t.unfinished=!1;do{var o=+new Date;t.performSeriesTasks(n),t.performDataProcessorTasks(n),ds(this,n),t.performVisualTasks(n),ws(this,this._model,0,"remain"),i-=+new Date-o}while(i>0&&t.unfinished);t.unfinished||this._zr.flush()}}},FT.getDom=function(){return this._dom},FT.getZr=function(){return this._zr},FT.setOption=function(t,e,i){var n;if(PT(e)&&(i=e.lazyUpdate,n=e.silent,e=e.notMerge),this[BT]=!0,!this._model||e){var o=new Fa(this._api),a=this._theme,r=this._model=new SI(null,null,a,o);r.scheduler=this._scheduler,r.init(null,null,a,o)}this._model.setOption(t,jT),i?(this[VT]={silent:n},this[BT]=!1):(hs(this),WT.update.call(this),this._zr.flush(),this[VT]=!1,this[BT]=!1,ps.call(this,n),gs.call(this,n))},FT.setTheme=function(){console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},FT.getModel=function(){return this._model},FT.getOption=function(){return this._model&&this._model.getOption()},FT.getWidth=function(){return this._zr.getWidth()},FT.getHeight=function(){return this._zr.getHeight()},FT.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},FT.getRenderedCanvas=function(t){if(U_.canvasSupported)return(t=t||{}).pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor"),this._zr.painter.getRenderedCanvas(t)},FT.getSvgDataUrl=function(){if(U_.svgSupported){var t=this._zr;return d(t.storage.getDisplayList(),function(t){t.stopAnimation(!0)}),t.painter.pathToDataUrl()}},FT.getDataURL=function(t){var e=(t=t||{}).excludeComponents,i=this._model,n=[],o=this;LT(e,function(t){i.eachComponent({mainType:t},function(t){var e=o._componentsMap[t.__viewId];e.group.ignore||(n.push(e),e.group.ignore=!0)})});var a="svg"===this._zr.painter.getType()?this.getSvgDataUrl():this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return LT(n,function(t){t.group.ignore=!1}),a},FT.getConnectedDataURL=function(t){if(U_.canvasSupported){var e=this.group,n=Math.min,o=Math.max;if(QT[e]){var a=1/0,r=1/0,s=-1/0,l=-1/0,u=[],h=t&&t.pixelRatio||1;d(JT,function(h,c){if(h.group===e){var d=h.getRenderedCanvas(i(t)),f=h.getDom().getBoundingClientRect();a=n(f.left,a),r=n(f.top,r),s=o(f.right,s),l=o(f.bottom,l),u.push({dom:d,left:f.left,top:f.top})}});var c=(s*=h)-(a*=h),f=(l*=h)-(r*=h),p=iw();p.width=c,p.height=f;var g=Ii(p);return LT(u,function(t){var e=new fi({style:{x:t.left*h-a,y:t.top*h-r,image:t.dom}});g.add(e)}),g.refreshImmediately(),p.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},FT.convertToPixel=v(us,"convertToPixel"),FT.convertFromPixel=v(us,"convertFromPixel"),FT.containPixel=function(t,e){var i;return t=Vi(this._model,t),d(t,function(t,n){n.indexOf("Models")>=0&&d(t,function(t){var o=t.coordinateSystem;if(o&&o.containPoint)i|=!!o.containPoint(e);else if("seriesModels"===n){var a=this._chartsMap[t.__viewId];a&&a.containPoint&&(i|=a.containPoint(e,t))}},this)},this),!!i},FT.getVisual=function(t,e){var i=(t=Vi(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)},FT.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},FT.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var WT={prepareAndUpdate:function(t){hs(this),WT.update.call(this,t)},update:function(t){var e=this._model,i=this._api,n=this._zr,o=this._coordSysMgr,a=this._scheduler;if(e){a.restoreData(e,t),a.performSeriesTasks(e),o.create(e,i),a.performDataProcessorTasks(e,t),ds(this,e),o.update(e,i),ys(e),a.performVisualTasks(e,t),xs(this,e,i,t);var r=e.get("backgroundColor")||"transparent";if(U_.canvasSupported)n.setBackgroundColor(r);else{var s=Gt(r);r=qt(s,"rgb"),0===s[3]&&(r="transparent")}bs(e,i)}},updateTransform:function(t){var e=this._model,i=this,n=this._api;if(e){var o=[];e.eachComponent(function(a,r){var s=i.getViewOfComponentModel(r);if(s&&s.__alive)if(s.updateTransform){var l=s.updateTransform(r,e,n,t);l&&l.update&&o.push(s)}else o.push(s)});var a=R();e.eachSeries(function(o){var r=i._chartsMap[o.__viewId];if(r.updateTransform){var s=r.updateTransform(o,e,n,t);s&&s.update&&a.set(o.uid,1)}else a.set(o.uid,1)}),ys(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0,dirtyMap:a}),ws(i,e,0,t,a),bs(e,this._api)}},updateView:function(t){var e=this._model;e&&(Tr.markUpdateMethod(t,"updateView"),ys(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0}),xs(this,this._model,this._api,t),bs(e,this._api))},updateVisual:function(t){WT.update.call(this,t)},updateLayout:function(t){WT.update.call(this,t)}};FT.resize=function(t){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[BT]=!0,i&&hs(this),WT.update.call(this),this[BT]=!1,ps.call(this,n),gs.call(this,n)}},FT.showLoading=function(t,e){if(PT(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),$T[t]){var i=$T[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},FT.hideLoading=function(){this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},FT.makeActionFromEvent=function(t){var e=a({},t);return e.type=UT[t.type],e},FT.dispatchAction=function(t,e){PT(e)||(e={silent:!!e}),ZT[t.type]&&this._model&&(this[BT]?this._pendingActions.push(t):(fs.call(this,t,e.silent),e.flush?this._zr.flush(!0):!1!==e.flush&&U_.browser.weChat&&this._throttledZrFlush(),ps.call(this,e.silent),gs.call(this,e.silent)))},FT.appendData=function(t){var e=t.seriesIndex;this.getModel().getSeriesByIndex(e).appendData(t),this._scheduler.unfinished=!0},FT.on=rs("on"),FT.off=rs("off"),FT.one=rs("one");var HT=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];FT._initEvents=function(){LT(HT,function(t){var e=function(e){var i,n=this.getModel(),o=e.target;if("globalout"===t)i={};else if(o&&null!=o.dataIndex){var r=o.dataModel||n.getSeriesByIndex(o.seriesIndex);i=r&&r.getDataParams(o.dataIndex,o.dataType,o)||{}}else o&&o.eventData&&(i=a({},o.eventData));if(i){var s=i.componentType,l=i.componentIndex;"markLine"!==s&&"markPoint"!==s&&"markArea"!==s||(s="series",l=i.seriesIndex);var u=s&&null!=l&&n.getComponent(s,l),h=u&&this["series"===u.mainType?"_chartsMap":"_componentsMap"][u.__viewId];i.event=e,i.type=t,this._ecEventProcessor.eventInfo={targetEl:o,packedEvent:i,model:u,view:h},this.trigger(t,i)}};e.zrEventfulCallAtLast=!0,this._zr.on(t,e,this)},this),LT(UT,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},FT.isDisposed=function(){return this._disposed},FT.clear=function(){this.setOption({series:[]},!0)},FT.dispose=function(){if(!this._disposed){this._disposed=!0,Fi(this.getDom(),iA,"");var t=this._api,e=this._model;LT(this._componentsViews,function(i){i.dispose(e,t)}),LT(this._chartsViews,function(i){i.dispose(e,t)}),this._zr.dispose(),delete JT[this.id]}},h(ls,fw),As.prototype={constructor:As,normalizeQuery:function(t){var e={},i={},n={};if(_(t)){var o=NT(t);e.mainType=o.main||null,e.subType=o.sub||null}else{var a=["Index","Name","Id"],r={name:1,dataIndex:1,dataType:1};d(t,function(t,o){for(var s=!1,l=0;l0&&h===o.length-u.length){var c=o.slice(0,h);"data"!==c&&(e.mainType=c,e[u.toLowerCase()]=t,s=!0)}}r.hasOwnProperty(o)&&(i[o]=t,s=!0),s||(n[o]=t)})}return{cptQuery:e,dataQuery:i,otherQuery:n}},filter:function(t,e,i){function n(t,e,i,n){return null==t[i]||e[n||i]===t[i]}var o=this.eventInfo;if(!o)return!0;var a=o.targetEl,r=o.packedEvent,s=o.model,l=o.view;if(!s||!l)return!0;var u=e.cptQuery,h=e.dataQuery;return n(u,s,"mainType")&&n(u,s,"subType")&&n(u,s,"index","componentIndex")&&n(u,s,"name")&&n(u,s,"id")&&n(h,r,"name")&&n(h,r,"dataIndex")&&n(h,r,"dataType")&&(!l.filterForExposedEvent||l.filterForExposedEvent(t,e.otherQuery,a,r))},afterTrigger:function(){this.eventInfo=null}};var ZT={},UT={},XT=[],jT=[],YT=[],qT=[],KT={},$T={},JT={},QT={},tA=new Date-0,eA=new Date-0,iA="_echarts_instance_",nA=Cs;zs(2e3,oT),Ps(zI),Ns(5e3,function(t){var e=R();t.eachSeries(function(t){var i=t.get("stack");if(i){var n=e.get(i)||e.set(i,[]),o=t.getData(),a={stackResultDimension:o.getCalculationInfo("stackResultDimension"),stackedOverDimension:o.getCalculationInfo("stackedOverDimension"),stackedDimension:o.getCalculationInfo("stackedDimension"),stackedByDimension:o.getCalculationInfo("stackedByDimension"),isStackedByIndex:o.getCalculationInfo("isStackedByIndex"),data:o,seriesModel:t};if(!a.stackedDimension||!a.isStackedByIndex&&!a.stackedByDimension)return;n.length&&o.setCalculationInfo("stackedOnSeries",n[n.length-1].seriesModel),n.push(a)}}),e.each(or)}),Vs("default",function(t,e){r(e=e||{},{text:"loading",color:"#c23531",textColor:"#000",maskColor:"rgba(255, 255, 255, 0.8)",zlevel:0});var i=new vM({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4}),n=new bM({shape:{startAngle:-sT/2,endAngle:-sT/2+.1,r:10},style:{stroke:e.color,lineCap:"round",lineWidth:5},zlevel:e.zlevel,z:10001}),o=new vM({style:{fill:"none",text:e.text,textPosition:"right",textDistance:10,textFill:e.textColor},zlevel:e.zlevel,z:10001});n.animateShape(!0).when(1e3,{endAngle:3*sT/2}).start("circularInOut"),n.animateShape(!0).when(1e3,{startAngle:3*sT/2}).delay(300).start("circularInOut");var a=new tb;return a.add(n),a.add(o),a.add(i),a.resize=function(){var e=t.getWidth()/2,a=t.getHeight()/2;n.setShape({cx:e,cy:a});var r=n.shape.r;o.setShape({x:e-r,y:a-r,width:2*r,height:2*r}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},a.resize(),a}),Os({type:"highlight",event:"highlight",update:"highlight"},B),Os({type:"downplay",event:"downplay",update:"downplay"},B),ks("light",gT),ks("dark",vT);Us.prototype={constructor:Us,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=[],o=[];for(Xs(t,{},n,"_oldKeyGetter",this),Xs(e,i,o,"_newKeyGetter",this),a=0;ax[1]&&(x[1]=y)}e&&(this._nameList[d]=e[f])}this._rawCount=this._count=l,this._extent={},tl(this)},gA._initDataFromProvider=function(t,e){if(!(t>=e)){for(var i,n=this._chunkSize,o=this._rawData,a=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;pM[1]&&(M[1]=S)}if(!o.pure){var I=u[v];if(m&&null==I)if(null!=m.name)u[v]=I=m.name;else if(null!=i){var T=r[i],A=a[T][y];if(A){I=A[x];var D=l[T].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,C=I,d[I]>0&&(C+="__ec__"+d[I]),d[I]++),null!=C&&(h[v]=C)}}!o.persistent&&o.clean&&o.clean(),this._rawCount=this._count=e,this._extent={},tl(this)}},gA.count=function(){return this._count},gA.getIndices=function(){var t=this._indices;if(t){var e=t.constructor,i=this._count;if(e===Array){n=new e(i);for(o=0;o=0&&e=0&&ea&&(a=s)}return i=[o,a],this._extent[t]=i,i},gA.getApproximateExtent=function(t){return t=this.getDimension(t),this._approximateExtent[t]||this.getDataExtent(t)},gA.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},gA.getCalculationInfo=function(t){return this._calculationInfo[t]},gA.setCalculationInfo=function(t,e){aA(t)?a(this._calculationInfo,t):this._calculationInfo[t]=e},gA.getSum=function(t){var e=0;if(this._storage[t])for(var i=0,n=this.count();i=this._rawCount||t<0)return-1;var e=this._indices,i=e[t];if(null!=i&&it))return a;o=a-1}}return-1},gA.indicesOfNearest=function(t,e,i){var n=[];if(!this._storage[t])return n;null==i&&(i=1/0);for(var o=Number.MAX_VALUE,a=-1,r=0,s=this.count();r=0&&a<0)&&(o=u,a=l,n.length=0),n.push(r))}return n},gA.getRawIndex=il,gA.getRawDataItem=function(t){if(this._rawData.persistent)return this._rawData.getItem(this.getRawIndex(t));for(var e=[],i=0;i=l&&w<=u||isNaN(w))&&(a[r++]=c),c++;h=!0}else if(2===n){for(var d=this._storage[s],v=this._storage[e[1]],y=t[e[1]][0],x=t[e[1]][1],f=0;f=l&&w<=u||isNaN(w))&&(b>=y&&b<=x||isNaN(b))&&(a[r++]=c),c++}h=!0}}if(!h)if(1===n)for(m=0;m=l&&w<=u||isNaN(w))&&(a[r++]=M)}else for(m=0;mt[I][1])&&(S=!1)}S&&(a[r++]=this.getRawIndex(m))}return rb[1]&&(b[1]=w)}}}return o},gA.downSample=function(t,e,i,n){for(var o=rl(this,[t]),a=o._storage,r=[],s=Math.floor(1/e),l=a[t],u=this.count(),h=this._chunkSize,c=o._rawExtent[t],d=new(Ks(this))(u),f=0,p=0;pu-p&&(s=u-p,r.length=s);for(var g=0;gc[1]&&(c[1]=x),d[f++]=_}return o._count=f,o._indices=d,o.getRawIndex=nl,o},gA.getItemModel=function(t){var e=this.hostModel;return new Po(this.getRawDataItem(t),e,e&&e.ecModel)},gA.diff=function(t){var e=this;return new Us(t?t.getIndices():[],this.getIndices(),function(e){return ol(t,e)},function(t){return ol(e,t)})},gA.getVisual=function(t){var e=this._visual;return e&&e[t]},gA.setVisual=function(t,e){if(aA(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},gA.setLayout=function(t,e){if(aA(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},gA.getLayout=function(t){return this._layout[t]},gA.getItemLayout=function(t){return this._itemLayouts[t]},gA.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?a(this._itemLayouts[t]||{},e):e},gA.clearItemLayouts=function(){this._itemLayouts.length=0},gA.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],o=n&&n[e];return null!=o||i?o:this.getVisual(e)},gA.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{},o=this.hasItemVisual;if(this._itemVisuals[t]=n,aA(e))for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a],o[a]=!0);else n[e]=i,o[e]=!0},gA.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};var mA=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};gA.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(mA,e)),this._graphicEls[t]=e},gA.getItemGraphicEl=function(t){return this._graphicEls[t]},gA.eachItemGraphicEl=function(t,e){d(this._graphicEls,function(i,n){i&&t&&t.call(e,i,n)})},gA.cloneShallow=function(t){if(!t){var e=f(this.dimensions,this.getDimensionInfo,this);t=new pA(e,this.hostModel)}if(t._storage=this._storage,Js(t,this),this._indices){var i=this._indices.constructor;t._indices=new i(this._indices)}else t._indices=null;return t.getRawIndex=t._indices?nl:il,t},gA.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(C(arguments)))})},gA.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],gA.CHANGABLE_METHODS=["filterSelf","selectRange"];var vA=function(t,e){return e=e||{},ul(e.coordDimensions||[],t,{dimsDef:e.dimensionsDefine||t.dimensionsDefine,encodeDef:e.encodeDefine||t.encodeDefine,dimCount:e.dimensionsCount,generateCoord:e.generateCoord,generateCoordCount:e.generateCoordCount})};yl.prototype.parse=function(t){return t},yl.prototype.getSetting=function(t){return this._setting[t]},yl.prototype.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},yl.prototype.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},yl.prototype.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},yl.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1])},yl.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},yl.prototype.getExtent=function(){return this._extent.slice()},yl.prototype.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},yl.prototype.isBlank=function(){return this._isBlank},yl.prototype.setBlank=function(t){this._isBlank=t},yl.prototype.getLabel=null,Xi(yl),Ki(yl,{registerWhenExtend:!0}),xl.createByAxisModel=function(t){var e=t.option,i=e.data,n=i&&f(i,wl);return new xl({categories:n,needCollect:!n,deduplication:!1!==e.dedplication})};var yA=xl.prototype;yA.getOrdinal=function(t){return _l(this).get(t)},yA.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=_l(this);return null==(e=n.get(t))&&(i?(e=this.categories.length,this.categories[e]=t,n.set(t,e)):e=NaN),e};var xA=yl.prototype,_A=yl.extend({type:"ordinal",init:function(t,e){t&&!y(t)||(t=new xl({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),xA.contain.call(this,t)&&null!=this._ordinalMeta.categories[t]},normalize:function(t){return xA.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(xA.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:B,niceExtent:B});_A.create=function(){return new _A};var wA=Vo,bA=Vo,SA=yl.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[1]&&(e[1]=t[1]),SA.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=Sl(t)},getTicks:function(){return Tl(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=Wo(t)||0:"auto"===i&&(i=this._intervalPrecision),t=bA(t,i,!0),Qo(t)},niceTicks:function(t,e,i){t=t||5;var n=this._extent,o=n[1]-n[0];if(isFinite(o)){o<0&&(o=-o,n.reverse());var a=bl(n,t,e,i);this._intervalPrecision=a.intervalPrecision,this._interval=a.interval,this._niceExtent=a.niceTickExtent}},niceExtent:function(t){var e=this._extent;if(e[0]===e[1])if(0!==e[0]){var i=e[0];t.fixMax?e[0]-=i/2:(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 o=this._interval;t.fixMin||(e[0]=bA(Math.floor(e[0]/o)*o)),t.fixMax||(e[1]=bA(Math.ceil(e[1]/o)*o))}});SA.create=function(){return new SA};var MA="__ec_stack_",IA="undefined"!=typeof Float32Array?Float32Array:Array,TA={seriesType:"bar",plan:KI(),reset:function(t){if(El(t)&&Rl(t)){var e=t.getData(),i=t.coordinateSystem,n=i.getBaseAxis(),o=i.getOtherAxis(n),a=e.mapDimension(o.dim),r=e.mapDimension(n.dim),s=o.isHorizontal(),l=s?0:1,u=Nl(kl([t]),n,t).width;return u>.5||(u=.5),{progress:function(t,e){for(var n,h=new IA(2*t.count),c=[],d=[],f=0;null!=(n=t.next());)d[l]=e.get(a,n),d[1-l]=e.get(r,n),c=i.dataToPoint(d,null,c),h[f++]=c[0],h[f++]=c[1];e.setLayout({largePoints:h,barWidth:u,valueAxisStart:zl(0,o),valueAxisHorizontal:s})}}}}},AA=SA.prototype,DA=Math.ceil,CA=Math.floor,LA=function(t,e,i,n){for(;i>>1;t[o][1]i&&(a=i);var r=PA.length,s=LA(PA,a,0,r),l=PA[Math.min(s,r-1)],u=l[1];"year"===l[0]&&(u*=Ko(o/u/t,!0));var h=this.getSetting("useUTC")?0:60*new Date(+n[0]||+n[1]).getTimezoneOffset()*1e3,c=[Math.round(DA((n[0]-h)/u)*u+h),Math.round(CA((n[1]-h)/u)*u+h)];Il(c,n),this._stepLvl=l,this._interval=u,this._niceExtent=c},parse:function(t){return+jo(t)}});d(["contain","normalize"],function(t){kA.prototype[t]=function(e){return AA[t].call(this,this.parse(e))}});var PA=[["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",36e5],["hh:mm\nMM-dd",72e5],["hh:mm\nMM-dd",216e5],["hh:mm\nMM-dd",432e5],["MM-dd\nyyyy",864e5],["MM-dd\nyyyy",1728e5],["MM-dd\nyyyy",2592e5],["MM-dd\nyyyy",3456e5],["MM-dd\nyyyy",432e6],["MM-dd\nyyyy",5184e5],["week",6048e5],["MM-dd\nyyyy",864e6],["week",12096e5],["week",18144e5],["month",26784e5],["week",36288e5],["month",53568e5],["week",6048e6],["quarter",8208e6],["month",107136e5],["month",13392e6],["half-year",16416e6],["month",214272e5],["month",26784e6],["year",32832e6]];kA.create=function(t){return new kA({useUTC:t.ecModel.get("useUTC")})};var NA=yl.prototype,OA=SA.prototype,EA=Wo,RA=Vo,zA=Math.floor,BA=Math.ceil,VA=Math.pow,GA=Math.log,FA=yl.extend({type:"log",base:10,$constructor:function(){yl.apply(this,arguments),this._originalScale=new SA},getTicks:function(){var t=this._originalScale,e=this._extent,i=t.getExtent();return f(OA.getTicks.call(this),function(n){var o=Vo(VA(this.base,n));return o=n===e[0]&&t.__fixMin?Bl(o,i[0]):o,o=n===e[1]&&t.__fixMax?Bl(o,i[1]):o},this)},getLabel:OA.getLabel,scale:function(t){return t=NA.scale.call(this,t),VA(this.base,t)},setExtent:function(t,e){var i=this.base;t=GA(t)/GA(i),e=GA(e)/GA(i),OA.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=NA.getExtent.call(this);e[0]=VA(t,e[0]),e[1]=VA(t,e[1]);var i=this._originalScale,n=i.getExtent();return i.__fixMin&&(e[0]=Bl(e[0],n[0])),i.__fixMax&&(e[1]=Bl(e[1],n[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=GA(t[0])/GA(e),t[1]=GA(t[1])/GA(e),NA.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=Yo(i);for(t/i*n<=.5&&(n*=10);!isNaN(n)&&Math.abs(n)<1&&Math.abs(n)>0;)n*=10;var o=[Vo(BA(e[0]/n)*n),Vo(zA(e[1]/n)*n)];this._interval=n,this._niceExtent=o}},niceExtent:function(t){OA.niceExtent.call(this,t);var e=this._originalScale;e.__fixMin=t.fixMin,e.__fixMax=t.fixMax}});d(["contain","normalize"],function(t){FA.prototype[t]=function(e){return e=GA(e)/GA(this.base),NA[t].call(this,e)}}),FA.create=function(){return new FA};var WA={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&&!I(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&&!I(i)&&(i=this.axis.scale.parse(i)),i},getNeedCrossZero:function(){var t=this.option;return null==t.rangeStart&&null==t.rangeEnd&&!t.scale},getCoordSysModel:B,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}},HA=Zn({type:"triangle",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n+a),t.lineTo(i-o,n+a),t.closePath()}}),ZA=Zn({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n),t.lineTo(i,n+a),t.lineTo(i-o,n),t.closePath()}}),UA=Zn({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,n=e.y,o=e.width/5*3,a=Math.max(o,e.height),r=o/2,s=r*r/(a-r),l=n-a+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()}}),XA=Zn({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.height,n=e.width,o=e.x,a=e.y,r=n/3*2;t.moveTo(o,a),t.lineTo(o+r,a+i),t.lineTo(o,a+i/4*3),t.lineTo(o-r,a+i),t.lineTo(o,a),t.closePath()}}),jA={line:function(t,e,i,n,o){o.x1=t,o.y1=e+n/2,o.x2=t+i,o.y2=e+n/2},rect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n},roundRect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n,o.r=Math.min(i,n)/4},square:function(t,e,i,n,o){var a=Math.min(i,n);o.x=t,o.y=e,o.width=a,o.height=a},circle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.r=Math.min(i,n)/2},diamond:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n},pin:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},arrow:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},triangle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n}},YA={};d({line:xM,rect:vM,roundRect:vM,square:vM,circle:rM,diamond:ZA,pin:UA,arrow:XA,triangle:HA},function(t,e){YA[e]=new t});var qA=Zn({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},beforeBrush:function(){var t=this.style;"pin"===this.shape.symbolType&&"inside"===t.textPosition&&(t.textPosition=["50%","40%"],t.textAlign="center",t.textVerticalAlign="middle")},buildPath:function(t,e,i){var n=e.symbolType,o=YA[n];"none"!==e.symbolType&&(o||(o=YA[n="rect"]),jA[n](e.x,e.y,e.width,e.height,o.shape),o.buildPath(t,o.shape,i))}}),KA={isDimensionStacked:fl,enableDataStack:dl,getStackedDimension:pl},$A=(Object.freeze||Object)({createList:function(t){return gl(t.getSource(),t)},getLayoutRect:ha,dataStack:KA,createScale:function(t,e){var i=e;Po.isInstance(e)||h(i=new Po(e),WA);var n=Wl(i);return n.setExtent(t[0],t[1]),Fl(n,i),n},mixinAxisModelCommonMethods:function(t){h(t,WA)},completeDimensions:ul,createDimensions:vA,createSymbol:$l}),JA=1e-8;tu.prototype={constructor:tu,properties:null,getBoundingRect:function(){var t=this._rect;if(t)return t;for(var e=Number.MAX_VALUE,i=[e,e],n=[-e,-e],o=[],a=[],r=this.geometries,s=0;s0}),function(t){var e=t.properties,i=t.geometry,n=i.coordinates,o=[];"Polygon"===i.type&&o.push({type:"polygon",exterior:n[0],interiors:n.slice(1)}),"MultiPolygon"===i.type&&d(n,function(t){t[0]&&o.push({type:"polygon",exterior:t[0],interiors:t.slice(1)})});var a=new tu(e.name,o,e.cp);return a.properties=e,a})},tD=Bi(),eD=[0,1],iD=function(t,e,i){this.dim=t,this.scale=e,this._extent=i||[0,0],this.inverse=!1,this.onBand=!1};iD.prototype={constructor:iD,contain:function(t){var e=this._extent,i=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return t>=i&&t<=n},containData:function(t){return this.contain(this.dataToCoord(t))},getExtent:function(){return this._extent.slice()},getPixelPrecision:function(t){return Ho(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&&vu(i=i.slice(),n.count()),zo(t,eD,i,e)},coordToData:function(t,e){var i=this._extent,n=this.scale;this.onBand&&"ordinal"===n.type&&vu(i=i.slice(),n.count());var o=zo(t,i,eD,e);return this.scale.scale(o)},pointToData:function(t,e){},getTicksCoords:function(t){var e=(t=t||{}).tickModel||this.getTickModel(),i=ou(this,e),n=f(i.ticks,function(t){return{coord:this.dataToCoord(t),tickValue:t}},this),o=e.get("alignWithLabel");return yu(this,n,i.tickCategoryInterval,o,t.clamp),n},getViewLabels:function(){return nu(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 fu(this)}};var nD=QA,oD={};d(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],function(t){oD[t]=aw[t]});var aD={};d(["extendShape","extendPath","makePath","makeImage","mergePath","resizePath","createIcon","setHoverStyle","setLabelStyle","setTextStyle","setText","getFont","updateProps","initProps","getTransform","clipPointsByRect","clipRectByRect","Group","Image","Text","Circle","Sector","Ring","Polygon","Polyline","Rect","Line","BezierCurve","Arc","IncrementalDisplayable","CompoundPath","LinearGradient","RadialGradient","BoundingRect"],function(t){aD[t]=RM[t]}),jI.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return gl(this.getSource(),this)},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clipOverflow:!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 rD=_u.prototype,sD=_u.getSymbolSize=function(t,e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array?i.slice():[+i,+i]};rD._createSymbol=function(t,e,i,n,o){this.removeAll();var a=$l(t,-1,-1,2,2,e.getItemVisual(i,"color"),o);a.attr({z2:100,culling:!0,scale:wu(n)}),a.drift=bu,this._symbolType=t,this.add(a)},rD.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(t)},rD.getSymbolPath=function(){return this.childAt(0)},rD.getScale=function(){return this.childAt(0).scale},rD.highlight=function(){this.childAt(0).trigger("emphasis")},rD.downplay=function(){this.childAt(0).trigger("normal")},rD.setZ=function(t,e){var i=this.childAt(0);i.zlevel=t,i.z=e},rD.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":"pointer"},rD.updateData=function(t,e,i){this.silent=!1;var n=t.getItemVisual(e,"symbol")||"circle",o=t.hostModel,a=sD(t,e),r=n!==this._symbolType;if(r){var s=t.getItemVisual(e,"symbolKeepAspect");this._createSymbol(n,t,e,a,s)}else(l=this.childAt(0)).silent=!1,Mo(l,{scale:wu(a)},o,e);if(this._updateCommon(t,e,a,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),Io(l,h,o,e)}this._seriesModel=o};var lD=["itemStyle"],uD=["emphasis","itemStyle"],hD=["label"],cD=["emphasis","label"];rD._updateCommon=function(t,e,i,n){var o=this.childAt(0),r=t.hostModel,s=t.getItemVisual(e,"color");"image"!==o.type&&o.useStyle({strokeNoScale:!0});var l=n&&n.itemStyle,u=n&&n.hoverItemStyle,h=n&&n.symbolRotate,c=n&&n.symbolOffset,d=n&&n.labelModel,f=n&&n.hoverLabelModel,p=n&&n.hoverAnimation,g=n&&n.cursorStyle;if(!n||t.hasItemOption){var m=n&&n.itemModel?n.itemModel:t.getItemModel(e);l=m.getModel(lD).getItemStyle(["color"]),u=m.getModel(uD).getItemStyle(),h=m.getShallow("symbolRotate"),c=m.getShallow("symbolOffset"),d=m.getModel(hD),f=m.getModel(cD),p=m.getShallow("hoverAnimation"),g=m.getShallow("cursor")}else u=a({},u);var v=o.style;o.attr("rotation",(h||0)*Math.PI/180||0),c&&o.attr("position",[Bo(c[0],i[0]),Bo(c[1],i[1])]),g&&o.attr("cursor",g),o.setColor(s,n&&n.symbolInnerColor),o.setStyle(l);var y=t.getItemVisual(e,"opacity");null!=y&&(v.opacity=y);var x=t.getItemVisual(e,"liftZ"),_=o.__z2Origin;null!=x?null==_&&(o.__z2Origin=o.z2,o.z2+=x):null!=_&&(o.z2=_,o.__z2Origin=null);var w=n&&n.useNameLabel;po(v,u,d,f,{labelFetcher:r,labelDataIndex:e,defaultText:function(e,i){return w?t.getName(e):xu(t,e)},isRectText:!0,autoColor:s}),o.off("mouseover").off("mouseout").off("emphasis").off("normal"),o.hoverStyle=u,co(o),o.__symbolOriginalScale=wu(i),p&&r.isAnimationEnabled()&&o.on("mouseover",Su).on("mouseout",Mu).on("emphasis",Iu).on("normal",Tu)},rD.fadeOut=function(t,e){var i=this.childAt(0);this.silent=i.silent=!0,!(e&&e.keepLabel)&&(i.style.text=null),Mo(i,{style:{opacity:0},scale:[0,0]},this._seriesModel,this.dataIndex,t)},u(_u,tb);var dD=Au.prototype;dD.updateData=function(t,e){e=Cu(e);var i=this.group,n=t.hostModel,o=this._data,a=this._symbolCtor,r=Lu(t);o||i.removeAll(),t.diff(o).add(function(n){var o=t.getItemLayout(n);if(Du(t,o,n,e)){var s=new a(t,n,r);s.attr("position",o),t.setItemGraphicEl(n,s),i.add(s)}}).update(function(s,l){var u=o.getItemGraphicEl(l),h=t.getItemLayout(s);Du(t,h,s,e)?(u?(u.updateData(t,s,r),Mo(u,{position:h},n)):(u=new a(t,s)).attr("position",h),i.add(u),t.setItemGraphicEl(s,u)):i.remove(u)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&e.fadeOut(function(){i.remove(e)})}).execute(),this._data=t},dD.isPersistent=function(){return!0},dD.updateLayout=function(){var t=this._data;t&&t.eachItemGraphicEl(function(e,i){var n=t.getItemLayout(i);e.attr("position",n)})},dD.incrementalPrepareUpdate=function(t){this._seriesScope=Lu(t),this._data=null,this.group.removeAll()},dD.incrementalUpdate=function(t,e,i){i=Cu(i);for(var n=t.start;n0&&Eu(i[o-1]);o--);for(;n0&&Eu(i[a-1]);a--);for(;o=0){var r=o.getItemGraphicEl(a);if(!r){var s=o.getItemLayout(a);if(!s)return;(r=new _u(o,a)).position=s,r.setZ(t.get("zlevel"),t.get("z")),r.ignore=isNaN(s[0])||isNaN(s[1]),r.__temp=!0,o.setItemGraphicEl(a,r),r.stopSymbolAnimation(!0),this.group.add(r)}r.highlight()}else Tr.prototype.highlight.call(this,t,e,i,n)},downplay:function(t,e,i,n){var o=t.getData(),a=zi(o,n);if(null!=a&&a>=0){var r=o.getItemGraphicEl(a);r&&(r.__temp?(o.setItemGraphicEl(a,null),this.group.remove(r)):r.downplay())}else Tr.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new wD({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var i=this._polygon;return i&&this._lineGroup.remove(i),i=new bD({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(i),this._polygon=i,i},_updateAnimation:function(t,e,i,n,o,a){var r=this._polyline,s=this._polygon,l=t.hostModel,u=fD(this._data,t,this._stackedOnPoints,e,this._coordSys,i,this._valueOrigin,a),h=u.current,c=u.stackedOnCurrent,d=u.next,f=u.stackedOnNext;o&&(h=ju(u.current,i,o),c=ju(u.stackedOnCurrent,i,o),d=ju(u.next,i,o),f=ju(u.stackedOnNext,i,o)),r.shape.__points=u.current,r.shape.points=h,Mo(r,{shape:{points:d}},l),s&&(s.setShape({points:h,stackedOnPoints:c}),Mo(s,{shape:{points:d,stackedOnPoints:f}},l));for(var p=[],g=u.status,m=0;me&&(e=t[i]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,i=0;ie[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},u(DD,iD);var CD={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)"]}}},LD={};LD.categoryAxis=n({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},CD),LD.valueAxis=n({boundaryGap:[0,0],splitNumber:5},CD),LD.timeAxis=r({scale:!0,min:"dataMin",max:"dataMax"},LD.valueAxis),LD.logAxis=r({scale:!0,logBase:10},LD.valueAxis);var kD=["value","category","time","log"],PD=function(t,e,i,a){d(kD,function(r){e.extend({type:t+"Axis."+r,mergeDefaultAndTheme:function(e,o){var a=this.layoutMode,s=a?pa(e):{};n(e,o.getTheme().get(r+"Axis")),n(e,this.getDefaultOption()),e.type=i(t,e),a&&fa(e,s,a)},optionUpdated:function(){"category"===this.option.type&&(this.__ordinalMeta=xl.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:o([{},LD[r+"Axis"],a],!0)})}),sI.registerSubTypeDefaulter(t+"Axis",v(i,t))},ND=sI.extend({type:"cartesian2dAxis",axis:null,init:function(){ND.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){ND.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){ND.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});n(ND.prototype,WA);var OD={offset:0};PD("x",ND,Qu,OD),PD("y",ND,Qu,OD),sI.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 ED=eh.prototype;ED.type="grid",ED.axisPointerEnabled=!0,ED.getRect=function(){return this._rect},ED.update=function(t,e){var i=this._axesMap;this._updateScale(t,this.model),d(i.x,function(t){Fl(t.scale,t.model)}),d(i.y,function(t){Fl(t.scale,t.model)});var n={};d(i.x,function(t){ih(i,"y",t,n)}),d(i.y,function(t){ih(i,"x",t,n)}),this.resize(this.model,e)},ED.resize=function(t,e,i){function n(){d(a,function(t){var e=t.isHorizontal(),i=e?[0,o.width]:[0,o.height],n=t.inverse?1:0;t.setExtent(i[n],i[1-n]),oh(t,e?o.x:o.y)})}var o=ha(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()});this._rect=o;var a=this._axesList;n(),!i&&t.get("containLabel")&&(d(a,function(t){if(!t.model.get("axisLabel.inside")){var e=Xl(t);if(e){var i=t.isHorizontal()?"height":"width",n=t.model.get("axisLabel.margin");o[i]-=e[i]+n,"top"===t.position?o.y+=e.height+n:"left"===t.position&&(o.x+=e.width+n)}}}),n())},ED.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]}},ED.getAxes=function(){return this._axesList.slice()},ED.getCartesian=function(t,e){if(null!=t&&null!=e){var i="x"+t+"y"+e;return this._coordsMap[i]}w(t)&&(e=t.yAxisIndex,t=t.xAxisIndex);for(var n=0,o=this._coordsList;nu[1]?-1:1,c=["start"===o?u[0]-h*l:"end"===o?u[1]+h*l:(u[0]+u[1])/2,fh(o)?t.labelOffset+r*l:0],d=e.get("nameRotate");null!=d&&(d=d*zD/180);var f;fh(o)?n=GD(t.rotation,null!=d?d:t.rotation,r):(n=lh(t,o,d||0,u),null!=(f=t.axisNameAvailableWidth)&&(f=Math.abs(f/Math.sin(n.rotation)),!isFinite(f)&&(f=null)));var p=s.getFont(),g=e.get("nameTruncate",!0)||{},m=g.ellipsis,v=T(t.nameTruncateMaxWidth,g.maxWidth,f),y=null!=m&&null!=v?QM(i,v,p,m,{minChar:2,placeholder:g.placeholder}):i,x=e.get("tooltip",!0),_=e.mainType,w={componentType:_,name:i,$vars:["name"]};w[_+"Index"]=e.componentIndex;var b=new aM({anid:"name",__fullText:i,__truncatedText:y,position:c,rotation:n.rotation,silent:uh(e),z2:1,tooltip:x&&x.show?a({content:i,formatter:function(){return i},formatterParams:w},x):null});go(b.style,s,{text:y,textFont:p,textFill:s.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:n.textAlign,textVerticalAlign:n.textVerticalAlign}),e.get("triggerEvent")&&(b.eventData=sh(e),b.eventData.targetType="axisName",b.eventData.name=i),this._dumbGroup.add(b),b.updateTransform(),this.group.add(b),b.decomposeTransform()}}},GD=BD.innerTextLayout=function(t,e,i){var n,o,a=Uo(e-t);return Xo(a)?(o=i>0?"top":"bottom",n="center"):Xo(a-zD)?(o=i>0?"bottom":"top",n="center"):(o="middle",n=a>0&&a0?"right":"left":i>0?"left":"right"),{rotation:a,textAlign:n,textVerticalAlign:o}},FD=d,WD=v,HD=Fs({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,i,n){this.axisPointerClass&&bh(t),HD.superApply(this,"render",arguments),Ah(this,t,0,i,0,!0)},updateAxisPointer:function(t,e,i,n,o){Ah(this,t,0,i,0,!1)},remove:function(t,e){var i=this._axisPointer;i&&i.remove(e),HD.superApply(this,"remove",arguments)},dispose:function(t,e){Dh(this,e),HD.superApply(this,"dispose",arguments)}}),ZD=[];HD.registerAxisPointerClass=function(t,e){ZD[t]=e},HD.getAxisPointerClass=function(t){return t&&ZD[t]};var UD=["axisLine","axisTickLabel","axisName"],XD=["splitArea","splitLine"],jD=HD.extend({type:"cartesianAxis",axisPointerClass:"CartesianAxisPointer",render:function(t,e,i,n){this.group.removeAll();var o=this._axisGroup;if(this._axisGroup=new tb,this.group.add(this._axisGroup),t.get("show")){var a=t.getCoordSysModel(),r=Ch(a,t),s=new BD(t,r);d(UD,s.add,s),this._axisGroup.add(s.getGroup()),d(XD,function(e){t.get(e+".show")&&this["_"+e](t,a)},this),Co(o,this._axisGroup,t),jD.superCall(this,"render",t,e,i,n)}},remove:function(){this._splitAreaColors=null},_splitLine:function(t,e){var i=t.axis;if(!i.scale.isBlank()){var n=t.getModel("splitLine"),o=n.getModel("lineStyle"),a=o.get("color");a=y(a)?a:[a];for(var s=e.coordinateSystem.getRect(),l=i.isHorizontal(),u=0,h=i.getTicksCoords({tickModel:n}),c=[],d=[],f=o.getLineStyle(),p=0;p1){var c;"string"==typeof o?c=ID[o]:"function"==typeof o&&(c=o),c&&t.setData(n.downSample(n.mapDimension(s.dim),1/h,c,TD))}}}}}("line"));var YD=jI.extend({type:"series.__base_bar__",getInitialData:function(t,e){return gl(this.getSource(),this)},getMarkerPosition:function(t){var e=this.coordinateSystem;if(e){var i=e.dataToPoint(e.clampData(t)),n=this.getData(),o=n.getLayout("offset"),a=n.getLayout("size");return i[e.getBaseAxis().isHorizontal()?0:1]+=o+a/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:{}}});YD.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 e>t&&(t=e),t}});var qD=Jb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),KD={getBarItemStyle:function(t){var e=qD(this,t);if(this.getBorderLineDash){var i=this.getBorderLineDash();i&&(e.lineDash=i)}return e}},$D=["itemStyle","barBorderWidth"];a(Po.prototype,KD),Hs({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(t,e,i){var n,o=this.group,a=t.getData(),r=this._data,s=t.coordinateSystem,l=s.getBaseAxis();"cartesian2d"===s.type?n=l.isHorizontal():"polar"===s.type&&(n="angle"===l.dim);var u=t.isAnimationEnabled()?t:null;a.diff(r).add(function(e){if(a.hasValue(e)){var i=a.getItemModel(e),r=QD[s.type](a,e,i),l=JD[s.type](a,e,i,r,n,u);a.setItemGraphicEl(e,l),o.add(l),Oh(l,a,e,i,r,t,n,"polar"===s.type)}}).update(function(e,i){var l=r.getItemGraphicEl(i);if(a.hasValue(e)){var h=a.getItemModel(e),c=QD[s.type](a,e,h);l?Mo(l,{shape:c},u,e):l=JD[s.type](a,e,h,c,n,u,!0),a.setItemGraphicEl(e,l),o.add(l),Oh(l,a,e,h,c,t,n,"polar"===s.type)}else o.remove(l)}).remove(function(t){var e=r.getItemGraphicEl(t);"cartesian2d"===s.type?e&&Ph(t,u,e):e&&Nh(t,u,e)}).execute(),this._data=a},_renderLarge:function(t,e,i){this._clear(),Rh(t,this.group)},_incrementalRenderLarge:function(t,e){Rh(e,this.group,!0)},dispose:B,remove:function(t){this._clear(t)},_clear:function(t){var e=this.group,i=this._data;t&&t.get("animation")&&i&&!this._isLargeDraw?i.eachItemGraphicEl(function(e){"sector"===e.type?Nh(e.dataIndex,t,e):Ph(e.dataIndex,t,e)}):e.removeAll(),this._data=null}});var JD={cartesian2d:function(t,e,i,n,o,r,s){var l=new vM({shape:a({},n)});if(r){var u=l.shape,h=o?"height":"width",c={};u[h]=0,c[h]=n[h],RM[s?"updateProps":"initProps"](l,{shape:c},r,e)}return l},polar:function(t,e,i,n,o,a,s){var l=n.startAngle0?1:-1,r=n.height>0?1:-1;return{x:n.x+a*o/2,y:n.y+r*o/2,width:n.width-a*o,height:n.height-r*o}},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}}},tC=kn.extend({type:"largeBar",shape:{points:[]},buildPath:function(t,e){for(var i=e.points,n=this.__startPoint,o=this.__valueIdx,a=0;a0&&"scale"!==u){var d=o.getItemLayout(0),f=Math.max(i.getWidth(),i.getHeight())/2,p=m(r.removeClipPath,r);r.setClipPath(this._createClipPath(d.cx,d.cy,f,d.startAngle,d.clockwise,p,t))}else r.removeClipPath();this._data=o}},dispose:function(){},_createClipPath:function(t,e,i,n,o,a,r){var s=new uM({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:o}});return Io(s,{shape:{endAngle:n+(o?1:-1)*Math.PI*2}},r,a),s},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,o=t[1]-i.cy,a=Math.sqrt(n*n+o*o);return a<=i.r&&a>=i.r0}}});var aC=function(t,e){d(e,function(e){e.update="updateView",Os(e,function(i,n){var o={};return n.eachComponent({mainType:"series",subType:t,query:i},function(t){t[e.method]&&t[e.method](i.name,i.dataIndex);var n=t.getData();n.each(function(e){var i=n.getName(e);o[i]=t.isSelected(i)||!1})}),{name:i.name,selected:o}})})},rC=function(t){return{getTargetSeries:function(e){var i={},n=R();return e.eachSeriesByType(t,function(t){t.__paletteScope=i,n.set(t.uid,t)}),n},reset:function(t,e){var i=t.getRawData(),n={},o=t.getData();o.each(function(t){var e=o.getRawIndex(t);n[e]=t}),i.each(function(e){var a=n[e],r=null!=a&&o.getItemVisual(a,"color",!0);if(r)i.setItemVisual(e,"color",r);else{var s=i.getItemModel(e).get("itemStyle.color")||t.getColorFromPalette(i.getName(e)||e+"",t.__paletteScope,i.count());i.setItemVisual(e,"color",s),null!=a&&o.setItemVisual(a,"color",s)}})}}},sC=function(t,e,i,n){var o,a,r=t.getData(),s=[],l=!1;r.each(function(i){var n,u,h,c,d=r.getItemLayout(i),f=r.getItemModel(i),p=f.getModel("label"),g=p.get("position")||f.get("emphasis.label.position"),m=f.getModel("labelLine"),v=m.get("length"),y=m.get("length2"),x=(d.startAngle+d.endAngle)/2,_=Math.cos(x),w=Math.sin(x);o=d.cx,a=d.cy;var b="inside"===g||"inner"===g;if("center"===g)n=d.cx,u=d.cy,c="center";else{var S=(b?(d.r+d.r0)/2*_:d.r*_)+o,M=(b?(d.r+d.r0)/2*w:d.r*w)+a;if(n=S+3*_,u=M+3*w,!b){var I=S+_*(v+e-d.r),T=M+w*(v+e-d.r),A=I+(_<0?-1:1)*y,D=T;n=A+(_<0?-5:5),u=D,h=[[S,M],[I,T],[A,D]]}c=b?"center":_>0?"left":"right"}var C=p.getFont(),L=p.get("rotate")?_<0?-x+Math.PI:-x:0,k=ke(t.getFormattedLabel(i,"normal")||r.getName(i),C,c,"top");l=!!L,d.label={x:n,y:u,position:g,height:k.height,len:v,len2:y,linePoints:h,textAlign:c,verticalAlign:"middle",rotation:L,inside:b},b||s.push(d.label)}),!l&&t.get("avoidLabelOverlap")&&Wh(s,o,a,e,i,n)},lC=2*Math.PI,uC=Math.PI/180,hC=function(t){return{seriesType:t,reset:function(t,e){var i=e.findComponents({mainType:"legend"});if(i&&i.length){var n=t.getData();n.filterSelf(function(t){for(var e=n.getName(t),o=0;o=0;s--){var l=2*s,u=n[l]-a/2,h=n[l+1]-r/2;if(t>=u&&e>=h&&t<=u+a&&e<=h+r)return s}return-1}}),dC=Zh.prototype;dC.isPersistent=function(){return!this._incremental},dC.updateData=function(t){this.group.removeAll();var e=new cC({rectHover:!0,cursor:"default"});e.setShape({points:t.getLayout("symbolPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},dC.updateLayout=function(t){if(!this._incremental){var e=t.getLayout("symbolPoints");this.group.eachChild(function(t){if(null!=t.startIndex){var i=2*(t.endIndex-t.startIndex),n=4*t.startIndex*2;e=new Float32Array(e.buffer,n,i)}t.setShape("points",e)})}},dC.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>2e6?(this._incremental||(this._incremental=new Hn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},dC.incrementalUpdate=function(t,e){var i;this._incremental?(i=new cC,this._incremental.addDisplayable(i,!0)):((i=new cC({rectHover:!0,cursor:"default",startIndex:t.start,endIndex:t.end})).incremental=!0,this.group.add(i)),i.setShape({points:e.getLayout("symbolPoints")}),this._setCommon(i,e,!!this._incremental)},dC._setCommon=function(t,e,i){var n=e.hostModel,o=e.getVisual("symbolSize");t.setShape("size",o instanceof Array?o:[o,o]),t.symbolProxy=$l(e.getVisual("symbol"),0,0,0,0),t.setColor=t.symbolProxy.setColor;var a=t.shape.size[0]<4;t.useStyle(n.getModel("itemStyle").getItemStyle(a?["color","shadowBlur","shadowColor"]:["color"]));var r=e.getVisual("color");r&&t.setColor(r),i||(t.seriesIndex=n.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var i=t.findDataIndex(e.offsetX,e.offsetY);i>=0&&(t.dataIndex=i+(t.startIndex||0))}))},dC.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},dC._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()},Hs({type:"scatter",render:function(t,e,i){var n=t.getData();this._updateSymbolDraw(n,t).updateData(n),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()),this._finished=t.end===e.getData().count()},updateTransform:function(t,e,i){var n=t.getData();if(this.group.dirty(),!this._finished||n.count()>1e4||!this._symbolDraw.isPersistent())return{update:!0};var o=MD().reset(t);o.progress&&o.progress({start:0,end:n.count()},n),this._symbolDraw.updateLayout(n)},_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 Zh:new Au,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(){}}),zs(SD("scatter","circle")),Rs(MD("scatter")),u(Uh,iD),Xh.prototype.getIndicatorAxes=function(){return this._indicatorAxes},Xh.prototype.dataToPoint=function(t,e){var i=this._indicatorAxes[e];return this.coordToPoint(i.dataToCoord(t),e)},Xh.prototype.coordToPoint=function(t,e){var i=this._indicatorAxes[e].angle;return[this.cx+t*Math.cos(i),this.cy-t*Math.sin(i)]},Xh.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 o,a=Math.atan2(-i,e),r=1/0,s=-1,l=0;ln[0]&&isFinite(c)&&isFinite(n[0]))}else{r.getTicks().length-1>a&&(u=i(u));var d=Math.round((n[0]+n[1])/2/u)*u,f=Math.round(a/2);r.setExtent(Vo(d-f*u),Vo(d+(a-f)*u)),r.setInterval(u)}})},Xh.dimensions=[],Xh.create=function(t,e){var i=[];return t.eachComponent("radar",function(n){var o=new Xh(n,t,e);i.push(o),n.coordinateSystem=o}),t.eachSeriesByType("radar",function(t){"radar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("radarIndex")||0])}),i},Ga.register("radar",Xh);var fC=LD.valueAxis,pC=(Gs({type:"radar",optionUpdated:function(){var t=this.get("boundaryGap"),e=this.get("splitNumber"),o=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"),p=this.get("nameGap"),g=this.get("triggerEvent"),m=f(this.get("indicator")||[],function(f){null!=f.max&&f.max>0&&!f.min?f.min=0:null!=f.min&&f.min<0&&!f.max&&(f.max=0);var m=h;if(null!=f.color&&(m=r({color:f.color},h)),f=n(i(f),{boundaryGap:t,splitNumber:e,scale:o,axisLine:s,axisTick:l,axisLabel:u,name:f.text,nameLocation:"end",nameGap:p,nameTextStyle:m,triggerEvent:g},!1),c||(f.name=""),"string"==typeof d){var v=f.name;f.name=d.replace("{value}",null!=v?v:"")}else"function"==typeof d&&(f.name=d(f.name,f));var y=a(new Po(f,null,this.ecModel),WA);return y.mainType="radar",y.componentIndex=this.componentIndex,y},this);this.getIndicatorModels=function(){return m}},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:n({lineStyle:{color:"#bbb"}},fC.axisLine),axisLabel:jh(fC.axisLabel,!1),axisTick:jh(fC.axisTick,!1),splitLine:jh(fC.splitLine,!0),splitArea:jh(fC.splitArea,!0),indicator:[]}}),["axisLine","axisTickLabel","axisName"]);Fs({type:"radar",render:function(t,e,i){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},_buildAxes:function(t){var e=t.coordinateSystem;d(f(e.getIndicatorAxes(),function(t){return new BD(t.model,{position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})}),function(t){d(pC,t.add,t),this.group.add(t.getGroup())},this)},_buildSplitLineAndArea:function(t){function e(t,e,i){var n=i%e.length;return t[n]=t[n]||[],n}var i=t.coordinateSystem,n=i.getIndicatorAxes();if(n.length){var o=t.get("shape"),a=t.getModel("splitLine"),s=t.getModel("splitArea"),l=a.getModel("lineStyle"),u=s.getModel("areaStyle"),h=a.get("show"),c=s.get("show"),p=l.get("color"),g=u.get("color");p=y(p)?p:[p],g=y(g)?g:[g];var m=[],v=[];if("circle"===o)for(var x=n[0].getTicksCoords(),_=i.cx,w=i.cy,b=0;b"+f(i,function(i,n){var o=e.get(e.mapDimension(i.dim),t);return ea(i.name+" : "+o)}).join("
")},defaultOption:{zlevel:0,z:2,coordinateSystem:"radar",legendHoverLink:!0,radarIndex:0,lineStyle:{width:2,type:"solid"},label:{position:"top"},symbol:"emptyCircle",symbolSize:4}});Hs({type:"radar",render:function(t,e,n){function o(t,e){var i=t.getItemVisual(e,"symbol")||"circle",n=t.getItemVisual(e,"color");if("none"!==i){var o=Yh(t.getItemVisual(e,"symbolSize")),a=$l(i,-1,-1,2,2,n);return a.attr({style:{strokeNoScale:!0},z2:100,scale:[o[0]/2,o[1]/2]}),a}}function a(e,i,n,a,r,s){n.removeAll();for(var l=0;l"+ea(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)"}}}}),iC);var PC="\0_ec_interaction_mutex";Os({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},function(){}),h(nc,fw);var NC={axisPointer:1,tooltip:1,brush:1};yc.prototype={constructor:yc,draw:function(t,e,i,n,o){var a="geo"===t.mainType,r=t.getData&&t.getData();a&&e.eachComponent({mainType:"series",subType:"map"},function(e){r||e.getHostGeoModel()!==t||(r=e.getData())});var s=t.coordinateSystem;this._updateBackground(s);var l=this._regionsGroup,u=this.group,h=s.scale,c={position:s.position,scale:h};!l.childAt(0)||o?u.attr(c):Mo(u,c,t),l.removeAll();var f=["itemStyle"],p=["emphasis","itemStyle"],g=["label"],m=["emphasis","label"],v=R();d(s.regions,function(e){var i=v.get(e.name)||v.set(e.name,new tb),n=new SM({shape:{paths:[]}});i.add(n);var o,s=(C=t.getRegionModel(e.name)||t).getModel(f),u=C.getModel(p),c=gc(s),y=gc(u),x=C.getModel(g),_=C.getModel(m);if(r){o=r.indexOfName(e.name);var w=r.getItemVisual(o,"color",!0);w&&(c.fill=w)}d(e.geometries,function(t){if("polygon"===t.type){n.shape.paths.push(new fM({shape:{points:t.exterior}}));for(var e=0;e<(t.interiors?t.interiors.length:0);e++)n.shape.paths.push(new fM({shape:{points:t.interiors[e]}}))}}),n.setStyle(c),n.style.strokeNoScale=!0,n.culling=!0;var b=x.get("show"),S=_.get("show"),M=r&&isNaN(r.get(r.mapDimension("value"),o)),I=r&&r.getItemLayout(o);if(a||M&&(b||S)||I&&I.showLabel){var T,A=a?e.name:o;(!r||o>=0)&&(T=t);var D=new aM({position:e.center.slice(),scale:[1/h[0],1/h[1]],z2:10,silent:!0});po(D.style,D.hoverStyle={},x,_,{labelFetcher:T,labelDataIndex:A,defaultText:e.name,useInsideStyle:!1},{textAlign:"center",textVerticalAlign:"middle"}),i.add(D)}if(r)r.setItemGraphicEl(o,i);else{var C=t.getRegionModel(e.name);n.eventData={componentType:"geo",componentIndex:t.componentIndex,geoIndex:t.componentIndex,name:e.name,region:C&&C.option||{}}}(i.__regions||(i.__regions=[])).push(e),co(i,y,{hoverSilentOnTouch:!!t.get("selectedMode")}),l.add(i)}),this._updateController(t,e,i),mc(this,t,l,i,n),vc(t,l)},remove:function(){this._regionsGroup.removeAll(),this._backgroundGroup.removeAll(),this._controller.dispose(),this._mapName&&kC.removeGraphic(this._mapName,this.uid),this._mapName=null,this._controllerHost={}},_updateBackground:function(t){var e=t.map;this._mapName!==e&&d(kC.makeGraphic(e,this.uid),function(t){this._backgroundGroup.add(t)},this),this._mapName=e},_updateController:function(t,e,i){function n(){var e={type:"geoRoam",componentType:l};return e[l+"Id"]=t.id,e}var o=t.coordinateSystem,r=this._controller,s=this._controllerHost;s.zoomLimit=t.get("scaleLimit"),s.zoom=o.getZoom(),r.enable(t.get("roam")||!1);var l=t.mainType;r.off("pan").on("pan",function(t){this._mouseDownFlag=!1,dc(s,t.dx,t.dy),i.dispatchAction(a(n(),{dx:t.dx,dy:t.dy}))},this),r.off("zoom").on("zoom",function(t){if(this._mouseDownFlag=!1,fc(s,t.scale,t.originX,t.originY),i.dispatchAction(a(n(),{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),r.setPointerChecker(function(e,n,a){return o.getViewRectAfterRoam().contain(n,a)&&!pc(e,i,t)})}};var OC="__seriesMapHighDown",EC="__seriesMapCallKey";Hs({type:"map",render:function(t,e,i,n){if(!n||"mapToggleSelect"!==n.type||n.from!==this.uid){var o=this.group;if(o.removeAll(),!t.getHostGeoModel()){if(n&&"geoRoam"===n.type&&"series"===n.componentType&&n.seriesId===t.id)(a=this._mapDraw)&&o.add(a.group);else if(t.needsDrawMap){var a=this._mapDraw||new yc(i,!0);o.add(a.group),a.draw(t,e,i,this,n),this._mapDraw=a}else this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null;t.get("showLegendSymbol")&&e.getComponent("legend")&&this._renderSymbols(t,e,i)}}},remove:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null,this.group.removeAll()},dispose:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null},_renderSymbols:function(t,e,i){var n=t.originalData,o=this.group;n.each(n.mapDimension("value"),function(e,i){if(!isNaN(e)){var r=n.getItemLayout(i);if(r&&r.point){var s=r.point,l=r.offset,u=new rM({style:{fill:t.getData().getVisual("color")},shape:{cx:s[0]+9*l,cy:s[1],r:3},silent:!0,z2:8+(l?0:PM+1)});if(!l){var h=t.mainSeries.getData(),c=n.getName(i),d=h.indexOfName(c),f=n.getItemModel(i),p=f.getModel("label"),g=f.getModel("emphasis.label"),m=h.getItemGraphicEl(d),y=A(t.getFormattedLabel(d,"normal"),c),x=A(t.getFormattedLabel(d,"emphasis"),y),_=m[OC],w=Math.random();if(!_){_=m[OC]={};var b=v(xc,!0),S=v(xc,!1);m.on("mouseover",b).on("mouseout",S).on("emphasis",b).on("normal",S)}m[EC]=w,a(_,{recordVersion:w,circle:u,labelModel:p,hoverLabelModel:g,emphasisText:x,normalText:y}),_c(_,!1)}o.add(u)}}})}}),Os({type:"geoRoam",event:"geoRoam",update:"updateTransform"},function(t,e){var i=t.componentType||"series";e.eachComponent({mainType:i,query:t},function(e){var n=e.coordinateSystem;if("geo"===n.type){var o=wc(n,t,e.get("scaleLimit"));e.setCenter&&e.setCenter(o.center),e.setZoom&&e.setZoom(o.zoom),"series"===i&&d(e.seriesGroup,function(t){t.setCenter(o.center),t.setZoom(o.zoom)})}})});var RC=Q;h(bc,Tw),Sc.prototype={constructor:Sc,type:"view",dimensions:["x","y"],setBoundingRect:function(t,e,i,n){return this._rect=new de(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 de(t,e,i,n)},transformTo:function(t,e,i,n){var o=this.getBoundingRect(),a=this._rawTransformable;a.transform=o.calculateTransform(new de(t,e,i,n)),a.decomposeTransform(),this._updateTransform()},setCenter:function(t){t&&(this._center=t,this._updateCenterAndZoom())},setZoom:function(t){t=t||1;var e=this.zoomLimit;e&&(null!=e.max&&(t=Math.min(e.max,t)),null!=e.min&&(t=Math.max(e.min,t))),this._zoom=t,this._updateCenterAndZoom()},getDefaultCenter:function(){var t=this.getBoundingRect();return[t.x+t.width/2,t.y+t.height/2]},getCenter:function(){return this._center||this.getDefaultCenter()},getZoom:function(){return this._zoom||1},getRoamTransform:function(){return this._roamTransformable.getLocalTransform()},_updateCenterAndZoom:function(){var t=this._rawTransformable.getLocalTransform(),e=this._roamTransformable,i=this.getDefaultCenter(),n=this.getCenter(),o=this.getZoom();n=Q([],n,t),i=Q([],i,t),e.origin=n,e.position=[i[0]-n[0],i[1]-n[1]],e.scale=[o,o],this._updateTransform()},_updateTransform:function(){var t=this._roamTransformable,e=this._rawTransformable;e.parent=t,t.updateTransform(),e.updateTransform(),wt(this.transform||(this.transform=[]),e.transform||xt()),this._rawTransform=e.getLocalTransform(),this.invTransform=this.invTransform||[],Tt(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?RC(i,t,n):G(i,t)},pointToData:function(t){var e=this.invTransform;return e?RC([],t,e):[t[0],t[1]]},convertToPixel:v(Mc,"dataToPoint"),convertFromPixel:v(Mc,"pointToData"),containPoint:function(t){return this.getViewRectAfterRoam().contain(t[0],t[1])}},h(Sc,Tw),Ic.prototype={constructor:Ic,type:"geo",dimensions:["lng","lat"],containCoord:function(t){for(var e=this.regions,i=0;ie&&(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=0&&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),o=this.getLevelModel();return o||0!==this.children.length&&(0===this.children.length||!1!==this.isExpand)||(e=this.getLeavesModel()),n.getModel(t,(o||e||i.hostModel).getModel(t))}},getLevelModel:function(){return(this.hostTree.levelModels||[])[this.depth]},getLeavesModel:function(){return this.hostTree.leavesModel},setVisual:function(t,e){this.dataIndex>=0&&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)}},Bc.prototype={constructor:Bc,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;ia&&(a=t.depth)});var r=t.expandAndCollapse&&t.initialTreeDepth>=0?t.initialTreeDepth:a;return o.root.eachNode("preorder",function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=r}),o.data},getOrient:function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},formatTooltip:function(t){for(var e=this.getData().tree,i=e.root.children[0],n=e.getNodeByDataIndex(t),o=n.getValue(),a=n.name;n&&n!==i;)a=n.parentNode.name+"."+a,n=n.parentNode;return ea(a+(isNaN(o)||null==o?"":" : "+o))},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}}),Hs({type:"tree",init:function(t,e){this._oldTree,this._mainGroup=new tb,this._controller=new nc(e.getZr()),this._controllerHost={target:this.group},this.group.add(this._mainGroup)},render:function(t,e,i,n){var o=t.getData(),a=t.layoutInfo,r=this._mainGroup,s=t.get("layout");"radial"===s?r.attr("position",[a.x+a.width/2,a.y+a.height/2]):r.attr("position",[a.x,a.y]),this._updateViewCoordSys(t),this._updateController(t,e,i);var l=this._data,u={expandAndCollapse:t.get("expandAndCollapse"),layout:s,orient:t.getOrient(),curvature:t.get("lineStyle.curveness"),symbolRotate:t.get("symbolRotate"),symbolOffset:t.get("symbolOffset"),hoverAnimation:t.get("hoverAnimation"),useNameLabel:!0,fadeIn:!0};o.diff(l).add(function(e){Qc(o,e)&&ed(o,e,null,r,t,u)}).update(function(e,i){var n=l.getItemGraphicEl(i);Qc(o,e)?ed(o,e,n,r,t,u):n&&id(l,i,n,r,t,u)}).remove(function(e){var i=l.getItemGraphicEl(e);i&&id(l,e,i,r,t,u)}).execute(),this._nodeScaleRatio=t.get("nodeScaleRatio"),this._updateNodeAndLinkScale(t),!0===u.expandAndCollapse&&o.eachItemGraphicEl(function(e,n){e.off("click").on("click",function(){i.dispatchAction({type:"treeExpandAndCollapse",seriesId:t.id,dataIndex:n})})}),this._data=o},_updateViewCoordSys:function(t){var e=t.getData(),i=[];e.each(function(t){var n=e.getItemLayout(t);!n||isNaN(n.x)||isNaN(n.y)||i.push([+n.x,+n.y])});var n=[],o=[];dn(i,n,o),o[0]-n[0]==0&&(o[0]+=1,n[0]-=1),o[1]-n[1]==0&&(o[1]+=1,n[1]-=1);var a=t.coordinateSystem=new Sc;a.zoomLimit=t.get("scaleLimit"),a.setBoundingRect(n[0],n[1],o[0]-n[0],o[1]-n[1]),a.setCenter(t.get("center")),a.setZoom(t.get("zoom")),this.group.attr({position:a.position,scale:a.scale}),this._viewCoordSys=a},_updateController:function(t,e,i){var n=this._controller,o=this._controllerHost,a=this.group;n.setPointerChecker(function(e,n,o){var r=a.getBoundingRect();return r.applyTransform(a.transform),r.contain(n,o)&&!pc(e,i,t)}),n.enable(t.get("roam")),o.zoomLimit=t.get("scaleLimit"),o.zoom=t.coordinateSystem.getZoom(),n.off("pan").off("zoom").on("pan",function(e){dc(o,e.dx,e.dy),i.dispatchAction({seriesId:t.id,type:"treeRoam",dx:e.dx,dy:e.dy})},this).on("zoom",function(e){fc(o,e.scale,e.originX,e.originY),i.dispatchAction({seriesId:t.id,type:"treeRoam",zoom:e.scale,originX:e.originX,originY:e.originY}),this._updateNodeAndLinkScale(t)},this)},_updateNodeAndLinkScale:function(t){var e=t.getData(),i=this._getNodeGlobalScale(t),n=[i,i];e.eachItemGraphicEl(function(t,e){t.attr("scale",n)})},_getNodeGlobalScale:function(t){var e=t.coordinateSystem;if("view"!==e.type)return 1;var i=this._nodeScaleRatio,n=e.scale,o=n&&n[0]||1;return((e.getZoom()-1)*i+1)/o},dispose:function(){this._controller&&this._controller.dispose(),this._controllerHost={}},remove:function(){this._mainGroup.removeAll(),this._data=null}}),Os({type:"treeExpandAndCollapse",event:"treeExpandAndCollapse",update:"update"},function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},function(e){var i=t.dataIndex,n=e.getData().tree.getNodeByDataIndex(i);n.isExpand=!n.isExpand})}),Os({type:"treeRoam",event:"treeRoam",update:"none"},function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},function(e){var i=wc(e.coordinateSystem,t);e.setCenter&&e.setCenter(i.center),e.setZoom&&e.setZoom(i.zoom)})});zs(SD("tree","circle")),Rs(function(t,e){t.eachSeriesByType("tree",function(t){rd(t,e)})}),jI.extend({type:"series.treemap",layoutMode:"box",dependencies:["grid","polar"],_viewRoot:null,defaultOption:{progressive:0,hoverLayerThreshold:1/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};cd(i);var n=t.levels||[];n=t.levels=dd(n,e);var o={};return o.levels=n,Bc.createTree(i,this,o).data},optionUpdated:function(){this.resetViewRoot()},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=Qo(y(i)?i[0]:i);return ea(e.getName(t)+": "+n)},getDataParams:function(t){var e=jI.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return e.treePathInfo=hd(i,this),e},setLayoutInfo:function(t){this.layoutInfo=this.layoutInfo||{},a(this.layoutInfo,t)},mapIdToIndex:function(t){var e=this._idIndexMap;e||(e=this._idIndexMap=R(),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 WC=5;fd.prototype={constructor:fd,render:function(t,e,i,n){var o=t.getModel("breadcrumb"),a=this.group;if(a.removeAll(),o.get("show")&&i){var r=o.getModel("itemStyle"),s=r.getModel("textStyle"),l={pos:{left:o.get("left"),right:o.get("right"),top:o.get("top"),bottom:o.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:o.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(i,l,s),this._renderContent(t,l,r,s,n),ca(a,l.pos,l.box)}},_prepare:function(t,e,i){for(var n=t;n;n=n.parentNode){var o=n.getModel().get("name"),a=i.getTextRect(o),r=Math.max(a.width+16,e.emptyItemWidth);e.totalWidth+=r+8,e.renderList.push({node:n,text:o,width:r})}},_renderContent:function(t,e,i,n,o){for(var a=0,s=e.emptyItemWidth,l=t.get("breadcrumb.height"),u=ua(e.pos,e.box),h=e.totalWidth,c=e.renderList,d=c.length-1;d>=0;d--){var f=c[d],p=f.node,g=f.width,m=f.text;h>u.width&&(h-=g-s,g=s,m=null);var y=new fM({shape:{points:pd(a,0,g,l,d===c.length-1,0===d)},style:r(i.getItemStyle(),{lineJoin:"bevel",text:m,textFill:n.getTextColor(),textFont:n.getFont()}),z:10,onclick:v(o,p)});this.group.add(y),gd(y,t,p),a+=g+8}},remove:function(){this.group.removeAll()}};var HC=m,ZC=tb,UC=vM,XC=d,jC=["label"],YC=["emphasis","label"],qC=["upperLabel"],KC=["emphasis","upperLabel"],$C=10,JC=1,QC=2,tL=Jb([["fill","color"],["stroke","strokeColor"],["lineWidth","strokeWidth"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),eL=function(t){var e=tL(t);return e.stroke=e.fill=e.lineWidth=null,e};Hs({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(!(l(e.findComponents({mainType:"series",subType:"treemap",query:n}),t)<0)){this.seriesModel=t,this.api=i,this.ecModel=e;var o=sd(n,["treemapZoomToNode","treemapRootToNode"],t),a=n&&n.type,r=t.layoutInfo,s=!this._oldTree,u=this._storage,h="treemapRootToNode"===a&&o&&u?{rootNodeGroup:u.nodeGroup[o.node.getRawIndex()],direction:n.direction}:null,c=this._giveContainerGroup(r),d=this._doRender(c,t,h);s||a&&"treemapZoomToNode"!==a&&"treemapRootToNode"!==a?d.renderFinally():this._doAnimation(c,d,t,h),this._resetController(i),this._renderBreadcrumb(t,i,o)}},_giveContainerGroup:function(t){var e=this._containerGroup;return e||(e=this._containerGroup=new ZC,this._initEvents(e),this.group.add(e)),e.attr("position",[t.x,t.y]),e},_doRender:function(t,e,i){function n(t,e,i,o,a){function r(t){return t.getId()}function s(r,s){var l=null!=r?t[r]:null,u=null!=s?e[s]:null,c=h(l,u,i,a);c&&n(l&&l.viewChildren||[],u&&u.viewChildren||[],c,o,a+1)}o?(e=t,XC(t,function(t,e){!t.isRemoved()&&s(e,e)})):new Us(e,t,r,r).add(s).update(s).remove(v(s,null)).execute()}var o=e.getData().tree,a=this._oldTree,r={nodeGroup:[],background:[],content:[]},s={nodeGroup:[],background:[],content:[]},l=this._storage,u=[],h=v(vd,e,s,l,i,r,u);n(o.root?[o.root]:[],a&&a.root?[a.root]:[],t,o===a||!a,0);var c=function(t){var e={nodeGroup:[],background:[],content:[]};return t&&XC(t,function(t,i){var n=e[i];XC(t,function(t){t&&(n.push(t),t.__tmWillDelete=1)})}),e}(l);return this._oldTree=o,this._storage=s,{lastsForAnimation:r,willDeleteEls:c,renderFinally:function(){XC(c,function(t){XC(t,function(t){t.parent&&t.parent.remove(t)})}),XC(u,function(t){t.invisible=!0,t.dirty()})}}},_doAnimation:function(t,e,i,n){if(i.get("animation")){var o=i.get("animationDurationUpdate"),r=i.get("animationEasing"),s=md();XC(e.willDeleteEls,function(t,e){XC(t,function(t,i){if(!t.invisible){var a,l=t.parent;if(n&&"drillDown"===n.direction)a=l===n.rootNodeGroup?{shape:{x:0,y:0,width:l.__tmNodeWidth,height:l.__tmNodeHeight},style:{opacity:0}}:{style:{opacity:0}};else{var u=0,h=0;l.__tmWillDelete||(u=l.__tmNodeWidth/2,h=l.__tmNodeHeight/2),a="nodeGroup"===e?{position:[u,h],style:{opacity:0}}:{shape:{x:u,y:h,width:0,height:0},style:{opacity:0}}}a&&s.add(t,a,o,r)}})}),XC(this._storage,function(t,i){XC(t,function(t,n){var l=e.lastsForAnimation[i][n],u={};l&&("nodeGroup"===i?l.old&&(u.position=t.position.slice(),t.attr("position",l.old)):(l.old&&(u.shape=a({},t.shape),t.setShape(l.old)),l.fadein?(t.setStyle("opacity",0),u.style={opacity:1}):1!==t.style.opacity&&(u.style={opacity:1})),s.add(t,u,o,r))})},this),this._state="animating",s.done(HC(function(){this._state="ready",e.renderFinally()},this)).start()}},_resetController:function(t){var e=this._controller;e||((e=this._controller=new nc(t.getZr())).enable(this.seriesModel.get("roam")),e.on("pan",HC(this._onPan,this)),e.on("zoom",HC(this._onZoom,this)));var i=new de(0,0,t.getWidth(),t.getHeight());e.setPointerChecker(function(t,e,n){return i.contain(e,n)})},_clearController:function(){var t=this._controller;t&&(t.dispose(),t=null)},_onPan:function(t){if("animating"!==this._state&&(Math.abs(t.dx)>3||Math.abs(t.dy)>3)){var e=this.seriesModel.getData().tree.root;if(!e)return;var i=e.getLayout();if(!i)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:i.x+t.dx,y:i.y+t.dy,width:i.width,height:i.height}})}},_onZoom:function(t){var e=t.originX,i=t.originY;if("animating"!==this._state){var n=this.seriesModel.getData().tree.root;if(!n)return;var o=n.getLayout();if(!o)return;var a=new de(o.x,o.y,o.width,o.height),r=this.seriesModel.layoutInfo;e-=r.x,i-=r.y;var s=xt();St(s,s,[-e,-i]),It(s,s,[t.scale,t.scale]),St(s,s,[e,i]),a.applyTransform(s),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:a.x,y:a.y,width:a.width,height:a.height}})}},_initEvents:function(t){t.on("click",function(t){if("ready"===this._state){var e=this.seriesModel.get("nodeClick",!0);if(e){var i=this.findTarget(t.offsetX,t.offsetY);if(i){var n=i.node;if(n.getLayout().isLeafRoot)this._rootToNode(i);else if("zoomToNode"===e)this._zoomToNode(i);else if("link"===e){var o=n.hostTree.data.getItemModel(n.dataIndex),a=o.get("link",!0),r=o.get("target",!0)||"blank";a&&window.open(a,r)}}}}},this)},_renderBreadcrumb:function(t,e,i){i||(i=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(e.getWidth()/2,e.getHeight()/2))||(i={node:t.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new fd(this.group))).render(t,e,i.node,HC(function(e){"animating"!==this._state&&(ud(t.getViewRoot(),e)?this._rootToNode({node:e}):this._zoomToNode({node:e}))},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(t,e){var i;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},function(n){var o=this._storage.background[n.getRawIndex()];if(o){var a=o.transformCoordToLocal(t,e),r=o.shape;if(!(r.x<=a[0]&&a[0]<=r.x+r.width&&r.y<=a[1]&&a[1]<=r.y+r.height))return!1;i={node:n,offsetX:a[0],offsetY:a[1]}}},this),i}});for(var iL=["treemapZoomToNode","treemapRender","treemapMove"],nL=0;nL=0&&t.call(e,i[o],o)},SL.eachEdge=function(t,e){for(var i=this.edges,n=i.length,o=0;o=0&&i[o].node1.dataIndex>=0&&i[o].node2.dataIndex>=0&&t.call(e,i[o],o)},SL.breadthFirstTraverse=function(t,e,i,n){if($d.isInstance(e)||(e=this._nodesMap[Kd(e)]),e){for(var o="out"===i?"outEdges":"in"===i?"inEdges":"edges",a=0;a=0&&i.node2.dataIndex>=0});for(var o=0,a=n.length;o=0&&this[t][e].setItemVisual(this.dataIndex,i,n)},getVisual:function(i,n){return this[t][e].getItemVisual(this.dataIndex,i,n)},setLayout:function(i,n){this.dataIndex>=0&&this[t][e].setItemLayout(this.dataIndex,i,n)},getLayout:function(){return this[t][e].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[t][e].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[t][e].getRawIndex(this.dataIndex)}}};h($d,ML("hostGraph","data")),h(Jd,ML("hostGraph","edgeData")),bL.Node=$d,bL.Edge=Jd,ji($d),ji(Jd);var IL=function(t,e,i,n,o){for(var a=new bL(n),r=0;r "+f)),h++)}var p,g=i.get("coordinateSystem");if("cartesian2d"===g||"polar"===g)p=gl(t,i);else{var m=Ga.get(g),v=m&&"view"!==m.type?m.dimensions||[]:[];l(v,"value")<0&&v.concat(["value"]);var y=vA(t,{coordDimensions:v});(p=new pA(y,i)).initData(t)}var x=new pA(["value"],i);return x.initData(u,s),o&&o(p,x),Lc({mainData:p,struct:a,structAttr:"graph",datas:{node:p,edge:x},datasAttr:{node:"data",edge:"edgeData"}}),a.update(),a},TL=Ws({type:"series.graph",init:function(t){TL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this._categoriesData},this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeOption:function(t){TL.superApply(this,"mergeOption",arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeDefaultAndTheme:function(t){TL.superApply(this,"mergeDefaultAndTheme",arguments),Ci(t,["edgeLabel"],["show"])},getInitialData:function(t,e){var i=t.edges||t.links||[],n=t.data||t.nodes||[],o=this;if(n&&i)return IL(n,i,this,!0,function(t,i){function n(t){return(t=this.parsePath(t))&&"label"===t[0]?r:t&&"emphasis"===t[0]&&"label"===t[1]?l:this.parentModel}t.wrapMethod("getItemModel",function(t){var e=o._categoriesModels[t.getShallow("category")];return e&&(e.parentModel=t.parentModel,t.parentModel=e),t});var a=o.getModel("edgeLabel"),r=new Po({label:a.option},a.parentModel,e),s=o.getModel("emphasis.edgeLabel"),l=new Po({emphasis:{label:s.option}},s.parentModel,e);i.wrapMethod("getItemModel",function(t){return t.customizeGetParent(n),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){var n=this.getData(),o=this.getDataParams(t,i),a=n.graph.getEdgeByIndex(t),r=n.getName(a.node1.dataIndex),s=n.getName(a.node2.dataIndex),l=[];return null!=r&&l.push(r),null!=s&&l.push(s),l=ea(l.join(" > ")),o.value&&(l+=" : "+ea(o.value)),l}return TL.superApply(this,"formatTooltip",arguments)},_updateCategoriesData:function(){var t=f(this.option.categories||[],function(t){return null!=t.value?t:a({value:0},t)}),e=new pA(["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 TL.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}}}}),AL=xM.prototype,DL=wM.prototype,CL=Zn({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){(Qd(e)?AL:DL).buildPath(t,e)},pointAt:function(t){return Qd(this.shape)?AL.pointAt.call(this,t):DL.pointAt.call(this,t)},tangentAt:function(t){var e=this.shape,i=Qd(e)?[e.x2-e.x1,e.y2-e.y1]:DL.tangentAt.call(this,t);return q(i,i)}}),LL=["fromSymbol","toSymbol"],kL=af.prototype;kL.beforeUpdate=function(){var t=this,e=t.childOfName("fromSymbol"),i=t.childOfName("toSymbol"),n=t.childOfName("label");if(e||i||!n.ignore){for(var o=1,a=this.parent;a;)a.scale&&(o/=a.scale[0]),a=a.parent;var r=t.childOfName("line");if(this.__dirty||r.__dirty){var s=r.shape.percent,l=r.pointAt(0),u=r.pointAt(s),h=U([],u,l);if(q(h,h),e&&(e.attr("position",l),c=r.tangentAt(0),e.attr("rotation",Math.PI/2-Math.atan2(c[1],c[0])),e.attr("scale",[o*s,o*s])),i){i.attr("position",u);var c=r.tangentAt(1);i.attr("rotation",-Math.PI/2-Math.atan2(c[1],c[0])),i.attr("scale",[o*s,o*s])}if(!n.ignore){n.attr("position",u);var d,f,p,g=5*o;if("end"===n.__position)d=[h[0]*g+u[0],h[1]*g+u[1]],f=h[0]>.8?"left":h[0]<-.8?"right":"center",p=h[1]>.8?"top":h[1]<-.8?"bottom":"middle";else if("middle"===n.__position){var m=s/2,v=[(c=r.tangentAt(m))[1],-c[0]],y=r.pointAt(m);v[1]>0&&(v[0]=-v[0],v[1]=-v[1]),d=[y[0]+v[0]*g,y[1]+v[1]*g],f="center",p="bottom";var x=-Math.atan2(c[1],c[0]);u[0].8?"right":h[0]<-.8?"left":"center",p=h[1]>.8?"bottom":h[1]<-.8?"top":"middle";n.attr({style:{textVerticalAlign:n.__verticalAlign||p,textAlign:n.__textAlign||f},position:d,scale:[o,o]})}}}},kL._createLine=function(t,e,i){var n=t.hostModel,o=nf(t.getItemLayout(e));o.shape.percent=0,Io(o,{shape:{percent:1}},n,e),this.add(o);var a=new aM({name:"label"});this.add(a),d(LL,function(i){var n=ef(i,t,e);this.add(n),this[tf(i)]=t.getItemVisual(e,i)},this),this._updateCommonStl(t,e,i)},kL.updateData=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=t.getItemLayout(e),r={shape:{}};of(r.shape,a),Mo(o,r,n,e),d(LL,function(i){var n=t.getItemVisual(e,i),o=tf(i);if(this[o]!==n){this.remove(this.childOfName(i));var a=ef(i,t,e);this.add(a)}this[o]=n},this),this._updateCommonStl(t,e,i)},kL._updateCommonStl=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=i&&i.lineStyle,s=i&&i.hoverLineStyle,l=i&&i.labelModel,u=i&&i.hoverLabelModel;if(!i||t.hasItemOption){var h=t.getItemModel(e);a=h.getModel("lineStyle").getLineStyle(),s=h.getModel("emphasis.lineStyle").getLineStyle(),l=h.getModel("label"),u=h.getModel("emphasis.label")}var c=t.getItemVisual(e,"color"),f=D(t.getItemVisual(e,"opacity"),a.opacity,1);o.useStyle(r({strokeNoScale:!0,fill:"none",stroke:c,opacity:f},a)),o.hoverStyle=s,d(LL,function(t){var e=this.childOfName(t);e&&(e.setColor(c),e.setStyle({opacity:f}))},this);var p,g,m=l.getShallow("show"),v=u.getShallow("show"),y=this.childOfName("label");if((m||v)&&(p=c||"#000",null==(g=n.getFormattedLabel(e,"normal",t.dataType)))){var x=n.getRawValue(e);g=null==x?t.getName(e):isFinite(x)?Vo(x):x}var _=m?g:null,w=v?A(n.getFormattedLabel(e,"emphasis",t.dataType),g):null,b=y.style;null==_&&null==w||(go(y.style,l,{text:_},{autoColor:p}),y.__textAlign=b.textAlign,y.__verticalAlign=b.textVerticalAlign,y.__position=l.get("position")||"middle"),y.hoverStyle=null!=w?{text:w,textFill:u.getTextColor(!0),fontStyle:u.getShallow("fontStyle"),fontWeight:u.getShallow("fontWeight"),fontSize:u.getShallow("fontSize"),fontFamily:u.getShallow("fontFamily")}:{text:null},y.ignore=!m&&!v,co(this)},kL.highlight=function(){this.trigger("emphasis")},kL.downplay=function(){this.trigger("normal")},kL.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},kL.setLinePoints=function(t){var e=this.childOfName("line");of(e.shape,t),e.dirty()},u(af,tb);var PL=rf.prototype;PL.isPersistent=function(){return!0},PL.updateData=function(t){var e=this,i=e.group,n=e._lineData;e._lineData=t,n||i.removeAll();var o=uf(t);t.diff(n).add(function(i){sf(e,t,i,o)}).update(function(i,a){lf(e,n,t,a,i,o)}).remove(function(t){i.remove(n.getItemGraphicEl(t))}).execute()},PL.updateLayout=function(){var t=this._lineData;t&&t.eachItemGraphicEl(function(e,i){e.updateLayout(t,i)},this)},PL.incrementalPrepareUpdate=function(t){this._seriesScope=uf(t),this._lineData=null,this.group.removeAll()},PL.incrementalUpdate=function(t,e){for(var i=t.start;i=o/3?1:2),l=e.y-n(r)*a*(a>=o/3?1:2);r=e.angle-Math.PI/2,t.moveTo(s,l),t.lineTo(e.x+i(r)*a,e.y+n(r)*a),t.lineTo(e.x+i(e.angle)*o,e.y+n(e.angle)*o),t.lineTo(e.x-i(r)*a,e.y-n(r)*a),t.lineTo(s,l)}}),ZL=2*Math.PI,UL=(Tr.extend({type:"gauge",render:function(t,e,i){this.group.removeAll();var n=t.get("axisLine.lineStyle.color"),o=bf(t,i);this._renderMain(t,e,i,n,o)},dispose:function(){},_renderMain:function(t,e,i,n,o){for(var a=this.group,r=t.getModel("axisLine").getModel("lineStyle"),s=t.get("clockwise"),l=-t.get("startAngle")/180*Math.PI,u=-t.get("endAngle")/180*Math.PI,h=(u-l)%ZL,c=l,d=r.get("width"),f=0;f=t&&(0===e?0:n[e-1][0]).4?"bottom":"middle",textAlign:A<-.4?"left":A>.4?"right":"center"},{autoColor:P}),silent:!0}))}if(g.get("show")&&T!==v){for(var N=0;N<=y;N++){var A=Math.cos(w),D=Math.sin(w),O=new xM({shape:{x1:A*c+u,y1:D*c+h,x2:A*(c-_)+u,y2:D*(c-_)+h},silent:!0,style:I});"auto"===I.stroke&&O.setStyle({stroke:n((T+N/y)/v)}),l.add(O),w+=S}w-=S}else w+=b}},_renderPointer:function(t,e,i,n,o,a,r,s){var l=this.group,u=this._data;if(t.get("pointer.show")){var h=[+t.get("min"),+t.get("max")],c=[a,r],d=t.getData(),f=d.mapDimension("value");d.diff(u).add(function(e){var i=new HL({shape:{angle:a}});Io(i,{shape:{angle:zo(d.get(f,e),h,c,!0)}},t),l.add(i),d.setItemGraphicEl(e,i)}).update(function(e,i){var n=u.getItemGraphicEl(i);Mo(n,{shape:{angle:zo(d.get(f,e),h,c,!0)}},t),l.add(n),d.setItemGraphicEl(e,n)}).remove(function(t){var e=u.getItemGraphicEl(t);l.remove(e)}).execute(),d.eachItemGraphicEl(function(t,e){var i=d.getItemModel(e),a=i.getModel("pointer");t.setShape({x:o.cx,y:o.cy,width:Bo(a.get("width"),o.r),r:Bo(a.get("length"),o.r)}),t.useStyle(i.getModel("itemStyle").getItemStyle()),"auto"===t.style.fill&&t.setStyle("fill",n(zo(d.get(f,e),h,[0,1],!0))),co(t,i.getModel("emphasis.itemStyle").getItemStyle())}),this._data=d}else u&&u.eachItemGraphicEl(function(t){l.remove(t)})},_renderTitle:function(t,e,i,n,o){var a=t.getData(),r=a.mapDimension("value"),s=t.getModel("title");if(s.get("show")){var l=s.get("offsetCenter"),u=o.cx+Bo(l[0],o.r),h=o.cy+Bo(l[1],o.r),c=+t.get("min"),d=+t.get("max"),f=n(zo(t.getData().get(r,0),[c,d],[0,1],!0));this.group.add(new aM({silent:!0,style:go({},s,{x:u,y:h,text:a.getName(0),textAlign:"center",textVerticalAlign:"middle"},{autoColor:f,forceRich:!0})}))}},_renderDetail:function(t,e,i,n,o){var a=t.getModel("detail"),r=+t.get("min"),s=+t.get("max");if(a.get("show")){var l=a.get("offsetCenter"),u=o.cx+Bo(l[0],o.r),h=o.cy+Bo(l[1],o.r),c=Bo(a.get("width"),o.r),d=Bo(a.get("height"),o.r),f=t.getData(),p=f.get(f.mapDimension("value"),0),g=n(zo(p,[r,s],[0,1],!0));this.group.add(new aM({silent:!0,style:go({},a,{x:u,y:h,text:Sf(p,a.get("formatter")),textWidth:isNaN(c)?null:c,textHeight:isNaN(d)?null:d,textAlign:"center",textVerticalAlign:"middle"},{autoColor:g,forceRich:!0})}))}}}),Ws({type:"series.funnel",init:function(t){UL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this._defaultLabelLine(t)},getInitialData:function(t,e){return eC(this,["value"])},_defaultLabelLine:function(t){Ci(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=UL.superCall(this,"getDataParams",t),n=e.mapDimension("value"),o=e.getSum(n);return i.percent=o?+(e.get(n,t)/o*100).toFixed(2):0,i.$vars.push("percent"),i},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1,type:"solid"}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}}}})),XL=Mf.prototype,jL=["itemStyle","opacity"];XL.updateData=function(t,e,i){var n=this.childAt(0),o=t.hostModel,a=t.getItemModel(e),s=t.getItemLayout(e),l=t.getItemModel(e).get(jL);l=null==l?1:l,n.useStyle({}),i?(n.setShape({points:s.points}),n.setStyle({opacity:0}),Io(n,{style:{opacity:l}},o,e)):Mo(n,{style:{opacity:l},shape:{points:s.points}},o,e);var u=a.getModel("itemStyle"),h=t.getItemVisual(e,"color");n.setStyle(r({lineJoin:"round",fill:h},u.getItemStyle(["opacity"]))),n.hoverStyle=u.getModel("emphasis").getItemStyle(),this._updateLabel(t,e),co(this)},XL._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),o=t.hostModel,a=t.getItemModel(e),r=t.getItemLayout(e).label,s=t.getItemVisual(e,"color");Mo(i,{shape:{points:r.linePoints||r.linePoints}},o,e),Mo(n,{style:{x:r.x,y:r.y}},o,e),n.attr({rotation:r.rotation,origin:[r.x,r.y],z2:10});var l=a.getModel("label"),u=a.getModel("emphasis.label"),h=a.getModel("labelLine"),c=a.getModel("emphasis.labelLine"),s=t.getItemVisual(e,"color");po(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()},u(Mf,tb);Tr.extend({type:"funnel",render:function(t,e,i){var n=t.getData(),o=this._data,a=this.group;n.diff(o).add(function(t){var e=new Mf(n,t);n.setItemGraphicEl(t,e),a.add(e)}).update(function(t,e){var i=o.getItemGraphicEl(e);i.updateData(n,t),a.add(i),n.setItemGraphicEl(t,i)}).remove(function(t){var e=o.getItemGraphicEl(t);a.remove(e)}).execute(),this._data=n},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}});zs(rC("funnel")),Rs(function(t,e,i){t.eachSeriesByType("funnel",function(t){var i=t.getData(),n=i.mapDimension("value"),o=t.get("sort"),a=If(t,e),r=Tf(i,o),s=[Bo(t.get("minSize"),a.width),Bo(t.get("maxSize"),a.width)],l=i.getDataExtent(n),u=t.get("min"),h=t.get("max");null==u&&(u=Math.min(l[0],0)),null==h&&(h=l[1]);var c=t.get("funnelAlign"),d=t.get("gap"),f=(a.height-d*(i.count()-1))/i.count(),p=a.y,g=function(t,e){var o,r=zo(i.get(n,t)||0,[u,h],s,!0);switch(c){case"left":o=a.x;break;case"center":o=a.x+(a.width-r)/2;break;case"right":o=a.x+a.width-r}return[[o,e],[o+r,e]]};"ascending"===o&&(f=-f,d=-d,p+=a.height,r=r.reverse());for(var m=0;ma&&(e[1-n]=e[n]+h.sign*a),e},KL=d,$L=Math.min,JL=Math.max,QL=Math.floor,tk=Math.ceil,ek=Vo,ik=Math.PI;Pf.prototype={type:"parallel",constructor:Pf,_init:function(t,e,i){var n=t.dimensions,o=t.parallelAxisIndex;KL(n,function(t,i){var n=o[i],a=e.getComponent("parallelAxis",n),r=this._axesMap.set(t,new YL(t,Wl(a),[0,0],a.get("type"),n)),s="category"===r.type;r.onBand=s&&a.get("boundaryGap"),r.inverse=a.get("inverse"),a.axis=r,r.model=a,r.coordinateSystem=a.coordinateSystem=this},this)},update:function(t,e){this._updateAxesFromSeries(this._model,t)},containPoint:function(t){var e=this._makeLayoutInfo(),i=e.axisBase,n=e.layoutBase,o=e.pixelDimIndex,a=t[1-o],r=t[o];return a>=i&&a<=i+e.axisLength&&r>=n&&r<=n+e.layoutLength},getModel:function(){return this._model},_updateAxesFromSeries:function(t,e){e.eachSeries(function(i){if(t.contains(i,e)){var n=i.getData();KL(this.dimensions,function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(n,n.mapDimension(t)),Fl(e.scale,e.model)},this)}},this)},resize:function(t,e){this._rect=ha(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),this._layoutAxes()},getRect:function(){return this._rect},_makeLayoutInfo:function(){var t,e=this._model,i=this._rect,n=["x","y"],o=["width","height"],a=e.get("layout"),r="horizontal"===a?0:1,s=i[o[r]],l=[0,s],u=this.dimensions.length,h=Nf(e.get("axisExpandWidth"),l),c=Nf(e.get("axisExpandCount")||0,[0,u]),d=e.get("axisExpandable")&&u>3&&u>c&&c>1&&h>0&&s>0,f=e.get("axisExpandWindow");f?(t=Nf(f[1]-f[0],l),f[1]=f[0]+t):(t=Nf(h*(c-1),l),(f=[h*(e.get("axisExpandCenter")||QL(u/2))-t/2])[1]=f[0]+t);var p=(s-t)/(u-c);p<3&&(p=0);var g=[QL(ek(f[0]/h,1))+1,tk(ek(f[1]/h,1))-1],m=p/h*f[0];return{layout:a,pixelDimIndex:r,layoutBase:i[n[r]],layoutLength:s,axisBase:i[n[1-r]],axisLength:i[o[1-r]],axisExpandable:d,axisExpandWidth:h,axisCollapseWidth:p,axisExpandWindow:f,axisCount:u,winInnerIndices:g,axisExpandWindow0Pos:m}},_layoutAxes:function(){var t=this._rect,e=this._axesMap,i=this.dimensions,n=this._makeLayoutInfo(),o=n.layout;e.each(function(t){var e=[0,n.axisLength],i=t.inverse?1:0;t.setExtent(e[i],e[1-i])}),KL(i,function(e,i){var a=(n.axisExpandable?Ef:Of)(i,n),r={horizontal:{x:a.position,y:n.axisLength},vertical:{x:0,y:a.position}},s={horizontal:ik/2,vertical:0},l=[r[o].x+t.x,r[o].y+t.y],u=s[o],h=xt();Mt(h,h,u),St(h,h,l),this._axesLayout[e]={position:l,rotation:u,transform:h,axisNameAvailableWidth:a.axisNameAvailableWidth,axisLabelShow:a.axisLabelShow,nameTruncateMaxWidth:a.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(t,e,i,n){null==i&&(i=0),null==n&&(n=t.count());var o=this._axesMap,a=this.dimensions,r=[],s=[];d(a,function(e){r.push(t.mapDimension(e)),s.push(o.get(e).model)});for(var l=this.hasAxisBrushed(),u=i;uo*(1-h[0])?(l="jump",r=s-o*(1-h[2])):(r=s-o*h[1])>=0&&(r=s-o*(1-h[1]))<=0&&(r=0),(r*=e.axisExpandWidth/u)?qL(r,n,a,"all"):l="none";else{o=n[1]-n[0];(n=[JL(0,a[1]*s/o-o/2)])[1]=$L(a[1],n[0]+o),n[0]=n[1]-o}return{axisExpandWindow:n,behavior:l}}},Ga.register("parallel",{create:function(t,e){var i=[];return t.eachComponent("parallel",function(n,o){var a=new Pf(n,t,e);a.name="parallel_"+o,a.resize(n,e),n.coordinateSystem=a,a.model=n,i.push(a)}),t.eachSeries(function(e){if("parallel"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"parallel",index:e.get("parallelIndex"),id:e.get("parallelId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}});var nk=sI.extend({type:"baseParallelAxis",axis:null,activeIntervals:[],getAreaSelectStyle:function(){return Jb([["fill","color"],["lineWidth","borderWidth"],["stroke","borderColor"],["width","width"],["opacity","opacity"]])(this.getModel("areaSelectStyle"))},setActiveIntervals:function(t){var e=this.activeIntervals=i(t);if(e)for(var n=e.length-1;n>=0;n--)Go(e[n])},getActiveState:function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t||isNaN(t))return"inactive";if(1===e.length){var i=e[0];if(i[0]<=t&&t<=i[1])return"active"}else for(var n=0,o=e.length;n5)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&&Mp(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})}}};Ps(function(t){Df(t),Cf(t)}),jI.extend({type:"series.parallel",dependencies:["parallel"],visualColorAccessPath:"lineStyle.color",getInitialData:function(t,e){var i=this.getSource();return Ip(i,this),gl(i,this)},getRawIndicesByActiveState:function(t){var e=this.coordinateSystem,i=this.getData(),n=[];return e.eachActiveState(i,function(e,o){t===e&&n.push(i.getRawIndex(o))}),n},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"}});var Sk=.3,Mk=(Tr.extend({type:"parallel",init:function(){this._dataGroup=new tb,this.group.add(this._dataGroup),this._data,this._initialized},render:function(t,e,i,n){var o=this._dataGroup,a=t.getData(),r=this._data,s=t.coordinateSystem,l=s.dimensions,u=Lp(t);if(a.diff(r).add(function(t){kp(Cp(a,o,t,l,s),a,t,u)}).update(function(e,i){var o=r.getItemGraphicEl(i),h=Dp(a,e,l,s);a.setItemGraphicEl(e,o),Mo(o,{shape:{points:h}},n&&!1===n.animation?null:t,e),kp(o,a,e,u)}).remove(function(t){var e=r.getItemGraphicEl(t);o.remove(e)}).execute(),!this._initialized){this._initialized=!0;var h=Ap(s,t,function(){setTimeout(function(){o.removeClipPath()})});o.setClipPath(h)}this._data=a},incrementalPrepareRender:function(t,e,i){this._initialized=!0,this._data=null,this._dataGroup.removeAll()},incrementalRender:function(t,e,i){for(var n=e.getData(),o=e.coordinateSystem,a=o.dimensions,r=Lp(e),s=t.start;sn&&(n=e)}),d(e,function(e){var o=new sL({type:"color",mappingMethod:"linear",dataExtent:[i,n],visual:t.get("color")}).mapValueToVisual(e.getLayout().value);e.setVisual("color",o);var a=e.getModel().get("itemStyle.color");null!=a&&e.setVisual("color",a)})}})});var Ck={_baseAxisDim:null,getInitialData:function(t,e){var i,n,o=e.getComponent("xAxis",this.get("xAxisIndex")),a=e.getComponent("yAxis",this.get("yAxisIndex")),r=o.get("type"),s=a.get("type");"category"===r?(t.layout="horizontal",i=o.getOrdinalMeta(),n=!0):"category"===s?(t.layout="vertical",i=a.getOrdinalMeta(),n=!0):t.layout=t.layout||"horizontal";var l=["x","y"],u="horizontal"===t.layout?0:1,h=this._baseAxisDim=l[u],c=l[1-u],f=[o,a],p=f[u].get("type"),g=f[1-u].get("type"),m=t.data;if(m&&n){var v=[];d(m,function(t,e){var i;t.value&&y(t.value)?(i=t.value.slice(),t.value.unshift(e)):y(t)?(i=t.slice(),t.unshift(e)):i=t,v.push(i)}),t.data=v}var x=this.defaultValueDimensions;return eC(this,{coordDimensions:[{name:h,type:Ys(p),ordinalMeta:i,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:c,type:Ys(g),dimsDef:x.slice()}],dimensionsCount:x.length+1})},getBaseAxis:function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis}};h(jI.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}}),Ck,!0);var Lk=["itemStyle"],kk=["emphasis","itemStyle"],Pk=(Tr.extend({type:"boxplot",render:function(t,e,i){var n=t.getData(),o=this.group,a=this._data;this._data||o.removeAll();var r="horizontal"===t.get("layout")?1:0;n.diff(a).add(function(t){if(n.hasValue(t)){var e=ig(n.getItemLayout(t),n,t,r,!0);n.setItemGraphicEl(t,e),o.add(e)}}).update(function(t,e){var i=a.getItemGraphicEl(e);if(n.hasValue(t)){var s=n.getItemLayout(t);i?ng(s,i,n,t):i=ig(s,n,t,r),o.add(i),n.setItemGraphicEl(t,i)}else o.remove(i)}).remove(function(t){var e=a.getItemGraphicEl(t);e&&o.remove(e)}).execute(),this._data=n},remove:function(t){var e=this.group,i=this._data;this._data=null,i&&i.eachItemGraphicEl(function(t){t&&e.remove(t)})},dispose:B}),kn.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();n0?Wk:Hk)}function n(t,e){return e.get(t>0?Gk:Fk)}var o=t.getData(),a=t.pipelineContext.large;if(o.setVisual({legendSymbol:"roundRect",colorP:i(1,t),colorN:i(-1,t),borderColorP:n(1,t),borderColorN:n(-1,t)}),!e.isSeriesFiltered(t))return!a&&{progress:function(t,e){for(var o;null!=(o=t.next());){var a=e.getItemModel(o),r=e.getItemLayout(o).sign;e.setItemVisual(o,{color:i(r,a),borderColor:n(r,a)})}}}}},Uk="undefined"!=typeof Float32Array?Float32Array:Array,Xk={seriesType:"candlestick",plan:KI(),reset:function(t){var e=t.coordinateSystem,i=t.getData(),n=pg(t,i),o=0,a=1,r=["x","y"],s=i.mapDimension(r[o]),l=i.mapDimension(r[a],!0),u=l[0],h=l[1],c=l[2],d=l[3];if(i.setLayout({candleWidth:n,isSimpleBox:n<=1.3}),!(null==s||l.length<4))return{progress:t.pipelineContext.large?function(t,i){for(var n,r,l=new Uk(5*t.count),f=0,p=[],g=[];null!=(r=t.next());){var m=i.get(s,r),v=i.get(u,r),y=i.get(h,r),x=i.get(c,r),_=i.get(d,r);isNaN(m)||isNaN(x)||isNaN(_)?(l[f++]=NaN,f+=4):(l[f++]=fg(i,r,v,y,h),p[o]=m,p[a]=x,n=e.dataToPoint(p,null,g),l[f++]=n?n[0]:NaN,l[f++]=n?n[1]:NaN,p[a]=_,n=e.dataToPoint(p,null,g),l[f++]=n?n[1]:NaN)}i.setLayout("largePoints",l)}:function(t,i){function r(t,i){var n=[];return n[o]=i,n[a]=t,isNaN(i)||isNaN(t)?[NaN,NaN]:e.dataToPoint(n)}function l(t,e,i){var a=e.slice(),r=e.slice();a[o]=$n(a[o]+n/2,1,!1),r[o]=$n(r[o]-n/2,1,!0),i?t.push(a,r):t.push(r,a)}function f(t){return t[o]=$n(t[o],1),t}for(var p;null!=(p=t.next());){var g=i.get(s,p),m=i.get(u,p),v=i.get(h,p),y=i.get(c,p),x=i.get(d,p),_=Math.min(m,v),w=Math.max(m,v),b=r(_,g),S=r(w,g),M=r(y,g),I=r(x,g),T=[];l(T,S,0),l(T,b,1),T.push(f(I),f(S),f(M),f(b)),i.setItemLayout(p,{sign:fg(i,p,m,v,h),initBaseline:m>v?S[a]:b[a],ends:T,brushRect:function(t,e,i){var s=r(t,i),l=r(e,i);return s[o]-=n/2,l[o]-=n/2,{x:s[0],y:s[1],width:a?n:l[0]-s[0],height:a?l[1]-s[1]:n}}(y,x,g)})}}}}};Ps(function(t){t&&y(t.series)&&d(t.series,function(t){w(t)&&"k"===t.type&&(t.type="candlestick")})}),zs(Zk),Rs(Xk),jI.extend({type:"series.effectScatter",dependencies:["grid","polar"],getInitialData:function(t,e){return gl(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}});var jk=vg.prototype;jk.stopEffectAnimation=function(){this.childAt(1).removeAll()},jk.startEffectAnimation=function(t){for(var e=t.symbolType,i=t.color,n=this.childAt(1),o=0;o<3;o++){var a=$l(e,-1,-1,2,2,i);a.attr({style:{strokeNoScale:!0},z2:99,silent:!0,scale:[.5,.5]});var r=-o/3*t.period+t.effectOffset;a.animate("",!0).when(t.period,{scale:[t.rippleScale/2,t.rippleScale/2]}).delay(r).start(),a.animateStyle(!0).when(t.period,{opacity:0}).delay(r).start(),n.add(a)}mg(n,t)},jk.updateEffectAnimation=function(t){for(var e=this._effectCfg,i=this.childAt(1),n=["symbolType","period","rippleScale"],o=0;o "))},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,label:{show:!1,position:"end"},lineStyle:{opacity:.5}}}),$k=xg.prototype;$k.createLine=function(t,e,i){return new af(t,e,i)},$k._updateEffectSymbol=function(t,e){var i=t.getItemModel(e).getModel("effect"),n=i.get("symbolSize"),o=i.get("symbol");y(n)||(n=[n,n]);var a=i.get("color")||t.getItemVisual(e,"color"),r=this.childAt(1);this._symbolType!==o&&(this.remove(r),(r=$l(o,-.5,-.5,1,1,a)).z2=100,r.culling=!0,this.add(r)),r&&(r.setStyle("shadowColor",a),r.setStyle(i.getItemStyle(["color"])),r.attr("scale",n),r.setColor(a),r.attr("scale",n),this._symbolType=o,this._updateEffectAnimation(t,i,e))},$k._updateEffectAnimation=function(t,e,i){var n=this.childAt(1);if(n){var o=this,a=t.getItemLayout(i),r=1e3*e.get("period"),s=e.get("loop"),l=e.get("constantSpeed"),u=T(e.get("delay"),function(e){return e/t.count()*r/3}),h="function"==typeof u;if(n.ignore=!0,this.updateAnimationPoints(n,a),l>0&&(r=this.getLineLength(n)/l*1e3),r!==this._period||s!==this._loop){n.stopAnimation();var c=u;h&&(c=u(i)),n.__t>0&&(c=-r*n.__t),n.__t=0;var d=n.animate("",s).when(r,{__t:1}).delay(c).during(function(){o.updateSymbolPosition(n)});s||d.done(function(){o.remove(n)}),d.start()}this._period=r,this._loop=s}},$k.getLineLength=function(t){return uw(t.__p1,t.__cp1)+uw(t.__cp1,t.__p2)},$k.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]},$k.updateData=function(t,e,i){this.childAt(0).updateData(t,e,i),this._updateEffectSymbol(t,e)},$k.updateSymbolPosition=function(t){var e=t.__p1,i=t.__p2,n=t.__cp1,o=t.__t,a=t.position,r=rn,s=sn;a[0]=r(e[0],n[0],i[0],o),a[1]=r(e[1],n[1],i[1],o);var l=s(e[0],n[0],i[0],o),u=s(e[1],n[1],i[1],o);t.rotation=-Math.atan2(u,l)-Math.PI/2,t.ignore=!1},$k.updateLayout=function(t,e){this.childAt(0).updateLayout(t,e);var i=t.getItemModel(e).getModel("effect");this._updateEffectAnimation(t,i,e)},u(xg,tb);var Jk=_g.prototype;Jk._createPolyline=function(t,e,i){var n=t.getItemLayout(e),o=new pM({shape:{points:n}});this.add(o),this._updateCommonStl(t,e,i)},Jk.updateData=function(t,e,i){var n=t.hostModel;Mo(this.childAt(0),{shape:{points:t.getItemLayout(e)}},n,e),this._updateCommonStl(t,e,i)},Jk._updateCommonStl=function(t,e,i){var n=this.childAt(0),o=t.getItemModel(e),a=t.getItemVisual(e,"color"),s=i&&i.lineStyle,l=i&&i.hoverLineStyle;i&&!t.hasItemOption||(s=o.getModel("lineStyle").getLineStyle(),l=o.getModel("emphasis.lineStyle").getLineStyle()),n.useStyle(r({strokeNoScale:!0,fill:"none",stroke:a},s)),n.hoverStyle=l,co(this)},Jk.updateLayout=function(t,e){this.childAt(0).setShape("points",t.getItemLayout(e))},u(_g,tb);var Qk=wg.prototype;Qk.createLine=function(t,e,i){return new _g(t,e,i)},Qk.updateAnimationPoints=function(t,e){this._points=e;for(var i=[0],n=0,o=1;o=0&&!(n[r]<=e);r--);r=Math.min(r,o-2)}else{for(var r=a;re);r++);r=Math.min(r-1,o-2)}J(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}},u(wg,xg);var tP=Zn({shape:{polyline:!1,curveness:0,segs:[]},buildPath:function(t,e){var i=e.segs,n=e.curveness;if(e.polyline)for(r=0;r0){t.moveTo(i[r++],i[r++]);for(var a=1;a0){var c=(s+u)/2-(l-h)*n,d=(l+h)/2-(u-s)*n;t.quadraticCurveTo(c,d,u,h)}else t.lineTo(u,h)}},findDataIndex:function(t,e){var i=this.shape,n=i.segs,o=i.curveness;if(i.polyline)for(var a=0,r=0;r0)for(var l=n[r++],u=n[r++],h=1;h0){if(xn(l,u,(l+c)/2-(u-d)*o,(u+d)/2-(c-l)*o,c,d))return a}else if(vn(l,u,c,d))return a;a++}return-1}}),eP=bg.prototype;eP.isPersistent=function(){return!this._incremental},eP.updateData=function(t){this.group.removeAll();var e=new tP({rectHover:!0,cursor:"default"});e.setShape({segs:t.getLayout("linesPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},eP.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>5e5?(this._incremental||(this._incremental=new Hn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},eP.incrementalUpdate=function(t,e){var i=new tP;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))},eP.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},eP._setCommon=function(t,e,i){var n=e.hostModel;t.setShape({polyline:n.get("polyline"),curveness:n.get("lineStyle.curveness")}),t.useStyle(n.getModel("lineStyle").getLineStyle()),t.style.strokeNoScale=!0;var o=e.getVisual("color");o&&t.setStyle("stroke",o),t.setStyle("fill"),i||(t.seriesIndex=n.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var i=t.findDataIndex(e.offsetX,e.offsetY);i>0&&(t.dataIndex=i+t.__startIndex)}))},eP._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()};var iP={seriesType:"lines",plan:KI(),reset:function(t){var e=t.coordinateSystem,i=t.get("polyline"),n=t.pipelineContext.large;return{progress:function(o,a){var r=[];if(n){var s,l=o.end-o.start;if(i){for(var u=0,h=o.start;h0){var I=a(v)?s:l;v>0&&(v=v*S+b),x[_++]=I[M],x[_++]=I[M+1],x[_++]=I[M+2],x[_++]=I[M+3]*v*256}else _+=4}return c.putImageData(y,0,0),h},_getBrush:function(){var t=this._brushCanvas||(this._brushCanvas=iw()),e=this.pointSize+this.blurSize,i=2*e;t.width=i,t.height=i;var n=t.getContext("2d");return n.clearRect(0,0,i,i),n.shadowOffsetX=i,n.shadowBlur=this.blurSize,n.shadowColor="#000",n.beginPath(),n.arc(-e,e,this.pointSize,0,2*Math.PI,!0),n.closePath(),n.fill(),t},_getGradient:function(t,e,i){for(var n=this._gradientPixels,o=n[i]||(n[i]=new Uint8ClampedArray(1024)),a=[0,0,0,0],r=0,s=0;s<256;s++)e[i](s/255,!0,a),o[r++]=a[0],o[r++]=a[1],o[r++]=a[2],o[r++]=a[3];return o}},Hs({type:"heatmap",render:function(t,e,i){var n;e.eachComponent("visualMap",function(e){e.eachTargetSeries(function(i){i===t&&(n=e)})}),this.group.removeAll(),this._incrementalDisplayable=null;var o=t.coordinateSystem;"cartesian2d"===o.type||"calendar"===o.type?this._renderOnCartesianAndCalendar(t,i,0,t.getData().count()):Ag(o)&&this._renderOnGeo(o,t,n,i)},incrementalPrepareRender:function(t,e,i){this.group.removeAll()},incrementalRender:function(t,e,i,n){e.coordinateSystem&&this._renderOnCartesianAndCalendar(e,n,t.start,t.end,!0)},_renderOnCartesianAndCalendar:function(t,e,i,n,o){var r,s,l=t.coordinateSystem;if("cartesian2d"===l.type){var u=l.getAxis("x"),h=l.getAxis("y");r=u.getBandWidth(),s=h.getBandWidth()}for(var c=this.group,d=t.getData(),f=t.getModel("itemStyle").getItemStyle(["color"]),p=t.getModel("emphasis.itemStyle").getItemStyle(),g=t.getModel("label"),m=t.getModel("emphasis.label"),v=l.type,y="cartesian2d"===v?[d.mapDimension("x"),d.mapDimension("y"),d.mapDimension("value")]:[d.mapDimension("time"),d.mapDimension("value")],x=i;x=e.y&&t[1]<=e.y+e.height:i.contain(i.toLocalCoord(t[1]))&&t[0]>=e.y&&t[0]<=e.y+e.height},pointToData:function(t){var e=this.getAxis();return[e.coordToData(e.toLocalCoord(t["horizontal"===e.orient?0:1]))]},dataToPoint:function(t){var e=this.getAxis(),i=this.getRect(),n=[],o="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),n[o]=e.toGlobalCoord(e.dataToCoord(+t)),n[1-o]=0===o?i.y+i.height/2:i.x+i.width/2,n}},Ga.register("single",{create:function(t,e){var i=[];return t.eachComponent("singleAxis",function(n,o){var a=new $g(n,t,e);a.name="single_"+o,a.resize(n,e),n.coordinateSystem=a,i.push(a)}),t.eachSeries(function(e){if("singleAxis"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"singleAxis",index:e.get("singleAxisIndex"),id:e.get("singleAxisId")})[0];e.coordinateSystem=i&&i.coordinateSystem}}),i},dimensions:$g.prototype.dimensions});var hP=["axisLine","axisTickLabel","axisName"],cP=HD.extend({type:"singleAxis",axisPointerClass:"SingleAxisPointer",render:function(t,e,i,n){var o=this.group;o.removeAll();var a=Jg(t),r=new BD(t,a);d(hP,r.add,r),o.add(r.getGroup()),t.get("splitLine.show")&&this._splitLine(t),cP.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"),o=n.get("width"),a=n.get("color");a=a instanceof Array?a:[a];for(var r=t.coordinateSystem.getRect(),s=e.isHorizontal(),l=[],u=0,h=e.getTicksCoords({tickModel:i}),c=[],d=[],f=0;f=0)&&i({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})})},remove:function(t,e){gm(e.getZr(),"axisPointer"),xP.superApply(this._model,"remove",arguments)},dispose:function(t,e){gm("axisPointer",e),xP.superApply(this._model,"dispose",arguments)}}),_P=Bi(),wP=i,bP=m;(mm.prototype={_group:null,_lastGraphicKey:null,_handle:null,_dragging:!1,_lastValue:null,_lastStatus:null,_payloadInfo:null,animationThreshold:15,render:function(t,e,i,n){var o=e.get("value"),a=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=i,n||this._lastValue!==o||this._lastStatus!==a){this._lastValue=o,this._lastStatus=a;var r=this._group,s=this._handle;if(!a||"hide"===a)return r&&r.hide(),void(s&&s.hide());r&&r.show(),s&&s.show();var l={};this.makeElOption(l,o,t,e,i);var u=l.graphicKey;u!==this._lastGraphicKey&&this.clear(i),this._lastGraphicKey=u;var h=this._moveAnimation=this.determineAnimation(t,e);if(r){var c=v(vm,e,h);this.updatePointerEl(r,l,c,e),this.updateLabelEl(r,l,c,e)}else r=this._group=new tb,this.createPointerEl(r,l,t,e),this.createLabelEl(r,l,t,e),i.getZr().add(r);wm(r,e,!0),this._renderHandle(o)}},remove:function(t){this.clear(t)},dispose:function(t){this.clear(t)},determineAnimation:function(t,e){var i=e.get("animation"),n=t.axis,o="category"===n.type,a=e.get("snap");if(!a&&!o)return!1;if("auto"===i||null==i){var r=this.animationThreshold;if(o&&n.getBandWidth()>r)return!0;if(a){var s=Sh(t).seriesDataCount,l=n.getExtent();return Math.abs(l[0]-l[1])/s>r}return!1}return!0===i},makeElOption:function(t,e,i,n,o){},createPointerEl:function(t,e,i,n){var o=e.pointer;if(o){var a=_P(t).pointerEl=new RM[o.type](wP(e.pointer));t.add(a)}},createLabelEl:function(t,e,i,n){if(e.label){var o=_P(t).labelEl=new vM(wP(e.label));t.add(o),xm(o,n)}},updatePointerEl:function(t,e,i){var n=_P(t).pointerEl;n&&(n.setStyle(e.pointer.style),i(n,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,i,n){var o=_P(t).labelEl;o&&(o.setStyle(e.label.style),i(o,{shape:e.label.shape,position:e.label.position}),xm(o,n))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e=this._axisPointerModel,i=this._api.getZr(),n=this._handle,o=e.getModel("handle"),a=e.get("status");if(!o.get("show")||!a||"hide"===a)return n&&i.remove(n),void(this._handle=null);var r;this._handle||(r=!0,n=this._handle=ko(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){mw(t.event)},onmousedown:bP(this._onHandleDragMove,this,0,0),drift:bP(this._onHandleDragMove,this),ondragend:bP(this._onHandleDragEnd,this)}),i.add(n)),wm(n,e,!1);n.setStyle(o.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var s=o.get("size");y(s)||(s=[s,s]),n.attr("scale",[s[0]/2,s[1]/2]),Pr(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,r)}},_moveHandleToValue:function(t,e){vm(this._axisPointerModel,!e&&this._moveAnimation,this._handle,_m(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var i=this._handle;if(i){this._dragging=!0;var n=this.updateHandleTransform(_m(i),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=n,i.stopAnimation(),i.attr(_m(n)),_P(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 i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}}).constructor=mm,Xi(mm);var SP=mm.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.grid,s=n.get("type"),l=km(r,a).getOtherAxis(a).getGlobalExtent(),u=a.toGlobalCoord(a.dataToCoord(e,!0));if(s&&"none"!==s){var h=bm(n),c=MP[s](a,u,l,h);c.style=h,t.graphicKey=c.type,t.pointer=c}Am(e,t,Ch(r.model,i),i,n,o)},getHandleTransform:function(t,e,i){var n=Ch(e.axis.grid.model,e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:Tm(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.grid,r=o.getGlobalExtent(!0),s=km(a,o).getOtherAxis(o).getGlobalExtent(),l="x"===o.dim?0:1,u=t.position;u[l]+=e[l],u[l]=Math.min(r[1],u[l]),u[l]=Math.max(r[0],u[l]);var h=(s[1]+s[0])/2,c=[h,h];c[l]=u[l];return{position:u,rotation:t.rotation,cursorPoint:c,tooltipOption:[{verticalAlign:"middle"},{align:"center"}][l]}}}),MP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Pm(t));return qn({shape:o,style:n}),{type:"Line",shape:o}},shadow:function(t,e,i,n){var o=Math.max(1,t.getBandWidth()),a=i[1]-i[0];return{type:"Rect",shape:Cm([e-o/2,i[0]],[o,a],Pm(t))}}};HD.registerAxisPointerClass("CartesianAxisPointer",SP),Ps(function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!y(e)&&(t.axisPointer.link=[e])}}),Ns(zT.PROCESSOR.STATISTIC,function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=mh(t,e)}),Os({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},function(t,e,i){var n=t.currTrigger,o=[t.x,t.y],a=t,r=t.dispatchAction||m(i.dispatchAction,i),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){lm(o)&&(o=fP({seriesIndex:a.seriesIndex,dataIndex:a.dataIndex},e).point);var l=lm(o),u=a.axesInfo,h=s.axesInfo,c="leave"===n||lm(o),d={},f={},p={list:[],map:{}},g={showPointer:gP(em,f),showTooltip:gP(im,p)};pP(s.coordSysMap,function(t,e){var i=l||t.containPoint(o);pP(s.coordSysAxesInfo[e],function(t,e){var n=t.axis,a=rm(u,t);if(!c&&i&&(!u||a)){var r=a&&a.value;null!=r||l||(r=n.pointToData(o)),null!=r&&Qg(t,r,g,!1,d)}})});var v={};return pP(h,function(t,e){var i=t.linkGroup;i&&!f[e]&&pP(i.axesInfo,function(e,n){var o=f[n];if(e!==t&&o){var a=o.value;i.mapper&&(a=t.axis.scale.parse(i.mapper(a,sm(e),sm(t)))),v[t.key]=a}})}),pP(v,function(t,e){Qg(h[e],t,g,!0,d)}),nm(f,h,d),om(p,o,t,r),am(h,0,i),d}});var IP=["x","y"],TP=["width","height"],AP=mm.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.coordinateSystem,s=Om(r,1-Nm(a)),l=r.dataToPoint(e)[0],u=n.get("type");if(u&&"none"!==u){var h=bm(n),c=DP[u](a,l,s,h);c.style=h,t.graphicKey=c.type,t.pointer=c}Am(e,t,Jg(i),i,n,o)},getHandleTransform:function(t,e,i){var n=Jg(e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:Tm(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.coordinateSystem,r=Nm(o),s=Om(a,r),l=t.position;l[r]+=e[r],l[r]=Math.min(s[1],l[r]),l[r]=Math.max(s[0],l[r]);var u=Om(a,1-r),h=(u[1]+u[0])/2,c=[h,h];return c[r]=l[r],{position:l,rotation:t.rotation,cursorPoint:c,tooltipOption:{verticalAlign:"middle"}}}}),DP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Nm(t));return qn({shape:o,style:n}),{type:"Line",shape:o}},shadow:function(t,e,i,n){var o=t.getBandWidth(),a=i[1]-i[0];return{type:"Rect",shape:Cm([e-o/2,i[0]],[o,a],Nm(t))}}};HD.registerAxisPointerClass("SingleAxisPointer",AP),Fs({type:"single"});var CP=jI.extend({type:"series.themeRiver",dependencies:["singleAxis"],nameMap:null,init:function(t){CP.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()}},fixData:function(t){for(var e=t.length,i=f(zp().key(function(t){return t[2]}).entries(t),function(t){return{name:t.key,dataList:t.values}}),n=i.length,o=-1,a=-1,r=0;ro&&(o=s,a=r)}for(var l=0;lMath.PI/2?"right":"left"):x&&"center"!==x?"left"===x?(f=u.r0+y,p>Math.PI/2&&(x="right")):"right"===x&&(f=u.r-y,p>Math.PI/2&&(x="left")):(f=(u.r+u.r0)/2,x="center"),d.attr("style",{text:l,textAlign:x,textVerticalAlign:n("verticalAlign")||"middle",opacity:n("opacity")});var _=f*g+u.cx,w=f*m+u.cy;d.attr("position",[_,w]);var b=n("rotate"),S=0;"radial"===b?(S=-p)<-Math.PI/2&&(S+=Math.PI):"tangential"===b?(S=Math.PI/2-p)>Math.PI/2?S-=Math.PI:S<-Math.PI/2&&(S+=Math.PI):"number"==typeof b&&(S=b*Math.PI/180),d.attr("rotation",S)},NP._initEvents=function(t,e,i,n){t.off("mouseover").off("mouseout").off("emphasis").off("normal");var o=this,a=function(){o.onEmphasis(n)},r=function(){o.onNormal()};i.isAnimationEnabled()&&t.on("mouseover",a).on("mouseout",r).on("emphasis",a).on("normal",r).on("downplay",function(){o.onDownplay()}).on("highlight",function(){o.onHighlight()})},u(Vm,tb);Tr.extend({type:"sunburst",init:function(){},render:function(t,e,i,n){function o(i,n){if(c||!i||i.getValue()||(i=null),i!==l&&n!==l)if(n&&n.piece)i?(n.piece.updateData(!1,i,"normal",t,e),s.setItemGraphicEl(i.dataIndex,n.piece)):a(n);else if(i){var o=new Vm(i,t,e);h.add(o),s.setItemGraphicEl(i.dataIndex,o)}}function a(t){t&&t.piece&&(h.remove(t.piece),t.piece=null)}var r=this;this.seriesModel=t,this.api=i,this.ecModel=e;var s=t.getData(),l=s.tree.root,u=t.getViewRoot(),h=this.group,c=t.get("renderLabelForZeroData"),d=[];u.eachNode(function(t){d.push(t)});var f=this._oldChildren||[];if(function(t,e){function i(t){return t.getId()}function n(i,n){o(null==i?null:t[i],null==n?null:e[n])}0===t.length&&0===e.length||new Us(e,t,i,i).add(n).update(n).remove(v(n,null)).execute()}(d,f),function(i,n){if(n.depth>0){r.virtualPiece?r.virtualPiece.updateData(!1,i,"normal",t,e):(r.virtualPiece=new Vm(i,t,e),h.add(r.virtualPiece)),n.piece._onclickEvent&&n.piece.off("click",n.piece._onclickEvent);var o=function(t){r._rootToNode(n.parentNode)};n.piece._onclickEvent=o,r.virtualPiece.on("click",o)}else r.virtualPiece&&(h.remove(r.virtualPiece),r.virtualPiece=null)}(l,u),n&&n.highlight&&n.highlight.piece){var p=t.getShallow("highlightPolicy");n.highlight.piece.onEmphasis(p)}else if(n&&n.unhighlight){var g=this.virtualPiece;!g&&l.children.length&&(g=l.children[0].piece),g&&g.onNormal()}this._initEvents(),this._oldChildren=d},dispose:function(){},_initEvents:function(){var t=this,e=function(e){var i=!1;t.seriesModel.getViewRoot().eachNode(function(n){if(!i&&n.piece&&n.piece.childAt(0)===e.target){var o=n.getModel().get("nodeClick");if("rootToNode"===o)t._rootToNode(n);else if("link"===o){var a=n.getModel(),r=a.get("link");if(r){var s=a.get("target",!0)||"_blank";window.open(r,s)}}i=!0}})};this.group._onclickEvent&&this.group.off("click",this.group._onclickEvent),this.group.on("click",e),this.group._onclickEvent=e},_rootToNode:function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:"sunburstRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,o=t[1]-i.cy,a=Math.sqrt(n*n+o*o);return a<=i.r&&a>=i.r0}}});var OP="sunburstRootToNode";Os({type:OP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=sd(t,[OP],e);if(n){var o=e.getViewRoot();o&&(t.direction=ud(o,n.node)?"rollUp":"drillDown"),e.resetViewRoot(n.node)}})});var EP="sunburstHighlight";Os({type:EP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=sd(t,[EP],e);n&&(t.highlight=n.node)})});Os({type:"sunburstUnhighlight",update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){t.unhighlight=!0})});var RP=Math.PI/180;zs(v(rC,"sunburst")),Rs(v(function(t,e,i,n){e.eachSeriesByType(t,function(t){var e=t.get("center"),n=t.get("radius");y(n)||(n=[0,n]),y(e)||(e=[e,e]);var o=i.getWidth(),a=i.getHeight(),r=Math.min(o,a),s=Bo(e[0],o),l=Bo(e[1],a),u=Bo(n[0],r/2),h=Bo(n[1],r/2),c=-t.get("startAngle")*RP,f=t.get("minAngle")*RP,p=t.getData().tree.root,g=t.getViewRoot(),m=g.depth,v=t.get("sort");null!=v&&Zm(g,v);var x=0;d(g.children,function(t){!isNaN(t.getValue())&&x++});var _=g.getValue(),w=Math.PI/(_||x)*2,b=g.depth>0,S=g.height-(b?-1:1),M=(h-u)/(S||1),I=t.get("clockwise"),T=t.get("stillShowZeroSum"),A=I?1:-1,D=function(t,e){if(t){var i=e;if(t!==p){var n=t.getValue(),o=0===_&&T?w:n*w;on[1]&&n.reverse(),{coordSys:{type:"polar",cx:t.cx,cy:t.cy,r:n[1],r0:n[0]},api:{coord:m(function(n){var o=e.dataToRadius(n[0]),a=i.dataToAngle(n[1]),r=t.coordToPoint([o,a]);return r.push(o,a*Math.PI/180),r}),size:m(qm,t)}}},calendar:function(t){var e=t.getRect(),i=t.getRangeInfo();return{coordSys:{type:"calendar",x:e.x,y:e.y,width:e.width,height:e.height,cellWidth:t.getCellWidth(),cellHeight:t.getCellHeight(),rangeInfo:{start:i.start,end:i.end,weeks:i.weeks,dayCount:i.allDay}},api:{coord:function(e,i){return t.dataToPoint(e,i)}}}}};jI.extend({type:"series.custom",dependencies:["grid","polar","geo","singleAxis","calendar"],defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,useTransform:!0},getInitialData:function(t,e){return gl(this.getSource(),this)},getDataParams:function(t,e,i){var n=jI.prototype.getDataParams.apply(this,arguments);return i&&(n.info=i.info),n}}),Tr.extend({type:"custom",_data:null,render:function(t,e,i,n){var o=this._data,a=t.getData(),r=this.group,s=Qm(t,a,e,i);a.diff(o).add(function(e){ev(null,e,s(e,n),t,r,a)}).update(function(e,i){ev(o.getItemGraphicEl(i),e,s(e,n),t,r,a)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&r.remove(e)}).execute(),this._data=a},incrementalPrepareRender:function(t,e,i){this.group.removeAll(),this._data=null},incrementalRender:function(t,e,i,n,o){for(var a=e.getData(),r=Qm(e,a,i,n),s=t.start;s=0;l--)null==o[l]?o.splice(l,1):delete o[l].$action},_flatten:function(t,e,i){d(t,function(t){if(t){i&&(t.parentOption=i),e.push(t);var n=t.children;"group"===t.type&&n&&this._flatten(n,e,t),delete t.children}},this)},useElOptionsToUpdate:function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t}});Fs({type:"graphic",init:function(t,e){this._elMap=R(),this._lastGraphicModel},render:function(t,e,i){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t),this._relocate(t,i)},_updateElements:function(t){var e=t.useElOptionsToUpdate();if(e){var i=this._elMap,n=this.group;d(e,function(e){var o=e.$action,a=e.id,r=i.get(a),s=e.parentId,l=null!=s?i.get(s):n,u=e.style;"text"===e.type&&u&&(e.hv&&e.hv[1]&&(u.textVerticalAlign=u.textBaseline=null),!u.hasOwnProperty("textFill")&&u.fill&&(u.textFill=u.fill),!u.hasOwnProperty("textStroke")&&u.stroke&&(u.textStroke=u.stroke));var h=fv(e);o&&"merge"!==o?"replace"===o?(dv(r,i),cv(a,l,h,i)):"remove"===o&&dv(r,i):r?r.attr(h):cv(a,l,h,i);var c=i.get(a);c&&(c.__ecGraphicWidth=e.width,c.__ecGraphicHeight=e.height,yv(c,t))})}},_relocate:function(t,e){for(var i=t.option.elements,n=this.group,o=this._elMap,a=i.length-1;a>=0;a--){var r=i[a],s=o.get(r.id);if(s){var l=s.parent;ca(s,r,l===n?{width:e.getWidth(),height:e.getHeight()}:{width:l.__ecGraphicWidth||0,height:l.__ecGraphicHeight||0},null,{hv:r.hv,boundingMode:r.bounding})}}},_clear:function(){var t=this._elMap;t.each(function(e){dv(e,t)}),this._elMap=R()},dispose:function(){this._clear()}});var ZP=Gs({type:"legend.plain",dependencies:["series"],layoutMode:{type:"box",ignoreSize:!0},init:function(t,e,i){this.mergeDefaultAndTheme(t,i),t.selected=t.selected||{}},mergeOption:function(t){ZP.superCall(this,"mergeOption",t)},optionUpdated:function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,i=0;i=0},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",textStyle:{color:"#333"},selectedMode:!0,tooltip:{show:!1}}});Os("legendToggleSelect","legendselectchanged",v(xv,"toggleSelected")),Os("legendSelect","legendselected",v(xv,"select")),Os("legendUnSelect","legendunselected",v(xv,"unSelect"));var UP=v,XP=d,jP=tb,YP=Fs({type:"legend.plain",newlineDisabled:!1,init:function(){this.group.add(this._contentGroup=new jP),this._backgroundEl,this._isFirstRender=!0},getContentGroup:function(){return this._contentGroup},render:function(t,e,i){var n=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var o=t.get("align");o&&"auto"!==o||(o="right"===t.get("left")&&"vertical"===t.get("orient")?"right":"left"),this.renderInner(o,t,e,i);var a=t.getBoxLayoutParams(),s={width:i.getWidth(),height:i.getHeight()},l=t.get("padding"),u=ha(a,s,l),h=this.layoutInner(t,o,u,n),c=ha(r({width:h.width,height:h.height},a),s,l);this.group.attr("position",[c.x-h.x,c.y-h.y]),this.group.add(this._backgroundEl=wv(h,t))}},resetInner:function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl)},renderInner:function(t,e,i,n){var o=this.getContentGroup(),a=R(),r=e.get("selectedMode"),s=[];i.eachRawSeries(function(t){!t.get("legendHoverLink")&&s.push(t.id)}),XP(e.getData(),function(l,u){var h=l.get("name");if(this.newlineDisabled||""!==h&&"\n"!==h){var c=i.getSeriesByName(h)[0];if(!a.get(h))if(c){var d=c.getData(),f=d.getVisual("color");"function"==typeof f&&(f=f(c.getDataParams(0)));var p=d.getVisual("legendSymbol")||"roundRect",g=d.getVisual("symbol");this._createItem(h,u,l,e,p,g,t,f,r).on("click",UP(bv,h,n)).on("mouseover",UP(Sv,c.name,null,n,s)).on("mouseout",UP(Mv,c.name,null,n,s)),a.set(h,!0)}else i.eachRawSeries(function(i){if(!a.get(h)&&i.legendDataProvider){var o=i.legendDataProvider(),c=o.indexOfName(h);if(c<0)return;var d=o.getItemVisual(c,"color");this._createItem(h,u,l,e,"roundRect",null,t,d,r).on("click",UP(bv,h,n)).on("mouseover",UP(Sv,null,h,n,s)).on("mouseout",UP(Mv,null,h,n,s)),a.set(h,!0)}},this)}else o.add(new jP({newline:!0}))},this)},_createItem:function(t,e,i,n,o,r,s,l,u){var h=n.get("itemWidth"),c=n.get("itemHeight"),d=n.get("inactiveColor"),f=n.get("symbolKeepAspect"),p=n.isSelected(t),g=new jP,m=i.getModel("textStyle"),v=i.get("icon"),y=i.getModel("tooltip"),x=y.parentModel;if(o=v||o,g.add($l(o,0,0,h,c,p?l:d,null==f||f)),!v&&r&&(r!==o||"none"===r)){var _=.8*c;"none"===r&&(r="circle"),g.add($l(r,(h-_)/2,(c-_)/2,_,_,p?l:d,null==f||f))}var w="left"===s?h+5:-5,b=s,S=n.get("formatter"),M=t;"string"==typeof S&&S?M=S.replace("{name}",null!=t?t:""):"function"==typeof S&&(M=S(t)),g.add(new aM({style:go({},m,{text:M,x:w,y:c/2,textFill:p?m.getTextColor():d,textAlign:b,textVerticalAlign:"middle"})}));var I=new vM({shape:g.getBoundingRect(),invisible:!0,tooltip:y.get("show")?a({content:t,formatter:x.get("formatter",!0)||function(){return t},formatterParams:{componentType:"legend",legendIndex:n.componentIndex,name:t,$vars:["name"]}},y.option):null});return g.add(I),g.eachChild(function(t){t.silent=!0}),I.silent=!u,this.getContentGroup().add(g),co(g),g.__legendDataIndex=e,g},layoutInner:function(t,e,i){var n=this.getContentGroup();aI(t.get("orient"),n,t.get("itemGap"),i.width,i.height);var o=n.getBoundingRect();return n.attr("position",[-o.x,-o.y]),this.group.getBoundingRect()},remove:function(){this.getContentGroup().removeAll(),this._isFirstRender=!0}});Ns(function(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries(function(t){for(var i=0;ii[l],p=[-c.x,-c.y];n||(p[s]=o.position[s]);var g=[0,0],m=[-d.x,-d.y],v=A(t.get("pageButtonGap",!0),t.get("itemGap",!0));f&&("end"===t.get("pageButtonPosition",!0)?m[s]+=i[l]-d[l]:g[s]+=d[l]+v),m[1-s]+=c[u]/2-d[u]/2,o.attr("position",p),a.attr("position",g),r.attr("position",m);var y=this.group.getBoundingRect();if((y={x:0,y:0})[l]=f?i[l]:c[l],y[u]=Math.max(c[u],d[u]),y[h]=Math.min(0,d[h]+m[1-s]),a.__rectSize=i[l],f){var x={x:0,y:0};x[l]=Math.max(i[l]-d[l]-v,0),x[u]=y[u],a.setClipPath(new vM({shape:x})),a.__rectSize=x[l]}else r.eachChild(function(t){t.attr({invisible:!0,silent:!0})});var _=this._getPageInfo(t);return null!=_.pageIndex&&Mo(o,{position:_.contentPosition},!!f&&t),this._updatePageInfoView(t,_),y},_pageGo:function(t,e,i){var n=this._getPageInfo(e)[t];null!=n&&i.dispatchAction({type:"legendScroll",scrollDataIndex:n,legendId:e.id})},_updatePageInfoView:function(t,e){var i=this._controllerGroup;d(["pagePrev","pageNext"],function(n){var o=null!=e[n+"DataIndex"],a=i.childOfName(n);a&&(a.setStyle("fill",o?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),a.cursor=o?"pointer":"default")});var n=i.childOfName("pageText"),o=t.get("pageFormatter"),a=e.pageIndex,r=null!=a?a+1:0,s=e.pageCount;n&&o&&n.setStyle("text",_(o)?o.replace("{current}",r).replace("{total}",s):o({current:r,total:s}))},_getPageInfo:function(t){function e(t){if(t){var e=t.getBoundingRect(),i=e[l]+t.position[r];return{s:i,e:i+e[s],i:t.__legendDataIndex}}}function i(t,e){return t.e>=e&&t.s<=e+a}var n=t.get("scrollDataIndex",!0),o=this.getContentGroup(),a=this._containerGroup.__rectSize,r=t.getOrient().index,s=$P[r],l=JP[r],u=this._findTargetItemIndex(n),h=o.children(),c=h[u],d=h.length,f=d?1:0,p={contentPosition:o.position.slice(),pageCount:f,pageIndex:f-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!c)return p;var g=e(c);p.contentPosition[r]=-g.s;for(var m=u+1,v=g,y=g,x=null;m<=d;++m)(!(x=e(h[m]))&&y.e>v.s+a||x&&!i(x,v.s))&&(v=y.i>v.i?y:x)&&(null==p.pageNextDataIndex&&(p.pageNextDataIndex=v.i),++p.pageCount),y=x;for(var m=u-1,v=g,y=g,x=null;m>=-1;--m)(x=e(h[m]))&&i(y,x.s)||!(v.i=0;){var r=o.indexOf("|}"),s=o.substr(a+"{marker".length,r-a-"{marker".length);s.indexOf("sub")>-1?n["marker"+s]={textWidth:4,textHeight:4,textBorderRadius:2,textBackgroundColor:e[s],textOffset:[3,0]}:n["marker"+s]={textWidth:10,textHeight:10,textBorderRadius:5,textBackgroundColor:e[s]},a=(o=o.substr(r+1)).indexOf("{marker")}this.el=new aM({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 l=this;this.el.on("mouseover",function(){l._enterable&&(clearTimeout(l._hideTimeout),l._show=!0),l._inContent=!0}),this.el.on("mouseout",function(){l._enterable&&l._show&&l.hideLater(l._hideDelay),l._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.hide(),this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(m(this.hide,this),t)):this.hide())},isShow:function(){return this._show},getOuterSize:function(){return this.getSize()}};var nN=m,oN=d,aN=Bo,rN=new vM({shape:{x:-1,y:-1,width:2,height:2}});Fs({type:"tooltip",init:function(t,e){if(!U_.node){var i=t.getComponent("tooltip").get("renderMode");this._renderMode=Hi(i);var n;"html"===this._renderMode?(n=new Cv(e.getDom(),e),this._newLine="
"):(n=new Lv(e),this._newLine="\n"),this._tooltipContent=n}},render:function(t,e,i){if(!U_.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 t=this._tooltipModel.get("triggerOn");um("itemTooltip",this._api,nN(function(e,i,n){"none"!==t&&(t.indexOf(e)>=0?this._tryShow(i,n):"leave"===e&&this._hide(n))},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(){n.manuallyShowTip(t,e,i,{x:n._lastX,y:n._lastY})})}},manuallyShowTip:function(t,e,i,n){if(n.from!==this.uid&&!U_.node){var o=Pv(n,i);this._ticket="";var a=n.dataByCoordSys;if(n.tooltip&&null!=n.x&&null!=n.y){var r=rN;r.position=[n.x,n.y],r.update(),r.tooltip=n.tooltip,this._tryShow({offsetX:n.x,offsetY:n.y,target:r},o)}else if(a)this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,event:{},dataByCoordSys:n.dataByCoordSys,tooltipOption:n.tooltipOption},o);else if(null!=n.seriesIndex){if(this._manuallyAxisShowTip(t,e,i,n))return;var s=fP(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:{}},o)}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:{}},o))}},manuallyHideTip:function(t,e,i,n){var o=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&o.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,n.from!==this.uid&&this._hide(Pv(n,i))},_manuallyAxisShowTip:function(t,e,i,n){var o=n.seriesIndex,a=n.dataIndex,r=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=o&&null!=a&&null!=r){var s=e.getSeriesByIndex(o);if(s&&"axis"===(t=kv([s.getData().getItemModel(a),s,(s.coordinateSystem||{}).model,t])).get("trigger"))return i.dispatchAction({type:"updateAxisPointer",seriesIndex:o,dataIndex:a,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=m(e,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(e,i):e()},_showAxisTooltip:function(t,e){var i=this._ecModel,o=this._tooltipModel,a=[e.offsetX,e.offsetY],r=[],s=[],l=kv([e.tooltipOption,o]),u=this._renderMode,h=this._newLine,c={};oN(t,function(t){oN(t.dataByAxis,function(t){var e=i.getComponent(t.axisDim+"Axis",t.axisIndex),o=t.value,a=[];if(e&&null!=o){var l=Im(o,e.axis,i,t.seriesDataIndices,t.valueLabelOpt);d(t.seriesDataIndices,function(r){var h=i.getSeriesByIndex(r.seriesIndex),d=r.dataIndexInside,f=h&&h.getDataParams(d);if(f.axisDim=t.axisDim,f.axisIndex=t.axisIndex,f.axisType=t.axisType,f.axisId=t.axisId,f.axisValue=Ul(e.axis,o),f.axisValueLabel=l,f){s.push(f);var p,g=h.formatTooltip(d,!0,null,u);if(w(g)){p=g.html;var m=g.markers;n(c,m)}else p=g;a.push(p)}});var f=l;"html"!==u?r.push(a.join(h)):r.push((f?ea(f)+h:"")+a.join(h))}})},this),r.reverse(),r=r.join(this._newLine+this._newLine);var f=e.position;this._showOrMove(l,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(l,f,a[0],a[1],this._tooltipContent,s):this._showTooltipContent(l,r,s,Math.random(),a[0],a[1],f,void 0,c)})},_showSeriesItemTooltip:function(t,e,i){var n=this._ecModel,o=e.seriesIndex,a=n.getSeriesByIndex(o),r=e.dataModel||a,s=e.dataIndex,l=e.dataType,u=r.getData(),h=kv([u.getItemModel(s),r,a&&(a.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);w(g)?(d=g.html,f=g.markers):(d=g,f=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:o,from:this.uid})}},_showComponentItemTooltip:function(t,e,i){var n=e.tooltip;if("string"==typeof n){var o=n;n={content:o,formatter:o}}var a=new Po(n,this._tooltipModel,this._ecModel),r=a.get("content"),s=Math.random();this._showOrMove(a,function(){this._showTooltipContent(a,r,a.get("formatterParams")||{},s,t.offsetX,t.offsetY,t.position,e)}),i({type:"showTip",from:this.uid})},_showTooltipContent:function(t,e,i,n,o,a,r,s,l){if(this._ticket="",t.get("showContent")&&t.get("show")){var u=this._tooltipContent,h=t.get("formatter");r=r||t.get("position");var c=e;if(h&&"string"==typeof h)c=ia(h,i,!0);else if("function"==typeof h){var d=nN(function(e,n){e===this._ticket&&(u.setContent(n,l,t),this._updatePosition(t,r,o,a,u,i,s))},this);this._ticket=n,c=h(i,n,d)}u.setContent(c,l,t),u.show(t),this._updatePosition(t,r,o,a,u,i,s)}},_updatePosition:function(t,e,i,n,o,a,r){var s=this._api.getWidth(),l=this._api.getHeight();e=e||t.get("position");var u=o.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],a,o.el,d,{viewSize:[s,l],contentSize:u.slice()})),y(e))i=aN(e[0],s),n=aN(e[1],l);else if(w(e)){e.width=u[0],e.height=u[1];var f=ha(e,{width:s,height:l});i=f.x,n=f.y,h=null,c=null}else"string"==typeof e&&r?(i=(p=Ev(e,d,u))[0],n=p[1]):(i=(p=Nv(i,n,o,s,l,h?null:20,c?null:20))[0],n=p[1]);if(h&&(i-=Rv(h)?u[0]/2:"right"===h?u[0]:0),c&&(n-=Rv(c)?u[1]/2:"bottom"===c?u[1]:0),t.get("confine")){var p=Ov(i,n,o,s,l);i=p[0],n=p[1]}o.moveTo(i,n)},_updateContentNotChangedOnAxis:function(t){var e=this._lastDataByCoordSys,i=!!e&&e.length===t.length;return i&&oN(e,function(e,n){var o=e.dataByAxis||{},a=(t[n]||{}).dataByAxis||[];(i&=o.length===a.length)&&oN(o,function(t,e){var n=a[e]||{},o=t.seriesDataIndices||[],r=n.seriesDataIndices||[];(i&=t.value===n.value&&t.axisType===n.axisType&&t.axisId===n.axisId&&o.length===r.length)&&oN(o,function(t,e){var n=r[e];i&=t.seriesIndex===n.seriesIndex&&t.dataIndex===n.dataIndex})})}),this._lastDataByCoordSys=t,!!i},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){U_.node||(this._tooltipContent.hide(),gm("itemTooltip",e))}}),Os({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),Os({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){}),Gv.prototype={constructor:Gv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToRadius:iD.prototype.dataToCoord,radiusToData:iD.prototype.coordToData},u(Gv,iD);var sN=Bi();Fv.prototype={constructor:Fv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToAngle:iD.prototype.dataToCoord,angleToData:iD.prototype.coordToData,calculateCategoryInterval:function(){var t=this,e=t.getLabelModel(),i=t.scale,n=i.getExtent(),o=i.count();if(n[1]-n[0]<1)return 0;var a=n[0],r=t.dataToCoord(a+1)-t.dataToCoord(a),s=Math.abs(r),l=ke(a,e.getFont(),"center","top"),u=Math.max(l.height,7)/s;isNaN(u)&&(u=1/0);var h=Math.max(0,Math.floor(u)),c=sN(t.model),d=c.lastAutoInterval,f=c.lastTickCount;return null!=d&&null!=f&&Math.abs(d-h)<=1&&Math.abs(f-o)<=1&&d>h?h=d:(c.lastTickCount=o,c.lastAutoInterval=h),h}},u(Fv,iD);var lN=function(t){this.name=t||"",this.cx=0,this.cy=0,this._radiusAxis=new Gv,this._angleAxis=new Fv,this._radiusAxis.polar=this._angleAxis.polar=this};lN.prototype={type:"polar",axisPointerEnabled:!0,constructor:lN,dimensions:["radius","angle"],model:null,containPoint:function(t){var e=this.pointToCoord(t);return this._radiusAxis.contain(e[0])&&this._angleAxis.contain(e[1])},containData:function(t){return this._radiusAxis.containData(t[0])&&this._angleAxis.containData(t[1])},getAxis:function(t){return this["_"+t+"Axis"]},getAxes:function(){return[this._radiusAxis,this._angleAxis]},getAxesByScale:function(t){var e=[],i=this._angleAxis,n=this._radiusAxis;return i.scale.type===t&&e.push(i),n.scale.type===t&&e.push(n),e},getAngleAxis:function(){return this._angleAxis},getRadiusAxis:function(){return this._radiusAxis},getOtherAxis:function(t){var e=this._angleAxis;return t===e?this._radiusAxis:e},getBaseAxis:function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},getTooltipAxes:function(t){var e=null!=t&&"auto"!==t?this.getAxis(t):this.getBaseAxis();return{baseAxes:[e],otherAxes:[this.getOtherAxis(e)]}},dataToPoint:function(t,e){return this.coordToPoint([this._radiusAxis.dataToRadius(t[0],e),this._angleAxis.dataToAngle(t[1],e)])},pointToData:function(t,e){var i=this.pointToCoord(t);return[this._radiusAxis.radiusToData(i[0],e),this._angleAxis.angleToData(i[1],e)]},pointToCoord:function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=this.getAngleAxis(),o=n.getExtent(),a=Math.min(o[0],o[1]),r=Math.max(o[0],o[1]);n.inverse?a=r-360:r=a+360;var s=Math.sqrt(e*e+i*i);e/=s,i/=s;for(var l=Math.atan2(-i,e)/Math.PI*180,u=lr;)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]}};var uN=sI.extend({type:"polarAxis",axis:null,getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"polar",index:this.option.polarIndex,id:this.option.polarId})[0]}});n(uN.prototype,WA);var hN={angle:{startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:!1}},radius:{splitNumber:5}};PD("angle",uN,Wv,hN.angle),PD("radius",uN,Wv,hN.radius),Gs({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%"}});var cN={dimensions:lN.prototype.dimensions,create:function(t,e){var i=[];return t.eachComponent("polar",function(t,n){var o=new lN(n);o.update=Zv;var a=o.getRadiusAxis(),r=o.getAngleAxis(),s=t.findAxisModel("radiusAxis"),l=t.findAxisModel("angleAxis");Uv(a,s),Uv(r,l),Hv(o,t,e),i.push(o),t.coordinateSystem=o,o.model=t}),t.eachSeries(function(e){if("polar"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"polar",index:e.get("polarIndex"),id:e.get("polarId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}};Ga.register("polar",cN);var dN=["axisLine","axisLabel","axisTick","splitLine","splitArea"];HD.extend({type:"angleAxis",axisPointerClass:"PolarAxisPointer",render:function(t,e){if(this.group.removeAll(),t.get("show")){var n=t.axis,o=n.polar,a=o.getRadiusAxis().getExtent(),r=n.getTicksCoords(),s=f(n.getViewLabels(),function(t){return(t=i(t)).coord=n.dataToCoord(t.tickValue),t});Yv(s),Yv(r),d(dN,function(e){!t.get(e+".show")||n.scale.isBlank()&&"axisLine"!==e||this["_"+e](t,o,r,a,s)},this)}},_axisLine:function(t,e,i,n){var o=t.getModel("axisLine.lineStyle"),a=new rM({shape:{cx:e.cx,cy:e.cy,r:n[jv(e)]},style:o.getLineStyle(),z2:1,silent:!0});a.style.fill=null,this.group.add(a)},_axisTick:function(t,e,i,n){var o=t.getModel("axisTick"),a=(o.get("inside")?-1:1)*o.get("length"),s=n[jv(e)],l=f(i,function(t){return new xM({shape:Xv(e,[s,s+a],t.coord)})});this.group.add(NM(l,{style:r(o.getModel("lineStyle").getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")})}))},_axisLabel:function(t,e,i,n,o){var a=t.getCategories(!0),r=t.getModel("axisLabel"),s=r.get("margin");d(o,function(i,o){var l=r,u=i.tickValue,h=n[jv(e)],c=e.coordToPoint([h+s,i.coord]),d=e.cx,f=e.cy,p=Math.abs(c[0]-d)/h<.3?"center":c[0]>d?"left":"right",g=Math.abs(c[1]-f)/h<.3?"middle":c[1]>f?"top":"bottom";a&&a[u]&&a[u].textStyle&&(l=new Po(a[u].textStyle,r,r.ecModel));var m=new aM({silent:!0});this.group.add(m),go(m.style,l,{x:c[0],y:c[1],textFill:l.getTextColor()||t.get("axisLine.lineStyle.color"),text:i.formattedLabel,textAlign:p,textVerticalAlign:g})},this)},_splitLine:function(t,e,i,n){var o=t.getModel("splitLine").getModel("lineStyle"),a=o.get("color"),s=0;a=a instanceof Array?a:[a];for(var l=[],u=0;u=0?"p":"n",M=y;v&&(n[r][b]||(n[r][b]={p:y,n:y}),M=n[r][b][S]);var I,T,A,D;if("radius"===h.dim){var C=h.dataToRadius(w)-y,L=a.dataToAngle(b);Math.abs(C)=0},IN.findTargetInfo=function(t,e){for(var i=this._targetInfoList,n=dy(e,t),o=0;o=0||wN(n,t.getAxis("y").model)>=0)&&a.push(t)}),e.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:a[0],coordSyses:a,getPanelRect:DN.grid,xAxisDeclared:r[t.id],yAxisDeclared:s[t.id]})}))},geo:function(t,e){_N(t.geoModels,function(t){var i=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:i,coordSyses:[i],getPanelRect:DN.geo})})}},AN=[function(t,e){var i=t.xAxisModel,n=t.yAxisModel,o=t.gridModel;return!o&&i&&(o=i.axis.grid.model),!o&&n&&(o=n.axis.grid.model),o&&o===e.gridModel},function(t,e){var i=t.geoModel;return i&&i===e.geoModel}],DN={grid:function(){return this.coordSys.grid.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(To(t)),e}},CN={lineX:bN(fy,0),lineY:bN(fy,1),rect:function(t,e,i){var n=e[SN[t]]([i[0][0],i[1][0]]),o=e[SN[t]]([i[0][1],i[1][1]]),a=[cy([n[0],o[0]]),cy([n[1],o[1]])];return{values:a,xyMinMax:a}},polygon:function(t,e,i){var n=[[1/0,-1/0],[1/0,-1/0]];return{values:f(i,function(i){var o=e[SN[t]](i);return n[0][0]=Math.min(n[0][0],o[0]),n[1][0]=Math.min(n[1][0],o[1]),n[0][1]=Math.max(n[0][1],o[0]),n[1][1]=Math.max(n[1][1],o[1]),o}),xyMinMax:n}}},LN={lineX:bN(py,0),lineY:bN(py,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,e,i){return f(t,function(t,n){return[t[0]-i[0]*e[n][0],t[1]-i[1]*e[n][1]]})}},kN=["inBrush","outOfBrush"],PN="__ecBrushSelect",NN="__ecInBrushSelectEvent",ON=zT.VISUAL.BRUSH;Rs(ON,function(t,e,i){t.eachComponent({mainType:"brush"},function(e){i&&"takeGlobalCursor"===i.type&&e.setBrushOption("brush"===i.key?i.brushOption:{brushType:!1}),(e.brushTargetManager=new hy(e.option,t)).setInputRanges(e.areas,t)})}),zs(ON,function(t,e,n){var o,a,s=[];t.eachComponent({mainType:"brush"},function(e,n){function l(t){return"all"===m||v[t]}function u(t){return!!t.length}function h(t,e){var i=t.coordinateSystem;w|=i.hasAxisBrushed(),l(e)&&i.eachActiveState(t.getData(),function(t,e){"active"===t&&(x[e]=1)})}function c(i,n,o){var a=_y(i);if(a&&!wy(e,n)&&(d(b,function(n){a[n.brushType]&&e.brushTargetManager.controlSeries(n,i,t)&&o.push(n),w|=u(o)}),l(n)&&u(o))){var r=i.getData();r.each(function(t){xy(a,o,r,t)&&(x[t]=1)})}}var p={brushId:e.id,brushIndex:n,brushName:e.name,areas:i(e.areas),selected:[]};s.push(p);var g=e.option,m=g.brushLink,v=[],x=[],_=[],w=0;n||(o=g.throttleType,a=g.throttleDelay);var b=f(e.areas,function(t){return by(r({boundingRect:EN[t.brushType](t)},t))}),S=ty(e.option,kN,function(t){t.mappingMethod="fixed"});y(m)&&d(m,function(t){v[t]=1}),t.eachSeries(function(t,e){var i=_[e]=[];"parallel"===t.subType?h(t,e):c(t,e,i)}),t.eachSeries(function(t,e){var i={seriesId:t.id,seriesIndex:e,seriesName:t.name,dataIndex:[]};p.selected.push(i);var n=_y(t),o=_[e],a=t.getData(),r=l(e)?function(t){return x[t]?(i.dataIndex.push(a.getRawIndex(t)),"inBrush"):"outOfBrush"}:function(t){return xy(n,o,a,t)?(i.dataIndex.push(a.getRawIndex(t)),"inBrush"):"outOfBrush"};(l(e)?w:u(o))&&iy(kN,S,a,r)})}),vy(e,o,a,s,n)});var EN={lineX:B,lineY:B,rect:function(t){return Sy(t.range)},polygon:function(t){for(var e,i=t.range,n=0,o=i.length;ne[0][1]&&(e[0][1]=a[0]),a[1]e[1][1]&&(e[1][1]=a[1])}return e&&Sy(e)}},RN=["#ddd"];Gs({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&&ey(i,t,["inBrush","outOfBrush"]);var n=i.inBrush=i.inBrush||{};i.outOfBrush=i.outOfBrush||{color:RN},n.hasOwnProperty("liftZ")||(n.liftZ=5)},setAreas:function(t){t&&(this.areas=f(t,function(t){return My(this.option,t)},this))},setBrushOption:function(t){this.brushOption=My(this.option,t),this.brushType=this.brushOption.brushType}});Fs({type:"brush",init:function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new Rf(e.getZr())).on("brush",m(this._onBrush,this)).mount()},render:function(t){return this.model=t,Iy.apply(this,arguments)},updateTransform:Iy,updateView:Iy,dispose:function(){this._brushController.dispose()},_onBrush:function(t,e){var n=this.model.id;this.model.brushTargetManager.setOutputRanges(t,this.ecModel),(!e.isEnd||e.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:n,areas:i(t),$from:n})}}),Os({type:"brush",event:"brush"},function(t,e){e.eachComponent({mainType:"brush",query:t},function(e){e.setAreas(t.areas)})}),Os({type:"brushSelect",event:"brushSelected",update:"none"},function(){});var zN={},BN=aT.toolbox.brush;Dy.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:i(BN.title)};var VN=Dy.prototype;VN.render=VN.updateView=function(t,e,i){var n,o,a;e.eachComponent({mainType:"brush"},function(t){n=t.brushType,o=t.brushOption.brushMode||"single",a|=t.areas.length}),this._brushType=n,this._brushMode=o,d(t.get("type",!0),function(e){t.setIconStatus(e,("keep"===e?"multiple"===o:"clear"===e?a:e===n)?"emphasis":"normal")})},VN.getIcons=function(){var t=this.model,e=t.get("icon",!0),i={};return d(t.get("type",!0),function(t){e[t]&&(i[t]=e[t])}),i},VN.onclick=function(t,e,i){var n=this._brushType,o=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"===o?"single":"multiple":o}})},Ty("brush",Dy),Ps(function(t,e){var i=t&&t.brush;if(y(i)||(i=i?[i]:[]),i.length){var n=[];d(i,function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(n=n.concat(e))});var o=t&&t.toolbox;y(o)&&(o=o[0]),o||(o={feature:{}},t.toolbox=[o]);var a=o.feature||(o.feature={}),r=a.brush||(a.brush={}),s=r.type||(r.type=[]);s.push.apply(s,n),Jv(s),e&&!s.length&&s.push.apply(s,vN)}});Cy.prototype={constructor:Cy,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=jo(t)).getFullYear(),i=t.getMonth()+1;i=i<10?"0"+i:i;var n=t.getDate();n=n<10?"0"+n:n;var o=t.getDay();return o=Math.abs((o+7-this.getFirstDayOfWeek())%7),{y:e,m:i,d:n,day:o,time:t.getTime(),formatedDate:e+"-"+i+"-"+n,date:t}},getNextNDay:function(t,e){return 0===(e=e||0)?this.getDateInfo(t):((t=new Date(this.getDateInfo(t).time)).setDate(t.getDate()+e),this.getDateInfo(t))},update:function(t,e){function i(t,e){return null!=t[e]&&"auto"!==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 n=this._rangeInfo.weeks||1,o=["width","height"],a=this._model.get("cellSize").slice(),r=this._model.getBoxLayoutParams(),s="horizontal"===this._orient?[n,7]:[7,n];d([0,1],function(t){i(a,t)&&(r[o[t]]=a[t]*s[t])});var l={width:e.getWidth(),height:e.getHeight()},u=this._rect=ha(r,l);d([0,1],function(t){i(a,t)||(a[t]=u[o[t]]/s[t])}),this._sw=a[0],this._sh=a[1]},dataToPoint:function(t,e){y(t)&&(t=t[0]),null==e&&(e=!0);var i=this.getDateInfo(t),n=this._rangeInfo,o=i.formatedDate;if(e&&!(i.time>=n.start.time&&i.timea.end.time&&t.reverse(),t},_getRangeInfo:function(t){var e;(t=[this.getDateInfo(t[0]),this.getDateInfo(t[1])])[0].time>t[1].time&&(e=!0,t.reverse());var i=Math.floor(t[1].time/864e5)-Math.floor(t[0].time/864e5)+1,n=new Date(t[0].time),o=n.getDate(),a=t[1].date.getDate();if(n.setDate(o+i-1),n.getDate()!==a)for(var r=n.getTime()-t[1].time>0?1:-1;n.getDate()!==a&&(n.getTime()-t[1].time)*r>0;)i-=r,n.setDate(o+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&&en.lweek)return!1;var o=7*(t-1)-n.fweek+e,a=new Date(n.start.time);return a.setDate(n.start.d+o),this.getDateInfo(a)}},Cy.dimensions=Cy.prototype.dimensions,Cy.getDimensionsInfo=Cy.prototype.getDimensionsInfo,Cy.create=function(t,e){var i=[];return t.eachComponent("calendar",function(n){var o=new Cy(n,t,e);i.push(o),n.coordinateSystem=o}),t.eachSeries(function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("calendarIndex")||0])}),i},Ga.register("calendar",Cy);var GN=sI.extend({type:"calendar",coordinateSystem:null,defaultOption:{zlevel:0,z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",nameMap:"en",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",nameMap:"en",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},init:function(t,e,i,n){var o=pa(t);GN.superApply(this,"init",arguments),ky(t,o)},mergeOption:function(t,e){GN.superApply(this,"mergeOption",arguments),ky(this.option,t)}}),FN={EN:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CN:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},WN={EN:["S","M","T","W","T","F","S"],CN:["日","一","二","三","四","五","六"]};Fs({type:"calendar",_tlpoints:null,_blpoints:null,_firstDayOfMonth:null,_firstDayPoints:null,render:function(t,e,i){var n=this.group;n.removeAll();var o=t.coordinateSystem,a=o.getRangeInfo(),r=o.getOrient();this._renderDayRect(t,a,n),this._renderLines(t,a,r,n),this._renderYearText(t,a,r,n),this._renderMonthText(t,r,n),this._renderWeekText(t,a,r,n)},_renderDayRect:function(t,e,i){for(var n=t.coordinateSystem,o=t.getModel("itemStyle").getItemStyle(),a=n.getCellWidth(),r=n.getCellHeight(),s=e.start.time;s<=e.end.time;s=n.getNextNDay(s,1).time){var l=n.dataToRect([s],!1).tl,u=new vM({shape:{x:l[0],y:l[1],width:a,height:r},cursor:"default",style:o});i.add(u)}},_renderLines:function(t,e,i,n){function o(e){a._firstDayOfMonth.push(r.getDateInfo(e)),a._firstDayPoints.push(r.dataToRect([e],!1).tl);var o=a._getLinePointsOfOneWeek(t,e,i);a._tlpoints.push(o[0]),a._blpoints.push(o[o.length-1]),l&&a._drawSplitline(o,s,n)}var a=this,r=t.coordinateSystem,s=t.getModel("splitLine.lineStyle").getLineStyle(),l=t.get("splitLine.show"),u=s.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var h=e.start,c=0;h.time<=e.end.time;c++){o(h.formatedDate),0===c&&(h=r.getDateInfo(e.start.y+"-"+e.start.m));var d=h.date;d.setMonth(d.getMonth()+1),h=r.getDateInfo(d)}o(r.getNextNDay(e.end.time,1).formatedDate),l&&this._drawSplitline(a._getEdgesPoints(a._tlpoints,u,i),s,n),l&&this._drawSplitline(a._getEdgesPoints(a._blpoints,u,i),s,n)},_getEdgesPoints:function(t,e,i){var n=[t[0].slice(),t[t.length-1].slice()],o="horizontal"===i?0:1;return n[0][o]=n[0][o]-e/2,n[1][o]=n[1][o]+e/2,n},_drawSplitline:function(t,e,i){var n=new pM({z2:20,shape:{points:t},style:e});i.add(n)},_getLinePointsOfOneWeek:function(t,e,i){var n=t.coordinateSystem;e=n.getDateInfo(e);for(var o=[],a=0;a<7;a++){var r=n.getNextNDay(e.time,a),s=n.dataToRect([r.time],!1);o[2*r.day]=s.tl,o[2*r.day+1]=s["horizontal"===i?"bl":"tr"]}return o},_formatterLabel:function(t,e){return"string"==typeof t&&t?na(t,e):"function"==typeof t?t(e):e.nameMap},_yearTextPositionControl:function(t,e,i,n,o){e=e.slice();var a=["center","bottom"];"bottom"===n?(e[1]+=o,a=["center","top"]):"left"===n?e[0]-=o:"right"===n?(e[0]+=o,a=["center","top"]):e[1]-=o;var r=0;return"left"!==n&&"right"!==n||(r=Math.PI/2),{rotation:r,position:e,style:{textAlign:a[0],textVerticalAlign:a[1]}}},_renderYearText:function(t,e,i,n){var o=t.getModel("yearLabel");if(o.get("show")){var a=o.get("margin"),r=o.get("position");r||(r="horizontal"!==i?"top":"left");var s=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],l=(s[0][0]+s[1][0])/2,u=(s[0][1]+s[1][1])/2,h="horizontal"===i?0:1,c={top:[l,s[h][1]],bottom:[l,s[1-h][1]],left:[s[1-h][0],u],right:[s[h][0],u]},d=e.start.y;+e.end.y>+e.start.y&&(d=d+"-"+e.end.y);var f=o.get("formatter"),p={start:e.start.y,end:e.end.y,nameMap:d},g=this._formatterLabel(f,p),m=new aM({z2:30});go(m.style,o,{text:g}),m.attr(this._yearTextPositionControl(m,c[r],i,r,a)),n.add(m)}},_monthTextPositionControl:function(t,e,i,n,o){var a="left",r="top",s=t[0],l=t[1];return"horizontal"===i?(l+=o,e&&(a="center"),"start"===n&&(r="bottom")):(s+=o,e&&(r="middle"),"start"===n&&(a="right")),{x:s,y:l,textAlign:a,textVerticalAlign:r}},_renderMonthText:function(t,e,i){var n=t.getModel("monthLabel");if(n.get("show")){var o=n.get("nameMap"),r=n.get("margin"),s=n.get("position"),l=n.get("align"),u=[this._tlpoints,this._blpoints];_(o)&&(o=FN[o.toUpperCase()]||[]);var h="start"===s?0:1,c="horizontal"===e?0:1;r="start"===s?-r:r;for(var d="center"===l,f=0;f=r[0]&&t<=r[1]}if(t===this._dataZoomModel){var n=this._dimName,o=this.getTargetSeriesModels(),a=t.get("filterMode"),r=this._valueWindow;"none"!==a&&UN(o,function(t){var e=t.getData(),o=e.mapDimension(n,!0);o.length&&("weakFilter"===a?e.filterSelf(function(t){for(var i,n,a,s=0;sr[1];if(u&&!h&&!c)return!0;u&&(a=!0),h&&(i=!0),c&&(n=!0)}return a&&i&&n}):UN(o,function(n){if("empty"===a)t.setData(e.map(n,function(t){return i(t)?t:NaN}));else{var o={};o[n]=r,e.selectRange(o)}}),UN(o,function(t){e.setApproximateExtent(r,t)}))})}}};var YN=d,qN=ZN,KN=Gs({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=By(t);this.mergeDefaultAndTheme(t,i),this.doInit(n)},mergeOption:function(t){var e=By(t);n(this.option,t,!0),this.doInit(e)},doInit:function(t){var e=this.option;U_.canvasSupported||(e.realtime=!1),this._setDefaultThrottle(t),Vy(this,t),YN([["start","startValue"],["end","endValue"]],function(t,i){"value"===this._rangePropMode[i]&&(e[t[0]]=null)},this),this.textStyleModel=this.getModel("textStyle"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var t=this._axisProxies;this.eachTargetAxis(function(e,i,n,o){var a=this.dependentModels[e.axis][i],r=a.__dzAxisProxy||(a.__dzAxisProxy=new jN(e.name,i,this,o));t[e.name+"_"+i]=r},this)},_resetTarget:function(){var t=this.option,e=this._judgeAutoMode();qN(function(e){var i=e.axisIndex;t[i]=Di(t[i])},this),"axisIndex"===e?this._autoSetAxisIndex():"orient"===e&&this._autoSetOrient()},_judgeAutoMode:function(){var t=this.option,e=!1;qN(function(i){null!=t[i.axisIndex]&&(e=!0)},this);var i=t.orient;return null==i&&e?"orient":e?void 0:(null==i&&(t.orient="horizontal"),"axisIndex")},_autoSetAxisIndex:function(){var t=!0,e=this.get("orient",!0),i=this.option,n=this.dependentModels;if(t){var o="vertical"===e?"y":"x";n[o+"Axis"].length?(i[o+"AxisIndex"]=[0],t=!1):YN(n.singleAxis,function(n){t&&n.get("orient",!0)===e&&(i.singleAxisIndex=[n.componentIndex],t=!1)})}t&&qN(function(e){if(t){var n=[],o=this.dependentModels[e.axis];if(o.length&&!n.length)for(var a=0,r=o.length;a0?100:20}},getFirstTargetAxisModel:function(){var t;return qN(function(e){if(null==t){var i=this.get(e.axisIndex);i.length&&(t=this.dependentModels[e.axis][i[0]])}},this),t},eachTargetAxis:function(t,e){var i=this.ecModel;qN(function(n){YN(this.get(n.axisIndex),function(o){t.call(e,n,o,this,i)},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(t,e){var i=this.option;YN([["start","startValue"],["end","endValue"]],function(e){null==t[e[0]]&&null==t[e[1]]||(i[e[0]]=t[e[0]],i[e[1]]=t[e[1]])},this),!e&&Vy(this,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()}}),$N=YI.extend({type:"dataZoom",render:function(t,e,i,n){this.dataZoomModel=t,this.ecModel=e,this.api=i},getTargetCoordInfo:function(){function t(t,e,i,n){for(var o,a=0;a0&&e%g)p+=f;else{var i=null==t||isNaN(t)||""===t,n=i?0:QN(t,a,u,!0);i&&!l&&e?(c.push([c[c.length-1][0],0]),d.push([d[d.length-1][0],0])):!i&&l&&(c.push([p,0]),d.push([p,0])),c.push([p,n]),d.push([p,n]),p+=f,l=i}});var m=this.dataZoomModel;this._displayables.barGroup.add(new fM({shape:{points:c},style:r({fill:m.get("dataBackgroundColor")},m.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new pM({shape:{points:d},style:m.getModel("dataBackground.lineStyle").getLineStyle(),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(!1!==e){var i,n=this.ecModel;return t.eachTargetAxis(function(o,a){d(t.getAxisProxy(o.name,a).getTargetSeriesModels(),function(t){if(!(i||!0!==e&&l(aO,t.get("type"))<0)){var r,s=n.getComponent(o.axis,a).axis,u=Gy(o.name),h=t.coordinateSystem;null!=u&&h.getOtherAxis&&(r=h.getOtherAxis(s).inverse),u=t.getData().mapDimension(u),i={thisAxis:s,series:t,thisDim:o.name,otherDim:u,otherAxisInverse:r}}},this)},this),i}},_renderHandle:function(){var t=this._displayables,e=t.handles=[],i=t.handleLabels=[],n=this._displayables.barGroup,o=this._size,a=this.dataZoomModel;n.add(t.filler=new JN({draggable:!0,cursor:Fy(this._orient),drift:eO(this._onDragMove,this,"all"),onmousemove:function(t){mw(t.event)},ondragstart:eO(this._showDataInfo,this,!0),ondragend:eO(this._onDragEnd,this),onmouseover:eO(this._showDataInfo,this,!0),onmouseout:eO(this._showDataInfo,this,!1),style:{fill:a.get("fillerColor"),textPosition:"inside"}})),n.add(new JN(Kn({silent:!0,shape:{x:0,y:0,width:o[0],height:o[1]},style:{stroke:a.get("dataBackgroundColor")||a.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}}))),iO([0,1],function(t){var o=ko(a.get("handleIcon"),{cursor:Fy(this._orient),draggable:!0,drift:eO(this._onDragMove,this,t),onmousemove:function(t){mw(t.event)},ondragend:eO(this._onDragEnd,this),onmouseover:eO(this._showDataInfo,this,!0),onmouseout:eO(this._showDataInfo,this,!1)},{x:-1,y:0,width:2,height:2}),r=o.getBoundingRect();this._handleHeight=Bo(a.get("handleSize"),this._size[1]),this._handleWidth=r.width/r.height*this._handleHeight,o.setStyle(a.getModel("handleStyle").getItemStyle());var s=a.get("handleColor");null!=s&&(o.style.fill=s),n.add(e[t]=o);var l=a.textStyleModel;this.group.add(i[t]=new aM({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textVerticalAlign:"middle",textAlign:"center",textFill:l.getTextColor(),textFont:l.getFont()},z2:10}))},this)},_resetInterval:function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[QN(t[0],[0,100],e,!0),QN(t[1],[0,100],e,!0)]},_updateInterval:function(t,e){var i=this.dataZoomModel,n=this._handleEnds,o=this._getViewExtent(),a=i.findRepresentativeAxisProxy().getMinMaxSpan(),r=[0,100];qL(e,n,o,i.get("zoomLock")?"all":t,null!=a.minSpan?QN(a.minSpan,r,o,!0):null,null!=a.maxSpan?QN(a.maxSpan,r,o,!0):null);var s=this._range,l=this._range=tO([QN(n[0],o,r,!0),QN(n[1],o,r,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},_updateView:function(t){var e=this._displayables,i=this._handleEnds,n=tO(i.slice()),o=this._size;iO([0,1],function(t){var n=e.handles[t],a=this._handleHeight;n.attr({scale:[a/2,a/2],position:[i[t],o[1]/2-a/2]})},this),e.filler.setShape({x:n[0],y:0,width:n[1]-n[0],height:o[1]}),this._updateDataInfo(t)},_updateDataInfo:function(t){function e(t){var e=To(n.handles[t].parent,this.group),i=Do(0===t?"right":"left",e),s=this._handleWidth/2+oO,l=Ao([c[t]+(0===t?-s:s),this._size[1]/2],e);o[t].setStyle({x:l[0],y:l[1],textVerticalAlign:a===nO?"middle":i,textAlign:a===nO?i:"center",text:r[t]})}var i=this.dataZoomModel,n=this._displayables,o=n.handleLabels,a=this._orient,r=["",""];if(i.get("showDetail")){var s=i.findRepresentativeAxisProxy();if(s){var l=s.getAxisModel().axis,u=this._range,h=t?s.calculateDataWindow({start:u[0],end:u[1]}).valueWindow:s.getDataValueWindow();r=[this._formatLabel(h[0],l),this._formatLabel(h[1],l)]}}var c=tO(this._handleEnds.slice());e.call(this,0),e.call(this,1)},_formatLabel:function(t,e){var i=this.dataZoomModel,n=i.get("labelFormatter"),o=i.get("labelPrecision");null!=o&&"auto"!==o||(o=e.getPixelPrecision());var a=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel(Math.round(t)):t.toFixed(Math.min(o,20));return x(n)?n(t,a):_(n)?n.replace("{value}",a):a},_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=Ao([e,i],this._displayables.barGroup.getLocalTransform(),!0),o=this._updateInterval(t,n[0]),a=this.dataZoomModel.get("realtime");this._updateView(!a),o&&a&&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,o=(n[0]+n[1])/2,a=this._updateInterval("all",i[0]-o);this._updateView(),a&&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 t;if(iO(this.getTargetCoordInfo(),function(e){if(!t&&e.length){var i=e[0].model.coordinateSystem;t=i.getRect&&i.getRect()}}),!t){var e=this.api.getWidth(),i=this.api.getHeight();t={x:.2*e,y:.2*i,width:.6*e,height:.6*i}}return t}});KN.extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}});var sO="\0_ec_dataZoom_roams",lO=m,uO=$N.extend({type:"dataZoom.inside",init:function(t,e){this._range},render:function(t,e,i,n){uO.superApply(this,"render",arguments),this._range=t.getPercentRange(),d(this.getTargetCoordInfo(),function(e,n){var o=f(e,function(t){return Zy(t.model)});d(e,function(e){var a=e.model,r={};d(["pan","zoom","scrollMove"],function(t){r[t]=lO(hO[t],this,e,n)},this),Wy(i,{coordId:Zy(a),allCoordIds:o,containsPoint:function(t,e,i){return a.coordinateSystem.containPoint([e,i])},dataZoomId:t.id,dataZoomModel:t,getRange:r})},this)},this)},dispose:function(){Hy(this.api,this.dataZoomModel.id),uO.superApply(this,"dispose",arguments),this._range=null}}),hO={zoom:function(t,e,i,n){var o=this._range,a=o.slice(),r=t.axisModels[0];if(r){var s=cO[e](null,[n.originX,n.originY],r,i,t),l=(s.signal>0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(a[1]-a[0])+a[0],u=Math.max(1/n.scale,0);a[0]=(a[0]-l)*u+l,a[1]=(a[1]-l)*u+l;var h=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return qL(0,a,[0,100],0,h.minSpan,h.maxSpan),this._range=a,o[0]!==a[0]||o[1]!==a[1]?a:void 0}},pan:Ky(function(t,e,i,n,o,a){var r=cO[n]([a.oldX,a.oldY],[a.newX,a.newY],e,o,i);return r.signal*(t[1]-t[0])*r.pixel/r.pixelLength}),scrollMove:Ky(function(t,e,i,n,o,a){return cO[n]([0,0],[a.scrollDelta,a.scrollDelta],e,o,i).signal*(t[1]-t[0])*a.scrollDelta})},cO={grid:function(t,e,i,n,o){var a=i.axis,r={},s=o.model.coordinateSystem.getRect();return t=t||[0,0],"x"===a.dim?(r.pixel=e[0]-t[0],r.pixelLength=s.width,r.pixelStart=s.x,r.signal=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=s.height,r.pixelStart=s.y,r.signal=a.inverse?-1:1),r},polar:function(t,e,i,n,o){var a=i.axis,r={},s=o.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=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=u[1]-u[0],r.pixelStart=u[0],r.signal=a.inverse?-1:1),r},singleAxis:function(t,e,i,n,o){var a=i.axis,r=o.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===a.orient?(s.pixel=e[0]-t[0],s.pixelLength=r.width,s.pixelStart=r.x,s.signal=a.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=r.height,s.pixelStart=r.y,s.signal=a.inverse?-1:1),s}};Ns({getTargetSeries:function(t){var e=R();return t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,i,n){d(n.getAxisProxy(t.name,i).getTargetSeriesModels(),function(t){e.set(t.uid,t)})})}),e},modifyOutputEnd:!0,overallReset:function(t,e){t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,i,n){n.getAxisProxy(t.name,i).reset(n,e)}),t.eachTargetAxis(function(t,i,n){n.getAxisProxy(t.name,i).filterData(n,e)})}),t.eachComponent("dataZoom",function(t){var e=t.findRepresentativeAxisProxy(),i=e.getDataPercentWindow(),n=e.getDataValueWindow();t.setRawRange({start:i[0],end:i[1],startValue:n[0],endValue:n[1]},!0)})}}),Os("dataZoom",function(t,e){var i=Ny(m(e.eachComponent,e,"dataZoom"),ZN,function(t,e){return t.get(e.axisIndex)}),n=[];e.eachComponent({mainType:"dataZoom",query:t},function(t,e){n.push.apply(n,i(t).nodes)}),d(n,function(e,i){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})})});var dO=d,fO=function(t){var e=t&&t.visualMap;y(e)||(e=e?[e]:[]),dO(e,function(t){if(t){$y(t,"splitList")&&!$y(t,"pieces")&&(t.pieces=t.splitList,delete t.splitList);var e=t.pieces;e&&y(e)&&dO(e,function(t){w(t)&&($y(t,"start")&&!$y(t,"min")&&(t.min=t.start),$y(t,"end")&&!$y(t,"max")&&(t.max=t.end))})}})};sI.registerSubTypeDefaulter("visualMap",function(t){return t.categories||(t.pieces?t.pieces.length>0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"});var pO=zT.VISUAL.COMPONENT;zs(pO,{createOnAllSeries:!0,reset:function(t,e){var i=[];return e.eachComponent("visualMap",function(e){var n=t.pipelineContext;!e.isTargetSeries(t)||n&&n.large||i.push(ny(e.stateList,e.targetVisuals,m(e.getValueState,e),e.getDataDimension(t.getData())))}),i}}),zs(pO,{createOnAllSeries:!0,reset:function(t,e){var i=t.getData(),n=[];e.eachComponent("visualMap",function(e){if(e.isTargetSeries(t)){var o=e.getVisualMeta(m(Jy,null,t,e))||{stops:[],outerColors:[]},a=e.getDataDimension(i),r=i.getDimensionInfo(a);null!=r&&(o.dimension=r.index,n.push(o))}}),t.getData().setVisual("visualMeta",n)}});var gO={get:function(t,e,n){var o=i((mO[t]||{})[e]);return n&&y(o)?o[o.length-1]:o}},mO={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]}},vO=sL.mapVisual,yO=sL.eachVisual,xO=y,_O=d,wO=Go,bO=zo,SO=B,MO=Gs({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;U_.canvasSupported||(i.realtime=!1),!e&&ey(i,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},resetVisual:function(t){var e=this.stateList;t=m(t,this),this.controllerVisuals=ty(this.option.controller,e,t),this.targetVisuals=ty(this.option.target,e,t)},getTargetSeriesIndices:function(){var t=this.option.seriesIndex,e=[];return null==t||"all"===t?this.ecModel.eachSeries(function(t,i){e.push(i)}):e=Di(t),e},eachTargetSeries:function(t,e){d(this.getTargetSeriesIndices(),function(i){t.call(e,this.ecModel.getSeriesByIndex(i))},this)},isTargetSeries:function(t){var e=!1;return this.eachTargetSeries(function(i){i===t&&(e=!0)}),e},formatValueText:function(t,e,i){function n(t){return t===l[0]?"min":t===l[1]?"max":(+t).toFixed(Math.min(s,20))}var o,a,r=this.option,s=r.precision,l=this.dataBound,u=r.formatter;return i=i||["<",">"],y(t)&&(t=t.slice(),o=!0),a=e?t:o?[n(t[0]),n(t[1])]:n(t),_(u)?u.replace("{value}",o?a[0]:a).replace("{value2}",o?a[1]:a):x(u)?o?u(t[0],t[1]):u(t):o?t[0]===l[0]?i[0]+" "+a[1]:t[1]===l[1]?i[1]+" "+a[0]:a[0]+" - "+a[1]:a},resetExtent:function(){var t=this.option,e=wO([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,o=n.length-1;o>=0;o--){var a=n[o];if(!t.getDimensionInfo(a).isCalculationCoord)return a}}},getExtent:function(){return this._dataExtent.slice()},completeVisualOption:function(){function t(t){xO(o.color)&&!t.inRange&&(t.inRange={color:o.color.slice().reverse()}),t.inRange=t.inRange||{color:e.get("gradientColor")},_O(this.stateList,function(e){var i=t[e];if(_(i)){var n=gO.get(i,"active",l);n?(t[e]={},t[e][i]=n):delete t[e]}},this)}var e=this.ecModel,o=this.option,a={inRange:o.inRange,outOfRange:o.outOfRange},r=o.target||(o.target={}),s=o.controller||(o.controller={});n(r,a),n(s,a);var l=this.isCategory();t.call(this,r),t.call(this,s),function(t,e,i){var n=t[e],o=t[i];n&&!o&&(o=t[i]={},_O(n,function(t,e){if(sL.isValidType(e)){var i=gO.get(e,"inactive",l);null!=i&&(o[e]=i,"color"!==e||o.hasOwnProperty("opacity")||o.hasOwnProperty("colorAlpha")||(o.opacity=[0,0]))}}))}.call(this,r,"inRange","outOfRange"),function(t){var e=(t.inRange||{}).symbol||(t.outOfRange||{}).symbol,n=(t.inRange||{}).symbolSize||(t.outOfRange||{}).symbolSize,o=this.get("inactiveColor");_O(this.stateList,function(a){var r=this.itemSize,s=t[a];s||(s=t[a]={color:l?o:[o]}),null==s.symbol&&(s.symbol=e&&i(e)||(l?"roundRect":["roundRect"])),null==s.symbolSize&&(s.symbolSize=n&&i(n)||(l?r[0]:[r[0],r[0]])),s.symbol=vO(s.symbol,function(t){return"none"===t||"square"===t?"roundRect":t});var u=s.symbolSize;if(null!=u){var h=-1/0;yO(u,function(t){t>h&&(h=t)}),s.symbolSize=vO(u,function(t){return bO(t,[0,h],[0,r[0]],!0)})}},this)}.call(this,s)},resetItemSize:function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},isCategory:function(){return!!this.option.categories},setSelected:SO,getValueState:SO,getVisualMeta:SO}),IO=[20,140],TO=MO.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){TO.superApply(this,"optionUpdated",arguments),this.resetExtent(),this.resetVisual(function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()}),this._resetRange()},resetItemSize:function(){TO.superApply(this,"resetItemSize",arguments);var t=this.itemSize;"horizontal"===this._orient&&t.reverse(),(null==t[0]||isNaN(t[0]))&&(t[0]=IO[0]),(null==t[1]||isNaN(t[1]))&&(t[1]=IO[1])},_resetRange:function(){var t=this.getExtent(),e=this.option.range;!e||e.auto?(t.auto=1,this.option.range=t):y(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(){MO.prototype.completeVisualOption.apply(this,arguments),d(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=Go((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]=i[1]||t<=e[1])?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){t[0]<=e&&e<=t[1]&&n.push(i)},this),e.push({seriesId:i.id,dataIndex:n})},this),e},getVisualMeta:function(t){function e(e,i){o.push({value:e,color:t(e,i)})}for(var i=Qy(0,0,this.getExtent()),n=Qy(0,0,this.option.range.slice()),o=[],a=0,r=0,s=n.length,l=i.length;rt[1])break;i.push({color:this.getControllerVisual(a,"color",e),offset:o/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 tb("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(t,e){if(this._useHandle){var i=this._shapes,n=this.visualMapModel,o=i.handleThumbs,a=i.handleLabels;CO([0,1],function(r){var s=o[r];s.setStyle("fill",e.handlesColor[r]),s.position[1]=t[r];var l=Ao(i.handleLabelPoints[r],To(s,this.group));a[r].setStyle({x:l[0],y:l[1],text:n.formatValueText(this._dataInterval[r]),textVerticalAlign:"middle",textAlign:this._applyTransform("horizontal"===this._orient?0===r?"bottom":"top":"left",i.barGroup)})},this)}},_showIndicator:function(t,e,i,n){var o=this.visualMapModel,a=o.getExtent(),r=o.itemSize,s=[0,r[1]],l=DO(t,a,s,!0),u=this._shapes,h=u.indicator;if(h){h.position[1]=l,h.attr("invisible",!1),h.setShape("points",ox(!!i,n,l,r[1]));var c=this.getControllerVisual(t,"color",{convertOpacityToAlpha:!0});h.setStyle("fill",c);var d=Ao(u.indicatorLabelPoint,To(h,this.group)),f=u.indicatorLabel;f.attr("invisible",!1);var p=this._applyTransform("left",u.barGroup),g=this._orient;f.setStyle({text:(i||"")+o.formatValueText(e),textVerticalAlign:"horizontal"===g?p:"middle",textAlign:"horizontal"===g?"center":p,x:d[0],y:d[1]})}},_enableHoverLinkToSeries:function(){var t=this;this._shapes.barGroup.on("mousemove",function(e){if(t._hovering=!0,!t._dragging){var i=t.visualMapModel.itemSize,n=t._applyTransform([e.offsetX,e.offsetY],t._shapes.barGroup,!0,!0);n[1]=LO(kO(0,n[1]),i[1]),t._doHoverLinkToSeries(n[1],0<=n[0]&&n[0]<=i[0])}}).on("mouseout",function(){t._hovering=!1,!t._dragging&&t._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 o=[0,n[1]],a=i.getExtent();t=LO(kO(o[0],t),o[1]);var r=ax(i,a,o),s=[t-r,t+r],l=DO(t,o,a,!0),u=[DO(s[0],o,a,!0),DO(s[1],o,a,!0)];s[0]o[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||rx(i))&&(c=this._hoverLinkDataIndices=i.findTargetDataIndices(u));var d=Ri(h,c);this._dispatchHighDown("downplay",ex(d[0])),this._dispatchHighDown("highlight",ex(d[1]))}},_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 o=n.getData(e.dataType),a=o.get(i.getDataDimension(o),e.dataIndex,!0);isNaN(a)||this._showIndicator(a,a)}}},_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",ex(t)),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 o=To(e,n?null:this.group);return RM[y(t)?"applyTransform":"transformDirection"](t,o,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()}});Os({type:"selectDataRange",event:"dataRangeSelected",update:"update"},function(t,e){e.eachComponent({mainType:"visualMap",query:t},function(e){e.setSelected(t.selected)})}),Ps(fO);var EO=MO.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){EO.superApply(this,"optionUpdated",arguments),this._pieceList=[],this.resetExtent();var n=this._mode=this._determineMode();RO[this._mode].call(this),this._resetSelected(t,e);var o=this.option.categories;this.resetVisual(function(t,e){"categories"===n?(t.mappingMethod="category",t.categories=i(o)):(t.dataExtent=this.getExtent(),t.mappingMethod="piecewise",t.pieceList=f(this._pieceList,function(t){var t=i(t);return"inRange"!==e&&(t.visual=null),t}))})},completeVisualOption:function(){function t(t,e,i){return t&&t[e]&&(w(t[e])?t[e].hasOwnProperty(i):t[e]===i)}var e=this.option,i={},n=sL.listVisualTypes(),o=this.isCategory();d(e.pieces,function(t){d(n,function(e){t.hasOwnProperty(e)&&(i[e]=1)})}),d(i,function(i,n){var a=0;d(this.stateList,function(i){a|=t(e,i,n)||t(e.target,i,n)},this),!a&&d(this.stateList,function(t){(e[t]||(e[t]={}))[n]=gO.get(n,"inRange"===t?"active":"inactive",o)})},this),MO.prototype.completeVisualOption.apply(this,arguments)},_resetSelected:function(t,e){var i=this.option,n=this._pieceList,o=(e?i:t).selected||{};if(i.selected=o,d(n,function(t,e){var i=this.getSelectedMapKey(t);o.hasOwnProperty(i)||(o[i]=!0)},this),"single"===i.selectedMode){var a=!1;d(n,function(t,e){var i=this.getSelectedMapKey(t);o[i]&&(a?o[i]=!1:a=!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&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},setSelected:function(t){this.option.selected=i(t)},getValueState:function(t){var e=sL.findPieceIndex(t,this._pieceList);return null!=e&&this.option.selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){sL.findPieceIndex(e,this._pieceList)===t&&n.push(i)},this),e.push({seriesId:i.id,dataIndex:n})},this),e},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(t){function e(e,a){var r=o.getRepresentValue({interval:e});a||(a=o.getValueState(r));var s=t(r,a);e[0]===-1/0?n[0]=s:e[1]===1/0?n[1]=s:i.push({value:e[0],color:s},{value:e[1],color:s})}if(!this.isCategory()){var i=[],n=[],o=this,a=this._pieceList.slice();if(a.length){var r=a[0].interval[0];r!==-1/0&&a.unshift({interval:[-1/0,r]}),(r=a[a.length-1].interval[1])!==1/0&&a.push({interval:[r,1/0]})}else a.push({interval:[-1/0,1/0]});var s=-1/0;return d(a,function(t){var i=t.interval;i&&(i[0]>s&&e([s,i[0]],"outOfRange"),e(i.slice()),s=i[1])},this),{stops:i,outerColors:n}}}}),RO={splitNumber:function(){var t=this.option,e=this._pieceList,i=Math.min(t.precision,20),n=this.getExtent(),o=t.splitNumber;o=Math.max(parseInt(o,10),1),t.splitNumber=o;for(var a=(n[1]-n[0])/o;+a.toFixed(i)!==a&&i<5;)i++;t.precision=i,a=+a.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+o;r","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t.interval,!1,i)},this)}};AO.extend({type:"visualMap.piecewise",doRender:function(){var t=this.group;t.removeAll();var e=this.visualMapModel,i=e.get("textGap"),n=e.textStyleModel,o=n.getFont(),a=n.getTextColor(),r=this._getItemAlign(),s=e.itemSize,l=this._getViewData(),u=l.endsText,h=T(e.get("showLabel",!0),!u);u&&this._renderEndsText(t,u[0],s,h,r),d(l.viewPieceList,function(n){var l=n.piece,u=new tb;u.onclick=m(this._onItemClick,this,l),this._enableHoverLink(u,n.indexInModelPieceList);var c=e.getRepresentValue(l);if(this._createItemSymbol(u,c,[0,0,s[0],s[1]]),h){var d=this.visualMapModel.getValueState(c);u.add(new aM({style:{x:"right"===r?-i:s[0]+i,y:s[1]/2,text:l.text,textVerticalAlign:"middle",textAlign:r,textFont:o,textFill:a,opacity:"outOfRange"===d?.5:1}}))}t.add(u)},this),u&&this._renderEndsText(t,u[1],s,h,r),aI(e.get("orient"),t,e.get("itemGap")),this.renderBackground(t),this.positionGroup(t)},_enableHoverLink:function(t,e){function i(t){var i=this.visualMapModel;i.option.hoverLink&&this.api.dispatchAction({type:t,batch:ex(i.findTargetDataIndices(e))})}t.on("mouseover",m(i,this,"highlight")).on("mouseout",m(i,this,"downplay"))},_getItemAlign:function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return tx(t,this.api,t.itemSize);var i=e.align;return i&&"auto"!==i||(i="left"),i},_renderEndsText:function(t,e,i,n,o){if(e){var a=new tb,r=this.visualMapModel.textStyleModel;a.add(new aM({style:{x:n?"right"===o?i[0]:0:i[0]/2,y:i[1]/2,textVerticalAlign:"middle",textAlign:n?o:"center",text:e,textFont:r.getFont(),textFill:r.getTextColor()}})),t.add(a)}},_getViewData:function(){var t=this.visualMapModel,e=f(t.getPieceList(),function(t,e){return{piece:t,indexInModelPieceList:e}}),i=t.get("text"),n=t.get("orient"),o=t.get("inverse");return("horizontal"===n?o:!o)?e.reverse():i&&(i=i.slice().reverse()),{viewPieceList:e,endsText:i}},_createItemSymbol:function(t,e,i){t.add($l(this.getControllerVisual(e,"symbol"),i[0],i[1],i[2],i[3],this.getControllerVisual(e,"color")))},_onItemClick:function(t){var e=this.visualMapModel,n=e.option,o=i(n.selected),a=e.getSelectedMapKey(t);"single"===n.selectedMode?(o[a]=!0,d(o,function(t,e){o[e]=e===a})):o[a]=!o[a],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:o})}});Ps(fO);var zO=Qo,BO=ea,VO=Gs({type:"marker",dependencies:["series","grid","polar","geo"],init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i),this.mergeOption(t,i,n.createdBySelf,!0)},isAnimationEnabled:function(){if(U_.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},mergeOption:function(t,e,i,n){var o=this.constructor,r=this.mainType+"Model";i||e.eachSeries(function(t){var i=t.get(this.mainType,!0),s=t[r];i&&i.data?(s?s.mergeOption(i,e,!0):(n&&ux(i),d(i.data,function(t){t instanceof Array?(ux(t[0]),ux(t[1])):ux(t)}),a(s=new o(i,this,e),{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),s.__hostSeries=t),t[r]=s):t[r]=null},this)},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=y(i)?f(i,zO).join(", "):zO(i),o=e.getName(t),a=BO(this.name);return(null!=i||o)&&(a+="
"),o&&(a+=BO(o),null!=i&&(a+=" : ")),null!=i&&(a+=BO(n)),a},getData:function(){return this._data},setData:function(t){this._data=t}});h(VO,HI),VO.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 GO=l,FO=v,WO={min:FO(dx,"min"),max:FO(dx,"max"),average:FO(dx,"average")},HO=Fs({type:"marker",init:function(){this.markerGroupMap=R()},render:function(t,e,i){var n=this.markerGroupMap;n.each(function(t){t.__keep=!1});var o=this.type+"Model";e.eachSeries(function(t){var n=t[o];n&&this.renderSeries(t,n,e,i)},this),n.each(function(t){!t.__keep&&this.group.remove(t.group)},this)},renderSeries:function(){}});HO.extend({type:"markPoint",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markPointModel;e&&(xx(e.getData(),t,i),this.markerGroupMap.get(t.id).updateLayout(e))},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,a=t.id,r=t.getData(),s=this.markerGroupMap,l=s.get(a)||s.set(a,new Au),u=_x(o,t,e);e.setData(u),xx(e.getData(),t,n),u.each(function(t){var i=u.getItemModel(t),n=i.getShallow("symbolSize");"function"==typeof n&&(n=n(e.getRawValue(t),e.getDataParams(t))),u.setItemVisual(t,{symbolSize:n,color:i.get("itemStyle.color")||r.getVisual("color"),symbol:i.getShallow("symbol")})}),l.updateData(u),this.group.add(l.group),u.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=e})}),l.__keep=!0,l.group.silent=e.get("silent")||t.get("silent")}}),Ps(function(t){t.markPoint=t.markPoint||{}}),VO.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"}});var ZO=function(t,e,o,r){var s=t.getData(),l=r.type;if(!y(r)&&("min"===l||"max"===l||"average"===l||"median"===l||null!=r.xAxis||null!=r.yAxis)){var u,h;if(null!=r.yAxis||null!=r.xAxis)u=null!=r.yAxis?"y":"x",e.getAxis(u),h=T(r.yAxis,r.xAxis);else{var c=px(r,s,e,t);u=c.valueDataDim,c.valueAxis,h=yx(s,u,l)}var d="x"===u?0:1,f=1-d,p=i(r),g={};p.type=null,p.coord=[],g.coord=[],p.coord[f]=-1/0,g.coord[f]=1/0;var m=o.get("precision");m>=0&&"number"==typeof h&&(h=+h.toFixed(Math.min(m,20))),p.coord[d]=g.coord[d]=h,r=[p,g,{type:l,valueIndex:r.valueIndex,value:h}]}return r=[fx(t,r[0]),fx(t,r[1]),a({},r[2])],r[2].type=r[2].type||"",n(r[2],r[0]),n(r[2],r[1]),r};HO.extend({type:"markLine",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markLineModel;if(e){var n=e.getData(),o=e.__from,a=e.__to;o.each(function(e){Ix(o,e,!0,t,i),Ix(a,e,!1,t,i)}),n.each(function(t){n.setItemLayout(t,[o.getItemLayout(t),a.getItemLayout(t)])}),this.markerGroupMap.get(t.id).updateLayout()}},this)},renderSeries:function(t,e,i,n){function o(e,i,o){var a=e.getItemModel(i);Ix(e,i,o,t,n),e.setItemVisual(i,{symbolSize:a.get("symbolSize")||g[o?0:1],symbol:a.get("symbol",!0)||p[o?0:1],color:a.get("itemStyle.color")||s.getVisual("color")})}var a=t.coordinateSystem,r=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(r)||l.set(r,new rf);this.group.add(u.group);var h=Tx(a,t,e),c=h.from,d=h.to,f=h.line;e.__from=c,e.__to=d,e.setData(f);var p=e.get("symbol"),g=e.get("symbolSize");y(p)||(p=[p,p]),"number"==typeof g&&(g=[g,g]),h.from.each(function(t){o(c,t,!0),o(d,t,!1)}),f.each(function(t){var e=f.getItemModel(t).get("lineStyle.color");f.setItemVisual(t,{color:e||c.getItemVisual(t,"color")}),f.setItemLayout(t,[c.getItemLayout(t),d.getItemLayout(t)]),f.setItemVisual(t,{fromSymbolSize:c.getItemVisual(t,"symbolSize"),fromSymbol:c.getItemVisual(t,"symbol"),toSymbolSize:d.getItemVisual(t,"symbolSize"),toSymbol:d.getItemVisual(t,"symbol")})}),u.updateData(f),h.line.eachItemGraphicEl(function(t,i){t.traverse(function(t){t.dataModel=e})}),u.__keep=!0,u.group.silent=e.get("silent")||t.get("silent")}}),Ps(function(t){t.markLine=t.markLine||{}}),VO.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"}}}});var UO=function(t,e,i,n){var a=fx(t,n[0]),r=fx(t,n[1]),s=T,l=a.coord,u=r.coord;l[0]=s(l[0],-1/0),l[1]=s(l[1],-1/0),u[0]=s(u[0],1/0),u[1]=s(u[1],1/0);var h=o([{},a,r]);return h.coord=[a.coord,r.coord],h.x0=a.x,h.y0=a.y,h.x1=r.x,h.y1=r.y,h},XO=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];HO.extend({type:"markArea",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markAreaModel;if(e){var n=e.getData();n.each(function(e){var o=f(XO,function(o){return Lx(n,e,o,t,i)});n.setItemLayout(e,o),n.getItemGraphicEl(e).setShape("points",o)})}},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,a=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(a)||l.set(a,{group:new tb});this.group.add(u.group),u.__keep=!0;var h=kx(o,t,e);e.setData(h),h.each(function(e){h.setItemLayout(e,f(XO,function(i){return Lx(h,e,i,t,n)})),h.setItemVisual(e,{color:s.getVisual("color")})}),h.diff(u.__data).add(function(t){var e=new fM({shape:{points:h.getItemLayout(t)}});h.setItemGraphicEl(t,e),u.group.add(e)}).update(function(t,i){var n=u.__data.getItemGraphicEl(i);Mo(n,{shape:{points:h.getItemLayout(t)}},e,t),u.group.add(n),h.setItemGraphicEl(t,n)}).remove(function(t){var e=u.__data.getItemGraphicEl(t);u.group.remove(e)}).execute(),h.eachItemGraphicEl(function(t,i){var n=h.getItemModel(i),o=n.getModel("label"),a=n.getModel("emphasis.label"),s=h.getItemVisual(i,"color");t.useStyle(r(n.getModel("itemStyle").getItemStyle(),{fill:Yt(s,.4),stroke:s})),t.hoverStyle=n.getModel("emphasis.itemStyle").getItemStyle(),po(t.style,t.hoverStyle,o,a,{labelFetcher:e,labelDataIndex:i,defaultText:h.getName(i)||"",isRectText:!0,autoColor:s}),co(t,{}),t.dataModel=e}),u.__data=h,u.group.silent=e.get("silent")||t.get("silent")}}),Ps(function(t){t.markArea=t.markArea||{}});sI.registerSubTypeDefaulter("timeline",function(){return"slider"}),Os({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"),r({currentIndex:i.option.currentIndex},t)}),Os({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var i=e.getComponent("timeline");i&&null!=t.playState&&i.setPlayState(t.playState)});var jO=sI.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){jO.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:(t>=e&&(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||[],n=t.axisType,o=this._names=[];if("category"===n){var a=[];d(e,function(t,e){var n,r=Li(t);w(t)?(n=i(t)).value=e:n=e,a.push(n),_(r)||null!=r&&!isNaN(r)||(r=""),o.push(r+"")}),e=a}var r={category:"ordinal",time:"time"}[n]||"number";(this._data=new pA([{name:"value",type:r}],this)).initData(e,o)},getData:function(){return this._data},getCategories:function(){if("category"===this.get("axisType"))return this._names.slice()}});h(jO.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:[]}}),HI);var YO=YI.extend({type:"timeline"}),qO=function(t,e,i,n){iD.call(this,t,e,i),this.type=n||"value",this.model=null};qO.prototype={constructor:qO,getLabelModel:function(){return this.model.getModel("label")},isHorizontal:function(){return"horizontal"===this.model.get("orient")}},u(qO,iD);var KO=m,$O=d,JO=Math.PI;YO.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(t,e,i,n){if(this.model=t,this.api=i,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var o=this._layout(t,i),a=this._createGroup("mainGroup"),r=this._createGroup("labelGroup"),s=this._axis=this._createAxis(o,t);t.formatTooltip=function(t){return ea(s.scale.getLabel(t))},$O(["AxisLine","AxisTick","Control","CurrentPointer"],function(e){this["_render"+e](o,a,s,t)},this),this._renderAxisLabel(o,r,s,t),this._position(o,t)}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"),o=Ex(t,e);null==i||"auto"===i?i="horizontal"===n?o.y+o.height/2=0||"+"===i?"left":"right"},r={horizontal:i>=0||"+"===i?"top":"bottom",vertical:"middle"},s={horizontal:0,vertical:JO/2},l="vertical"===n?o.height:o.width,u=t.getModel("controlStyle"),h=u.get("show",!0),c=h?u.get("itemSize"):0,d=h?u.get("itemGap"):0,f=c+d,p=t.get("label.rotate")||0;p=p*JO/180;var g,m,v,y,x=u.get("position",!0),_=h&&u.get("showPlayBtn",!0),w=h&&u.get("showPrevBtn",!0),b=h&&u.get("showNextBtn",!0),S=0,M=l;return"left"===x||"bottom"===x?(_&&(g=[0,0],S+=f),w&&(m=[S,0],S+=f),b&&(v=[M-c,0],M-=f)):(_&&(g=[M-c,0],M-=f),w&&(m=[0,0],S+=f),b&&(v=[M-c,0],M-=f)),y=[S,M],t.get("inverse")&&y.reverse(),{viewRect:o,mainLength:l,orient:n,rotation:s[n],labelRotation:p,labelPosOpt:i,labelAlign:t.get("label.align")||a[n],labelBaseline:t.get("label.verticalAlign")||t.get("label.baseline")||r[n],playPosition:g,prevBtnPosition:m,nextBtnPosition:v,axisExtent:y,controlSize:c,controlGap:d}},_position:function(t,e){function i(t){var e=t.position;t.origin=[c[0][0]-e[0],c[1][0]-e[1]]}function n(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function o(t,e,i,n,o){t[n]+=i[n][o]-e[n][o]}var a=this._mainGroup,r=this._labelGroup,s=t.viewRect;if("vertical"===t.orient){var l=xt(),u=s.x,h=s.y+s.height;St(l,l,[-u,-h]),Mt(l,l,-JO/2),St(l,l,[u,h]),(s=s.clone()).applyTransform(l)}var c=n(s),d=n(a.getBoundingRect()),f=n(r.getBoundingRect()),p=a.position,g=r.position;g[0]=p[0]=c[0][0];var m=t.labelPosOpt;if(isNaN(m))o(p,d,c,1,v="+"===m?0:1),o(g,f,c,1,1-v);else{var v=m>=0?0:1;o(p,d,c,1,v),g[1]=p[1]+m}a.attr("position",p),r.attr("position",g),a.rotation=r.rotation=t.rotation,i(a),i(r)},_createAxis:function(t,e){var i=e.getData(),n=e.get("axisType"),o=Wl(e,n);o.getTicks=function(){return i.mapArray(["value"],function(t){return t})};var a=i.getDataExtent("value");o.setExtent(a[0],a[1]),o.niceTicks();var r=new qO("value",o,t.axisExtent,n);return r.model=e,r},_createGroup:function(t){var e=this["_"+t]=new tb;return this.group.add(e),e},_renderAxisLine:function(t,e,i,n){var o=i.getExtent();n.get("lineStyle.show")&&e.add(new xM({shape:{x1:o[0],y1:0,x2:o[1],y2:0},style:a({lineCap:"round"},n.getModel("lineStyle").getLineStyle()),silent:!0,z2:1}))},_renderAxisTick:function(t,e,i,n){var o=n.getData(),a=i.scale.getTicks();$O(a,function(t){var a=i.dataToCoord(t),r=o.getItemModel(t),s=r.getModel("itemStyle"),l=r.getModel("emphasis.itemStyle"),u={position:[a,0],onclick:KO(this._changeTimeline,this,t)},h=zx(r,s,e,u);co(h,l.getItemStyle()),r.get("tooltip")?(h.dataIndex=t,h.dataModel=n):h.dataIndex=h.dataModel=null},this)},_renderAxisLabel:function(t,e,i,n){if(i.getLabelModel().get("show")){var o=n.getData(),a=i.getViewLabels();$O(a,function(n){var a=n.tickValue,r=o.getItemModel(a),s=r.getModel("label"),l=r.getModel("emphasis.label"),u=i.dataToCoord(n.tickValue),h=new aM({position:[u,0],rotation:t.labelRotation-t.rotation,onclick:KO(this._changeTimeline,this,a),silent:!1});go(h.style,s,{text:n.formattedLabel,textAlign:t.labelAlign,textVerticalAlign:t.labelBaseline}),e.add(h),co(h,go({},l))},this)}},_renderControl:function(t,e,i,n){function o(t,i,o,h){if(t){var c=Rx(n,i,u,{position:t,origin:[a/2,0],rotation:h?-r:0,rectHover:!0,style:s,onclick:o});e.add(c),co(c,l)}}var a=t.controlSize,r=t.rotation,s=n.getModel("controlStyle").getItemStyle(),l=n.getModel("emphasis.controlStyle").getItemStyle(),u=[0,-a/2,a,a],h=n.getPlayState(),c=n.get("inverse",!0);o(t.nextBtnPosition,"controlStyle.nextIcon",KO(this._changeTimeline,this,c?"-":"+")),o(t.prevBtnPosition,"controlStyle.prevIcon",KO(this._changeTimeline,this,c?"+":"-")),o(t.playPosition,"controlStyle."+(h?"stopIcon":"playIcon"),KO(this._handlePlayClick,this,!h),!0)},_renderCurrentPointer:function(t,e,i,n){var o=n.getData(),a=n.getCurrentIndex(),r=o.getItemModel(a).getModel("checkpointStyle"),s=this,l={onCreate:function(t){t.draggable=!0,t.drift=KO(s._handlePointerDrag,s),t.ondragend=KO(s._handlePointerDragend,s),Bx(t,a,i,n,!0)},onUpdate:function(t){Bx(t,a,i,n)}};this._currentPointer=zx(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=Go(this._axis.getExtent().slice());i>n[1]&&(i=n[1]),ii.getHeight()&&(n.textPosition="top",l=!0);var u=l?-5-o.height:s+8;a+o.width/2>i.getWidth()?(n.textPosition=["100%",u],n.textAlign="right"):a-o.width/2<0&&(n.textPosition=[0,u],n.textAlign="left")}})}},updateView:function(t,e,i,n){d(this._features,function(t){t.updateView&&t.updateView(t.model,e,i,n)})},remove:function(t,e){d(this._features,function(i){i.remove&&i.remove(t,e)}),this.group.removeAll()},dispose:function(t,e){d(this._features,function(i){i.dispose&&i.dispose(t,e)})}});var tE=aT.toolbox.saveAsImage;Gx.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:tE.title,type:"png",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:tE.lang.slice()},Gx.prototype.unusable=!U_.canvasSupported,Gx.prototype.onclick=function(t,e){var i=this.model,n=i.get("name")||t.get("title.0.text")||"echarts",o=document.createElement("a"),a=i.get("type",!0)||"png";o.download=n+"."+a,o.target="_blank";var r=e.getConnectedDataURL({type:a,backgroundColor:i.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",excludeComponents:i.get("excludeComponents"),pixelRatio:i.get("pixelRatio")});if(o.href=r,"function"!=typeof MouseEvent||U_.browser.ie||U_.browser.edge)if(window.navigator.msSaveOrOpenBlob){for(var s=atob(r.split(",")[1]),l=s.length,u=new Uint8Array(l);l--;)u[l]=s.charCodeAt(l);var h=new Blob([u]);window.navigator.msSaveOrOpenBlob(h,n+"."+a)}else{var c=i.get("lang"),d='';window.open().document.write(d)}else{var f=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});o.dispatchEvent(f)}},Ty("saveAsImage",Gx);var eE=aT.toolbox.magicType;Fx.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:i(eE.title),option:{},seriesIndex:{}};var iE=Fx.prototype;iE.getIcons=function(){var t=this.model,e=t.get("icon"),i={};return d(t.get("type"),function(t){e[t]&&(i[t]=e[t])}),i};var nE={line:function(t,e,i,o){if("bar"===t)return n({id:e,type:"line",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},o.get("option.line")||{},!0)},bar:function(t,e,i,o){if("line"===t)return n({id:e,type:"bar",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},o.get("option.bar")||{},!0)},stack:function(t,e,i,o){if("line"===t||"bar"===t)return n({id:e,stack:"__ec_magicType_stack__"},o.get("option.stack")||{},!0)},tiled:function(t,e,i,o){if("line"===t||"bar"===t)return n({id:e,stack:""},o.get("option.tiled")||{},!0)}},oE=[["line","bar"],["stack","tiled"]];iE.onclick=function(t,e,i){var n=this.model,o=n.get("seriesIndex."+i);if(nE[i]){var a={series:[]};d(oE,function(t){l(t,i)>=0&&d(t,function(t){n.setIconStatus(t,"normal")})}),n.setIconStatus(i,"emphasis"),t.eachComponent({mainType:"series",query:null==o?null:{seriesIndex:o}},function(e){var o=e.subType,s=e.id,l=nE[i](o,s,e,n);l&&(r(l,e.option),a.series.push(l));var u=e.coordinateSystem;if(u&&"cartesian2d"===u.type&&("line"===i||"bar"===i)){var h=u.getAxesByScale("ordinal")[0];if(h){var c=h.dim+"Axis",d=t.queryComponents({mainType:c,index:e.get(name+"Index"),id:e.get(name+"Id")})[0].componentIndex;a[c]=a[c]||[];for(var f=0;f<=d;f++)a[c][d]=a[c][d]||{};a[c][d].boundaryGap="bar"===i}}}),e.dispatchAction({type:"changeMagicType",currentType:i,newOption:a})}},Os({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),Ty("magicType",Fx);var aE=aT.toolbox.dataView,rE=new Array(60).join("-"),sE="\t",lE=new RegExp("["+sE+"]+","g");$x.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:i(aE.title),lang:i(aE.lang),backgroundColor:"#fff",textColor:"#000",textareaColor:"#fff",textareaBorderColor:"#333",buttonColor:"#c23531",buttonTextColor:"#fff"},$x.prototype.onclick=function(t,e){function i(){n.removeChild(a),x._dom=null}var n=e.getDom(),o=this.model;this._dom&&n.removeChild(this._dom);var a=document.createElement("div");a.style.cssText="position:absolute;left:5px;top:5px;bottom:5px;right:5px;",a.style.backgroundColor=o.get("backgroundColor")||"#fff";var r=document.createElement("h4"),s=o.get("lang")||[];r.innerHTML=s[0]||o.get("title"),r.style.cssText="margin: 10px 20px;",r.style.color=o.get("textColor");var l=document.createElement("div"),u=document.createElement("textarea");l.style.cssText="display:block;width:100%;overflow:auto;";var h=o.get("optionToContent"),c=o.get("contentToOption"),d=Ux(t);if("function"==typeof h){var f=h(e.getOption());"string"==typeof f?l.innerHTML=f:M(f)&&l.appendChild(f)}else l.appendChild(u),u.readOnly=o.get("readOnly"),u.style.cssText="width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;",u.style.color=o.get("textColor"),u.style.borderColor=o.get("textareaBorderColor"),u.style.backgroundColor=o.get("textareaColor"),u.value=d.value;var p=d.meta,g=document.createElement("div");g.style.cssText="position:absolute;bottom:0;left:0;right:0;";var m="float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",v=document.createElement("div"),y=document.createElement("div");m+=";background-color:"+o.get("buttonColor"),m+=";color:"+o.get("buttonTextColor");var x=this;ht(v,"click",i),ht(y,"click",function(){var t;try{t="function"==typeof c?c(l,e.getOption()):Kx(u.value,p)}catch(t){throw i(),new Error("Data view format error "+t)}t&&e.dispatchAction({type:"changeDataView",newOption:t}),i()}),v.innerHTML=s[1],y.innerHTML=s[2],y.style.cssText=m,v.style.cssText=m,!o.get("readOnly")&&g.appendChild(y),g.appendChild(v),ht(u,"keydown",function(t){if(9===(t.keyCode||t.which)){var e=this.value,i=this.selectionStart,n=this.selectionEnd;this.value=e.substring(0,i)+sE+e.substring(n),this.selectionStart=this.selectionEnd=i+1,mw(t)}}),a.appendChild(r),a.appendChild(l),a.appendChild(g),l.style.height=n.clientHeight-80+"px",n.appendChild(a),this._dom=a},$x.prototype.remove=function(t,e){this._dom&&e.getDom().removeChild(this._dom)},$x.prototype.dispose=function(t,e){this.remove(t,e)},Ty("dataView",$x),Os({type:"changeDataView",event:"dataViewChanged",update:"prepareAndUpdate"},function(t,e){var i=[];d(t.newOption.series,function(t){var n=e.getSeriesByName(t.name)[0];if(n){var o=n.get("data");i.push({name:t.name,data:Jx(t.data,o)})}else i.push(a({type:"scatter"},t))}),e.mergeOption(r({series:i},t.newOption))});var uE=d,hE="\0_ec_hist_store";KN.extend({type:"dataZoom.select"}),$N.extend({type:"dataZoom.select"});var cE=aT.toolbox.dataZoom,dE=d,fE="\0_ec_\0toolbox-dataZoom_";o_.defaultOption={show:!0,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:i(cE.title)};var pE=o_.prototype;pE.render=function(t,e,i,n){this.model=t,this.ecModel=e,this.api=i,s_(t,e,this,n,i),r_(t,e)},pE.onclick=function(t,e,i){gE[i].call(this)},pE.remove=function(t,e){this._brushController.unmount()},pE.dispose=function(t,e){this._brushController.dispose()};var gE={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(t_(this.ecModel))}};pE._onBrush=function(t,e){function i(t,e,i){var r=e.getAxis(t),s=r.model,l=n(t,s,a),u=l.findRepresentativeAxisProxy(s).getMinMaxSpan();null==u.minValueSpan&&null==u.maxValueSpan||(i=qL(0,i.slice(),r.scale.getExtent(),0,u.minValueSpan,u.maxValueSpan)),l&&(o[l.id]={dataZoomId:l.id,startValue:i[0],endValue:i[1]})}function n(t,e,i){var n;return i.eachComponent({mainType:"dataZoom",subType:"select"},function(i){i.getAxisModel(t,e.componentIndex)&&(n=i)}),n}if(e.isEnd&&t.length){var o={},a=this.ecModel;this._brushController.updateCovers([]),new hy(a_(this.model.option),a,{include:["grid"]}).matchOutputRanges(t,a,function(t,e,n){if("cartesian2d"===n.type){var o=t.brushType;"rect"===o?(i("x",n,e[0]),i("y",n,e[1])):i({lineX:"x",lineY:"y"}[o],n,e)}}),Qx(a,o),this._dispatchZoomAction(o)}},pE._dispatchZoomAction=function(t){var e=[];dE(t,function(t,n){e.push(i(t))}),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},Ty("dataZoom",o_),Ps(function(t){function e(t,e){if(e){var o=t+"Index",a=e[o];null==a||"all"===a||y(a)||(a=!1===a||"none"===a?[]:[a]),i(t,function(e,i){if(null==a||"all"===a||-1!==l(a,i)){var r={type:"select",$fromToolbox:!0,id:fE+t+i};r[o]=i,n.push(r)}})}}function i(e,i){var n=t[e];y(n)||(n=n?[n]:[]),dE(n,i)}if(t){var n=t.dataZoom||(t.dataZoom=[]);y(n)||(t.dataZoom=n=[n]);var o=t.toolbox;if(o&&(y(o)&&(o=o[0]),o&&o.feature)){var a=o.feature.dataZoom;e("xAxis",a),e("yAxis",a)}}});var mE=aT.toolbox.restore;l_.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:mE.title},l_.prototype.onclick=function(t,e,i){e_(t),e.dispatchAction({type:"restore",from:this.uid})},Ty("restore",l_),Os({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")});var vE,yE="urn:schemas-microsoft-com:vml",xE="undefined"==typeof window?null:window,_E=!1,wE=xE&&xE.document;if(wE&&!U_.canvasSupported)try{!wE.namespaces.zrvml&&wE.namespaces.add("zrvml",yE),vE=function(t){return wE.createElement("')}}catch(t){vE=function(t){return wE.createElement("<"+t+' xmlns="'+yE+'" class="zrvml">')}}var bE=OS.CMD,SE=Math.round,ME=Math.sqrt,IE=Math.abs,TE=Math.cos,AE=Math.sin,DE=Math.max;if(!U_.canvasSupported){var CE=21600,LE=CE/2,kE=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=CE+","+CE,t.coordorigin="0,0"},PE=function(t){return String(t).replace(/&/g,"&").replace(/"/g,""")},NE=function(t,e,i){return"rgb("+[t,e,i].join(",")+")"},OE=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},EE=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},RE=function(t,e,i){return 1e5*(parseFloat(t)||0)+1e3*(parseFloat(e)||0)+i},zE=function(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t},BE=function(t,e,i){var n=Gt(e);i=+i,isNaN(i)&&(i=1),n&&(t.color=NE(n[0],n[1],n[2]),t.opacity=i*n[3])},VE=function(t){var e=Gt(t);return[NE(e[0],e[1],e[2]),e[3]]},GE=function(t,e,i){var n=e.fill;if(null!=n)if(n instanceof MM){var o,a=0,r=[0,0],s=0,l=1,u=i.getBoundingRect(),h=u.width,c=u.height;if("linear"===n.type){o="gradient";var d=i.transform,f=[n.x*h,n.y*c],p=[n.x2*h,n.y2*c];d&&(Q(f,f,d),Q(p,p,d));var g=p[0]-f[0],m=p[1]-f[1];(a=180*Math.atan2(g,m)/Math.PI)<0&&(a+=360),a<1e-6&&(a=0)}else{o="gradientradial";var f=[n.x*h,n.y*c],d=i.transform,v=i.scale,y=h,x=c;r=[(f[0]-u.x)/y,(f[1]-u.y)/x],d&&Q(f,f,d),y/=v[0]*CE,x/=v[1]*CE;var _=DE(y,x);s=0/_,l=2*n.r/_-s}var w=n.colorStops.slice();w.sort(function(t,e){return t.offset-e.offset});for(var b=w.length,S=[],M=[],I=0;I=2){var D=S[0][0],C=S[1][0],L=S[0][1]*e.opacity,k=S[1][1]*e.opacity;t.type=o,t.method="none",t.focus="100%",t.angle=a,t.color=D,t.color2=C,t.colors=M.join(","),t.opacity=k,t.opacity2=L}"radial"===o&&(t.focusposition=r.join(","))}else BE(t,n,e.opacity)},FE=function(t,e){null!=e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof MM||BE(t,e.stroke,e.opacity)},WE=function(t,e,i,n){var o="fill"===e,a=t.getElementsByTagName(e)[0];null!=i[e]&&"none"!==i[e]&&(o||!o&&i.lineWidth)?(t[o?"filled":"stroked"]="true",i[e]instanceof MM&&EE(t,a),a||(a=u_(e)),o?GE(a,i,n):FE(a,i),OE(t,a)):(t[o?"filled":"stroked"]="false",EE(t,a))},HE=[[],[],[]],ZE=function(t,e){var i,n,o,a,r,s,l=bE.M,u=bE.C,h=bE.L,c=bE.A,d=bE.Q,f=[],p=t.data,g=t.len();for(a=0;a.01?N&&(O+=.0125):Math.abs(E-D)<1e-4?N&&OA?x-=.0125:x+=.0125:N&&ED?y+=.0125:y-=.0125),f.push(R,SE(((A-C)*M+b)*CE-LE),",",SE(((D-L)*I+S)*CE-LE),",",SE(((A+C)*M+b)*CE-LE),",",SE(((D+L)*I+S)*CE-LE),",",SE((O*M+b)*CE-LE),",",SE((E*I+S)*CE-LE),",",SE((y*M+b)*CE-LE),",",SE((x*I+S)*CE-LE)),r=y,s=x;break;case bE.R:var z=HE[0],B=HE[1];z[0]=p[a++],z[1]=p[a++],B[0]=z[0]+p[a++],B[1]=z[1]+p[a++],e&&(Q(z,z,e),Q(B,B,e)),z[0]=SE(z[0]*CE-LE),B[0]=SE(B[0]*CE-LE),z[1]=SE(z[1]*CE-LE),B[1]=SE(B[1]*CE-LE),f.push(" m ",z[0],",",z[1]," l ",B[0],",",z[1]," l ",B[0],",",B[1]," l ",z[0],",",B[1]);break;case bE.Z:f.push(" x ")}if(i>0){f.push(n);for(var V=0;V100&&(YE=0,jE={});var i,n=qE.style;try{n.font=t,i=n.fontFamily.split(",")[0]}catch(t){}e={style:n.fontStyle||"normal",variant:n.fontVariant||"normal",weight:n.fontWeight||"normal",size:0|parseFloat(n.fontSize||12),family:i||"Microsoft YaHei"},jE[t]=e,YE++}return e};!function(t,e){bb[t]=e}("measureText",function(t,e){var i=wE;XE||((XE=i.createElement("div")).style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",wE.body.appendChild(XE));try{XE.style.font=e}catch(t){}return XE.innerHTML="",XE.appendChild(i.createTextNode(t)),{width:XE.offsetWidth}});for(var $E=new de,JE=[Ab,di,fi,kn,aM],QE=0;QE=o&&u+1>=a){for(var h=[],c=0;c=o&&c+1>=a)return T_(0,s.components);l[i]=s}else l[i]=void 0}r++}();if(d)return d}},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 o=e.length,a=i.length,r=t.newPos,s=r-n,l=0;r+1=0;--n)if(e[n]===t)return!0;return!1}),i):null:i[0]},D_.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)}}},D_.prototype.addDom=function(t){this.getDefs(!0).appendChild(t)},D_.prototype.removeDom=function(t){var e=this.getDefs(!1);e&&t[this._domName]&&(e.removeChild(t[this._domName]),t[this._domName]=null)},D_.prototype.getDoms=function(){var t=this.getDefs(!1);if(!t)return[];var e=[];return d(this._tagNames,function(i){var n=t.getElementsByTagName(i);e=e.concat([].slice.call(n))}),e},D_.prototype.markAllUnused=function(){var t=this;d(this.getDoms(),function(e){e[t._markLabel]="0"})},D_.prototype.markUsed=function(t){t&&(t[this._markLabel]="1")},D_.prototype.removeUnused=function(){var t=this.getDefs(!1);if(t){var e=this;d(this.getDoms(),function(i){"1"!==i[e._markLabel]&&t.removeChild(i)})}},D_.prototype.getSvgProxy=function(t){return t instanceof kn?dR:t instanceof fi?fR:t instanceof aM?pR:dR},D_.prototype.getTextSvgElement=function(t){return t.__textSvgEl},D_.prototype.getSvgElement=function(t){return t.__svgEl},u(C_,D_),C_.prototype.addWithoutUpdate=function(t,e){if(e&&e.style){var i=this;d(["fill","stroke"],function(n){if(e.style[n]&&("linear"===e.style[n].type||"radial"===e.style[n].type)){var o,a=e.style[n],r=i.getDefs(!0);a._dom?(o=a._dom,r.contains(a._dom)||i.addDom(o)):o=i.add(a),i.markUsed(e);var s=o.getAttribute("id");t.setAttribute(n,"url(#"+s+")")}})}},C_.prototype.add=function(t){var e;if("linear"===t.type)e=this.createElement("linearGradient");else{if("radial"!==t.type)return Yw("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},C_.prototype.update=function(t){var e=this;D_.prototype.update.call(this,t,function(){var i=t.type,n=t._dom.tagName;"linear"===i&&"linearGradient"===n||"radial"===i&&"radialGradient"===n?e.updateDom(t,t._dom):(e.removeDom(t),e.add(t))})},C_.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 Yw("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,o=i.length;n0){var n,o,a=this.getDefs(!0),r=e[0],s=i?"_textDom":"_dom";r[s]?(o=r[s].getAttribute("id"),n=r[s],a.contains(n)||a.appendChild(n)):(o="zr"+this._zrId+"-clip-"+this.nextId,++this.nextId,(n=this.createElement("clipPath")).setAttribute("id",o),a.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);bt(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(#"+o+")"),e.length>1&&this.updateDom(n,e.slice(1),i)}else t&&t.setAttribute("clip-path","none")},L_.prototype.markUsed=function(t){var e=this;t.__clipPaths&&t.__clipPaths.length>0&&d(t.__clipPaths,function(t){t._dom&&D_.prototype.markUsed.call(e,t._dom),t._textDom&&D_.prototype.markUsed.call(e,t._textDom)})},u(k_,D_),k_.prototype.addWithoutUpdate=function(t,e){if(e&&P_(e.style)){var i,n=e.style;n._shadowDom?(i=n._shadowDom,this.getDefs(!0).contains(n._shadowDom)||this.addDom(i)):i=this.add(e),this.markUsed(e);var o=i.getAttribute("id");t.style.filter="url(#"+o+")"}},k_.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},k_.prototype.update=function(t,e){var i=e.style;if(P_(i)){var n=this;D_.prototype.update.call(this,e,function(t){n.updateDom(e,t._shadowDom)})}else this.remove(t,i)},k_.prototype.remove=function(t,e){null!=e._shadowDomId&&(this.removeDom(e),t.style.filter="")},k_.prototype.updateDom=function(t,e){var i=e.getElementsByTagName("feDropShadow");i=0===i.length?this.createElement("feDropShadow"):i[0];var n,o,a,r,s=t.style,l=t.scale?t.scale[0]||1:1,u=t.scale?t.scale[1]||1:1;if(s.shadowBlur||s.shadowOffsetX||s.shadowOffsetY)n=s.shadowOffsetX||0,o=s.shadowOffsetY||0,a=s.shadowBlur,r=s.shadowColor;else{if(!s.textShadowBlur)return void this.removeDom(e,s);n=s.textShadowOffsetX||0,o=s.textShadowOffsetY||0,a=s.textShadowBlur,r=s.textShadowColor}i.setAttribute("dx",n/l),i.setAttribute("dy",o/u),i.setAttribute("flood-color",r);var h=a/2/l+" "+a/2/u;i.setAttribute("stdDeviation",h),e.setAttribute("x","-100%"),e.setAttribute("y","-100%"),e.setAttribute("width",Math.ceil(a/2*200)+"%"),e.setAttribute("height",Math.ceil(a/2*200)+"%"),e.appendChild(i),s._shadowDom=e},k_.prototype.markUsed=function(t){var e=t.style;e&&e._shadowDom&&D_.prototype.markUsed.call(this,e._shadowDom)};var xR=function(t,e,i,n){this.root=t,this.storage=e,this._opts=i=a({},i||{});var o=p_("svg");o.setAttribute("xmlns","http://www.w3.org/2000/svg"),o.setAttribute("version","1.1"),o.setAttribute("baseProfile","full"),o.style.cssText="user-select:none;position:absolute;left:0;top:0;",this.gradientManager=new C_(n,o),this.clipPathManager=new L_(n,o),this.shadowManager=new k_(n,o);var r=document.createElement("div");r.style.cssText="overflow:hidden;position:relative",this._svgRoot=o,this._viewport=r,t.appendChild(r),r.appendChild(o),this.resize(i.width,i.height),this._visibleList=[]};xR.prototype={constructor:xR,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=this._svgRoot,n=this._visibleList,o=t.length,a=[];for(e=0;e=0;--n)if(e[n]===t)return!0;return!1}),i):null:i[0]},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 o=i.style;o.width=t+"px",o.height=e+"px";var a=this._svgRoot;a.setAttribute("width",t),a.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],o=["paddingLeft","paddingTop"][t],a=["paddingRight","paddingBottom"][t];if(null!=e[i]&&"auto"!==e[i])return parseFloat(e[i]);var r=this.root,s=document.defaultView.getComputedStyle(r);return(r[n]||N_(s[i])||N_(r.style[i]))-(N_(s[o])||0)-(N_(s[a])||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}},d(["getLayer","insertLayer","eachLayer","eachBuiltinLayer","eachOtherLayer","getLayers","modLayer","delLayer","clearLayer","toDataURL","pathToImage"],function(t){xR.prototype[t]=F_(t)}),Ti("svg",xR),t.version="4.2.0",t.dependencies={zrender:"4.0.6"},t.PRIORITY=zT,t.init=function(t,e,i){var n=Ls(t);if(n)return n;var o=new ls(t,e,i);return o.id="ec_"+tA++,JT[o.id]=o,Fi(t,iA,o.id),Ds(o),o},t.connect=function(t){if(y(t)){var e=t;t=null,LT(e,function(e){null!=e.group&&(t=e.group)}),t=t||"g_"+eA++,LT(e,function(e){e.group=t})}return QT[t]=!0,t},t.disConnect=Cs,t.disconnect=nA,t.dispose=function(t){"string"==typeof t?t=JT[t]:t instanceof ls||(t=Ls(t)),t instanceof ls&&!t.isDisposed()&&t.dispose()},t.getInstanceByDom=Ls,t.getInstanceById=function(t){return JT[t]},t.registerTheme=ks,t.registerPreprocessor=Ps,t.registerProcessor=Ns,t.registerPostUpdate=function(t){YT.push(t)},t.registerAction=Os,t.registerCoordinateSystem=Es,t.getCoordinateSystemDimensions=function(t){var e=Ga.get(t);if(e)return e.getDimensionsInfo?e.getDimensionsInfo():e.dimensions.slice()},t.registerLayout=Rs,t.registerVisual=zs,t.registerLoading=Vs,t.extendComponentModel=Gs,t.extendComponentView=Fs,t.extendSeriesModel=Ws,t.extendChartView=Hs,t.setCanvasCreator=function(t){e("createCanvas",t)},t.registerMap=function(t,e,i){AT.registerMap(t,e,i)},t.getMap=function(t){var e=AT.retrieveMap(t);return e&&e[0]&&{geoJson:e[0].geoJSON,specialAreas:e[0].specialAreas}},t.dataTool={},t.zrender=Wb,t.number=jM,t.format=eI,t.throttle=kr,t.helper=$A,t.matrix=Sw,t.vector=cw,t.color=Ww,t.parseGeoJSON=QA,t.parseGeoJson=nD,t.util=oD,t.graphic=aD,t.List=pA,t.Model=Po,t.Axis=iD,t.env=U_}); diff --git a/pages/domoTest/ec-canvas/wx-canvas.js b/pages/domoTest/ec-canvas/wx-canvas.js deleted file mode 100644 index 23ce9ad..0000000 --- a/pages/domoTest/ec-canvas/wx-canvas.js +++ /dev/null @@ -1,97 +0,0 @@ -export default class WxCanvas { - constructor(ctx, canvasId) { - this.ctx = ctx; - this.canvasId = canvasId; - this.chart = null; - - // this._initCanvas(zrender, ctx); - this._initStyle(ctx); - this._initEvent(); - } - - getContext(contextType) { - if (contextType === '2d') { - return this.ctx; - } - } - - // canvasToTempFilePath(opt) { - // if (!opt.canvasId) { - // opt.canvasId = this.canvasId; - // } - - // return wx.canvasToTempFilePath(opt, this); - // } - - setChart(chart) { - this.chart = chart; - } - - attachEvent () { - // noop - } - - detachEvent() { - // noop - } - - _initCanvas(zrender, ctx) { - zrender.util.getContext = function () { - return ctx; - }; - - zrender.util.$override('measureText', function (text, font) { - ctx.font = font || '12px sans-serif'; - return ctx.measureText(text); - }); - } - - _initStyle(ctx) { - var styles = ['fillStyle', 'strokeStyle', 'globalAlpha', - 'textAlign', 'textBaseAlign', 'shadow', 'lineWidth', - 'lineCap', 'lineJoin', 'lineDash', 'miterLimit', 'fontSize']; - - styles.forEach(style => { - Object.defineProperty(ctx, style, { - set: value => { - if (style !== 'fillStyle' && style !== 'strokeStyle' - || value !== 'none' && value !== null - ) { - ctx['set' + style.charAt(0).toUpperCase() + style.slice(1)](value); - } - } - }); - }); - - ctx.createRadialGradient = () => { - return ctx.createCircularGradient(arguments); - }; - } - - _initEvent() { - this.event = {}; - const eventNames = [{ - wxName: 'touchStart', - ecName: 'mousedown' - }, { - wxName: 'touchMove', - ecName: 'mousemove' - }, { - wxName: 'touchEnd', - ecName: 'mouseup' - }, { - wxName: 'touchEnd', - ecName: 'click' - }]; - - eventNames.forEach(name => { - this.event[name.wxName] = e => { - const touch = e.touches[0]; - this.chart.getZr().handler.dispatch(name.ecName, { - zrX: name.wxName === 'tap' ? touch.clientX : touch.x, - zrY: name.wxName === 'tap' ? touch.clientY : touch.y - }); - }; - }); - } -} diff --git a/pages/domoTest/getFormId/getformId.js b/pages/domoTest/getFormId/getformId.js deleted file mode 100644 index b58dd30..0000000 --- a/pages/domoTest/getFormId/getformId.js +++ /dev/null @@ -1,71 +0,0 @@ -// pages/getFormId/getformId.js -const API = require('../../../utils/api.js'); -const AJAX = require('../../../utils/ajax.js'); -Page({ - - /** - * 页面的初始数据 - */ - data: { - - }, - - /** - * 生命周期函数--监听页面加载 - */ - onLoad: function (options) { - - }, - submitInfo:function(e) { - AJAX.saveFormId(e.detail.formId) - }, - - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady: function () { - - }, - - /** - * 生命周期函数--监听页面显示 - */ - onShow: function () { - - }, - - /** - * 生命周期函数--监听页面隐藏 - */ - onHide: function () { - - }, - - /** - * 生命周期函数--监听页面卸载 - */ - onUnload: function () { - - }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh: function () { - - }, - - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom: function () { - - }, - - /** - * 用户点击右上角分享 - */ - onShareAppMessage: function () { - - } -}) \ No newline at end of file diff --git a/pages/domoTest/getFormId/getformId.json b/pages/domoTest/getFormId/getformId.json deleted file mode 100644 index 8835af0..0000000 --- a/pages/domoTest/getFormId/getformId.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "usingComponents": {} -} \ No newline at end of file diff --git a/pages/domoTest/getFormId/getformId.wxml b/pages/domoTest/getFormId/getformId.wxml deleted file mode 100644 index 9358b50..0000000 --- a/pages/domoTest/getFormId/getformId.wxml +++ /dev/null @@ -1,4 +0,0 @@ - -
- -
diff --git a/pages/domoTest/getFormId/getformId.wxss b/pages/domoTest/getFormId/getformId.wxss deleted file mode 100644 index 14587a7..0000000 --- a/pages/domoTest/getFormId/getformId.wxss +++ /dev/null @@ -1 +0,0 @@ -/* pages/getFormId/getformId.wxss */ \ No newline at end of file diff --git a/pages/domoTest/kyhbTest/kyhbTest.js b/pages/domoTest/kyhbTest/kyhbTest.js deleted file mode 100644 index 61e9c94..0000000 --- a/pages/domoTest/kyhbTest/kyhbTest.js +++ /dev/null @@ -1,160 +0,0 @@ -// pages/compose/compose.js -const API = require('../../../utils/api.js'); -const TOAST = require('../../../utils/toast.js'); -const AJAX = require('../../../utils/ajax.js'); -Page({ - - /** - * 页面的初始数据 - */ - data: { - // 合成 - composeList: [], - // 背景图片 - background: 'images/kyhb/colour/1.jpg', - // 瓷砖选择 - ceramicTileList: [], - // 颜色选择 - colourList: [], - //服务器图片地址 - imageHost: API.api.imageHost, - }, - /** - * 瓷砖选择 - */ - getCeramicTile: function (e) { - let indexType = e.currentTarget.dataset.type; - let composeList = this.data.composeList - composeList.forEach(item => { - item.image = indexType - }) - this.setData({ - composeList: composeList - }) - console.log(`indexType:`, this.data.composeList) - }, - /** - * 颜色选择 - */ - getColour: function (e) { - let background = e.currentTarget.dataset.type; - this.setData({ - background: background - }) - }, - //获取网络图片 - getConsumeType: function (type) { - let that = this; - let requestUrl = API.api.consumeTypes + '/type?type=' + type; - AJAX.getRequest(requestUrl).then(response => { - let colourList = [] - let res = response.data - res.forEach(item => { - colourList.push({ - image: item.icon1 - }) - }) - that.setData({ - colourList: colourList - }) - }) - }, - /** - * 生命周期函数--监听页面加载 - */ - onLoad: function (options) { - let composeList = []; - let ceramicTileList = []; - // let colourList = []; - for (let i = 0; i < 9; i++) { - composeList.push({ - image: 'images/kyhb/ceramictile/1.jpg' - }) - } - this.setData({ - composeList: composeList, - // ceramicTileList: ceramicTileList, - // colourList: colourList - }) - }, - - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady: function () { - - }, - - /** - * 生命周期函数--监听页面显示 - */ - onShow: function () { - // 获取瓷砖选择信息 - this.getKyhbType(0) - // 获取颜色选择信息 - this.getKyhbType(1) - }, - getKyhbType: function(type) { - let that = this; - let requestUrl = API.api.kyhbs + '?type=' + type; - AJAX.getRequest(requestUrl).then(response => { - let res = response.data - let TypeList = [] - res.forEach(item => { - TypeList.push({ - image: item.url - }) - }) - switch (type) { - // 瓷砖选择 - case 0: - that.setData({ - ceramicTileList: TypeList - }) - break; - // 颜色选择 - case 1: - that.setData({ - colourList: TypeList - }) - break; - } - }) - - }, - - /** - * 生命周期函数--监听页面隐藏 - */ - onHide: function () { - - }, - - /** - * 生命周期函数--监听页面卸载 - */ - onUnload: function () { - - }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh: function () { - - }, - - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom: function () { - - }, - - /** - * 用户点击右上角分享 - */ - onShareAppMessage: function () { - - } -}) \ No newline at end of file diff --git a/pages/domoTest/kyhbTest/kyhbTest.json b/pages/domoTest/kyhbTest/kyhbTest.json deleted file mode 100644 index 8835af0..0000000 --- a/pages/domoTest/kyhbTest/kyhbTest.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "usingComponents": {} -} \ No newline at end of file diff --git a/pages/domoTest/kyhbTest/kyhbTest.wxml b/pages/domoTest/kyhbTest/kyhbTest.wxml deleted file mode 100644 index 84a4249..0000000 --- a/pages/domoTest/kyhbTest/kyhbTest.wxml +++ /dev/null @@ -1,28 +0,0 @@ -康源环保展示效果图 - - - - - - - - - - - 瓷砖选择 - - - - - - - - - 颜色选择 - - - - - - - diff --git a/pages/domoTest/kyhbTest/kyhbTest.wxss b/pages/domoTest/kyhbTest/kyhbTest.wxss deleted file mode 100644 index 4c54117..0000000 --- a/pages/domoTest/kyhbTest/kyhbTest.wxss +++ /dev/null @@ -1,56 +0,0 @@ -/* pages/compose/compose.wxss */ - -.title { - font-size: 40rpx; - display: flex; - justify-content: center; -} - -.kyhb { - position: relative; - display: flex; - flex-direction: row; - flex-wrap: wrap; -} - -.kyhb_view { - width: 32%; - padding: 4rpx 4rpx; - height: 200rpx; - margin-left: 3rpx; -} - -.kyhb_view image { - width: 100%; - height: 100%; -} -.choice { - display: flex; - flex-direction: row; - flex-wrap: wrap; - width: 100%; -} -/* 瓷砖选择 */ -.ceramic_tile { - width: 49%; - border-right: solid 2rpx black; -} -.ceramic { - display: flex; - flex-direction: row; - flex-wrap: wrap; - width: 100%; -} -.ceramic_tile_image { - width: 31%; - height: 120rpx; - padding: 3rpx 4rpx; -} -.ceramic_tile image { - width: 100%; - height: 100%; -} -/* 颜色选择 */ -.colour { - width: 50%; -} \ No newline at end of file diff --git a/pages/domoTest/regionTest/test.js b/pages/domoTest/regionTest/test.js deleted file mode 100644 index 9594f4f..0000000 --- a/pages/domoTest/regionTest/test.js +++ /dev/null @@ -1,187 +0,0 @@ -// pages/test/test.js -// 引入腾讯地图 -// var QQMapWx = require('../../utils/qqmap-wx-jssdk.js') -// var qqmapsdk; -const app = getApp(); -Page({ - - /** - * 页面的初始数据 - */ - data: { - // 游玩的路线 - polyline: [{ - points: [{ - longitude: 113.3245211, - latitude: 23.10229 - }, { - longitude: 113.324520, - latitude: 23.21229 - }], - color: "#FF0000DD", - width: 2, - dottedLine: true - }], - // 标记点 - markers: [], - longitude: '', - latitude: '', - // 省 - province: '', - // 市 - city: '', - // 区 - area: '', - // 地址信息 - address: '', - region: [] - }, - - /** - * 生命周期函数--监听页面加载 - */ - onLoad: function(options) { - // let that = this - // 实例化API核心类 - // qqmapsdk = new QQMapWx({ - // key: 'GSUBZ-UACKQ-NXJ5Z-GL47V-CIVU2-7YB4X' - // }) - // 获取当前位置信息 - this.getWxLocation() - }, - /** - * 获取当前位置信息 - */ - getWxLocation() { - let that = this - wx.getLocation({ - type: 'gcj02', - success: function(res) { - // 调用腾讯地图显示位置信息 - that.reverseGeocoder(res.latitude, res.longitude) - }, - }) - }, - /** - *调用腾讯地图显示位置信息 - * latitude:纬度 - * longitude:经度 - */ - reverseGeocoder(latitude, longitude) { - console.log(app.globalData) - let that = this - app.globalData.qqmapsdk.reverseGeocoder({ - location: { - latitude: latitude, - longitude: longitude - }, - success: function(skdRes) { - // 坐标显示 - let markers = [] - markers.push({ - iconPath: "../../image/icon/biaoji.png", - id: 0, - latitude: latitude, - longitude: longitude, - width: 30, - height: 30 - }) - //当前位置信息 - let region = [] - let province = skdRes.result.address_component.province - let city = skdRes.result.address_component.city - let district = skdRes.result.address_component.district - region.push(province) - region.push(city) - region.push(district) - that.setData({ - markers: markers, - address: skdRes.result.address, - region: region - }) - } - }) - }, - /** - * 测试调用接口信息 - */ - ontest() { - qqmapsdk.search({ - keyword: '景点', - success: function(response) { - console.log(response) - }, - fail: function(err) { - console.log(err) - } - }) - }, - /** - * 下拉触发 - */ - bindRegionChange: function(e) { - let that = this - console.log('picker发送选择改变,携带值为', e.detail.value) - this.setData({ - region: e.detail.value - }) - let address = e.detail.value[0] + e.detail.value[1] + e.detail.value[2] - console.log(`获取到的地址是:` + address) - // 调用腾讯地图进行定位 - qqmapsdk.geocoder({ - address: address, - success: function(response) { - console.log(`解析成功啦!`, response) - that.reverseGeocoder(response.result.location.lat,response.result.location.lng) - } - }) - }, - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady: function() { - - }, - - /** - * 生命周期函数--监听页面显示 - */ - onShow: function() { - - }, - - /** - * 生命周期函数--监听页面隐藏 - */ - onHide: function() { - - }, - - /** - * 生命周期函数--监听页面卸载 - */ - onUnload: function() { - - }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh: function() { - - }, - - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom: function() { - - }, - - /** - * 用户点击右上角分享 - */ - onShareAppMessage: function() { - - } -}) \ No newline at end of file diff --git a/pages/domoTest/regionTest/test.json b/pages/domoTest/regionTest/test.json deleted file mode 100644 index 8835af0..0000000 --- a/pages/domoTest/regionTest/test.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "usingComponents": {} -} \ No newline at end of file diff --git a/pages/domoTest/regionTest/test.wxml b/pages/domoTest/regionTest/test.wxml deleted file mode 100644 index eae3043..0000000 --- a/pages/domoTest/regionTest/test.wxml +++ /dev/null @@ -1,22 +0,0 @@ - -当前位置在:{{address}} - - - - - 当前位置:{{region[0]}},{{region[1]}},{{region[2]}} - - - - - - diff --git a/pages/domoTest/regionTest/test.wxss b/pages/domoTest/regionTest/test.wxss deleted file mode 100644 index 3ee2480..0000000 --- a/pages/domoTest/regionTest/test.wxss +++ /dev/null @@ -1 +0,0 @@ -/* pages/test/test.wxss */ \ No newline at end of file diff --git a/pages/domoTest/uploadTest/uploadTest.js b/pages/domoTest/uploadTest/uploadTest.js deleted file mode 100644 index e6af127..0000000 --- a/pages/domoTest/uploadTest/uploadTest.js +++ /dev/null @@ -1,115 +0,0 @@ -// pages/domoTest/uploadTest/uploadTest.js -const API = require('../../../utils/api.js') -const AJAX = require('../../../utils/ajax.js') -Page({ - - /** - * 页面的初始数据 - */ - data: { - tempFilePaths: [], - imagePath: '' - }, - - /** - * 生命周期函数--监听页面加载 - */ - onLoad: function (options) { - - }, - - /** - * 上传图片 - */ - uploadImage:function() { - let that = this - wx.chooseImage({ - count: 9, - success: function(res) { - console.log(res) - const tempFilePaths = res.tempFilePaths; - let requestUrl = API.api.uploadFile + '/bookkeeping/bookkeeping' - wx.uploadFile({ - url: requestUrl, - filePath: tempFilePaths[0], - name: 'file', - header: { - "Content-Type": "multipart/form-data", - "Authorization":" eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1Njg3MzUzNTF9.7-4_1AJIQRtHEsuXHB00HXxHv9uPjJ828nb4pT4xv3s" - }, - formData: { - 'msg': '提交图片' - }, - success: function (res) { - console.log(JSON.parse(res.data)); - let resData = JSON.parse(res.data) - if (resData.code == 200) { - wx.showToast({ - title: '反馈成功!获取到的图片路径是:' + resData.data, - }) - that.setData({ - imagePath: API.api.imageHost + resData.data - }) - } else { - wx.showToast({ - title: '请稍后再传哦!', - }) - } - } - }) - that.setData({ - tempFilePaths:tempFilePaths - }) - }, - }) - }, - - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady: function () { - - }, - - /** - * 生命周期函数--监听页面显示 - */ - onShow: function () { - - }, - - /** - * 生命周期函数--监听页面隐藏 - */ - onHide: function () { - - }, - - /** - * 生命周期函数--监听页面卸载 - */ - onUnload: function () { - - }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh: function () { - - }, - - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom: function () { - - }, - - /** - * 用户点击右上角分享 - */ - onShareAppMessage: function () { - - } -}) \ No newline at end of file diff --git a/pages/domoTest/uploadTest/uploadTest.json b/pages/domoTest/uploadTest/uploadTest.json deleted file mode 100644 index 8835af0..0000000 --- a/pages/domoTest/uploadTest/uploadTest.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "usingComponents": {} -} \ No newline at end of file diff --git a/pages/domoTest/uploadTest/uploadTest.wxml b/pages/domoTest/uploadTest/uploadTest.wxml deleted file mode 100644 index de48105..0000000 --- a/pages/domoTest/uploadTest/uploadTest.wxml +++ /dev/null @@ -1,6 +0,0 @@ - - - - 上传后的图片显示 - - diff --git a/pages/domoTest/uploadTest/uploadTest.wxss b/pages/domoTest/uploadTest/uploadTest.wxss deleted file mode 100644 index 2f00e52..0000000 --- a/pages/domoTest/uploadTest/uploadTest.wxss +++ /dev/null @@ -1 +0,0 @@ -/* pages/domoTest/uploadTest/uploadTest.wxss */ \ No newline at end of file diff --git a/pages/domoTest/wxchartTest/wxChatTest.js b/pages/domoTest/wxchartTest/wxChatTest.js deleted file mode 100644 index 0f8559a..0000000 --- a/pages/domoTest/wxchartTest/wxChatTest.js +++ /dev/null @@ -1,107 +0,0 @@ -import * as echarts from '../ec-canvas/echarts'; -const API = require('../../../utils/api.js') -const AJAX = require('../../../utils/ajax.js') - -const app = getApp(); - -function setOption(chart, xdata, ydata, titleName) { - const option = { - title: { - text: titleName, - padding: [10, 0, 0, 20], - textStyle: { - fontSize: 16, - color: '#000000' - }, - top: '10rpx' - }, - backgroundColor: "#fff", - color: ["#006EFF", "#67E0E3", "#9FE6B8"], - animation: false, - grid: { - show: false - }, - xAxis: { - type: 'category', - data: xdata, //x轴上的数据是动态的,所以我作为参数传进来 - axisLabel: { - interval: 5, //x轴间隔多少显示刻度 - fontSize: 8 - } - }, - yAxis: { - x: 'center', - scale: true, - type: 'value', - axisLabel: { - formatter: function (value) { - var val = value / 100 + '元'; - return val - } - } - }, - series: [{ - type: 'line', - data: ydata, //y轴上的数据也是动态的,也作为参数传进来 - symbol: 'none', - lineStyle: { - width: 1 - } - }] - }; - chart.setOption(option) -} - -Page({ - data: { - ecOne: { - lazyLoad: true - }, - timer: '', //因为我要实时刷新,所以设置了个定时器 - xData: [], - yData: [], - titleName: '' - }, - onLoad: function (options) { - var _this = this; - this.getOneOption(`收入`); - this.setData({ //每隔一分钟刷新一次 - timer: setInterval(function () { - _this.getOneOption(`支出`); - }, 6000) - }) - }, - onReady: function () { //这一步是一定要注意的 - this.oneComponent = this.selectComponent('#mychart-one'); - }, - onUnload: function () { - clearInterval(this.data.timer) - }, - init_one: function () { //初始化第一个图表 - this.oneComponent.init((canvas, width, height) => { - const chart = echarts.init(canvas, null, { - width: width, - height: height - }); - setOption(chart, this.data.xData, this.data.yData, this.data.titleName) - this.chart = chart; - return chart; - }); - }, - getOneOption: function (titleName) { //这一步其实就要给图表加上数据 - var _this = this; - let resultUrl = API.api.assetsDetails + '/35/1571825706341' - AJAX.getRequest(resultUrl).then(response => { - console.log(response.data) - let resData = response.data - //res.xdata和res.ydata是我们需要的数据,即在x轴和y轴展示的数据,记住一定是数组哦! - let yDataList = titleName == '支出' ? resData.pays : resData.incomes - _this.setData({ - xData: resData.categories, - yData: yDataList, - titleName: titleName - }) - _this.init_one() - }) - }, -}) \ No newline at end of file diff --git a/pages/domoTest/wxchartTest/wxChatTest.wxml b/pages/domoTest/wxchartTest/wxChatTest.wxml deleted file mode 100644 index 6271378..0000000 --- a/pages/domoTest/wxchartTest/wxChatTest.wxml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/pages/domoTest/wxchartTest/wxChatTest.wxss b/pages/domoTest/wxchartTest/wxChatTest.wxss deleted file mode 100644 index 3005230..0000000 --- a/pages/domoTest/wxchartTest/wxChatTest.wxss +++ /dev/null @@ -1,19 +0,0 @@ -.content { - width: 100%; - background-color: #F2F2F2; - overflow-y: auto; -} -#mychart-line { - position: absolute; - top: 0; - height: 50%; - left: 0; - right: 0; -} -#mychart-pie { - position: absolute; - top: 50%; - height: 50%; - left: 0; - right: 0; -} \ No newline at end of file diff --git a/pages/index/address/address.js b/pages/index/address/address.js index 3eb65f1..a3ad511 100644 --- a/pages/index/address/address.js +++ b/pages/index/address/address.js @@ -137,13 +137,18 @@ Page({ */ saveAddress:function() { console.log(`来到了保存界面` + this.data.form) - - if(this.data.form === 'bookkeeping') { + console.log(`地址详情` + this.data.addressDetail) + if (this.data.form === 'consume') { + // 来自记账的 + wx.reLaunch({ + url: '../../consume/consume?form=address&address=' + this.data.address + '&addressDetail=' + this.data.addressDetail + }) } else if(this.data.form === 'bookkeepingDetail') { + console.log(`匹配到了bookkeepingDetail`) // 来自记账详情的 - wx.navigateTo({ - url: '../bookkeepingdetail/bookkeepingdetail?form=address&address=' + this.data.address + '&addressDetail' + this.data.addressDetail, + wx.reLaunch({ + url: '../bookkeepingdetail/bookkeepingdetail?form=address&address=' + this.data.address + '&addressDetail=' + this.data.addressDetail, }) } }, diff --git a/pages/index/bookkeepingdetail/bookkeepingdetail.js b/pages/index/bookkeepingdetail/bookkeepingdetail.js index 7fddb89..301f93e 100644 --- a/pages/index/bookkeepingdetail/bookkeepingdetail.js +++ b/pages/index/bookkeepingdetail/bookkeepingdetail.js @@ -30,8 +30,17 @@ Page({ }) // 获取用户记账信息 this.getBookkeepingById(options.bookkeepingid); + } else if(options.form === 'address'){ + let bookkeepingObj = wx.getStorageSync('bookkeepingObj') + bookkeepingObj.address = options.address + bookkeepingObj.addressDetail = options.addressDetail + this.setData({ + bookkeepingObj: bookkeepingObj, + updateShow: true + }) + this.geocoder(options.address + options.addressDetail) } else{ - console.log(`从其他页面跳转过来的!!!携带的form:` + options.form) + console.log(`来自其他消息` + options.form) } }, /** @@ -186,7 +195,7 @@ Page({ // 缓存对于的数据信息 wx.setStorageSync('bookkeepingObj', this.data.bookkeepingObj) wx.navigateTo({ - url: '../address/address?form=bookkeeping&address=' + this.data.bookkeepingObj.address, + url: '../address/address?form=bookkeepingDetail&address=' + this.data.bookkeepingObj.address + '&addressDetail=' + this.data.bookkeepingObj.addressDetail, }) }, /** diff --git a/pages/index/bookkeepingdetail/bookkeepingdetail.wxml b/pages/index/bookkeepingdetail/bookkeepingdetail.wxml index bd39dc4..a012031 100644 --- a/pages/index/bookkeepingdetail/bookkeepingdetail.wxml +++ b/pages/index/bookkeepingdetail/bookkeepingdetail.wxml @@ -45,7 +45,7 @@
- 消费地点 {{bookkeepingObj.address}} + 消费地点 {{bookkeepingObj.address}}{{bookkeepingObj.addressDetail}} diff --git a/pages/me/me.js b/pages/me/me.js index d89d6a3..d4dbddd 100644 --- a/pages/me/me.js +++ b/pages/me/me.js @@ -13,6 +13,7 @@ Page({ tempUserInfo: {}, // 显示用户修改信息 isShow: false, + switch1:false }, /** @@ -145,5 +146,16 @@ Page({ */ onShareAppMessage: function() { + }, + /** + * 切换是否发送模板消息 + */ + onChange(event) { + const detail = event.detail; + console.log(detail) + this.setData({ + 'switch1': detail.value + }) + } }) \ No newline at end of file diff --git a/pages/me/me.json b/pages/me/me.json index 71d8fa9..35adee2 100644 --- a/pages/me/me.json +++ b/pages/me/me.json @@ -3,5 +3,14 @@ "navigationBarTextStyle": "white", "navigationBarTitleText": "个人中心", "backgroundColor": "#ffffff", - "backgroundTextStyle": "light" + "backgroundTextStyle": "light", + "usingComponents": { + "i-panel": "../../template/dist/panel/index", + "i-badge": "../../template/dist/badge/index", + "i-avatar": "../../template/dist/avatar/index", + "i-cell-group": "../../template/dist/cell-group/index", + "i-cell": "../../template/dist/cell/index", + "i-spin": "../../template/dist/spin/index", + "i-switch": "../../template/dist/switch/index" + } } \ No newline at end of file diff --git a/pages/me/me.wxml b/pages/me/me.wxml index aaab974..47d6706 100644 --- a/pages/me/me.wxml +++ b/pages/me/me.wxml @@ -1,27 +1,53 @@ - + - + + + + {{userInfo.nickName}} + + + + + + 开启 + 关闭 + + + + + + + + + + + + + + @@ -31,6 +57,4 @@ - - - + \ No newline at end of file diff --git a/pages/me/me.wxss b/pages/me/me.wxss index 0f71fa1..cfbcec0 100644 --- a/pages/me/me.wxss +++ b/pages/me/me.wxss @@ -6,10 +6,12 @@ } .wx_avatar { - width: 100%; + width: 96%; height: 300rpx; + margin: 2% 2%; background: #1E95F1; text-align: center; + border-radius: 3% } .wx_avatar button { width: 120rpx; diff --git a/project.config.json b/project.config.json index e12c7a4..fd6005d 100644 --- a/project.config.json +++ b/project.config.json @@ -6,6 +6,7 @@ "setting": { "urlCheck": false, "es6": true, + "enhance": false, "postcss": true, "minified": true, "newFeature": true, @@ -22,7 +23,7 @@ } }, "compileType": "miniprogram", - "libVersion": "2.6.5", + "libVersion": "2.9.1", "appid": "wx883b407ed6f14b55", "projectname": "%E6%B6%88%E8%B4%B9%E6%98%8E%E7%BB%86%E5%90%9B", "debugOptions": { diff --git a/template/dist/action-sheet/index.js b/template/dist/action-sheet/index.js new file mode 100644 index 0000000..2db31aa --- /dev/null +++ b/template/dist/action-sheet/index.js @@ -0,0 +1,47 @@ +Component({ + externalClasses: ['i-class', 'i-class-mask', 'i-class-header'], + + options: { + multipleSlots: true + }, + + properties: { + visible: { + type: Boolean, + value: false + }, + maskClosable: { + type: Boolean, + value: true + }, + showCancel: { + type: Boolean, + value: false + }, + cancelText: { + type: String, + value: '取消' + }, + actions: { + type: Array, + value: [] + } + }, + + methods: { + handleClickMask () { + if (!this.data.maskClosable) return; + this.handleClickCancel(); + }, + + handleClickItem ({ currentTarget = {} }) { + const dataset = currentTarget.dataset || {}; + const { index } = dataset; + this.triggerEvent('click', { index }); + }, + + handleClickCancel () { + this.triggerEvent('cancel'); + } + } +}); diff --git a/template/dist/action-sheet/index.json b/template/dist/action-sheet/index.json new file mode 100644 index 0000000..6b1e67d --- /dev/null +++ b/template/dist/action-sheet/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": + { + "i-button": "../button/index", + "i-icon": "../icon/index" + } +} diff --git a/template/dist/action-sheet/index.wxml b/template/dist/action-sheet/index.wxml new file mode 100644 index 0000000..332f393 --- /dev/null +++ b/template/dist/action-sheet/index.wxml @@ -0,0 +1,23 @@ + + + + + + + + + {{ item.name }} + + + + + {{ cancelText }} + + diff --git a/template/dist/action-sheet/index.wxss b/template/dist/action-sheet/index.wxss new file mode 100644 index 0000000..05c6f04 --- /dev/null +++ b/template/dist/action-sheet/index.wxss @@ -0,0 +1 @@ +.i-as{position:fixed;width:100%;box-sizing:border-box;left:0;right:0;bottom:0;background:#f7f7f7;transform:translate3d(0,100%,0);transform-origin:center;transition:all .2s ease-in-out;z-index:900;visibility:hidden}.i-as-show{transform:translate3d(0,0,0);visibility:visible}.i-as-mask{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.7);z-index:900;transition:all .2s ease-in-out;opacity:0;visibility:hidden}.i-as-mask-show{opacity:1;visibility:visible}.i-as-action-item{position:relative}.i-as-action-item::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-bottom-width:1px}.i-as-header{background:#fff;text-align:center;position:relative;font-size:12px;color:#80848f}.i-as-header::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-bottom-width:1px}.i-as-cancel{margin-top:6px}.i-as-btn-loading{display:inline-block;vertical-align:middle;margin-right:10px;width:12px;height:12px;background:0 0;border-radius:50%;border:2px solid #e5e5e5;border-color:#666 #e5e5e5 #e5e5e5 #e5e5e5;animation:btn-spin .6s linear;animation-iteration-count:infinite}.i-as-btn-text{display:inline-block;vertical-align:middle}.i-as-btn-icon{font-size:14px!important;margin-right:4px}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/template/dist/alert/index.js b/template/dist/alert/index.js new file mode 100644 index 0000000..461b67d --- /dev/null +++ b/template/dist/alert/index.js @@ -0,0 +1,37 @@ +Component({ + externalClasses: ['i-class'], + options: { + multipleSlots: true + }, + properties: { + //info, success, warning, error + type: { + type: String, + value: 'info' + }, + closable: { + type: Boolean, + value: false + }, + showIcon: { + type: Boolean, + default: false + }, + desc: { + type: Boolean, + default: false + }, + }, + data: { + closed: false + }, + methods: { + handleTap() { + this.setData({ + closed: !this.data.closed, + }); + this.triggerEvent('close'); + }, + + } +}); diff --git a/template/dist/alert/index.json b/template/dist/alert/index.json new file mode 100644 index 0000000..db3afc0 --- /dev/null +++ b/template/dist/alert/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-icon": "../icon/index" + } +} diff --git a/template/dist/alert/index.wxml b/template/dist/alert/index.wxml new file mode 100644 index 0000000..eebabde --- /dev/null +++ b/template/dist/alert/index.wxml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/template/dist/alert/index.wxss b/template/dist/alert/index.wxss new file mode 100644 index 0000000..0e61fce --- /dev/null +++ b/template/dist/alert/index.wxss @@ -0,0 +1 @@ +.i-alert{position:relative;margin:10px;padding:8px 48px 8px 16px;font-size:14px;border-radius:2px;color:#fff;background:#f7f7f7;color:#495060}.i-alert.i-alert-with-icon{padding:8px 48px 8px 38px}.i-alert-info{color:#fff;background:#2db7f5}.i-alert-success{color:#fff;background:#19be6b}.i-alert-warning{color:#fff;background:#f90}.i-alert-error{color:#fff;background:#ed3f14}.i-alert-icon{position:absolute;top:9px;left:16px;font-size:14px}.i-alert-desc{font-size:12px}.i-alert-with-desc{padding:16px;position:relative}.i-alert-with-desc.i-alert-with-icon{padding:16px 16px 16px 69px}.i-alert-with-desc .i-alert-icon{top:50%;left:24px;margin-top:-21px;font-size:28px}.i-alert-close{font-size:12px;position:absolute;right:16px;top:8px;overflow:hidden;cursor:pointer} \ No newline at end of file diff --git a/template/dist/avatar/index.js b/template/dist/avatar/index.js new file mode 100644 index 0000000..fae9476 --- /dev/null +++ b/template/dist/avatar/index.js @@ -0,0 +1,20 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + // circle || square + shape: { + type: String, + value: 'circle' + }, + // small || large || default + size: { + type: String, + value: 'default' + }, + src: { + type: String, + value: '' + } + } +}); diff --git a/template/dist/avatar/index.json b/template/dist/avatar/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/avatar/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/avatar/index.wxml b/template/dist/avatar/index.wxml new file mode 100644 index 0000000..11730c6 --- /dev/null +++ b/template/dist/avatar/index.wxml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/template/dist/avatar/index.wxss b/template/dist/avatar/index.wxss new file mode 100644 index 0000000..8f6e636 --- /dev/null +++ b/template/dist/avatar/index.wxss @@ -0,0 +1 @@ +.i-avatar{display:inline-block;text-align:center;background:#ccc;color:#fff;white-space:nowrap;position:relative;overflow:hidden;vertical-align:middle;width:32px;height:32px;line-height:32px;border-radius:16px;font-size:18px}.i-avatar .ivu-avatar-string{line-height:32px}.i-avatar-large{width:40px;height:40px;line-height:40px;border-radius:20px;font-size:24px}.i-avatar-large .ivu-avatar-string{line-height:40px}.i-avatar-small{width:24px;height:24px;line-height:24px;border-radius:12px;font-size:14px}.i-avatar-small .ivu-avatar-string{line-height:24px}.i-avatar-image{background:0 0}.i-avatar-square{border-radius:4px}.i-avatar>image{width:100%;height:100%} \ No newline at end of file diff --git a/template/dist/badge/index.js b/template/dist/badge/index.js new file mode 100644 index 0000000..2b9fb30 --- /dev/null +++ b/template/dist/badge/index.js @@ -0,0 +1,29 @@ +Component({ + externalClasses: ['i-class', 'i-class-alone'], + + properties: { + count: { + type: Number, + value: 0, + observer: 'finalCount' + }, + overflowCount: { + type: Number, + value: 99 + }, + dot: { + type: Boolean, + value: false + }, + }, + data: { + finalCount: 0 + }, + methods: { + finalCount() { + this.setData({ + finalCount: parseInt(this.data.count) >= parseInt(this.data.overflowCount) ? `${this.data.overflowCount}+` : this.data.count + }); + }, + } +}); diff --git a/template/dist/badge/index.json b/template/dist/badge/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/badge/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/badge/index.wxml b/template/dist/badge/index.wxml new file mode 100644 index 0000000..372fd7f --- /dev/null +++ b/template/dist/badge/index.wxml @@ -0,0 +1,5 @@ + + + + {{ finalCount }} + diff --git a/template/dist/badge/index.wxss b/template/dist/badge/index.wxss new file mode 100644 index 0000000..281658f --- /dev/null +++ b/template/dist/badge/index.wxss @@ -0,0 +1 @@ +.i-badge{position:relative;display:inline-block;line-height:1;vertical-align:middle}.i-badge-count{position:absolute;transform:translateX(50%);top:-6px;right:0;height:18px;border-radius:9px;min-width:18px;background:#ed3f14;border:1px solid transparent;color:#fff;line-height:18px;text-align:center;padding:0 5px;font-size:12px;white-space:nowrap;transform-origin:-10% center;z-index:10;box-shadow:0 0 0 1px #fff;box-sizing:border-box;text-rendering:optimizeLegibility}.i-badge-count-alone{top:auto;display:block;position:relative;transform:translateX(0)}.i-badge-dot{position:absolute;transform:translateX(-50%);transform-origin:0 center;top:-4px;right:-8px;height:8px;width:8px;border-radius:100%;background:#ed3f14;z-index:10;box-shadow:0 0 0 1px #fff} \ No newline at end of file diff --git a/template/dist/base/index.js b/template/dist/base/index.js new file mode 100644 index 0000000..6cb977f --- /dev/null +++ b/template/dist/base/index.js @@ -0,0 +1,37 @@ +function getCtx (selector) { + const pages = getCurrentPages(); + const ctx = pages[pages.length - 1]; + + const componentCtx = ctx.selectComponent(selector); + + if (!componentCtx) { + console.error('无法找到对应的组件,请按文档说明使用组件'); + return null; + } + return componentCtx; +} + +function Toast(options) { + const { selector = '#toast' } = options; + const ctx = getCtx(selector); + + ctx.handleShow(options); +} + +Toast.hide = function (selector = '#toast') { + const ctx = getCtx(selector); + + ctx.handleHide(); +}; + +function Message(options) { + const { selector = '#message' } = options; + const ctx = getCtx(selector); + + ctx.handleShow(options); +} + +module.exports = { + $Toast: Toast, + $Message: Message +}; \ No newline at end of file diff --git a/template/dist/button/index.js b/template/dist/button/index.js new file mode 100644 index 0000000..f0e9b3e --- /dev/null +++ b/template/dist/button/index.js @@ -0,0 +1,80 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + // default, primary, ghost, info, success, warning, error + type: { + type: String, + value: '', + }, + inline: { + type: Boolean, + value: false + }, + // default, large, small + size: { + type: String, + value: '', + }, + // circle, square + shape: { + type: String, + value: 'square' + }, + disabled: { + type: Boolean, + value: false, + }, + loading: { + type: Boolean, + value: false, + }, + long: { + type: Boolean, + value: false + }, + openType: String, + appParameter: String, + hoverStopPropagation: Boolean, + hoverStartTime: { + type: Number, + value: 20 + }, + hoverStayTime: { + type: Number, + value: 70 + }, + lang: { + type: String, + value: 'en' + }, + sessionFrom: { + type: String, + value: '' + }, + sendMessageTitle: String, + sendMessagePath: String, + sendMessageImg: String, + showMessageCard: Boolean + }, + + methods: { + handleTap () { + if (this.data.disabled) return false; + + this.triggerEvent('click'); + }, + bindgetuserinfo({ detail = {} } = {}) { + this.triggerEvent('getuserinfo', detail); + }, + bindcontact({ detail = {} } = {}) { + this.triggerEvent('contact', detail); + }, + bindgetphonenumber({ detail = {} } = {}) { + this.triggerEvent('getphonenumber', detail); + }, + binderror({ detail = {} } = {}) { + this.triggerEvent('error', detail); + } + } +}); diff --git a/template/dist/button/index.json b/template/dist/button/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/button/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/button/index.wxml b/template/dist/button/index.wxml new file mode 100644 index 0000000..e154eee --- /dev/null +++ b/template/dist/button/index.wxml @@ -0,0 +1,20 @@ + \ No newline at end of file diff --git a/template/dist/button/index.wxss b/template/dist/button/index.wxss new file mode 100644 index 0000000..550bc81 --- /dev/null +++ b/template/dist/button/index.wxss @@ -0,0 +1 @@ +.i-btn{text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;white-space:nowrap;user-select:none;font-size:14px;border-radius:2px;border:0!important;position:relative;text-decoration:none;height:44px;line-height:44px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);color:#fff!important;background:#f7f7f7!important;color:#495060!important;margin:10px}.i-btn-hover{opacity:.9}.i-btn-long{border-radius:0;margin:0;box-shadow:none}.i-btn-large{height:48px;line-height:48px}.i-btn-small{height:40px;line-height:40px}.i-btn-primary{color:#fff!important;background:#2d8cf0!important}.i-btn-ghost{color:#fff!important;background:#fff!important;color:#495060!important}.i-btn-success{color:#fff!important;background:#19be6b!important}.i-btn-warning{color:#fff!important;background:#f90!important}.i-btn-error{color:#fff!important;background:#ed3f14!important}.i-btn-info{color:#fff!important;background:#2db7f5!important}.i-btn-circle{border-radius:44px}.i-btn-large.i-btn-circle{border-radius:48px}.i-btn-small.i-btn-circle{border-radius:40px}.i-btn-loading{opacity:.6}.i-btn-loading-inner{display:inline-block;margin-right:12px;vertical-align:middle;width:14px;height:14px;background:0 0;border-radius:50%;border:2px solid #fff;border-color:#fff #fff #fff transparent;animation:btn-spin .6s linear;animation-iteration-count:infinite}.i-btn-disabled{color:#bbbec4!important;background:#f7f7f7!important}.i-btn-inline{display:inline-block}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/template/dist/card/index.js b/template/dist/card/index.js new file mode 100644 index 0000000..20ad106 --- /dev/null +++ b/template/dist/card/index.js @@ -0,0 +1,26 @@ +Component({ + externalClasses: ['i-class'], + + options: { + multipleSlots: true + }, + + properties: { + full: { + type: Boolean, + value: false + }, + thumb: { + type: String, + value: '' + }, + title: { + type: String, + value: '' + }, + extra: { + type: String, + value: '' + } + } +}); diff --git a/template/dist/card/index.json b/template/dist/card/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/card/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/card/index.wxml b/template/dist/card/index.wxml new file mode 100644 index 0000000..4792293 --- /dev/null +++ b/template/dist/card/index.wxml @@ -0,0 +1,11 @@ + + + + + {{ title }} + + {{ extra }} + + + + diff --git a/template/dist/card/index.wxss b/template/dist/card/index.wxss new file mode 100644 index 0000000..fd8fad4 --- /dev/null +++ b/template/dist/card/index.wxss @@ -0,0 +1 @@ +.i-card{margin:0 16px;font-size:14px;overflow:hidden;position:relative;background:#fff;border:1rpx solid #dddee1;border-radius:5px}.i-card-full{margin:0;border-left:none;border-right:none;border-radius:0}.i-card-header{display:flex;padding:6px 16px;align-items:center}.i-card-header-content{flex:1;text-align:left}.i-card-header-thumb{display:inline-block;width:64px;height:64px;position:relative;margin-left:auto;margin-right:auto;overflow:hidden;background-size:cover;vertical-align:middle}.i-card-header-title{display:inline-block;vertical-align:middle;font-size:14px;color:#1c2438}.i-card-header-extra{flex:1;text-align:right;font-size:14px;color:#80848f}.i-card-body{position:relative;padding:6px 16px;color:#495060;font-size:14px}.i-card-body::before{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-top-width:1px}.i-card-footer{position:relative;padding:6px 16px;color:#80848f;font-size:12px} \ No newline at end of file diff --git a/template/dist/cell-group/index.js b/template/dist/cell-group/index.js new file mode 100644 index 0000000..ad36baa --- /dev/null +++ b/template/dist/cell-group/index.js @@ -0,0 +1,33 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../cell/index': { + type: 'child', + linked () { + this._updateIsLastCell(); + }, + linkChanged () { + this._updateIsLastCell(); + }, + unlinked () { + this._updateIsLastCell(); + } + } + }, + + methods: { + _updateIsLastCell() { + let cells = this.getRelationNodes('../cell/index'); + const len = cells.length; + + if (len > 0) { + let lastIndex = len - 1; + + cells.forEach((cell, index) => { + cell.updateIsLastCell(index === lastIndex); + }); + } + } + } +}); diff --git a/template/dist/cell-group/index.json b/template/dist/cell-group/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/cell-group/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/cell-group/index.wxml b/template/dist/cell-group/index.wxml new file mode 100644 index 0000000..1897919 --- /dev/null +++ b/template/dist/cell-group/index.wxml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/template/dist/cell/index.js b/template/dist/cell/index.js new file mode 100644 index 0000000..50e635c --- /dev/null +++ b/template/dist/cell/index.js @@ -0,0 +1,86 @@ +const warn = (msg, getValue) => { + console.warn(msg); + console.log('接受到的值为:', getValue); +}; + +Component({ + externalClasses: ['i-class'], + + options: { + multipleSlots: true + }, + + relations: { + '../cell-group/index': { + type: 'parent' + } + }, + + properties: { + // 左侧标题 + title: { + type: String + }, + // 标题下方的描述信息 + label: { + type: String + }, + // 右侧内容 + value: { + type: String + }, + // 只有点击 footer 区域才触发 tab 事件 + onlyTapFooter: { + type: Boolean + }, + // 是否展示右侧箭头并开启尝试以 url 跳转 + isLink: { + type: null, + value: '' + }, + // 链接类型,可选值为 navigateTo,redirectTo,switchTab,reLaunch + linkType: { + type: String, + value: 'navigateTo' + }, + url: { + type: String, + value: '' + } + }, + + data: { + isLastCell: true + }, + + methods: { + navigateTo () { + const { url } = this.data; + const type = typeof this.data.isLink; + + this.triggerEvent('click', {}); + + if (!this.data.isLink || !url || url === 'true' || url === 'false') return; + + if (type !== 'boolean' && type !== 'string') { + warn('isLink 属性值必须是一个字符串或布尔值', this.data.isLink); + return; + } + + if (['navigateTo', 'redirectTo', 'switchTab', 'reLaunch'].indexOf(this.data.linkType) === -1) { + warn('linkType 属性可选值为 navigateTo,redirectTo,switchTab,reLaunch', this.data.linkType); + return; + } + wx[this.data.linkType].call(wx, {url}); + }, + handleTap () { + if (!this.data.onlyTapFooter) { + this.navigateTo(); + } + }, + + updateIsLastCell (isLastCell) { + this.setData({ isLastCell }); + } + } +}); diff --git a/template/dist/cell/index.json b/template/dist/cell/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/cell/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/cell/index.wxml b/template/dist/cell/index.wxml new file mode 100644 index 0000000..c3683e3 --- /dev/null +++ b/template/dist/cell/index.wxml @@ -0,0 +1,16 @@ + + + + + + {{ title }} + {{ label }} + + + + {{ value }} + + + + + \ No newline at end of file diff --git a/template/dist/cell/index.wxss b/template/dist/cell/index.wxss new file mode 100644 index 0000000..e45ad75 --- /dev/null +++ b/template/dist/cell/index.wxss @@ -0,0 +1 @@ +.i-cell{position:relative;padding:12px 15px;display:flex;background:#fff;align-items:center;line-height:1.4;font-size:14px;overflow:hidden}.i-cell::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-bottom-width:1px;left:15px;right:0}.i-cell-last::after{display:none}.i-cell-icon{margin-right:5px}.i-cell-icon:empty{display:none}.i-cell-bd{flex:1}.i-cell-text{line-height:24px;font-size:14px}.i-cell-desc{line-height:1.2;font-size:12px;color:#80848f}.i-cell-ft{position:relative;text-align:right;color:#495060}.i-cell-access .i-cell-ft{padding-right:13px}.i-cell-access .i-cell-ft::after{content:" ";display:inline-block;width:6px;height:6px;position:absolute;top:50%;right:2px;border-width:2px 2px 0 0;border-color:#dddee1;border-style:solid;transform:translateY(-50%) matrix(.71,.71,-.71,.71,0,0)} \ No newline at end of file diff --git a/template/dist/checkbox-group/index.js b/template/dist/checkbox-group/index.js new file mode 100644 index 0000000..6465450 --- /dev/null +++ b/template/dist/checkbox-group/index.js @@ -0,0 +1,38 @@ +Component({ + externalClasses: ['i-class'], + relations: { + '../checkbox/index': { + type: 'child', + linked() { + this.changeCurrent(); + }, + linkChanged() { + this.changeCurrent(); + }, + unlinked() { + this.changeCurrent(); + } + } + }, + properties: { + current: { + type: Array, + value: [], + observer: 'changeCurrent' + }, + }, + methods: { + changeCurrent(val = this.data.current) { + let items = this.getRelationNodes('../checkbox/index'); + const len = items.length; + if (len > 0) { + items.forEach(item => { + item.changeCurrent(val.indexOf(item.data.value) !== -1); + }); + } + }, + emitEvent(current) { + this.triggerEvent('change', current); + } + } +}); diff --git a/template/dist/checkbox-group/index.json b/template/dist/checkbox-group/index.json new file mode 100644 index 0000000..edf138d --- /dev/null +++ b/template/dist/checkbox-group/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-cell-group": "../cell-group/index" + } +} diff --git a/template/dist/checkbox-group/index.wxml b/template/dist/checkbox-group/index.wxml new file mode 100644 index 0000000..6940180 --- /dev/null +++ b/template/dist/checkbox-group/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/template/dist/checkbox-group/index.wxss b/template/dist/checkbox-group/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/template/dist/checkbox/index.js b/template/dist/checkbox/index.js new file mode 100644 index 0000000..b383952 --- /dev/null +++ b/template/dist/checkbox/index.js @@ -0,0 +1,56 @@ +const prefixCls = 'i-checkbox'; + +Component({ + externalClasses: ['i-class'], + relations: { + '../checkbox-group/index': { + type: 'parent' + } + }, + properties: { + value: { + type: String, + value: '' + }, + checked: { + type: Boolean, + value: false + }, + disabled: { + type: Boolean, + value: false + }, + color: { + type: String, + value: '#2d8cf0' + }, + position: { + type: String, + value: 'left', //left right + observer: 'setPosition' + } + }, + data: { + checked: true, + positionCls: `${prefixCls}-checkbox-left`, + }, + attached() { + this.setPosition(); + }, + methods: { + changeCurrent(current) { + this.setData({ checked: current }); + }, + checkboxChange() { + if (this.data.disabled) return; + const item = { current: !this.data.checked, value: this.data.value }; + const parent = this.getRelationNodes('../checkbox-group/index')[0]; + parent ? parent.emitEvent(item) : this.triggerEvent('change', item); + }, + setPosition() { + this.setData({ + positionCls: this.data.position.indexOf('left') !== -1 ? `${prefixCls}-checkbox-left` : `${prefixCls}-checkbox-right`, + }); + } + } +}); diff --git a/template/dist/checkbox/index.json b/template/dist/checkbox/index.json new file mode 100644 index 0000000..e2ab49a --- /dev/null +++ b/template/dist/checkbox/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-cell": "../cell/index" + } +} diff --git a/template/dist/checkbox/index.wxml b/template/dist/checkbox/index.wxml new file mode 100644 index 0000000..214493f --- /dev/null +++ b/template/dist/checkbox/index.wxml @@ -0,0 +1,8 @@ + + + + + diff --git a/template/dist/checkbox/index.wxss b/template/dist/checkbox/index.wxss new file mode 100644 index 0000000..a07699f --- /dev/null +++ b/template/dist/checkbox/index.wxss @@ -0,0 +1 @@ +.i-checkbox-cell::after{display:block}.i-checkbox-checkbox-left{float:left}.i-checkbox-checkbox-right{float:right}.i-checkbox-radio{vertical-align:middle}.i-checkbox-title{display:inline-block;vertical-align:middle} \ No newline at end of file diff --git a/template/dist/col/index.js b/template/dist/col/index.js new file mode 100644 index 0000000..9b2d65d --- /dev/null +++ b/template/dist/col/index.js @@ -0,0 +1,20 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../row/index': { + type: 'parent' + } + }, + + properties: { + span: { + value: 0, + type: Number + }, + offset: { + value: 0, + type: Number + } + } +}); diff --git a/template/dist/col/index.json b/template/dist/col/index.json new file mode 100644 index 0000000..32640e0 --- /dev/null +++ b/template/dist/col/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/template/dist/col/index.wxml b/template/dist/col/index.wxml new file mode 100644 index 0000000..838a22b --- /dev/null +++ b/template/dist/col/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/template/dist/col/index.wxss b/template/dist/col/index.wxss new file mode 100644 index 0000000..bdce125 --- /dev/null +++ b/template/dist/col/index.wxss @@ -0,0 +1 @@ +.i-col{float:left;box-sizing:border-box;width:0}.i-col-span-1{display:block;width:4.16666667%}.i-col-offset-1{margin-left:4.16666667%}.i-col-span-2{display:block;width:8.33333333%}.i-col-offset-2{margin-left:8.33333333%}.i-col-span-3{display:block;width:12.5%}.i-col-offset-3{margin-left:12.5%}.i-col-span-4{display:block;width:16.66666667%}.i-col-offset-4{margin-left:16.66666667%}.i-col-span-5{display:block;width:20.83333333%}.i-col-offset-5{margin-left:20.83333333%}.i-col-span-6{display:block;width:25%}.i-col-offset-6{margin-left:25%}.i-col-span-7{display:block;width:29.16666667%}.i-col-offset-7{margin-left:29.16666667%}.i-col-span-8{display:block;width:33.33333333%}.i-col-offset-8{margin-left:33.33333333%}.i-col-span-9{display:block;width:37.5%}.i-col-offset-9{margin-left:37.5%}.i-col-span-10{display:block;width:41.66666667%}.i-col-offset-10{margin-left:41.66666667%}.i-col-span-11{display:block;width:45.83333333%}.i-col-offset-11{margin-left:45.83333333%}.i-col-span-12{display:block;width:50%}.i-col-offset-12{margin-left:50%}.i-col-span-13{display:block;width:54.16666667%}.i-col-offset-13{margin-left:54.16666667%}.i-col-span-14{display:block;width:58.33333333%}.i-col-offset-14{margin-left:58.33333333%}.i-col-span-15{display:block;width:62.5%}.i-col-offset-15{margin-left:62.5%}.i-col-span-16{display:block;width:66.66666667%}.i-col-offset-16{margin-left:66.66666667%}.i-col-span-17{display:block;width:70.83333333%}.i-col-offset-17{margin-left:70.83333333%}.i-col-span-18{display:block;width:75%}.i-col-offset-18{margin-left:75%}.i-col-span-19{display:block;width:79.16666667%}.i-col-offset-19{margin-left:79.16666667%}.i-col-span-20{display:block;width:83.33333333%}.i-col-offset-20{margin-left:83.33333333%}.i-col-span-21{display:block;width:87.5%}.i-col-offset-21{margin-left:87.5%}.i-col-span-22{display:block;width:91.66666667%}.i-col-offset-22{margin-left:91.66666667%}.i-col-span-23{display:block;width:95.83333333%}.i-col-offset-23{margin-left:95.83333333%}.i-col-span-24{display:block;width:100%}.i-col-offset-24{margin-left:100%} \ No newline at end of file diff --git a/template/dist/collapse-item/index.js b/template/dist/collapse-item/index.js new file mode 100644 index 0000000..bc415c1 --- /dev/null +++ b/template/dist/collapse-item/index.js @@ -0,0 +1,46 @@ +Component({ + externalClasses: ['i-class-content', 'i-class-title', 'i-class'], + + relations: { + '../collapse/index': { + type: 'parent', + linked: function (target) { + const options = { + accordion: target.data.accordion + } + if (target.data.name === this.data.name) { + options.showContent = 'i-collapse-item-show-content'; + } + this.setData(options); + } + } + }, + + properties: { + title: String, + name: String + }, + + data: { + showContent: '', + accordion: false + }, + + options: { + multipleSlots: true + }, + + methods: { + trigger(e) { + const data = this.data; + if (data.accordion) { + this.triggerEvent('collapse', {name: data.name}, {composed: true, bubbles: true}); + } else { + this.setData({ + showContent: data.showContent ? '' : 'i-collapse-item-show-content' + }); + } + }, + } +}); + diff --git a/pages/domoTest/wxchartTest/wxChatTest.json b/template/dist/collapse-item/index.json similarity index 34% rename from pages/domoTest/wxchartTest/wxChatTest.json rename to template/dist/collapse-item/index.json index 89390df..54575da 100644 --- a/pages/domoTest/wxchartTest/wxChatTest.json +++ b/template/dist/collapse-item/index.json @@ -1,5 +1,7 @@ + { + "component": true, "usingComponents": { - "ec-canvas": "../ec-canvas/ec-canvas" + "i-icon": "../icon/index" } -} \ No newline at end of file +} diff --git a/template/dist/collapse-item/index.wxml b/template/dist/collapse-item/index.wxml new file mode 100644 index 0000000..ba22b0a --- /dev/null +++ b/template/dist/collapse-item/index.wxml @@ -0,0 +1,9 @@ + + + + {{title}} + + + + + \ No newline at end of file diff --git a/template/dist/collapse-item/index.wxss b/template/dist/collapse-item/index.wxss new file mode 100644 index 0000000..d44c032 --- /dev/null +++ b/template/dist/collapse-item/index.wxss @@ -0,0 +1 @@ +.i-collapse-item{padding:2px 8px;border-top:1px solid #dddee1}.i-collapse-item-title{vertical-align:middle}.i-collapse-item-title-wrap{padding:2px 0 0}.i-collapse-item-content{padding:6px;display:none}.i-collapse-item-show-content{display:block}.i-collapse-item-arrow{transition:transform .2s ease-in-out}.i-collapse-item-arrow-show{transition:transform .2s ease-in-out;transform:rotate(90deg)} \ No newline at end of file diff --git a/template/dist/collapse/index.js b/template/dist/collapse/index.js new file mode 100644 index 0000000..acc1455 --- /dev/null +++ b/template/dist/collapse/index.js @@ -0,0 +1,31 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../collapse-item/index': { + type: 'child' + } + }, + properties: { + name: String, + accordion: Boolean + }, + methods: { + clickfn(e) { + const params = e.detail; + const allList = this.getRelationNodes('../collapse-item/index'); + allList.forEach((item) => { + if (params.name === item.data.name) { + item.setData({ + showContent: 'i-collapse-item-show-content' + }); + } else { + item.setData({ + showContent: '' + }); + } + }); + }, + } +}); + diff --git a/template/dist/collapse/index.json b/template/dist/collapse/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/collapse/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/collapse/index.wxml b/template/dist/collapse/index.wxml new file mode 100644 index 0000000..0f379f7 --- /dev/null +++ b/template/dist/collapse/index.wxml @@ -0,0 +1,4 @@ + + + + diff --git a/template/dist/collapse/index.wxss b/template/dist/collapse/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/template/dist/count-down/index.js b/template/dist/count-down/index.js new file mode 100644 index 0000000..f1da533 --- /dev/null +++ b/template/dist/count-down/index.js @@ -0,0 +1,90 @@ +Component({ + properties: { + target: Number, + showDay: Boolean, + callback: String, + format: Array, + clearTimer: Boolean + }, + externalClasses: ['countdown-class'], + data: { + time: '', + resultFormat: [], + changeFormat: false + }, + ready() { + this.getFormat(); + + }, + methods: { + getFormat() { + const data = this.data; + const len = data.format.length; + + if (!data.showDay) data.resultFormat.push(''); + + if (len >= 3) { + for (let i = 0; i < len; i++) { + if (data.resultFormat.length >= 4) break; + if (data.format[i]) { + data.resultFormat.push(data.format[i].toString()); + } + } + + if (data.resultFormat.length >= 4) data.changeFormat = true; + } + + this.getLastTime(); + }, + init() { + const self = this; + setTimeout(function () { + self.getLastTime.call(self); + }, 1000); + }, + getLastTime() { + const data = this.data; + const gapTime = Math.ceil((data.target - new Date().getTime()) / 1000); + let result = ''; + let time = '00:00:00'; + let day = '00'; + const format = data.resultFormat; + + if (gapTime > 0) { + day = this.formatNum(parseInt(gapTime / 86400)); + let lastTime = gapTime % 86400; + const hour = this.formatNum(parseInt(lastTime / 3600)); + lastTime = lastTime % 3600; + const minute = this.formatNum(parseInt(lastTime / 60)); + const second = this.formatNum(lastTime % 60); + + if (data.changeFormat) time = `${hour}${format[1]}${minute}${format[2]}${second}${format[3]}`; + else time = `${hour}:${minute}:${second}`; + + if (!data.clearTimer) this.init.call(this); + } else { + this.endfn(); + } + + if (data.showDay) { + if (data.changeFormat) { + result = `${day}${format[0]} ${time}`; + } else { + result = `${day}d ${time}`; + } + } else { + result = time; + } + this.setData({ + time: result + }); + + }, + formatNum(num) { + return num > 9 ? num : `0${num}`; + }, + endfn() { + this.triggerEvent('callback', {}); + } + } +}); diff --git a/template/dist/count-down/index.json b/template/dist/count-down/index.json new file mode 100644 index 0000000..74f1315 --- /dev/null +++ b/template/dist/count-down/index.json @@ -0,0 +1,4 @@ + +{ + "component": true +} diff --git a/template/dist/count-down/index.wxml b/template/dist/count-down/index.wxml new file mode 100644 index 0000000..e4bec57 --- /dev/null +++ b/template/dist/count-down/index.wxml @@ -0,0 +1,4 @@ + + {{time}} + + diff --git a/template/dist/count-down/index.wxss b/template/dist/count-down/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/template/dist/divider/index.js b/template/dist/divider/index.js new file mode 100644 index 0000000..6b0e448 --- /dev/null +++ b/template/dist/divider/index.js @@ -0,0 +1,25 @@ +Component({ + externalClasses: ['i-class'], + properties: { + content: { + type: String, + value: '' + }, + height : { + type: Number, + value: 48 + }, + color : { + type : String, + value : '#80848f' + }, + lineColor : { + type : String, + value : '#e9eaec' + }, + size : { + type: String, + value: 12 + } + } +}); diff --git a/template/dist/divider/index.json b/template/dist/divider/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/divider/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/divider/index.wxml b/template/dist/divider/index.wxml new file mode 100644 index 0000000..b7111d3 --- /dev/null +++ b/template/dist/divider/index.wxml @@ -0,0 +1,19 @@ + + + {{content}} + + + + + + + + module.exports = { + getStyle : function(color,size,height){ + var color = 'color:' + color +';'; + var size = 'font-size:' + size + 'px;'; + var height = 'height:' + height+'px;' + return color + size + height; + } + } + diff --git a/template/dist/divider/index.wxss b/template/dist/divider/index.wxss new file mode 100644 index 0000000..98827ab --- /dev/null +++ b/template/dist/divider/index.wxss @@ -0,0 +1 @@ +.i-divider{width:100%;text-align:center;font-size:12px;position:relative;display:flex;align-items:center;justify-content:center}.i-divider-line{position:absolute;left:0;width:100%;height:1rpx;background-color:#f7f7f7;top:50%}.i-divider-content{background:#fff;position:relative;z-index:1;display:inline-block;padding:0 10px} \ No newline at end of file diff --git a/template/dist/drawer/index.js b/template/dist/drawer/index.js new file mode 100644 index 0000000..adb248a --- /dev/null +++ b/template/dist/drawer/index.js @@ -0,0 +1,33 @@ +Component({ + externalClasses: ['i-class'], + properties: { + visible: { + type: Boolean, + value: false + }, + + mask: { + type: Boolean, + value: true + }, + + maskClosable: { + type: Boolean, + value: true + }, + + mode: { + type: String, + value: 'left' // left right + } + }, + data: {}, + methods: { + handleMaskClick() { + if (!this.data.maskClosable) { + return; + } + this.triggerEvent('close', {}); + } + } +}); diff --git a/template/dist/drawer/index.json b/template/dist/drawer/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/drawer/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/drawer/index.wxml b/template/dist/drawer/index.wxml new file mode 100644 index 0000000..67380d9 --- /dev/null +++ b/template/dist/drawer/index.wxml @@ -0,0 +1,6 @@ + + + + + + diff --git a/template/dist/drawer/index.wxss b/template/dist/drawer/index.wxss new file mode 100644 index 0000000..2824713 --- /dev/null +++ b/template/dist/drawer/index.wxss @@ -0,0 +1 @@ +.i-drawer{visibility:hidden}.i-drawer-show{visibility:visible}.i-drawer-show .i-drawer-mask{display:block;opacity:1}.i-drawer-show .i-drawer-container{opacity:1}.i-drawer-show.i-drawer-left .i-drawer-container,.i-drawer-show.i-drawer-right .i-drawer-container{transform:translate3d(0,-50%,0)}.i-drawer-mask{opacity:0;position:fixed;top:0;left:0;right:0;bottom:0;z-index:6;background:rgba(0,0,0,.6);transition:all .3s ease-in-out}.i-drawer-container{position:fixed;left:50%;top:50%;transform:translate3d(-50%,-50%,0);transform-origin:center;transition:all .3s ease-in-out;z-index:7;opacity:0}.i-drawer-left .i-drawer-container{left:0;top:50%;transform:translate3d(-100%,-50%,0)}.i-drawer-right .i-drawer-container{right:0;top:50%;left:auto;transform:translate3d(100%,-50%,0)} \ No newline at end of file diff --git a/template/dist/grid-icon/index.js b/template/dist/grid-icon/index.js new file mode 100644 index 0000000..5315185 --- /dev/null +++ b/template/dist/grid-icon/index.js @@ -0,0 +1,10 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../grid-item/index': { + type: 'parent' + } + }, + +}); diff --git a/template/dist/grid-icon/index.json b/template/dist/grid-icon/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/grid-icon/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/grid-icon/index.wxml b/template/dist/grid-icon/index.wxml new file mode 100644 index 0000000..b9f9025 --- /dev/null +++ b/template/dist/grid-icon/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/template/dist/grid-icon/index.wxss b/template/dist/grid-icon/index.wxss new file mode 100644 index 0000000..88c58a7 --- /dev/null +++ b/template/dist/grid-icon/index.wxss @@ -0,0 +1 @@ +.i-grid-icon{display:block;width:28px;height:28px;margin:0 auto}.i-grid-icon image{width:100%;height:100%} \ No newline at end of file diff --git a/template/dist/grid-item/index.js b/template/dist/grid-item/index.js new file mode 100644 index 0000000..e492542 --- /dev/null +++ b/template/dist/grid-item/index.js @@ -0,0 +1,16 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../grid/index': { + type: 'parent' + }, + '../grid-icon/index': { + type: 'child' + } + }, + + data: { + width: '33.33%' + } +}); diff --git a/template/dist/grid-item/index.json b/template/dist/grid-item/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/grid-item/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/grid-item/index.wxml b/template/dist/grid-item/index.wxml new file mode 100644 index 0000000..8e133cd --- /dev/null +++ b/template/dist/grid-item/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/template/dist/grid-item/index.wxss b/template/dist/grid-item/index.wxss new file mode 100644 index 0000000..ed0f395 --- /dev/null +++ b/template/dist/grid-item/index.wxss @@ -0,0 +1 @@ +.i-grid-item{position:relative;float:left;padding:20px 10px;width:33.33333333%;box-sizing:border-box;border-right:1rpx solid #e9eaec;border-bottom:1rpx solid #e9eaec} \ No newline at end of file diff --git a/template/dist/grid-label/index.js b/template/dist/grid-label/index.js new file mode 100644 index 0000000..5315185 --- /dev/null +++ b/template/dist/grid-label/index.js @@ -0,0 +1,10 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../grid-item/index': { + type: 'parent' + } + }, + +}); diff --git a/template/dist/grid-label/index.json b/template/dist/grid-label/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/grid-label/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/grid-label/index.wxml b/template/dist/grid-label/index.wxml new file mode 100644 index 0000000..7ab5a8a --- /dev/null +++ b/template/dist/grid-label/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/template/dist/grid-label/index.wxss b/template/dist/grid-label/index.wxss new file mode 100644 index 0000000..d45a990 --- /dev/null +++ b/template/dist/grid-label/index.wxss @@ -0,0 +1 @@ +.i-grid-label{margin-top:5px;display:block;text-align:center;color:#1c2438;font-size:14px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden} \ No newline at end of file diff --git a/template/dist/grid/index.js b/template/dist/grid/index.js new file mode 100644 index 0000000..f9c9c40 --- /dev/null +++ b/template/dist/grid/index.js @@ -0,0 +1,50 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../grid-item/index': { + type: 'child', + linked () { + this.setGridItemWidth(); + }, + linkChanged () { + this.setGridItemWidth(); + }, + unlinked () { + this.setGridItemWidth(); + } + } + }, + + methods: { + setGridItemWidth () { + const nodes = this.getRelationNodes('../grid-item/index'); + + // const len = nodes.length; + // if (len < 3) { + // nodes.forEach(item => { + // item.setData({ + // 'width': '33.33%' + // }); + // }); + // } else { + // const width = 100 / nodes.length; + // nodes.forEach(item => { + // item.setData({ + // 'width': width + '%' + // }); + // }); + // } + const width = 100 / nodes.length; + nodes.forEach(item => { + item.setData({ + 'width': width + '%' + }); + }); + } + }, + + ready () { + this.setGridItemWidth(); + } +}); diff --git a/template/dist/grid/index.json b/template/dist/grid/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/grid/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/grid/index.wxml b/template/dist/grid/index.wxml new file mode 100644 index 0000000..4c9143c --- /dev/null +++ b/template/dist/grid/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/template/dist/grid/index.wxss b/template/dist/grid/index.wxss new file mode 100644 index 0000000..842fc98 --- /dev/null +++ b/template/dist/grid/index.wxss @@ -0,0 +1 @@ +.i-grid{border-top:1rpx solid #e9eaec;border-left:1rpx solid #e9eaec;overflow:hidden} \ No newline at end of file diff --git a/template/dist/icon/index.js b/template/dist/icon/index.js new file mode 100644 index 0000000..eb43ab9 --- /dev/null +++ b/template/dist/icon/index.js @@ -0,0 +1,22 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + type: { + type: String, + value: '' + }, + custom: { + type: String, + value: '' + }, + size: { + type: Number, + value: 14 + }, + color: { + type: String, + value: '' + } + } +}); diff --git a/template/dist/icon/index.json b/template/dist/icon/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/icon/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/icon/index.wxml b/template/dist/icon/index.wxml new file mode 100644 index 0000000..d689bc5 --- /dev/null +++ b/template/dist/icon/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/template/dist/icon/index.wxss b/template/dist/icon/index.wxss new file mode 100644 index 0000000..b18dcbb --- /dev/null +++ b/template/dist/icon/index.wxss @@ -0,0 +1 @@ +@font-face{font-family:iconfont;src:url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff')}.i-icon{display:inline-block;font-family:iconfont;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:middle}.i-icon-accessory:before{content:"\e6dd"}.i-icon-activity:before{content:"\e6de"}.i-icon-activity_fill:before{content:"\e6df"}.i-icon-add:before{content:"\e6e0"}.i-icon-addressbook_fill:before{content:"\e6e2"}.i-icon-addressbook:before{content:"\e6e3"}.i-icon-barrage_fill:before{content:"\e6e4"}.i-icon-barrage:before{content:"\e6e5"}.i-icon-browse_fill:before{content:"\e6e6"}.i-icon-browse:before{content:"\e6e7"}.i-icon-brush:before{content:"\e6e8"}.i-icon-brush_fill:before{content:"\e6e9"}.i-icon-businesscard_fill:before{content:"\e6ea"}.i-icon-businesscard:before{content:"\e6eb"}.i-icon-camera_fill:before{content:"\e6ec"}.i-icon-camera:before{content:"\e6ed"}.i-icon-clock_fill:before{content:"\e6ee"}.i-icon-clock:before{content:"\e6ef"}.i-icon-close:before{content:"\e6f0"}.i-icon-collection_fill:before{content:"\e6f1"}.i-icon-collection:before{content:"\e6f2"}.i-icon-computer_fill:before{content:"\e6f3"}.i-icon-computer:before{content:"\e6f4"}.i-icon-coordinates_fill:before{content:"\e6f5"}.i-icon-coordinates:before{content:"\e6f6"}.i-icon-coupons_fill:before{content:"\e6f7"}.i-icon-coupons:before{content:"\e6f8"}.i-icon-createtask_fill:before{content:"\e6f9"}.i-icon-createtask:before{content:"\e6fa"}.i-icon-customerservice_fill:before{content:"\e6fb"}.i-icon-customerservice:before{content:"\e6fc"}.i-icon-delete_fill:before{content:"\e6fd"}.i-icon-delete:before{content:"\e6fe"}.i-icon-document:before{content:"\e6ff"}.i-icon-document_fill:before{content:"\e700"}.i-icon-dynamic_fill:before{content:"\e701"}.i-icon-dynamic:before{content:"\e702"}.i-icon-editor:before{content:"\e703"}.i-icon-eit:before{content:"\e704"}.i-icon-emoji_fill:before{content:"\e705"}.i-icon-emoji:before{content:"\e706"}.i-icon-enter:before{content:"\e707"}.i-icon-enterinto:before{content:"\e708"}.i-icon-enterinto_fill:before{content:"\e709"}.i-icon-feedback_fill:before{content:"\e70a"}.i-icon-feedback:before{content:"\e70b"}.i-icon-flag_fill:before{content:"\e70c"}.i-icon-flag:before{content:"\e70d"}.i-icon-flashlight:before{content:"\e70e"}.i-icon-flashlight_fill:before{content:"\e70f"}.i-icon-fullscreen:before{content:"\e710"}.i-icon-group:before{content:"\e711"}.i-icon-group_fill:before{content:"\e712"}.i-icon-homepage_fill:before{content:"\e713"}.i-icon-homepage:before{content:"\e714"}.i-icon-integral_fill:before{content:"\e715"}.i-icon-integral:before{content:"\e716"}.i-icon-interactive_fill:before{content:"\e717"}.i-icon-interactive:before{content:"\e718"}.i-icon-keyboard:before{content:"\e719"}.i-icon-label:before{content:"\e71a"}.i-icon-label_fill:before{content:"\e71b"}.i-icon-like_fill:before{content:"\e71c"}.i-icon-like:before{content:"\e71d"}.i-icon-live_fill:before{content:"\e71e"}.i-icon-live:before{content:"\e71f"}.i-icon-lock_fill:before{content:"\e720"}.i-icon-lock:before{content:"\e721"}.i-icon-mail:before{content:"\e722"}.i-icon-mail_fill:before{content:"\e723"}.i-icon-message:before{content:"\e724"}.i-icon-message_fill:before{content:"\e725"}.i-icon-mine:before{content:"\e726"}.i-icon-mine_fill:before{content:"\e727"}.i-icon-mobilephone_fill:before{content:"\e728"}.i-icon-mobilephone:before{content:"\e729"}.i-icon-more:before{content:"\e72a"}.i-icon-narrow:before{content:"\e72b"}.i-icon-offline_fill:before{content:"\e72c"}.i-icon-offline:before{content:"\e72d"}.i-icon-other:before{content:"\e72e"}.i-icon-picture_fill:before{content:"\e72f"}.i-icon-picture:before{content:"\e730"}.i-icon-play:before{content:"\e731"}.i-icon-play_fill:before{content:"\e732"}.i-icon-playon_fill:before{content:"\e733"}.i-icon-playon:before{content:"\e734"}.i-icon-praise_fill:before{content:"\e735"}.i-icon-praise:before{content:"\e736"}.i-icon-prompt_fill:before{content:"\e737"}.i-icon-prompt:before{content:"\e738"}.i-icon-redpacket_fill:before{content:"\e739"}.i-icon-redpacket:before{content:"\e73a"}.i-icon-refresh:before{content:"\e73b"}.i-icon-remind_fill:before{content:"\e73c"}.i-icon-remind:before{content:"\e73d"}.i-icon-return:before{content:"\e73e"}.i-icon-right:before{content:"\e73f"}.i-icon-scan:before{content:"\e740"}.i-icon-send:before{content:"\e741"}.i-icon-service_fill:before{content:"\e742"}.i-icon-service:before{content:"\e743"}.i-icon-setup_fill:before{content:"\e744"}.i-icon-setup:before{content:"\e745"}.i-icon-share_fill:before{content:"\e746"}.i-icon-share:before{content:"\e747"}.i-icon-success_fill:before{content:"\e748"}.i-icon-success:before{content:"\e749"}.i-icon-suspend:before{content:"\e74a"}.i-icon-switch:before{content:"\e74b"}.i-icon-systemprompt_fill:before{content:"\e74c"}.i-icon-systemprompt:before{content:"\e74d"}.i-icon-tailor:before{content:"\e74e"}.i-icon-task:before{content:"\e74f"}.i-icon-task_fill:before{content:"\e750"}.i-icon-tasklist_fill:before{content:"\e751"}.i-icon-tasklist:before{content:"\e752"}.i-icon-time_fill:before{content:"\e753"}.i-icon-time:before{content:"\e754"}.i-icon-translation_fill:before{content:"\e755"}.i-icon-translation:before{content:"\e756"}.i-icon-trash:before{content:"\e757"}.i-icon-trash_fill:before{content:"\e758"}.i-icon-undo:before{content:"\e759"}.i-icon-video:before{content:"\e75a"}.i-icon-video_fill:before{content:"\e75b"}.i-icon-warning_fill:before{content:"\e75c"}.i-icon-warning:before{content:"\e75d"}.i-icon-search:before{content:"\e75e"}.i-icon-searchfill:before{content:"\e75f"}.i-icon-publishgoods_fill:before{content:"\e760"}.i-icon-shop_fill:before{content:"\e761"}.i-icon-transaction_fill:before{content:"\e762"}.i-icon-packup:before{content:"\e763"}.i-icon-unfold:before{content:"\e764"}.i-icon-financial_fill:before{content:"\e765"}.i-icon-commodity:before{content:"\e766"} \ No newline at end of file diff --git a/template/dist/index-item/index.js b/template/dist/index-item/index.js new file mode 100644 index 0000000..ed818df --- /dev/null +++ b/template/dist/index-item/index.js @@ -0,0 +1,32 @@ +Component({ + externalClasses: ['i-class'], + properties : { + name : { + type : String, + value : '' + } + }, + relations : { + '../index/index' : { + type : 'parent' + } + }, + data : { + top : 0, + height : 0, + currentName : '' + }, + methods: { + updateDataChange() { + const className = '.i-index-item'; + const query = wx.createSelectorQuery().in(this); + query.select( className ).boundingClientRect((res)=>{ + this.setData({ + top : res.top, + height : res.height, + currentName : this.data.name + }) + }).exec() + } + } +}) \ No newline at end of file diff --git a/template/dist/index-item/index.json b/template/dist/index-item/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/index-item/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/index-item/index.wxml b/template/dist/index-item/index.wxml new file mode 100644 index 0000000..8986c8d --- /dev/null +++ b/template/dist/index-item/index.wxml @@ -0,0 +1,11 @@ + + {{name}} + + + + + + module.exports = { + + } + diff --git a/template/dist/index-item/index.wxss b/template/dist/index-item/index.wxss new file mode 100644 index 0000000..aeecf8d --- /dev/null +++ b/template/dist/index-item/index.wxss @@ -0,0 +1 @@ +.i-index-item-header{height:30px;line-height:30px;background:#eee;font-size:14px;padding-left:10px;width:100%;box-sizing:border-box}.i-index-item-content{font-size:14px} \ No newline at end of file diff --git a/template/dist/index/index.js b/template/dist/index/index.js new file mode 100644 index 0000000..c556f19 --- /dev/null +++ b/template/dist/index/index.js @@ -0,0 +1,158 @@ +Component({ + externalClasses: ['i-class'], + properties : { + height : { + type : String, + value : '300' + }, + itemHeight : { + type : Number, + value : 18 + } + }, + relations : { + '../index-item/index' : { + type : 'child', + linked(){ + this._updateDataChange(); + }, + linkChanged () { + this._updateDataChange(); + }, + unlinked () { + this._updateDataChange(); + } + } + }, + data : { + scrollTop : 0, + fixedData : [], + current : 0, + timer : null, + startTop : 0, + itemLength : 0, + currentName : '', + isTouches : false + }, + methods : { + loop(){}, + _updateDataChange( ){ + const indexItems = this.getRelationNodes('../index-item/index'); + const len = indexItems.length; + const fixedData = this.data.fixedData; + /* + * 使用函数节流限制重复去设置数组内容进而限制多次重复渲染 + * 暂时没有研究微信在渲染的时候是否会进行函数节流 + */ + if (len > 0) { + + if( this.data.timer ){ + clearTimeout( this.data.timer ) + this.setData({ + timer : null + }) + } + + this.data.timer = setTimeout(()=>{ + const data = []; + indexItems.forEach((item) => { + if( item.data.name && fixedData.indexOf( item.data.name ) === -1 ){ + data.push(item.data.name); + item.updateDataChange(); + } + }) + this.setData({ + fixedData : data, + itemLength : indexItems.length + }) + //组件加载完成之后重新设置顶部高度 + this.setTouchStartVal(); + },0); + this.setData({ + timer : this.data.timer + }) + + } + }, + handlerScroll(event){ + const detail = event.detail; + const scrollTop = detail.scrollTop; + const indexItems = this.getRelationNodes('../index-item/index'); + indexItems.forEach((item,index)=>{ + let data = item.data; + let offset = data.top + data.height; + if( scrollTop < offset && scrollTop >= data.top ){ + this.setData({ + current : index, + currentName : data.currentName + }) + } + }) + }, + getCurrentItem(index){ + const indexItems = this.getRelationNodes('../index-item/index'); + let result = {}; + result = indexItems[index].data; + result.total = indexItems.length; + return result; + }, + triggerCallback(options){ + this.triggerEvent('change',options) + }, + handlerFixedTap(event){ + const eindex = event.currentTarget.dataset.index; + const item = this.getCurrentItem(eindex); + this.setData({ + scrollTop : item.top, + currentName : item.currentName, + isTouches : true + }) + this.triggerCallback({ + index : eindex, + current : item.currentName + }) + }, + handlerTouchMove(event){ + const data = this.data; + const touches = event.touches[0] || {}; + const pageY = touches.pageY; + const rest = pageY - data.startTop; + let index = Math.ceil( rest/data.itemHeight ); + index = index >= data.itemLength ? data.itemLength -1 : index; + const movePosition = this.getCurrentItem(index); + + /* + * 当touch选中的元素和当前currentName不相等的时候才震动一下 + * 微信震动事件 + */ + if( movePosition.name !== this.data.currentName ){ + wx.vibrateShort(); + } + + this.setData({ + scrollTop : movePosition.top, + currentName : movePosition.name, + isTouches : true + }) + + this.triggerCallback({ + index : index, + current : movePosition.name + }) + }, + handlerTouchEnd(){ + this.setData({ + isTouches : false + }) + }, + setTouchStartVal(){ + const className = '.i-index-fixed'; + const query = wx.createSelectorQuery().in(this); + query.select( className ).boundingClientRect((res)=>{ + this.setData({ + startTop : res.top + }) + }).exec() + } + } +}) \ No newline at end of file diff --git a/template/dist/index/index.json b/template/dist/index/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/index/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/index/index.wxml b/template/dist/index/index.wxml new file mode 100644 index 0000000..f83d847 --- /dev/null +++ b/template/dist/index/index.wxml @@ -0,0 +1,38 @@ + + + + + + {{item}} + + + {{currentName}} + + + + module.exports = { + setScrollStyle : function(height){ + var units = ['%','px','rem','rpx','em','rem']; + var hasUnits = false; + for( var i = 0; i < units.length;i++ ){ + var u = units[i]; + if( height.indexOf( u ) > -1 ){ + hasUnits = true; + break; + } + } + return 'height:'+ ( hasUnits ? height : height+'px' ); + } + } + diff --git a/template/dist/index/index.wxss b/template/dist/index/index.wxss new file mode 100644 index 0000000..c0887c1 --- /dev/null +++ b/template/dist/index/index.wxss @@ -0,0 +1 @@ +.i-index{width:100%;height:100%}.i-index-line{position:absolute;left:0;width:100%;height:1rpx;background-color:#f7f7f7;top:50%}.i-index-content{background:#fff;position:relative;z-index:1;display:inline-block;padding:0 10px}.i-index-fixed{position:fixed;right:0;top:50%;z-index:10;padding-left:10px;transform:translateY(-50%)}.i-index-fixed-item{display:block;height:18px;line-height:18px;padding:0 5px;text-align:center;color:#2d8cf0;font-size:12px;border-radius:50%}.i-index-fixed-item-current{background:#2d8cf0;color:#fff}.i-index-tooltip{position:fixed;left:50%;top:50%;transform:translate3d(-50%,-50%,0);background:rgba(0,0,0,.7);color:#fff;font-size:24px;border-radius:50%;width:80px;height:80px;line-height:80px;text-align:center} \ No newline at end of file diff --git a/template/dist/input-number/index.js b/template/dist/input-number/index.js new file mode 100644 index 0000000..7a7d3f5 --- /dev/null +++ b/template/dist/input-number/index.js @@ -0,0 +1,101 @@ +function addNum (num1, num2) { + let sq1, sq2, m; + try { + sq1 = num1.toString().split('.')[1].length; + } + catch (e) { + sq1 = 0; + } + try { + sq2 = num2.toString().split('.')[1].length; + } + catch (e) { + sq2 = 0; + } + m = Math.pow(10, Math.max(sq1, sq2)); + return (Math.round(num1 * m) + Math.round(num2 * m)) / m; +} + +Component({ + externalClasses: ['i-class'], + + properties: { + // small || default || large + size: String, + value: { + type: Number, + value: 1 + }, + min: { + type: Number, + value: -Infinity + }, + max: { + type: Number, + value: Infinity + }, + step: { + type: Number, + value: 1 + } + }, + + + methods: { + handleChangeStep(e, type) { + const { dataset = {} } = e.currentTarget; + const { disabled } = dataset; + const { step } = this.data; + let { value } = this.data; + + if (disabled) return null; + + if (type === 'minus') { + value = addNum(value, -step); + } else if (type === 'plus') { + value = addNum(value, step); + } + + if (value < this.data.min || value > this.data.max) return null; + + this.handleEmit(value, type); + }, + + handleMinus(e) { + this.handleChangeStep(e, 'minus'); + }, + + handlePlus(e) { + this.handleChangeStep(e, 'plus'); + }, + + handleBlur(e) { + let { value } = e.detail; + const { min, max } = this.data; + + if (!value) { + setTimeout(() => { + this.handleEmit(value); + }, 16); + return; + } + + value = +value; + if (value > max) { + value = max; + } else if (value < min) { + value = min; + } + + this.handleEmit(value); + }, + handleEmit (value, type) { + const data = { + value: value + }; + if (type) data.type = type; + + this.triggerEvent('change', data); + } + } +}); diff --git a/template/dist/input-number/index.json b/template/dist/input-number/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/input-number/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/input-number/index.wxml b/template/dist/input-number/index.wxml new file mode 100644 index 0000000..b3503f4 --- /dev/null +++ b/template/dist/input-number/index.wxml @@ -0,0 +1,5 @@ + + - + + + + diff --git a/template/dist/input-number/index.wxss b/template/dist/input-number/index.wxss new file mode 100644 index 0000000..f696bb4 --- /dev/null +++ b/template/dist/input-number/index.wxss @@ -0,0 +1 @@ +.i-input-number{color:#495060}.i-input-number view{display:inline-block;line-height:20px;padding:5px 0;text-align:center;min-width:40px;box-sizing:border-box;vertical-align:middle;font-size:12px;border:1rpx solid #dddee1}.i-input-number-minus{border-right:none;border-radius:2px 0 0 2px}.i-input-number-plus{border-left:none;border-radius:0 2px 2px 0}.i-input-number-text{border:1rpx solid #dddee1;display:inline-block;text-align:center;vertical-align:middle;height:30px;width:40px;min-height:auto;font-size:12px;line-height:30px}.i-input-number-disabled{border-color:#dddee1;color:#bbbec4;background:#f7f7f7} \ No newline at end of file diff --git a/template/dist/input/index.js b/template/dist/input/index.js new file mode 100644 index 0000000..c9d4c41 --- /dev/null +++ b/template/dist/input/index.js @@ -0,0 +1,61 @@ +Component({ + behaviors: ['wx://form-field'], + + externalClasses: ['i-class'], + + properties: { + title: { + type: String + }, + // text || textarea || password || number + type: { + type: String, + value: 'text' + }, + disabled: { + type: Boolean, + value: false + }, + placeholder: { + type: String, + value: '' + }, + autofocus: { + type: Boolean, + value: false + }, + mode: { + type: String, + value: 'normal' + }, + right: { + type: Boolean, + value: false + }, + error: { + type: Boolean, + value: false + }, + maxlength: { + type: Number + } + }, + + methods: { + handleInputChange(event) { + const { detail = {} } = event; + const { value = '' } = detail; + this.setData({ value }); + + this.triggerEvent('change', event); + }, + + handleInputFocus(event) { + this.triggerEvent('focus', event); + }, + + handleInputBlur(event) { + this.triggerEvent('blur', event); + } + } +}); diff --git a/template/dist/input/index.json b/template/dist/input/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/input/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/input/index.wxml b/template/dist/input/index.wxml new file mode 100644 index 0000000..52b0ee3 --- /dev/null +++ b/template/dist/input/index.wxml @@ -0,0 +1,31 @@ + + {{ title }} + + + diff --git a/template/dist/input/index.wxss b/template/dist/input/index.wxss new file mode 100644 index 0000000..9e7e9c1 --- /dev/null +++ b/template/dist/input/index.wxss @@ -0,0 +1 @@ +.i-cell{position:relative;padding:12px 15px;display:flex;background:#fff;align-items:center;line-height:1.4;font-size:14px;overflow:hidden}.i-cell::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-bottom-width:1px;left:15px;right:0}.i-cell-last::after{display:none}.i-cell-icon{margin-right:5px}.i-cell-icon:empty{display:none}.i-cell-bd{flex:1}.i-cell-text{line-height:24px;font-size:14px}.i-cell-desc{line-height:1.2;font-size:12px;color:#80848f}.i-cell-ft{position:relative;text-align:right;color:#495060}.i-cell-access .i-cell-ft{padding-right:13px}.i-cell-access .i-cell-ft::after{content:" ";display:inline-block;width:6px;height:6px;position:absolute;top:50%;right:2px;border-width:2px 2px 0 0;border-color:#dddee1;border-style:solid;transform:translateY(-50%) matrix(.71,.71,-.71,.71,0,0)}.i-input{padding:7px 15px;color:#495060}.i-input-wrapped{margin:10px 15px;background-color:#fff}.i-input-wrapped::after{left:0;border-width:1px;border-radius:4px}.i-input-error{color:#ed3f14}.i-input-title{color:#495060;min-width:65px;padding-right:10px}.i-input-input{flex:1;line-height:1.6;padding:4px 0;min-height:22px;height:auto;font-size:14px}.i-input-placeholder{font-size:14px}.i-input-input-right{text-align:right}.i-input.i-input-wrapped::after{display:block}.i-input-wrapped.i-input-error::after{border-color:#ed3f14} \ No newline at end of file diff --git a/template/dist/load-more/index.js b/template/dist/load-more/index.js new file mode 100644 index 0000000..d0cd46c --- /dev/null +++ b/template/dist/load-more/index.js @@ -0,0 +1,14 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + loading: { + type: Boolean, + value: true + }, + tip: { + type: String, + value: '' + } + }, +}); diff --git a/template/dist/load-more/index.json b/template/dist/load-more/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/load-more/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/load-more/index.wxml b/template/dist/load-more/index.wxml new file mode 100644 index 0000000..66571af --- /dev/null +++ b/template/dist/load-more/index.wxml @@ -0,0 +1,8 @@ + + + + {{ tip }} + 正在加载 + + + \ No newline at end of file diff --git a/template/dist/load-more/index.wxss b/template/dist/load-more/index.wxss new file mode 100644 index 0000000..ffe4026 --- /dev/null +++ b/template/dist/load-more/index.wxss @@ -0,0 +1 @@ +.i-load-more{width:65%;margin:1.5em auto;line-height:1.6em;font-size:14px;text-align:center}.i-load-more-loading{display:inline-block;margin-right:12px;vertical-align:middle;width:14px;height:14px;background:0 0;border-radius:50%;border:2px solid #e9eaec;border-color:#e9eaec #e9eaec #e9eaec #2d8cf0;animation:btn-spin .6s linear;animation-iteration-count:infinite}.i-load-more-tip{display:inline-block;vertical-align:middle;color:#495060}.i-load-more-line{border-top:1px solid #dddee1;display:flex;border-top:0}.i-load-more-line::before{position:relative;top:-1px;-webkit-box-flex:1;-webkit-flex:1;flex:1;content:'';border-top:1px solid #dddee1}.i-load-more-line::after{position:relative;top:-1px;-webkit-box-flex:1;-webkit-flex:1;flex:1;content:'';border-top:1px solid #dddee1}.i-load-more-line .i-load-more-tip{position:relative;top:-.9em;padding:0 .55em}.i-load-more-empty{width:4px;height:4px;border-radius:50%;background-color:#e5e5e5;display:inline-block;position:relative;vertical-align:0;top:-.16em}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/template/dist/message/index.js b/template/dist/message/index.js new file mode 100644 index 0000000..21a6d68 --- /dev/null +++ b/template/dist/message/index.js @@ -0,0 +1,45 @@ +const default_data = { + visible: false, + content: '', + duration: 2, + type: 'default', // default || success || warning || error +}; + +let timmer = null; + +Component({ + externalClasses: ['i-class'], + + data: { + ...default_data + }, + + methods: { + handleShow (options) { + const { type = 'default', duration = 2 } = options; + + this.setData({ + ...options, + type, + duration, + visible: true + }); + + const d = this.data.duration * 1000; + + if (timmer) clearTimeout(timmer); + if (d !== 0) { + timmer = setTimeout(() => { + this.handleHide(); + timmer = null; + }, d); + } + }, + + handleHide () { + this.setData({ + ...default_data + }); + } + } +}); \ No newline at end of file diff --git a/template/dist/message/index.json b/template/dist/message/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/message/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/message/index.wxml b/template/dist/message/index.wxml new file mode 100644 index 0000000..aecaad9 --- /dev/null +++ b/template/dist/message/index.wxml @@ -0,0 +1,3 @@ + + {{ content }} + \ No newline at end of file diff --git a/template/dist/message/index.wxss b/template/dist/message/index.wxss new file mode 100644 index 0000000..e6a79a6 --- /dev/null +++ b/template/dist/message/index.wxss @@ -0,0 +1 @@ +.i-message{display:block;width:100%;min-height:32px;line-height:2.3;position:fixed;top:0;left:0;right:0;background:#2d8cf0;color:#fff;text-align:center;font-size:14px;z-index:1010;opacity:0;-webkit-transform:translateZ(0) translateY(-100%);transition:all .4s ease-in-out}.i-message-show{-webkit-transform:translateZ(0) translateY(0);opacity:1}.i-message-default{background:#2d8cf0}.i-message-success{background:#19be6b}.i-message-warning{background:#f90}.i-message-error{background:#ed3f14} \ No newline at end of file diff --git a/template/dist/modal/index.js b/template/dist/modal/index.js new file mode 100644 index 0000000..ae178e5 --- /dev/null +++ b/template/dist/modal/index.js @@ -0,0 +1,54 @@ +Component({ + externalClasses: ['i-class', 'i-class-mask'], + + properties: { + visible: { + type: Boolean, + value: false + }, + title: { + type: String, + value: '' + }, + showOk: { + type: Boolean, + value: true + }, + showCancel: { + type: Boolean, + value: true + }, + okText: { + type: String, + value: '确定' + }, + cancelText: { + type: String, + value: '取消' + }, + // 按钮组,有此值时,不显示 ok 和 cancel 按钮 + actions: { + type: Array, + value: [] + }, + // horizontal || vertical + actionMode: { + type: String, + value: 'horizontal' + } + }, + + methods: { + handleClickItem ({ currentTarget = {} }) { + const dataset = currentTarget.dataset || {}; + const { index } = dataset; + this.triggerEvent('click', { index }); + }, + handleClickOk () { + this.triggerEvent('ok'); + }, + handleClickCancel () { + this.triggerEvent('cancel'); + } + } +}); diff --git a/template/dist/modal/index.json b/template/dist/modal/index.json new file mode 100644 index 0000000..50d034a --- /dev/null +++ b/template/dist/modal/index.json @@ -0,0 +1,9 @@ +{ + "component": true, + "usingComponents": { + "i-grid": "../grid/index", + "i-grid-item": "../grid-item/index", + "i-button": "../button/index", + "i-icon": "../icon/index" + } +} diff --git a/template/dist/modal/index.wxml b/template/dist/modal/index.wxml new file mode 100644 index 0000000..11bcbd4 --- /dev/null +++ b/template/dist/modal/index.wxml @@ -0,0 +1,40 @@ + + + + + {{ title }} + + + + + + + + + + + + + + + + + + + {{ cancelText }} + + + {{ okText }} + + + + + + + \ No newline at end of file diff --git a/template/dist/modal/index.wxss b/template/dist/modal/index.wxss new file mode 100644 index 0000000..d1c42fc --- /dev/null +++ b/template/dist/modal/index.wxss @@ -0,0 +1 @@ +.i-modal{position:fixed;overflow:auto;top:0;right:0;bottom:0;left:0;height:100%;z-index:1000;display:flex;outline:0;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;transform:translateZ(1px);opacity:0;visibility:hidden}.i-modal-show{visibility:visible;opacity:1}.i-modal-mask{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.7);z-index:1000;transition:all .2s ease-in-out;opacity:0;visibility:hidden}.i-modal-mask-show{opacity:1;visibility:visible}.i-modal-main{width:270px;position:relative}.i-modal-content{border-radius:7px;padding-top:15px;position:relative;background-color:#fff;border:0;background-clip:padding-box;text-align:center;height:100%;overflow:hidden}.i-modal-body{max-height:100px;margin-bottom:15px;font-size:14px;color:#80848f;height:100%;line-height:1.5;overflow:auto}.i-modal-title{padding:6px 15px 15px;margin:0;font-size:18px;line-height:1;color:#1c2438;text-align:center}.i-modal-actions{margin:0 1px}.i-modal-action-vertical{position:relative}.i-modal-action-vertical:after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-top-width:1px}.i-modal-grid{border-radius:0 0 7px 7px;border-left:none}.i-modal-grid-item,.i-modal-grid-item-last{padding:0;border-bottom:none}.i-modal-grid-item-last{border-right:none}.i-modal-btn-ok{color:#2d8cf0!important}.i-modal-btn-loading{display:inline-block;vertical-align:middle;margin-right:10px;width:12px;height:12px;background:0 0;border-radius:50%;border:2px solid #e5e5e5;border-color:#666 #e5e5e5 #e5e5e5 #e5e5e5;animation:btn-spin .6s linear;animation-iteration-count:infinite}.i-modal-btn-text{display:inline-block;vertical-align:middle}.i-modal-btn-icon{font-size:14px!important;margin-right:4px}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/template/dist/notice-bar/index.js b/template/dist/notice-bar/index.js new file mode 100644 index 0000000..7043dbd --- /dev/null +++ b/template/dist/notice-bar/index.js @@ -0,0 +1,112 @@ +const VALID_MODE = ['closeable']; +const FONT_COLOR = '#f60'; +const BG_COLOR = '#fff7cc'; + +Component({ + externalClasses: ['i-class'], + + properties: { + closable: { + type: Boolean, + value: false + }, + icon: { + type: String, + value: '' + }, + loop: { + type: Boolean, + value: false + }, + // 背景颜色 + backgroundcolor: { + type: String, + value: '#fefcec' + }, + // 字体及图标颜色 + color: { + type: String, + value: '#f76a24' + }, + // 滚动速度 + speed: { + type: Number, + value: 1000 + } + }, + + data: { + show: true, + wrapWidth: 0, + width: 0, + duration: 0, + animation: null, + timer: null, + }, + detached() { + this.destroyTimer(); + }, + ready() { + if (this.data.loop) { + this.initAnimation(); + } + }, + + methods: { + initAnimation() { + wx.createSelectorQuery().in(this).select('.i-noticebar-content-wrap').boundingClientRect((wrapRect) => { + wx.createSelectorQuery().in(this).select('.i-noticebar-content').boundingClientRect((rect) => { + const duration = rect.width / 40 * this.data.speed; + const animation = wx.createAnimation({ + duration: duration, + timingFunction: "linear", + }); + this.setData({ + wrapWidth: wrapRect.width, + width: rect.width, + duration: duration, + animation: animation + }, () => { + this.startAnimation(); + }); + }).exec(); + + }).exec(); + }, + startAnimation() { + //reset + if (this.data.animation.option.transition.duration !== 0) { + this.data.animation.option.transition.duration = 0; + const resetAnimation = this.data.animation.translateX(this.data.wrapWidth).step(); + this.setData({ + animationData: resetAnimation.export() + }); + } + this.data.animation.option.transition.duration = this.data.duration; + const animationData = this.data.animation.translateX(-this.data.width).step(); + setTimeout(() => { + this.setData({ + animationData: animationData.export() + }); + }, 100); + const timer = setTimeout(() => { + this.startAnimation(); + }, this.data.duration); + this.setData({ + timer, + }); + }, + destroyTimer() { + if (this.data.timer) { + clearTimeout(this.data.timer); + } + }, + handleClose() { + this.destroyTimer(); + this.setData({ + show: false, + timer: null + }); + } + } +}); diff --git a/template/dist/notice-bar/index.json b/template/dist/notice-bar/index.json new file mode 100644 index 0000000..db3afc0 --- /dev/null +++ b/template/dist/notice-bar/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-icon": "../icon/index" + } +} diff --git a/template/dist/notice-bar/index.wxml b/template/dist/notice-bar/index.wxml new file mode 100644 index 0000000..5de1e11 --- /dev/null +++ b/template/dist/notice-bar/index.wxml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/template/dist/notice-bar/index.wxss b/template/dist/notice-bar/index.wxss new file mode 100644 index 0000000..9ea2aa7 --- /dev/null +++ b/template/dist/notice-bar/index.wxss @@ -0,0 +1 @@ +.i-noticebar{display:flex;height:72rpx;line-height:72rpx;font-size:14px;color:#f76a24;background-color:#fefcec;overflow:hidden}.i-noticebar-icon{display:flex;margin-left:30rpx;align-items:center}.i-noticebar-icon+view{margin-left:10rpx}.i-noticebar-operation{display:flex;margin-right:16rpx;align-items:center}.i-noticebar-content-wrap{position:relative;flex:1;margin:0 30rpx;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.i-noticebar-content-wrap .i-noticebar-content{position:absolute;transition-duration:20s} \ No newline at end of file diff --git a/template/dist/page/index.js b/template/dist/page/index.js new file mode 100644 index 0000000..e0f44c5 --- /dev/null +++ b/template/dist/page/index.js @@ -0,0 +1,42 @@ +Component({ + externalClasses: ['i-class'], + + options: { + multipleSlots: true + }, + + properties: { + // button || number || pointer + mode: { + type: String, + value: 'button' + }, + current: { + type: Number, + value: 1 + }, + total: { + type: Number, + value: 0 + }, + // 是否隐藏数值 + simple: { + type: Boolean, + value: false + } + }, + + methods: { + handleChange (type) { + this.triggerEvent('change', { + type: type + }); + }, + handlePrev () { + this.handleChange('prev'); + }, + handleNext () { + this.handleChange('next'); + } + } +}); diff --git a/template/dist/page/index.json b/template/dist/page/index.json new file mode 100644 index 0000000..7b1a128 --- /dev/null +++ b/template/dist/page/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-button": "../button/index" + } +} diff --git a/template/dist/page/index.wxml b/template/dist/page/index.wxml new file mode 100644 index 0000000..a84d47b --- /dev/null +++ b/template/dist/page/index.wxml @@ -0,0 +1,14 @@ + + + + + + {{ current }}/{{total}} + + + + + + + + diff --git a/template/dist/page/index.wxss b/template/dist/page/index.wxss new file mode 100644 index 0000000..06c5c3b --- /dev/null +++ b/template/dist/page/index.wxss @@ -0,0 +1 @@ +.i-page{display:block;width:100%;height:44px;overflow:hidden;box-sizing:border-box;position:relative}.i-page-prev{position:absolute;left:10px;top:0}.i-page-next{position:absolute;right:10px;top:0}.i-page-number{width:100%;height:44px;line-height:44px;margin:0 auto;text-align:center}.i-page-number-current{display:inline;color:#2d8cf0}.i-page-pointer{width:100%;height:44px;line-height:44px;margin:0 auto;text-align:center}.i-page-pointer-dot{display:inline-block;width:8px;height:8px;margin:0 2px;border-radius:50%;background:#bbbec4}.i-page-pointer-dot.current{background:#80848f}.i-page-button{display:inline-block;margin:0} \ No newline at end of file diff --git a/template/dist/panel/index.js b/template/dist/panel/index.js new file mode 100644 index 0000000..b572da5 --- /dev/null +++ b/template/dist/panel/index.js @@ -0,0 +1,19 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + title: { + type: String, + value: '' + }, + // 标题顶部距离 + hideTop: { + type: Boolean, + value: false + }, + hideBorder: { + type: Boolean, + value: false + } + } +}); diff --git a/template/dist/panel/index.json b/template/dist/panel/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/panel/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/panel/index.wxml b/template/dist/panel/index.wxml new file mode 100644 index 0000000..aa91c20 --- /dev/null +++ b/template/dist/panel/index.wxml @@ -0,0 +1,4 @@ + + {{ title }} + + diff --git a/template/dist/panel/index.wxss b/template/dist/panel/index.wxss new file mode 100644 index 0000000..edee3b8 --- /dev/null +++ b/template/dist/panel/index.wxss @@ -0,0 +1 @@ +.i-panel{position:relative;overflow:hidden}.i-panel-title{font-size:14px;line-height:1;color:#1c2438;padding:20px 16px 10px}.i-panel-title-hide-top{padding-top:0}.i-panel-content{position:relative;background:#fff;overflow:hidden}.i-panel-content::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-top-width:1px;border-bottom-width:1px}.i-panel-without-border::after{border:0 none} \ No newline at end of file diff --git a/template/dist/progress/index.js b/template/dist/progress/index.js new file mode 100644 index 0000000..b87b962 --- /dev/null +++ b/template/dist/progress/index.js @@ -0,0 +1,23 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + percent: { + type: Number, + value: 0 + }, + // normal || active || wrong || success + status: { + type: String, + value: 'normal' + }, + strokeWidth: { + type: Number, + value: 10 + }, + hideInfo: { + type: Boolean, + value: false + } + } +}); diff --git a/template/dist/progress/index.json b/template/dist/progress/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/progress/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/progress/index.wxml b/template/dist/progress/index.wxml new file mode 100644 index 0000000..09b5abc --- /dev/null +++ b/template/dist/progress/index.wxml @@ -0,0 +1,10 @@ + + + + + + + + {{ percent }}% + + \ No newline at end of file diff --git a/template/dist/progress/index.wxss b/template/dist/progress/index.wxss new file mode 100644 index 0000000..21b9d9c --- /dev/null +++ b/template/dist/progress/index.wxss @@ -0,0 +1 @@ +.i-progress{display:inline-block;width:100%;font-size:12px;position:relative}.i-progress-outer{display:inline-block;width:100%;margin-right:0;padding-right:0;box-sizing:border-box}.i-progress-show-info .i-progress-outer{padding-right:55px;margin-right:-55px}.i-progress-inner{display:inline-block;width:100%;background-color:#f3f3f3;border-radius:100px;vertical-align:middle}.i-progress-bg{border-radius:100px;background-color:#2db7f5;transition:all .2s linear;position:relative}.i-progress-text{display:inline-block;margin-left:5px;text-align:left;font-size:1em;vertical-align:middle}.i-progress-active .i-progress-bg:before{content:'';opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;background:#fff;border-radius:10px;animation:i-progress-active 2s ease-in-out infinite}.i-progress-wrong .i-progress-bg{background-color:#ed3f14}.i-progress-wrong .i-progress-text{color:#ed3f14}.i-progress-success .i-progress-bg{background-color:#19be6b}.i-progress-success .i-progress-text{color:#19be6b}@keyframes i-progress-active{0%{opacity:.3;width:0}100%{opacity:0;width:100%}} \ No newline at end of file diff --git a/template/dist/radio-group/index.js b/template/dist/radio-group/index.js new file mode 100644 index 0000000..db76e41 --- /dev/null +++ b/template/dist/radio-group/index.js @@ -0,0 +1,38 @@ +Component({ + externalClasses: ['i-class'], + relations: { + '../radio/index': { + type: 'child', + linked() { + this.changeCurrent(); + }, + linkChanged() { + this.changeCurrent(); + }, + unlinked() { + this.changeCurrent(); + } + } + }, + properties: { + current: { + type: String, + value: '', + observer: 'changeCurrent' + }, + }, + methods: { + changeCurrent(val = this.data.current) { + let items = this.getRelationNodes('../radio/index'); + const len = items.length; + if (len > 0) { + items.forEach(item => { + item.changeCurrent(val === item.data.value); + }); + } + }, + emitEvent(current) { + this.triggerEvent('change', current); + } + } +}); diff --git a/template/dist/radio-group/index.json b/template/dist/radio-group/index.json new file mode 100644 index 0000000..edf138d --- /dev/null +++ b/template/dist/radio-group/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-cell-group": "../cell-group/index" + } +} diff --git a/template/dist/radio-group/index.wxml b/template/dist/radio-group/index.wxml new file mode 100644 index 0000000..6940180 --- /dev/null +++ b/template/dist/radio-group/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/template/dist/radio-group/index.wxss b/template/dist/radio-group/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/template/dist/radio/index.js b/template/dist/radio/index.js new file mode 100644 index 0000000..cb73db5 --- /dev/null +++ b/template/dist/radio/index.js @@ -0,0 +1,56 @@ +const prefixCls = 'i-radio'; + +Component({ + externalClasses: ['i-class'], + relations: { + '../radio-group/index': { + type: 'parent' + } + }, + properties: { + value: { + type: String, + value: '' + }, + checked: { + type: Boolean, + value: false + }, + disabled: { + type: Boolean, + value: false + }, + color: { + type: String, + value: '#2d8cf0' + }, + position: { + type: String, + value: 'left', //left right + observer: 'setPosition' + } + }, + data: { + checked: true, + positionCls: `${prefixCls}-radio-left`, + }, + attached() { + this.setPosition(); + }, + methods: { + changeCurrent(current) { + this.setData({ checked: current }); + }, + radioChange() { + if (this.data.disabled) return; + const item = { current: !this.data.checked, value: this.data.value }; + const parent = this.getRelationNodes('../radio-group/index')[0]; + parent ? parent.emitEvent(item) : this.triggerEvent('change', item); + }, + setPosition() { + this.setData({ + positionCls: this.data.position.indexOf('left') !== -1 ? `${prefixCls}-radio-left` : `${prefixCls}-radio-right`, + }); + } + } +}); diff --git a/template/dist/radio/index.json b/template/dist/radio/index.json new file mode 100644 index 0000000..e2ab49a --- /dev/null +++ b/template/dist/radio/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-cell": "../cell/index" + } +} diff --git a/template/dist/radio/index.wxml b/template/dist/radio/index.wxml new file mode 100644 index 0000000..1e20b79 --- /dev/null +++ b/template/dist/radio/index.wxml @@ -0,0 +1,8 @@ + + + + + diff --git a/template/dist/radio/index.wxss b/template/dist/radio/index.wxss new file mode 100644 index 0000000..c52b211 --- /dev/null +++ b/template/dist/radio/index.wxss @@ -0,0 +1 @@ +.i-radio-cell::after{display:block}.i-radio-radio-left{float:left}.i-radio-radio-right{float:right}.i-radio-radio{vertical-align:middle}.i-radio-title{display:inline-block;vertical-align:middle} \ No newline at end of file diff --git a/template/dist/rate/index.js b/template/dist/rate/index.js new file mode 100644 index 0000000..a7e374a --- /dev/null +++ b/template/dist/rate/index.js @@ -0,0 +1,69 @@ +Component({ + externalClasses: ['i-class'], + properties : { + count : { + type : Number, + value : 5 + }, + value : { + type : Number, + value : 0 + }, + disabled : { + type : Boolean, + value : false + }, + size : { + type : Number, + value : 20 + }, + name : { + type : String, + value : '' + } + }, + data : { + touchesStart : { + pageX : 0 + } + }, + methods : { + handleClick(e){ + const data = this.data; + if( data.disabled ){ + return; + } + const index = e.currentTarget.dataset.index; + this.triggerEvent('change',{ + index : index + 1 + }) + }, + handleTouchMove(e){ + const data = this.data; + if( data.disabled ){ + return; + } + if( !e.changedTouches[0] ){ + return; + } + const movePageX = e.changedTouches[0].pageX; + const space = movePageX - data.touchesStart.pageX; + + if( space <= 0 ){ + return; + } + let setIndex = Math.ceil( space/data.size ); + setIndex = setIndex > data.count ? data.count : setIndex ; + this.triggerEvent('change',{ + index : setIndex + }) + } + }, + ready(){ + const className = '.i-rate'; + var query = wx.createSelectorQuery().in(this) + query.select( className ).boundingClientRect((res)=>{ + this.data.touchesStart.pageX = res.left || 0; + }).exec() + } +}); diff --git a/template/dist/rate/index.json b/template/dist/rate/index.json new file mode 100644 index 0000000..687543c --- /dev/null +++ b/template/dist/rate/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents":{ + "i-icon": "../icon/index" + } +} diff --git a/template/dist/rate/index.wxml b/template/dist/rate/index.wxml new file mode 100644 index 0000000..d600660 --- /dev/null +++ b/template/dist/rate/index.wxml @@ -0,0 +1,23 @@ + + + + + + + + +var prefixCls = 'i-rate'; +module.exports = { + getCurrent : function( value,index ){ + if( index < value ){ + return prefixCls + '-current' + } + } +} + diff --git a/template/dist/rate/index.wxss b/template/dist/rate/index.wxss new file mode 100644 index 0000000..e889107 --- /dev/null +++ b/template/dist/rate/index.wxss @@ -0,0 +1 @@ +.i-rate{margin:0;padding:0;font-size:20px;display:inline-block;vertical-align:middle;font-weight:400;font-style:normal}.i-rate-hide-input{display:none}.i-rate-star{display:inline-block;color:#e9e9e9}.i-rate-current{color:#f5a623}.i-rate-text{display:inline-block;vertical-align:middle;margin-left:6px;font-size:14px} \ No newline at end of file diff --git a/template/dist/row/index.js b/template/dist/row/index.js new file mode 100644 index 0000000..3428387 --- /dev/null +++ b/template/dist/row/index.js @@ -0,0 +1,9 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../col/index': { + type: 'child' + } + } +}); diff --git a/template/dist/row/index.json b/template/dist/row/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/row/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/row/index.wxml b/template/dist/row/index.wxml new file mode 100644 index 0000000..fe8159e --- /dev/null +++ b/template/dist/row/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/template/dist/row/index.wxss b/template/dist/row/index.wxss new file mode 100644 index 0000000..3b8b432 --- /dev/null +++ b/template/dist/row/index.wxss @@ -0,0 +1 @@ +.i-row:after{content:"";display:table;clear:both} \ No newline at end of file diff --git a/template/dist/slide/index.js b/template/dist/slide/index.js new file mode 100644 index 0000000..a397f4f --- /dev/null +++ b/template/dist/slide/index.js @@ -0,0 +1,15 @@ +Component({ + externalClasses: ['i-class'], + options: { + // 在组件定义时的选项中启用多slot支持 + multipleSlots: true + }, + methods : { + handleTap2(){ + console.log(event,1111111) + }, + handleTap3(){ + + } + } +}); diff --git a/template/dist/slide/index.json b/template/dist/slide/index.json new file mode 100644 index 0000000..6b1e67d --- /dev/null +++ b/template/dist/slide/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": + { + "i-button": "../button/index", + "i-icon": "../icon/index" + } +} diff --git a/template/dist/slide/index.wxml b/template/dist/slide/index.wxml new file mode 100644 index 0000000..a13c673 --- /dev/null +++ b/template/dist/slide/index.wxml @@ -0,0 +1,4 @@ + + 1111 + + \ No newline at end of file diff --git a/template/dist/slide/index.wxss b/template/dist/slide/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/template/dist/spin/index.js b/template/dist/spin/index.js new file mode 100644 index 0000000..3297f81 --- /dev/null +++ b/template/dist/spin/index.js @@ -0,0 +1,23 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + // small || default || large + size: { + type: String, + value: 'default' + }, + fix: { + type: Boolean, + value: false + }, + fullscreen: { + type: Boolean, + value: false + }, + custom: { + type: Boolean, + value: false + } + } +}); diff --git a/template/dist/spin/index.json b/template/dist/spin/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/spin/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/spin/index.wxml b/template/dist/spin/index.wxml new file mode 100644 index 0000000..8c25439 --- /dev/null +++ b/template/dist/spin/index.wxml @@ -0,0 +1,6 @@ + +
+ +
+
+
diff --git a/template/dist/spin/index.wxss b/template/dist/spin/index.wxss new file mode 100644 index 0000000..8ed714a --- /dev/null +++ b/template/dist/spin/index.wxss @@ -0,0 +1 @@ +.i-spin{color:#2d8cf0;vertical-align:middle;text-align:center}.i-spin-dot{position:relative;display:block;border-radius:50%;background-color:#2d8cf0;width:20px;height:20px;animation:ani-spin-bounce 1s 0s ease-in-out infinite}.i-spin-large .i-spin-dot{width:32px;height:32px}.i-spin-small .i-spin-dot{width:12px;height:12px}.i-spin-fix{position:absolute;top:0;left:0;z-index:8;width:100%;height:100%;background-color:rgba(255,255,255,.9)}.i-spin-fullscreen{z-index:2010}.i-spin-fullscreen-wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.i-spin-fix .i-spin-main{position:absolute;top:50%;left:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.i-spin-fix .i-spin-dot{display:inline-block}.i-spin-show-text .i-spin-dot,.i-spin-text{display:none}.i-spin-show-text .i-spin-text{display:block;font-size:14px}@keyframes ani-spin-bounce{0%{transform:scale(0)}100%{transform:scale(1);opacity:0}} \ No newline at end of file diff --git a/template/dist/step/index.js b/template/dist/step/index.js new file mode 100644 index 0000000..06a81a2 --- /dev/null +++ b/template/dist/step/index.js @@ -0,0 +1,52 @@ +Component({ + externalClasses: ['i-class'], + properties : { + status : { + type : String, + //wait、process、finish、error + value : '' + }, + title : { + type : String, + value : '' + }, + content : { + type : String, + value : '' + }, + icon : { + type : String, + value : '' + } + }, + options: { + // 在组件定义时的选项中启用多slot支持 + multipleSlots: true + }, + relations : { + '../steps/index' : { + type : 'parent' + } + }, + data : { + //step length + len : 1, + //current in step index + index : 0, + //parent component select current index + current : 0, + //css direction + direction : 'horizontal' + }, + methods : { + updateDataChange( options ){ + this.setData({ + len : options.len, + index : options.index, + current : options.current, + direction : options.direction + }) + } + } + +}) \ No newline at end of file diff --git a/template/dist/step/index.json b/template/dist/step/index.json new file mode 100644 index 0000000..ffb5dee --- /dev/null +++ b/template/dist/step/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-icon": "../icon/index" + } +} diff --git a/template/dist/step/index.wxml b/template/dist/step/index.wxml new file mode 100644 index 0000000..63549dc --- /dev/null +++ b/template/dist/step/index.wxml @@ -0,0 +1,70 @@ + + + {{ index+1 }} + + + + + + + + {{title}} + + + + + + {{content}} + + + + + + + +var allStatus = ['wait','process','finish','error']; +module.exports = { + noIco : function( status,current,index,icon ){ + var aindex = allStatus.indexOf(status); + var noIcon = true; + if( index < current || icon !== '' ){ + noIcon = false; + } + return noIcon; + }, + getIcoClass : function( status,ico ){ + var class = ''; + if( status === 'error' ){ + class = 'close'; + }else{ + class = 'right'; + } + if( ico !== '' ){ + class = ico; + } + return class; + }, + getItemStyle : function(len,direction){ + if( direction === 'horizontal' ){ + return 'width :'+100/len + '%'; + }else{ + return 'width : 100%;'; + } + }, + getClass : function( status,current,index ) { + //wait、process、finish、error + var startClass = 'i-step-' + var classes = ''; + var cindex = allStatus.indexOf( status ); + if( cindex !== -1 ){ + classes = startClass + allStatus[cindex]; + } + if( index < current ){ + classes = startClass + 'finish'; + }else if( index === current ){ + classes = startClass + 'process'; + } + return classes; + } +} + \ No newline at end of file diff --git a/template/dist/step/index.wxss b/template/dist/step/index.wxss new file mode 100644 index 0000000..284b42a --- /dev/null +++ b/template/dist/step/index.wxss @@ -0,0 +1 @@ +.i-step-ico{width:24px;height:100%;border-radius:100%;background:#fff;position:relative;z-index:2;margin:0 auto;border:#dddee1 solid 1px}.i-step-ico-in{vertical-align:baseline}.i-step-line{position:absolute;left:50%;top:12px;width:100%;height:1px;background:#dddee1}.i-step-horizontal .i-step-ico::after{position:absolute;top:11px;left:23px;z-index:1;content:'';height:1px;background:#fff;width:10px}.i-step-horizontal .i-step-item-main{text-align:center}.i-step-horizontal .i-step-ico::before{position:absolute;top:11px;left:-11px;z-index:1;content:'';height:1px;background:#fff;width:10px}.i-step-ico{box-sizing:border-box;font-size:12px}.i-step-process .i-step-ico{border:#2d8cf0 solid 1px;color:#fff;background:#2d8cf0}.i-step-wait .i-step-ico{border:#e9eaec solid 1px;color:#e9eaec}.i-step-wait .i-step-line{background:#2d8cf0}.i-step-finish .i-step-ico{border:#2d8cf0 solid 1px;color:#2d8cf0}.i-step-finish .i-step-line{background:#2d8cf0}.i-step-error .i-step-ico{border:#ed3f14 solid 1px;color:#ed3f14}.i-step-error .i-step-line{background:#ed3f14}.i-step-item{font-size:12px;position:relative;display:inline-block;box-sizing:border-box;padding-left:10px;vertical-align:top}.i-step-item-ico{width:100%;height:24px;line-height:24px;text-align:center}.i-step-item-main{margin-top:10px;clear:both}.i-step-item-title{font-size:14px;font-weight:700;color:#1c2438}.i-step-item-content{font-size:12px;font-weight:700;margin-top:2px;color:#80848f}.i-step-vertical{padding-bottom:30px}.i-step-vertical .i-step-item-ico{width:24px;float:left}.i-step-vertical .i-step-item-main{margin-left:40px;margin-top:0;clear:inherit}.i-step-vertical .i-step-line{position:absolute;height:100%;top:0;left:10px;margin:0 0 0 12px;width:1px} \ No newline at end of file diff --git a/template/dist/steps/index.js b/template/dist/steps/index.js new file mode 100644 index 0000000..06bed88 --- /dev/null +++ b/template/dist/steps/index.js @@ -0,0 +1,50 @@ +Component({ + externalClasses: ['i-class'], + properties : { + current : { + type : Number, + value : -1, + observer : '_updateDataChange' + }, + status : { + type : String, + //wait、process、finish、error + value : '' + }, + direction : { + type : String, + //value has horizontal or vertical + value : 'horizontal' + } + }, + relations : { + '../step/index' : { + type : 'child', + linked(){ + this._updateDataChange(); + }, + linkChanged () { + this._updateDataChange(); + }, + unlinked () { + this._updateDataChange(); + } + } + }, + methods: { + _updateDataChange() { + let steps = this.getRelationNodes('../step/index'); + const len = steps.length; + if (len > 0) { + steps.forEach((step, index) => { + step.updateDataChange({ + len : len, + index : index, + current : this.data.current, + direction : this.data.direction + }); + }); + } + } + } +}) \ No newline at end of file diff --git a/template/dist/steps/index.json b/template/dist/steps/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/steps/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/steps/index.wxml b/template/dist/steps/index.wxml new file mode 100644 index 0000000..d9c7942 --- /dev/null +++ b/template/dist/steps/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/template/dist/steps/index.wxss b/template/dist/steps/index.wxss new file mode 100644 index 0000000..616ed04 --- /dev/null +++ b/template/dist/steps/index.wxss @@ -0,0 +1 @@ +.i-steps{width:100%} \ No newline at end of file diff --git a/template/dist/sticky-item/index.js b/template/dist/sticky-item/index.js new file mode 100644 index 0000000..4fc3dbe --- /dev/null +++ b/template/dist/sticky-item/index.js @@ -0,0 +1,40 @@ +Component({ + externalClasses: ['i-class'], + options: { + multipleSlots: true + }, + relations : { + '../sticky/index' : { + type : 'parent' + } + }, + data : { + top : 0, + height : 0, + isFixed : false, + index : -1, + }, + methods: { + updateScrollTopChange(scrollTop){ + const data = this.data; + const top = data.top; + const height = data.height; + this.setData({ + isFixed : ( scrollTop >= top && scrollTop < top + height ) ? true : false + }) + }, + updateDataChange(index) { + const className = '.i-sticky-item'; + const query = wx.createSelectorQuery().in(this); + query.select( className ).boundingClientRect((res)=>{ + if( res ){ + this.setData({ + top : res.top, + height : res.height, + index : index + }) + } + }).exec() + } + } +}) \ No newline at end of file diff --git a/template/dist/sticky-item/index.json b/template/dist/sticky-item/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/sticky-item/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/sticky-item/index.wxml b/template/dist/sticky-item/index.wxml new file mode 100644 index 0000000..613a5c0 --- /dev/null +++ b/template/dist/sticky-item/index.wxml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/template/dist/sticky-item/index.wxss b/template/dist/sticky-item/index.wxss new file mode 100644 index 0000000..7328f0f --- /dev/null +++ b/template/dist/sticky-item/index.wxss @@ -0,0 +1 @@ +.i-sticky-item-header{background:#eee;font-size:14px;width:100%;height:32px;line-height:32px}.i-sticky-item-content{font-size:14px}.i-sticky-title{width:100%;padding:0 15px;box-sizing:border-box;background:#eee}.i-sticky-fixed .i-sticky-title{position:fixed;top:0} \ No newline at end of file diff --git a/template/dist/sticky/index.js b/template/dist/sticky/index.js new file mode 100644 index 0000000..546aa4c --- /dev/null +++ b/template/dist/sticky/index.js @@ -0,0 +1,63 @@ +Component({ + externalClasses: ['i-class'], + properties : { + scrollTop : { + type : Number, + observer(val){ + this._updateScrollTopChange(); + } + } + }, + relations : { + '../sticky-item/index' : { + type : 'child', + linked(){ + this._updateDataChange(); + }, + linkChanged () { + this._updateDataChange(); + }, + unlinked () { + this._updateDataChange(); + } + } + }, + data : { + timer : null, + itemLength : 0, + }, + methods : { + _updateScrollTopChange(){ + const stickies = this.getRelationNodes('../sticky-item/index'); + if( stickies.length > 0 ){ + stickies.forEach((item) => { + if( item ){ + item.updateScrollTopChange( this.data.scrollTop ); + } + }) + } + }, + _updateDataChange( ){ + const stickies = this.getRelationNodes('../sticky-item/index'); + if( stickies.length > 0 ){ + if( this.data.timer ){ + clearTimeout( this.data.timer ) + this.setData({ + timer : null + }) + } + this.data.timer = setTimeout(()=>{ + stickies.forEach((item,index) => { + if( item ){ + item.updateDataChange(index); + } + }) + },0) + this.setData({ + timer : this.data.timer + }) + } + } + } + +}) \ No newline at end of file diff --git a/template/dist/sticky/index.json b/template/dist/sticky/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/sticky/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/sticky/index.wxml b/template/dist/sticky/index.wxml new file mode 100644 index 0000000..aee0c63 --- /dev/null +++ b/template/dist/sticky/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/template/dist/sticky/index.wxss b/template/dist/sticky/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/template/dist/sticky/tab-bar-item/index.js b/template/dist/sticky/tab-bar-item/index.js new file mode 100644 index 0000000..0c24c1a --- /dev/null +++ b/template/dist/sticky/tab-bar-item/index.js @@ -0,0 +1,62 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../tab-bar/index': { + type: 'parent' + } + }, + + properties: { + icon: { + type: String, + value: '' + }, + currentIcon: { + type: String, + value: '' + }, + img: { + type: String, + value: '' + }, + currentImg: { + type: String, + value: '' + }, + key: { + type: String, + value: '' + }, + title: { + type: String, + value: '' + }, + dot: { + type: Boolean, + value: false + }, + count: { + type: Number, + value: 0 + } + }, + + data: { + current: false, + currentColor: '' + }, + + methods: { + changeCurrent (current) { + this.setData({ current }); + }, + changeCurrentColor (currentColor) { + this.setData({ currentColor }); + }, + handleClickItem () { + const parent = this.getRelationNodes('../tab-bar/index')[0]; + parent.emitEvent(this.data.key); + } + } +}); diff --git a/template/dist/sticky/tab-bar-item/index.json b/template/dist/sticky/tab-bar-item/index.json new file mode 100644 index 0000000..918aaf8 --- /dev/null +++ b/template/dist/sticky/tab-bar-item/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": + { + "i-badge": "../badge/index", + "i-icon": "../icon/index" + } +} diff --git a/template/dist/sticky/tab-bar-item/index.wxml b/template/dist/sticky/tab-bar-item/index.wxml new file mode 100644 index 0000000..7153909 --- /dev/null +++ b/template/dist/sticky/tab-bar-item/index.wxml @@ -0,0 +1,10 @@ + + + + + + {{ title }} + {{ title }} + + + \ No newline at end of file diff --git a/template/dist/sticky/tab-bar-item/index.wxss b/template/dist/sticky/tab-bar-item/index.wxss new file mode 100644 index 0000000..0f8a9c8 --- /dev/null +++ b/template/dist/sticky/tab-bar-item/index.wxss @@ -0,0 +1 @@ +.i-tab-bar-item{flex:1;display:flex;width:100%;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;text-align:center}.i-tab-bar-item-icon{display:flex;-webkit-box-pack:center;justify-content:center;box-sizing:border-box;color:#80848f}.i-tab-bar-item-icon-current{color:#2d8cf0}.i-tab-bar-item-img{display:flex;-webkit-box-pack:center;justify-content:center;box-sizing:border-box;width:22px;height:22px}.i-tab-bar-item-title{font-size:10px;margin:3px 0 0;line-height:1;text-align:center;box-sizing:border-box;color:#80848f}.i-tab-bar-item-title-current{color:#2d8cf0}.i-tab-bar-item-img{display:flex;-webkit-box-pack:center;justify-content:center;box-sizing:border-box;color:#80848f} \ No newline at end of file diff --git a/template/dist/swipeout/index.js b/template/dist/swipeout/index.js new file mode 100644 index 0000000..b23748c --- /dev/null +++ b/template/dist/swipeout/index.js @@ -0,0 +1,161 @@ + /* +* touch事件判断方式 +* https://github.com/madrobby/zepto/blob/master/src/touch.js#files +*/ +function swipeDirection(x1, x2, y1, y2) { + return Math.abs(x1 - x2) >= + Math.abs(y1 - y2) ? (x1 - x2 > 0 ? 'Left' : 'Right') : (y1 - y2 > 0 ? 'Up' : 'Down') +} + +Component({ + externalClasses: ['i-class'], + properties: { + actions: { + value: [], + type: Array, + observer : '_updateButtonSize' + }, + unclosable : { + value : false, + type : Boolean + }, + toggle : { + value : false, + type : Boolean, + observer : 'closeButtonGroup' + }, + operateWidth : { + type : Number, + value : 160 + } + }, + options: { + // 在组件定义时的选项中启用多slot支持 + multipleSlots: true + }, + data : { + //touch start position + tStart : { + pageX : 0, + pageY : 0 + }, + //限制滑动距离 + limitMove : 0, + //element move position + position : { + pageX : 0, + pageY : 0 + } + }, + methods : { + //阻止事件冒泡 + loop(){}, + _updateButtonSize(){ + const actions = this.data.actions; + if( actions.length > 0 ){ + const query = wx.createSelectorQuery().in(this); + let limitMovePosition = 0; + actions.forEach(item => { + limitMovePosition += item.width || 0; + }); + this.data.limitMove = limitMovePosition; + /* + * 动态获取每个传进值的按钮尺寸不能正确获取,在安卓上少了6px + * 暂时实现需要在actions里面传递宽度 + * 需要后期调研 + */ + //query.selectAll('.i-swipeout-button-right-item').boundingClientRect((rects)=>{ + // if( rects ){ + // console.log(rects,1111111) + // rects.forEach(item => { + // limitMovePosition += item.width; + // }); + // this.data.limitMove = limitMovePosition; + // console.log(limitMovePosition,111111111) + // } + // }).exec() + }else{ + this.data.limitMove = this.data.operateWidth; + + } + }, + handlerTouchstart(event){ + const touches = event.touches ? event.touches[0] : {}; + const tStart = this.data.tStart; + if( touches ){ + for( let i in tStart ){ + if( touches[i] ){ + tStart[i] = touches[i]; + } + } + } + }, + swipper(touches){ + const data = this.data; + const start = data.tStart; + const spacing = { + pageX : touches.pageX - start.pageX, + pageY : touches.pageY - start.pageY + } + if( data.limitMove < Math.abs( spacing.pageX ) ){ + spacing.pageX = -data.limitMove; + + } + this.setData({ + 'position' : spacing + }) + }, + handlerTouchmove(event){ + const start = this.data.tStart; + const touches = event.touches ? event.touches[0] : {}; + if( touches ){ + const direction = swipeDirection( start.pageX,touches.pageX,start.pageY,touches.pageY ); + if( direction === 'Left' ){ + this.swipper( touches ); + } + } + }, + handlerTouchend(event){ + const start = this.data.tStart; + const touches = event.changedTouches ? event.changedTouches[0] : {}; + if( touches ){ + const direction = swipeDirection( start.pageX,touches.pageX,start.pageY,touches.pageY ); + const spacing = { + pageX : touches.pageX - start.pageX, + pageY : touches.pageY - start.pageY + } + if( Math.abs( spacing.pageX ) >= 40 && direction === "Left" ){ + spacing.pageX = spacing.pageX < 0 ? - this.data.limitMove : this.data.limitMove; + }else{ + spacing.pageX = 0; + } + this.setData({ + 'position' : spacing + }) + } + }, + handlerButton(event){ + if( !this.data.unclosable ){ + this.closeButtonGroup(); + } + const dataset = event.currentTarget.dataset; + this.triggerEvent('change',{ + index : dataset.index + }) + }, + closeButtonGroup(){ + this.setData({ + 'position' : {pageX : 0,pageY : 0} + }) + }, + //控制自定义组件 + handlerParentButton(event){ + if( !this.data.unclosable ){ + this.closeButtonGroup(); + } + } + }, + ready(){ + this._updateButtonSize(); + } +}); diff --git a/template/dist/swipeout/index.json b/template/dist/swipeout/index.json new file mode 100644 index 0000000..c63f9a6 --- /dev/null +++ b/template/dist/swipeout/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "i-cell": "../cell/index", + "i-icon": "../icon/index" + } +} \ No newline at end of file diff --git a/template/dist/swipeout/index.wxml b/template/dist/swipeout/index.wxml new file mode 100644 index 0000000..f588015 --- /dev/null +++ b/template/dist/swipeout/index.wxml @@ -0,0 +1,39 @@ + + + + + + + + + + {{item.name}} + + + + + + + + + module.exports = { + setStyle : function( item ){ + var defaults = '#f7f7f7'; + return 'background:' + ( item.background ? item.background : defaults ) +';' + 'color:'+ item.color; + }, + setPosition : function( position ){ + return 'transform:translate(' + position.pageX + 'px,0);'; + } + } + \ No newline at end of file diff --git a/template/dist/swipeout/index.wxss b/template/dist/swipeout/index.wxss new file mode 100644 index 0000000..597cffc --- /dev/null +++ b/template/dist/swipeout/index.wxss @@ -0,0 +1 @@ +.i-swipeout-wrap{border-bottom:#dddee1 solid 1px;background:#fff;position:relative;overflow:hidden}.i-swipeout-item{width:100%;padding:15px 20px;box-sizing:border-box;transition:transform .2s ease;font-size:14px}.i-swipeout-content{white-space:nowrap;overflow:hidden}.i-swipeout-button-right-group{position:absolute;right:-100%;top:0;height:100%;z-index:1;width:100%}.i-swipeout-button-right-item{height:100%;float:left;white-space:nowrap;box-sizing:border-box;display:flex;align-items:center;justify-content:center} \ No newline at end of file diff --git a/template/dist/switch/index.js b/template/dist/switch/index.js new file mode 100644 index 0000000..5ebccfa --- /dev/null +++ b/template/dist/switch/index.js @@ -0,0 +1,38 @@ +Component({ + externalClasses: ['i-class'], + properties : { + value : { + type : Boolean, + value : false + }, + //large small default + size : { + type : String, + value : 'default' + }, + // is or not disable + disabled : { + type : Boolean, + value : false + }, + // hidden inut name + name : { + type : String, + value : '' + } + }, + options: { + // 在组件定义时的选项中启用多slot支持 + multipleSlots: true + }, + methods : { + toggle(){ + if( this.data.disabled ) return; + const data = this.data; + const value = data.value ? false : true; + this.triggerEvent('change',{ + value : value + }) + } + } +}); diff --git a/template/dist/switch/index.json b/template/dist/switch/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/switch/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/switch/index.wxml b/template/dist/switch/index.wxml new file mode 100644 index 0000000..a180254 --- /dev/null +++ b/template/dist/switch/index.wxml @@ -0,0 +1,26 @@ + + + + + + + + + + +var sizes = ['large', 'default']; +var prefixCls = 'i-switch'; +module.exports = { + setSize : function( size ){ + var index = sizes.indexOf( size ); + return prefixCls + ( index > -1 ? ( '-'+size ) : 'default' ) + }, + setCurrent : function( value,disabled ){ + var className = value && !disabled ? prefixCls + '-checked' : ''; + if( disabled ){ + className += ' ' + prefixCls + '-disabled'; + } + return className; + } +} + \ No newline at end of file diff --git a/template/dist/switch/index.wxss b/template/dist/switch/index.wxss new file mode 100644 index 0000000..128fea6 --- /dev/null +++ b/template/dist/switch/index.wxss @@ -0,0 +1 @@ +.i-switch{display:inline-block;width:48px;height:24px;line-height:24px;border-radius:24px;vertical-align:middle;border:1px solid #ccc;background-color:#ccc;position:relative;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:all .2s ease-in-out}.i-switch-hide-input{display:none;opacity:0}.i-switch-inner{color:#fff;font-size:12px;position:absolute;left:25px;vertical-align:middle}.i-switch-inner .i-icon{width:12px;height:12px;text-align:center;vertical-align:middle}.i-switch:after{content:'';width:22px;height:22px;border-radius:22px;background-color:#fff;position:absolute;left:1px;top:1px;cursor:pointer;transition:left .2s ease-in-out,width .2s ease-in-out}.i-switch-checked:after{left:8px}.i-switch-large{width:60px}.i-switch-large.i-switch-checked:after{left:37px}.i-switch-checked:after{left:25px}.i-switch-checked{border-color:#2d8cf0;background-color:#2d8cf0}.i-switch-checked .i-switch-inner{left:8px}.i-switch-checked:after{left:25px}.i-switch-disabled{background:#f3f3f3;border-color:#f3f3f3}.i-switch-disabled:after{background:#ccc;cursor:not-allowed}.i-switch-disabled .i-switch-inner{color:#ccc} \ No newline at end of file diff --git a/template/dist/tab-bar/index.js b/template/dist/tab-bar/index.js new file mode 100644 index 0000000..ca02fe4 --- /dev/null +++ b/template/dist/tab-bar/index.js @@ -0,0 +1,66 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../tab-bar-item/index': { + type: 'child', + linked () { + this.changeCurrent(); + }, + linkChanged () { + this.changeCurrent(); + }, + unlinked () { + this.changeCurrent(); + } + } + }, + + properties: { + current: { + type: String, + value: '', + observer: 'changeCurrent' + }, + color: { + type: String, + value: '' + }, + fixed: { + type: Boolean, + value: false + } + }, + + data: { + list: [] + }, + + methods: { + changeCurrent (val = this.data.current) { + let items = this.getRelationNodes('../tab-bar-item/index'); + const len = items.length; + + if (len > 0) { + const list = []; + items.forEach(item => { + item.changeCurrent(item.data.key === val); + item.changeCurrentColor(this.data.color); + list.push({ + key: item.data.key + }); + }); + this.setData({ + list: list + }); + } + }, + emitEvent (key) { + this.triggerEvent('change', { key }); + }, + handleClickItem (e) { + const key = e.currentTarget.dataset.key; + this.emitEvent(key); + } + } +}); diff --git a/template/dist/tab-bar/index.json b/template/dist/tab-bar/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/tab-bar/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/tab-bar/index.wxml b/template/dist/tab-bar/index.wxml new file mode 100644 index 0000000..9dbfbea --- /dev/null +++ b/template/dist/tab-bar/index.wxml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/template/dist/tab-bar/index.wxss b/template/dist/tab-bar/index.wxss new file mode 100644 index 0000000..5c6fd9c --- /dev/null +++ b/template/dist/tab-bar/index.wxss @@ -0,0 +1 @@ +.i-tab-bar{display:flex;width:100%;height:50px;box-sizing:border-box;position:relative;justify-content:space-around;align-items:center;-webkit-box-align:center;background:#fff}.i-tab-bar::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-top-width:1px}.i-tab-bar-fixed{position:fixed;bottom:0;z-index:2}.i-tab-bar-list{position:absolute;top:0;bottom:0;left:0;right:0}.i-tab-bar-layer{display:block;float:left;height:100%} \ No newline at end of file diff --git a/template/dist/tab/index.js b/template/dist/tab/index.js new file mode 100644 index 0000000..c8d3079 --- /dev/null +++ b/template/dist/tab/index.js @@ -0,0 +1,50 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../tabs/index': { + type: 'parent' + } + }, + + properties: { + key: { + type: String, + value: '' + }, + title: { + type: String, + value: '' + }, + dot: { + type: Boolean, + value: false + }, + count: { + type: Number, + value: 0 + } + }, + + data: { + current: false, + currentColor: '', + scroll: false + }, + + methods: { + changeCurrent (current) { + this.setData({ current }); + }, + changeCurrentColor (currentColor) { + this.setData({ currentColor }); + }, + changeScroll (scroll) { + this.setData({ scroll }); + }, + handleClickItem () { + const parent = this.getRelationNodes('../tabs/index')[0]; + parent.emitEvent(this.data.key); + } + } +}); diff --git a/template/dist/tab/index.json b/template/dist/tab/index.json new file mode 100644 index 0000000..eb6877d --- /dev/null +++ b/template/dist/tab/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-badge": "../badge/index" + } +} diff --git a/template/dist/tab/index.wxml b/template/dist/tab/index.wxml new file mode 100644 index 0000000..29d3955 --- /dev/null +++ b/template/dist/tab/index.wxml @@ -0,0 +1,9 @@ + + + + {{ title }} + {{ title }} + + + + \ No newline at end of file diff --git a/template/dist/tab/index.wxss b/template/dist/tab/index.wxss new file mode 100644 index 0000000..135637b --- /dev/null +++ b/template/dist/tab/index.wxss @@ -0,0 +1 @@ +.i-tabs-tab{flex:1;display:flex;width:100%;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;text-align:center;position:relative}.i-tabs-tab-bar{display:block;width:100%;height:2px;background:0 0;position:absolute;bottom:0;left:0;background:#2d8cf0}.i-tabs-tab-title{font-size:14px;text-align:center;box-sizing:border-box;color:#80848f}.i-tabs-tab-title-current{color:#2d8cf0}.i-tabs-tab-scroll{display:inline-block;width:60px} \ No newline at end of file diff --git a/template/dist/tabs/index.js b/template/dist/tabs/index.js new file mode 100644 index 0000000..b9d0326 --- /dev/null +++ b/template/dist/tabs/index.js @@ -0,0 +1,56 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../tab/index': { + type: 'child', + linked () { + this.changeCurrent(); + }, + linkChanged () { + this.changeCurrent(); + }, + unlinked () { + this.changeCurrent(); + } + } + }, + + properties: { + current: { + type: String, + value: '', + observer: 'changeCurrent' + }, + color: { + type: String, + value: '' + }, + scroll: { + type: Boolean, + value: false + }, + fixed: { + type: Boolean, + value: false + } + }, + + methods: { + changeCurrent (val = this.data.current) { + let items = this.getRelationNodes('../tab/index'); + const len = items.length; + + if (len > 0) { + items.forEach(item => { + item.changeScroll(this.data.scroll); + item.changeCurrent(item.data.key === val); + item.changeCurrentColor(this.data.color); + }); + } + }, + emitEvent (key) { + this.triggerEvent('change', { key }); + } + } +}); diff --git a/template/dist/tabs/index.json b/template/dist/tabs/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/template/dist/tabs/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/template/dist/tabs/index.wxml b/template/dist/tabs/index.wxml new file mode 100644 index 0000000..b61d51b --- /dev/null +++ b/template/dist/tabs/index.wxml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/template/dist/tabs/index.wxss b/template/dist/tabs/index.wxss new file mode 100644 index 0000000..985fb18 --- /dev/null +++ b/template/dist/tabs/index.wxss @@ -0,0 +1 @@ +.i-tabs{display:flex;width:100%;height:42px;line-height:42px;box-sizing:border-box;position:relative;justify-content:space-around;align-items:center;-webkit-box-align:center;background:#fff}.i-tabs::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-bottom-width:1px}.i-tabs-scroll{display:block;overflow-x:auto;white-space:nowrap}.i-tabs-fixed{position:fixed;top:0;z-index:2} \ No newline at end of file diff --git a/template/dist/tag/index.js b/template/dist/tag/index.js new file mode 100644 index 0000000..338440a --- /dev/null +++ b/template/dist/tag/index.js @@ -0,0 +1,42 @@ +Component({ + externalClasses: ['i-class'], + properties : { + //slot name + name : { + type : String, + value : '' + }, + //can click or not click + checkable : { + type : Boolean, + value : false + }, + //is current choose + checked : { + type : Boolean, + value : true + }, + //background and color setting + color : { + type : String, + value : 'default' + }, + //control fill or not + type : { + type : String, + value : 'dot' + } + }, + methods : { + tapTag(){ + const data = this.data; + if( data.checkable ){ + const checked = data.checked ? false : true; + this.triggerEvent('change',{ + name : data.name || '', + checked : checked + }); + } + } + } +}) \ No newline at end of file diff --git a/template/dist/tag/index.json b/template/dist/tag/index.json new file mode 100644 index 0000000..1dd6c7f --- /dev/null +++ b/template/dist/tag/index.json @@ -0,0 +1,3 @@ +{ + "component" : true +} \ No newline at end of file diff --git a/template/dist/tag/index.wxml b/template/dist/tag/index.wxml new file mode 100644 index 0000000..ed2c675 --- /dev/null +++ b/template/dist/tag/index.wxml @@ -0,0 +1,27 @@ + + + + +module.exports = { + getClass : function(color,type,checked,checkable) { + var initColorList = ['blue', 'green', 'red', 'yellow', 'default']; + var theme = ''; + var className = 'i-tag-'; + if( initColorList.indexOf( color ) > -1 ){ + theme = className + color; + } + if( type === 'border' ){ + theme = className+color+'-border'; + } + if( checkable && checked ){ + theme = className+color+'-checked'; + }else if( checkable && !checked ){ + theme = ( type === 'border' ? className + color +'-border' : className+'none' ); + } + + return theme; + } +} + \ No newline at end of file diff --git a/template/dist/tag/index.wxss b/template/dist/tag/index.wxss new file mode 100644 index 0000000..e19f976 --- /dev/null +++ b/template/dist/tag/index.wxss @@ -0,0 +1 @@ +.i-tag{display:inline-block;height:18px;line-height:18px;padding:0 4px;border-radius:2px;background:#fff;font-size:11px;vertical-align:middle;border:1rpx solid #dddee1}.i-tag-none{border-color:#fff}.i-tag-default{border-color:#dddee1;background:#e9eaec}.i-tag-red{background:#ed3f14;color:#fff}.i-tag-red-border{color:#ed3f14;background:#fff;border-color:#ed3f14}.i-tag-red-checked{background:#ed3f14;color:#fff;border-color:#ed3f14}.i-tag-green{background:#19be6b;color:#fff;border-color:#19be6b}.i-tag-green-border{color:#19be6b;background:#fff;border-color:#19be6b}.i-tag-green-checked{background:#19be6b;color:#fff;border-color:#19be6b}.i-tag-blue{background:#2d8cf0;color:#fff;border-color:#2d8cf0}.i-tag-blue-border{color:#2d8cf0;background:#fff;border-color:#2d8cf0}.i-tag-blue-checked{background:#2d8cf0;color:#fff;border-color:#2d8cf0}.i-tag-yellow{background:#f90;color:#fff;border-color:#f90}.i-tag-yellow-border{color:#f90;background:#fff;border-color:#f90}.i-tag-yellow-checked{background:#f90;color:#fff;border-color:#f90}.i-tag-default-checked{background:#e9eaec;color:#495060;border-color:#e9eaec} \ No newline at end of file diff --git a/template/dist/toast/index.js b/template/dist/toast/index.js new file mode 100644 index 0000000..6493111 --- /dev/null +++ b/template/dist/toast/index.js @@ -0,0 +1,48 @@ +const default_data = { + visible: false, + content: '', + icon: '', + image: '', + duration: 2, + mask: true, + type: 'default', // default || success || warning || error || loading +}; + +let timmer = null; + +Component({ + externalClasses: ['i-class'], + + data: { + ...default_data + }, + + methods: { + handleShow (options) { + const { type = 'default', duration = 2 } = options; + + this.setData({ + ...options, + type, + duration, + visible: true + }); + + const d = this.data.duration * 1000; + + if (timmer) clearTimeout(timmer); + if (d !== 0) { + timmer = setTimeout(() => { + this.handleHide(); + timmer = null; + }, d); + } + }, + + handleHide () { + this.setData({ + ...default_data + }); + } + } +}); diff --git a/template/dist/toast/index.json b/template/dist/toast/index.json new file mode 100644 index 0000000..31309b1 --- /dev/null +++ b/template/dist/toast/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-icon": "../icon/index" + } +} diff --git a/template/dist/toast/index.wxml b/template/dist/toast/index.wxml new file mode 100644 index 0000000..ca5f732 --- /dev/null +++ b/template/dist/toast/index.wxml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + {{ content }} + \ No newline at end of file diff --git a/template/dist/toast/index.wxss b/template/dist/toast/index.wxss new file mode 100644 index 0000000..5b3bd7f --- /dev/null +++ b/template/dist/toast/index.wxss @@ -0,0 +1 @@ +.i-toast{position:fixed;top:35%;left:50%;transform:translate3d(-50%,-50%,0);background:rgba(0,0,0,.7);color:#fff;font-size:14px;line-height:1.5em;margin:0 auto;box-sizing:border-box;padding:10px 18px;text-align:center;border-radius:4px;z-index:1010}.i-toast-mask{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1010}.i-toast-icon{font-size:38px!important;margin-bottom:6px}.i-toast-image{max-width:100px;max-height:100px}.i-toast-loading{display:inline-block;vertical-align:middle;width:28px;height:28px;background:0 0;border-radius:50%;border:2px solid #fff;border-color:#fff #fff #fff #2d8cf0;animation:btn-spin .8s linear;animation-iteration-count:infinite}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/utils/ajax.js b/utils/ajax.js index 643f185..be7e67e 100644 --- a/utils/ajax.js +++ b/utils/ajax.js @@ -4,15 +4,7 @@ const API = require('../utils/api.js') * 封装HTTPget请求, * url:请求路径 */ -function getRequest(url, loadding = true) { - // 是否开启loadding,默认开启 - if (loadding) { - wx.showLoading({ - title: '加载中', - // 是否显示透明蒙层,防止触摸穿透 - mask: true - }) - } +function getRequest(url) { return new Promise(function(resolve, reject) { wx.request({ url: url, @@ -25,15 +17,11 @@ function getRequest(url, loadding = true) { if (response.data.code === 200) { resolve(response.data) } else { - Toast.showToastSuccess(response.msg) + console.log(response.msg) } - // 取消loadding - wx.hideLoading(); }, fail: function(err) { - Toast.showToastSuccess(err.msg) - // 取消loadding - wx.hideLoading(); + console.log(err.msg) } }) }) @@ -45,15 +33,7 @@ function getRequest(url, loadding = true) { * url:请求路径 * param:请求数据 */ -function postRequest(url, param, loadding = true) { - if (loadding) { - // 加载loadding - wx.showLoading({ - title: '加载中', - // 是否显示透明蒙层,防止触摸穿透 - mask: true - }) - } +function postRequest(url, param) { return new Promise(function(resolve, reject) { wx.request({ url: url, @@ -67,15 +47,11 @@ function postRequest(url, param, loadding = true) { if (response.data.code === 200) { resolve(response.data) } else { - Toast.showToastSuccess(response.msg) + console.log(response.msg) } - //取消loadding - wx.hideLoading(); }, fail: function(err) { - Toast.showToastSuccess(response.msg) - //取消loadding - wx.hideLoading(); + console.log(response.msg) } }) @@ -88,14 +64,6 @@ function postRequest(url, param, loadding = true) { * param:请求数据 */ function putRequest(url, param, loadding = true) { - if (loadding) { - // 加载loadding - wx.showLoading({ - title: '加载中', - // 是否显示透明蒙层,防止触摸穿透 - mask: true - }) - } return new Promise(function(resolve, reject) { wx.request({ url: url, @@ -107,13 +75,9 @@ function putRequest(url, param, loadding = true) { }, success: function(response) { resolve() - //取消loadding - wx.hideLoading(); }, fail: function(err) { - Toast.showToastSuccess(response.msg) - //取消loadding - wx.hideLoading(); + console.log(response.msg) } }) @@ -125,15 +89,7 @@ function putRequest(url, param, loadding = true) { * url:请求路径 * param:请求数据 */ -function delRequest(url, param, loadding = true) { - if (loadding) { - // 加载loadding - wx.showLoading({ - title: '加载中', - // 是否显示透明蒙层,防止触摸穿透 - mask: true - }) - } +function delRequest(url, param) { return new Promise(function(resolve, reject) { wx.request({ url: url, @@ -147,15 +103,11 @@ function delRequest(url, param, loadding = true) { if (response.data.code === 200) { resolve(response.data) } else { - Toast.showToastSuccess(response.msg) + console.log(response.msg) } - //取消loadding - wx.hideLoading(); }, fail: function(err) { - Toast.showToastSuccess(response.msg) - //取消loadding - wx.hideLoading(); + console.log(response.msg) } }) diff --git a/utils/api.js b/utils/api.js index b33363b..32d77b0 100644 --- a/utils/api.js +++ b/utils/api.js @@ -4,8 +4,8 @@ let api = { // TODO:配置接口文档信息 -api.baseUrl = 'http://192.168.1.103:12000'; -// api.baseUrl = 'https://be.yangyoki.top:12000'; +// api.baseUrl = 'http://192.168.1.103:12000'; +api.baseUrl = 'https://be.yangyoki.top:12000'; api.imageHostDowm = 'https://be.yangyoki.top:12000'; api.imageHost = 'https://be.yangyoki.top:12000/'; -- Gitee From 6383164ae80353d300fdd9f940ad670bb4262a27 Mon Sep 17 00:00:00 2001 From: "yangyouqi@torinosrc.com" Date: Tue, 7 Jan 2020 16:29:32 +0800 Subject: [PATCH 14/14] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/consume/consume.js | 22 ++++++---- pages/consume/consume.wxml | 44 ++++--------------- .../bookkeepingdetail/bookkeepingdetail.js | 16 ++++--- utils/toast.js | 2 +- 4 files changed, 35 insertions(+), 49 deletions(-) diff --git a/pages/consume/consume.js b/pages/consume/consume.js index 0c61d8e..7652eb4 100644 --- a/pages/consume/consume.js +++ b/pages/consume/consume.js @@ -102,14 +102,20 @@ Page({ let that = this wx.chooseImage({ count: 2, + sizeType: ['original','compressed'], success: function (res) { - const tempFilePaths = res.tempFilePaths; + const tempFiles = res.tempFiles; let requestUrl = API.api.uploadFile + '/bookkeeping/bookkeeping' var imagePathList = [] - for (var i = 0; i < tempFilePaths.length; i++) { + for (var i = 0; i < tempFiles.length; i++) { + console.log(res) + if (tempFiles[i].size > 1048576) { + TOAST.showToastSuccess('图片大于1M') + continue; + } wx.uploadFile({ url: requestUrl, - filePath: tempFilePaths[i], + filePath: tempFiles[i].path, name: 'file', header: { "Authorization": wx.getStorageSync('token') @@ -121,12 +127,8 @@ Page({ if (that.data.imagePathList.length < 2) { that.data.imagePathList.push(resData.data) } else{ - that.data.imagePathList[1] = resData.data + that.data.imagePathList[0] = resData.data } - // console.log(`imagePahtList:` + imagePathList) - // that.setData({ - // imagePathList: imagePathList - // }) } } }) @@ -206,6 +208,7 @@ Page({ money: 0, addorDel: '+', isShow: false, + imagePathList: [] }) // 获取消费类型数据,默认值为0 this.getConsumeType(0); @@ -370,6 +373,9 @@ Page({ } if (money == 0) { TOAST.showToastSuccess('金额不能为0') + this.setData({ + loading: false + }) return } // 进行金额转换 diff --git a/pages/consume/consume.wxml b/pages/consume/consume.wxml index d28bb42..3e89a06 100644 --- a/pages/consume/consume.wxml +++ b/pages/consume/consume.wxml @@ -18,41 +18,16 @@
- - - - - {{item.name}} - - + + + + + {{item.name}} + + + + - @@ -76,5 +51,4 @@ - \ No newline at end of file diff --git a/pages/index/bookkeepingdetail/bookkeepingdetail.js b/pages/index/bookkeepingdetail/bookkeepingdetail.js index 301f93e..1d7739b 100644 --- a/pages/index/bookkeepingdetail/bookkeepingdetail.js +++ b/pages/index/bookkeepingdetail/bookkeepingdetail.js @@ -1,5 +1,6 @@ const API = require('../../../utils/api.js'); const FormatUtil = require('../../../utils/util.js'); +const TOAST = require('../../../utils/toast.js'); const AJAX = require('../../../utils/ajax.js') // 引入腾讯地图 const qqMapWxUtil = require('../../../utils/qqMapWxUtil.js') @@ -124,17 +125,22 @@ Page({ let imagePath = ""; wx.chooseImage({ count: 2, + sizeType: ['original', 'compressed'], success: function(res) { - console.log(`获取到list`,res.tempFilePaths) - const tempFilePaths = res.tempFilePaths; + console.log(`获取到list`, res.tempFiles) + const tempFiles = res.tempFiles; that.setData({ - tempFilePaths:tempFilePaths[0] + tempFilePaths: tempFiles[0].path }) let requestUrl = API.api.uploadFile + '/bookkeeping/bookkeeping' - for(var i=0;i 1048576) { + TOAST.showToastSuccess('图片大于1M') + continue; + } wx.uploadFile({ url: requestUrl, - filePath: tempFilePaths[i], + filePath: tempFiles[i].path, name: 'file', header: { "Authorization": wx.getStorageSync('token') diff --git a/utils/toast.js b/utils/toast.js index 44809b1..115ae31 100644 --- a/utils/toast.js +++ b/utils/toast.js @@ -2,7 +2,7 @@ function showToastSuccess(title) { wx.showToast({ title: title, image: '/image/icon/zhaodaifeiyusuan.png', - duration: 800, + duration: 1000, mask:true }) }; -- Gitee

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%0DpB~Xt15T^#t;?Y&+mZf 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 z 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 diff --git a/pages/consume/consume.js b/pages/consume/consume.js index d618854..8bd701d 100644 --- a/pages/consume/consume.js +++ b/pages/consume/consume.js @@ -30,7 +30,14 @@ Page({ // 省 市 区 region: [], // 上传保存的图片 - imagePathList:[] + imagePathList:[], + //导航栏显示颜色 + showType:true, + // 计算器集合 + calculatorList:[ + [{ "value": "7" }, { "value": "8" }, { "value": "9" }, { "value": "DEL" }], + [{ "value": "4" }, { "value": "5" }, { "value": "6" }, { "value": "+" }], + [{ "value": "1" }, { "value": "2" }, { "value": "3" }, { "value": "-" }]] }, /** @@ -107,11 +114,20 @@ Page({ } }) }, + /** + * 跳转定位 + */ + gotoAddress() { + console.log(`跳转定位功能`) + }, /** * 支出收入类型转换 */ tabTap: function (event) { - console.log(event.currentTarget.dataset.type) + let showType = event.currentTarget.dataset.type == 1 ? false : true + this.setData({ + showType:showType + }) this.getConsumeType(event.currentTarget.dataset.type) }, getConsumeType: function (type) { @@ -203,10 +219,30 @@ Page({ /** * 添加数据 */ - addType: function (event) { + calculationType(event) { switch (event.currentTarget.dataset.type) { - // 添加成功 - case 'success': this.success(); break; + case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + //常规数字 + this.addMunber(event) + break; + case '.': + // 添加小数点 + this.addSpot() + break; + case 'DEL': + // 删除 + this.deleteNumber(event) + break; + case '+': case '-': + // 加减法 + this.addOrDelete(event) + break; + // 归零 + case 'reset': + this.reset(); + break; + default: + console.log(`键盘` + event.currentTarget.dataset.type + `匹配不到对于的类型`) } }, addMunber: function (event) { @@ -314,7 +350,7 @@ Page({ requestObj.bigImage2 = this.data.imagePathList[1] ? this.data.imagePathList[1] : null; } console.log('保存的数据来着',requestObj) - let requestUrl = API.api.bookkeepingDetails; + let requestUrl = API.api.bookkeepings; AJAX.postRequest(requestUrl, requestObj).then(response => { wx.switchTab({ url: '/pages/index/index' diff --git a/pages/consume/consume.wxml b/pages/consume/consume.wxml index df7ec94..012861f 100644 --- a/pages/consume/consume.wxml +++ b/pages/consume/consume.wxml @@ -1,8 +1,8 @@ - 支出 - 收入 + 支出 + 收入 @@ -25,31 +25,25 @@ {{item.name}} - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + +