commit 6829117d501ac8671a5d6edb039124f350fa0a19 Author: liaoxinyu Date: Mon Feb 5 18:21:59 2024 +0800 '初始化' diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5ca0df3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,45 @@ +# ---> Vue +# gitignore template for Vue.js projects +# +# Recommended template: Node.gitignore + +# TODO: where does this rule come from? +docs/_book + +# TODO: where does this rule come from? +test/ + +# ---> macOS +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk +package-lock.json + +node_modules/ +unpackage + +.idea/ +.hbuilderx/ \ No newline at end of file diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..0150f73 --- /dev/null +++ b/App.vue @@ -0,0 +1,159 @@ + + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..2b64487 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +初始化 \ No newline at end of file diff --git a/api/Socket.js b/api/Socket.js new file mode 100644 index 0000000..0ddd750 --- /dev/null +++ b/api/Socket.js @@ -0,0 +1,177 @@ +class Socket { + constructor(link) { + // 初始化socket + if (link.constructor === WebSocket) { + this.socket = link; + } else { + this.socket = new WebSocket(link); + } + + // this.socket.binaryType = 'arraybuffer'; + + this.doOpen(); + + // 连接状态的标识符 + this.readyState = this.socket.readyState; + + // 订阅/发布模型 + this._events = { + // 订阅的事件 : 发布的方法 + + }; + + // 定时验证的标识符 + this.heartBeatTimer = null; + + } + + // 执行socket并发布事件 + doOpen() { + + this.afterOpenEmit = []; + + // 执行socket连接 并初始化验证请求 + this.socket.addEventListener("open", evt => this.onOpen(evt)); + + // 接收socket数据 + this.socket.addEventListener("message", evt => this.onMessage(evt)); + + // 关闭socket连接 + this.socket.addEventListener("close", evt => this.onClose(evt)); + + // 请求发生错误 + this.socket.addEventListener("error", err => this.onError(err)); + + } + + // 发布后通知订阅者 + Notify(entry) { + // 检查是否有订阅者 返回队列 + const cbQueue = this._events[entry.Event]; + if (cbQueue && cbQueue.length) { + for (let callback of cbQueue) { + if (callback instanceof Function) callback(entry.Data); + } + } + } + + // 请求数据的方法 + onOpen(evt) { + + // 每隔20s检查连接 + // this.heartBeatTimer = setInterval(() => this.send({ + // 'cmd': 'ping', + // 'args': '' + // }), 20000); + + // 通知订阅 + this.Notify({Event: 'open', Data : evt}); + } + + /** + * 订阅所有的数据 + * @param {array|object} datas 订阅参数集合 + */ + send(datas) { + if (datas.constructor != Array) { + datas = [datas]; + } + + for (let item of datas) { + this.socket.send(JSON.stringify(item)); + } + } + + + onMessage(evt) { + + try { + + // 解析推送的数据 + const data = JSON.parse(evt.data); + + // 通知订阅者 + this.Notify({ + Event: 'message', + Data: data + }); + + } catch (err) { + console.error(' >> Data parsing error:', err); + + // 通知订阅者 + this.Notify({ + Event: 'error', + Data: err + }); + } + } + + // 添加事件监听 + on(name, handler) { + this.subscribe(name, handler); + } + + // 取消订阅事件 + off(name, handler) { + this.unsubscribe(name, handler); + } + + // 订阅事件的方法 + subscribe(name, handler) { + if (this._events[name]) { + this._events[name].push(handler); // 追加事件 + } else { + this._events[name] = [handler]; // 添加事件 + } + } + + // 取消订阅事件 + unsubscribe(name, handler) { + + let start = this._events[name].findIndex(item => item === handler); + + // 删除该事件 + this._events[name].splice(start, 1); + + } + + checkOpen() { + return this.readyState >= 2; + } + + onClose(evt) { + this.Notify({Event: 'close', Data : evt}); + } + + + onError(err) { + this.Notify({Event: 'error', Data : err}); + } + + emit(data) { + return new Promise((resolve) => { + this.send(JSON.stringify(data)); + this.on('message', function (data) { + resolve(data); + }); + }); + } + + doClose() { + this.socket.close(); + } + + destroy() { + if (this.heartBeatTimer) { + clearInterval(this.heartBeatTimer); + this.heartBeatTimer = null; + } + this.doClose(); + this._events = {}; + this.readyState = 0; + this.socket = null; + } +} + +export default Socket diff --git a/api/assets.js b/api/assets.js new file mode 100644 index 0000000..eb8e49f --- /dev/null +++ b/api/assets.js @@ -0,0 +1,251 @@ +import {$get,$post,$postFile} from '@/api' + + +class Assets { + /** + * 数字货币提现 + * @param {Object} data + */ + static cryptocurrenciesWithdrawal(data) { + + return $post(`/withdraw/cryptocurrenciesWithdrawal`, data); + + } + + + + /** + * assets页面 + * @param {Object} data + */ + static assets(data) { + + return $post(`/userCoin/assets`, data); + + } + + + /** + * assets页面 + * @param {Object} data + */ + static getAllList(data) { + + return $get(`coin/getAllList`, data); + + } + + /** + * 币币用户历史委托 + * @param {Object} data + */ + static history(data) { + + return $post(`/coin/orders/history`, data); + + } + + /** + * 资金划转记录 + * @param {Object} data + */ + static fundsTransferRecordPageList(data) { + + return $post(`/fundsTransferRecord/pageList`, data); + + } + + /** + * 资金划转 + * @param {Object} data + */ + static transfer(data) { + + return $post(`/userCoin/transfer`, data); + + } + + /** + * 数字货币充值 + * @param {int} params + */ + static cryptocurrenciesRecharge(coinId) { + + return $get(`/recharge/cryptocurrenciesRecharge/${coinId}`); + + } + + /** + * 数字货币充值记录 + * @param {Object} data + */ + static cryptocurrenciesRechargeRecords(data) { + + return $post(`/recharge/cryptocurrenciesRechargeRecords`, data); + + } + + + /** + * 用户数字货币提现记录 + * @param {Object} data + */ + static cryptocurrenciesWithdrawRecords(data) { + + return $post(`/withdraw/cryptocurrenciesWithdrawRecords`, data); + + } + + /** + * 删除提现地址 + * @param {Object} data + */ + static deleteById(data) { + + return $post(`/withdrawAddress/deleteById`, data); + + } + + /** + * 编辑提现地址 + * @param {Object} data + */ + static editById(data) { + + return $post(`/withdrawAddress/editById`, data); + + } + + /** + * 移除添加地址 + * @param {Object} data + */ + static addRemove(data) { + + return $post(`/withdrawAddress/addOrRemoveWhiteList`, data); + + } + + + /** + * 提现地址分页列表 + * @param {Object} data + */ + static pageList(data) { + + return $post(`/withdrawAddress/pageList`, data); + + } + + + /** + * 添加提现地址 + * @param {Object} data + */ + static save(data) { + + return $post(`/withdrawAddress/save`, data); + + } + + + /** + * 费率列表(手续费) + * @param {Object} data + */ + static getList(data) { + + return $get(`/transferFee/getList`, data); + + } + + /** + * 用户合约资金 + * @param {Object} data + */ + static contractsAccount(data) { + + return $get(`/futuresUserCoin/contractsAccount`, data); + + } + /** + * 用户合约资金(详情) + * @param {number} accountId + */ + static contractsAccountDetail(accountId) { + + return $get(`/futuresUserCoin/contractsAccountDetail/${accountId}`); + + } + + /** + * 用户资金历史记录 + * @param {Object} data + */ + static transactionHistory(data) { + + return $post(`/futuresUserCoin/transactionHistory`, data); + + } + /** + * 确认是否白名单地址 + * @param {Object} data + */ + static checkIsWhiteList(data) { + + return $post(`/withdrawAddress/checkIsWhiteList`, data); + + } + + /** + * 用户已实现盈亏列表 + * @param {Object} data + */ + static realisedPnlLog(data) { + + return $post(`/realisedPnlLog/list`, data); + + } + + /** + * 定期宝列表 + * @param {Object} data + */ + static financeList(data) { + + return $post(`/finance/list`, data); + + } + /** + * 理财订单列表 + * @param {Object} data + */ + static financeOrderList(data) { + + return $post(`/finance/order/list`, data); + + } + /** + * 定期宝列表 + * @param {Object} data + */ + static financeApply(data) { + + return $post(`/finance/apply`, data); + + } + /** + * 定期理财账户资产 + * @param {Object} data + */ + static financeAccount(data) { + + return $post(`/finance/account`, data); + + } + + + +} + +export default Assets; \ No newline at end of file diff --git a/api/cache.js b/api/cache.js new file mode 100644 index 0000000..3d8f813 --- /dev/null +++ b/api/cache.js @@ -0,0 +1,104 @@ +/** + * @description 返回数据时提示的消息 + * @param {String} msg 返回的消息 + * @param {Object} data 返回的数据 + * @returns { { msg,data } } + */ +function msg(msg = '请传递消息', data = null) { + return { msg, data }; +} +let map = new Map(), + storage = uni.getStorageInfoSync(); //所有数据缓存 +/** + * @description 缓存类 + * @class 缓存类class + */ +class Cache { + /** + * @constructor + * @param {Number} [timeout=86400] 缓存时间默认86400秒等于一天,传0为永久存储 + */ + constructor(timeout = 86400) { + // 把本地缓存数据存入map中 + storage.keys.forEach((key) => map.set(key, uni.getStorageSync(key))); + this.map = map; //map数据 + this.timeout = timeout; + } + /** + * @description 设置缓存数据 + * @param {String} key 存储的key + * @param {Object} data 存储的data数据 + * @param {String} [timeout] 缓存时间,传0为永久存储 + * @returns { {msg,data} } + */ + set(key, data, timeout = this.timeout) { + //data = 数据value值,超时时间,加入缓存时间 + Object.assign(data, { createTime: Date.now(), timeout }); + uni.setStorageSync(key, data); //保存到本地缓存 + this.map.set(key, data); //保存到map + return msg('保存成功', data); + } + /** + * @description 获取缓存数据 + * @param {String} key 存储的key + * @returns { {msg,data | data:null} } + */ + get(key) { + let value = this.map.get(key); //取值 + if (!value) return msg('没有key值'); //如果没有值,那就就返回空 + // 数据,超时时间,加入缓存时间 现在时间 时间差(秒) + let { timeout, createTime, ...data } = value, + presentTime = Date.now(), + tdoa = (presentTime - createTime) / 1000; + // 超出缓存时间,那么就清除缓存返回空 + if (timeout != 0 && tdoa > timeout) { + uni.removeStorageSync(key); + this.map.delete(key); //删除map中对应的key值 + return msg('数据过期'); + } else { + return msg('ok', data); + } + } + /** + * @description 清除某个缓存数据 + * @param {String} key 存储的key + * @returns { {msg,data:null} } + */ + remove(key) { + uni.removeStorageSync(key); //删除缓存的数据 + this.map.delete(key); //删除map中对应的key值 + return msg('删除成功'); + } + /** + * @description 清除整个缓存数据 + * @returns { {msg,data:null} } + */ + clear() { + uni.clearStorageSync(); //清空缓存的数据 + this.map.clear(); //清空map + return msg('清空成功'); + } + /** + * @description 获取缓存数据大小 + * @param { function } cb - 缓存大小 + */ + getSize(cb) { + plus.cache.calculate((size) => { + let sizeCache = parseInt(size); + let cacheSize; + if (sizeCache == 0) { + cacheSize = '0B'; + } else if (sizeCache < 1024) { + cacheSize = sizeCache + 'B'; + } else if (sizeCache < 1048576) { + cacheSize = (sizeCache / 1024).toFixed(2) + 'KB'; + } else if (sizeCache < 1073741824) { + cacheSize = (sizeCache / 1048576).toFixed(2) + 'MB'; + } else { + cacheSize = (sizeCache / 1073741824).toFixed(2) + 'GB'; + } + cb(cacheSize); + }); + } +} +export default new Cache(); \ No newline at end of file diff --git a/api/college.js b/api/college.js new file mode 100644 index 0000000..bd90fb4 --- /dev/null +++ b/api/college.js @@ -0,0 +1,25 @@ +import Serve from '@/api/serve' + +class College { + static college(data) { + return Serve.get(`/college`,data); + } + + static getArticleList(data) { + return Serve.get(`/articleList`,data); + } + + static getCategoryList() { + return Serve.get(`/categoryList`); + } + + static getArticleDetail(data) { + return Serve.get(`/article/detail`,data); + } + + static getRecommend() { + return Serve.get(`/recommend`); + } +} + +export default College; \ No newline at end of file diff --git a/api/contract.js b/api/contract.js new file mode 100644 index 0000000..b415cf8 --- /dev/null +++ b/api/contract.js @@ -0,0 +1,110 @@ +import Serve from '@/api/serve' + +class Contract { + /** + * 合约初始化面板数据 + * @param {Object} data + */ + static getMarketInfo(data) { + return Serve.get(`/contract/getMarketInfo`, data); + } + + /** + * 获取合约市场 + */ + static getMarketList(data) { + return Serve.get('/contract/getMarketList', data) + } + + /** + * 获取合约账户信息 + */ + static contractAccount(data, config) { + return Serve.get('/contract/contractAccount', data, config) + } + + /** + * 获取合约详情 + */ + static getSymbolDetail(data) { + return Serve.get('/contract/getSymbolDetail', data) + } + /** + * 可开张数(合约上限) + * */ + static openNum(data,config) { + return Serve.get('/contract/openNum', data,config) + } + /** + * 合约开仓 + */ + static openPosition(data, config) { + return Serve.post('/contract/openPosition', data, config) + } + + // 获取合约持仓 + static holdPosition(data, config) { + return Serve.get('/contract/holdPosition', data, config) + } + // 合约平仓 + static closePosition(data, config) { + return Serve.post('/contract/closePosition', data, config) + } + // 一键全平 + static closeAllPosition(data, config) { + return Serve.post('/contract/closeAllPosition', data, config) + } + // 获取当前合约委托 + static getCurrentEntrust(data, config) { + return Serve.get('/contract/getCurrentEntrust', data, config) + } + // 撤单 + static cancelEntrust(data, config) { + return Serve.post('/contract/cancelEntrust', data, config) + } + // 历史委托 + static getHistoryEntrust(data, config) { + return Serve.get('/contract/getHistoryEntrust', data, config) + } + // 获取k线数据 + static getKline(data, config) { + return Serve.get('/contract/getKline', data, config) + } + // 获取委托明细 + static getEntrustDealList(data, config) { + return Serve.get('/contract/getEntrustDealList', data, config) + } + // 获取开通状态 + static openStatus() { + return Serve.get('/contract/openStatus') + } + // 开通永续合约 + static opening() { + return Serve.post('/contract/opening') + } + static setStrategy(data, config) { + return Serve.post('/contract/setStrategy', data, config) + } + // 委托盈亏分享 + static entrustShare(data) { + return Serve.get('/contract/entrustShare', data, { loading: true }) + } + // 持仓盈亏分享 + static positionShare(data) { + return Serve.get('/contract/positionShare', data, { loading: true }) + } + // 一键全平 + static onekeyAllFlat(data) { + return Serve.post('/contract/onekeyAllFlat', data, { loading: true }) + } + // 一键反向 + static onekeyReverse(data) { + return Serve.post('/contract/onekeyReverse', data, { loading: true }) + } + // 合约说明 + static instruction() { + return Serve.get('/contract/instruction') + } +} + +export default Contract; \ No newline at end of file diff --git a/api/currency.js b/api/currency.js new file mode 100644 index 0000000..8418f68 --- /dev/null +++ b/api/currency.js @@ -0,0 +1,42 @@ +import Serve from '@/api/serve' + +class Currency { + // 获取平台收款方式列表 + static legalPayList() { + return Serve.post(`/collection/legalPayList`); + } + //用户收款地址列表 + static paymentsList() { + return Serve.post(`/user/paymentsList`); + } + //法币交易创建订单 + static legalCurrency(data) { + return Serve.post(`/user/legalCurrency`,data); + } + //法币交易订单列表 + static legalList(data) { + return Serve.post(`/user/legalList`,data); + } + //法币交易订单详情 + static legalInfo(data) { + return Serve.post(`/user/legalInfo`,data); + } + //用户收款地址编辑 + static paymentsSubmit(data) { + return Serve.post(`/user/paymentsSubmit`,data); + } + //订单确认支付/收款/取消 + static legalPay(data) { + return Serve.post(`/user/legalPay`,data); + } + //用户收款方式详情 + static paymentsInfo(data) { + return Serve.post(`/user/paymentsInfo`,data); + } + //用户收款方式开启关闭 + static paymentsStatus(data) { + return Serve.post(`/user/paymentsStatus`,data); + } +} + +export default Currency; \ No newline at end of file diff --git a/api/exchange.js b/api/exchange.js new file mode 100644 index 0000000..9f451b4 --- /dev/null +++ b/api/exchange.js @@ -0,0 +1,41 @@ +import Serve from '@/api/serve' + +class Exchange { + + // 获取账户余额 + static getUserBalance(data) { + return Serve.get(`/exchange/getUserCoinBalance`,data); + } + + /** + * 提交订单 + * @param {object} data + * @param {string} data.direction buy sell + * @param {string} data.type 1限价2市价 + * @param {string} data.symbol 交易对 + * @param {number} data.entrust_price 限价单价 + * @param {number} data.amount 限价数量 + * @param {number} data.trigger_price 条件单单价 + * @param {number} data.total 市价单总价 + * + */ + static storeEntrust(data,config) { + return Serve.post(`/exchange/storeEntrust`, data,config); + } + + // 获取币种基本信息 + static getSymbolInfo(data) { + return Serve.post(`/user/tradingPairCurrency`, data); + } + + // 查询最新资讯 + static newTrends() { + return Serve.get(`/newTrends`); + } + // 获取汇率 + static getCurrencyExCny(data){ + return Serve.get('/market/getCurrencyExCny',data) + } +} + +export default Exchange; \ No newline at end of file diff --git a/api/home.js b/api/home.js new file mode 100644 index 0000000..7fdb8f6 --- /dev/null +++ b/api/home.js @@ -0,0 +1,25 @@ + +import Serve from '@/api/serve/index' + +class Home { + // 获取大部分数据 + static indexList(data,config){ + return Serve.get('/indexList',data,config) + } + // 获取自选数据 + static getCollect(){ + return Serve.get('/getCollect') + } + + /** + * 添加自选 + * @param {object} data + * @param {string} data.pair_id + * @param {string} data.pair_name + */ + static option(data){ + return Serve.post('/option',data) + } +} + +export default Home; \ No newline at end of file diff --git a/api/market.js b/api/market.js new file mode 100644 index 0000000..b38877a --- /dev/null +++ b/api/market.js @@ -0,0 +1,56 @@ +import Serve from '@/api/serve' + +class Market { + + /** + * 轮播图列表 + * @param {Object} data + * @param {int} type 请求类型 1是pc(默认) 2是app + * @param {int} position 位置 1(币币首页) 2(预留扩展) + */ + static cryptocurrenciesWithdrawal(type, position) { + + return Serve.post(`/market/banner/${type}/${position}`); + + } + + /** + * 用户收藏交易对信息 需要先登录 + */ + static userFavList() { + + return Serve.get(`/coin/market/collection/list`); + + } + + + static blogCategoryList() { + return Serve.get(`/blogCategory/list`); + } + + static blogDetailList(categoryId, params) { + return Serve.get(`/blog/list/${categoryId}`, params ); + } + + static blogDetailContent(id) { + return Serve.get(`/blog/detail/${id}`); + } + + // 初始化查询市场行情 + static getMarketList() { + return Serve.get(`/exchange/getMarketList`); + } + + // 初始化买卖盘数据 + static getBooks(data) { + return Serve.get(`/exchange/getMarketInfo`,data); + } + + // 获取币种信息 + static getCoinInfo(data){ + return Serve.get(`/exchange/getCoinInfo`,data) + } + +} + +export default Market; \ No newline at end of file diff --git a/api/member.js b/api/member.js new file mode 100644 index 0000000..b9f6138 --- /dev/null +++ b/api/member.js @@ -0,0 +1,143 @@ +import server from '@/api/serve' + +class Member { + + /** + * 注册滑块验证码 + * @param {object} data + */ + static sliderVerify(data) { + return server.post(`/sliderVerify`, data); + } + + /** + * 注册发送手机验证码 + * @param data {phone,country_code,token} + */ + static sendSmsCode(data) { + return server.post(`/register/sendSmsCode`, data); + } + + /** + * 注册发送验证码 + * @param data {email,token} + */ + static sendEmailCode(data) { + return server.post(`/register/sendEmailCode`, data); + } + + /** + * 获取国家区号 + * @param {object} data + */ + static getCountryCode() { + return server.get(`/getCountryList`); + } + + /** + * 注册提交 + * @param {object} data + */ + static register(data) { + return server.post(`/user/register`, data); + } + + /** + * 登陆发送短信验证码 + * @param {object} data + */ + static sendSmsCodeBeforeLogin(data) { + return server.post(`/login/sendSmsCodeBeforeLogin`, data) + } + + /** + * 登陆发送邮箱验证码 + * @param {object} data + */ + static sendEmailCodeBeforeLogin(data) { + return server.post(`/login/sendEmailCodeBeforeLogin`, data); + } + + /** + * 登陆初始化验证 + * @param {object} data + */ + static login(data) { + return server.post(`/user/login`, data); + } + + /** + * 登陆二次验证 + * @param {object} data + */ + static loginConfirm(data,{loading}) { + return server.post(`/user/loginConfirm`, data,{loading}) + } + + /** + * 退出登录 + */ + static logout(data) { + return server.post(`/user/logout`,data); + } + /** + * 上传文件 + * @param {FormData} data + */ + static uploadImage(data) { + + return server.uploadFile(`/uploadImage`,data); + } + + // 页面底部信息 + static floor(){ + return server.get('/floor') + } + // 移动端logo + static mobileLogo(){ + return server.get('/index/logo',{},{loading:false}) + } + // 消息通知 + static myNotifiables(data){ + return server.get('/user/myNotifiables',data) + } + // 消息通知详情 + static readNotifiable(data){ + return server.get('/user/readNotifiable',data) + } + // 移动端文章 + static article(data){ + return server.get('/article/list',data) + } + // 文章详情 + static articleDetail(data){ + return server.get('/article/detail',data) + } + // 获取协议 + static clause(){ + return server.get('/login/clause') + } + // 获取app更新信息 + static getNewestVersion(){ + return server.get('/getNewestVersion') + } + static serviceDetail(data) { + return server.get(`/article/serviceDetail`, data); + } + static contact () { + return server.get(`/contact`); + } + /** + * 获取图形验证码 + * @param data {email,token} + */ + static Graph_che() { + return server.get(`/register/Graph_che`); + } + // 提币获取邮箱验证码 + static getWdcode(data){ + return server.get(`/user/wdcode`, data); + } +} + +export default Member; diff --git a/api/option.js b/api/option.js new file mode 100644 index 0000000..ddd9587 --- /dev/null +++ b/api/option.js @@ -0,0 +1,119 @@ + +import Serve from '@/api/serve' + +class Option { + // 交易对 + static getOptionSymbol() { + return Serve.get(`/option/getOptionSymbol`); + } + /** + * 获取期权交割记录 + * @param {object} data + * @param {string} data.pair_id + * @param {string} data.time_id + */ + static getSceneResultList(data) { + return Serve.get(`/option/getSceneResultList`, data) + } + /** + * 获取k线数据 + * @param {object} data + * @param {string} data.symbol + * @param {string} data.period + * @param {string} data.size + * @param {string} data.form + * @param {string} data.to + */ + static getKline(data) { + // let url = `https://api.hadax.com/market/history/kline`; + let url = `/option/getKline`; + return Serve.get(url, data) + } + /** + * 获取可用于期权交易的币种列表 + */ + static getBetCoinList() { + return Serve.get(`/option/getBetCoinList`) + } + /** + * 获取指定币种的余额 + * @param {object} data + * @param {string} data.coin_id + */ + static getUserCoinBalance(data) { + return Serve.get(`/option/getUserCoinBalance`, data) + } + /** + * 获取当前最新期权场景 + * @param {object} data + * @param {string} data.pair_id + * @param {string} data.time_id + */ + static sceneDetail(data) { + return Serve.get(`/option/sceneDetail`, data) + } + /** + * 获取全部期权场景 + */ + static sceneListByPairs() { + return Serve.get(`/option/sceneListByPairs`) + } + /** + * 获取当前最新期权场景赔率 + * @param {object} data + * @param {string} data.pair_id + * @param {string} data.time_id + */ + static getOddsList(data) { + return Serve.get(`/option/getOddsList`, data) + } + /** + * 获取用户期权购买记录 + * @param {object} data + * @param {string} data.status + * @param {string} data.pair_id + * @param {string} data.time_id + */ + static getOptionHistoryOrders(data) { + return Serve.get(`/option/getOptionHistoryOrders`, data) + } + /** + * 购买期权 + * @param {object} data + * @param {string} data.bet_amount + * @param {string} data.bet_coin_id + * @param {string} data.odds_id + * */ + static betScene(data) { + return Serve.post(`/option/betScene`, data) + } + /** + * 获取交易价格组 + * @param {object} data + * @param {string} data.symbol + * + */ + static getNewPriceBook(data) { + return Serve.get('/option/getNewPriceBook', data) + } + /** + * 移动端期权列表 + */ + static sceneListByTimes() { + return Serve.get('/option/sceneListByTimes') + } + /** + * 移动端详情 + * @param {object} data + * @param {string} data.order_id + */ + static getOptionOrderDetail(data) { + return Serve.get('/option/getOptionOrderDetail', data) + } + //期权说明 + static instruction() { + return Serve.get('/option/instruction') + } +} + +export default Option; \ No newline at end of file diff --git a/api/order.js b/api/order.js new file mode 100644 index 0000000..c188eed --- /dev/null +++ b/api/order.js @@ -0,0 +1,95 @@ +import Serve from '@/api/serve' +class Order { + /** + * 发布委托 + * @param {object} data + * @param {string} data.direction 方向 + * @param {number} data.type - 类型 + * @param {string} data.symbol - 交易对 + * @param {number} data.entrust_price - 价格 + * @param {number} data.amount - 数量 + * + */ + static storeEntrust(data) { + return Serve.post(`/exchange/storeEntrust`,data); + } + /** + * 获取历史委托 + * @param {object} data + * @param {string} data.direction 方向 + * @param {number} data.type - 类型 + * @param {string} data.symbol - 交易对 + * + */ + static getHistoryEntrust(data) { + return Serve.get(`/exchange/getHistoryEntrust`,data); + } + /** + * 获取当前委托 + * @param {object} data + * @param {string} data.direction 方向 + * @param {number} data.type - 类型 + * @param {string} data.symbol - 交易对 + * + */ + static getCurrentEntrust(data) { + return Serve.get(`/exchange/getCurrentEntrust`,data); + } + + // 获取止盈止损单 + static getConditionEntrust(data) { + return Serve.get(`/exchange/getConditionEntrust`,data); + } + + /** + * 获取委托成交记录 + * @param {object} data + * @param {string} data.entrust_id 委托id + * @param {number} data.entrust_type - 买入卖出 + * @param {string} data.symbol - 交易对 + * + */ + static getEntrustTradeRecord(data) { + return Serve.get(`/exchange/getEntrustTradeRecord`,data); + } + + /** + * 撤单 + * @param {object} data + * @param {string} data.entrust_id 委托id + * @param {number} data.entrust_type - 买入卖出 + * @param {string} data.symbol - 交易对 + * + */ + static cancelEntrust(data) { + return Serve.post(`/exchange/cancelEntrust`,data); + } + /** + * 批量撤单 + * @param {object} data + * @param {string} data.symbol - 交易对 + * + */ + static batchCancelEntrust(data) { + return Serve.post(`/exchange/batchCancelEntrust`,data); + } + // 获取交易对 + static getExchangeSymbol(){ + return Serve.get('/exchange/getExchangeSymbol') + } + /** + * 期权交易记录 + * @param {object} [data] + * @param {string} data.status + * @param {string} data.pair_id + * @param {string} data.time_id + * + */ + static getOptionHistoryOrders(data){ + return Serve.get('/option/getOptionHistoryOrders',data) + } + + +} + +export default Order; \ No newline at end of file diff --git a/api/otc.js b/api/otc.js new file mode 100644 index 0000000..3b93e90 --- /dev/null +++ b/api/otc.js @@ -0,0 +1,69 @@ +import Serve from '@/api/serve/index' +class Otc { + static userPayment(data) { + return Serve.get(`/userPayment`,data,{loading:true}); + } + static editUserPayment(data) { + return Serve.post(`/userPayment/${data.id}`,data,{loading:true}); + } + static getUserPayment(data) { + return Serve.post(`/userPayment/${data.id}`,{},{loading:true}); + } + static addUserPayment(data) { + return Serve.post(`/userPayment`,data,{loading:true}); + } + static otcTicker(){ + return Serve.get(`/otc/otcTicker`,{}); + } + static tradingEntrusts(data){ + return Serve.get(`/otc/tradingEntrusts`,data,{loading:true}) + } + static storeEntrust(data){ + return Serve.post(`/otc/storeEntrust`,data,{loading:true}) + } + static storeOrder(data){ + return Serve.post(`/otc/storeOrder`,data,{loading:true}) + } + static myEntrusts(data){ + return Serve.get(`/otc/myEntrusts`,data,{loading:true}) + } + static myOrders(data){ + return Serve.get(`/otc/myOrders`,data,{loading:true}) + } + static cancelEntrust(data){ + return Serve.post(`/otc/cancelEntrust`,data,{loading:true}) + } + static cancelOrder(data){ + return Serve.post(`/otc/cancelOrder`,data,{loading:true}) + } + static confirmPaidOrder(data){ + return Serve.post(`/otc/confirmPaidOrder`,data,{loading:true}) + } + static confirmOrder(data){ + return Serve.post(`/otc/confirmOrder`,data,{loading:true}) + } + static notConfirmOrder(data){ + return Serve.post(`/otc/notConfirmOrder`,data,{loading:true}) + } + static orderDetail(data){ + return Serve.get(`/otc/orderDetail`,data,{loading:true}) + } + static otcAccount(data){ + return Serve.get(`/otc/otcAccount`,data,{loading:true}) + } + + static legalBuy(data){ + return Serve.post(`/user/legal-buy-sell`,data) + } + static legalPrice(data){ + return Serve.post(`/user/legal-unit-price`,data) + } + static legalList(data){ + return Serve.post(`/user/legal-order-list`,data) + } + static otcWalletLogs(data){ + return Serve.get(`/user/otcWalletLogs`,data) + } +} + +export default Otc; \ No newline at end of file diff --git a/api/profile.js b/api/profile.js new file mode 100644 index 0000000..0684b45 --- /dev/null +++ b/api/profile.js @@ -0,0 +1,81 @@ +import Serve from '@/api/serve/index' +class Profile { + // 获取用户信息 + static getUserInfo() { + return Serve.get(`/user/getUserInfo`); + } + // 获取实名认证信息 + static getAuthInfo() { + return Serve.get(`/user/getAuthInfo`); + } + /** + * 初级认证 (认证第一步) + * @param {object} data + * @param {number} data.country_code + * @param {number} data.country_id // 区号id + * @param {string} data.realname + * @param {number} data.id_card //证件号 + * @param {number} data.type //证件类型 + * @param {string} data.birthday //出生日期 + * @param {string} data.address //地址 + * @param {string} data.city //城市 + * @param {string} data.extra //额外信息 + * @param {string} data.postal_code //邮政编码 + * @param {string} data.phone //手机号 + */ + static primaryAuth(data) { + return Serve.post(`/user/primaryAuth`, data); + } + /** + * 高级认证(认证第二步) + * @param {object} data + * @param {string} data.front_img //证件照正面 + * @param {string} data.back_img //证件照反面 + * @param {string} data.hand_img //手持证件照 + */ + static topAuth(data) { + return Serve.post(`/user/topAuth`, data); + } + + /** + * 登录记录 + */ + static getLoginLogs(data){ + return Serve.get(`/user/getLoginLogs`, data) + } + /** + * 邀请推广 + */ + static generalizeInfo(){ + return Serve.get(`/generalize/info`,) + } + /** + * 推广记录 + */ + static generalizeList(data){ + return Serve.get(`/generalize/list`,data) + } + /** + * 返佣记录 + */ + static rewardLogs(data){ + return Serve.get('/generalize/rewardLogs',data) + } + /** + * 获取用户等级详情 + */ + static getGradeInfo(){ + return Serve.get('/user/getGradeInfo') + } + /** + * 海报图 + */ + static poster(data){ + return Serve.get('/generalize/poster',data) + } + static qrcode(){ + return Serve.get('/generalize/invite_qrcode') + } +} + +export default Profile; \ No newline at end of file diff --git a/api/record.js b/api/record.js new file mode 100644 index 0000000..4139f2e --- /dev/null +++ b/api/record.js @@ -0,0 +1,101 @@ +import {$get,$post,$postFile} from '@/api' + +class Record { + /** + * fundHistory列表 + * @param {Object} data + */ + static fundList(data) { + + return $get(`/coin/getAllList`, data); + + } + + /** + * 币币用户当前委托记录 + * @param {Object} data + */ + static openOrder(data) { + + return $post(`/coin/orders/openOrder`, data); + + } + static conditionOrders(data) { + + return $post(`/coin/orders/condition/openOrder`, data); + + } + + + /** +     * 币币用户取消接口 +     * @param {Object} data  +    */ +   static openOrderCancel(data) { + +       return $post(`/coin/orders/cancel/${data}`); + +  } + + static orderConditionCancel(data) { + return $post(`/coin/orders/condition/cancel/${data}`) + } + + /** +     * 币币用户筛选接口 +     * @param {Object} data  +    */ +   static openOrderfilter() { + +       return $post(`/coin/orders/filter`); + +  } + + + /** + * 用户返佣记录 + * @param {Object} data + */ + static rewardList(data) { + + return $post(`/member/rewardList`, data); + + } + + /** + * 币币用户历史委托 + * @param {Object} data + */ + static history(data) { + + return $post(`/coin/orders/history`, data); + + } + + /** +     * 联系我们 +     * @param {Object} data  +    */ +   static contactUs(data) { +       return $post(`/contactUs/save` , data); +  } + + /** +     * 取消订单 +     * @param {Object} data  +    */ +   static cancelActiveOrder(data) { +       return $get(`/futuresOrders/cancelActiveOrder/${data}`); +  } + + /** +     * 取消订单 +     * @param {Object} data  +    */ +   static cancelById(data) { +       return $get(`/futuresConditionOrders/cancelById/${data}`); +  } + +} + +export default Record; diff --git a/api/resIntercept.js b/api/resIntercept.js new file mode 100644 index 0000000..fed1d0f --- /dev/null +++ b/api/resIntercept.js @@ -0,0 +1,31 @@ +import vue from "vue"; +import router from '@/router' +const resIntercept = (result) => { + let res = result.data + let config = result.config + return new Promise( + function (resolve, reject) { + // 是否提示 + if (typeof config.toast == 'boolean') { + if (config.toast) { + vue.prototype.$toast(res.msg) + } + } else { + if (res.code != 200 && res.code != 100) { + vue.prototype.$toast(res.msg) + } + } + // 过滤 + if (res.code == 200) {//成功 + resolve(res) + } else {//失败 + reject(res) + if (res.code == 100 && !config.notLogin) { + router.push('/InterceptAccount') + } + } + } + ) +} + +export default resIntercept \ No newline at end of file diff --git a/api/serve/index.js b/api/serve/index.js new file mode 100644 index 0000000..12a12b3 --- /dev/null +++ b/api/serve/index.js @@ -0,0 +1,330 @@ +import app from "@/app.js" +import Cache from "../cache.js" +let settings = { + method: "get", // 默认请求方法 + contentType: "application/json", // 传参格式 + dataType: "json", // 返回值类型 + baseUrl: app.baseUrl + '/api/app', // 请求根地址 +} + +let loadNum = 0; //加载框的数量 +let loadingShow = () => { + loadNum++ + uni.showLoading({ + title: 'loading...' + }); +} +let loadingHide = () => { + loadNum-- + if (loadNum <= 0) { + uni.hideLoading(); + } +} +function x(options = null) { + + // 返回当前实例对象 无需手动return + return new x.fn.init(options); + +} + +x.fn = x.prototype = { + + constructor: x, + + config(options) { + // 解构并设置默认值 + let { + baseUrl, + url, + data, + method, + contentType, + dataType + } = options; + + // 请求头参数 写入token和language + let auth = null; + if (uni.getStorageSync('token')) { + auth = uni.getStorageSync('token'); + } + + let lang=uni.getStorageSync('language') + const header = auth ? { + 'X-Requested-With': 'XMLHttpRequest', + lang: lang || 'en', + authorization: `bearer ${auth}`, + 'content-type': 'application/x-www-form-urlencoded' + } : { + 'X-Requested-With': 'XMLHttpRequest', + lang: lang || 'en', + 'content-type': 'application/x-www-form-urlencoded' + }; + + this.header = header; + + // 请求地址解析 + if (url.startsWith('http')) { // 外部链接 + this.url = url; + } else { // 本地相对路径 + this.url = baseUrl + url; + } + + if (data) this.data = data; + if (method) this.method = method; + if (contentType) this.contentType = contentType; + if (dataType) this.dataType = dataType; + }, + + init(options) { + // 将用户参数 写入配置信息 + this.config(Object.assign(settings, options)); + let { config = {} } = options + return new Promise((resolve, reject) => { + let reg=new RegExp('/','g')//g代表全部 + let newMsg=options.url.replace(reg,'_'); + // console.info(newMsg) + if(Cache.get(newMsg).data){ + if(newMsg!='_user_walletImage'&& newMsg!='_user_getAuthInfo' && newMsg!='_user_withdrawalBalance' + && newMsg!='_article_detail' && newMsg!='_contract_getSymbolDetail' && newMsg!='_categoryList' && newMsg!='_articleList' + && newMsg!='_user_wdcode' && newMsg!='_register_Graph_che' && newMsg!='_register_sendEmailCode' + && newMsg!='_exchange_storeEntrust' && newMsg!='_contract_holdPosition' + && newMsg!='_college' && newMsg!='_exchange_getCoinInfo' && newMsg!='_user_primaryAuth' && newMsg!='_exchange_getCurrentEntrust' + && newMsg!='_wallet_getBalance' && newMsg!='_contract_getMarketInfo'&& newMsg!='_contract_openNum'){ + // resolve(Cache.get(newMsg).data);//获取缓存中的数据 + } + uni.request({ + url: this.url, + data: this.data, + method: this.method, + header: this.header, + dataType: this.dataType, + sslVerify: false, + success: (res) => { + // console.info(res) + let message = res.data.message + let code = res.data.code + if (code != 200) { + switch (code) { + case 1003: // 登陆失效 清除状态 重新登陆 + // 清除session + uni.removeStorageSync('token'); + uni.redirectTo({ + url: "/pages/login/index", + }); + break; + case 1021: + resolve(res.data); + break; + case 4001: + resolve(res.data); + break; + default: + reject(message); + break; + } + if (config.toast !== false&&message) { + uni.showToast({ + title: message, + duration: 2000, + icon: 'none' + }); + } + } else { + // console.info(Cache.set(newMsg,res.data)) + Cache.set(newMsg,res.data); + // console.info(res.data) + resolve(res.data); // 直接返回数据 + if (config.toast&&message) { + uni.showToast({ + title: message, + duration: 2000, + icon: 'none' + }); + } + } + }, + fail: (err) => { + console.log(err) + reject(err) + if (config.toast !== false) { + // uni.showToast({ + // title: 'error reload!', + // icon: "none" + // }); + } + if (err) { + throw new Error(); + } + }, + complete: (er) => { + console.log() + reject(er) + } + }) + }else{ + // 提示状态 + if (config.loading) { + loadingShow() + } + uni.request({ + url: this.url, + data: this.data, + method: this.method, + header: this.header, + dataType: this.dataType, + sslVerify: false, + success: (res) => { + let message = res.data.message + let code = res.data.code + if (code != 200) { + switch (code) { + case 1003: // 登陆失效 清除状态 重新登陆 + // 清除session + uni.removeStorageSync('token'); + uni.redirectTo({ + url: "/pages/login/index", + }); + break; + case 1021: + resolve(res.data); + break; + case 4001: + resolve(res.data); + break; + default: + reject(message); + break; + } + if (config.toast !== false&&message) { + uni.showToast({ + title: message, + duration: 2000, + icon: 'none' + }); + } + } else { + Cache.set(newMsg,res.data); + resolve(Cache.get(newMsg).data); // 直接返回数据 + if (config.toast&&message) { + uni.showToast({ + title: message, + duration: 2000, + icon: 'none' + }); + } + } + }, + fail: (err) => { + reject(err) + if (config.toast !== false) { + uni.showToast({ + title: 'error reload!', + icon: "none" + }); + } + if (err) { + throw new Error(); + } + }, + complete: () => { + loadingHide() + } + }) + } + + }) + + }, + + // 使用promise封装同步化的确认框 + confirmSync(content, fullfilled, rejected = null) { + let showCancel = false; + if (rejected instanceof Function) { + showCancel = true; + } + return new Promise(function (resolve, reject) { + uni.showModal({ + content, + showCancel, + success(res) { // confirm or cancel + if (res.confirm) { + resolve(fullfilled()); // 执行动作 需要返回值 则标记到resolve中 + } else if (res.cancel && rejected) { + reject(rejected()); // 执行动作 需要返回值 则标记到reject中 + } + } + }) + }) + }, + + get(url, data = null, config = {}) { + return x({ + method: "get", + url, + data, + config + }) + }, + + post(url, data, config = {}) { + return x({ + method: "post", + url, + data, + config + }) + }, + // data 为uni的chooseImage + uploadFile(url, data, config = {}) { + let auth = null; + if (uni.getStorageSync('token')) { + auth = uni.getStorageSync('token'); + } + let lang=uni.getStorageSync('language') + let header = { + 'X-Requested-With': 'XMLHttpRequest', + lang: lang || "en", + } + if (auth) header.authorization = `bearer ${auth}`; + if (config.loading !== false) { + loadingShow() + } + return new Promise((resolve, reject) => { + uni.uploadFile({ + url: settings.baseUrl + url, //仅为示例,非真实的接口地址 + filePath: data.tempFilePaths[0], + name: 'image', + formData: {}, + sslVerify: false, + header, + success: (res) => { + resolve(JSON.parse(res.data)) + }, + fail: () => { + reject() + }, + complete: () => { + loadingHide() + } + }); + }) + + }, + head() { + + }, + put() { + + }, + // ... +} + +x.fn.init.prototype = x.fn, x.extend = x.fn.extend = function (obj, prop) { + if (!prop) { //如果未设置prop 则表示给this扩展一个对象的内容 + prop = obj; + obj = this; + } + for (var i in prop) obj[i] = prop[i]; +}, x.extend(x.fn); + +export default x; diff --git a/api/serve/market-socket.js b/api/serve/market-socket.js new file mode 100644 index 0000000..47a1708 --- /dev/null +++ b/api/serve/market-socket.js @@ -0,0 +1,200 @@ + +class Ws { + constructor(ws, data, ...args) { // [{url, data, method...},,,,] + this._ws = ws; + this._data = data; + // 待发送的消息列 + this._msgs = [] + + this.socket = this.doLink(); + this.doOpen(); + // 订阅/发布模型 + this._events = {}; + // 是否保持连接 + this._isLink = true; + // 订阅列表(交易所专用) + this.subs = [] + // 循环检查 + setInterval(() => { + if (this._isLink) { + if (this.socket.readyState == 2 || this.socket.readyState == 3) { + this.resetLink() + } + } + }, 3000) + } + // 重连 + resetLink() { + this.socket = this.doLink(() => { + this.Notify({ + Event: 'resetLink' + }); + this.resetSub() + }); + this.doOpen(); + } + // 连接 + doLink(call) { + let ws = uni.connectSocket({ + url: this._ws, + // 可选参数 设置默认值 + header: { + 'content-type': 'application/json' + }, + method: 'GET', + success: () => { + call && call() + } + }) + return ws; + } + doOpen() { + this.socket.onOpen((ev) => { + this.onOpen(ev) + }) + this.socket.onMessage((ev) => { + this.onMessage(ev) + }) + this.socket.onClose((ev) => { + this.onClose(ev) + }) + this.socket.onError((ev) => { + this.onError(ev) + }) + + } + // 打开 + onOpen() { + // 打开时重发未发出的消息 + let list = Object.assign([], this._msgs) + list.forEach((item) => { + if (this.send(item)) { + let idx = this._msgs.indexOf(item) + if (idx != -1) { + this._msgs.splice(idx, 1) + } + } + }) + } + // 手动关闭 + doClose() { + this._isLink = false + this._events = {} + this._msgs = [] + this.socket.close({ + success: () => { + console.log('socket close success') + } + }) + } + // 添加监听 + on(name, handler) { + this.subscribe(name, handler); + } + // 取消监听 + off(name, handler) { + this.unsubscribe(name, handler); + } + // 关闭事件 + onClose() { + // 是否重新连接 + if (this._isLink) { + setTimeout(() => { + this.resetLink() + }, 3000) + } + } + // 错误 + onError(evt) { + this.Notify({ + Event: 'error', + Data: evt + }); + + } + // 接受数据 + onMessage(evt) { + try { + + // 解析推送的数据 + const data = JSON.parse(evt.data); + + // 通知订阅者 + this.Notify({ + Event: 'message', + Data: data + }); + + } catch (err) { + console.error(' >> Data parsing error:', err); + // 通知订阅者 + this.Notify({ + Event: 'error', + Data: err + }); + } + } + // 订阅事件的方法 + subscribe(name, handler) { + if (this._events.hasOwnProperty(name)) { + this._events[name].push(handler); // 追加事件 + } else { + this._events[name] = [handler]; // 添加事件 + } + } + // 取消订阅事件 + unsubscribe(name, handler) { + let start = this._events[name].findIndex(item => item === handler); + // 删除该事件 + this._events[name].splice(start, 1); + } + // 发布后通知订阅者 + Notify(entry) { + // 检查是否有订阅者 返回队列 + const cbQueue = this._events[entry.Event]; + if (cbQueue && cbQueue.length) { + for (let callback of cbQueue) { + if (callback instanceof Function) callback(entry.Data); + } + } + } + // 发送消息 + send(data) { + this.changeSubs(data) + if (this.socket.readyState == 1) { + this.socket.send({ data: JSON.stringify(data) }) + return true + } else { + // 保存到待发送信息 + if (!this._msgs.includes(data)) { + this._msgs.push(data) + }; + return false + } + + } + // 修改订阅列表(交易所用) + changeSubs(data) { + if (data.cmd == 'sub') { + if (!this.subs.includes(data.msg)) { + this.subs.push(data.msg) + } + } else if (data.cmd == 'unsub') { + let idx = this.subs.indexOf(data.msg) + if (idx != -1) { + this.subs.splice(idx, 1) + } + } + } + // 重新订阅(交易所用) + resetSub() { + let list = Object.assign([], this.subs) + list.forEach((item) => { + this.send({ + cmd: 'sub', + msg: item + }) + }) + } +} +export default Ws \ No newline at end of file diff --git a/api/serve/webaxios.js b/api/serve/webaxios.js new file mode 100644 index 0000000..27407ef --- /dev/null +++ b/api/serve/webaxios.js @@ -0,0 +1,62 @@ +import axios from 'axios' +import app from '@/app' +import qs from 'qs'; + +// 初始化配置 +let setting = { + baseURL: app.baseUrl + '/api/app', + timeout: 10000, + withCredentials: true, + crossDomain: true, + responseType: 'json', + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } +} +const server = axios.create(setting) + +// 请求拦截 +server.interceptors.request.use(function (config) { + if (config.method === 'post') { + if (!config.file) { + config.data = qs.stringify(config.data) + } + } + config.headers = Object.assign(config.headers, { + 'X-Requested-With': 'XMLHttpRequest', + + }) + return config; +}, function (error) { + return Promise.reject(error); +}) +// 响应拦截 +server.interceptors.response.use(function (response) { + return response.data; +}, function (error) { + return Promise.reject(error); +}) +export default server; + + +const $get = (url, data, config) => { + return server.get(url, { + params: data, + ...config + }) +} +const $post = (url, data, config) => { + return server.post(url, data, config) +} +const $postFile = (url, data, config) => { + let form = new FormData() + for (let i in data) { + form.append(i, data[i]) + } + let postConfig = { + file: true + } + return server.post(url, form, Object.assign(postConfig, config)) +} +export { $get, $post, $postFile } + diff --git a/api/setting.js b/api/setting.js new file mode 100644 index 0000000..b855c5a --- /dev/null +++ b/api/setting.js @@ -0,0 +1,197 @@ +import Serve from '@/api/serve' +class Setting { + // 获取用户信息 + static getUserInfo() { + return Serve.get(`/user/getUserInfo`); + } + /** + * 修改用户信息 + * @param {{username:string,avatar:'url'}} data + */ + static updateUserInfo(data) { + return Serve.post(`/user/updateUserInfo`, data); + } + /** + * 关闭手机号/邮箱/谷歌验证 + * @param {object} data + * @param {number} data.type 1:手机 2:邮箱 3:谷歌 + * @param {number} data.sms_code 手机验证码 + * @param {number} data.email_code 邮箱验证码 + * @param {number} data.google_code 谷歌验证码 + */ + static disableSmsEmailGoogle(data,{btn}) { + return Serve.post(`/user/disableSmsEmailGoogle`, data,{btn}); + } + /** + * 开启手机号/邮箱/谷歌验证 + * @param {object} data + * @param {number} data.type 1:手机 2:邮箱 3:谷歌 + * @param {number} data.sms_code 手机验证码 + * @param {number} data.email_code 邮箱验证码 + * @param {number} data.google_code 谷歌验证码 + */ + static enableSmsEmailGoogle(data,{btn}) { + return Serve.post(`/user/enableSmsEmailGoogle`, data,{btn}); + } + /** + * 发送邮箱验证码 + * @param {object} data + * @param {string} data.email 邮箱号 + */ + static sendBindEmailCode(data) { + return Serve.post(`/user/sendBindEmailCode`, data); + } + /** + * 登录二次验证开关 + */ + static switchSecondVerify() { + return Serve.get(`/user/switchSecondVerify`); + } + /** + * 账号安全信息 + */ + static accountSecurity() { + return Serve.get(`/user/security/home`); + } + /** + * 设置或重置交易密码 + * @param {object} data + * @param {string} data.payword + * @param {string} data.payword_confirmation + * @param {string} data.sms_code + * @param {string} data.email_code + * @param {string} data.google_code + */ + static setOrResetPaypwd(data) { + return Serve.post(`/user/setOrResetPaypwd`, data); + } + /** + * 设置或重置登录密码 + * @param {object} data + * @param {string} data.password + * @param {string} data.password_confirmation + * @param {string} data.sms_code + * @param {string} data.email_code + * @param {string} data.google_code + */ + static updatePassword(data,{btn}) { + return Serve.post(`/user/updatePassword`, data,{btn}); + } + /** + * 绑定邮箱 + * @param {object} data + * @param {string} data.email + * @param {string} data.email_code + * @param {string} data.sms_code + * @param {string} data.google_code + */ + static bindEmail(data,{btn}) { + return Serve.post(`/user/bindEmail`, data,{btn}); + } + + /** + * 绑定手机 + * @param {object} data + * @param {string} data.phone + * @param {string} data.country_code - 手机区号 + * @param {string} data.sms_code + * @param {string} data.email_code + * @param {string} data.google_code + */ + static bindPhone(data,{btn}) { + return Serve.post(`/user/bindPhone`, data,{btn}); + } + + /** + * 解绑邮箱 + * @param {object} data + * @param {string} data.sms_code + * @param {string} data.email_code + * @param {string} data.google_code + */ + static unbindEmail(data) { + return Serve.post(`/user/unbindEmail`, data); + } + + /** + * 解绑手机 + * @param {object} data + * @param {string} data.sms_code + * @param {string} data.email_code + * @param {string} data.google_code + */ + static unbindPhone(data) { + return Serve.post(`/user/unbindPhone`, data); + } + + /** + * 忘记登录密码 - 账号确认 + * @param {object} data + * @param {string} data.account + */ + static forgetPasswordAttempt(data) { + return Serve.post(`/user/forgetPasswordAttempt`, data,{toast:false}); + } + /** + * 忘记登录密码 - 提交 + * @param {object} data + * @param {string} data.account + * @param {string} data.email_code + * @param {string} data.google_code + * @param {string} data.password + * @param {string} data.password_confirmation + */ + static forgetPassword(data,{btn}) { + return Serve.post(`/user/forgetPassword`, data,{btn}); + } + + /** + * 获取谷歌密钥 + */ + static getGoogleToken(data) { + return Serve.get(`/user/getGoogleToken`, data); + } + /** + * 绑定谷歌 + * @param {object} data + * @param {string} data.google_token + * @param {string} data.google_code + * @param {string} data.sms_code + * @param {string} data.email_code + */ + static bindGoogleToken(data,{btn}) { + return Serve.post(`/user/bindGoogleToken`, data,{btn}); + } + /** + * 解绑谷歌 + * @param {object} data + * @param {string} data.sms_code + * @param {string} data.google_code + * @param {string} data.email_code + */ + static unbindGoogleToken(data) { + return Serve.post(`/user/unbindGoogleToken`, data); + } + /** + * 发送绑定手机短信验证码 + * @param {object} data + * @param {string} data.phone + * @param {string} data.country_code + */ + static sendBindSmsCode(data) { + return Serve.post(`/user/sendBindSmsCode`, data); + } + /** + * 在线获取验证码 + * @param {object} data + * @param {string} data.type 1:手机 2:邮箱 + */ + static getCode(data) { + return Serve.post(`/user/getCode`, data); + } + + + +} + +export default Setting; \ No newline at end of file diff --git a/api/subscride.js b/api/subscride.js new file mode 100644 index 0000000..d49aa50 --- /dev/null +++ b/api/subscride.js @@ -0,0 +1,31 @@ + +import Serve from '@/api/serve' + +class Subscribe { + /** + * 请求数据 + */ + static subscribeTokenList(data){ + return Serve.post('/user/subscribeTokenList',data) + } + static activity(data){ + return Serve.get('/subscribe/activity',data) + } + static subscribe(data){ + return Serve.post('/user/subscribe',data) + } + /** + * 提交数据 + * @param {object} data + * @param {string} data.amount + * @param {string} data.coin_name + */ + static subscribeNow(data){ + return Serve.post('/user/subscribeNow',data) + } + static changePurchaseCode(data){ + return Serve.post('/user/changePurchaseCode',data) + } +} + +export default Subscribe; \ No newline at end of file diff --git a/api/wallet.js b/api/wallet.js new file mode 100644 index 0000000..cafbc72 --- /dev/null +++ b/api/wallet.js @@ -0,0 +1,175 @@ + +import Serve from '@/api/serve' + +class Wallet { + + // 提币记录 + static withdrawalRecord() { + return Serve.post(`/user/withdrawalRecord`); + } + // PayPal支付 + static rechargeManualPost(data) { + return Serve.post(`/user/rechargeManualPost`, data); + } + // PayPal账号 + static paypal() { + return Serve.get(`/user/paypal`); + } + // PayPal支付记录 + static rechargeManualLog(data) { + return Serve.post(`/user/rechargeManualLog`,data); + } + // 充值记录 + static depositHistory(data) { + return Serve.post(`/user/depositHistory`,data); + } + + // 钱包划转记录 + static transferRecord() { + return Serve.post(`/user/transferRecord`); + } + // 申购记录 + static subscribeRecords() { + return Serve.post(`/user/subscribeRecords`); + } + // 个人资产管理 + static personalAssets() { + return Serve.post(`/user/personalAssets`); + } + + // 各个币种的资产 + static fundAccount(data) { + return Serve.post(`/user/fundAccount`, data); + } + + // 代币以及对应的余额 + static tokenList(data) { + return Serve.post(`/user/tokenList`, data); + } + + // 资金划转 + static fundsTransfer(data) { + return Serve.post(`/user/appFundsTransfer`, data); + } + + // 生成充值地址 + static walletImage(data) { + return Serve.post(`/user/walletImage`, data); + } + + // 提交充值 + static recharge(data) { + return Serve.post(`/user/recharge`, data); + } + + // 提交提币 + static withdraw(data) { + return Serve.post(`/user/withdraw`, data); + } + + // 提币地址管理 + static getUserWithdrawAdress(data) { + return Serve.post(`/user/withdrawalAddressManagement`, data); + } + + // 编辑提币地址 + static editUserWithdrawAdress (data) { + return Serve.post(`/user/editUserAdress`, data); + } + + // 删除提币地址 + static delUserWithdrawAdress(data) { + return Serve.post(`/user/withdrawalAddressManagement`, data); + } + + // 添加提币地址 + static addUserWithdrawAdress(data) { + return Serve.post(`/`, data); + } + + static withdrawalSelectAddress() { + return Serve.post(`/user/withdrawalSelectAddress`); + } + + static addWithdrawAddress(data) { + return Serve.post(`/user/withdrawalAddressAdd`, data); + } + + + // 查询币种余额 + static withdrawalBalance(data) { + return Serve.post(`/user/withdrawalBalance`, data); + } + + // 修改用户地址 + static withdrawalAddressModify(data) { + return Serve.post(`/user/withdrawalAddressModify`, data); + } + + // 删除币种地址 + static withdrawalAddressDeleted(data) { + return Serve.post(`/user/withdrawalAddressDeleted`, data); + } + // 资金余额 + static appTokenAssets(data){ + return Serve.post(`/user/appTokenAssets`,data) + } + // 指定币种划转记录 + static appTransferRecord(data){ + return Serve.post(`/user/appTransferRecord`,data) + } + // 指定币种提币记录 + static appWithdrawalRecord(data){ + return Serve.post(`/user/appWithdrawalRecord`,data) + } + // 指定币种提币记录 + static appDepositHistory(data){ + return Serve.post(`/user/appDepositHistory`,data) + } + // 指定币种币币记录 + static getWalletLogs(data){ + return Serve.get(`/user/getWalletLogs`,data) + } + // 生成钱包地址 + static createWalletAddress() { + return Serve.post(`/user/createWalletAddress`); + } + // 获取充币地址 + static collectionType(data) { + return Serve.post(`/user/collectionType`, data) + } + // 获取转换列表 + static accounts(data){ + return Serve.get(`/wallet/accounts`, data) + } + // 获取子账户类别 + static accountPairList(data){ + return Serve.get('/wallet/accountPairList',data) + } + // 获取转换币种列表 + static coinList(data){ + return Serve.get('/wallet/coinList',data) + } + // 获取余额 + static getBalance(data){ + return Serve.get('/wallet/getBalance',data) + } + // 资金划转 + static transfer(data){ + return Serve.post('/wallet/transfer',data) + } + // 合约资金列表 + static accountList(data){ + return Serve.get('/contract/accountList',data) + } + // 合约资金流水 + static accountFlow(data){ + return Serve.get('/contract/accountFlow',data) + } + // 合约资金流水 + static cancelWithdraw(data){ + return Serve.post('/user/cancelWithdraw',data,{loading:true}) + } +} + +export default Wallet; \ No newline at end of file diff --git a/app.js b/app.js new file mode 100644 index 0000000..a0b3503 --- /dev/null +++ b/app.js @@ -0,0 +1,55 @@ + +let config = {}; +if (process.env.NODE_ENV == 'production'||true) { //生产环境 + config = { + // ajax地址 + baseUrl: 'https://dfmg.dficoins.com', + // 图片地址 (暂时无用) + imgUrl: 'https://dfmg.dficoins.com/storage', + // socket地址 + socketUrl: 'wss://dfmg.dficoins.com/ws1', + socketUrl1: 'wss://dfmg.dficoins.com/ws2', + // pc端地址 + pcUrl:'https://www.dficoins.com', + // app名称 + appName: 'DFIcoins', + // 版本 + version: '1.0.0', + // 移动端地址 + mobile: 'https://app.dficoins.com', + down:"https://app.dficoins.com/download/DFIcoins.html" + }; +} else { //开发环境 + config = { + baseUrl: 'http://qkladmin2.ruanmeng.top', + imgUrl: 'http://qkladmin2.ruanmeng.top/upload', + socketUrl: 'ws://qkladmin2.ruanmeng.top:2346/', + socketUrl1: 'ws://qkladmin2.ruanmeng.top:2348/', + // pc端地址 + pcUrl:'http://qklhome2.ruanmeng.top', + // app名称 + appName: '本地开发', + // 版本 + version: '0.0.0', + // 移动端地址 + mobile: '' + } + // config = { + // // ajax地址 + // baseUrl: 'https://server.7coin.in', + // // 图片地址 (暂时无用) + // imgUrl: 'https://server.7coin.in/upload', + // // socket地址 + // socketUrl: 'wss://server.7coin.in:2346/', + // socketUrl1: 'wss://server.7coin.in:2348/', + // // pc端地址 + // pcUrl:'https://www.7coin.in', + // // app名称 + // appName: '7COIN test', + // // 版本 + // version: '1.0.0', + // // 移动端地址 + // mobile: 'https://h5.7coin.in' + // }; +} +export default config; diff --git a/assets/fontIcon/iconfont.eot b/assets/fontIcon/iconfont.eot new file mode 100644 index 0000000..ca2272c Binary files /dev/null and b/assets/fontIcon/iconfont.eot differ diff --git a/assets/fontIcon/iconfont.svg b/assets/fontIcon/iconfont.svg new file mode 100644 index 0000000..ff43def --- /dev/null +++ b/assets/fontIcon/iconfont.svg @@ -0,0 +1,77 @@ + + + + + +Created by iconfont + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/fontIcon/iconfont.ttf b/assets/fontIcon/iconfont.ttf new file mode 100644 index 0000000..1f7eb0d Binary files /dev/null and b/assets/fontIcon/iconfont.ttf differ diff --git a/assets/fontIcon/iconfont.woff b/assets/fontIcon/iconfont.woff new file mode 100644 index 0000000..8ebb8d6 Binary files /dev/null and b/assets/fontIcon/iconfont.woff differ diff --git a/assets/fontIcon/iconfont.woff2 b/assets/fontIcon/iconfont.woff2 new file mode 100644 index 0000000..5b23522 Binary files /dev/null and b/assets/fontIcon/iconfont.woff2 differ diff --git a/assets/img/7coin_qidongye.gif b/assets/img/7coin_qidongye.gif new file mode 100644 index 0000000..66df8e3 Binary files /dev/null and b/assets/img/7coin_qidongye.gif differ diff --git a/assets/img/Bitmap3x.png b/assets/img/Bitmap3x.png new file mode 100644 index 0000000..5834509 Binary files /dev/null and b/assets/img/Bitmap3x.png differ diff --git a/assets/img/Fill13x.png b/assets/img/Fill13x.png new file mode 100644 index 0000000..7ff73ce Binary files /dev/null and b/assets/img/Fill13x.png differ diff --git a/assets/img/Upload_File3x.png b/assets/img/Upload_File3x.png new file mode 100644 index 0000000..818adc3 Binary files /dev/null and b/assets/img/Upload_File3x.png differ diff --git a/assets/img/auth_fanmian.png b/assets/img/auth_fanmian.png new file mode 100644 index 0000000..a10a4da Binary files /dev/null and b/assets/img/auth_fanmian.png differ diff --git a/assets/img/auth_shouchi.png b/assets/img/auth_shouchi.png new file mode 100644 index 0000000..fd36b97 Binary files /dev/null and b/assets/img/auth_shouchi.png differ diff --git a/assets/img/auth_zhengmain.png b/assets/img/auth_zhengmain.png new file mode 100644 index 0000000..e082cd8 Binary files /dev/null and b/assets/img/auth_zhengmain.png differ diff --git a/assets/img/border_bottom.png b/assets/img/border_bottom.png new file mode 100644 index 0000000..727a514 Binary files /dev/null and b/assets/img/border_bottom.png differ diff --git a/assets/img/border_bottom_g.png b/assets/img/border_bottom_g.png new file mode 100644 index 0000000..0dc75d7 Binary files /dev/null and b/assets/img/border_bottom_g.png differ diff --git a/assets/img/che.png b/assets/img/che.png new file mode 100644 index 0000000..c578336 Binary files /dev/null and b/assets/img/che.png differ diff --git a/assets/img/fenzu23x.png b/assets/img/fenzu23x.png new file mode 100644 index 0000000..c8ed5c8 Binary files /dev/null and b/assets/img/fenzu23x.png differ diff --git a/assets/img/fenzu_73x.png b/assets/img/fenzu_73x.png new file mode 100644 index 0000000..361c7a4 Binary files /dev/null and b/assets/img/fenzu_73x.png differ diff --git a/assets/img/flag/cn.jpg b/assets/img/flag/cn.jpg new file mode 100644 index 0000000..3c007ba Binary files /dev/null and b/assets/img/flag/cn.jpg differ diff --git a/assets/img/flag/cn_hk.png b/assets/img/flag/cn_hk.png new file mode 100644 index 0000000..013b0b4 Binary files /dev/null and b/assets/img/flag/cn_hk.png differ diff --git a/assets/img/flag/de.jpg b/assets/img/flag/de.jpg new file mode 100644 index 0000000..5bc49ae Binary files /dev/null and b/assets/img/flag/de.jpg differ diff --git a/assets/img/flag/en.jpg b/assets/img/flag/en.jpg new file mode 100644 index 0000000..d4ad2c8 Binary files /dev/null and b/assets/img/flag/en.jpg differ diff --git a/assets/img/flag/fin.png b/assets/img/flag/fin.png new file mode 100644 index 0000000..48207bf Binary files /dev/null and b/assets/img/flag/fin.png differ diff --git a/assets/img/flag/fra.png b/assets/img/flag/fra.png new file mode 100644 index 0000000..dd64038 Binary files /dev/null and b/assets/img/flag/fra.png differ diff --git a/assets/img/flag/it.png b/assets/img/flag/it.png new file mode 100644 index 0000000..1e7d382 Binary files /dev/null and b/assets/img/flag/it.png differ diff --git a/assets/img/flag/jp.jpg b/assets/img/flag/jp.jpg new file mode 100644 index 0000000..6804471 Binary files /dev/null and b/assets/img/flag/jp.jpg differ diff --git a/assets/img/flag/kor.jpg b/assets/img/flag/kor.jpg new file mode 100644 index 0000000..eca041c Binary files /dev/null and b/assets/img/flag/kor.jpg differ diff --git a/assets/img/flag/pl.png b/assets/img/flag/pl.png new file mode 100644 index 0000000..375ca0d Binary files /dev/null and b/assets/img/flag/pl.png differ diff --git a/assets/img/flag/pt.png b/assets/img/flag/pt.png new file mode 100644 index 0000000..da9adf7 Binary files /dev/null and b/assets/img/flag/pt.png differ diff --git a/assets/img/flag/spa.jpg b/assets/img/flag/spa.jpg new file mode 100644 index 0000000..0226dc6 Binary files /dev/null and b/assets/img/flag/spa.jpg differ diff --git a/assets/img/flag/swe.png b/assets/img/flag/swe.png new file mode 100644 index 0000000..3d3e52e Binary files /dev/null and b/assets/img/flag/swe.png differ diff --git a/assets/img/flag/tr.jpg b/assets/img/flag/tr.jpg new file mode 100644 index 0000000..47c823b Binary files /dev/null and b/assets/img/flag/tr.jpg differ diff --git a/assets/img/flag/ukr.jpg b/assets/img/flag/ukr.jpg new file mode 100644 index 0000000..d99e611 Binary files /dev/null and b/assets/img/flag/ukr.jpg differ diff --git a/assets/img/home/10.png b/assets/img/home/10.png new file mode 100644 index 0000000..5291580 Binary files /dev/null and b/assets/img/home/10.png differ diff --git a/assets/img/home/11.png b/assets/img/home/11.png new file mode 100644 index 0000000..3eae476 Binary files /dev/null and b/assets/img/home/11.png differ diff --git a/assets/img/home/6.png b/assets/img/home/6.png new file mode 100644 index 0000000..c15ffd5 Binary files /dev/null and b/assets/img/home/6.png differ diff --git a/assets/img/home/7.png b/assets/img/home/7.png new file mode 100644 index 0000000..78edfb6 Binary files /dev/null and b/assets/img/home/7.png differ diff --git a/assets/img/home/8.png b/assets/img/home/8.png new file mode 100644 index 0000000..78034ec Binary files /dev/null and b/assets/img/home/8.png differ diff --git a/assets/img/home/9.png b/assets/img/home/9.png new file mode 100644 index 0000000..b9992de Binary files /dev/null and b/assets/img/home/9.png differ diff --git a/assets/img/home/Make.png b/assets/img/home/Make.png new file mode 100644 index 0000000..37eb055 Binary files /dev/null and b/assets/img/home/Make.png differ diff --git a/assets/img/home/antFill-apple@2x.png b/assets/img/home/antFill-apple@2x.png new file mode 100644 index 0000000..6b5707d Binary files /dev/null and b/assets/img/home/antFill-apple@2x.png differ diff --git a/assets/img/home/antFill-apple@3x.png b/assets/img/home/antFill-apple@3x.png new file mode 100644 index 0000000..b5f62b2 Binary files /dev/null and b/assets/img/home/antFill-apple@3x.png differ diff --git a/assets/img/home/check.png b/assets/img/home/check.png new file mode 100644 index 0000000..4ef2a8e Binary files /dev/null and b/assets/img/home/check.png differ diff --git a/assets/img/home/coin.png b/assets/img/home/coin.png new file mode 100644 index 0000000..51c51fd Binary files /dev/null and b/assets/img/home/coin.png differ diff --git a/assets/img/home/currency.png b/assets/img/home/currency.png new file mode 100644 index 0000000..c003213 Binary files /dev/null and b/assets/img/home/currency.png differ diff --git a/assets/img/home/fa-android@2x.png b/assets/img/home/fa-android@2x.png new file mode 100644 index 0000000..2a3e990 Binary files /dev/null and b/assets/img/home/fa-android@2x.png differ diff --git a/assets/img/home/home1.png b/assets/img/home/home1.png new file mode 100644 index 0000000..74aa556 Binary files /dev/null and b/assets/img/home/home1.png differ diff --git a/assets/img/home/home10.svg b/assets/img/home/home10.svg new file mode 100644 index 0000000..9892702 --- /dev/null +++ b/assets/img/home/home10.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/assets/img/home/home11.svg b/assets/img/home/home11.svg new file mode 100644 index 0000000..6412901 --- /dev/null +++ b/assets/img/home/home11.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/assets/img/home/home12.png b/assets/img/home/home12.png new file mode 100644 index 0000000..60a8750 Binary files /dev/null and b/assets/img/home/home12.png differ diff --git a/assets/img/home/home13.png b/assets/img/home/home13.png new file mode 100644 index 0000000..3430726 Binary files /dev/null and b/assets/img/home/home13.png differ diff --git a/assets/img/home/home14.png b/assets/img/home/home14.png new file mode 100644 index 0000000..8325e83 Binary files /dev/null and b/assets/img/home/home14.png differ diff --git a/assets/img/home/home15.png b/assets/img/home/home15.png new file mode 100644 index 0000000..efcd3c5 Binary files /dev/null and b/assets/img/home/home15.png differ diff --git a/assets/img/home/home16.svg b/assets/img/home/home16.svg new file mode 100644 index 0000000..6a460a5 --- /dev/null +++ b/assets/img/home/home16.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/assets/img/home/home17.svg b/assets/img/home/home17.svg new file mode 100644 index 0000000..744d20e --- /dev/null +++ b/assets/img/home/home17.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/assets/img/home/home2.png b/assets/img/home/home2.png new file mode 100644 index 0000000..641ffc2 Binary files /dev/null and b/assets/img/home/home2.png differ diff --git a/assets/img/home/home3.png b/assets/img/home/home3.png new file mode 100644 index 0000000..6b20f74 Binary files /dev/null and b/assets/img/home/home3.png differ diff --git a/assets/img/home/home4.png b/assets/img/home/home4.png new file mode 100644 index 0000000..055c094 Binary files /dev/null and b/assets/img/home/home4.png differ diff --git a/assets/img/home/home5.png b/assets/img/home/home5.png new file mode 100644 index 0000000..4ed82f6 Binary files /dev/null and b/assets/img/home/home5.png differ diff --git a/assets/img/home/home6.png b/assets/img/home/home6.png new file mode 100644 index 0000000..a2bb5eb Binary files /dev/null and b/assets/img/home/home6.png differ diff --git a/assets/img/home/home7.png b/assets/img/home/home7.png new file mode 100644 index 0000000..6278038 Binary files /dev/null and b/assets/img/home/home7.png differ diff --git a/assets/img/home/home8.svg b/assets/img/home/home8.svg new file mode 100644 index 0000000..37b5131 --- /dev/null +++ b/assets/img/home/home8.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/assets/img/home/home9.svg b/assets/img/home/home9.svg new file mode 100644 index 0000000..6c277ca --- /dev/null +++ b/assets/img/home/home9.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/assets/img/home/illustration_1.png b/assets/img/home/illustration_1.png new file mode 100644 index 0000000..ca8d5df Binary files /dev/null and b/assets/img/home/illustration_1.png differ diff --git a/assets/img/home/img1.png b/assets/img/home/img1.png new file mode 100644 index 0000000..8d0312d Binary files /dev/null and b/assets/img/home/img1.png differ diff --git a/assets/img/home/img10.png b/assets/img/home/img10.png new file mode 100644 index 0000000..488302c Binary files /dev/null and b/assets/img/home/img10.png differ diff --git a/assets/img/home/img11.png b/assets/img/home/img11.png new file mode 100644 index 0000000..b920d25 Binary files /dev/null and b/assets/img/home/img11.png differ diff --git a/assets/img/home/img12.png b/assets/img/home/img12.png new file mode 100644 index 0000000..088c3e3 Binary files /dev/null and b/assets/img/home/img12.png differ diff --git a/assets/img/home/img13.png b/assets/img/home/img13.png new file mode 100644 index 0000000..daf80f8 Binary files /dev/null and b/assets/img/home/img13.png differ diff --git a/assets/img/home/img14.png b/assets/img/home/img14.png new file mode 100644 index 0000000..c0a5b04 Binary files /dev/null and b/assets/img/home/img14.png differ diff --git a/assets/img/home/img2.png b/assets/img/home/img2.png new file mode 100644 index 0000000..3ea934b Binary files /dev/null and b/assets/img/home/img2.png differ diff --git a/assets/img/home/img3.png b/assets/img/home/img3.png new file mode 100644 index 0000000..2583d52 Binary files /dev/null and b/assets/img/home/img3.png differ diff --git a/assets/img/home/img4.png b/assets/img/home/img4.png new file mode 100644 index 0000000..61c8ff5 Binary files /dev/null and b/assets/img/home/img4.png differ diff --git a/assets/img/home/img5.png b/assets/img/home/img5.png new file mode 100644 index 0000000..5b8dba4 Binary files /dev/null and b/assets/img/home/img5.png differ diff --git a/assets/img/home/img6.png b/assets/img/home/img6.png new file mode 100644 index 0000000..3235f44 Binary files /dev/null and b/assets/img/home/img6.png differ diff --git a/assets/img/home/img7.png b/assets/img/home/img7.png new file mode 100644 index 0000000..242022b Binary files /dev/null and b/assets/img/home/img7.png differ diff --git a/assets/img/home/img8.png b/assets/img/home/img8.png new file mode 100644 index 0000000..bc8364c Binary files /dev/null and b/assets/img/home/img8.png differ diff --git a/assets/img/home/img9.png b/assets/img/home/img9.png new file mode 100644 index 0000000..ca86674 Binary files /dev/null and b/assets/img/home/img9.png differ diff --git a/assets/img/home/md-android@3x.png b/assets/img/home/md-android@3x.png new file mode 100644 index 0000000..e69a9ff Binary files /dev/null and b/assets/img/home/md-android@3x.png differ diff --git a/assets/img/home/riFill-google-play-fill@3x.png b/assets/img/home/riFill-google-play-fill@3x.png new file mode 100644 index 0000000..137afb0 Binary files /dev/null and b/assets/img/home/riFill-google-play-fill@3x.png differ diff --git a/assets/img/home/right-line.png b/assets/img/home/right-line.png new file mode 100644 index 0000000..e883c26 Binary files /dev/null and b/assets/img/home/right-line.png differ diff --git a/assets/img/home/stt.png b/assets/img/home/stt.png new file mode 100644 index 0000000..158db41 Binary files /dev/null and b/assets/img/home/stt.png differ diff --git a/assets/img/home/styy.png b/assets/img/home/styy.png new file mode 100644 index 0000000..779ee82 Binary files /dev/null and b/assets/img/home/styy.png differ diff --git a/assets/img/home/tiao.png b/assets/img/home/tiao.png new file mode 100644 index 0000000..056d514 Binary files /dev/null and b/assets/img/home/tiao.png differ diff --git a/assets/img/home/transfer.png b/assets/img/home/transfer.png new file mode 100644 index 0000000..0d2168f Binary files /dev/null and b/assets/img/home/transfer.png differ diff --git a/assets/img/home/图片 6@3x.png b/assets/img/home/图片 6@3x.png new file mode 100644 index 0000000..90b3f25 Binary files /dev/null and b/assets/img/home/图片 6@3x.png differ diff --git a/assets/img/home/图片 7@3x.png b/assets/img/home/图片 7@3x.png new file mode 100644 index 0000000..da50ca8 Binary files /dev/null and b/assets/img/home/图片 7@3x.png differ diff --git a/assets/img/home/图片 9@3x.png b/assets/img/home/图片 9@3x.png new file mode 100644 index 0000000..455d839 Binary files /dev/null and b/assets/img/home/图片 9@3x.png differ diff --git a/assets/img/initve.png b/assets/img/initve.png new file mode 100644 index 0000000..3ad6f35 Binary files /dev/null and b/assets/img/initve.png differ diff --git a/assets/img/invite-1.png b/assets/img/invite-1.png new file mode 100644 index 0000000..76152ad Binary files /dev/null and b/assets/img/invite-1.png differ diff --git a/assets/img/invite-2.png b/assets/img/invite-2.png new file mode 100644 index 0000000..ec4a300 Binary files /dev/null and b/assets/img/invite-2.png differ diff --git a/assets/img/invite-3.png b/assets/img/invite-3.png new file mode 100644 index 0000000..757b82f Binary files /dev/null and b/assets/img/invite-3.png differ diff --git a/assets/img/invite-4.png b/assets/img/invite-4.png new file mode 100644 index 0000000..0653bb9 Binary files /dev/null and b/assets/img/invite-4.png differ diff --git a/assets/img/invite-5.png b/assets/img/invite-5.png new file mode 100644 index 0000000..fd89b98 Binary files /dev/null and b/assets/img/invite-5.png differ diff --git a/assets/img/invite-6.png b/assets/img/invite-6.png new file mode 100644 index 0000000..4f21cf3 Binary files /dev/null and b/assets/img/invite-6.png differ diff --git a/assets/img/invite-bg.png b/assets/img/invite-bg.png new file mode 100644 index 0000000..8b20e20 Binary files /dev/null and b/assets/img/invite-bg.png differ diff --git a/assets/img/invite-fy.png b/assets/img/invite-fy.png new file mode 100644 index 0000000..5c1dc9c Binary files /dev/null and b/assets/img/invite-fy.png differ diff --git a/assets/img/invite-sy.png b/assets/img/invite-sy.png new file mode 100644 index 0000000..21c1834 Binary files /dev/null and b/assets/img/invite-sy.png differ diff --git a/assets/img/invite-tg.png b/assets/img/invite-tg.png new file mode 100644 index 0000000..658733d Binary files /dev/null and b/assets/img/invite-tg.png differ diff --git a/assets/img/invite-yq.png b/assets/img/invite-yq.png new file mode 100644 index 0000000..18df6d1 Binary files /dev/null and b/assets/img/invite-yq.png differ diff --git a/assets/img/shengji.png b/assets/img/shengji.png new file mode 100644 index 0000000..ddb77c8 Binary files /dev/null and b/assets/img/shengji.png differ diff --git a/assets/scss/app.scss b/assets/scss/app.scss new file mode 100644 index 0000000..a0cb320 --- /dev/null +++ b/assets/scss/app.scss @@ -0,0 +1,611 @@ +// 样式重置 +table { + border-collapse: collapse; + + th, + td { + border-color: inherit; + } +} +body{ + font-family: 'Microsoft YaHei'; +} +p { + margin: 0; +} + +input { + background: transparent; + border: none; +} +ul { + padding: 0; + margin: 0; + list-style: none; +} +// 边框 +$dir1: (top t, right r, bottom b, left l); +$dir2: (top left tl, top right tr, bottom right br, bottom left bl); +// 颜色 +$color-list: ( + plain $plain, + dark $black, + light $light, + gray-1 $gray-1, + gray-2 $gray-2, + gray-3 $gray-3, + gray-4 $gray-4, + gray-5 $gray-5, + gray-6 $gray-6, + gray-7 $gray-7, + gray-8 $gray-8, + gray-9 $gray-9, + danger $red, + primary $blue, + warning $orange, + yellows $yellow, + warning-dark $orange-dark, + warning-light $orange-light, + success $green, + buy $buy, + sell $sell, + theme-1 $theme-1, + theme-2 $theme-2, + panel $panel, + panel-1 $panel-1, + panel-2 $panel-2, + panel-3 $panel-3, + panel-4 $panel-4, + panel-5 $panel-5, + panel-6 $panel-6, + form-panel-4 $form-panel-4, + form-panel-3 $form-panel-3, + tab-nav $tab-nav +); +// 颜色(不包含css变量) +$color-list2: ( + dark $black, + gray-1 $gray-1, + gray-2 $gray-2, + gray-3 $gray-3, + gray-4 $gray-4, + gray-5 $gray-5, + gray-6 $gray-6, + gray-7 $gray-7, + gray-8 $gray-8, + gray-9 $gray-9, + danger $red, + primary $blue, + warning $orange, + yellows $yellow, + warning-dark $orange-dark, + warning-light $orange-light, + success $green, + buy $buy, + sell $sell, + theme-1 $theme-1, + theme-2 $theme-2, + panel-5 $panel-5, + panel-6 $panel-6 +); +// 间距 +$pad: ( + base: $padding-base, + xs: $padding-xs, + ms: $padding-ms, + sm: $padding-sm, + md: $padding-md, + lg: $padding-lg, + xl: $padding-xl, +); + +// 公用样式 +.d-flex { + display: flex; +} + +.d-inline-flex { + display: inline-flex; +} + +.d-inline { + display: inline; +} + +.d-inline-block { + display: inline-block; +} + +.d-block { + display: block; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.justify-around { + justify-content: space-around; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.align-center { + align-items: center; +} + +.align-stretch { + align-items: stretch; +} + +.align-start { + align-items: flex-start; +} + +.align-end { + align-items: flex-end; +} + +.flex-fill { + flex: 1; +} + +.flex-col { + flex-direction: column; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.flex-shrink { + flex-shrink: 0; +} + +.float-r { + float: right; +} + +.float-l { + float: left; +} + +.clear { + &::after { + display: block; + content: ""; + clear: both; + } +} + +// 字体尺寸 +.fn-xs { + font-size: $font-size-xs; +} + +.fn-sm { + font-size: $font-size-sm; +} + +.fn-md { + font-size: $font-size-md; +} + +.fn-lg { + font-size: $font-size-lg; +} + +.fn-bold { + font-weight: 600; +} + +.fn-center { + text-align: center; +} + +.fn-left { + text-align: start; +} + +.fn-right { + text-align: end; +} + +.fn-middle { + vertical-align: middle; +} + +.fn-wrap { + white-space: normal; + word-break: break-word; +} + +.fn-nowrap { + white-space: nowrap; +} + +$i: 10; + +@while $i <=40 { + .fn-#{$i} { + font-size: $i + px; + } + + $i: $i + 1; +} + +$i: 1; + +@while $i<=4 { + .eps-#{$i} { + @include eps($i); + } + + $i: $i + 1; +} + +.color-default { + color: $text-color; +} + +@each $item1, $item2 in $color-list { + .color-#{$item1} { + color: $item2; + } + .bg-#{$item1} { + background-color: $item2; + } + .border-#{$item1} { + &::after { + border-color: $item2 !important; + } + } + .border-#{$item1}-original { + border-color: $item2 !important; + } +} +@each $item1, $item2 in $color-list2 { + .bg-#{$item1}-transparent { + background: rgba($item2, 0.1); + } +} + +.border { + // border: 1px solid $border-color; + position: relative; + + &::after { + @include harirline-common(); + border: 1px solid $border-color; + } +} +.bg-gradient-blue { + background: $gradient-blue; +} +.bg-gradient-red { + background: $gradient-red; +} +.bg-gradient-green { + background: $gradient-green; +} + +.border-original { + border: 1.02px solid $border-color; +} + +.border-original-0 { + border-width: 0px; +} + +@each $item1, $item2 in $dir1 { + .border-#{$item2} { + position: relative; + + &::after { + @include harirline-common(); + border-#{$item1}: 1px solid $border-color; + } + } + + .border-#{$item2}-original { + border-#{$item1}: 1.02px solid $border-color; + } + + .border-#{$item2}-0 { + &::after { + border-#{$item1}: 0 !important; + } + } + + .border-#{$item2}-original-0 { + border-#{$item1}: 0 !important; + } +} + +.rounded { + border-radius: $border-radius-md; +} + +.rounded-xs { + border-radius: $border-radius-xs; +} +.rounded-sm { + border-radius: $border-radius-sm; +} + +.rounded-md { + border-radius: $border-radius-md; +} + +.rounded-lg { + border-radius: $border-radius-lg; +} + +.rounded-max { + border-radius: $border-radius-max; +} + +@each $item1, $item2, $item3 in $dir2 { + .rounded-#{$item3}-xs { + border-#{$item1}-#{$item2}-radius: $border-radius-xs; + } + .rounded-#{$item3}-sm { + border-#{$item1}-#{$item2}-radius: $border-radius-sm; + } + + .rounded-#{$item3}-md { + border-#{$item1}-#{$item2}-radius: $border-radius-md; + } + + .rounded-#{$item3}-lg { + border-#{$item1}-#{$item2}-radius: $border-radius-lg; + } + + .rounded-#{$item3}-max { + border-#{$item1}-#{$item2}-radius: $border-radius-max; + } +} + +@each $idx, $var in $pad { + // 外间距 + .m-#{$idx} { + margin: $var !important; + } + + .m-x-#{$idx} { + margin-left: $var !important; + margin-right: $var !important; + } + + .m-y-#{$idx} { + margin-top: $var !important; + margin-bottom: $var !important; + } + + @each $item1, $item2 in $dir1 { + .m-#{$item2}-#{$idx} { + margin-#{$item1}: $var !important; + } + } + + // 内间距 + .p-#{$idx} { + padding: $var !important; + } + + .p-x-#{$idx} { + padding-left: $var !important; + padding-right: $var !important; + } + + .p-y-#{$idx} { + padding-top: $var !important; + padding-bottom: $var !important; + } + + @each $item1, $item2 in $dir1 { + .p-#{$item2}-#{$idx} { + padding-#{$item1}: $var !important; + } + } +} + +.m-x-auto { + margin-left: auto; + margin-right: auto; +} +.m-l-auto { + margin-left: auto; +} +.m-r-auto { + margin-right: auto; +} +.box-size { + box-sizing: border-box; +} + +// 尺寸 +$i: 1; + +@while $i <=100 { + .w-#{$i} { + width: $i + px; + } + .min-w-#{$i} { + min-width: $i + px; + } + .max-w-#{$i} { + max-width: $i + px; + } + + .h-#{$i} { + height: $i + px; + } + .min-h-#{$i} { + min-height: $i + px; + } + .max-h-#{$i} { + max-height: $i + px; + } + + $i: $i + 1; +} + +$i: 1; + +@while $i <=12 { + .w-#{$i}\/#{12} { + width: #{$i/12 * 100}#{"%"}; + } + + .h-#{$i}\/#{12} { + height: #{$i/12 * 100}#{"%"}; + } + + $i: $i + 1; +} + +.w-max { + width: 100%; +} + +.h-max { + height: 100%; +} + +$i: 1; + +@while $i <=4 { + .line-height-#{$i} { + line-height: $i; + } + + $i: $i + 1; +} + +// 公共布局 +.layout-page { + display: flex; + flex-direction: column; + height: 100vh; + background: $bg; +} + +.layout-main { + overflow: auto; + -webkit-overflow-scrolling: touch; + flex: 1; +} + +// 引入字体图标 +@font-face { + font-family: "iconfont"; + src: url("./assets/fontIcon/iconfont.eot?t=1594112878280"); + /* IE9 */ + src: url("./assets/fontIcon/iconfont.eot?t=1594112878280#iefix") format("embedded-opentype"), + /* IE6-IE8 */ url("./assets/fontIcon/iconfont.woff?t=1594112878280") format("woff"), + url("./assets/fontIcon/iconfont.ttf?t=1594112878280") format("truetype"), + /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ + url("./assets/fontIcon/iconfont.svg?t=1594112878280#iconfont") format("svg"); + /* iOS 4.1- */ +} + +.iconfont { + font-family: "iconfont" !important; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +// 富文本容器 +.edit-content { + img { + max-width: 100%; + height: auto; + } +} + +.overflow-hidden { + overflow: hidden; +} + +.overflow-scroll { + overflow: auto; +} + +// 背景选中 +.link-active { + &:active { + background: $panel-1; + } +} +.color-white{ + color: white; + } +// 拟态投影 panel-4 +.shadow-panel-4 { + box-shadow: var(--mimicry-shadow); +} +.shadow-panel-nei { + box-shadow: var(--nei-shadow); +} +.shadow-panel-nei-5 { + box-shadow: var(--nei-shadow-5); +} + +.box-shadow { + box-shadow: $shadow; +} +.transition-default { + transition: all 0.3s; +} + +navigator { + display: inline-block; +} +// picker +.lb-picker-header { + &::before, + &::after { + border: none !important; + } +} +.lb-picker-header-actions { + background-color: $panel-3; +} +.uni-picker-view-indicator { + &::before, + &::after { + border: none !important; + } +} +.lb-picker-content { + background-color: $panel-4 !important; +} +.uni-picker-view-mask { + background: var(--picker-mask); + background-position: top, bottom; + background-size: 100% 102px; + background-repeat: no-repeat; +} +.lb-picker-action-confirm-text { + color: $green !important; +} + +.app-nav { + height: $status-bar; +} +.padding-nav { + padding-top: $status-bar; +} +@import "./vant.scss"; diff --git a/assets/scss/base.scss b/assets/scss/base.scss new file mode 100644 index 0000000..85b73a6 --- /dev/null +++ b/assets/scss/base.scss @@ -0,0 +1,3 @@ +@import './theme.scss'; +@import './size.scss'; +@import './mixin.scss'; \ No newline at end of file diff --git a/assets/scss/mixin.scss b/assets/scss/mixin.scss new file mode 100644 index 0000000..f97a77e --- /dev/null +++ b/assets/scss/mixin.scss @@ -0,0 +1,22 @@ +// 边框 +@mixin harirline-common { + position: absolute; + box-sizing: border-box; + display: block; + content: ' '; + pointer-events: none; + border-radius: inherit; + top: -50%; + right: -50%; + bottom: -50%; + left: -50%; + transform: scale(0.5); +} + +// 溢出省略 +@mixin eps($num:1) { + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: $num; + overflow: hidden; +} diff --git a/assets/scss/size.scss b/assets/scss/size.scss new file mode 100644 index 0000000..fcf4023 --- /dev/null +++ b/assets/scss/size.scss @@ -0,0 +1,24 @@ +// 字体尺寸 +$font-size-xs: 10px; +$font-size-sm: 12px; +$font-size-md: 14px; +$font-size-lg: 16px; +$font-weight-bold: 500; + +$border-radius-xs: 6px; +$border-radius-sm: 14px; +$border-radius-md: 20px; +$border-radius-lg: 26px; +$border-radius-max: 50%; + +// 间距 +$padding-base: 4px; +$padding-xs: 6px; +$padding-ms: 8px; +$padding-sm: 12px; +$padding-md: 15px; +$padding-lg: 20px; +$padding-xl: 25px; + +// 状态栏高度 +$status-bar: var(--status-bar-height); diff --git a/assets/scss/theme.scss b/assets/scss/theme.scss new file mode 100644 index 0000000..739b5c4 --- /dev/null +++ b/assets/scss/theme.scss @@ -0,0 +1,85 @@ +// -------不可修改↓-------- +$black: #000 !default; +$white: #fff !default; +$gray-1: #f7f8fa !default; +$gray-2: #f2f3f5 !default; +$gray-3: #ebedf0 !default; +$gray-4: #dcdee0 !default; +$gray-5: #c8c9cc !default; +$gray-6: #888894 !default; +$gray-7: #646566 !default; +$gray-8: #323233 !default; +$gray-9: #202635 !default; +$red: #ce5b67 !default; +$blue: #1989fa !default; +$orange: #ff976a !default; +$yellow: #f8b936 !default; +$orange-dark: #ed6a0c !default; +$orange-light: #fffbe8 !default; +$green: #60c08c !default; +// 采用字体样式 +// $base-font-family: -apple-system, +// BlinkMacSystemFont, +// "Helvetica Neue", +// Helvetica, +// Segoe UI, +// Arial, +// Roboto, +// "PingFang SC", +// "Hiragino Sans GB", +// "Microsoft Yahei", +// sans-serif; +// $price-integer-font-family: Avenir-Heavy, +// PingFang SC, +// Helvetica Neue, +// Arial, +// sans-serif; +// -------------------- +// ------随便你改↓------- +$plain:var(--plain,#fff); +$theme-1: #EABB71 !default; +$theme-2: #f0c947 !default; +// $theme-1:#ff4d5c !default; +$buy: #60c08c !default; +$sell: #ea3131 !default; +$panel: var(--panel,#36332c) !default; +$panel-1: var(--panel-1,#2A2A38) !default; +$panel-2: var(--panel-2,#343445) !default; +$panel-3: var(--panel-3,#393948) !default; +$panel-4: var(--panel-4,#484859) !default; +$panel-5: #202635 !default; +$panel-6: #646566 !default; +$form-panel-3: var(--form-panel-3,#393948) !default; +$form-panel-4: var(--form-panel-4,#484859) !default; +$text-color: var(--text-color,#9FA6B5) !default; +$active-color: $gray-2 !default; +$active-opacity: 0.7 !default; +$disabled-opacity: 0.5 !default; +$text-link-color: #576b95 !default; +$light:var(--light,#333); + +$bg-top:var(--bg-top,#383847); +$bg-bottom:var(--bg-bottom,#242230); +$bg: linear-gradient(to bottom,$bg-top,$bg-bottom); +$tab-nav:var(--tab-nav,#31313F); + +// 边框 + +$border-color: var(--border-color,#49495F) !default; + +// 阴影 +$shadow:var(--shadow, 0px 0px 33px 0px rgba(34, 34, 44, 0.25)); + +// 渐变 +$gradient-blue:linear-gradient(315deg, #4048EF 0%, #5A7BEF 100%); +$gradient-green:linear-gradient(328deg, #2FAD66 0%, #9DE686 100%); +$gradient-red: linear-gradient(270deg, #F15887 0%, #FE9B86 100%); +$gradient-orange: linear-gradient(to bottom, #ef9b7e 0%, #ea673e 100%); +$gradient-yellow: linear-gradient(to right, #f6c769 0%, #f9ba44 100%); + +// 底部阴影 +$tab-nav-shadow:var(--tab-nav-shadow,0px -7px 20px 0px rgba(37, 37, 48, 0.83)); + +// 按钮颜色 +$bg-buy:#60c08c; +$bg-sell:#ce5b67; diff --git a/assets/scss/vant.scss b/assets/scss/vant.scss new file mode 100644 index 0000000..ba7b54c --- /dev/null +++ b/assets/scss/vant.scss @@ -0,0 +1,226 @@ +:root { + --tabs-nav-background-color: transparent; + --button-plain-background-color: transparent; + --button-primary-background-color: #60c08c; + --button-primary-border-color: #60c08c; + --button-default-background-color: $panel-3; + --tab-text-color:#888894; + --button-default-border-color:#49495F; + --button-default-background-color:transparent; +} + +.van-toast__loading { + color: $theme-1; +} + +// nav-bar +.van-nav-bar__left { + .van-nav-bar__arrow { + color: $text-color; + font-weight: bold; + } +} + +.van-hairline--bottom::after { + border-color: $border-color; +} + +.van-nav-bar__content { + min-height: var(--nav-bar-height, 44px); +} + +.nav-timename{ + .van-tab--active{ + .van-ellipsis{ + font-weight: bold; + font-size: 16px; + } + } + .van-tabs__line { + background-color: transparent; + height: 6px; + &::before { + top: -4px !important; + width: 40px !important; + height: 20px !important; + // background: url(~@/assets/img/border_bottom.png) no-repeat !important; + + } + } + .van-sticky{ + z-index: 1; + .van-tabs__wrap { + border-bottom: 1px solid #f1a68c; + overflow: visible; + } + } +} +.hg { + .van-tabs__line{ + &::before { + background: url(~@/assets/img/border_bottom.png) no-repeat !important; + background-size: 100% 100% !important; + }} + .van-tab--active{ + .van-ellipsis{ + color: #333 !important; + } + } +} +.sun { + .van-tabs__line{ + &::before { + background: url(~@/assets/img/border_bottom_g.png) no-repeat !important; + background-size: 100% 100% !important; + }} + .van-tab--active{ + .van-ellipsis{ + color: #f2f2f2 !important; + } + } +} +.m-t-md .d-inline-block .rounded-lg .van-button{ + box-shadow: 1px 5px 12px -2px #ef9b7e ; +} +.layout-page { + .van-swipe, + .van-tab--active { + // color: var(--nav-tab-active,#fff); + } + + .van-nav-bar__title { + color: $light; + } + + .van-nav-bar { + background-color: transparent; + &.van-hairline--bottom:after { + border-bottom-width: 0; + } + } + + .van-popup { + background-color: $panel-3; + } + .van-popup--left { + background: $bg; + } + .van-field__input { + color: $light; + } + + .van-steps { + background-color: transparent; + } + + .van-stepper__minus, + .van-stepper__plus { + background-color: $panel-3; + color: $light; + } + + .van-stepper__input { + background-color: $panel-3; + color: $light; + } + + .van-count-down { + color: $light; + } + + // search + .van-search { + background-color: transparent !important; + + .van-search__content { + background-color: $panel-4 !important; + border-radius: 20px; + } + } + .van-hairline--bottom:after, + .van-hairline--left:after, + .van-hairline--right:after, + .van-hairline--surround:after, + .van-hairline--top-bottom:after, + .van-hairline--top:after, + .van-hairline:after { + border-color: var(--border-color); + } + .van-tag { + background-color: transparent; + color: $light; + } + .van-tab { + font-size: $font-size-md; + } + .van-tabs__line { + background-color: transparent; + height: 6px; + &::before { + content: ""; + display: block; + position: absolute; + left: 50%; + top: 0; + transform: translateX(-50%); + width: 6px; + height: 6px; + border-radius: 50%; + background-color: var(--nav-tab-active,#fff); + } + } + .van-search__action, + .van-cell { + color: $light; + } + .van-button--default { + .van-button__text { + color: $text-color; + } + &.van-dialog__confirm{ + .van-button__text { + color: $blue; + } + } + } + +} +.vant-toast-index{ + position: relative; + z-index: 99999999; +} +// picker +.van-picker { + background-color: $panel-4; +} + +.van-picker-column__item { + color: $light; +} + +[class*="van-hairline"]::after { + border-color: $border-color; +} + +.van-number-keyboard__keys { + color: $gray-9; +} + +.vant-popup-index { + position: fixed; + z-index: 6; +} + +.default .van-button { + color: $black !important; +} + +.layout-page { + .van-tabs__wrap--scrollable .van-tabs__nav--complete { + padding-left: 0; + padding-right: 0; + } +} +::v-deep .tab-active-class{ + color: $theme-1!important; +} diff --git a/components/README.md b/components/README.md new file mode 100644 index 0000000..ab8e954 --- /dev/null +++ b/components/README.md @@ -0,0 +1,11 @@ +## 引入插件 +`在main.js中添加` + +import dropdown from './components/dropdown/dt-dropDown.vue' +Vue.component('dropdown', dropdown) + + + +## 使用 + + diff --git a/components/bing-progress/bing-progress.css b/components/bing-progress/bing-progress.css new file mode 100644 index 0000000..67ed20b --- /dev/null +++ b/components/bing-progress/bing-progress.css @@ -0,0 +1,70 @@ +.bing-progress { + position: relative; + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: row; + align-items: center; + justify-content: space-around; + overflow: hidden; +} +.bp-marea { + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + position: absolute; + left: 0; + top: 0; + flex-direction: row; + align-items: center; + text-align: center; + justify-content: space-around; + background-color: rgba(0,0,0,0); + z-index: 6; +} +.bp-mview, +.bp-handle { + position: absolute; + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: row; + align-items: center; + text-align: center; + justify-content: center; + z-index: 5; + overflow: hidden; +} +.bp-handle-text { + text-align: center; + z-index: 5; + overflow: hidden; +} +.bp-bar_max { + position: absolute; + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: row; + align-items: center; + margin: 0; + padding: 0; + z-index: 1; + overflow: hidden; +} +.bp-bar_active { + position: absolute; + z-index: 3; + overflow: hidden; +} +.bp-bar_sub_active { + position: absolute; + z-index: 2; + overflow: hidden; +} +.bp-value { + position: absolute; + text-align: center; + overflow: hidden; + z-index: 4; +} \ No newline at end of file diff --git a/components/bing-progress/bing-progress.vue b/components/bing-progress/bing-progress.vue new file mode 100644 index 0000000..854fd88 --- /dev/null +++ b/components/bing-progress/bing-progress.vue @@ -0,0 +1,727 @@ + + + + + diff --git a/components/dt-dropdown/dt-dropdown.vue b/components/dt-dropdown/dt-dropdown.vue new file mode 100644 index 0000000..082947e --- /dev/null +++ b/components/dt-dropdown/dt-dropdown.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/components/lb-picker/README.md b/components/lb-picker/README.md new file mode 100644 index 0000000..4d05078 --- /dev/null +++ b/components/lb-picker/README.md @@ -0,0 +1,454 @@ +

+ + + + + + + + + + + + + + + + + + + + + +

+ +插件市场里面的 picker 选择器不满足自己的需求,所以自己写了一个简单的 picker 选择器,可扩展、可自定义,一般满足日常需要。 +Github:[uni-lb-picker](https://github.com/liub1934/uni-lb-picker) +插件市场:[uni-lb-picker](https://ext.dcloud.net.cn/plugin?id=1111) +H5 Demo:[点击预览](https://github.liubing.me/uni-lb-picker) + +> 如果问题最好去 github 反馈,插件市场评论区留下五星好评即可,[点我去反馈](https://github.com/liub1934/uni-lb-picker/issues/new) + +> **由于之前`cancel`拼写失误,写成了`cancle`,`v1.08`现已修正,如果之前版本有使用`cancel`事件的,更新后请及时修正。** + +## 兼容性 + +App + H5 + 各平台小程序(快应用及 360 未测试,nvue 待支持) + +## 功能 + +1、单选 +2、多级联动,非多级联动,理论支持任意级数 +3、省市区选择,基于多级联动 +4、自定义选择器头部确定取消按钮颜色及插槽支持 +5、选择器可视区自定义滚动个数 +6、自定义数据字段,满足不同人的需求 +7、自定义选择器样式 +8、单选及非联动选择支持扁平化的简单数据,如下形式: + +```javascript +// 单选列表 +list1: ['选项1', '选项2', '选项2'], +// 非联动选择列表 +list2: [ + ['选项1', '选项2', '选项3'], + ['选项11', '选项22', '选项33'], + ['选项111', '选项222', '选项333'] +] +``` + +## 引入插件 + +单独引入,在需要使用的页面上 import 引入即可 + +```html + + + +``` + +全局引入,`main.js`中 import 引入并注册即可全局使用 + +```jsvascript +import LbPicker from '@/components/lb-picker' +Vue.component("lb-picker", LbPicker) +``` + +easycom 引入 + +`pages.json`加上如下配置: + +```json +"easycom": { + "autoscan": true, + "custom": { + "lb-picker": "@/components/lb-picker/index.vue" + } +} +``` + +npm 安装引入: + +```shell +npm install uni-lb-picker +``` + +```jsvascript +import LbPicker from 'uni-lb-picker' +``` + +## 选择器数据格式 + +### 单选 + +常规数据 + +```javascript +list: [ + { + label: '选项1', + value: '1' + }, + { + label: '选项2', + value: '2' + } +] +``` + +扁平化简单数据 + +```javascript +list: ['选项1', '选项2'] +``` + +### 多级联动 + +```javascript +list: [ + { + label: '选项1', + value: '1', + children: [ + { + label: '选项1-1', + value: '1-1', + children: [ + { + label: '选项1-1-1', + value: '1-1-1' + } + ] + } + ] + } +] +``` + +### 非联动选择 + +常规数据 + +```javascript +list: [ + [ + { label: '选项1', value: '1' }, + { label: '选项2', value: '2' }, + { label: '选项3', value: '3' } + ], + [ + { label: '选项11', value: '11' }, + { label: '选项22', value: '22' }, + { label: '选项33', value: '33' } + ], + [ + { label: '选项111', value: '111' }, + { label: '选项222', value: '222' }, + { label: '选项333', value: '333' } + ] +] +``` + +扁平化简单数据 + +```javascript +list: [ + ['选项1', '选项2', '选项3'], + ['选项11', '选项22', '选项33'], + ['选项111', '选项222', '选项333'] +] +``` + +## 调用显示选择器 + +通过`ref`形式手动调用`show`方法显示,隐藏同理调用`hide` + +```html + +``` + +```javascript +this.$refs.picker.show() // 显示 +this.$refs.picker.hide() // 隐藏 +``` + +`v1.1.3`新增,将需要点击的元素包裹在`lb-picker`中即可。 + +```html + + + +``` + +## 绑定值及设置默认值 + +支持 vue 中`v-model`写法绑定值,无需自己维护选中值的索引。 + +```javascript + + + +data () { + return { + value1: '' // 单选 + value2: [] // 多列联动选择 + } +} +``` + +## 多个选择器 + +通过设置不同的`ref`,然后调用即可 + +```javascript + + + +this.$refs.picker1.show() // picker1显示 +this.$refs.picker2.show() // picker2显示 +``` + +## 省市区选择 + +省市区选择是基于多列联动选择,数据来源:[https://github.com/modood/Administrative-divisions-of-China](https://github.com/modood/Administrative-divisions-of-China), +省市区文件位于`/pages/demos/area-data-min.js`,自行引入即可,可参考`demo3省市区选择`, +也可使用自己已有的省市区数据,如果数据字段不一样,也可以自定义,参考下方自定义数据字段。 + +## 自定义数据字段 + +为了满足不同人的需求,插件支持自定义数据字段名称, 插件默认的数据字段如下形式: + +```javascript +list: [ + { + label: '选择1', + value: 1, + children: [] + }, + { + label: '选择1', + value: 1, + children: [] + } +] +``` + +如果你的数据字段和上面不一样,如下形式: + +```javascript +list: [ + { + text: '选择1', + id: 1, + child: [] + }, + { + text: '选择1', + id: 1, + child: [] + } +] +``` + +通过设置参数中的`props`即可,如下所示: + +```javascript + + +data () { + return { + myProps: { + label: 'text', + value: 'id', + children: 'child' + } + } +} +``` + +## 插槽使用 + +选择器支持一些可自定义化的插槽,如选择器的取消和确定文字按钮,如果需要对其自定义处理的话,比如加个 icon 图标之类的,可使用插槽,使用方法如下: + +```html + + 我是自定义取消 + 我是自定义确定 + +``` + +也可参考示例中的`demo5`,自定义插槽元素样式交给开发者自由调整,插槽仅提供预留位置。 + +其他插槽见下。 + +## 参数及事件 + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +| :---------------------- | :--------------------------------------------------------------------------------------------------------------------------------- | :------------------ | :--------------------------------------------------------------- | :------------------------------------------------ | +| value/v-model | 绑定值,联动选择为 Array 类型 | String/Number/Array | - | - | +| mode | 选择器类型,支持单列,多列联动 | String | selector 单选/multiSelector 多级联动/unlinkedSelector 多级非联动 | selector | +| list | 选择器数据(v1.0.7 单选及非联动多选支持扁平数据:['选项 1', '选项 2']) | Array | - | - | +| level | 多列联动层级,仅 mode 为 multiSelector 有效 | Number | - | 2 | +| props | 自定义数据字段 | Object | - | {label:'label',value:'value',children:'children'} | +| cancel-text | 取消文字 | String | - | 取消 | +| cancel-color | 取消文字颜色 | String | - | #999 | +| confirm-text | 确定文字 | String | - | 确定 | +| confirm-color | 确定文字颜色 | String | - | #007aff | +| empty-text | (v1.0.7 新增)选择器列表为空的时候显示的文字 | String | - | 暂无数据 | +| empty-color | (v1.0.7 新增)暂无数据文字颜色 | String | - | #999 | +| column-num | 可视滚动区域内滚动个数,最好设置奇数值 | Number | - | 5 | +| radius | 选择器顶部圆角,支持 rpx,如 radius="10rpx" | String | - | - | +| ~~column-style~~ | ~~选择器默认样式(已弃用,见下方自定义样式说明)~~ | Object | - | - | +| ~~active-column-style~~ | ~~选择器选中样式(已弃用,见下方自定义样式说明)~~ | Object | - | - | +| loading | 选择器是否显示加载中,可使用 loading 插槽自定义加载效果 | Boolean | - | - | +| mask-color | 遮罩层颜色 | String | - | rgba(0, 0, 0, 0.4) | +| show-mask | (v1.1.0 新增)是否显示遮罩层 | Boolean | true/false | true | +| close-on-click-mask | 点击遮罩层是否关闭选择器 | Boolean | true/false | true | +| ~~change-on-init~~ | ~~(v1.0.7 已弃用)初始化时是否触发 change 事件~~ | Boolean | true/false | - | +| dataset | (v1.0.7 新增)可以向组件中传递任意的自定义的数据(对象形式数据),如`:dataset="{name:'test'}"`,在`confirm`或`change`事件中可以取到 | Object | - | - | +| show-header | (v1.0.8 新增)是否显示选择器头部 | Boolean | - | true | +| inline | (v1.0.8 新增)inline 模式,开启后默认显示选择器,无需点击弹出,可以配合`show-header`一起使用 | Boolean | - | - | +| z-index | (v1.0.9 新增)选择器层级,遮罩层默认-1 | Number | - | 999 | + +### 方法 + +| 方法名 | 说明 | 参数 | 返回值 | +| :------------- | :------------------------------------- | :-------------- | :----------------------------------------------------------------------------------------------------------- | +| show | 打开选择器 | - | | +| hide | 关闭选择器 | - | | +| getColumnsInfo | (v1.1.0 新增)根据 value 获取选择器信息 | 绑定值的`value` | 同`change` `confirm`回调参数,如果传入的`value`获取不到信息则只返回一个含有`dataset`的对象,具体自行打印查看 | + +### Events + +| 事件名称 | 说明 | 回调参数 | +| :------- | :--------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| show | 选择器打开时触发 | - | +| hide | 选择器隐藏时触发 | - | +| change | 选择器滚动时触发,此时不会改变绑定的值 | `{ index, item, value, change }` `index`触发滚动后新的索引,单选时是具体的索引值,多列联动选择时为数组。`item`触发滚动后新的的完整内容,包括`label`、`value`等,单选时为对象,多列选择时为数组对象。`value`触发滚动后新的 value 值,单列选择时为具体值,多列联动选择时为数组。`change`触发事件的类型,详情参考下面的 change 事件备注 | +| confirm | 点击选择器确定时触发,此时会改变绑定的值 | 同上`change`事件说明 | +| cancel | 点击选择器取消时触发 | 同上`change`事件说明 | + +### `change` 事件备注 + +如果绑定的值是空的,`change`触发后里面的内容都是列表的第一项。 +`change`事件会在以下情况触发: + +- 初始化 +- 绑定值 value 变化 +- 选择器 list 列表变化 +- 滚动选择器 + +以上情况会在回调函数中都可以取到`change`变化的类型,对应上面的情况包括以下: + +- `init` +- `value` +- `list` +- `scroll` + +根据这些类型大家可以在`change`的时候按需处理自己的业务逻辑,`init`现在指挥在调用选择器弹出的时候触发。 +下面的说明情况已失效,如需要在页面显示的时候根据`value`的值显示相应的中文,调用`v1.10`新增的方法`getColumnsInfo`,传入绑定的值即可获取到你想要的所有信息。 +~~比如一种常见的情况,有默认值的时候需要显示默认值的文字,此时可以`change`事件中判断`change`的类型是否是`init`,如果是的话可以取事件回调中的`item`进行显示绑定值对应的文字信息。~~ + +```javascript +handleChange (e) { + if (e.change === 'init') { + console.log(e.item.label) // 单选 选项1 + console.log(e.item.map(item => item.label).join('-')) // 多选 选项1-选项11 + } +} +``` + +### 插槽 + +| 插槽名 | 说明 | +| :------------ | :--------------------- | +| cancel-text | 选择器取消文字插槽 | +| action-center | 选择器顶部中间插槽 | +| confirm-text | 选择器确定文字插槽 | +| loading | 选择器 loading 插槽 | +| empty | 选择器 空数据 插槽 | +| header-top | 选择器头部顶部插槽 | +| header-bottom | 选择器头部底部插槽 | +| picker-top | 选择器滚动部分顶部插槽 | +| picker-bottom | 选择器滚动部分底部插槽 | + +### 选择器自定义样式 + +原先的`column-style`和`active-column-style`已弃用,如需修改默认样式及选中样式参考`demo9` + +```css + +``` + +### 获取选中值的文字 + +`@confirm`事件中可以拿到: + +单选: + +```javascript +handleConfirm (e) { + console.log(e.item.label) // 选项1 +} +``` + +联动选择: + +```javascript +handleConfirm (e) { + console.log(e.item.map(item => item.label).join('-')) // 选项1-选项11 +} +``` + +## Tips + +微信小程序端,滚动时在 iOS 自带振动反馈,可在系统设置 -> 声音与触感 -> 系统触感反馈中关闭 + +## 其他 + +其他功能参考示例 Demo 代码。 diff --git a/components/lb-picker/index.vue b/components/lb-picker/index.vue new file mode 100644 index 0000000..fb63720 --- /dev/null +++ b/components/lb-picker/index.vue @@ -0,0 +1,354 @@ + + + + + diff --git a/components/lb-picker/mixins/index.js b/components/lb-picker/mixins/index.js new file mode 100644 index 0000000..de3965d --- /dev/null +++ b/components/lb-picker/mixins/index.js @@ -0,0 +1,46 @@ +import { getColumns } from '../utils' +export const commonMixin = { + data () { + return { + isConfirmChange: false, + indicatorStyle: `height: 34px` + } + }, + created () { + this.init('init') + }, + methods: { + init (changeType) { + if (this.list && this.list.length) { + const column = getColumns({ + value: this.value, + list: this.list, + mode: this.mode, + props: this.props, + level: this.level + }) + const { columns, value, item, index } = column + this.selectValue = value + this.selectItem = item + this.pickerColumns = columns + this.pickerValue = index + this.$emit('change', { + value: this.selectValue, + item: this.selectItem, + index: this.pickerValue, + change: changeType + }) + } + } + }, + watch: { + value () { + if (!this.isConfirmChange) { + this.init('value') + } + }, + list () { + this.init('list') + } + } +} diff --git a/components/lb-picker/pickers/multi-selector-picker.vue b/components/lb-picker/pickers/multi-selector-picker.vue new file mode 100644 index 0000000..24c8b9c --- /dev/null +++ b/components/lb-picker/pickers/multi-selector-picker.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/components/lb-picker/pickers/selector-picker.vue b/components/lb-picker/pickers/selector-picker.vue new file mode 100644 index 0000000..4f82b2a --- /dev/null +++ b/components/lb-picker/pickers/selector-picker.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/components/lb-picker/pickers/unlinked-selector-picker.vue b/components/lb-picker/pickers/unlinked-selector-picker.vue new file mode 100644 index 0000000..1dd1184 --- /dev/null +++ b/components/lb-picker/pickers/unlinked-selector-picker.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/components/lb-picker/style/picker-item.scss b/components/lb-picker/style/picker-item.scss new file mode 100644 index 0000000..f5eb2fa --- /dev/null +++ b/components/lb-picker/style/picker-item.scss @@ -0,0 +1,30 @@ +/deep/ .uni-picker-view-content{ + display: flex; + flex-direction: column; + align-items: center; +} +.lb-picker-column { + height: 34px; + /* #ifndef APP-NVUE */ + display: flex; + box-sizing: border-box; + white-space: nowrap; + overflow: hidden; + /* #endif */ + flex-direction: row; + align-items: center; + // justify-content: center; + width: 31%; +} + +.lb-picker-column-label { + font-size: 16px; + text-align: center; + text-overflow: ellipsis; + transition-property: color; + transition-duration: 0.3s; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: #666; +} \ No newline at end of file diff --git a/components/lb-picker/style/picker.scss b/components/lb-picker/style/picker.scss new file mode 100644 index 0000000..368b7ac --- /dev/null +++ b/components/lb-picker/style/picker.scss @@ -0,0 +1,179 @@ +.lb-picker { + position: relative; +} + +.lb-picker-mask { + background-color: rgba(0, 0, 0, 0.0); + position: fixed; + top: 0; + right: 0; + left: 0; + bottom: 0; +} + +.lb-picker-mask-animation { + transition-property: background-color; + transition-duration: 0.3s; +} + +.lb-picker-container { + position: relative; +} + +.lb-picker-container-fixed { + position: fixed; + left: 0; + right: 0; + bottom: 0; + transform: translateY(100%); + /* #ifndef APP-PLUS */ + overflow: hidden; + /* #endif */ +} + +.lb-picker-container-animation { + transition-property: transform; + transition-duration: 0.3s; +} + +.lb-picker-container-show { + transform: translateY(0); +} + +.lb-picker-header { + position: relative; + background-color: #fff; + /* #ifdef APP-NVUE */ + border-bottom-width: 1px; + border-bottom-style: solid; + border-bottom-color: #e5e5e5; + border-top-width: 1px; + border-top-style: solid; + border-top-color: #e5e5e5; + /* #endif */ + /* #ifndef APP-NVUE */ + box-sizing: border-box; + /* #endif */ + +} + +.lb-picker-header-actions { + height: 45px; + /* #ifndef APP-NVUE */ + box-sizing: border-box; + display: flex; + /* #endif */ + flex-direction: row; + justify-content: space-between; + flex-wrap: nowrap; +} + +/* #ifndef APP-PLUS */ +.lb-picker-header::before { + content: ""; + position: absolute; + left: 0; + top: 0; + right: 0; + height: 1px; + clear: both; + border-bottom: 1px solid #e5e5e5; + color: #e5e5e5; + transform-origin: 0 100%; + transform: scaleY(0.5); +} + +.lb-picker-header::after { + content: ""; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 1px; + clear: both; + border-bottom: 1px solid #e5e5e5; + color: #e5e5e5; + transform-origin: 0 100%; + transform: scaleY(0.5); +} + +/* #endif */ + +.lb-picker-action { + padding-left: 14px; + padding-right: 14px; + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: row; + align-items: center; + justify-content: center; +} + +.lb-picker-action-item { + text-align: center; + height: 45px; + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + align-items: center; +} + +.lb-picker-action-cancel-text { + font-size: 16px; + color: #999; +} + +.lb-picker-action-confirm-text { + font-size: 16px; + color: #007aff; +} + +.lb-picker-content { + position: relative; + background-color: #fff; +} + +.lb-picker-content-main { + position: relative; + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + justify-content: center; + flex-direction: column; +} + +.lb-picker-loading, +.lb-picker-empty { + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + justify-content: center; + align-items: center; +} + +.lb-picker-empty-text { + color: #999; + font-size: 16px; +} + +.lb-picker-loading-img { + width: 25px; + height: 25px; + /* #ifndef APP-NVUE */ + animation: rotating 2s linear infinite; + /* #endif */ +} + +/* #ifndef APP-NVUE */ +@keyframes rotating { + 0% { + transform: rotate(0deg) + } + + to { + transform: rotate(1turn) + } +} + +/* #endif */ \ No newline at end of file diff --git a/components/lb-picker/utils.js b/components/lb-picker/utils.js new file mode 100644 index 0000000..5330d9b --- /dev/null +++ b/components/lb-picker/utils.js @@ -0,0 +1,110 @@ +/** + * 判断是否是对象 + * + * @export + * @param {*} val + * @returns true/false + */ +export function isObject (val) { + return Object.prototype.toString.call(val) === '[object Object]' +} + +/** + * 根据value获取columns信息 + * + * @export + * @param {*} { value, list, mode, props, level } + * @param {number} [type=2] 查询不到value数据返回数据类型 1空值null 2默认第一个选项 + * @returns + */ +export function getColumns ({ value, list, mode, props, level }, type = 2) { + let pickerValue = [] + let pickerColumns = [] + let selectValue = [] + let selectItem = [] + let columnsInfo = null + switch (mode) { + case 'selector': + let index = list.findIndex(item => { + return isObject(item) ? item[props.value] === value : item === value + }) + if (index === -1 && type === 1) { + columnsInfo = null + } else { + index = index > -1 ? index : 0 + selectItem = list[index] + selectValue = isObject(selectItem) + ? selectItem[props.value] + : selectItem + pickerColumns = list + pickerValue = [index] + columnsInfo = { + index: pickerValue, + value: selectValue, + item: selectItem, + columns: pickerColumns + } + } + break + case 'multiSelector': + const setPickerItems = (data = [], index = 0) => { + if (!data.length) return + const defaultValue = value || [] + if (index < level) { + const value = defaultValue[index] || '' + let i = data.findIndex(item => item[props.value] === value) + if (i === -1 && type === 1) return + i = i > -1 ? i : 0 + pickerValue[index] = i + pickerColumns[index] = data + if (data[i]) { + selectValue[index] = data[i][props.value] + selectItem[index] = data[i] + setPickerItems(data[i][props.children] || [], index + 1) + } + } + } + setPickerItems(list) + if (!selectValue.length && type === 1) { + columnsInfo = null + } else { + columnsInfo = { + index: pickerValue, + value: selectValue, + item: selectItem, + columns: pickerColumns + } + } + break + case 'unlinkedSelector': + list.forEach((item, i) => { + let index = item.findIndex(item => { + return isObject(item) + ? item[props.value] === value[i] + : item === value[i] + }) + if (index === -1 && type === 1) return + index = index > -1 ? index : 0 + const columnItem = list[i][index] + const valueItem = isObject(columnItem) + ? columnItem[props.value] + : columnItem + pickerValue[i] = index + selectValue[i] = valueItem + selectItem[i] = columnItem + }) + pickerColumns = list + if (!selectValue.length && type === 1) { + columnsInfo = null + } else { + columnsInfo = { + index: pickerValue, + value: selectValue, + item: selectItem, + columns: pickerColumns + } + } + break + } + return columnsInfo +} diff --git a/components/tf-verify-img/img/tf-arrows.png b/components/tf-verify-img/img/tf-arrows.png new file mode 100644 index 0000000..f10c1a7 Binary files /dev/null and b/components/tf-verify-img/img/tf-arrows.png differ diff --git a/components/tf-verify-img/img/tf-close.png b/components/tf-verify-img/img/tf-close.png new file mode 100644 index 0000000..f31a385 Binary files /dev/null and b/components/tf-verify-img/img/tf-close.png differ diff --git a/components/tf-verify-img/tf-verify-img.vue b/components/tf-verify-img/tf-verify-img.vue new file mode 100644 index 0000000..e49107f --- /dev/null +++ b/components/tf-verify-img/tf-verify-img.vue @@ -0,0 +1,267 @@ + + + + + diff --git a/components/uni-badge/uni-badge.vue b/components/uni-badge/uni-badge.vue new file mode 100644 index 0000000..dc6f6e6 --- /dev/null +++ b/components/uni-badge/uni-badge.vue @@ -0,0 +1,148 @@ + + + + + \ No newline at end of file diff --git a/components/uni-calendar/calendar.js b/components/uni-calendar/calendar.js new file mode 100644 index 0000000..b8d7d6f --- /dev/null +++ b/components/uni-calendar/calendar.js @@ -0,0 +1,546 @@ +/** +* @1900-2100区间内的公历、农历互转 +* @charset UTF-8 +* @github https://github.com/jjonline/calendar.js +* @Author Jea杨(JJonline@JJonline.Cn) +* @Time 2014-7-21 +* @Time 2016-8-13 Fixed 2033hex、Attribution Annals +* @Time 2016-9-25 Fixed lunar LeapMonth Param Bug +* @Time 2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year +* @Version 1.0.3 +* @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0] +* @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0] +*/ +/* eslint-disable */ +var calendar = { + + /** + * 农历1900-2100的润大小信息表 + * @Array Of Property + * @return Hex + */ + lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, // 1900-1909 + 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, // 1910-1919 + 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, // 1920-1929 + 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, // 1930-1939 + 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, // 1940-1949 + 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, // 1950-1959 + 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, // 1960-1969 + 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, // 1970-1979 + 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, // 1980-1989 + 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0, // 1990-1999 + 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, // 2000-2009 + 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, // 2010-2019 + 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, // 2020-2029 + 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, // 2030-2039 + 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, // 2040-2049 + /** Add By JJonline@JJonline.Cn**/ + 0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, // 2050-2059 + 0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, // 2060-2069 + 0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, // 2070-2079 + 0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, // 2080-2089 + 0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, // 2090-2099 + 0x0d520], // 2100 + + /** + * 公历每个月份的天数普通表 + * @Array Of Property + * @return Number + */ + solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + + /** + * 天干地支之天干速查表 + * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"] + * @return Cn string + */ + Gan: ['\u7532', '\u4e59', '\u4e19', '\u4e01', '\u620a', '\u5df1', '\u5e9a', '\u8f9b', '\u58ec', '\u7678'], + + /** + * 天干地支之地支速查表 + * @Array Of Property + * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"] + * @return Cn string + */ + Zhi: ['\u5b50', '\u4e11', '\u5bc5', '\u536f', '\u8fb0', '\u5df3', '\u5348', '\u672a', '\u7533', '\u9149', '\u620c', '\u4ea5'], + + /** + * 天干地支之地支速查表<=>生肖 + * @Array Of Property + * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"] + * @return Cn string + */ + Animals: ['\u9f20', '\u725b', '\u864e', '\u5154', '\u9f99', '\u86c7', '\u9a6c', '\u7f8a', '\u7334', '\u9e21', '\u72d7', '\u732a'], + + /** + * 24节气速查表 + * @Array Of Property + * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"] + * @return Cn string + */ + solarTerm: ['\u5c0f\u5bd2', '\u5927\u5bd2', '\u7acb\u6625', '\u96e8\u6c34', '\u60ca\u86f0', '\u6625\u5206', '\u6e05\u660e', '\u8c37\u96e8', '\u7acb\u590f', '\u5c0f\u6ee1', '\u8292\u79cd', '\u590f\u81f3', '\u5c0f\u6691', '\u5927\u6691', '\u7acb\u79cb', '\u5904\u6691', '\u767d\u9732', '\u79cb\u5206', '\u5bd2\u9732', '\u971c\u964d', '\u7acb\u51ac', '\u5c0f\u96ea', '\u5927\u96ea', '\u51ac\u81f3'], + + /** + * 1900-2100各年的24节气日期速查表 + * @Array Of Property + * @return 0x string For splice + */ + sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', + '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', + 'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f', + '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa', + '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', + '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f', + '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', + '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722', + '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f', + '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', + '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', + '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722', + '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', + '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', + '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2', + '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', + '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5', + '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722', + '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', + '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd', + '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35', + '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5', + '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35', + '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35', + '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'], + + /** + * 数字转中文速查表 + * @Array Of Property + * @trans ['日','一','二','三','四','五','六','七','八','九','十'] + * @return Cn string + */ + nStr1: ['\u65e5', '\u4e00', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341'], + + /** + * 日期转农历称呼速查表 + * @Array Of Property + * @trans ['初','十','廿','卅'] + * @return Cn string + */ + nStr2: ['\u521d', '\u5341', '\u5eff', '\u5345'], + + /** + * 月份转农历称呼速查表 + * @Array Of Property + * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊'] + * @return Cn string + */ + nStr3: ['\u6b63', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341', '\u51ac', '\u814a'], + + /** + * 返回农历y年一整年的总天数 + * @param lunar Year + * @return Number + * @eg:var count = calendar.lYearDays(1987) ;//count=387 + */ + lYearDays: function (y) { + var i; var sum = 348 + for (i = 0x8000; i > 0x8; i >>= 1) { sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0 } + return (sum + this.leapDays(y)) + }, + + /** + * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0 + * @param lunar Year + * @return Number (0-12) + * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6 + */ + leapMonth: function (y) { // 闰字编码 \u95f0 + return (this.lunarInfo[y - 1900] & 0xf) + }, + + /** + * 返回农历y年闰月的天数 若该年没有闰月则返回0 + * @param lunar Year + * @return Number (0、29、30) + * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29 + */ + leapDays: function (y) { + if (this.leapMonth(y)) { + return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29) + } + return (0) + }, + + /** + * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法 + * @param lunar Year + * @return Number (-1、29、30) + * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29 + */ + monthDays: function (y, m) { + if (m > 12 || m < 1) { return -1 }// 月份参数从1至12,参数错误返回-1 + return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29) + }, + + /** + * 返回公历(!)y年m月的天数 + * @param solar Year + * @return Number (-1、28、29、30、31) + * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30 + */ + solarDays: function (y, m) { + if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1 + var ms = m - 1 + if (ms == 1) { // 2月份的闰平规律测算后确认返回28或29 + return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28) + } else { + return (this.solarMonth[ms]) + } + }, + + /** + * 农历年份转换为干支纪年 + * @param lYear 农历年的年份数 + * @return Cn string + */ + toGanZhiYear: function (lYear) { + var ganKey = (lYear - 3) % 10 + var zhiKey = (lYear - 3) % 12 + if (ganKey == 0) ganKey = 10// 如果余数为0则为最后一个天干 + if (zhiKey == 0) zhiKey = 12// 如果余数为0则为最后一个地支 + return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1] + }, + + /** + * 公历月、日判断所属星座 + * @param cMonth [description] + * @param cDay [description] + * @return Cn string + */ + toAstro: function (cMonth, cDay) { + var s = '\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf' + var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22] + return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + '\u5ea7'// 座 + }, + + /** + * 传入offset偏移量返回干支 + * @param offset 相对甲子的偏移量 + * @return Cn string + */ + toGanZhi: function (offset) { + return this.Gan[offset % 10] + this.Zhi[offset % 12] + }, + + /** + * 传入公历(!)y年获得该年第n个节气的公历日期 + * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起 + * @return day Number + * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春 + */ + getTerm: function (y, n) { + if (y < 1900 || y > 2100) { return -1 } + if (n < 1 || n > 24) { return -1 } + var _table = this.sTermInfo[y - 1900] + var _info = [ + parseInt('0x' + _table.substr(0, 5)).toString(), + parseInt('0x' + _table.substr(5, 5)).toString(), + parseInt('0x' + _table.substr(10, 5)).toString(), + parseInt('0x' + _table.substr(15, 5)).toString(), + parseInt('0x' + _table.substr(20, 5)).toString(), + parseInt('0x' + _table.substr(25, 5)).toString() + ] + var _calday = [ + _info[0].substr(0, 1), + _info[0].substr(1, 2), + _info[0].substr(3, 1), + _info[0].substr(4, 2), + + _info[1].substr(0, 1), + _info[1].substr(1, 2), + _info[1].substr(3, 1), + _info[1].substr(4, 2), + + _info[2].substr(0, 1), + _info[2].substr(1, 2), + _info[2].substr(3, 1), + _info[2].substr(4, 2), + + _info[3].substr(0, 1), + _info[3].substr(1, 2), + _info[3].substr(3, 1), + _info[3].substr(4, 2), + + _info[4].substr(0, 1), + _info[4].substr(1, 2), + _info[4].substr(3, 1), + _info[4].substr(4, 2), + + _info[5].substr(0, 1), + _info[5].substr(1, 2), + _info[5].substr(3, 1), + _info[5].substr(4, 2) + ] + return parseInt(_calday[n - 1]) + }, + + /** + * 传入农历数字月份返回汉语通俗表示法 + * @param lunar month + * @return Cn string + * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月' + */ + toChinaMonth: function (m) { // 月 => \u6708 + if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1 + var s = this.nStr3[m - 1] + s += '\u6708'// 加上月字 + return s + }, + + /** + * 传入农历日期数字返回汉字表示法 + * @param lunar day + * @return Cn string + * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一' + */ + toChinaDay: function (d) { // 日 => \u65e5 + var s + switch (d) { + case 10: + s = '\u521d\u5341'; break + case 20: + s = '\u4e8c\u5341'; break + break + case 30: + s = '\u4e09\u5341'; break + break + default : + s = this.nStr2[Math.floor(d / 10)] + s += this.nStr1[d % 10] + } + return (s) + }, + + /** + * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春” + * @param y year + * @return Cn string + * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔' + */ + getAnimal: function (y) { + return this.Animals[(y - 4) % 12] + }, + + /** + * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON + * @param y solar year + * @param m solar month + * @param d solar day + * @return JSON object + * @eg:console.log(calendar.solar2lunar(1987,11,01)); + */ + solar2lunar: function (y, m, d) { // 参数区间1900.1.31~2100.12.31 + // 年份限定、上限 + if (y < 1900 || y > 2100) { + return -1// undefined转换为数字变为NaN + } + // 公历传参最下限 + if (y == 1900 && m == 1 && d < 31) { + return -1 + } + // 未传参 获得当天 + if (!y) { + var objDate = new Date() + } else { + var objDate = new Date(y, parseInt(m) - 1, d) + } + var i; var leap = 0; var temp = 0 + // 修正ymd参数 + var y = objDate.getFullYear() + var m = objDate.getMonth() + 1 + var d = objDate.getDate() + var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000 + for (i = 1900; i < 2101 && offset > 0; i++) { + temp = this.lYearDays(i) + offset -= temp + } + if (offset < 0) { + offset += temp; i-- + } + + // 是否今天 + var isTodayObj = new Date() + var isToday = false + if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) { + isToday = true + } + // 星期几 + var nWeek = objDate.getDay() + var cWeek = this.nStr1[nWeek] + // 数字表示周几顺应天朝周一开始的惯例 + if (nWeek == 0) { + nWeek = 7 + } + // 农历年 + var year = i + var leap = this.leapMonth(i) // 闰哪个月 + var isLeap = false + + // 效验闰月 + for (i = 1; i < 13 && offset > 0; i++) { + // 闰月 + if (leap > 0 && i == (leap + 1) && isLeap == false) { + --i + isLeap = true; temp = this.leapDays(year) // 计算农历闰月天数 + } else { + temp = this.monthDays(year, i)// 计算农历普通月天数 + } + // 解除闰月 + if (isLeap == true && i == (leap + 1)) { isLeap = false } + offset -= temp + } + // 闰月导致数组下标重叠取反 + if (offset == 0 && leap > 0 && i == leap + 1) { + if (isLeap) { + isLeap = false + } else { + isLeap = true; --i + } + } + if (offset < 0) { + offset += temp; --i + } + // 农历月 + var month = i + // 农历日 + var day = offset + 1 + // 天干地支处理 + var sm = m - 1 + var gzY = this.toGanZhiYear(year) + + // 当月的两个节气 + // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year` + var firstNode = this.getTerm(y, (m * 2 - 1))// 返回当月「节」为几日开始 + var secondNode = this.getTerm(y, (m * 2))// 返回当月「节」为几日开始 + + // 依据12节气修正干支月 + var gzM = this.toGanZhi((y - 1900) * 12 + m + 11) + if (d >= firstNode) { + gzM = this.toGanZhi((y - 1900) * 12 + m + 12) + } + + // 传入的日期的节气与否 + var isTerm = false + var Term = null + if (firstNode == d) { + isTerm = true + Term = this.solarTerm[m * 2 - 2] + } + if (secondNode == d) { + isTerm = true + Term = this.solarTerm[m * 2 - 1] + } + // 日柱 当月一日与 1900/1/1 相差天数 + var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10 + var gzD = this.toGanZhi(dayCyclical + d - 1) + // 该日期所属的星座 + var astro = this.toAstro(m, d) + + return { 'lYear': year, 'lMonth': month, 'lDay': day, 'Animal': this.getAnimal(year), 'IMonthCn': (isLeap ? '\u95f0' : '') + this.toChinaMonth(month), 'IDayCn': this.toChinaDay(day), 'cYear': y, 'cMonth': m, 'cDay': d, 'gzYear': gzY, 'gzMonth': gzM, 'gzDay': gzD, 'isToday': isToday, 'isLeap': isLeap, 'nWeek': nWeek, 'ncWeek': '\u661f\u671f' + cWeek, 'isTerm': isTerm, 'Term': Term, 'astro': astro } + }, + + /** + * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON + * @param y lunar year + * @param m lunar month + * @param d lunar day + * @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可] + * @return JSON object + * @eg:console.log(calendar.lunar2solar(1987,9,10)); + */ + lunar2solar: function (y, m, d, isLeapMonth) { // 参数区间1900.1.31~2100.12.1 + var isLeapMonth = !!isLeapMonth + var leapOffset = 0 + var leapMonth = this.leapMonth(y) + var leapDay = this.leapDays(y) + if (isLeapMonth && (leapMonth != m)) { return -1 }// 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同 + if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { return -1 }// 超出了最大极限值 + var day = this.monthDays(y, m) + var _day = day + // bugFix 2016-9-25 + // if month is leap, _day use leapDays method + if (isLeapMonth) { + _day = this.leapDays(y, m) + } + if (y < 1900 || y > 2100 || d > _day) { return -1 }// 参数合法性效验 + + // 计算农历的时间差 + var offset = 0 + for (var i = 1900; i < y; i++) { + offset += this.lYearDays(i) + } + var leap = 0; var isAdd = false + for (var i = 1; i < m; i++) { + leap = this.leapMonth(y) + if (!isAdd) { // 处理闰月 + if (leap <= i && leap > 0) { + offset += this.leapDays(y); isAdd = true + } + } + offset += this.monthDays(y, i) + } + // 转换闰月农历 需补充该年闰月的前一个月的时差 + if (isLeapMonth) { offset += day } + // 1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点) + var stmap = Date.UTC(1900, 1, 30, 0, 0, 0) + var calObj = new Date((offset + d - 31) * 86400000 + stmap) + var cY = calObj.getUTCFullYear() + var cM = calObj.getUTCMonth() + 1 + var cD = calObj.getUTCDate() + + return this.solar2lunar(cY, cM, cD) + } +} + +export default calendar diff --git a/components/uni-calendar/uni-calendar-item.vue b/components/uni-calendar/uni-calendar-item.vue new file mode 100644 index 0000000..d633df1 --- /dev/null +++ b/components/uni-calendar/uni-calendar-item.vue @@ -0,0 +1,151 @@ + + + + + \ No newline at end of file diff --git a/components/uni-calendar/uni-calendar.vue b/components/uni-calendar/uni-calendar.vue new file mode 100644 index 0000000..e44e34b --- /dev/null +++ b/components/uni-calendar/uni-calendar.vue @@ -0,0 +1,431 @@ + + + + + diff --git a/components/uni-calendar/util.js b/components/uni-calendar/util.js new file mode 100644 index 0000000..09b4c6c --- /dev/null +++ b/components/uni-calendar/util.js @@ -0,0 +1,327 @@ +import CALENDAR from './calendar.js' + +class Calendar { + constructor({ + date, + selected, + startDate, + endDate, + range + } = {}) { + // 当前日期 + this.date = this.getDate(date) // 当前初入日期 + // 打点信息 + this.selected = selected || []; + // 范围开始 + this.startDate = startDate + // 范围结束 + this.endDate = endDate + this.range = range + // 多选状态 + this.multipleStatus = { + before: '', + after: '', + data: [] + } + // 每周日期 + this.weeks = {} + + this._getWeek(this.date.fullDate) + } + + /** + * 获取任意时间 + */ + getDate(date, AddDayCount = 0, str = 'day') { + if (!date) { + date = new Date() + } + if (typeof date !== 'object') { + date = date.replace(/-/g, '/') + } + const dd = new Date(date) + switch (str) { + case 'day': + dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期 + break + case 'month': + if (dd.getDate() === 31) { + dd.setDate(dd.getDate() + AddDayCount) + } else { + dd.setMonth(dd.getMonth() + AddDayCount) // 获取AddDayCount天后的日期 + } + break + case 'year': + dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期 + break + } + const y = dd.getFullYear() + const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0 + const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0 + return { + fullDate: y + '-' + m + '-' + d, + year: y, + month: m, + date: d, + day: dd.getDay() + } + } + + + /** + * 获取上月剩余天数 + */ + _getLastMonthDays(firstDay, full) { + let dateArr = [] + for (let i = firstDay; i > 0; i--) { + const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate() + dateArr.push({ + date: beforeDate, + month: full.month - 1, + lunar: this.getlunar(full.year, full.month - 1, beforeDate), + disable: true + }) + } + return dateArr + } + /** + * 获取本月天数 + */ + _currentMonthDys(dateData, full) { + let dateArr = [] + let fullDate = this.date.fullDate + for (let i = 1; i <= dateData; i++) { + let isinfo = false + let nowDate = full.year + '-' + (full.month < 10 ? + full.month : full.month) + '-' + (i < 10 ? + '0' + i : i) + // 是否今天 + let isDay = fullDate === nowDate + // 获取打点信息 + let info = this.selected && this.selected.find((item) => { + if (this.dateEqual(nowDate, item.date)) { + return item + } + }) + + // 日期禁用 + let disableBefore = true + let disableAfter = true + if (this.startDate) { + let dateCompBefore = this.dateCompare(this.startDate, fullDate) + disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate) + } + + if (this.endDate) { + let dateCompAfter = this.dateCompare(fullDate, this.endDate) + disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate) + } + + let multiples = this.multipleStatus.data + let checked = false + let multiplesStatus = -1 + if (this.range) { + if (multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, nowDate) + }) + } + if (multiplesStatus !== -1) { + checked = true + } + } + + let data = { + fullDate: nowDate, + year: full.year, + date: i, + multiple: this.range ? checked : false, + month: full.month, + lunar: this.getlunar(full.year, full.month, i), + disable: !disableBefore || !disableAfter, + isDay + } + if (info) { + data.extraInfo = info + } + + dateArr.push(data) + } + return dateArr + } + /** + * 获取下月天数 + */ + _getNextMonthDays(surplus, full) { + let dateArr = [] + for (let i = 1; i < surplus + 1; i++) { + dateArr.push({ + date: i, + month: Number(full.month) + 1, + lunar: this.getlunar(full.year, Number(full.month) + 1, i), + disable: true + }) + } + return dateArr + } + /** + * 设置日期 + * @param {Object} date + */ + setDate(date) { + this._getWeek(date) + } + /** + * 获取当前日期详情 + * @param {Object} date + */ + getInfo(date) { + if (!date) { + date = new Date() + } + const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate) + return dateInfo + } + + /** + * 比较时间大小 + */ + dateCompare(startDate, endDate) { + // 计算截止时间 + startDate = new Date(startDate.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + endDate = new Date(endDate.replace('-', '/').replace('-', '/')) + if (startDate <= endDate) { + return true + } else { + return false + } + } + + /** + * 比较时间是否相等 + */ + dateEqual(before, after) { + // 计算截止时间 + before = new Date(before.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + after = new Date(after.replace('-', '/').replace('-', '/')) + if (before.getTime() - after.getTime() === 0) { + return true + } else { + return false + } + } + + + /** + * 获取日期范围内所有日期 + * @param {Object} begin + * @param {Object} end + */ + geDateAll(begin, end) { + var arr = [] + var ab = begin.split('-') + var ae = end.split('-') + var db = new Date() + db.setFullYear(ab[0], ab[1] - 1, ab[2]) + var de = new Date() + de.setFullYear(ae[0], ae[1] - 1, ae[2]) + var unixDb = db.getTime() - 24 * 60 * 60 * 1000 + var unixDe = de.getTime() - 24 * 60 * 60 * 1000 + for (var k = unixDb; k <= unixDe;) { + k = k + 24 * 60 * 60 * 1000 + arr.push(this.getDate(new Date(parseInt(k))).fullDate) + } + return arr + } + /** + * 计算阴历日期显示 + */ + getlunar(year, month, date) { + return CALENDAR.solar2lunar(year, month, date) + } + /** + * 设置打点 + */ + setSelectInfo(data, value) { + this.selected = value + this._getWeek(data) + } + + /** + * 获取多选状态 + */ + setMultiple(fullDate) { + let { + before, + after + } = this.multipleStatus + if (!this.range) return + if (before && after) { + this.multipleStatus.before = '' + this.multipleStatus.after = '' + this.multipleStatus.data = [] + this._getWeek(fullDate) + } else { + if (!before) { + this.multipleStatus.before = fullDate + } else { + this.multipleStatus.after = fullDate + if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before); + } + this._getWeek(fullDate) + } + } + } + + /** + * 获取每周数据 + * @param {Object} dateData + */ + _getWeek(dateData) { + const { + fullDate, + year, + month, + date, + day + } = this.getDate(dateData) + let firstDay = new Date(year, month - 1, 1).getDay() + let currentDay = new Date(year, month, 0).getDate() + let dates = { + lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天 + currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数 + nextMonthDays: [], // 下个月开始几天 + weeks: [] + } + let canlender = [] + const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length) + dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData)) + canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays) + let weeks = {} + // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天 + for (let i = 0; i < canlender.length; i++) { + if (i % 7 === 0) { + weeks[parseInt(i / 7)] = new Array(7) + } + weeks[parseInt(i / 7)][i % 7] = canlender[i] + } + this.canlender = canlender + this.weeks = weeks + } + + //静态方法 + // static init(date) { + // if (!this.instance) { + // this.instance = new Calendar(date); + // } + // return this.instance; + // } +} + + +export default Calendar diff --git a/components/uni-card/uni-card.vue b/components/uni-card/uni-card.vue new file mode 100644 index 0000000..ede6eac --- /dev/null +++ b/components/uni-card/uni-card.vue @@ -0,0 +1,403 @@ + + + + + \ No newline at end of file diff --git a/components/uni-collapse-item/uni-collapse-item.vue b/components/uni-collapse-item/uni-collapse-item.vue new file mode 100644 index 0000000..6a04f04 --- /dev/null +++ b/components/uni-collapse-item/uni-collapse-item.vue @@ -0,0 +1,217 @@ + + + + + \ No newline at end of file diff --git a/components/uni-collapse/uni-collapse.vue b/components/uni-collapse/uni-collapse.vue new file mode 100644 index 0000000..b1b8777 --- /dev/null +++ b/components/uni-collapse/uni-collapse.vue @@ -0,0 +1,59 @@ + + + \ No newline at end of file diff --git a/components/uni-combox/uni-combox.vue b/components/uni-combox/uni-combox.vue new file mode 100644 index 0000000..2f80816 --- /dev/null +++ b/components/uni-combox/uni-combox.vue @@ -0,0 +1,212 @@ + + + + + \ No newline at end of file diff --git a/components/uni-countdown/uni-countdown.vue b/components/uni-countdown/uni-countdown.vue new file mode 100644 index 0000000..d4ed8e0 --- /dev/null +++ b/components/uni-countdown/uni-countdown.vue @@ -0,0 +1,200 @@ + + + \ No newline at end of file diff --git a/components/uni-drawer/uni-drawer.vue b/components/uni-drawer/uni-drawer.vue new file mode 100644 index 0000000..f62c329 --- /dev/null +++ b/components/uni-drawer/uni-drawer.vue @@ -0,0 +1,170 @@ + + + + + \ No newline at end of file diff --git a/components/uni-fab/uni-fab.vue b/components/uni-fab/uni-fab.vue new file mode 100644 index 0000000..288803f --- /dev/null +++ b/components/uni-fab/uni-fab.vue @@ -0,0 +1,428 @@ + + + + + \ No newline at end of file diff --git a/components/uni-fav/uni-fav.vue b/components/uni-fav/uni-fav.vue new file mode 100644 index 0000000..4e9ec8b --- /dev/null +++ b/components/uni-fav/uni-fav.vue @@ -0,0 +1,136 @@ + + + + + \ No newline at end of file diff --git a/components/uni-goods-nav/uni-goods-nav.vue b/components/uni-goods-nav/uni-goods-nav.vue new file mode 100644 index 0000000..69e5637 --- /dev/null +++ b/components/uni-goods-nav/uni-goods-nav.vue @@ -0,0 +1,230 @@ + + + + + \ No newline at end of file diff --git a/components/uni-grid-item/uni-grid-item copy.vue b/components/uni-grid-item/uni-grid-item copy.vue new file mode 100644 index 0000000..d9a5703 --- /dev/null +++ b/components/uni-grid-item/uni-grid-item copy.vue @@ -0,0 +1,167 @@ + + + + + \ No newline at end of file diff --git a/components/uni-grid-item/uni-grid-item.vue b/components/uni-grid-item/uni-grid-item.vue new file mode 100644 index 0000000..5ab7063 --- /dev/null +++ b/components/uni-grid-item/uni-grid-item.vue @@ -0,0 +1,125 @@ + + + + + \ No newline at end of file diff --git a/components/uni-grid/uni-grid.vue b/components/uni-grid/uni-grid.vue new file mode 100644 index 0000000..1355b4e --- /dev/null +++ b/components/uni-grid/uni-grid.vue @@ -0,0 +1,142 @@ + + + + + \ No newline at end of file diff --git a/components/uni-icons/icons.js b/components/uni-icons/icons.js new file mode 100644 index 0000000..60b7332 --- /dev/null +++ b/components/uni-icons/icons.js @@ -0,0 +1,132 @@ +export default { + "pulldown": "\ue588", + "refreshempty": "\ue461", + "back": "\ue471", + "forward": "\ue470", + "more": "\ue507", + "more-filled": "\ue537", + "scan": "\ue612", + "qq": "\ue264", + "weibo": "\ue260", + "weixin": "\ue261", + "pengyouquan": "\ue262", + "loop": "\ue565", + "refresh": "\ue407", + "refresh-filled": "\ue437", + "arrowthindown": "\ue585", + "arrowthinleft": "\ue586", + "arrowthinright": "\ue587", + "arrowthinup": "\ue584", + "undo-filled": "\ue7d6", + "undo": "\ue406", + "redo": "\ue405", + "redo-filled": "\ue7d9", + "bars": "\ue563", + "chatboxes": "\ue203", + "camera": "\ue301", + "chatboxes-filled": "\ue233", + "camera-filled": "\ue7ef", + "cart-filled": "\ue7f4", + "cart": "\ue7f5", + "checkbox-filled": "\ue442", + "checkbox": "\ue7fa", + "arrowleft": "\ue582", + "arrowdown": "\ue581", + "arrowright": "\ue583", + "smallcircle-filled": "\ue801", + "arrowup": "\ue580", + "circle": "\ue411", + "eye-filled": "\ue568", + "eye-slash-filled": "\ue822", + "eye-slash": "\ue823", + "eye": "\ue824", + "flag-filled": "\ue825", + "flag": "\ue508", + "gear-filled": "\ue532", + "reload": "\ue462", + "gear": "\ue502", + "hand-thumbsdown-filled": "\ue83b", + "hand-thumbsdown": "\ue83c", + "hand-thumbsup-filled": "\ue83d", + "heart-filled": "\ue83e", + "hand-thumbsup": "\ue83f", + "heart": "\ue840", + "home": "\ue500", + "info": "\ue504", + "home-filled": "\ue530", + "info-filled": "\ue534", + "circle-filled": "\ue441", + "chat-filled": "\ue847", + "chat": "\ue263", + "mail-open-filled": "\ue84d", + "email-filled": "\ue231", + "mail-open": "\ue84e", + "email": "\ue201", + "checkmarkempty": "\ue472", + "list": "\ue562", + "locked-filled": "\ue856", + "locked": "\ue506", + "map-filled": "\ue85c", + "map-pin": "\ue85e", + "map-pin-ellipse": "\ue864", + "map": "\ue364", + "minus-filled": "\ue440", + "mic-filled": "\ue332", + "minus": "\ue410", + "micoff": "\ue360", + "mic": "\ue302", + "clear": "\ue434", + "smallcircle": "\ue868", + "close": "\ue404", + "closeempty": "\ue460", + "paperclip": "\ue567", + "paperplane": "\ue503", + "paperplane-filled": "\ue86e", + "person-filled": "\ue131", + "contact-filled": "\ue130", + "person": "\ue101", + "contact": "\ue100", + "images-filled": "\ue87a", + "phone": "\ue200", + "images": "\ue87b", + "image": "\ue363", + "image-filled": "\ue877", + "location-filled": "\ue333", + "location": "\ue303", + "plus-filled": "\ue439", + "plus": "\ue409", + "plusempty": "\ue468", + "help-filled": "\ue535", + "help": "\ue505", + "navigate-filled": "\ue884", + "navigate": "\ue501", + "mic-slash-filled": "\ue892", + "search": "\ue466", + "settings": "\ue560", + "sound": "\ue590", + "sound-filled": "\ue8a1", + "spinner-cycle": "\ue465", + "download-filled": "\ue8a4", + "personadd-filled": "\ue132", + "videocam-filled": "\ue8af", + "personadd": "\ue102", + "upload": "\ue402", + "upload-filled": "\ue8b1", + "starhalf": "\ue463", + "star-filled": "\ue438", + "star": "\ue408", + "trash": "\ue401", + "phone-filled": "\ue230", + "compose": "\ue400", + "videocam": "\ue300", + "trash-filled": "\ue8dc", + "download": "\ue403", + "chatbubble-filled": "\ue232", + "chatbubble": "\ue202", + "cloud-download": "\ue8e4", + "cloud-upload-filled": "\ue8e5", + "cloud-upload": "\ue8e6", + "cloud-download-filled": "\ue8e9", + "headphones":"\ue8bf", + "shop":"\ue609" +} diff --git a/components/uni-icons/uni-icons.vue b/components/uni-icons/uni-icons.vue new file mode 100644 index 0000000..c1f1227 --- /dev/null +++ b/components/uni-icons/uni-icons.vue @@ -0,0 +1,67 @@ + + + + + \ No newline at end of file diff --git a/components/uni-indexed-list/uni-indexed-list-item.vue b/components/uni-indexed-list/uni-indexed-list-item.vue new file mode 100644 index 0000000..b328e4a --- /dev/null +++ b/components/uni-indexed-list/uni-indexed-list-item.vue @@ -0,0 +1,142 @@ + + + + + \ No newline at end of file diff --git a/components/uni-indexed-list/uni-indexed-list.vue b/components/uni-indexed-list/uni-indexed-list.vue new file mode 100644 index 0000000..49c4060 --- /dev/null +++ b/components/uni-indexed-list/uni-indexed-list.vue @@ -0,0 +1,317 @@ + + + \ No newline at end of file diff --git a/components/uni-link/uni-link.vue b/components/uni-link/uni-link.vue new file mode 100644 index 0000000..804b7e5 --- /dev/null +++ b/components/uni-link/uni-link.vue @@ -0,0 +1,72 @@ + + + + + \ No newline at end of file diff --git a/components/uni-list-item/uni-list-item.vue b/components/uni-list-item/uni-list-item.vue new file mode 100644 index 0000000..300d808 --- /dev/null +++ b/components/uni-list-item/uni-list-item.vue @@ -0,0 +1,270 @@ + + + + + \ No newline at end of file diff --git a/components/uni-list/uni-list.vue b/components/uni-list/uni-list.vue new file mode 100644 index 0000000..4f7b030 --- /dev/null +++ b/components/uni-list/uni-list.vue @@ -0,0 +1,78 @@ + + + + \ No newline at end of file diff --git a/components/uni-list/uni-refresh.vue b/components/uni-list/uni-refresh.vue new file mode 100644 index 0000000..8563709 --- /dev/null +++ b/components/uni-list/uni-refresh.vue @@ -0,0 +1,65 @@ + + + + + \ No newline at end of file diff --git a/components/uni-list/uni-refresh.wxs b/components/uni-list/uni-refresh.wxs new file mode 100644 index 0000000..818a6b7 --- /dev/null +++ b/components/uni-list/uni-refresh.wxs @@ -0,0 +1,87 @@ +var pullDown = { + threshold: 95, + maxHeight: 200, + callRefresh: 'onrefresh', + callPullingDown: 'onpullingdown', + refreshSelector: '.uni-refresh' +}; + +function ready(newValue, oldValue, ownerInstance, instance) { + var state = instance.getState() + state.canPullDown = newValue; + // console.log(newValue); +} + +function touchStart(e, instance) { + var state = instance.getState(); + state.refreshInstance = instance.selectComponent(pullDown.refreshSelector); + state.canPullDown = (state.refreshInstance != null && state.refreshInstance != undefined); + if (!state.canPullDown) { + return + } + + // console.log("touchStart"); + + state.height = 0; + state.touchStartY = e.touches[0].pageY || e.changedTouches[0].pageY; + state.refreshInstance.setStyle({ + 'height': 0 + }); + state.refreshInstance.callMethod("onchange", true); +} + +function touchMove(e, ownerInstance) { + var instance = e.instance; + var state = instance.getState(); + if (!state.canPullDown) { + return + } + + var oldHeight = state.height; + var endY = e.touches[0].pageY || e.changedTouches[0].pageY; + var height = endY - state.touchStartY; + if (height > pullDown.maxHeight) { + return; + } + + var refreshInstance = state.refreshInstance; + refreshInstance.setStyle({ + 'height': height + 'px' + }); + + height = height < pullDown.maxHeight ? height : pullDown.maxHeight; + state.height = height; + refreshInstance.callMethod(pullDown.callPullingDown, { + height: height + }); +} + +function touchEnd(e, ownerInstance) { + var state = e.instance.getState(); + if (!state.canPullDown) { + return + } + + state.refreshInstance.callMethod("onchange", false); + + var refreshInstance = state.refreshInstance; + if (state.height > pullDown.threshold) { + refreshInstance.callMethod(pullDown.callRefresh); + return; + } + + refreshInstance.setStyle({ + 'height': 0 + }); +} + +function propObserver(newValue, oldValue, instance) { + pullDown = newValue; +} + +module.exports = { + touchmove: touchMove, + touchstart: touchStart, + touchend: touchEnd, + propObserver: propObserver +} diff --git a/components/uni-load-more/uni-load-more.vue b/components/uni-load-more/uni-load-more.vue new file mode 100644 index 0000000..ac35e5b --- /dev/null +++ b/components/uni-load-more/uni-load-more.vue @@ -0,0 +1,364 @@ + + + + + \ No newline at end of file diff --git a/components/uni-nav-bar/uni-nav-bar.vue b/components/uni-nav-bar/uni-nav-bar.vue new file mode 100644 index 0000000..0d70727 --- /dev/null +++ b/components/uni-nav-bar/uni-nav-bar.vue @@ -0,0 +1,235 @@ + + + + + \ No newline at end of file diff --git a/components/uni-notice-bar/uni-notice-bar.vue b/components/uni-notice-bar/uni-notice-bar.vue new file mode 100644 index 0000000..76d06d9 --- /dev/null +++ b/components/uni-notice-bar/uni-notice-bar.vue @@ -0,0 +1,392 @@ + + + + + \ No newline at end of file diff --git a/components/uni-number-box/uni-number-box.vue b/components/uni-number-box/uni-number-box.vue new file mode 100644 index 0000000..3f3e866 --- /dev/null +++ b/components/uni-number-box/uni-number-box.vue @@ -0,0 +1,197 @@ + + + \ No newline at end of file diff --git a/components/uni-pagination/uni-pagination.vue b/components/uni-pagination/uni-pagination.vue new file mode 100644 index 0000000..e1f2a76 --- /dev/null +++ b/components/uni-pagination/uni-pagination.vue @@ -0,0 +1,200 @@ + + + + + \ No newline at end of file diff --git a/components/uni-popup/message.js b/components/uni-popup/message.js new file mode 100644 index 0000000..6688e84 --- /dev/null +++ b/components/uni-popup/message.js @@ -0,0 +1,29 @@ +export default { + created() { + if (this.type === 'message') { + // 获取自组件对象 + this.maskShow = false + this.children = null + } + }, + created() { + if (this.type === 'message') { + // 不显示遮罩 + this.maskShow = false + // 获取子组件对象 + this.childrenMsg = null + } + }, + methods: { + customOpen() { + if (this.childrenMsg) { + this.childrenMsg.open() + } + }, + customClose() { + if (this.childrenMsg) { + this.childrenMsg.close() + } + } + } +} diff --git a/components/uni-popup/popup.js b/components/uni-popup/popup.js new file mode 100644 index 0000000..2a7f22f --- /dev/null +++ b/components/uni-popup/popup.js @@ -0,0 +1,25 @@ +import message from './message.js'; +// 定义 type 类型:弹出类型:top/bottom/center +const config = { + // 顶部弹出 + top:'top', + // 底部弹出 + bottom:'bottom', + // 居中弹出 + center:'center', + // 消息提示 + message:'top', + // 对话框 + dialog:'center', + // 分享 + share:'bottom', +} + +export default { + data(){ + return { + config:config + } + }, + mixins: [message], +} diff --git a/components/uni-popup/uni-popup-dialog.vue b/components/uni-popup/uni-popup-dialog.vue new file mode 100644 index 0000000..cfca261 --- /dev/null +++ b/components/uni-popup/uni-popup-dialog.vue @@ -0,0 +1,243 @@ + + + + + \ No newline at end of file diff --git a/components/uni-popup/uni-popup-message.vue b/components/uni-popup/uni-popup-message.vue new file mode 100644 index 0000000..7f0f7c5 --- /dev/null +++ b/components/uni-popup/uni-popup-message.vue @@ -0,0 +1,116 @@ + + + + \ No newline at end of file diff --git a/components/uni-popup/uni-popup-share.vue b/components/uni-popup/uni-popup-share.vue new file mode 100644 index 0000000..dce13d5 --- /dev/null +++ b/components/uni-popup/uni-popup-share.vue @@ -0,0 +1,168 @@ + + + + \ No newline at end of file diff --git a/components/uni-popup/uni-popup.vue b/components/uni-popup/uni-popup.vue new file mode 100644 index 0000000..91c98fc --- /dev/null +++ b/components/uni-popup/uni-popup.vue @@ -0,0 +1,293 @@ + + + + \ No newline at end of file diff --git a/components/uni-rate/uni-rate.vue b/components/uni-rate/uni-rate.vue new file mode 100644 index 0000000..a9ddd68 --- /dev/null +++ b/components/uni-rate/uni-rate.vue @@ -0,0 +1,157 @@ + + + + + \ No newline at end of file diff --git a/components/uni-search-bar/uni-search-bar.vue b/components/uni-search-bar/uni-search-bar.vue new file mode 100644 index 0000000..2a9bff8 --- /dev/null +++ b/components/uni-search-bar/uni-search-bar.vue @@ -0,0 +1,203 @@ + + + + + \ No newline at end of file diff --git a/components/uni-section/uni-section.vue b/components/uni-section/uni-section.vue new file mode 100644 index 0000000..1ba75cc --- /dev/null +++ b/components/uni-section/uni-section.vue @@ -0,0 +1,137 @@ + + + + \ No newline at end of file diff --git a/components/uni-segmented-control/uni-segmented-control.vue b/components/uni-segmented-control/uni-segmented-control.vue new file mode 100644 index 0000000..a10f069 --- /dev/null +++ b/components/uni-segmented-control/uni-segmented-control.vue @@ -0,0 +1,133 @@ + + + + + \ No newline at end of file diff --git a/components/uni-status-bar/uni-status-bar.vue b/components/uni-status-bar/uni-status-bar.vue new file mode 100644 index 0000000..693faa4 --- /dev/null +++ b/components/uni-status-bar/uni-status-bar.vue @@ -0,0 +1,26 @@ + + + + + \ No newline at end of file diff --git a/components/uni-steps/uni-steps.vue b/components/uni-steps/uni-steps.vue new file mode 100644 index 0000000..1978e95 --- /dev/null +++ b/components/uni-steps/uni-steps.vue @@ -0,0 +1,253 @@ + + + + + \ No newline at end of file diff --git a/components/uni-swipe-action-item/bindingx.js b/components/uni-swipe-action-item/bindingx.js new file mode 100644 index 0000000..50b9241 --- /dev/null +++ b/components/uni-swipe-action-item/bindingx.js @@ -0,0 +1,245 @@ +const BindingX = uni.requireNativePlugin('bindingx'); +const dom = uni.requireNativePlugin('dom'); +const animation = uni.requireNativePlugin('animation'); + +export default { + data() { + return { + right: 0, + button: [], + preventGesture: false + } + }, + + watch: { + show(newVal) { + if (!this.position || JSON.stringify(this.position) === '{}') return; + if (this.autoClose) return + if (this.isInAnimation) return + if (newVal) { + this.open() + } else { + this.close() + } + }, + }, + created() { + if (this.swipeaction.children !== undefined) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.boxSelector = this.getEl(this.$refs['selector-box-hock']); + this.selector = this.getEl(this.$refs['selector-content-hock']); + this.buttonSelector = this.getEl(this.$refs['selector-button-hock']); + this.position = {} + this.x = 0 + setTimeout(() => { + this.getSelectorQuery() + }, 200) + }, + beforeDestroy() { + if (this.timing) { + BindingX.unbind({ + token: this.timing.token, + eventType: 'timing' + }) + } + if (this.eventpan) { + BindingX.unbind({ + token: this.eventpan.token, + eventType: 'pan' + }) + } + this.swipeaction.children.forEach((item, index) => { + if (item === this) { + this.swipeaction.children.splice(index, 1) + } + }) + }, + methods: { + onClick(index, item) { + this.$emit('click', { + content: item, + index + }) + }, + touchstart(e) { + if (this.isInAnimation) return + if (this.stop) return + this.stop = true + if (this.autoClose) { + this.swipeaction.closeOther(this) + } + let endWidth = this.right + let boxStep = `(x+${this.x})` + let pageX = `${boxStep}> ${-endWidth} && ${boxStep} < 0?${boxStep}:(x+${this.x} < 0? ${-endWidth}:0)` + + let props = [{ + element: this.selector, + property: 'transform.translateX', + expression: pageX + }] + + let left = 0 + for (let i = 0; i < this.options.length; i++) { + let buttonSelectors = this.getEl(this.$refs['button-hock'][i]); + if (this.button.length === 0 || !this.button[i] || !this.button[i].width) return + let moveMix = endWidth - left + left += this.button[i].width + let step = `(${this.x}+x)/${endWidth}` + let moveX = `(${step}) * ${moveMix}` + let pageButtonX = `${moveX}&& (x+${this.x} > ${-endWidth})?${moveX}:${-moveMix}` + props.push({ + element: buttonSelectors, + property: 'transform.translateX', + expression: pageButtonX + }) + } + + this.eventpan = this._bind(this.boxSelector, props, 'pan', (e) => { + if (e.state === 'end') { + this.x = e.deltaX + this.x; + if (this.x < -endWidth) { + this.x = -endWidth + } + if (this.x > 0) { + this.x = 0 + } + this.stop = false + this.bindTiming(); + } + }) + }, + touchend(e) { + this.$nextTick(() => { + if (this.isopen && !this.isDrag && !this.isInAnimation) { + this.close() + } + }) + }, + bindTiming() { + if (this.isopen) { + this.move(this.x, -this.right) + } else { + this.move(this.x, -40) + } + }, + move(left, value) { + if (left >= value) { + this.close() + } else { + this.open() + } + }, + /** + * 开启swipe + */ + open() { + this.animation(true) + }, + /** + * 关闭swipe + */ + close() { + this.animation(false) + }, + /** + * 开启关闭动画 + * @param {Object} type + */ + animation(type) { + this.isDrag = true + let endWidth = this.right + let time = 200 + this.isInAnimation = true; + + let exit = `t>${time}`; + let translate_x_expression = `easeOutExpo(t,${this.x},${type?(-endWidth-this.x):(-this.x)},${time})` + let props = [{ + element: this.selector, + property: 'transform.translateX', + expression: translate_x_expression + }] + + let left = 0 + for (let i = 0; i < this.options.length; i++) { + let buttonSelectors = this.getEl(this.$refs['button-hock'][i]); + if (this.button.length === 0 || !this.button[i] || !this.button[i].width) return + let moveMix = endWidth - left + left += this.button[i].width + let step = `${this.x}/${endWidth}` + let moveX = `(${step}) * ${moveMix}` + let pageButtonX = `easeOutExpo(t,${moveX},${type ? -moveMix + '-' + moveX: 0 + '-' + moveX},${time})` + props.push({ + element: buttonSelectors, + property: 'transform.translateX', + expression: pageButtonX + }) + } + + this.timing = BindingX.bind({ + eventType: 'timing', + exitExpression: exit, + props: props + }, (e) => { + if (e.state === 'end' || e.state === 'exit') { + this.x = type ? -endWidth : 0 + this.isInAnimation = false; + + this.isopen = this.isopen || false + if (this.isopen !== type) { + this.$emit('change', type) + } + this.isopen = type + this.isDrag = false + } + }); + }, + /** + * 绑定 BindingX + * @param {Object} anchor + * @param {Object} props + * @param {Object} fn + */ + _bind(anchor, props, eventType, fn) { + return BindingX.bind({ + anchor, + eventType, + props + }, (e) => { + typeof(fn) === 'function' && fn(e) + }); + }, + /** + * 获取ref + * @param {Object} el + */ + getEl(el) { + return el.ref + }, + /** + * 获取节点信息 + */ + getSelectorQuery() { + dom.getComponentRect(this.$refs['selector-content-hock'], (data) => { + if (this.position.content) return + this.position.content = data.size + }) + for (let i = 0; i < this.options.length; i++) { + dom.getComponentRect(this.$refs['button-hock'][i], (data) => { + if (!this.button) { + this.button = [] + } + if (this.options.length === this.button.length) return + this.button.push(data.size) + this.right += data.size.width + if (this.autoClose) return + if (this.show) { + this.open() + } + }) + } + } + } +} diff --git a/components/uni-swipe-action-item/index.wxs b/components/uni-swipe-action-item/index.wxs new file mode 100644 index 0000000..24c94bb --- /dev/null +++ b/components/uni-swipe-action-item/index.wxs @@ -0,0 +1,204 @@ +/** + * 监听页面内值的变化,主要用于动态开关swipe-action + * @param {Object} newValue + * @param {Object} oldValue + * @param {Object} ownerInstance + * @param {Object} instance + */ +function sizeReady(newValue, oldValue, ownerInstance, instance) { + var state = instance.getState() + state.position = JSON.parse(newValue) + if (!state.position || state.position.length === 0) return + var show = state.position[0].show + state.left = state.left || state.position[0].left; + // 通过用户变量,开启或关闭 + if (show) { + openState(true, instance, ownerInstance) + } else { + openState(false, instance, ownerInstance) + } +} + +/** + * 开始触摸操作 + * @param {Object} e + * @param {Object} ins + */ +function touchstart(e, ins) { + var instance = e.instance; + var state = instance.getState(); + var pageX = e.touches[0].pageX; + // 开始触摸时移除动画类 + instance.removeClass('ani'); + var owner = ins.selectAllComponents('.button-hock') + for (var i = 0; i < owner.length; i++) { + owner[i].removeClass('ani'); + } + // state.position = JSON.parse(instance.getDataset().position); + state.left = state.left || state.position[0].left; + // 获取最终按钮组的宽度 + state.width = pageX - state.left; + ins.callMethod('closeSwipe') +} + +/** + * 开始滑动操作 + * @param {Object} e + * @param {Object} ownerInstance + */ +function touchmove(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState() + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + + if (disabled) return + var pageX = e.touches[0].pageX; + move(pageX - state.width, instance, ownerInstance) +} + +/** + * 结束触摸操作 + * @param {Object} e + * @param {Object} ownerInstance + */ +function touchend(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState() + + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + + if (disabled) return + // 滑动过程中触摸结束,通过阙值判断是开启还是关闭 + // fixed by mehaotian 定时器解决点击按钮,touchend 触发比 click 事件时机早的问题 ,主要是 ios13 + moveDirection(state.left, -40, instance, ownerInstance) +} + +/** + * 设置移动距离 + * @param {Object} value + * @param {Object} instance + * @param {Object} ownerInstance + */ +function move(value, instance, ownerInstance) { + var state = instance.getState() + // 获取可滑动范围 + var x = Math.max(-state.position[1].width, Math.min((value), 0)); + state.left = x; + instance.setStyle({ + transform: 'translateX(' + x + 'px)', + '-webkit-transform': 'translateX(' + x + 'px)' + }) + // 折叠按钮动画 + buttonFold(x, instance, ownerInstance) +} + +/** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + * @param {Object} ownerInstance + * @param {Object} ins + */ +function moveDirection(left, value, ins, ownerInstance) { + var state = ins.getState() + var position = state.position + var isopen = state.isopen + if (!position[1].width) { + openState(false, ins, ownerInstance) + return + } + // 如果已经是打开状态,进行判断是否关闭,还是保留打开状态 + if (isopen) { + if (-left <= position[1].width) { + openState(false, ins, ownerInstance) + } else { + openState(true, ins, ownerInstance) + } + return + } + // 如果是关闭状态,进行判断是否打开,还是保留关闭状态 + if (left <= value) { + openState(true, ins, ownerInstance) + } else { + openState(false, ins, ownerInstance) + } +} + +/** + * 设置按钮移动距离 + * @param {Object} value + * @param {Object} instance + * @param {Object} ownerInstance + */ +function buttonFold(value, instance, ownerInstance) { + var ins = ownerInstance.selectAllComponents('.button-hock'); + var state = instance.getState(); + var position = state.position; + var arr = []; + var w = 0; + for (var i = 0; i < ins.length; i++) { + if (!ins[i].getDataset().button) return + var btnData = JSON.parse(ins[i].getDataset().button) + + // fix by mehaotian TODO 在 app-vue 中,字符串转对象,需要转两次,这里先这么兼容 + if (typeof(btnData) === 'string') { + btnData = JSON.parse(btnData) + } + + var button = btnData[i] && btnData[i].width || 0 + w += button + arr.push(-w) + // 动态计算按钮组每个按钮的折叠动画移动距离 + var distance = arr[i - 1] + value * (arr[i - 1] / position[1].width) + if (i != 0) { + ins[i].setStyle({ + transform: 'translateX(' + distance + 'px)', + }) + } + } +} + +/** + * 开启状态 + * @param {Boolean} type + * @param {Object} ins + * @param {Object} ownerInstance + */ +function openState(type, ins, ownerInstance) { + var state = ins.getState() + var position = state.position + if (state.isopen === undefined) { + state.isopen = false + } + // 只有状态有改变才会通知页面改变状态 + if (state.isopen !== type) { + // 通知页面,已经打开 + ownerInstance.callMethod('change', { + open: type + }) + } + // 设置打开和移动状态 + state.isopen = type + + + // 添加动画类 + ins.addClass('ani'); + var owner = ownerInstance.selectAllComponents('.button-hock') + for (var i = 0; i < owner.length; i++) { + owner[i].addClass('ani'); + } + // 设置最终移动位置 + move(type ? -position[1].width : 0, ins, ownerInstance) + +} + +module.exports = { + sizeReady: sizeReady, + touchstart: touchstart, + touchmove: touchmove, + touchend: touchend +} diff --git a/components/uni-swipe-action-item/mpalipay.js b/components/uni-swipe-action-item/mpalipay.js new file mode 100644 index 0000000..2b494a4 --- /dev/null +++ b/components/uni-swipe-action-item/mpalipay.js @@ -0,0 +1,160 @@ +export default { + data() { + return { + isshow: false, + viewWidth: 0, + buttonWidth: 0, + disabledView: false, + x: 0, + transition: false + } + }, + watch: { + show(newVal) { + if (this.autoClose) return + if (newVal) { + this.open() + } else { + this.close() + } + }, + }, + created() { + if (this.swipeaction.children !== undefined) { + this.swipeaction.children.push(this) + } + }, + beforeDestroy() { + this.swipeaction.children.forEach((item, index) => { + if (item === this) { + this.swipeaction.children.splice(index, 1) + } + }) + }, + mounted() { + this.isopen = false + this.transition = true + setTimeout(() => { + this.getQuerySelect() + }, 50) + + }, + methods: { + onClick(index, item) { + this.$emit('click', { + content: item, + index + }) + }, + touchstart(e) { + let { + pageX, + pageY + } = e.changedTouches[0] + this.transition = false + this.startX = pageX + if (this.autoClose) { + this.swipeaction.closeOther(this) + } + }, + touchmove(e) { + let { + pageX, + } = e.changedTouches[0] + this.slide = this.getSlide(pageX) + if (this.slide === 0) { + this.disabledView = false + } + + }, + touchend(e) { + this.stop = false + this.transition = true + if (this.isopen) { + if (this.moveX === -this.buttonWidth) { + this.close() + return + } + this.move() + } else { + if (this.moveX === 0) { + this.close() + return + } + this.move() + } + }, + open() { + this.x = this.moveX + this.$nextTick(() => { + this.x = -this.buttonWidth + this.moveX = this.x + + if(!this.isopen){ + this.isopen = true + this.$emit('change', true) + } + }) + }, + close() { + this.x = this.moveX + this.$nextTick(() => { + this.x = 0 + this.moveX = this.x + if(this.isopen){ + this.isopen = false + this.$emit('change', false) + } + }) + }, + move() { + if (this.slide === 0) { + this.open() + } else { + this.close() + } + }, + onChange(e) { + let x = e.detail.x + this.moveX = x + if (x >= this.buttonWidth) { + this.disabledView = true + this.$nextTick(() => { + this.x = this.buttonWidth + }) + } + }, + getSlide(x) { + if (x >= this.startX) { + this.startX = x + return 1 + } else { + this.startX = x + return 0 + } + + }, + getQuerySelect() { + const query = uni.createSelectorQuery().in(this); + query.selectAll('.viewWidth-hook').boundingClientRect(data => { + + this.viewWidth = data[0].width + this.buttonWidth = data[1].width + this.transition = false + this.$nextTick(() => { + this.transition = true + }) + + if (!this.buttonWidth) { + this.disabledView = true + } + + if (this.autoClose) return + if (this.show) { + this.open() + } + }).exec(); + + } + } +} diff --git a/components/uni-swipe-action-item/mpother.js b/components/uni-swipe-action-item/mpother.js new file mode 100644 index 0000000..b503e02 --- /dev/null +++ b/components/uni-swipe-action-item/mpother.js @@ -0,0 +1,158 @@ +// #ifdef APP-NVUE +const dom = weex.requireModule('dom'); +// #endif +export default { + data() { + return { + uniShow: false, + left: 0 + } + }, + computed: { + moveLeft() { + return `translateX(${this.left}px)` + } + }, + watch: { + show(newVal) { + if (!this.position || JSON.stringify(this.position) === '{}') return; + if (this.autoClose) return + if (newVal) { + this.$emit('change', true) + this.open() + } else { + this.$emit('change', false) + this.close() + } + } + }, + mounted() { + this.position = {} + if (this.swipeaction.children !== undefined) { + this.swipeaction.children.push(this) + } + setTimeout(() => { + this.getSelectorQuery() + }, 100) + }, + beforeDestoy() { + this.swipeaction.children.forEach((item, index) => { + if (item === this) { + this.swipeaction.children.splice(index, 1) + } + }) + }, + methods: { + onClick(index, item) { + this.$emit('click', { + content: item, + index + }) + this.close() + }, + touchstart(e) { + const { + pageX + } = e.touches[0] + if (this.disabled) return + const left = this.position.content.left + if (this.autoClose) { + this.swipeaction.closeOther(this) + } + this.width = pageX - left + if (this.isopen) return + if (this.uniShow) { + this.uniShow = false + this.isopen = true + this.openleft = this.left + this.position.button.width + } + }, + touchmove(e, index) { + if (this.disabled) return + const { + pageX + } = e.touches[0] + this.setPosition(pageX) + }, + touchend() { + if (this.disabled) return + if (this.isopen) { + this.move(this.openleft, 0) + return + } + this.move(this.left, -40) + }, + setPosition(x, y) { + if (!this.position.button.width) { + return + } + // this.left = x - this.width + this.setValue(x - this.width) + }, + setValue(value) { + // 设置最大最小值 + this.left = Math.max(-this.position.button.width, Math.min(parseInt(value), 0)) + this.position.content.left = this.left + if (this.isopen) { + this.openleft = this.left + this.position.button.width + } + }, + move(left, value) { + if (left >= value) { + this.$emit('change', false) + this.close() + } else { + this.$emit('change', true) + this.open() + } + }, + open() { + this.uniShow = true + this.left = -this.position.button.width + this.setValue(-this.position.button.width) + }, + close() { + this.uniShow = true + this.setValue(0) + setTimeout(() => { + this.uniShow = false + this.isopen = false + }, 300) + }, + getSelectorQuery() { + // #ifndef APP-NVUE + const views = uni.createSelectorQuery().in(this); + views + .selectAll('.selector-query-hock') + .boundingClientRect(data => { + console.log(data) + this.position.content = data[1] + this.position.button = data[0] + if (this.autoClose) return + if (this.show) { + this.open() + } else { + this.close() + } + }) + .exec() + // #endif + // #ifdef APP-NVUE + dom.getComponentRect(this.$refs['selector-content-hock'], (data) => { + if (this.position.content) return + this.position.content = data.size + }) + dom.getComponentRect(this.$refs['selector-button-hock'], (data) => { + if (this.position.button) return + this.position.button = data.size + if (this.autoClose) return + if (this.show) { + this.open() + } else { + this.close() + } + }) + // #endif + } + } +} diff --git a/components/uni-swipe-action-item/mpwxs.js b/components/uni-swipe-action-item/mpwxs.js new file mode 100644 index 0000000..1d36095 --- /dev/null +++ b/components/uni-swipe-action-item/mpwxs.js @@ -0,0 +1,118 @@ +export default { + data() { + return { + position: [], + button: [] + } + }, + computed: { + pos() { + return JSON.stringify(this.position) + }, + btn() { + return JSON.stringify(this.button) + } + }, + watch: { + show(newVal) { + if (this.autoClose) return + let valueObj = this.position[0] + if (!valueObj) { + this.init() + return + } + valueObj.show = newVal + this.$set(this.position, 0, valueObj) + } + }, + created() { + if (this.swipeaction.children !== undefined) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.init() + + }, + beforeDestroy() { + this.swipeaction.children.forEach((item, index) => { + if (item === this) { + this.swipeaction.children.splice(index, 1) + } + }) + }, + methods: { + init() { + + setTimeout(() => { + this.getSize() + this.getButtonSize() + }, 50) + }, + closeSwipe(e) { + if (!this.autoClose) return + this.swipeaction.closeOther(this) + }, + + change(e) { + this.$emit('change', e.open) + let valueObj = this.position[0] + if (valueObj.show !== e.open) { + valueObj.show = e.open + this.$set(this.position, 0, valueObj) + } + }, + onClick(index, item) { + this.$emit('click', { + content: item, + index + }) + }, + appTouchStart(e) { + const { + clientX + } = e.changedTouches[0] + this.clientX = clientX + this.timestamp = new Date().getTime() + }, + appTouchEnd(e, index, item) { + const { + clientX + } = e.changedTouches[0] + // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题 + let diff = Math.abs(this.clientX - clientX) + let time = (new Date().getTime()) - this.timestamp + console.log(diff); + if (diff < 40 && time < 300) { + // console.log('点击'); + this.$emit('click', { + content: item, + index + }) + } + }, + getSize() { + const views = uni.createSelectorQuery().in(this) + views + .selectAll('.selector-query-hock') + .boundingClientRect(data => { + if (this.autoClose) { + data[0].show = false + } else { + data[0].show = this.show + } + this.position = data + }) + .exec() + }, + getButtonSize() { + const views = uni.createSelectorQuery().in(this) + views + .selectAll('.button-hock') + .boundingClientRect(data => { + this.button = data + }) + .exec() + } + } +} diff --git a/components/uni-swipe-action-item/uni-swipe-action-item.vue b/components/uni-swipe-action-item/uni-swipe-action-item.vue new file mode 100644 index 0000000..bda7581 --- /dev/null +++ b/components/uni-swipe-action-item/uni-swipe-action-item.vue @@ -0,0 +1,265 @@ + + + + \ No newline at end of file diff --git a/components/uni-swipe-action/uni-swipe-action.vue b/components/uni-swipe-action/uni-swipe-action.vue new file mode 100644 index 0000000..a2f09cb --- /dev/null +++ b/components/uni-swipe-action/uni-swipe-action.vue @@ -0,0 +1,58 @@ + + + + + \ No newline at end of file diff --git a/components/uni-swiper-dot/uni-swiper-dot.vue b/components/uni-swiper-dot/uni-swiper-dot.vue new file mode 100644 index 0000000..60f27e3 --- /dev/null +++ b/components/uni-swiper-dot/uni-swiper-dot.vue @@ -0,0 +1,198 @@ + + + + + \ No newline at end of file diff --git a/components/uni-tag/uni-tag.vue b/components/uni-tag/uni-tag.vue new file mode 100644 index 0000000..64a3473 --- /dev/null +++ b/components/uni-tag/uni-tag.vue @@ -0,0 +1,226 @@ + + + + + \ No newline at end of file diff --git a/components/uni-title/uni-title.vue b/components/uni-title/uni-title.vue new file mode 100644 index 0000000..eba2aa5 --- /dev/null +++ b/components/uni-title/uni-title.vue @@ -0,0 +1,170 @@ + + + + + \ No newline at end of file diff --git a/components/uni-transition/uni-transition.vue b/components/uni-transition/uni-transition.vue new file mode 100644 index 0000000..ad1cb55 --- /dev/null +++ b/components/uni-transition/uni-transition.vue @@ -0,0 +1,279 @@ + + + + + \ No newline at end of file diff --git a/dev/logo.png b/dev/logo.png new file mode 100644 index 0000000..6a033d2 Binary files /dev/null and b/dev/logo.png differ diff --git a/dev/test.keystore b/dev/test.keystore new file mode 100644 index 0000000..25037ab Binary files /dev/null and b/dev/test.keystore differ diff --git a/element/index.js b/element/index.js new file mode 100644 index 0000000..f4715c0 --- /dev/null +++ b/element/index.js @@ -0,0 +1,8 @@ +// 导入自己需要的组件 +import { Slider } from 'element-ui' +const element = { + install: function (Vue) { + Vue.use(Slider) + } +} +export default element \ No newline at end of file diff --git a/i18n/index.js b/i18n/index.js new file mode 100644 index 0000000..38af593 --- /dev/null +++ b/i18n/index.js @@ -0,0 +1,26 @@ +import vue from "vue"; +import VueI18n from "vue-i18n"; +vue.use(VueI18n) + +// 获取语言 +const requireComponent = require.context( + // 其组件目录的相对路径 + './lang', + // 是否查询其子目录 + true, + // 匹配基础组件文件名的正则表达式 + /[a-zA-Z]\w+\.(json)$/ +) +let messages = new Object(); +requireComponent.keys().forEach(fileName => { + // 获取组件的PascalCase命名 + const componentName = fileName.split('/').pop().replace(/\.\w+$/, ''); + messages[componentName] = requireComponent(fileName); +}) +// 语言注入 +let i18n = new VueI18n({ + locale: uni.getStorageSync('language')||'en', + // locale:'en', + messages: messages +}) +export default i18n; \ No newline at end of file diff --git a/i18n/lang/de.json b/i18n/lang/de.json new file mode 100644 index 0000000..2dfb0db --- /dev/null +++ b/i18n/lang/de.json @@ -0,0 +1,931 @@ +{ + "common": { + "D": "Tag", + "M": "Monat", + "Y": "Jahr", + "add": "hinzufügen zu", + "address": "Adresse", + "all": "Alle", + "amout": "Anzahl", + "cancel": "Stornieren", + "check": "zu untersuchen", + "code": "Code der Überprüfung", + "confirm": "bestimmen", + "date": "Datum", + "detail": "Details", + "email": "Briefkasten", + "enter": "Bitte geben", + "error": "fehlgeschlagen", + "getCode": "Verifikationscode erhalten", + "h": "Zeit", + "loadMore": "Laden Sie mehr", + "m": "Zweig", + "money": "Betrag des Geldes", + "more": "mehr", + "notData": "Keine Daten verfügbar", + "notMore": "Nicht mehr", + "phone": "Handy (Handy)", + "requestError": "Das Netzwerk ist beschäftigt. Bitte versuchen Sie es später noch einmal.", + "s": "Sekunde", + "save": "Erhaltung", + "select": "Bitte wählen", + "sendSuccess": "Gesendet erfolgreich", + "sms": "kurze Nachricht", + "submit": "Senden", + "success": "Erfolg", + "tips": "Erinnerung", + "total": "insgesamt", + "type": "Typ", + "copy": "Kopie", + "light": "weiß", + "dark": "schwarz", + "service": "Kundendienst", + "toDwon": "Möchten Sie auf die Download-Seite gehen", + "a0": "Bitte geben Sie den Kaufcode ein", + "a1": "Kopieren erfolgreich", + "a2": "Kopieren fehlgeschlagen", + "a3": "Aufzeichnungen über den Kauf", + "a4": "Betrag der Zahlung", + "a5": "Erhaltene Menge", + "a6": "Nummer des Kontos", + "a7": "Menge der Ladung", + "a8": "Gutschein für Zahlungen", + "a9": "Bitte geben Sie die Lademenge ein", + "b0": "Bitte laden Sie den Zahlungsbeleg hoch", + "b1": "Kauf{amount}Teile{name}Token verfügbar{rate}%Belohnung", + "b2": "Aktivitäten im Abonnement", + "b3": "Speichern erfolgreich", + "b4": "Speichern fehlgeschlagen", + "b5": "Einladung erstellen Poster", + "b6": "Poster auswählen", + "b8": "Zeit der Eröffnung", + "b9": "Zeit zum Schließen", + "c0": "Minimaler Ladebetrag: {num}. Ladewert kleiner als der Mindestbetrag wird nicht gepostet und kann nicht zurückgegeben werden.", + "c1": "Mindestbetrag der Rücknahme", + "c2": "Nummer der Version", + "c3": "Offenbar", + "c4": "Geschätzte Spanne", + "c5": "Ihre Überweisungsaufgabe wurde erfolgreich eingereicht, warten Sie bitte geduldig, und das Übertragungsergebnis wird per SMS oder E-Mail benachrichtigt. Bitte überprüfen Sie es sorgfältig. Bei Fragen wenden Sie sich bitte rechtzeitig an den Kundenservice." + }, + "base": { + "a0": "Titel", + "a1": "zurück", + "a2": "mehr", + "a3": "Angebot", + "a4": "Option", + "a5": "Neue Zone", + "a6": "Mitglied", + "a7": "Hochschule", + "a8": "Deal für", + "a9": "Aktuelle Preise", + "b0": "Auf und ab", + "b1": "Klicken Sie auf Anmelden", + "b2": "Willkommen bei", + "b3": "Bitte einloggen", + "b4": "Upgrade", + "b5": "Geld verlangen", + "b6": "Zurückziehen des Geldes", + "b7": "Erweiterung", + "b8": "Abzug der Dienstgebühr", + "b9": "verfügbar", + "c0": "Kauf", + "c1": "Meine Provision", + "c2": "Authentifizierung der Identität", + "c3": "Security Center", + "c4": "Benachrichtigung der Nachricht", + "c5": "Anschrift der Rücknahme", + "c6": "zur Einrichtung", + "c7": "Optional", + "c8": "Erfolgreich hinzugefügt", + "c9": "Abbrechen erfolgreich", + "d0": "Home Page", + "d1": "Transaktion", + "d2": "Aktiva", + "d3": "Bitte geben Sie Suchbegriffe ein", + "d4": "ganze", + "d5": "eine Hauptplatine", + "d6": "Gegenwert der Aktiva insgesamt", + "d7": "Kapitalverkehr (Kapitalverkehr)", + "d8": "Übertragung", + "d9": "Währung suchen", + "e0": "verstecken", + "e1": "Aktive Bilanz", + "e2": "gefroren", + "e3": "Gleichwertige", + "e4": "Konto des Vertrags", + "e5": "Umwandlung von Verträgen", + "e6": "Klasse der Bergleute", + "e7": "Mineral", + "h1": "Rechnung" + + }, + "accountSettings": { + "a0": "Einstellungen des Kontos", + "a1": "Portrait des Kopfes", + "a2": "Spitzname?", + "a3": "Wichtigste Kontonummer", + "a4": "Nummer des Handys", + "a5": "Entb眉ndelung", + "a6": "Bindung", + "a7": "Bindung an Mailbox", + "a8": "Konten wechseln", + "a9": "Loggen Sie sich", + "b0": "Spitzname 盲ndern", + "b1": "Bitte einen Spitznamen eingeben", + "b2": "Sprache", + "b3": "Kontakt Informationen", + "b4": "Routinemäßige Beratung", + "b5": "Kundendienst", + "b6": "Zusammenarbeit im Medienbereich", + "b7": "Wenn Sie Hilfe benötigen, kontaktieren Sie uns bitte" + }, + "assets": { + "a0": "Verwaltung der Rücknahmeadresse", + "a1": "Das Adressbuch kann verwendet werden, um Ihre gemeinsamen Adressen zu verwalten, und es besteht keine Notwendigkeit, mehrere Kontrollen durchzuführen, wenn Geld von den Adressen im Adressbuch entnommen wird.", + "a2": "Wenn {name} verwendet wird, dürfen nur die Adressen im Adressbuch einen Währungsrückzug einleiten.", + "a3": "Adresse löschen", + "a4": "Adresse hinzufügen", + "a5": "Bitte wählen Sie die zu löschende Adresse", + "a6": "Löscht die aktuell ausgewählte Adresse", + "a7": "fließendes Wasser", + "a8": "insgesamt", + "a9": "verfügbar", + "b0": "gefroren", + "b1": "Kapitalverkehr (Kapitalverkehr)", + "b2": "Konto des Vertrags", + "b3": "Konto des Leverage", + "b4": "Finanzielle Gesamtrechnung", + "b5": "Bitte geben Sie Suchbegriffe ein", + "b6": "Zurückziehen des Geldes", + "b7": "Bitte wählen Sie Kettentyp", + "b8": "Anschrift der Rücknahme", + "b9": "Bitte geben Sie die Adresse ein", + "c0": "Anzahl", + "c1": "Bilanz", + "c2": "Bitte geben Sie die", + "c3": "ganze", + "c4": "Service berechnen", + "c5": "Bitte überprüfen Sie sorgfältig und geben Sie die richtige Adresse der Brieftasche ein.", + "c6": "Das Senden einer nicht ausgeglichenen digitalen Währung an die Brieftasche-Adresse wird zu permanentem Verlust führen.", + "c7": "Die Bearbeitungsgebühr wird von dem Betrag des eingezogenen Geldes abgezogen.", + "c8": "Aufzeichnung des Entzugs", + "c9": "Zeit", + "d0": "Zustand", + "d1": "Gegenstand der Überprüfung", + "d2": "Erfolg", + "d3": "fehlgeschlagen", + "d4": "Weitere Informationen", + "d5": "Erfolgreich eingereicht, wird geprüft", + "d6": "edit", + "d7": "hinzufügen zu", + "d8": "Adresse", + "d9": "Bitte geben Sie die Adresse ein oder einfügen", + "e0": "Bemerkungen", + "e1": "Bitte geben Sie Ihre Kommentare ein", + "e2": "Bitte geben Sie die Adresse ein", + "e3": "Bitte füllen Sie die Anmerkungen aus", + "e4": "Operation erfolgreich", + "e5": "Geld verlangen", + "e6": "Scannen Sie den QR-Code oben, um die Ladeadresse zu erhalten", + "e7": "Adresse laden", + "e8": "Anzahl der geladenen Münzen", + "e9": "Bitte geben Sie den Betrag der abgerechneten Währung ein", + "f0": "Diese Adresse ist Ihre neueste Ladeadresse. Wenn das System die Aufladung empfängt, wird sie automatisch aufgezeichnet.", + "f1": "Der Transfer muss durch das gesamte Blockchain-Netzwerk bestätigt werden. Wenn Sie bei {num} Netzwerkbestätigung ankommen, wird Ihr {Name} automatisch auf das Konto hinterlegt.", + "f2": "Wenn ein Netzwerk bestätigt wird,", + "f3": "Bitte senden Sie nur {name} an diese Adresse. Wenn Sie andere digitale Währung an diese Adresse senden, wird dies zu permanenten Verlusten führen.", + "f4": "Aufzeichnung laden", + "f5": "Bitte nutzen Sie zum Senden das Netzwerk von {name}." + }, + "auth": { + "a0": "Authentifizierung der Identität", + "a1": "Authentifizierung des realen Namens", + "a2": "Nicht zertifiziert", + "a3": "Zertifiziert", + "a4": "Erweiterte Zertifizierung", + "a5": "Gegenstand der Überprüfung", + "a6": "Authentifizierung fehlgeschlagen", + "a7": "Nationalität", + "a8": "Bitte wählen Sie Ihre Nationalität", + "a9": "Real name", + "b0": "Bitte geben Sie Ihren richtigen Namen ein", + "b1": "Kennnummer (Kennnummer)", + "b2": "Bitte geben Sie die ID-Nummer ein", + "b3": "bestätigen", + "b4": "Zertifizierung erfolgreich", + "b5": "Bitte laden Sie das Foto Ihrer Personalausweise hoch", + "b6": "Bitte laden Sie die Rückseite des Zertifikats hoch", + "b7": "Bitte laden Sie Ihr Handgerät hoch", + "b8": "Stellen Sie sicher, dass das Foto ohne Wasserzeichen klar ist und der Oberkörper intakt ist", + "b9": "Die Dateigröße ist zu groß und darf nicht überschritten werden", + "c0": "Fehler beim Dateityp", + "c1": "Upload erfolgreich", + "c2": "Bitte laden Sie das Foto auf der Rückseite des Zertifikats hoch", + "c3": "Bitte laden Sie das Foto Ihrer Personalausweise hoch", + "c4": "Upload erfolgreich, bitte warten Sie auf das Audit", + "d0": "Datum der Geburt", + "d1": "Art des Dokuments", + "d2": "ID", + "d3": "Führerschein (Führerschein)", + "d4": "Reisepass", + "d5": "Anschrift des Wohnorts", + "d6": "Bitte geben Sie Ihre Wohnadresse ein", + "d7": "Stadt", + "d8": "Bitte betreten Sie Ihre Stadt", + "d9": "Postleitzahl (Postleitzahl)", + "d10": "Bitte geben Sie die Postleitzahl ein", + "d11": "Telefon Nummer", + "d12": "Bitte geben Sie die Mobiltelefonnummer ein", + "d13": "Bitte wählen", + "SelectAreaCode": "Vorwahl auswählen" + }, + "exchange": { + "a0": "Münzen", + "a1": "für den Kauf", + "a2": "Vertrag", + "a3": "Transaktion", + "a4": "Aktuelle Delegation", + "a5": "Historische Kommission", + "a6": "Erfolgreich hinzugefügt", + "a7": "Abbrechen erfolgreich", + "a8": "Ausgabe insgesamt", + "a9": "Umlauf insgesamt", + "b0": "Preis der Emission", + "b1": "Uhrzeit der Ausstellung", + "b2": "Adresse auf weißem Papier", + "b3": "Offizielle Website", + "b4": "kurze Einführung", + "b5": "kaufen", + "b6": "verkaufen", + "b7": "Preis der Kommission", + "b8": "Typ", + "b9": "Beschränkung des Handels", + "c0": "Marktbezogene Transaktion", + "c1": "Geschlossen", + "c2": "insgesamt", + "c3": "Kauf", + "c4": "Verkauf aus", + "c5": "Anzahl", + "c6": "Nahe zum besten Marktpreis", + "c7": "Preis insgesamt", + "c8": "Verfügbare Menge", + "c9": "Bruttowert (Bruttowert)", + "d0": "Melden Sie sich", + "d1": "Diagramm der Zeitfreigabe", + "d2": "Preis", + "d3": "Letzte Abmachung", + "d4": "Zeit", + "d5": "Richtung", + "d6": "Fester Preis", + "d7": "der Marktpreis", + "d8": "Bitte geben Sie den Preis ein", + "d9": "Bitte geben Sie die", + "e0": "Bitte geben Sie den Gesamtpreis ein", + "e1": "Erfolg der Kasse", + "e2": "Durchschnittspreis", + "e3": "höchste", + "e4": "Minimum", + "e5": "Betrag", + "e6": "Ordnung", + "e7": "Informationen über Währung", + "e8": "Minute", + "e9": "Stunde", + "f0": "Tag", + "f1": "Woche", + "f2": "Monat", + "f3": "Der Kaufpreis", + "f4": "Verkaufspreis", + "f5": "Transaktion in Währung", + "f6": "Bitte geben Sie Suchbegriffe ein", + "f7": "Deal für", + "f8": "Aktuelle Preise", + "f9": "Auf und ab", + "g0": "Optional", + "g1": "Meine Provision", + "g2": "Widerruf der Beauftragung", + "g3": "Betrieb", + "g4": "Widerruf", + "g5": "Die aktuelle Delegation stornieren", + "g6": "Erfolgreich storniert" + }, + "option": { + "a0": "Option", + "a1": "Entfernung Lieferung", + "a2": "Weitere Informationen", + "a3": "sei bärtisch", + "a4": "Rate der Rendite", + "a5": "Kauf", + "a6": "viele", + "a7": "leer", + "a8": "aktuell", + "a9": "Nächste Ausgabe", + "b0": "Siehe flach", + "b1": "Wahl des Preisanstiegs", + "b2": "Rate der Rendite", + "b3": "Menge des Käufes", + "b4": "Bitte geben Sie die", + "b5": "Bilanz", + "b6": "Erwartete Einnahmen", + "b7": "Jetzt kaufen", + "b8": "steigen", + "b9": "flach", + "c0": "Fall", + "c1": "Erfolgreicher Kauf", + "c2": "Details", + "c3": "Nummer der Bestellung", + "c4": "Preis der Eröffnung", + "c5": "Abschließender Preis", + "c6": "Zeit kaufen", + "c7": "Menge des Käufes", + "c8": "Art der Bestellung", + "c9": "Zustand", + "d0": "Ergebnis schließen", + "d1": "Menge der Abrechnung", + "d2": "Zeit der Lieferung", + "d3": "Weitere Informationen", + "d4": "Option kaufen", + "d5": "Warten auf die Lieferung", + "d6": "Meine Lieferung", + "d7": "Aufzeichnung der Lieferung", + "d8": "Minute", + "d9": "Stunde", + "e0": "Tag", + "e1": "Woche", + "e2": "Monat", + "e3": "Richtung", + "e4": "Auf und ab" + }, + "purchase": { + "a0": "Preis der Emission", + "a1": "Währung der Abonnements", + "a2": "Erwartete Online-Zeit", + "a3": "Beginn des Abonnements", + "a4": "Zeit zum Schließen", + "a5": "für den Kauf", + "a6": "Bitte wählen Sie die Währung des Abonnements", + "a7": "Menge des Käufes", + "a8": "Bitte geben Sie die Menge ein", + "a9": "ganze", + "b0": "Sofort anwenden", + "b1": "Zyklus der Abonnements", + "b2": "Projekt aufwärmen", + "b3": "Abonnement starten", + "b4": "Schließen Sie das Abonnement", + "b5": "Veröffentlichen von Ergebnissen", + "b6": "Details des Projekts", + "b7": "Verwenden oder nicht", + "b8": "Kauf", + "b9": "Erfolgreicher Kauf" + }, + "reg": { + "a0": "Registrieren Sie Ihr Telefon", + "a1": "E-Mail Registrierung", + "a2": "Handy", + "a3": "Bitte geben Sie die Telefonnummer ein", + "a4": "Briefkasten", + "a5": "Bitte geben Sie die Mailboxnummer ein", + "a6": "Verifizierungs-Schlüssel", + "a7": "Bitte geben Sie den Bestätigungscode ein", + "a8": "Passwort", + "a9": "Bitte geben Sie das Passwort ein", + "b0": "Kennwort bestätigen", + "b1": "Bitte bestätigen Sie Ihr Passwort", + "b2": "Referrer", + "b3": "Bitte geben Sie einen Empfehlungsgeber ein", + "b4": "Optional", + "b5": "Sie haben zugestimmt", + "b6": "Nutzungsbedingungen", + "b7": "Und verstehe unsere", + "b8": "Datenschutzvereinbarung", + "b9": "Eingetragen", + "c0": "Sie haben bereits ein Konto", + "c1": "Melden Sie sich sofort an", + "c2": "Bitte lesen Sie die Vereinbarung und stimmen Sie ihr zu", + "c3": "Bitte geben Sie Ihre Telefonnummer ein", + "c4": "Bitte geben Sie die Mailboxnummer ein", + "c5": "Registrierung erfolgreich", + "c6": "Einladungscode (erforderlich)", + "c7": "Bitte geben Sie den Einladungscode ein" + }, + "safe": { + "a0": "Lösen", + "a1": "Binden", + "a2": "Briefkasten", + "a3": "Mailboxnummer", + "a4": "Bitte geben Sie die Mailboxnummer ein", + "a5": "E-Mail-Bestätigungscode", + "a6": "Bitte geben Sie den Bestätigungscode ein", + "a7": "Verifizierungs-Schlüssel", + "a8": "Erfolgreich lösen", + "a9": "Erfolgreich binden", + "b0": "Passwort vergessen", + "b1": "Kontonummer", + "b2": "Bitte geben Sie Ihre E-Mail-Adresse ein", + "b3": "Neues Kennwort", + "b4": "Bitte geben Sie ein neues Passwort ein", + "b5": "Kennwort bestätigen", + "b6": "Bitte bestätigen Sie Ihr Passwort", + "b7": "Bestätigen Sie die Änderungen", + "b8": "Bitte geben Sie die richtige Telefon- oder E-Mail-Nummer ein", + "b9": "Google Authenticator", + "c0": "Betriebsmethode: Laden Sie Google Authenticator herunter und öffnen Sie es, scannen Sie den folgenden QR-Code oder geben Sie den geheimen Schlüssel manuell ein, um ein Bestätigungstoken hinzuzufügen", + "c1": "Schlüssel kopieren", + "c2": "Ich habe den Schlüssel ordnungsgemäß gespeichert und er wird nicht wiederhergestellt, wenn er verloren geht", + "c3": "Nächster Schritt", + "c4": "SMS-Bestätigungscode", + "c5": "Google-Bestätigungscode", + "c6": "Bindung bestätigen", + "c7": "Sicherheitscenter", + "c8": "Passwort", + "c9": "ändern", + "d0": "Einrichten", + "d1": "Transaktions Passwort", + "d2": "Handy", + "d3": "Erfolgreich modifiziert", + "d4": "Telefonnummer", + "d5": "Bitte geben Sie die Telefonnummer ein", + "d6": "Bitte geben Sie den SMS-Bestätigungscode ein", + "d7": "schließen", + "d8": "Einschalten", + "d9": "Überprüfung", + "e0": "SMS", + "e1": "Erfolgreich geschlossen", + "e2": "Erfolgreich geöffnet", + "e3": "bestätigen", + "e4": "Erfolgreich einstellen" + }, + "transfer": { + "a0": "Datensatz übertragen", + "a1": "Erfolg", + "a2": "Menge", + "a3": "Richtung", + "a4": "Kontovermögen", + "a5": "Vertragskonto", + "a6": "Margin-Konto", + "a55": "nach Menge verkaufen", + "Aa66": "nach Betrag verkaufen", + "a7": "Bankkonto", + "a8": "Transfer", + "a9": "Von", + "b0": "zu", + "b1": "Überweisungswährung", + "b2": "Balance", + "b3": "Alle", + "b4": "Übertragen" + }, + "notice": { + "a0": "Einzelheiten", + "a1": "Benachrichtigung", + "a2": "Ankündigung", + "a3": "Nachrichten" + }, + "invite": { + "a0": "Laden Sie Freunde mit exklusiven Handelsrabatten ein", + "a1": "Partner", + "a2": "Exklusiver Handelsrabatt", + "a3": "allgemeiner Benutzer", + "a4": "Meine Identität", + "a5": "Exklusivstatus", + "a6": "Mein Einladungscode", + "a7": "Kopieren Sie den QR-Code der Einladung", + "a8": "Einladungslink kopieren", + "a9": "Meine Beförderung", + "b0": "Gesamtzahl der Werbeaktionen", + "b1": "Menschen", + "b2": "Gesamteinkommensäquivalent", + "b3": "Promotion-Rekord", + "b4": "Direkte Einladung", + "b5": "Rabattdatensatz", + "b6": "Klasse", + "b7": "Pegeleinstellung", + "b8": "Beförderungsbedingungen", + "b9": "Dividendenrechte", + "c0": "Spitzname", + "c1": "Anzahl der Promotionen", + "c2": "Einkommensäquivalent", + "c3": "Einladungsprotokoll", + "c4": "Rabattdatensatz", + "c5": "Beschreibung der Levelrechte", + "c6": "Klasse", + "c7": "Rechte und Interessen", + "c8": "Beschreibung", + "c9": "Meine Rechte" + }, + "help": { + "a0": "Einzelheiten", + "a1": "Hochschule", + "a2": "Einstufung", + "a3": "" + }, + " login": { + "a0": "Handy- oder E-Mail-Nummer", + "a1": "Bitte geben Sie Ihre Telefon- oder E-Mail-Nummer ein", + "a2": "Passwort", + "a3": "Bitte geben Sie das Passwort ein", + "a4": "Einloggen", + "a5": "Passwort vergessen", + "a6": "Kein Account", + "a7": "Jetzt registrieren", + "a8": "Handy", + "a9": "Briefkasten", + "b0": "durchführen" + }, + "contract": { + "a0": "Öffnen Sie eine Position", + "a1": "Position", + "a2": "Kommission", + "a3": "Geschichte", + "a4": "Vertragstransaktion", + "a5": "Erfolgreich geöffnet", + "a6": "Art der Transaktion", + "a7": "Geschäft abgeschlossen", + "a8": "Gesamtprovision", + "a9": "Durchschnittlicher Transaktionspreis", + "b0": "Provisionspreis", + "b1": "Spanne", + "b2": "Bearbeitungsgebühr", + "b3": "Status", + "b4": "Betriebs", + "b5": "Bestellung stornieren", + "b6": "Widerrufen", + "b7": "Nicht verkauft", + "b8": "Teiltransaktion", + "b9": "Alle Transaktionen", + "c0": "Mehr öffnen", + "c1": "Flache Luft", + "c2": "Freifläche", + "c3": "Pindo", + "c4": "Tipps", + "c5": "Gibt an, ob die aktuelle Bestellung storniert werden soll", + "c6": "Widerruf erfolgreich", + "c7": "Gewinn-und Verlust", + "c8": "teilt es", + "c9": "Angaben zur Kommission", + "d0": "Keine Daten", + "d1": "Preis", + "d2": "Menge", + "d3": "Transaktionszeit", + "d4": "Nutzerrechte", + "d5": "Nicht realisierter Gewinn und Verlust", + "d6": "Risikorate", + "d7": "Marktpreis", + "d8": "Zhang", + "d9": "Besetzen Sie den Rand", + "e0": "Bullish", + "e1": "Kann mehr öffnen", + "e2": "Bärisch", + "e3": "Öffnungsfähig", + "e4": "Verfügbar", + "e5": "Transfer", + "e6": "Finanzierungsrate", + "e7": "Entfernungsabrechnung", + "e8": "viele", + "e9": "Luft", + "f0": "Überweisung", + "f1": "Taschenrechner", + "f2": "Über den Vertrag", + "f3": "Risikoschutzfonds", + "f4": "Geschichte der Finanzierungskosten", + "f5": "Ordentliche Provision", + "f6": "Marktordnung", + "f7": "Ob zu", + "f8": "s Preis", + "f9": "Öffnen Sie eine Position mit Mehrfachhebel", + "g0": "Mehr öffnen", + "g1": "Freifläche", + "g2": "Erfolgreich in Betrieb genommen", + "g3": "Nur den aktuellen Vertrag anzeigen", + "g4": "Keping", + "g5": "Kommission", + "g6": "Durchschnittlicher offener Preis", + "g7": "Abrechnungsgrundpreis", + "g8": "Geschätzte starke Parität", + "g9": "Abgerechnetes Einkommen", + "h0": "Rendite", + "h1": "Halt", + "h2": "Stop Loss", + "h3": "Liquidation", + "h4": "Flacher Marktpreis", + "h5": "Nehmen Sie Gewinn und Stop Loss", + "h6": "Niveau", + "h7": "Bitte geben Sie den Schlusskurs ein", + "h8": "Preis begrenzen", + "h9": "Bitte geben Sie die Schlussmenge ein", + "i0": "Keping", + "i1": "Durchschnittlicher Eröffnungspreis", + "i2": "Letzter Transaktionspreis", + "i3": "Bitte geben Sie den Preis ein", + "i4": "Take Profit Trigger Price", + "i5": "Marktpreis zu", + "i6": "Löst die Take-Profit-Order aus und der Gewinn und Verlust wird nach der Transaktion geschätzt", + "i7": "Stop-Loss-Trigger-Preis", + "i8": "Zum Zeitpunkt der Transaktion wird ein Stop-Loss-Auftrag ausgelöst, und der Gewinn und Verlust wird nach der Transaktion erwartet", + "i9": "bestimmen", + "j0": "Erfolgreich geschlossen", + "j1": "Ob der Marktpreis flach ist", + "j2": "Zenpei", + "j3": "Erfolg", + "j4": "Erfolgreich einstellen", + "j5": "Magische Berechnungen, unübertroffen", + "j6": "tun", + "j7": "Schlusskurs", + "j8": "Handelsplattform für digitale Assets", + "j9": "Wenn {name1} auf den feurigen Weg von {name2} {name3} zum Aufstieg trifft", + "k0": "Eröffnungskurs", + "k1": "letzter Preis", + "k2": "Scannen Sie den Code, um mehr zu erfahren", + "k3": "Abrechnungsgewinn und -verlust", + "k4": "Der Screenshot ist erfolgreich und wurde lokal gespeichert", + "k5": "Screenshot fehlgeschlagen", + "k6": "Lang drücken, um einen Screenshot zu machen", + "k7": "One-Key-Vollnivellierung", + "k8": "Ein-Klick-Rückwärtsgang", + "k9": "Ob One-Key-Full-Leveling", + "l0": "Voller Erfolg", + "l1": "Ob eine Taste umkehrt", + "l2": "Erfolg umkehren", + "l3": "Flache Luft", + "l4": "Pindo" + }, + "otc": { + "a0": "Werbung", + "a1": "Bestellung", + "a2": "Währung der Transaktion", + "a3": "Meine Bestellung", + "a4": "Meine Anzeige", + "a5": "Kauf", + "a6": "verkaufen", + "a7": "insgesamt", + "a8": "Überschuss", + "a9": "Grenzen", + "b0": "Preis pro Einheit", + "b1": "Methode der Zahlung", + "b2": "Betrieb", + "b3": "insgesamt", + "b4": "Bitte wählen Sie die Zahlungsmethode", + "b5": "Bitte geben Sie die", + "b6": "eine Bestellung aufgeben", + "b7": "Alipay", + "b8": "WeChatGenericName", + "b9": "Karte der Bank", + "c0": "Erfolg der Kasse", + "c1": "Zustand", + "c2": "Nummer der Werbung", + "c3": "Preis insgesamt", + "c4": "Anzahl", + "c5": "Zeit der Veröffentlichung", + "c6": "Aus dem Regal", + "c7": "aufgehoben", + "c8": "Im Handel", + "c9": "Abgeschlossen", + "d0": "Erinnerung", + "d1": "Ist die aktuelle Anzeige entfernt", + "d2": "bestimmen", + "d3": "Stornieren", + "d4": "Erfolgreich storniert", + "d5": "Rechtliches Währungskonto", + "d6": "gefroren", + "d7": "Nummer des Alipay-Kontos", + "d8": "Bitte geben Sie die Kontonummer ein", + "d9": "vollständiger Name", + "e0": "Bitte geben Sie Ihren Namen ein", + "e1": "Code der Zahlung", + "e2": "Bindung", + "e3": "Konto Wechat", + "e4": "Name der Bank", + "e5": "Bitte geben Sie den Banknamen ein", + "e6": "Zweig zur Kontoeröffnung", + "e7": "Bitte geben Sie die Kontoeröffnung ein", + "e8": "Nummer der Bankkarte", + "e9": "Bitte geben Sie die Bankkartennummer ein", + "f0": "erfolgreich editiert", + "f1": "Erfolgreich hinzugefügt", + "f2": "Verkauf aus", + "f3": "Kauf", + "f4": "Details zur Bestellung", + "f5": "Nummer der Bestellung", + "f6": "Nummer des Kontos", + "f7": "Bank der Einlagen", + "f8": "Restliche Zeit", + "f9": "Zweig", + "g0": "Sekunde", + "g1": "Gutschein hochladen", + "g2": "Bestätigung der Zahlung", + "g3": "Stornierung der Bestellung", + "g4": "Bestätigen Sie den Empfang", + "g5": "Nicht eingegangen", + "g6": "Löscht die aktuelle Bestellung", + "g7": "Bestellung storniert", + "g8": "Bestätigung der laufenden Zahlung", + "g9": "Operation erfolgreich", + "h0": "Nach Bestätigung der Einziehung werden die Vermögenswerte automatisch verkauft und übertragen.", + "h1": "Nach Bestätigung, dass die Zahlung nicht eingegangen ist, wird der Auftrag automatisch in den Beschwerdemodus eingegeben", + "h2": "Bestellung des Vertriebs", + "h3": "Bestellung bestellen", + "h4": "Kaufauftrag für Werbung", + "h5": "Verkaufsauftrag der Werbung", + "h6": "Zeit", + "h7": "Details", + "h8": "ganze", + "h9": "Geschlossen", + "i0": "Zu zahlen", + "i1": "Zu bestätigen", + "i2": "Gegenstand der Beschwerde", + "i3": "Art der Werbung", + "i4": "Bitte wählen Sie den Transaktionstyp", + "i5": "Bitte wählen Sie Transaktionswährung", + "i6": "Preis", + "i7": "Bitte geben Sie den Preis ein", + "i8": "Mindestpreis", + "i9": "Bitte geben Sie den niedrigsten Preis ein", + "j0": "Höchster Preis", + "j1": "Bitte geben Sie den höchsten Preis ein", + "j2": "Bemerkungen", + "j3": "Bitte geben Sie Ihre Kommentare ein", + "j4": "Freigabe", + "j5": "Erfolgreich veröffentlicht", + "j6": "Methode der Zahlung", + "j7": "Mindestmenge", + "j8": "Maximale Menge", + "j9": "Bitte geben Sie das minimale Transaktionsvolumen ein", + "k0": "Bitte geben Sie das maximale Handelsvolumen ein" + }, + "first": { + "a0": "Gehe zum richtigen Namen", + "a1": "Über uns", + "a2": "Willkommen!", + "a3": "Einstellung von Gewinn und Verlust stoppen", + "a4": "Handel zu aktuellem Preis", + "a5": "Position halten", + "a6": "Management von Bestellungen", + "a7": "Alle Aufträge", + "a8": "Historische Aufzeichnungen", + "a9": "mehrere", + "b0": "Bist du sicher, dass du dich einloggen willst?", + "b1": "Anmelden oder registrieren", + "b2": "Hallo, willkommen bei CATYcoin", + "b3": "Betrag", + "b4": "Index der Spots", + "b5": "Index der Verträge", + "b6": "Unterstützung mehrerer Einkaufsmethoden", + "b7": "Schnell kaufen", + "b8": "nachhaltig", + "b9": "Der aktuelle Bereich ist noch nicht geöffnet", + "c0": "Kauf", + "c1": "Verkauf aus", + "c2": "Zeit", + "c3": "Preis insgesamt", + "c4": "Anzahl", + "c5": "Mark Preis", + "c6": "Umgesetzte Aktiva", + "c7": "Volumen" + }, + "recharge": { + "a0": "Währung wechseln", + "a1": "*Adressänderung kann nur empfangen werden", + "a2": "Wenn Sie Ihr Vermögen in anderen Währungen aufladen, können Sie es nicht mehr abrufen!", + "a3": "Erc20 wird für die Sammlung empfohlen", + "a4": "Adresse kopieren", + "a5": "*Bitte vergewissern Sie sich, dass die Adresse und die Informationen korrekt sind, bevor sie übertragen werden!Einmal verlegt, ist es unwiderruflich!", + "a6": "Bitte regenerieren" + }, + "currency": { + "a0": "Legale Währungstransaktion", + "a1": "Ich möchte es kaufen", + "a2": "Ich will verkaufen", + "a3": "Ein Klick Münzkauf", + "a4": "Ein Klick Münze verkaufen", + "a5": "Einkauf nach Menge", + "a6": "Käufe nach Betrag", + "a7": "Bitte geben Sie die Bestellmenge ein", + "a8": "Bitte geben Sie den Kaufbetrag ein", + "a9": "Bitte geben Sie die Verkaufsmenge ein", + "b0": "Bitte geben Sie den Verkaufsbetrag ein", + "b1": "Preis pro Einheit", + "b2": "0 Handling charge kaufen", + "b3": "0 Provisionsverkauf", + "b4": "Nicht genügend verfügbare Bilanz", + "b5": "Bitte füllen Sie zuerst die erweiterte Zertifizierung aus", + "b6": "De Authentifizierung", + "b7": "Kauf bestätigen", + "b8": "Bestätigen Verkauf" + }, + "cxiNewText": { + "a0": "Top 10", + "a1": "5 Millionen+", + "a2": "< 0.10%", + "a3": "200+", + "a4": "Globales Ranking", + "a5": "Benutzer vertrauen uns", + "a6": "Extrem niedrige Gebühren", + "a7": "Länder", + "a21": "Jetzt Geld verdienen", + "a22": "Erstellen Sie ein persönliches Kryptowährungsportfolio", + "a23": "Kaufen, handeln und halten Sie über 100 Kryptowährungen", + "a24": "Laden Sie Ihr Konto auf", + "a25": "Melden Sie sich per E-Mail an", + "a38": "Starten Sie Transaktionen jederzeit und überall.", + "a39": "Beginnen Sie jederzeit sicher und bequem mit dem Handel über unsere APP und Webseite", + "a41": "Vertrauenswürdige Handelsplattform für Kryptowährungen", + "a42": "Wir setzen uns dafür ein, die Sicherheit der Benutzer mit strengen Protokollen und branchenführenden technischen Maßnahmen zu gewährleisten.", + "a43": "Benutzersicherheits-Asset-Fonds", + "a44": "Wir speichern 10 % aller Transaktionsgebühren in sicheren Vermögensfonds, um einen teilweisen Schutz der Benutzergelder zu gewährleisten", + "a45": "Personalisierte Zugangskontrolle", + "a46": "Die personalisierte Zugriffskontrolle schränkt die Geräte und Adressen ein, die auf persönliche Konten zugreifen, sodass Benutzer keine Sorgen haben müssen.", + "a47": "Erweiterte Datenverschlüsselung", + "a48": "Persönliche Transaktionsdaten werden durch Ende-zu-Ende-Verschlüsselung gesichert und der Zugriff auf persönliche Informationen ist auf den Einzelnen beschränkt.", + "a57": "Klicken Sie hier, um zu gehen", + "a71": "Einsteigerhandbuch ", + "a72": "Beginnen Sie sofort mit dem Erlernen des digitalen Devisenhandels ", + "a77": "Wie kaufe ich digitale Währung", + "a78": "Wie verkauft man digitale Währungen ", + "a79": "So handeln Sie mit digitalen Währungen", + "a80": "Marktplatz", + "a81": "24-Stunden-Markttrend", + "a82": "Fügen Sie Ihrem Wallet Kryptowährungsgelder hinzu und beginnen Sie sofort mit dem Handel" + }, + "homeNewText": { + "aa1": "Kryptowährungstor", + "aa2": "Sicherer, schneller und einfacher Handel mit über 100 Kryptowährungen", + "aa3": "Registrieren Sie sich per E-Mail", + "aa4": "Beginnen Sie jetzt mit dem Handel", + "aa5": "Markt Trend", + "aa6": "Digital Asset Quote Express", + "aa7": "Währung", + "bb1": "Aktueller Preis (USD)", + "bb2": "24-Stunden-Erhöhung", + "bb3": "24-Stunden-Handelsvolumen", + "bb4": "Kryptowährungsaustausch für alle", + "bb5": "Beginnen Sie hier mit dem Handel und erleben Sie eine bessere Kryptowährungsreise", + "bb6": "Persönlich", + "bb7": "Eine Kryptowährungsbörse für alle. Die vertrauenswürdigste führende Handelsplattform mit einer großen Auswahl an Währungen", + "cc1": "Geschäft", + "cc2": "Entwickelt für Unternehmen und Institutionen. Bereitstellung von Kryptolösungen für institutionelle Anleger und Unternehmen", + "cc3": "Entwickler", + "cc4": "Entwickelt für Entwickler, damit Entwickler die Tools und APIs der Zukunft von Web3 erstellen können", + "cc6": "QR-Code scannen", + "cc7": "Laden Sie die Android/IOS-App herunter", + "dd1": "Sicher und stabil, ohne Unfälle", + "dd2": "Mehrere Sicherheitsstrategien und eine 100-prozentige Reservegarantie stellen sicher, dass es seit seiner Gründung zu keinen Sicherheitsvorfällen gekommen ist.", + "dd3": "Handeln Sie Krypto-Assets einfach und bequem", + "dd4": "Bei CATYcoin sind die Produkte leicht zu verstehen, der Transaktionsprozess bequem und die Blockchain-Asset-Service-Plattform aus einer Hand", + "dd5": "Derivate", + "dd6": "Sie können Verträge auf über 100 Kryptowährungen mit bis zu 150-facher Hebelwirkung handeln und hohe Gewinne erzielen", + "ee1": "Unterstützung mehrerer Terminals", + "ee2": "Handeln Sie jederzeit und überall mit digitalen Vermögenswerten", + "ee3": "Unterstützt eine breite Palette von Vermögenswerttypen, wobei alle Währungsinformationen verfügbar sind", + "ee4": "Verstehen Sie schnell den Prozess des Handels mit digitalen Vermögenswerten", + "ee5": "Beginnen Sie Ihre Verschlüsselungsreise", + "ee6": "Grafische Überprüfung", + "ee7": "Grafische Überprüfung", + "dd1": "Verifizierung erfolgreich", + "dd2": "Verifizierung fehlgeschlagen", + "dd3": "Bitte führen Sie die Sicherheitsüberprüfung durch", + "dd4": "Schieben Sie den Schieberegler, um das Rätsel zu lösen", + + "hh0": "Die Zukunft des Geldes ist da", + "hh1": "Auf der Suche nach guten Handelsmöglichkeiten", + "hh2": "Sicher, schnell und einfach mit über 100 Kryptowährungen handeln", + "hh3": "Probieren Sie jetzt unsere Kryptowährungsbörse aus", + "hh4": "Beginnen Sie schnell Ihre Handelsreise", + "hh5": "{name}-Konto registrieren", + "hh6": "Registrieren", + "hh7": "Entdecken Sie hier unsere Produkte und Dienstleistungen", + "hh8": "Sicherheit ist keine Kleinigkeit. Um die Sicherheit Ihrer Vermögenswerte und Informationen zu schützen, werden wir endlose Anstrengungen unternehmen", + "hh9": "Auf Lager", + "hh10": "Kryptowährungen mit umfassenden Tools handeln.", + "hh11": "Derivate", + "hh12": "Handeln Sie Verträge mit der weltbesten Kryptowährungsbörse.", + "hh13": "Handelsroboter", + "hh14": "Erzielen Sie passive Gewinne, ohne den Markt zu überwachen.", + "hh15": "Münzen kaufen", + "hh16": "Kryptowährungen mit einem Klick kaufen.", + "hh17": "{nem} Münzen verdienen", + "hh18": "Erzielen Sie stabile Erträge durch Investitionen bei professionellen Vermögensverwaltern.", + "hh19": "Leverage-Handel", + "hh20": "Leihen, handeln und zurückzahlen, nutzen Sie Ihr Vermögen mit Margin-Handel.", + "hh21": "Ihr vertrauenswürdiger und sicherer Kryptowährungsaustausch", + "hh22": "Sichere Asset-Speicherung", + "hh23": "Unsere führenden Verschlüsselungs- und Speichersysteme stellen sicher, dass Ihre Vermögenswerte immer sicher und vertraulich sind.", + "hh24": "Starke Kontosicherheit", + "hh25": "Wir halten uns an die höchsten Sicherheitsstandards und implementieren die strengsten Sicherheitsmaßnahmen, um die Sicherheit Ihres Kontos zu gewährleisten.", + "hh26": "Vertrauenswürdige Plattform", + "hh27": "Wir verfügen über eine sichere Designgrundlage, um eine schnelle Erkennung und Reaktion auf jeden Cyberangriff zu gewährleisten.", + "hh28": "Nachweis der Vermögensreserve – Vermögenstransparenz", + "hh29": "Proof of Reserve (PoR) ist eine weit verbreitete Methode zum Nachweis der Verwahrung von Blockchain-Vermögenswerten. Das bedeutet, dass {name} über Mittel verfügt, die alle Benutzervermögenswerte in unseren Büchern abdecken.", + "hh30": "Der Handel kann jederzeit und überall erfolgen", + "hh31": "Ob APP oder WEB, Sie können Ihre Transaktion schnell starten", + "hh32": "Starten Sie jetzt Ihre digitale Währungsreise", + "hh33": "Jetzt registrieren", + "hh34": "Wir sind der vertrauenswürdigste Ort für Anleger, wenn es um den Kauf, Verkauf und die Verwaltung von Kryptowährungen geht", + "hh35": "Per E-Mail registrieren", + "hh36": "FAQ", + "hh41": "CATYcoin, jederzeit und überall handeln", + "hh42": "Jetzt handeln", + "hh43": "Scannen Sie den QR-Code, um CATYcoin APP herunterzuladen", + "hh37": "Globales Ranking", + "hh38": "Benutzer vertrauen uns", + "hh39": "Extrem niedrige Gebühren", + "hh40": "Länder" + } +} \ No newline at end of file diff --git a/i18n/lang/en.json b/i18n/lang/en.json new file mode 100644 index 0000000..cbeb3cc --- /dev/null +++ b/i18n/lang/en.json @@ -0,0 +1,934 @@ +{ + "common": { + "D": "Day", + "M": "Month", + "Y": "Year", + "add": "Add", + "address": "Address", + "all": "All", + "amout": "Amount", + "cancel": "Cancel", + "check": "Check", + "code": "Verification Code", + "confirm": "Confirm", + "date": "Date", + "detail": "Detail", + "email": "Mailbox", + "enter": "Please enter", + "error": "Failed", + "getCode": "Get Verification Code", + "h": "Hour", + "loadMore": "Load More", + "m": "Minute", + "money": "Amount", + "more": "More", + "notData": "No data temporarily", + "notMore": "No More", + "phone": "Mobile", + "requestError": "The network is busy, please try again later", + "s": "second", + "save": "Save", + "select": "Please select", + "sendSuccess": "Send successfully", + "sms": "SMS", + "submit": "Submit", + "success": "Success", + "tips": "Warm Tips", + "total": "Total", + "type": "Type", + "copy": "Copy", + "light": "light", + "dark": "dark", + "service": "Service", + "toDwon": "Do you want to go to the download page", + "toDwon1": "Do you want to go to the authentication page", + "a0": "Please enter the purchase code", + "a1": "Copy succeeded", + "a2": "copy failed", + "a3": "Purchase records", + "a4": "Payment amount", + "a5": "Quantity received", + "a6": "account number", + "a7": "Recharge quantity", + "a8": "Payment voucher", + "a9": "Please input recharge quantity", + "b0": "Please upload the payment voucher", + "b1": "purchase{amount}Pieces{name}Token available{rate}%reward", + "b2": "Subscription activities", + "b3": "Saved successfully", + "b4": "Save failed", + "b5": "Generate invitation Poster", + "b6": "Select Poster", + "b8": "Opening time", + "b9": "Closing time", + "c0": "Minimum recharge amount: {num}. Recharge less than the minimum amount will not be posted and cannot be returned.", + "c1": "Minimum withdrawal amount", + "c2": "Version number", + "c3": "Openable", + "c4": "Size", + "c5": "your transfer order has been submitted successfully, please wait patiently, and the transfer result will be notified by SMS or e-mail. Please check it carefully. If you have any questions, please contact the customer service in time.", + "c6": "Proportion of increase", + "c7": "Current valuation" + }, + "base": { + "a0": "Title", + "a1": "Return", + "a2": "More", + "a3": "Quotes", + "a4": "Options", + "a5": "Tap a new zone", + "a6": "Member", + "a7": "College", + "a8": "Trading Pair", + "a9": "Latest Price", + "b0": "Rise and fall", + "b1": "Click to log in", + "b2": "Welcome to", + "b3": "Please log in", + "b4": "Upgrade", + "b5": "Deposit", + "b6": "Withdraw", + "b7": "Promotion", + "b8": "Deduct the handling fee", + "b9": "Available", + "c0": "Buy", + "c1": "My wallets", + "c2": "Identity Authentication", + "c3": "Security Center", + "c4": "Message Notification", + "c5": "Withdraw Address", + "c6": "Settings", + "c7": "Optional", + "c8": "Added successfully", + "c9": "Cancelled successfully", + "d0": "Home", + "d1": "Transaction", + "d2": "Wallets", + "d3": "Please enter search keywords", + "d4": "All", + "d5": "Motherboard", + "d6": "Total Value", + "d7": "Spot Account", + "d8": "Transfer", + "d9": "Search Coin", + "e0": "Hide", + "e1": "Balance Assets", + "e2": "Freeze", + "e3": "Valution", + "e4": "Derivatives Account", + "e5": "Contract conversion", + "e6": "Miner Level", + "e7": "Miner", + "h1": "Bill", + "h2": "name" + }, + "accountSettings": { + "a0": "Account Settings", + "a1": "Portrait", + "a2": "Nickname", + "a3": "Master Account", + "a4": "Mobile Number", + "a5": "Untie", + "a6": "Binding", + "a7": "Mailbox binding", + "a8": "Switch account", + "a9": "Log Out", + "b0": "Modify Nickname", + "b1": "Please enter a nickname", + "b2": "Language", + "b3": "Contact Information", + "b4": "Routine Consultation", + "b5": "Customer Service", + "b6": "Media Cooperation", + "b7": "If you need any help, please contact us!" + }, + "assets": { + "a0": "Withdrawal address management", + "a1": "The address book can be used to manage your frequently used addresses. There is no need to perform multiple verifications when initiating withdrawals from addresses in the address book", + "a2": "Automatic withdrawal is supported. When using {name} to withdraw, only addresses in the web address book are allowed to initiate withdrawals", + "a3": "Delete Address", + "a4": "Add Address", + "a5": "Please select the address to delete", + "a6": "Whether to delete the currently selected address", + "a7": "Flowing Water", + "a8": "Total", + "a9": "Available", + "b0": "Freeze", + "b1": "Funding Account", + "b2": "Contract Account", + "b3": "Margin Account", + "b4": "Wealth Management Account", + "b5": "Please enter search keywords", + "b6": "Withdrawal", + "b7": "Please select the chain type", + "b8": "Withdraw Address", + "b9": "Please enter address", + "c0": "Quantity", + "c1": "Balance", + "c2": "Please enter the quantity", + "c3": "All", + "c4": "Handling Fee", + "c5": "Please double check and enter the correct wallet address for withdrawal.", + "c6": "Sending non-corresponding digital currency to the wallet address will cause permanent loss.", + "c7": "Withdrawal fees will be deducted from the amount of withdrawals.", + "c8": "Withdrawal Record", + "c9": "Time", + "d0": "Status", + "d1": "Under review", + "d2": "Success", + "d3": "Failed", + "d4": "See more", + "d5": "Submitted successfully, under review", + "d6": "Edit", + "d7": "Add", + "d8": "Address", + "d9": "Please enter or paste the address", + "e0": "Remarks", + "e1": "Please enter a note", + "e2": "Please fill in the address", + "e3": "Please fill in the remarks", + "e4": "Operation successful", + "e5": "Deposit", + "e6": "Scan the QR code above to get the deposit address", + "e7": "coin deposit address", + "e8": "Amount of Deposit", + "e9": "Please enter the deposit amount", + "f0": "This address is your latest recharge address. When the system receives recharge, it will be automatically credited to the account.", + "f1": "The transfer needs to be confirmed by the entire blockchain network. When it reaches {num} network confirmations, your {name} will be automatically deposit into the account.", + "f2": "When a network is confirmed, yours", + "f3": "Please only send {name} to this address, sending other digital currencies to this address will cause permanent loss.", + "f4": "Token Deposit Record", + "f5": "Please use {name}'s network to send." + }, + "auth": { + "a0": "Identity Authentication", + "a1": "Real-name authentication", + "a2": "Unverfied", + "a3": "Verified", + "a4": "Advanced Certification", + "a5": "Under review", + "a6": "Authentication failed", + "a7": "Nationality", + "a8": "Please select nationality", + "a9": "Real Name", + "b0": "Please enter your real name", + "b1": "Certificate Number", + "b2": "Please enter the ID number", + "b3": "Confirm", + "b4": "Authentication successful", + "b5": "Please upload the front photo of the ID", + "b6": "Please upload the back of the certificate", + "b7": "Please upload a hand-held ID photo", + "b8": "Make sure the photo is clear without watermark, and the upper body is intact", + "b9": "The file size is too large and must not exceed", + "c0": "File type error", + "c1": "Uploaded successfully", + "c2": "Please upload a photo of the back of your ID", + "c3": "Please upload the front photo of your ID", + "c4": "Uploaded successfully, please wait for review", + "d0": "Date of Birth", + "d1": "Certificate Type", + "d2": "ID card", + "d3": "Driving License", + "d4": "Passport", + "d5": "Residential Address", + "d6": "Please enter residential address", + "d7": "City", + "d8": "Please enter your city", + "d9": "Postal Code", + "d10": "Please enter the postal code", + "d11": "Phone Number", + "d12": "Please enter your phone number", + "d13": "Please select", + "SelectAreaCode": "Select Area Code" + }, + "exchange": { + "a0": "Spot Trading", + "a1": "Subscription", + "a2": "Derivatives", + "a3": "Transaction", + "a4": "Open Orders", + "a5": "History", + "a6": "Added successfully", + "a7": "Cancelled successfully", + "a8": "Total Issued", + "a9": "Total Circulation", + "b0": "Issue Price", + "b1": "Release time", + "b2": "White Paper Address", + "b3": "Official website address", + "b4": "Introduction", + "b5": "Buy", + "b6": "Sell", + "b7": "Order Price", + "b8": "Type", + "b9": "Limit Price Trading", + "c0": "Market Trading", + "c1": "Closed", + "c2": "Total", + "c3": "Buy", + "c4": "Sell", + "c5": "Quantity", + "c6": "Market price", + "c7": "Total Price", + "c8": "Available Quantity", + "c9": "Total Value", + "d0": "Login", + "d1": "Time Sharing Chart", + "d2": "Price", + "d3": "Latest Transaction", + "d4": "Time", + "d5": "Direction", + "d6": "Limit order", + "d7": "Market order", + "d8": "Please enter the price", + "d9": "Please enter the quantity", + "e0": "Please enter the total price", + "e1": "Order successfully placed", + "e2": "Average Price", + "e3": "High", + "e4": "Low", + "e5": "amount", + "e6": "Order", + "e7": "Currency Information", + "e8": "Minutes", + "e9": "Hour", + "f0": "Day", + "f1": "Week", + "f2": "Month", + "f3": "Buying Price", + "f4": "Sell Price", + "f5": "Currency Trading", + "f6": "Please enter search keywords", + "f7": "Trading Pair", + "f8": "Latest Price", + "f9": "Rise and fall", + "g0": "Optional", + "g1": "My delegation", + "g2": "Cancel delegation", + "g3": "Operation", + "g4": "Cancel", + "g5": "Whether to cancel the current order", + "g6": "Undo successfully" + }, + "option": { + "a0": "Options", + "a1": "Distance delivery", + "a2": "See more", + "a3": "look empty", + "a4": "Yield", + "a5": "Buy", + "a6": "Multi", + "a7": "Empty", + "a8": "Current", + "a9": "Next Issue", + "b0": "Seeing Ping", + "b1": "Increase selection", + "b2": "Yield", + "b3": "Purchase Quantity", + "b4": "Please enter the quantity", + "b5": "Balance", + "b6": "Unrealized PNL", + "b7": "Buy Now", + "b8": "Increase", + "b9": "Flush", + "c0": "Fall", + "c1": "Successful purchase", + "c2": "Details", + "c3": "Order Number", + "c4": "Opening Price", + "c5": "Closing Price", + "c6": "Buy Time", + "c7": "Buy Quantity", + "c8": "Purchase Type", + "c9": "Status", + "d0": "Delivery Result", + "d1": "Settlement Quantity", + "d2": "Delivery Time", + "d3": "View more", + "d4": "Buy Option", + "d5": "Waiting for delivery", + "d6": "My Delivery", + "d7": "Delivery Record", + "d8": "Minutes", + "d9": "Hour", + "e0": "Day", + "e1": "Week", + "e2": "Month", + "e3": "Direction", + "e4": "Rise and fall" + }, + "purchase": { + "a0": "Issue Price", + "a1": "Subscription Currency", + "a2": "Estimated time to go online", + "a3": "Start time for purchase", + "a4": "End of Subscription Time", + "a5": "Purchase", + "a6": "Please select the purchase currency", + "a7": "Purchase Quantity", + "a8": "Please enter the purchase quantity", + "a9": "All", + "b0": "Subscribe now", + "b1": "Subscription Period", + "b2": "Project warm-up", + "b3": "Start purchase", + "b4": "End of Subscription", + "b5": "Announce Results", + "b6": "Project Details", + "b7": "Whether to use", + "b8": "Buy", + "b9": "Subscription is successful" + }, + "reg": { + "a0": "Mobile registration", + "a1": "Register Account", + "a2": "Email", + "a3": "Enter your email address", + "a4": "Email", + "a5": "Enter your email address", + "a6": "Email verification Code", + "a7": "Enter the email verification code", + "a8": "Password", + "a9": "Enter your password", + "b0": "Confirm your password", + "b1": "Please enter your password again", + "b2": "Recommended person", + "b3": "Please enter the recommender", + "b4": "Optional", + "b5": "I have agreed", + "b6": "User Agreement", + "b7": "and understand ours", + "b8": "Privacy Agreement", + "b9": "Register", + "c0": "Already have an account", + "c1": "Log in now", + "c2": "Please read and agree to the agreement", + "c3": "Please fill in the phone number", + "c4": "Please fill in the mailbox number", + "c5": "Registered successfully", + "c6": "Invitation code (required)", + "c7": "Enter your invitation code" + }, + "safe": { + "a0": "Untie", + "a1": "Binding", + "a2": "Mailbox", + "a3": "Mailbox Number", + "a4": "Please enter the mailbox number", + "a5": "Email Verification Code", + "a6": "Enter the verification code", + "a7": "Verification Code", + "a8": "Unbind successfully", + "a9": "Binding successful", + "b0": "Forgot login password", + "b1": "Account", + "b2": "Please enter your email address", + "b3": "New Password", + "b4": "Enter a new password", + "b5": "Confirm Password", + "b6": "Confirm your password", + "b7": "Confirm Modification", + "b8": "Please enter the correct phone or email number", + "b9": "Google Authenticator", + "c0": "How to: Download and open Google Authenticator, scan the QR code below or manually enter the secret key to add a verification token", + "c1": "Copy key", + "c2": "I have stored the key properly, and it will not be retrieved if it is lost", + "c3": "Next", + "c4": "SMS verification code", + "c5": "Google Verification Code", + "c6": "Confirm binding", + "c7": "Security Center", + "c8": "Login Password", + "c9": "Modify", + "d0": "Settings", + "d1": "Transaction Password", + "d2": "Mobile", + "d3": "Modified successfully", + "d4": "Mobile Number", + "d5": "Please enter your phone number", + "d6": "Please enter the SMS verification code", + "d7": "Close", + "d8": "Open", + "d9": "Verify", + "e0": "SMS", + "e1": "Closed successfully", + "e2": "Open successfully", + "e3": "Confirm", + "e4": "Set up successfully" + }, + "transfer": { + "a0": "Transfer Record", + "a1": "Success", + "a2": "Quantity", + "a3": "Direction", + "a4": "Funding Account", + "a5": "Contract Account", + "a6": "Margin Account", + "a7": "Wealth Management Account", + "a8": "Transfer", + "a9": "From", + "b0": "To", + "b1": "Transfer Amount", + "b2": "Balance", + "b3": "All", + "b4": "Transferred", + "b5": "Transfer Currency" + }, + "notice": { + "a0": "Details", + "a1": "Message Notification", + "a2": "Announcement", + "a3": "Message" + }, + "invite": { + "a0": "Purchase", + "a1": "Partner", + "a2": "Exclusive trading rebate", + "a3": "Ordinary user", + "a4": "My Identity", + "a5": "Exclusive Identity", + "a6": "My invitation code", + "a7": "Copy the invitation QR code", + "a8": "Copy invitation link", + "a9": "My Promotion", + "b0": "Total number of people to promote", + "b1": "People", + "b2": "Total income equivalent", + "b3": "Promotion Record", + "b4": "Direct invitation", + "b5": "Rebate Record", + "b6": "Level", + "b7": "Level Setting", + "b8": "Promotion Conditions", + "b9": "Dividend Rights", + "c0": "nickname", + "c1": "Number of Promotions", + "c2": "Earnings equivalent", + "c3": "Invitation Record", + "c4": "Rebate Record", + "c5": "Class rights description", + "c6": "Level", + "c7": "Equity", + "c8": "Description", + "c9": "My rights" + }, + "help": { + "a0": "Details", + "a1": "College", + "a2": "Classification", + "a3": "Learn" + }, + "login": { + "a0": "Email", + "a1": "Enter your email", + "a2": "Password", + "a3": "Enter your password", + "a4": "Log In ", + "a5": "Forgot Password", + "a6": "No account", + "a7": "Register Now", + "a8": "Mobile", + "a9": "mailbox", + "b0": "Done" + }, + "contract": { + "a0": "Open Position", + "a1": "Size", + "a2": "Open Orders", + "a3": "Order History", + "a4": "Contract Transaction", + "a5": "Opened successfully", + "a6": "Transaction Type", + "a7": "Filled", + "a8": "Amount", + "a9": "Avg.", + "b0": "Price", + "b1": "Margin", + "b2": "Fee", + "b3": "Status", + "b4": "Operation", + "b5": "Cancel order", + "b6": "Cancelled", + "b7": "Unsold", + "b8": "Partial deal", + "b9": "Full deal", + "c0": "Open long", + "c1": "Close", + "c2": "Open short", + "c3": "Close", + "c4": "Warm Reminder", + "c5": "Whether to cancel the current order", + "c6": "Undo successfully", + "c7": "Realized PNL", + "c8": "Share", + "c9": "Delegation Details", + "d0": "No data yet", + "d1": "Price", + "d2": "Margin", + "d3": "Deal time", + "d4": "Account Equity", + "d5": "Unrealized profit and loss", + "d6": "Risk Rate", + "d7": "Market Price", + "d8": "Leaf", + "d9": "Occupy Margin", + "e0": "buy", + "e1": "Can open more", + "e2": "sell", + "e3": "Can open empty", + "e4": "Available Funds", + "e5": "Transfer", + "e6": "Fund Rate", + "e7": "Distance settlement", + "e8": "Buy", + "e9": "Sell", + "f0": "Funds Transfer", + "f1": "Calculator", + "f2": "About the contract", + "f3": "Risk Protection Fund", + "f4": "Fund Expense History", + "f5": "Ordinary Commission", + "f6": "Market Order", + "f7": "Whether to use", + "f8": "The price", + "f9": "Open position with double leverage", + "g0": "Buy", + "g1": "Sell", + "g2": "Delegation successful", + "g3": "Only display the current contract", + "g4": "Amountable to level", + "g5": "Delegated Freeze", + "g6": "Entry Price", + "g7": "Settlement Base Price", + "g8": "Liq Price", + "g9": "Settled income", + "h0": "ROE %", + "h1": "Stop Profit", + "h2": "Stop Loss", + "h3": "Close Position", + "h4": "The market price is flat", + "h5": "TP/SL for position", + "h6": "flat", + "h7": "Please enter the closing price", + "h8": "Limit Price", + "h9": "Please enter the closing quantity", + "i0": "Can flat", + "i1": "Average opening price", + "i2": "Latest Transaction Price", + "i3": "Please enter the price", + "i4": "TP Price", + "i5": "Market price to", + "i6": "Take profit order will be triggered at the time, and profit and loss is expected after the transaction", + "i7": "SL Price", + "i8": "A stop loss order will be triggered at the time, and profit and loss is expected after the transaction", + "i9": "OK", + "j0": "Successfully closed position", + "j1": "Whether the market price is flat", + "j2": "Quan Ping", + "j3": "Success", + "j4": "Setup successful", + "j5": "Magic calculation, unmatched", + "j6": "Do", + "j7": "Close price", + "j8": "Digital asset trading platform", + "j9": "When {name1} meets {name2} {name3}’s fiery road to ascendance", + "k0": "Opening price", + "k1": "Latest Price", + "k2": "Scan the code to learn more", + "k3": "Settlement profit and loss", + "k4": "The screenshot is successful and has been saved locally", + "k5": "Screenshot failed", + "k6": "Long press to take screenshot", + "k7": "Close All Positions", + "k8": "One-key reverse", + "k9": "Whether one-key full leveling", + "l0": "Completely successful", + "l1": "Whether to reverse with one key", + "l2": "Reverse success", + "l3": "Close" + }, + "otc": { + "a0": "Post an ad", + "a1": "Order", + "a2": "Trading currency", + "a3": "My Order", + "a4": "My Ads", + "a5": "Buy", + "a6": "Sale", + "a7": "Total", + "a8": "Remaining", + "a9": "Limited", + "b0": "Unit Price", + "b1": "Payment Method", + "b2": "Operation", + "b3": "Total", + "b4": "Please choose a payment method", + "b5": "Please enter the quantity", + "b6": "Place an order", + "b7": "Alipay", + "b8": "WeChat", + "b9": "Bank Card", + "c0": "Order successfully placed", + "c1": "Status", + "c2": "Advertisement Number", + "c3": "Total Price", + "c4": "Quantity", + "c5": "Release time", + "c6": "Remove", + "c7": "Cancelled", + "c8": "In transaction", + "c9": "Completed", + "d0": "Warm Reminder", + "d1": "Whether to remove the current ad", + "d2": "OK", + "d3": "Cancel", + "d4": "Undo successfully", + "d5": "Fiat currency account", + "d6": "Freeze", + "d7": "Alipay Account", + "d8": "Please enter the account number", + "d9": "Name", + "e0": "Please enter your name", + "e1": "Payment Code", + "e2": "Binding", + "e3": "WeChat Account", + "e4": "Bank Name", + "e5": "Please enter the bank name", + "e6": "Account Opening Branch", + "e7": "Please enter the account opening branch", + "e8": "Bank Card Number", + "e9": "Please enter the bank card number", + "f0": "Edited successfully", + "f1": "Added successfully", + "f2": "Sell", + "f3": "Buy", + "f4": "Order Details", + "f5": "Order Number", + "f6": "Account", + "f7": "Account Bank", + "f8": "Remaining time", + "f9": "Min", + "g0": "Second", + "g1": "Upload payment voucher", + "g2": "Confirm payment", + "g3": "Cancel order", + "g4": "Confirm Payment", + "g5": "Unpaid account", + "g6": "Whether to cancel the current order", + "g7": "Order has been cancelled", + "g8": "Confirm the current payment", + "g9": "Operation successful", + "h0": "After the payment is confirmed, the listed assets will be automatically transferred", + "h1": "After confirming that the payment has not been received, this order will automatically enter the appeal", + "h2": "Sell Order", + "h3": "Purchase Order", + "h4": "Advertising Purchase Order", + "h5": "Advertising Sale Order", + "h6": "Time", + "h7": "Details", + "h8": "All", + "h9": "Closed", + "i0": "Pending Payment", + "i1": "To be confirmed", + "i2": "Appealing", + "i3": "Ad Type", + "i4": "Please select transaction type", + "i5": "Please select the transaction currency", + "i6": "Price", + "i7": "Please enter the price", + "i8": "Lowest Price", + "i9": "Please enter the lowest price", + "j0": "Highest price", + "j1": "Please enter the highest price", + "j2": "Remarks", + "j3": "Please enter a note", + "j4": "Release", + "j5": "Posted successfully", + "j6": "Payment method", + "j7": "Minimum Quantity", + "j8": "Maximum amount", + "j9": "Please enter the minimum transaction volume", + "k0": "Please enter the highest transaction volume" + }, + "first": { + "a0": "Go to real name", + "a1": "Contact Us", + "a2": "Welcome!", + "a3": "TP/SL for position", + "a4": "Best market transaction", + "a5": "Positions", + "a6": "Order Management", + "a7": "Open Orders", + "a8": "Order History", + "a9": "multiple", + "b0": "Are you sure you want to log out?", + "b1": "Sign in or register", + "b2": "Hi, welcome to CATYcoin", + "b3": " Volume", + "b4": "spot index ", + "b5": "Contract index", + "b6": "Support multiple ways", + "b7": "Buy coins", + "b8": "Swap", + "b9": "The current area is not open yet", + "c0": "purchase", + "c1": "sell out", + "c2": "time", + "c3": "Total price", + "c4": "quantity", + "c5": "Mark price", + "c6": "Encumbered assets", + "c7": "Turnover" + }, + "recharge": { + "a0": "Switch currency", + "a1": "*Address change can only receive", + "a2": "If you recharge your assets in other currencies, you will not be able to retrieve them!", + "a3": "Erc20 is recommended for collection", + "a4": "Copy address", + "a5": "*Please make sure that the address and information are correct before transfer! Once transferred out, it is irrevocable!", + "a6": "Please regenerate" + }, + "currency": { + "a0": "Legal currency transaction", + "a1": "Buy", + "a2": "Sell", + "a3": "One click coin buying", + "a4": "One click coin selling", + "a5": "Purchase by quantity", + "a6": "Purchase by amount", + "a55": "sell by quantity", + "a66": "sell by amount", + "a7": "Please enter the purchase quantity", + "a8": "Please enter the purchase amount", + "a9": "Please enter the quantity for sale", + "b0": "Please enter the sale amount", + "b1": "Unit Price", + "b2": "0 handling charge purchase", + "b3": "0 commission sale", + "b4": "Insufficient available balance", + "b5": "Please complete advanced certification first", + "b6": "De authentication", + "b7": "Confirm purchase", + "b8": "Confirm sale" + }, + "cxiNewText": { + "a0": "Top 10", + "a1": "5 million+", + "a2": "< 0.10%", + "a3": "200+", + "a4": "Global Ranking", + "a5": "Users trust us", + "a6": "Ultra-Low Fees", + "a7": "Countries", + "a21": "Earn money now", + "a22": "Create a Personal Cryptocurrency Portfolio", + "a23": "Buy, trade and hold 100+ cryptocurrencies", + "a24": "Top up your account", + "a25": "Sign up by email", + "a38": "Start trading anytime, anywhere.", + "a39": "Start trading safely and conveniently at any time through our APP and webpage", + "a41": "Trustworthy cryptocurrency trading platform", + "a42": "We are committed to ensuring the safety of our users through strict protocols and industry-leading technological measures", + "a43": "User security asset funds", + "a44": "We store 10% of all transaction fees in safe asset funds to provide partial protection for user funds.", + "a45": "Personalized Access Control", + "a46": "Personalized access control restricts the devices and addresses that access personal accounts, so that users have no worries.", + "a47": "Advanced Data Encryption", + "a48": "Personal transaction data is secured through end-to-end encryption, and access to personal information is restricted to the individual.", + "a57": "Click to go", + "a71": "Beginner's Guide ", + "a72": "Start digital currency trading learning immediately ", + "a77": "How to buy digital currency ", + "a78": "How to sell digital currency ", + "a79": "How to Trade Digital Currencies", + "a80": "Marketplace", + "a81": "24-hour market trends", + "a82": "Add cryptocurrency funds to your wallet and start trading now" + }, + "homeNewText": { + "aa1": "Cryptocurrency Gate", + "aa2": "Safe, fast and easy trade on over 100 cryptocurrencies", + "aa3": "Register via email", + "aa4": "Start trading now", + "aa5": "Market trend", + "aa6": "Digital Asset Quote Express", + "aa7": "Currency", + "bb1": "Latest price (USD)", + "bb2": "24h increase", + "bb3": "24h trading volume", + "bb4": "Cryptocurrency exchange for everyone", + "bb5": "Start trading here and experience a better cryptocurrency journey", + "bb6": "Personal", + "bb7": "A cryptocurrency exchange for everyone. The most trustworthy leading trading platform with a wide range of currencies", + "cc1": "Business", + "cc2": "Built for businesses and institutions. Providing crypto solutions to institutional investors and businesses", + "cc3": "Developer", + "cc4": "Built for developers, for developers to build the tools and APIs of the future of web3", + "cc6": "Scan QR code", + "cc7": "Download Android/IOS App", + "dd1": "Safe and stable with zero accidents", + "dd2": "Multiple security strategies and 100% reserve guarantee ensure that no security incidents have occurred since its establishment.", + "dd3": "Trade crypto assets simply and conveniently", + "dd4": "In CATYcoin, the products are easy to understand, the transaction process is convenient, and the one-stop blockchain asset service platform", + "dd5": "Derivatives", + "dd6": "You can trade contracts on 100+ cryptocurrencies with up to 150x leverage and earn high profits", + "ee1": "Multiple terminal support", + "ee2": "Trade digital assets anytime, anywhere", + "ee3": "Supports a wide range of asset types, with all currency information available", + "ee4": "Quickly understand the digital asset trading process", + "ee5": "Start your encryption journey", + "ee6": "Graphical verification", + "ee7": "Fill out graphic verification", + "dd1": "Verification successful", + "dd2": "verification failed", + "dd3": "Please complete the security verification", + "dd4": "Slide the slider to complete the puzzle", + + "hh0": "The future of money is here", + "hh1": "Looking for good trading opportunities", + "hh2": "Safe, fast and easy to trade over 100 cryptocurrencies", + "hh3": "Try our cryptocurrency exchange now", + "hh4": "Quickly start your trading journey", + "hh5": "Register {name} account", + "hh6": "Register", + "hh7": "Explore our products and services here", + "hh8": "Security is no small matter. In order to protect the security of your assets and information, we will make endless efforts", + "hh9": "In stock", + "hh10": "Trade cryptocurrencies with comprehensive tools.", + "hh11": "Derivatives", + "hh12": "Trade contracts with the world's best cryptocurrency exchange.", + "hh13": "Trading Robot", + "hh14": "Earn passive profits without monitoring the market.", + "hh15": "Buy coins", + "hh16": "Buy cryptocurrencies with one click.", + "hh17": "{nem} earn coins", + "hh18": "Earn stable income through investment with professional asset managers.", + "hh19": "Leverage trading", + "hh20": "Borrow, trade and repay, leverage your assets with margin trading.", + "hh21": "Your trusted and safe cryptocurrency exchange", + "hh22": "Safe asset storage", + "hh23": "Our leading encryption and storage systems ensure your assets are always safe and confidential.", + "hh24": "Strong account security", + "hh25": "We adhere to the highest security standards and implement the strictest security measures to ensure the safety of your account.", + "hh26": "Trusted platform", + "hh27": "We have a secure design foundation to ensure rapid detection and response to any cyberattack.", + "hh28": "Proof of Asset Reserve—Asset Transparency", + "hh29": "Proof of Reserve (PoR) is a widely used method of proving custody of blockchain assets. This means {name} has funds covering all user assets on our books.", + "hh30": "Trading can be done anytime, anywhere", + "hh31": "Whether it is APP or WEB, you can quickly start your transaction", + "hh32": "Start your digital currency journey now", + "hh33": "Register now", + "hh34": "We are the most trusted place for investors to buy, sell and manage cryptocurrency", + "hh35": "Register via email", + "hh36": "FAQ", + "hh41": "CATYcoin, trade anytime, anywhere", + "hh42": "Trade now", + "hh43": "Scan the QR code to download CATYcoin APP", + "hh37": "Global Ranking", + "hh38": "users trust us", + "hh39": "Ultra-Low Fees", + "hh40": "Countries" + } +} \ No newline at end of file diff --git a/i18n/lang/fin.json b/i18n/lang/fin.json new file mode 100644 index 0000000..22ac6e3 --- /dev/null +++ b/i18n/lang/fin.json @@ -0,0 +1,788 @@ +{ + "common": { + "D":"päivä", + "M":"kuukausi", + "Y":"vuosi", + "add":"Lisää lisää", + "address":"Osoite", + "all":"Kaikki", + "amout":"numero", + "cancel":"peruuta", + "check":"tutkittavaksi ottaminen", + "code":"Tarkastuksen koodi", + "confirm":"määrittää", + "date":"päivämäärä", + "detail":"yksityiskohdat", + "email":"postilaatikko", + "enter":"Syötä, ole hyvä.", + "error":"epäonnistuu", + "getCode":"Hanki tarkastuskoodi", + "h":"Aika", + "loadMore":"Lataa enemmän", + "m":"haara", + "money":"rahan määrä", + "more":"enemmän", + "notData":"Tietoja ei ole saatavilla", + "notMore":"Ei enää", + "phone":"matkapuhelin (matkapuhelin)", + "requestError":"Verkko on varattu. Yritä myöhemmin uudelleen", + "s":"toinen", + "save":"säilyttäminen", + "select":"Ole hyvä ja valitse", + "sendSuccess":"Lähetetty onnistuneesti", + "sms":"lyhyt viesti", + "submit":"Lähetä", + "success":"menestys", + "tips":"muistutus", + "total":"yhteensä", + "type":"tyyppi", + "copy":"Kopio", + "light":"valkoinen", + "dark":"musta", + "service":"Asiakkaiden palvelut", + "toDwon":"Haluatko mennä latauksen sivulle@ info: whatsthis", + "a0":"Syötä osto- koodi@ info: whatsthis", + "a1":"Kopio onnistui", + "a2":"Kopio epäonnistui", + "a3":"Ostosta koskevat tiedot", + "a4":"Maksun määrä", + "a5":"Saadut määrät", + "a6":"tilin numero", + "a7":"Purkamisen määrä", + "a8":"Maksun tosite", + "a9":"Syötä ladattava määrä", + "b0":"Ole hyvä ja lataa maksukuponki", + "b1": "osto{amount}Palaset{name}Saatavilla Token{rate}%Répalkkio", + "b2":"Tilaus- ja tilaustoiminta", + "b3":"Tallennettu onnistuneesti", + "b4":"Tallenna epäonnistui", + "b5":"Kutsu lähettäjä", + "b6":"Valitse juliste", + "b8":"Avauksen aika", + "b9":"Aika lopettaa.", + "c0":"Latauksen vähimmäismäärä: {num}. Vähimmäismäärää pienempää latausta ei julkaista eikä sitä voida palauttaa", + "c1":"Peruuttamisen vähimmäismäärä", + "c2":"Version numero", + "c3":"Avoin", + "c4":"Arvioitu marginaali", + "c5": "Siirtotilauksesi on toimitettu onnistuneesti, odota kärsivällisesti, ja siirron tulos ilmoitetaan tekstiviestillä tai sähköpostilla. Tarkista se huolellisesti. Jos sinulla on kysyttävää, ota yhteyttä asiakaspalveluun ajoissa." + }, + "base": { + "a0":"otsikko", + "a1":"paluu", + "a2":"enemmän", + "a3":"noteeraus", + "a4":"vaihtoehto", + "a5":"Uusi alue", + "a6":"jäsen", + "a7":"korkeakoulu", + "a8":"Sovitaan näin.", + "a9":"Viimeisin hinta", + "b0":"Ylös ja alas", + "b1":"Napsauta kirjautumista", + "b2":"Tervetuloa osoitteeseen", + "b3":"Kirjaudu sisään", + "b4":"Päivitä", + "b5":"Rahan maksu", + "b6":"Rahan nosto", + "b7":"laajennus", + "b8":"Palvelusta perittävän maksun vähentäminen", + "b9":"saatavilla", + "c0":"osto", + "c1":"Minun provisioni", + "c2":"henkilöllisyyden todentaminen", + "c3":"Turvallisuus- keskus", + "c4":"Viestien ilmoittaminen", + "c5":"Peruuttamisen osoite", + "c6":"on perustettu", + "c7":"Valinnainen", + "c8":"Lisää onnistuneesti", + "c9":"Peruuta onnistuneesti", + "d0":"home page", + "d1":"transactie", + "d2":"activa", + "d3":"Voer zoekwoorden in", + "d4":"koko", + "d5":"päälauta (päälauta)", + "d6":"Vastaavat saamiset yhteensä", + "d7":"Oma pääoma", + "d8":"Siirto", + "d9":"Etsi valuutta", + "e0":"piilottaa", + "e1":"Taseen loppusumma", + "e2":"jäädytetty", + "e3":"Vastaava", + "e4":"Sopimusta koskeva tili", + "e5":"Sopimusten muuntaminen", + "e6":"Mineraanien luokka", + "e7":"kaivosmies" + }, + "accountSettings": { + "a0":"Tilin asetukset", + "a1":"pää muotokuva", + "a2":"Lempinimi?", + "a3":"Tilin numero", + "a4":"matkapuhelimen numero", + "a5":"Irtisanominen", + "a6":"sidonta", + "a7":"Postilaatikko sitova", + "a8":"Tilien vaihto", + "a9":"Kirjaudu ulos", + "b0":"Muuta nimimerkkiä", + "b1":"Anna nimimerkki@ info: whatsthis", + "b2":"kieli" + }, + "assets": { + "a0":"Peruuttamisen osoitteen hallinnointi", + "a1":"Osoitekirjaa voidaan käyttää hallinnoimaan yhteisiä osoitteita, ja ei ole tarpeen suorittaa useita tarkastuksia, kun otetaan rahaa osoitteesta osoitekirjassa, ja", + "a2":"Automaattinen valuutasta luopuminen on tuettu. Kun {nimi} käytetään, ainoastaan osoitekirjassa olevat osoitteet saavat aloittaa valuutasta luopumisen.", + "a3":"Poista osoite", + "a4":"Lisää osoite", + "a5":"Ole hyvä ja valitse poistettava osoite", + "a6":"Poista valittu osoite", + "a7":"Virtaava vesi", + "a8":"yhteensä", + "a9":"saatavilla", + "b0":"jäädytetty", + "b1":"Oma pääoma", + "b2":"Sopimusta koskeva tili", + "b3":"Vivujen tili", + "b4":"Taloudellinen tili", + "b5":"Syötä hakusanat@ info: whatsthis", + "b6":"Rahan nosto", + "b7":"Valitse ketjutyyppi@ info: whatsthis", + "b8":"Peruuttamisen osoite", + "b9":"Syötä osoite@ info: whatsthis", + "c0":"numero", + "c1":"tase", + "c2":"Syötä määrä", + "c3":"koko", + "c4":"Palvelun lataus", + "c5":"Tarkista huolellisesti ja anna lompakkoon oikea osoite", + "c6":"Tallettamattoman digitaalisen valuutan lähettäminen lompakkoosoitteeseen aiheuttaa pysyvän tappion", + "c7":"Käsittelymaksu vähennetään siitä rahamäärästä, joka on otettu pois markkinoilta", + "c8":"Irtisanomisen kirjaaminen", + "c9":"aika", + "d0":"valtio", + "d1":"Tarkasteltavana oleva", + "d2":"menestys", + "d3":"epäonnistuu", + "d4":"Katso lisää", + "d5":"Toimitettu onnistuneesti, uudelleentarkastelun kohteena", + "d6":"editointi", + "d7":"Lisää lisää", + "d8":"Osoite", + "d9":"Syötä tai liitä osoite", + "e0":"huomautukset", + "e1":"Syötä kommentit@ info: whatsthis", + "e2":"Ole hyvä ja täytä osoite", + "e3":"Olkaa hyvä ja täyttäkää huomautukset.", + "e4":"Operaatio onnistui", + "e5":"Rahan maksu", + "e6":"Skannaa yllä oleva QR- koodi saadaksesi latauksen osoitteen", + "e7":"Latauksen osoite", + "e8":"Maksettujen metallirahojen lukumäärä", + "e9":"Syötä veloitetun valuutan määrä", + "f0":"Tämä osoite on viimeisin lataussivu. Kun järjestelmä vastaanottaa latauksen, se tallennetaan automaattisesti", + "f1":"Siirto on vahvistettava koko ketjuverkon kautta. Kun saavut {num} verkon vahvistumiseen, sinun {nimi} talletetaan automaattisesti tilille.", + "f2":"Kun verkko on vahvistettu, sinun", + "f3":"Lähettäkää vain {nimi} tähän osoitteeseen. Muun digitaalisen valuutan lähettäminen tähän osoitteeseen aiheuttaa pysyvän tappion", + "f4":"Latauksen tietue" + + }, + "auth": { + "a0":"henkilöllisyyden todentaminen", + "a1":"Oikea nimi", + "a2":"Ei sertifioitu", + "a3":"Varmennettu", + "a4":"Kehittynyt varmentaminen", + "a5":"Tarkasteltavana oleva", + "a6":"Tunnistaminen epäonnistui", + "a7":"kansalaisuus", + "a8":"Valitse oma kansallisuutesi", + "a9":"Oikea nimi", + "b0":"Anna oikea nimesi", + "b1":"Tunnistusnumero@ info: whatsthis", + "b2":"Syötä ID- numero", + "b3":"vahvistus", + "b4":"Sertifiointi onnistui", + "b5":"Ole hyvä ja lataa etusivu henkilökorttistasi", + "b6":"Ole hyvä ja lataa varmenteen takaosa", + "b7":"Lataa kädessäsi oleva ID- kuva", + "b8":"Varmista, että kuva on puhdas ilman vesileimaa ja ylävartalo on ehjä.", + "b9":"Tiedoston koko on liian suuri eikä voi ylittää", + "c0":"Tiedoston tyypin virhe", + "c1":"Lähetys onnistui", + "c2":"Ole hyvä ja lataa kuva todistuksen takaosaan", + "c3":"Ole hyvä ja lataa etusivu henkilökorttistasi", + "c4":"Lähetys onnistui, odota tarkastusta@ info: whatsthis" + }, + "exchange": { + "a0":"Kolikot", + "a1":"hakea muutosta", + "a2":"sopimus", + "a3":"tapahtuma", + "a4":"Nykyinen delegointi", + "a5":"Historiallinen komissio", + "a6":"Lisää onnistuneesti", + "a7":"Peruuta onnistuneesti", + "a8":"Liikkeeseen laskeminen yhteensä", + "a9":"Kierre yhteensä", + "b0":"Liikkeeseenlaskun hinta", + "b1":"Liikkeeseenlaskun kellonaika", + "b2":"Valkoisen paperin osoite", + "b3":"Virallinen verkkosivuston osoite", + "b4":"lyhyt esittely", + "b5":"osto", + "b6":"Myy", + "b7":"Komission hinta", + "b8":"tyyppi", + "b9":"Hintojen rajakauppa", + "c0":"Markkinoiden liiketoimi", + "c1":"Suljettu", + "c2":"yhteensä", + "c3":"osto", + "c4":"Myy loppuun", + "c5":"numero", + "c6":"Lähellä parhaaseen markkinahintaan@ info: whatsthis", + "c7":"Hinta yhteensä", + "c8":"Käytettävissä oleva määrä", + "c9":"bruttoarvo (bruttoarvo)", + "d0":"Kirjaudu sisään.", + "d1":"Ajan jakamisen kaavio", + "d2":"Hinta", + "d3":"Viimeisin sopimus", + "d4":"aika", + "d5":"suunta", + "d6":"kiinteä hinta", + "d7":"markkinahinta (markkinahinta)", + "d8":"Olkaa hyvä ja ilmoittakaa hinta.", + "d9":"Syötä määrä", + "e0":"Syötä täydellinen hinta@ info: whatsthis", + "e1":"Checkout menestys", + "e2":"Keskimääräinen hinta", + "e3":"korkein", + "e4":"vähimmäismäärä", + "e5":"määrä", + "e6":"Järjestys", + "e7":"Valuutta koskevat tiedot", + "e8":"minuutti", + "e9":"tunti", + "f0":"päivä", + "f1":"viikko", + "f2":"kuukausi", + "f3":"Hankinnan hinta", + "f4":"Myynnin hinta", + "f5":"Valuutta transaktio", + "f6":"Syötä hakusanat@ info: whatsthis", + "f7":"Sovitaan näin.", + "f8":"Viimeisin hinta", + "f9":"Ylös ja alas", + "g0":"Valinnainen", + "g1":"Minun provisioni", + "g2":"Tehtävän peruuttaminen", + "g3":"toiminta", + "g4":"kumoa", + "g5":"Peruuta nykyinen delegaatio", + "g6":"Peruutettu onnistuneesti" + }, + "option": { + "a0":"vaihtoehto", + "a1":"Etäisyyden toteutuminen", + "a2":"Katso lisää", + "a3":"Ole karhunkainen", + "a4":"Palautuksen määrä", + "a5":"osto", + "a6":"monia", + "a7":"tyhjä", + "a8":"nykyinen", + "a9":"Seuraava numero", + "b0":"Katso litteä", + "b1":"Hintojen nousun valinta", + "b2":"Palautuksen määrä", + "b3":"Hankinnan määrä", + "b4":"Syötä määrä", + "b5":"tase", + "b6":"Odotetut tulot", + "b7":"Osta nyt.", + "b8":"nousu", + "b9":"tasainen", + "c0":"putoaminen", + "c1":"Onnistunut osto", + "c2":"yksityiskohdat", + "c3":"tilauksen numero", + "c4":"Avattu hinta", + "c5":"Lopullinen hinta", + "c6":"Ajan ostaminen", + "c7":"Hankinnan määrä", + "c8":"Oston tyyppi", + "c9":"valtio", + "d0":"Lopputulos@ info: whatsthis", + "d1":"Selvityksen määrä", + "d2":"Toimitusaika@ info: whatsthis", + "d3":"Katso lisää", + "d4":"Osto optio", + "d5":"Odottaa toimitusta", + "d6":"Minun toimitukseni.", + "d7":"Toimituksen tietue", + "d8":"minuutti", + "d9":"tunti", + "e0":"päivä", + "e1":"viikko", + "e2":"kuukausi", + "e3":"suunta", + "e4":"Ylös ja alas" + }, + "purchase": { + "a0":"Liikkeeseenlaskun hinta", + "a1":"Osakkuuden valuutta", + "a2":"Odotettu online-aika", + "a3":"Tilauksen alkamisajankohta", + "a4":"Aika lopettaa.", + "a5":"hakea muutosta", + "a6":"Olkaa hyvä ja valitkaa merkintävaluutta", + "a7":"Hankinnan määrä", + "a8":"Syötä määrä@ info: whatsthis", + "a9":"koko", + "b0":"Täytä välittömästi", + "b1":"Tilauksen sykli", + "b2":"Projektin lämmittäminen", + "b3":"Aloita tilaus", + "b4":"Sulje tilaus", + "b5":"Tulosten julkaiseminen", + "b6":"Hankkeen yksityiskohdat", + "b7":"Käyttö tai ei", + "b8":"osto", + "b9":"Onnistunut osto" + }, + "reg": { + "a0":"Liikkuva rekisteröinti", + "a1":"Sähköpostin rekisteröinti", + "a2":"matkapuhelin (matkapuhelin)", + "a3":"Syötä matkapuhelimen numero@ info: whatsthis", + "a4":"postilaatikko", + "a5":"Anna sähköpostiosoitteesi numero@ info: whatsthis", + "a6":"Tarkastuksen koodi", + "a7":"Syötä todentamiskoodi@ info: whatsthis", + "a8":"salasana", + "a9":"Syötä salasana@ info: whatsthis", + "b0":"Vahvista salasana", + "b1":"Vahvista salasana@ info: whatsthis", + "b2":"Viitteet", + "b3":"Syötä ohje@ info: whatsthis", + "b4":"Valinnainen", + "b5":"Olet suostunut.", + "b6":"Käyttäjän sopimus", + "b7":"Ja oppia meistä", + "b8":"Yksityisyyttä koskeva sopimus", + "b9":"rekisteri", + "c0":"Olemassa olevan tilin numero", + "c1":"Allekirjoitus nyt.", + "c2":"Olkaa hyvä ja lukekaa ja hyväksykää sopimus.", + "c3":"Ole hyvä ja täytä matkapuhelimen numero", + "c4":"Ole hyvä ja täytä sähköpostinumero", + "c5":"kirjautuminen onnistui" + }, + "safe": { + "a0":"Irtisanominen", + "a1":"sidonta", + "a2":"postilaatikko", + "a3":"Sähköposti nro", + "a4":"Anna sähköpostiosoitteesi numero@ info: whatsthis", + "a5":"Sähköpostin tarkistuskoodi", + "a6":"Syötä todentamiskoodi@ info: whatsthis", + "a7":"Tarkastuksen koodi", + "a8":"Vapauttaminen onnistui", + "a9":"Sidonta onnistui", + "b0":"Unohda salasana", + "b1":"tilin numero", + "b2":"Olkaa hyvä ja syöttäkää matkapuhelin", + "b3":"Uusi salasana", + "b4":"Anna uusi salasana@ info: whatsthis", + "b5":"Vahvista salasana", + "b6":"Vahvista salasana@ info: whatsthis", + "b7":"Vahvista muutos", + "b8":"Syötä oikea matkapuhelimen tai sähköpostin numero", + "b9":"Googlen todentaja", + "c0":"Miten se tehdään: Lataa ja avaa Googlen todentaja, skannaa alla alla oleva QR-koodi tai kirjoita käsin salainen avain lisätäksesi varmennusmerkin", + "c1":"Kopioi avain", + "c2":"Olen pitänyt avaimeni oikein, mutta jos menetän sen, sitä ei saada takaisin.", + "c3":"Seuraava vaihe", + "c4":"tekstiviestien tarkistuskoodi", + "c5":"Google captcha", + "c6":"Vahvista sitoutuminen", + "c7":"Turvallisuus- keskus", + "c8":"Kirjautumisen salasana", + "c9":"muuttaa", + "d0":"on perustettu", + "d1":"Tapahtuman koodi", + "d2":"matkapuhelin (matkapuhelin)", + "d3":"Muokattu onnistuneesti", + "d4":"matkapuhelimen numero", + "d5":"Syötä matkapuhelimen numero@ info: whatsthis", + "d6":"Syötä tekstiviestien tarkistuskoodi", + "d7":"Sulje", + "d8":"avoin", + "d9":"todentaminen", + "e0":"lyhyt viesti", + "e1":"Suljettu onnistuneesti", + "e2":"Avaa onnistuneesti", + "e3":"vahvistus", + "e4":"Aseta onnistuneesti" + }, + "transfer": { + "a0":"Siirtoa koskeva tietue", + "a1":"menestys", + "a2":"numero", + "a3":"suunta", + "a4":"Tilin varat", + "a5":"Sopimusta koskeva tili", + "a6":"Vivujen tili", + "a7":"Taloudellinen tili", + "a8":"Siirto", + "a9":"mistä", + "b0":"ja", + "b1":"Siirto valuutta", + "b2":"tase", + "b3":"koko", + "b4":"Siirretty" + }, + "notice": { + "a0":"yksityiskohdat", + "a1":"Viestien ilmoittaminen", + "a2":"Ilmoitus", + "a3":"Uutiset" + }, + "invite": { + "a0":"Nauti kaupan alennuksesta ja kutsu ystäviä", + "a1":"kumppani", + "a2":"Nauti kaupan alennuksesta", + "a3":"Tavalliset käyttäjät", + "a4":"Minun henkilöllisyyteni", + "a5":"Nauti identiteetistäsi", + "a6":"Minun kutsukoodini", + "a7":"Kopioi kutsu QR- koodi", + "a8":"Kopioi kutsulinkki", + "a9":"Minun ylennykseni", + "b0":"Ylennyksen kokonaismäärä", + "b1":"ihmiset", + "b2":"Tulojen yhteismäärä", + "b3":"Mainonnan tiedot", + "b4":"Suora kutsu", + "b5":"Palautetun komission tiedot", + "b6":"Luokka", + "b7":"Tason asetus", + "b8":"Ylennyksen edellytykset", + "b9":"Osinkojen korot", + "c0":"Lempinimi?", + "c1":"Hankkeen toteuttajien lukumäärä", + "c2":"Tulojen muuntaminen", + "c3":"Kutsujen ennätys", + "c4":"Palautetun komission tiedot", + "c5":"Luokan osuuksien kuvaus", + "c6":"Luokka", + "c7":"Oikeudet ja edut", + "c8":"selittää", + "c9":"Oikeuteni ja etuni" + }, + "help": { + "a0":"yksityiskohdat", + "a1":"korkeakoulu", + "a2":"luokitus" + }, + "login": { + "a0":"Matkapuhelimen tai sähköpostin numero", + "a1":"Syötä matkapuhelimen tai sähköpostin numero", + "a2":"salasana", + "a3":"Syötä salasana@ info: whatsthis", + "a4":"Kirjaudu sisään.", + "a5":"Unohda salasana", + "a6":"Ei tiliä", + "a7":"Rekisteröidy nyt", + "a8":"matkapuhelin (matkapuhelin)", + "a9":"postilaatikko", + "b0":"täydellinen" + }, + "contract": { + "a0":"avata viljavarasto avun antamiseksi", + "a1":"Sijainti", + "a2":"tehtävä", + "a3":"historia", + "a4":"Sopimusta koskeva liiketoimi", + "a5":"Onnistunut avautuminen", + "a6":"Tapahtuman tyyppi", + "a7":"Suljettu", + "a8":"Luotettu kokonaismäärä", + "a9":"Keskimääräinen transaktiohinta", + "b0":"Komission hinta", + "b1":"sidos", + "b2":"Palvelun lataus", + "b3":"valtio", + "b4":"toiminta", + "b5":"peruuta tilaus", + "b6":"peruutettu", + "b7":"Levoton", + "b8":"Osittainen tapahtuma", + "b9":"Kaikki kiinni.", + "c0":"Kaiduo.", + "c1":"PingkongName", + "c2":"Avoin ilma", + "c3":"PintoName", + "c4":"muistutus", + "c5":"Peruuta nykyinen järjestys", + "c6":"Peruutettu onnistuneesti", + "c7":"Voitto ja tappio", + "c8":"osake", + "c9":"Tehtävää koskevat tiedot", + "d0":"Tietoja ei ole saatavilla", + "d1":"Hinta", + "d2":"numero", + "d3":"Tapahtuman aika", + "d4":"Käyttäjien oikeudet", + "d5":"Selvittämätön voitto ja tappio", + "d6":"Riskien määrä", + "d7":"markkinahinta (markkinahinta)", + "d8":"Zhang.", + "d9":"Talletuksen kesto", + "e0":"Kiusaaja", + "e1":"Voit avata enemmän", + "e2":"Parta", + "e3":"Avaa tyhjä", + "e4":"saatavilla", + "e5":"Siirto", + "e6":"Oma pääoma", + "e7":"Etäisyyden selvittäminen", + "e8":"monia", + "e9":"tyhjä", + "f0":"Varojen siirto", + "f1":"Laskenta", + "f2":"Sopimuksen suhteen", + "f3":"Riskien suojelurahasto", + "f4":"Pääoman kustannushistoria", + "f5":"Yleinen toimeksianto", + "f6":"markkinoiden järjestys", + "f7":"Onko se perustuu", + "f8":"Sen hinta", + "f9":"Kaksinkertainen velkaantuminen", + "g0":"Kaiduo.", + "g1":"Avoin ilma", + "g2":"Onnistunut komissio", + "g3":"Näytä vain nykyinen sopimus", + "g4":"Kepping", + "g5":"tehtävä", + "g6":"Keskimääräinen avaamisen hinta", + "g7":"Selvityksen viitehinta", + "g8":"Arvio vahvasta pariteetista", + "g9":"Selvitetyt tulot", + "h0":"Palautuksen määrä", + "h1":"Keskeytä voitto", + "h2":"Keskeytä tappio", + "h3":"Sulje sijainti", + "h4":"Markkinahinta on kiinteä", + "h5":"Lopeta voitto ja lopeta tappio", + "h6":"tasainen", + "h7":"Olkaa hyvä ja ilmoittakaa myyntihinta", + "h8":"kiinteä hinta", + "h9":"Syötä lopullinen määrä@ info: whatsthis", + "i0":"Kepping", + "i1":"Keskimääräinen avaamisen hinta", + "i2":"Viimeisin kauppahinta", + "i3":"Olkaa hyvä ja ilmoittakaa hinta.", + "i4":"Lopeta liipaisinhinnan ansaitseminen", + "i5":"Markkinoiden hinta", + "i6":"Kun liiketoimi on suoritettu, voitto ja tappio arvioidaan", + "i7":"Keskeytä tappion laukaisijahinta", + "i8":"Keskeytystappio Komissio käynnistetään, kun liiketoimi on saatu päätökseen, ja voitto ja tappio odotetaan tapahtuman jälkeen", + "i9":"määrittää", + "j0":"Onnistunut sulkeminen", + "j1":"Onko markkinahinta kiinteä", + "j2":"Kaikki tasaiset", + "j3":"menestys", + "j4":"Aseta onnistuneesti", + "j5":"Ei ole vastusta nokkelalle laskelmoinnille.", + "j6":"on", + "j7":"kiinteä korko", + "j8":"Digitaalinen omaisuuksien kauppajärjestelmä", + "j9":"Kun {name1} kohtaa {Name2} {name3} tulisen nousun tiellä", + "k0":"Avattu hinta", + "k1":"Viimeisin hinta", + "k2":"Lisää tietoa hakukoodista@ info: whatsthis", + "k3":"Voittojen ja tappioiden kirjaaminen", + "k4":"Kuvaruutu on tallennettu paikallisesti", + "k5":"Kuvakuva epäonnistui", + "k6":"Pitkä lehdistötiedote", + "k7":"Yksi klikkaus tasainen", + "k8":"Yksi napsautus taaksepäin", + "k9":"Onko kaikki litteä?", + "l0":"Kaikki yhtä hyvin, menestys", + "l1":"Yksi avain peruutetaan", + "l2":"Käänteinen menestys", + "l3":"PingkongName", + "l4":"PintoName" + }, + "otc": { + "a0":"Mainonta", + "a1":"järjestys", + "a2":"Taloustoimen valuutta", + "a3":"Minun tilaukseni.", + "a4":"Minun mainokseni", + "a5":"osto", + "a6":"Myy", + "a7":"yhteensä", + "a8":"ylijäämä", + "a9":"Raja", + "b0":"Yksikön hinta", + "b1":"Maksun menetelmä", + "b2":"toiminta", + "b3":"yhteensä", + "b4":"Valitse maksutapa@ info: whatsthis", + "b5":"Syötä määrä", + "b6":"antaa tilauksen", + "b7":"Alipay.", + "b8":"WeChatLanguage", + "b9":"pankin kortti", + "c0":"Checkout menestys", + "c1":"valtio", + "c2":"Mainoksen numero", + "c3":"Hinta yhteensä", + "c4":"numero", + "c5":"Vapautuksen aika", + "c6":"Pois hyllyltä.", + "c7":"peruutettu", + "c8":"Kaupan alalla", + "c9":"Valmis", + "d0":"muistutus", + "d1":"Onko nykyinen mainos poistettu", + "d2":"määrittää", + "d3":"peruuta", + "d4":"Peruutettu onnistuneesti", + "d5":"Oikeudellinen valuuttatili", + "d6":"jäädytetty", + "d7":"Alipayn tilin numero", + "d8":"Syötä tilin numero@ info: whatsthis", + "d9":"koko nimi", + "e0":"Ole hyvä ja kirjoita nimesi", + "e1":"Maksun koodi", + "e2":"sidonta", + "e3":"Wechat- tili", + "e4":"Pankin nimi", + "e5":"Syötä pankin nimi", + "e6":"Tilin avaaminen", + "e7":"Syötä tilin avaamista koskeva sivukonttori", + "e8":"Pankkikortin numero", + "e9":"Syötä pankin kortin numero", + "f0":"Muokattu onnistuneesti", + "f1":"Lisää onnistuneesti", + "f2":"Myy loppuun", + "f3":"osto", + "f4":"Tilausta koskevat tiedot", + "f5":"tilauksen numero", + "f6":"tilin numero", + "f7":"Talletusten pankki", + "f8":"Jäljellä oleva aika", + "f9":"haara", + "g0":"toinen", + "g1":"Lataa maksutodistus", + "g2":"vahvistaa maksun", + "g3":"tilauksen peruuttaminen", + "g4":"Vahvista vastaanotto", + "g5":"Ei saatu", + "g6":"Peruuta nykyinen järjestys", + "g7":"Tilaus peruutettu", + "g8":"Vahvista nykyinen maksu", + "g9":"Operaatio onnistui", + "h0":"Keräyksen vahvistamisen jälkeen varat myydään ja siirretään automaattisesti", + "h1":"Kun on vahvistettu, että maksua ei ole saatu, määräys siirtyy automaattisesti valitustilaan", + "h2":"Myynnin tilaus", + "h3":"Oston tilaus", + "h4":"Mainoston tilaus", + "h5":"Mainonnan myyntitilaus", + "h6":"aika", + "h7":"yksityiskohdat", + "h8":"koko", + "h9":"Suljettu", + "i0":"Maksettava määrä", + "i1":"Tullaan vahvistamaan", + "i2":"Kantelun kohteena", + "i3":"Ilmoitusten tyypit", + "i4":"Valitse tapahtuman tyyppi", + "i5":"Valitse transaktion valuutta", + "i6":"Hinta", + "i7":"Olkaa hyvä ja ilmoittakaa hinta.", + "i8":"alin hinta", + "i9":"Olkaa hyvä ja ilmoittakaa alin hinta", + "j0":"Korkein hinta", + "j1":"Olkaa hyvä ja ilmoittakaa korkein hinta.", + "j2":"huomautukset", + "j3":"Syötä kommentit@ info: whatsthis", + "j4":"vapautuminen", + "j5":"Julkaistu onnistuneesti", + "j6":"Maksun menetelmä", + "j7":"Pienin määrä", + "j8":"Suurin määrä", + "j9":"Syötä transaktion vähimmäismäärä@ info: whatsthis", + "k0":"Syötä suurin kaupan määrä" + }, + "first":{ + "a0":"Mene oikealle nimelle", + "a1":"Meidän suhteemme", + "a2":"Tervetuloa.", + "a3":"Lopeta voitto ja lopeta tappion laskeminen", + "a4":"Kaupankäynti viimeisimmällä hinnalla", + "a5":"Pysykää paikoillanne.", + "a6":"Järjestelyjen hallinnointi", + "a7":"Kaikki toimeksiannot", + "a8":"Historialliset tiedot", + "a9":"useita", + "b0":"Oletko varma, että haluat kirjautua ulos?", + "b1":"Allekirjoitus tai rekisteröinti", + "b2":"Hei, tervetuloa Bindvetiin.", + "b3":"määrä", + "b4":"spot- indeksi", + "b5":"Sopimuksen indeksi", + "b6":"Tuetaan useita ostomenetelmiä", + "b7":"Nopean rahan ostaminen", + "b8":"kestävä", + "b9":"Nykyinen alue ei ole vielä auki", + "c0":"osto", + "c1":"Myy loppuun", + "c2":"aika", + "c3":"Hinta yhteensä", + "c4":"numero", + "c5":"Merkitse hinta", + "c6":"Numeroidut varat", + "c7":"tilavuus" + }, + "recharge":{ + "a0":"Vaihda valuuttaa", + "a1":"*Osoitteen muutos voidaan saada vain", + "a2":"Jos lataat omaisuutesi uudelleen muissa valuutoissa, et pysty saamaan niitä takaisin!", + "a3":"Erc20 on suositeltavaa kerätä", + "a4":"Kopioi osoite", + "a5":"Varmista, että osoite ja tiedot ovat oikeat ennen siirtoa!Kun se on siirretty pois, se on peruuttamaton!", + "a6":"Ole kiltti ja uusiudu." + }, + "currency":{ + "a0":"Oikeudellinen valuuttakauppa", + "a1":"Minä haluaisin ostaa sen.", + "a2":"Haluan myydä sen.", + "a3":"Yksi napsautus kolikon ostaminen", + "a4":"Yksi klik kolikko myynti", + "a5":"Hankinta määrän mukaan", + "a6":"Hankinta määrän mukaan", + "a55": "Myy määrän mukaan", + "a66": "Myy määrän mukaan", + "a7":"Syötä oston määrä@ info: whatsthis", + "a8":"Syötä oston määrä@ info: whatsthis", + "a9":"Syötä kaupan oleva määrä", + "b0":"Olkaa hyvä ja ilmoittakaa myyntimäärä", + "b1":"Yksikön hinta", + "b2":"0 käsittelymaksujen osto", + "b3":"0 provision myynti", + "b4":"Riittämätön käytettävissä oleva tasapaino", + "b5":"Suorittakaa ensin pitkälle viety sertifiointi.", + "b6":"De autentinion", + "b7":"Vahvista osto", + "b8":"Vahvistettu myynti" + } +} \ No newline at end of file diff --git a/i18n/lang/fra.json b/i18n/lang/fra.json new file mode 100644 index 0000000..c6992ba --- /dev/null +++ b/i18n/lang/fra.json @@ -0,0 +1,932 @@ +{ + "common": { + "D": "Jour", + "M": "Mois", + "Y": "Année", + "add": "Ajouter", + "address": "Adresse", + "all": "Tous", + "amout": "Nombre", + "cancel": "Annulation", + "check": "Audit", + "code": "Code de vérification", + "confirm": "C'est sûr.", + "date": "Date", + "detail": "Détails", + "email": "E - mail", + "enter": "Veuillez entrer", + "error": "Échec", + "getCode": "Obtenir le Code de vérification", + "h": "Heure", + "loadMore": "Charger plus", + "m": "Points", + "money": "Montant", + "more": "Plus", + "notData": "Aucune donnée disponible", + "notMore": "Il n'y en a plus.", + "phone": "Téléphone portable", + "requestError": "Le réseau est occupé, Veuillez réessayer plus tard", + "s": "Secondes", + "save": "Enregistrer", + "select": "Veuillez sélectionner", + "sendSuccess": "Envoyé avec succès", + "sms": "SMS", + "submit": "Présentation", + "success": "Succès", + "tips": "Conseils chaleureux", + "total": "Total général", + "type": "Type", + "copy": "Copier", + "light": "Blanc", + "dark": "Noir", + "service": "Service à la clientèle", + "toDwon": "Aller à la page de téléchargement", + "a0": "Veuillez saisir le Code d'abonnement", + "a1": "Copie réussie", + "a2": "La réplication a échoué", + "a3": "Dossiers d'abonnement", + "a4": "Montant payé", + "a5": "Quantité reçue", + "a6": "Numéro de compte", + "a7": "Nombre de recharges", + "a8": "Certificat de paiement", + "a9": "Veuillez saisir la quantité de recharge", + "b0": "Veuillez télécharger le bon de paiement", + "b1": "Achats{amount}Pièce{name}Jetons disponibles{rate}%Récompenses", + "b2": "Activités de souscription", + "b3": "Enregistrer avec succès", + "b4": "Échec de l'enregistrement", + "b5": "Générer une affiche d'invitation", + "b6": "Sélectionner une affiche", + "b8": "Heure d'ouverture", + "b9": "Heure de clôture", + "c0": "Montant minimum de recharge: {num}. Les recharges inférieures au montant minimum ne seront pas facturées et ne seront pas retournées.", + "c1": "Retrait minimal", + "c2": "Numéro de version", + "c3": "Ouvert.", + "c4": "Marge estimée", + "c5": "votre commande de transfert a été soumise avec succès. Veuillez patienter. Les résultats du transfert seront notifiés par SMS ou e - mail. Veuillez vérifier et contacter le service à la clientèle en cas de doute." + }, + "base": { + "a0": "Titre", + "a1": "Retour", + "a2": "Plus", + "a3": "Marché", + "a4": "Options", + "a5": "Nouvelle zone spéciale", + "a6": "Membres", + "a7": "Institut", + "a8": "- Oui.", + "a9": "Dernier prix", + "b0": "Augmentation ou diminution", + "b1": "Cliquez pour vous connecter", + "b2": "Bienvenue.", + "b3": "Veuillez vous connecter", + "b4": "Mise à jour", + "b5": "Remplissage de monnaie", + "b6": "Retrait de pièces", + "b7": "Promotion", + "b8": "Déduction des frais de service", + "b9": "Disponible", + "c0": "Achats", + "c1": "Mon mandat", + "c2": "Authentification de l'identité", + "c3": "Centre de sécurité", + "c4": "Notification des messages", + "c5": "Adresse de retrait", + "c6": "Paramètres", + "c7": "Auto - Sélection", + "c8": "Ajouté avec succès", + "c9": "Annulation réussie", + "d0": "Page d'accueil", + "d1": "Commerce", + "d2": "Actifs", + "d3": "Veuillez saisir le mot - clé de recherche", + "d4": "Tous", + "d5": "Tableau principal", + "d6": "Total des actifs convertis", + "d7": "Comptes des fonds", + "d8": "Tourne.", + "d9": "Monnaie de recherche", + "e0": "Cacher", + "e1": "Solde des actifs", + "e2": "Gel", + "e3": "Réduction", + "e4": "Comptes contractuels", + "e5": "Conversion contractuelle", + "e6": "Classe de mineur", + "e7": "Mineurs", + "h1": "Facturation", + "h2": "nom" + }, + "accountSettings": { + "a0": "Configuration du compte", + "a1": "Portrait", + "a2": "Un surnom.", + "a3": "Numéro de compte principal", + "a4": "Numéro de téléphone portable", + "a5": "Dégroupage", + "a6": "Liaison", + "a7": "Liaison de la boîte aux lettres", + "a8": "Changer de compte", + "a9": "Déconnecter", + "b0": "Modifier le surnom", + "b1": "Veuillez saisir un surnom", + "b2": "Langues", + "b3": "Coordonnées", + "b4": "Consultation régulière", + "b5": "Service à la clientèle", + "b6": "Coopération avec les médias", + "b7": "Si vous avez besoin d'aide, veuillez nous contacter." + }, + "assets": { + "a0": "Gestion des adresses de retrait de pièces", + "a1": "Le carnet d'adresses peut être utilisé pour gérer votre adresse commune. Il n'est pas nécessaire d'effectuer plusieurs vérifications lors de la collecte de pièces à l'adresse existante dans le carnet d'adresses.", + "a2": "La collecte automatique de pièces est prise en charge. Lors de l'utilisation de {name} pour la collecte de pièces, seules les adresses existantes dans le carnet d'adresses réseau sont autorisées à initier la collecte de pièces.", + "a3": "Supprimer l'adresse", + "a4": "Ajouter une adresse", + "a5": "Veuillez sélectionner l'adresse à supprimer", + "a6": "Supprimer l'adresse actuellement sélectionnée", + "a7": "Eau courante", + "a8": "Total général", + "a9": "Disponible", + "b0": "Gel", + "b1": "Comptes des fonds", + "b2": "Comptes contractuels", + "b3": "Compte de levier", + "b4": "Comptes financiers", + "b5": "Veuillez saisir le mot - clé de recherche", + "b6": "Retrait de pièces", + "b7": "Veuillez sélectionner le type de chaîne", + "b8": "Adresse de retrait", + "b9": "Veuillez saisir l'adresse", + "c0": "Nombre", + "c1": "Solde", + "c2": "Veuillez entrer la quantité", + "c3": "Tous", + "c4": "Frais de manutention", + "c5": "Veuillez vérifier attentivement et saisir l'adresse correcte du portefeuille de retrait de pièces.", + "c6": "L'envoi d'une monnaie numérique non correspondante à l'adresse du portefeuille entraîne une perte permanente.", + "c7": "Les frais de manutention de la collecte de pièces seront déduits de la quantité de collecte de pièces.", + "c8": "Enregistrement de la monnaie", + "c9": "Temps", + "d0": "Statut", + "d1": "En cours de vérification", + "d2": "Succès", + "d3": "Échec", + "d4": "Voir plus", + "d5": "Soumission réussie, vérification en cours", + "d6": "Édition", + "d7": "Ajouter", + "d8": "Adresse", + "d9": "Veuillez saisir ou coller une adresse", + "e0": "Remarques", + "e1": "Veuillez entrer un commentaire", + "e2": "Veuillez remplir l'adresse", + "e3": "Veuillez remplir les commentaires", + "e4": "Opération réussie", + "e5": "Remplissage de monnaie", + "e6": "Numériser le Code QR supérieur pour obtenir l'adresse de remplissage de monnaie", + "e7": "Adresse de remplissage", + "e8": "Nombre de pièces remplies", + "e9": "Veuillez entrer la quantité de remplissage de monnaie", + "f0": "Cette adresse est votre dernière adresse de recharge et sera automatiquement affichée lorsque le système recevra la recharge.", + "f1": "Le transfert doit être confirmé par l'ensemble du réseau blockchain et votre {nom} sera automatiquement déposé dans votre compte lorsque les {num} réseaux seront confirmés.", + "f2": "Lors de la confirmation du réseau, votre", + "f3": "N'envoyez que {nom} à cette adresse, l'envoi d'autres devises numériques à cette adresse causera une perte permanente.", + "f4": "Enregistrement du remplissage de la monnaie", + "f5": "Veuillez utiliser le réseau {name} pour envoyer." + }, + "auth": { + "a0": "Authentification de l'identité", + "a1": "Authentification par nom réel", + "a2": "Non certifié", + "a3": "Certifié", + "a4": "Certification avancée", + "a5": "En cours de vérification", + "a6": "Échec de l'authentification", + "a7": "Nationalité", + "a8": "Veuillez sélectionner la nationalité", + "a9": "Nom réel", + "b0": "Veuillez saisir votre vrai nom", + "b1": "Numéro du certificat", + "b2": "Veuillez saisir le numéro d'identification", + "b3": "Confirmation", + "b4": "Certification réussie", + "b5": "Veuillez télécharger la photo avant du certificat", + "b6": "Veuillez télécharger le verso du certificat", + "b7": "S'il vous plaît télécharger la photo d'identification manuelle", + "b8": "Assurez - vous que la photo est claire et sans filigrane et que le haut du corps est complet.", + "b9": "La taille du document est trop grande pour dépasser", + "c0": "Mauvais type de fichier", + "c1": "Téléchargement réussi", + "c2": "Veuillez télécharger la photo de retour du certificat", + "c3": "Veuillez télécharger la photo de face du certificat", + "c4": "Téléchargement réussi, veuillez attendre l'approbation", + "d0": "Date de naissance", + "d1": "Type de certificat", + "d2": "Carte d'identité", + "d3": "Permis de conduire", + "d4": "Passeport", + "d5": "Adresse de résidence", + "d6": "Veuillez entrer votre adresse résidentielle", + "d7": "Les villes", + "d8": "Veuillez entrer votre ville", + "d9": "Code Postal", + "d10": "Veuillez saisir le Code Postal", + "d11": "Numéro de téléphone", + "d12": "Veuillez saisir le numéro de téléphone", + "d13": "Veuillez sélectionner", + "SelectAreaCode": "sélectionner l'indicatif régional" + }, + "exchange": { + "a0": "Monnaie", + "a1": "Abonnement", + "a2": "Contrats", + "a3": "Commerce", + "a4": "Mandat actuel", + "a5": "Mandat Historique", + "a6": "Ajouté avec succès", + "a7": "Annulation réussie", + "a8": "Total des émissions", + "a9": "Total de la circulation", + "b0": "Prix d'émission", + "b1": "Date de publication", + "b2": "Adresse du Livre blanc", + "b3": "Adresse du site officiel", + "b4": "Introduction", + "b5": "Acheter", + "b6": "Vendre", + "b7": "Prix de la Commission", + "b8": "Type", + "b9": "Opérations à prix limité", + "c0": "Opérations sur le marché", + "c1": "Marché conclu", + "c2": "Total général", + "c3": "Acheter", + "c4": "Vendre", + "c5": "Nombre", + "c6": "Au meilleur prix du marché", + "c7": "Prix total", + "c8": "Quantité disponible", + "c9": "Valeur totale", + "d0": "Connexion", + "d1": "Diagramme de partage du temps", + "d2": "Prix", + "d3": "Dernière transaction", + "d4": "Temps", + "d5": "Orientation", + "d6": "Limite de prix", + "d7": "Prix du marché", + "d8": "Veuillez entrer le prix", + "d9": "Veuillez entrer la quantité", + "e0": "Veuillez saisir le prix total", + "e1": "Commande réussie", + "e2": "Prix moyen", + "e3": "Plus haut", + "e4": "Minimum", + "e5": "Quantité", + "e6": "Marché des changes", + "e7": "Informations sur la monnaie", + "e8": "Minutes", + "e9": "Heures", + "f0": "Oh, mon Dieu.", + "f1": "Semaine", + "f2": "Mois", + "f3": "Prix d'achat", + "f4": "Prix de vente", + "f5": "Opérations en monnaie", + "f6": "Veuillez saisir le mot - clé de recherche", + "f7": "- Oui.", + "f8": "Dernier prix", + "f9": "Augmentation ou diminution", + "g0": "Auto - Sélection", + "g1": "Mon mandat", + "g2": "Révocation du mandat", + "g3": "Fonctionnement", + "g4": "Annulation", + "g5": "Annuler le mandat actuel", + "g6": "Annulation réussie" + }, + "option": { + "a0": "Options", + "a1": "Clôture à distance", + "a2": "Regarde.", + "a3": "Regardez en l'air.", + "a4": "Taux de rendement", + "a5": "Achats", + "a6": "Beaucoup.", + "a7": "Vide", + "a8": "En cours", + "a9": "Période suivante", + "b0": "Regarde Ping.", + "b1": "Sélection des augmentations", + "b2": "Taux de rendement", + "b3": "Quantité achetée", + "b4": "Veuillez entrer la quantité", + "b5": "Solde", + "b6": "Recettes prévues", + "b7": "Acheter maintenant", + "b8": "Augmentation", + "b9": "Ping", + "c0": "Chute", + "c1": "Achat réussi", + "c2": "Détails", + "c3": "No de commande", + "c4": "Prix d'ouverture", + "c5": "Prix de clôture", + "c6": "Temps d'achat", + "c7": "Quantité achetée", + "c8": "Type d'achat", + "c9": "Statut", + "d0": "Résultats de clôture", + "d1": "Nombre de règlements", + "d2": "Date de clôture", + "d3": "Voir plus", + "d4": "Options d'achat", + "d5": "En attente de clôture", + "d6": "Ma livraison", + "d7": "Dossiers de clôture", + "d8": "Minutes", + "d9": "Heures", + "e0": "Oh, mon Dieu.", + "e1": "Semaine", + "e2": "Mois", + "e3": "Orientation", + "e4": "Augmentation ou diminution" + }, + "purchase": { + "a0": "Prix d'émission", + "a1": "Monnaie de souscription", + "a2": "Temps de mise en service prévu", + "a3": "Date de début de l'abonnement", + "a4": "Date de clôture de l'abonnement", + "a5": "Abonnement", + "a6": "Veuillez sélectionner la monnaie d'abonnement", + "a7": "Quantité achetée", + "a8": "Veuillez entrer la quantité d'abonnement", + "a9": "Tous", + "b0": "Souscription immédiate", + "b1": "Cycle de souscription", + "b2": "Préchauffage du projet", + "b3": "Début de la souscription", + "b4": "Clôture de la souscription", + "b5": "Publication des résultats", + "b6": "Détails du projet", + "b7": "Oui Non", + "b8": "Achats", + "b9": "Souscription réussie" + }, + "reg": { + "a0": "Enregistrement mobile", + "a1": "Inscription à la boîte aux lettres", + "a2": "Téléphone portable", + "a3": "Veuillez saisir le numéro de téléphone", + "a4": "E - mail", + "a5": "Veuillez saisir le numéro de la boîte aux lettres", + "a6": "Code de vérification", + "a7": "Veuillez saisir le Code de vérification", + "a8": "Mot de passe", + "a9": "Veuillez saisir le mot de passe", + "b0": "Confirmer le mot de passe", + "b1": "Veuillez confirmer le mot de passe", + "b2": "Références", + "b3": "Veuillez saisir une référence", + "b4": "Facultatif", + "b5": "Vous avez accepté", + "b6": "Protocole utilisateur", + "b7": "Et comprendre notre", + "b8": "Accord de confidentialité", + "b9": "Inscription", + "c0": "Compte existant", + "c1": "Connectez - vous maintenant", + "c2": "Veuillez lire et accepter l'Accord", + "c3": "Veuillez remplir le numéro de téléphone", + "c4": "Veuillez remplir le numéro de courriel", + "c5": "Inscription réussie", + "c6": "Code d'invitation (obligatoire)", + "c7": "Veuillez remplir le code d'invitation" + }, + "safe": { + "a0": "Dégroupage", + "a1": "Liaison", + "a2": "E - mail", + "a3": "E - mail No.", + "a4": "Veuillez saisir le numéro de la boîte aux lettres", + "a5": "Code de vérification de la boîte aux lettres", + "a6": "Veuillez saisir le Code de vérification", + "a7": "Code de vérification", + "a8": "Débranchement réussi", + "a9": "Liaison réussie", + "b0": "Mot de passe de connexion oublié", + "b1": "Numéro de compte", + "b2": "Veuillez saisir votre adresse email", + "b3": "Nouveau mot de passe", + "b4": "Veuillez saisir un nouveau mot de passe", + "b5": "Confirmer le mot de passe", + "b6": "Veuillez confirmer le mot de passe", + "b7": "Confirmer les modifications", + "b8": "Veuillez saisir le bon numéro de téléphone ou de courriel", + "b9": "Validateur Google", + "c0": "Comment faire: Télécharger et ouvrir le vérificateur Google, numériser le Code QR ci - dessous ou saisir manuellement la clé secrète pour ajouter un jeton de vérification", + "c1": "Copier la clé", + "c2": "J'ai sauvegardé la clé correctement et je ne la récupérerai pas si elle est perdue.", + "c3": "Prochaines étapes", + "c4": "Code de vérification SMS", + "c5": "Code de vérification Google", + "c6": "Confirmer la liaison", + "c7": "Centre de sécurité", + "c8": "Mot de passe de connexion", + "c9": "Modifier", + "d0": "Paramètres", + "d1": "Mot de passe de la transaction", + "d2": "Téléphone portable", + "d3": "Modification réussie", + "d4": "Numéro de téléphone portable", + "d5": "Veuillez saisir le numéro de téléphone", + "d6": "Veuillez saisir le Code de vérification SMS", + "d7": "Fermer", + "d8": "On y va.", + "d9": "Validation", + "e0": "SMS", + "e1": "Fermeture réussie", + "e2": "Ouverture réussie", + "e3": "Confirmation", + "e4": "Configuration réussie" + }, + "transfer": { + "a0": "Enregistrement des transferts", + "a1": "Succès", + "a2": "Nombre", + "a3": "Orientation", + "a4": "Actifs du compte", + "a5": "Comptes contractuels", + "a6": "Compte de levier", + "a55": "vendu en quantité", + "a66": "vendu pour un montant", + "a7": "Comptes financiers", + "a8": "Tourne.", + "a9": "De", + "b0": "à", + "b1": "Monnaie de transfert", + "b2": "Solde", + "b3": "Tous", + "b4": "Transféré" + }, + "notice": { + "a0": "Détails", + "a1": "Notification des messages", + "a2": "Annonces", + "a3": "Message (s)" + }, + "invite": { + "a0": "Les employés de maison de la transaction privilégiée invitent des amis", + "a1": "Partenaires", + "a2": "Opérations privilégiées", + "a3": "Utilisateurs ordinaires", + "a4": "Mon identité", + "a5": "Statut privilégié", + "a6": "Mon code d'invitation", + "a7": "Copier le Code QR de l'invitation", + "a8": "Copier le lien d'invitation", + "a9": "Ma promotion", + "b0": "Nombre total de personnes promues", + "b1": "Les gens", + "b2": "Total des recettes converties", + "b3": "Dossiers de promotion", + "b4": "Invitation directe", + "b5": "Registre des employés de maison rapatriés", + "b6": "Grade", + "b7": "Définition du niveau", + "b8": "Conditions de promotion", + "b9": "Participation aux dividendes", + "c0": "Un surnom.", + "c1": "Nombre de promotions", + "c2": "Conversion des recettes", + "c3": "Historique de l'invitation", + "c4": "Registre des employés de maison rapatriés", + "c5": "Description de la catégorie de participation", + "c6": "Grade", + "c7": "Capitaux propres", + "c8": "Description", + "c9": "Mes droits" + }, + "help": { + "a0": "Détails", + "a1": "Institut", + "a2": "Classification", + "a3": "" + }, + "login": { + "a0": "Numéro de téléphone ou de courriel", + "a1": "Veuillez saisir le numéro de téléphone ou de courriel", + "a2": "Mot de passe", + "a3": "Veuillez saisir le mot de passe", + "a4": "Connexion", + "a5": "Mot de passe oublié", + "a6": "Pas de compte", + "a7": "Inscrivez - vous maintenant", + "a8": "Téléphone portable", + "a9": "E - mail", + "b0": "Terminé." + }, + "contract": { + "a0": "Ouverture de la position", + "a1": "Position", + "a2": "Mandat", + "a3": "Historique", + "a4": "Opérations contractuelles", + "a5": "Ouverture réussie", + "a6": "Type de transaction", + "a7": "Marché conclu", + "a8": "Total des mandats", + "a9": "Prix de transaction moyen", + "b0": "Prix de la Commission", + "b1": "Dépôt de garantie", + "b2": "Frais de manutention", + "b3": "Statut", + "b4": "Fonctionnement", + "b5": "Annulation", + "b6": "Annulé", + "b7": "Non conclu.", + "b8": "Accord partiel", + "b9": "Tout est réglé.", + "c0": "Kaido.", + "c1": "Vide.", + "c2": "Vide.", + "c3": "Pindo", + "c4": "Conseils chaleureux", + "c5": "Annuler l'ordre actuel", + "c6": "Annulation réussie", + "c7": "Profits et pertes", + "c8": "Partager", + "c9": "Détails du mandat", + "d0": "Aucune donnée disponible", + "d1": "Prix", + "d2": "Nombre", + "d3": "Date de clôture", + "d4": "Intérêts des utilisateurs", + "d5": "Résultat non réalisé", + "d6": "Taux de risque", + "d7": "Prix du marché", + "d8": "Zhang.", + "d9": "Dépôt d'occupation", + "e0": "Bullish", + "e1": "- Oui.", + "e2": "Putting", + "e3": "Ouvert.", + "e4": "Disponible", + "e5": "Tourne.", + "e6": "Taux de financement", + "e7": "Règlement à distance", + "e8": "Beaucoup.", + "e9": "Vide", + "f0": "Transfert de fonds", + "f1": "Calculatrice", + "f2": "À propos du contrat", + "f3": "Fonds de garantie des risques", + "f4": "Historique des dépenses en capital", + "f5": "Mandat ordinaire", + "f6": "Commission du marché", + "f7": "Oui Non", + "f8": "Prix", + "f9": "Double levier ouvert", + "g0": "Kaido.", + "g1": "Vide.", + "g2": "Délégation réussie", + "g3": "Afficher uniquement le contrat actuel", + "g4": "Koping", + "g5": "Mandat", + "g6": "Prix moyen d'ouverture", + "g7": "Prix de base de règlement", + "g8": "Parités fortes estimées", + "g9": "Recettes réglées", + "h0": "Taux de rendement", + "h1": "Fin de l'interférence", + "h2": "Stop loss", + "h3": "Fermeture de la position", + "h4": "Prix du marché", + "h5": "Arrêt des gains et des pertes", + "h6": "Ping", + "h7": "Veuillez saisir le prix de clôture", + "h8": "Limite de prix", + "h9": "Veuillez saisir la quantité de clôture", + "i0": "Koping", + "i1": "Prix moyen d'ouverture", + "i2": "Dernier prix de transaction", + "i3": "Veuillez entrer le prix", + "i4": "Prix de déclenchement", + "i5": "Prix du marché à", + "i6": "Le mandat d'arrêt des bénéfices sera déclenché et les bénéfices et pertes seront estimés après la transaction.", + "i7": "Prix de déclenchement de l'arrêt des pertes", + "i8": "Le mandat d'arrêt des pertes sera déclenché et les bénéfices et pertes seront estimés après la transaction.", + "i9": "C'est sûr.", + "j0": "Clôture réussie", + "j1": "Si le prix du marché est égal ou non", + "j2": "Quanping", + "j3": "Succès", + "j4": "Configuration réussie", + "j5": "Il n'y a pas d'autre solution.", + "j6": "Fais - le.", + "j7": "Prix de clôture", + "j8": "Plate - forme de négociation d'actifs numériques", + "j9": "Quand {Name1} rencontre {name2} {name3} le chemin de l'Ascension", + "k0": "Prix d'ouverture", + "k1": "Dernier prix", + "k2": "Numériser le Code pour en savoir plus", + "k3": "Règlement des profits et pertes", + "k4": "Capture d'écran réussie, sauvegardée localement", + "k5": "Échec de la capture d'écran", + "k6": "Longue capture d'écran", + "k7": "Un bouton tout plat", + "k8": "Un bouton en arrière", + "k9": "Si un bouton est complètement plat", + "l0": "Quanping a réussi.", + "l1": "Si un bouton est inversé", + "l2": "Inversion réussie", + "l3": "Vide.", + "l4": "Pindo" + }, + "otc": { + "a0": "Annonce", + "a1": "Ordre", + "a2": "Monnaie de transaction", + "a3": "Ma commande", + "a4": "Ma Pub", + "a5": "Achats", + "a6": "Vente", + "a7": "Total général", + "a8": "Reste", + "a9": "Limites", + "b0": "Prix unitaire", + "b1": "Mode de paiement", + "b2": "Fonctionnement", + "b3": "Total", + "b4": "Veuillez sélectionner le mode de paiement", + "b5": "Veuillez entrer la quantité", + "b6": "Passer une commande", + "b7": "AliPay", + "b8": "Wechat", + "b9": "Carte bancaire", + "c0": "Commande réussie", + "c1": "Statut", + "c2": "Numéro de l'annonce", + "c3": "Prix total", + "c4": "Nombre", + "c5": "Date de publication", + "c6": "Cadre inférieur", + "c7": "Annulé", + "c8": "En cours de négociation", + "c9": "Terminé", + "d0": "Conseils chaleureux", + "d1": "Annonce actuelle", + "d2": "C'est sûr.", + "d3": "Annulation", + "d4": "Annulation réussie", + "d5": "Comptes en monnaie française", + "d6": "Gel", + "d7": "Numéro de compte AliPay", + "d8": "Veuillez saisir le numéro de compte", + "d9": "Nom (s)", + "e0": "Veuillez saisir un nom", + "e1": "Code de paiement", + "e2": "Liaison", + "e3": "Compte Wechat", + "e4": "Nom de la Banque", + "e5": "Veuillez saisir le nom de la Banque", + "e6": "Sous - direction de l'ouverture du compte", + "e7": "Veuillez saisir la Sous - direction de l'ouverture du compte", + "e8": "Numéro de carte bancaire", + "e9": "Veuillez saisir le numéro de carte bancaire", + "f0": "Édition réussie", + "f1": "Ajouté avec succès", + "f2": "Vendre", + "f3": "Acheter", + "f4": "Détails de la commande", + "f5": "No de commande", + "f6": "Numéro de compte", + "f7": "Banque de dépôt", + "f8": "Temps restant", + "f9": "Points", + "g0": "Secondes", + "g1": "Télécharger le bon de paiement", + "g2": "Confirmation du paiement", + "g3": "Annuler la commande", + "g4": "Confirmer le recouvrement", + "g5": "Non reçu", + "g6": "Annuler la commande actuelle", + "g7": "Ordre annulé", + "g8": "Confirmer le paiement actuel", + "g9": "Opération réussie", + "h0": "Les actifs à vendre seront automatiquement transférés après confirmation de la collecte.", + "h1": "Cette commande entrera automatiquement en appel après confirmation du non - paiement", + "h2": "Ordre de vente", + "h3": "Bon de commande", + "h4": "Bon de commande publicitaire", + "h5": "Commandes publicitaires", + "h6": "Temps", + "h7": "Détails", + "h8": "Tous", + "h9": "Fermé", + "i0": "À payer", + "i1": "À confirmer", + "i2": "Dans la plainte", + "i3": "Type de publicité", + "i4": "Veuillez sélectionner le type de transaction", + "i5": "Veuillez sélectionner la devise de transaction", + "i6": "Prix", + "i7": "Veuillez entrer le prix", + "i8": "Prix le plus bas", + "i9": "Veuillez saisir le prix le plus bas", + "j0": "Prix maximum", + "j1": "Veuillez saisir le prix maximum", + "j2": "Remarques", + "j3": "Veuillez entrer un commentaire", + "j4": "Publication", + "j5": "Publié avec succès", + "j6": "Mode de collecte", + "j7": "Quantité minimale", + "j8": "Quantité maximale", + "j9": "Veuillez saisir le volume minimal de transaction", + "k0": "Veuillez saisir le volume maximal de transaction" + }, + "first": { + "a0": "Au vrai nom", + "a1": "À propos de nous", + "a2": "Soyez le bienvenu.", + "a3": "Réglage de l'arrêt des gains et des pertes", + "a4": "Trading at Current latest price", + "a5": "Position de détention", + "a6": "Gestion des commandes", + "a7": "Toutes les délégations", + "a8": "Historique", + "a9": "Multiple", + "b0": "Tu es sûr de vouloir quitter la connexion?", + "b1": "Connexion ou inscription", + "b2": "Hi, bienvenue à CATYcoin", + "b3": "Quantité", + "b4": "Indice au comptant", + "b5": "Indices contractuels", + "b6": "Prise en charge de plusieurs modes d'achat", + "b7": "Acheter de l'argent rapidement", + "b8": "Durable", + "b9": "La zone actuelle n'est pas encore ouverte", + "c0": "Acheter", + "c1": "Vendre", + "c2": "Temps", + "c3": "Prix total", + "c4": "Nombre", + "c5": "Prix de marquage", + "c6": "Biens grevés", + "c7": "Volume" + }, + "recharge": { + "a0": "Changer de devise", + "a1": "*Changer l'adresse ne peut recevoir que", + "a2": "Si les avoirs sont rechargés dans d’autres devises, ils ne seront pas récupérés !", + "a3": "Il est recommandé d'utiliser ERC20 pour le recouvrement des paiements", + "a4": "Copier l'adresse", + "a5": "*Veuillez vous assurer de confirmer que l'adresse et les informations sont correctes avant de transférer de l'argent! Une fois transféré, il ne peut pas être retiré !", + "a6": "Veuillez régénérer" + }, + "currency": { + "a0": "Opérations en monnaie française", + "a1": "Je vais l'acheter.", + "a2": "Je vais le vendre.", + "a3": "Acheter de l'argent en un clic", + "a4": "Un bouton pour vendre de l'argent", + "a5": "Acheter par quantité", + "a6": "Acheter par montant", + "a7": "Veuillez entrer la quantité achetée", + "a8": "Veuillez saisir le montant de l'achat", + "a9": "Veuillez entrer la quantité vendue", + "b0": "Veuillez saisir le montant de la vente", + "b1": "Prix unitaire", + "b2": "0 frais d'achat", + "b3": "0 frais de vente", + "b4": "Solde disponible insuffisant", + "b5": "Veuillez d'abord compléter la certification avancée", + "b6": "Pour certifier", + "b7": "Confirmer l'achat", + "b8": "Confirmation de la vente" + }, + "cxiNewText": { + "a0": "Top 10", + "a1": "5 millions+", + "a2": "< 0.10%", + "a3": "200+", + "a4": "Classement mondial", + "a5": "Les utilisateurs nous font confiance", + "a6": "Frais ultra-bas", + "a7": "Des pays", + "a21": "Gagner un revenu immédiatement", + "a22": "Créer un portefeuille personnel de crypto-monnaie", + "a23": "Achetez, échangez et détenez plus de 100 crypto-monnaies", + "a24": "Recharger le compte", + "a25": "Inscrivez-vous par e-mail", + "a38": "Ouvrez des transactions à tout moment, n'importe où.", + "a39": "Commencez à négocier en toute sécurité et facilement à tout moment via notre application et notre page Web", + "a41": "Une plateforme de trading de crypto-monnaie de confiance", + "a42": "Nous nous engageons à assurer la sécurité des utilisateurs avec des protocoles stricts et des mesures techniques de pointe.", + "a43": "Fonds d'actifs de sécurité des utilisateurs", + "a44": "Nous stockons 10 % de tous les frais de transaction dans des fonds d'actifs sûrs pour fournir une protection partielle aux fonds des utilisateurs", + "a45": "Contrôle d'accès personnalisé", + "a46": "Le contrôle d'accès personnalisé restreint l'accès aux appareils et aux adresses des comptes personnels, afin que les utilisateurs n'aient aucun souci.", + "a47": "Cryptage avancé des données", + "a48": "Les données de transaction personnelles sont protégées par un cryptage de bout en bout, et seule la personne peut accéder aux informations personnelles.", + "a57": "Cliquez pour aller", + "a71": "Guide du débutant ", + "a72": "Démarrez immédiatement l'apprentissage du trading de devises numériques ", + "a77": "Comment acheter de la monnaie numérique ", + "a78": "Comment vendre de la monnaie numérique ", + "a79": "Comment négocier des devises numériques", + "a80": "Place du marché", + "a81": "Tendance du marché sur 24 heures", + "a82": "Ajoutez des fonds de crypto-monnaie à votre portefeuille et commencez à trader instantanément" + + }, + "homeNewText": { + "aa1": "Porte de crypto-monnaie", + "aa2": "Échangez de manière sûre, rapide et facile sur plus de 100 crypto-monnaies", + "aa3": "Inscrivez-vous par e-mail", + "aa4": "Commencez à trader maintenant", + "aa5": "tendance du marché", + "aa6": "Devis d'actifs numériques Express", + "aa7": "Devise", + "bb1": "Dernier prix (USD)", + "bb2": "Augmentation de 24h", + "bb3": "Volume des transactions sur 24 heures", + "bb4": "Échange de crypto-monnaie pour tous", + "bb5": "Commencez à trader ici et vivez un meilleur voyage en matière de crypto-monnaie", + "bb6": "personnel", + "bb7": "Un échange de crypto-monnaie pour tous. La plateforme de trading la plus fiable avec une large gamme de devises", + "cc1": "ntreprise", + "cc2": "Conçu pour les entreprises et les institutions. Fournir des solutions cryptographiques aux investisseurs institutionnels et aux entreprises", + "cc3": "Développeur", + "cc4": "Conçu pour les développeurs, pour que les développeurs puissent créer les outils et les API du futur du web3", + "cc6": "Scanner le code QR", + "cc7": "Téléchargez l'application Android/IOS", + "dd1": "Sûr et stable avec zéro accident", + "dd2": "De multiples stratégies de sécurité et une garantie de réserve à 100 % garantissent qu'aucun incident de sécurité ne s'est produit depuis sa création.", + "dd3": "Échangez des actifs cryptographiques de manière simple et pratique", + "dd4": "Dans CATYcoin, les produits sont faciles à comprendre, le processus de transaction est pratique et la plateforme unique de services d'actifs blockchain", + "dd5": "Dérivés", + "dd6": "Vous pouvez négocier des contrats sur plus de 100 crypto-monnaies avec un effet de levier jusqu'à 150x et réaliser des bénéfices élevés", + "ee1": "Prise en charge de plusieurs terminaux", + "ee2": "Échangez des actifs numériques à tout moment et en tout lieu", + "ee3": "Prend en charge un large éventail de types d'actifs, avec toutes les informations sur les devises disponibles", + "ee4": "Comprendre rapidement le processus de trading d'actifs numériques", + "ee5": "Commencez votre voyage de chiffrement", + "ee6": "Vérification graphique", + "ee7": "Vérification graphique", + "dd1": "Vérification réussie", + "dd2": "échec de la vérification", + "dd3": "Veuillez compléter la vérification de sécurité", + "dd4": "Faites glisser le curseur pour terminer le puzzle", + + "hh0": "L'avenir de l'argent est là", + "hh1": "À la recherche de bonnes opportunités de trading", + "hh2": "Échangez plus de 100 crypto-monnaies de manière sûre, rapide et facile", + "hh3": "Essayez notre échange de crypto-monnaie maintenant", + "hh4": "Démarrez rapidement votre parcours commercial", + "hh5": "Enregistrer le compte {name}", + "hh6": "S'inscrire", + "hh7": "Découvrez nos produits et services ici", + "hh8": "La sécurité n'est pas une mince affaire. Afin de protéger la sécurité de vos actifs et de vos informations, nous ferons des efforts sans fin", + "hh9": "En stock", + "hh10": "Négociez des crypto-monnaies avec des outils complets.", + "hh11": "Dérivés", + "hh12": "Contrats commerciaux avec le meilleur échange de crypto-monnaie au monde.", + "hh13": "Robot de trading", + "hh14": "Gagnez des bénéfices passifs sans surveiller le marché.", + "hh15": "Acheter des pièces", + "hh16": "Achetez des crypto-monnaies en un seul clic.", + "hh17": "{nem} gagne des pièces", + "hh18": "Gagnez un revenu stable en investissant auprès de gestionnaires d'actifs professionnels.", + "hh19": "Trading avec effet de levier", + "hh20": "Empruntez, échangez et remboursez, exploitez vos actifs grâce au trading sur marge.", + "hh21": "Votre échange de crypto-monnaie fiable et sécurisé", + "hh22": "Stockage sécurisé des ressources", + "hh23": "Nos systèmes de cryptage et de stockage de pointe garantissent que vos actifs sont toujours sécurisés et confidentiels.", + "hh24": "Sécurité renforcée du compte", + "hh25": "Nous adhérons aux normes de sécurité les plus élevées et mettons en œuvre les mesures de sécurité les plus strictes pour garantir la sécurité de votre compte.", + "hh26": "Plateforme de confiance", + "hh27": "Nous disposons d'une base de conception sécurisée pour garantir une détection et une réponse rapides à toute cyberattaque.", + "hh28": "Preuve de réserve d'actifs—Transparence des actifs", + "hh29": "La preuve de réserve (PoR) est une méthode largement utilisée pour prouver la garde des actifs de la blockchain. Cela signifie que {name} dispose de fonds couvrant tous les actifs des utilisateurs dans nos livres.", + "hh30": "Le trading peut être effectué à tout moment et en tout lieu", + "hh31": "Que ce soit APP ou WEB, vous pouvez démarrer rapidement votre transaction", + "hh32": "Commencez votre aventure avec la monnaie numérique maintenant", + "hh33": "Inscrivez-vous maintenant", + "hh34": "Nous sommes l'endroit le plus fiable permettant aux investisseurs d'acheter, de vendre et de gérer des cryptomonnaies", + "hh35": "Inscrivez-vous par email", + "hh36": "FAQ", + "hh41": "CATYcoin, échangez à tout moment et n'importe où", + "hh42": "Négociez maintenant", + "hh43": "Scannez le code QR pour télécharger CATYcoin APP", + "hh37": "Classement mondial", + "hh38": "les utilisateurs nous font confiance", + "hh39": "Frais ultra-bas", + "hh40": "Pays" + } +} \ No newline at end of file diff --git a/i18n/lang/it.json b/i18n/lang/it.json new file mode 100644 index 0000000..c975c1b --- /dev/null +++ b/i18n/lang/it.json @@ -0,0 +1,931 @@ +{ + "common": { + "D": "giorno", + "M": "mese", + "Y": "anno", + "add": "aggiungere a", + "address": "indirizzo", + "all": "Tutti", + "amout": "numero", + "cancel": "annulla", + "check": "da esaminare", + "code": "Codice di verifica", + "confirm": "determinare", + "date": "data", + "detail": "dettagli", + "email": "mailbox", + "enter": "Inserisci prego", + "error": "fail", + "getCode": "Ottenere codice di verifica", + "h": "Tempo", + "loadMore": "Carica di più", + "m": "ramo", + "money": "importo del denaro", + "more": "più", + "notData": "Nessun dato disponibile", + "notMore": "Basta così.", + "phone": "cellulare", + "requestError": "La rete è occupata. Riprova più tardi", + "s": "secondo", + "save": "conservazione", + "select": "Seleziona", + "sendSuccess": "Inviato con successo", + "sms": "breve messaggio", + "submit": "Invia", + "success": "successo", + "tips": "promemoria", + "total": "totale", + "type": "tipo", + "copy": "Ricevuto.", + "light": "bianco", + "dark": "black", + "service": "Servizio clienti", + "toDwon": "Vuoi andare alla pagina di download", + "a0": "Inserisci il codice di acquisto", + "a1": "Copia riuscita", + "a2": "copia non riuscita", + "a3": "Registri di acquisto", + "a4": "Importo del pagamento", + "a5": "Quantità ricevute", + "a6": "numero di conto", + "a7": "Quantità di ricarica", + "a8": "buono di pagamento", + "a9": "Inserisci quantità di ricarica", + "b0": "Invia il buono di pagamento", + "b1": "acquisto{amount}Pezzi{name}Token disponibile{rate}%ricompensa", + "b2": "Attività di sottoscrizione", + "b3": "Salvato con successo", + "b4": "Salva non riuscito", + "b5": "Genera gli inviti Poster", + "b6": "Seleziona Poster", + "b8": "Orario di apertura", + "b9": "Tempo di chiusura", + "c0": "Importo minimo di ricarica: {num}. Ricarica meno della quantità minima non sarà postata e non può essere restituita.", + "c1": "Importo minimo di prelievo", + "c2": "Numero di versione", + "c3": "Aperto", + "c4": "Margine stimato", + "c5": "l'ordine di trasferimento è stato presentato con successo, si prega di attendere pazientemente, e il risultato di trasferimento sarà notificato via SMS o e-mail. Si prega di controllare attentamente. Se avete domande, si prega di contattare il servizio clienti in tempo." + }, + "base": { + "a0": "titolo", + "a1": "ritorno", + "a2": "più", + "a3": "citazione", + "a4": "opzione", + "a5": "Nuova zona", + "a6": "membro", + "a7": "college", + "a8": "Accordo per", + "a9": "Prezzo ultimo", + "b0": "Su e giù", + "b1": "Fare clic sul login", + "b2": "Benvenuti a", + "b3": "Si prega di accedere", + "b4": "upgrade", + "b5": "Onere denaro", + "b6": "Ritirare i soldi", + "b7": "estensione", + "b8": "Riduzione della tassa di servizio", + "b9": "disponibile", + "c0": "acquisto", + "c1": "La mia commissione", + "c2": "autenticazione identità", + "c3": "Centro di sicurezza", + "c4": "Notifica del messaggio", + "c5": "Indirizzo di ritiro", + "c6": "montato", + "c7": "Facoltativo", + "c8": "Aggiunto con successo", + "c9": "Annulla con successo", + "d0": "home page", + "d1": "transazione", + "d2": "attività", + "d3": "Inserisci parole chiave di ricerca", + "d4": "intero", + "d5": "una scheda principale", + "d6": "Totale delle attività equivalenti", + "d7": "Conto di capitale", + "d8": "Trasferimento", + "d9": "Cerca valuta", + "e0": "nascondere", + "e1": "Attività di bilancio", + "e2": "congelati", + "e3": "Equivalente", + "e4": "Conto contrattuale", + "e5": "Conversione contrattuale", + "e6": "Classe di minerali", + "e7": "miner", + "h1": "Fattura", + "h2": "nome" + }, + "accountSettings": { + "a0": "Impostazioni account", + "a1": "ritratto della testa", + "a2": "Cognome?", + "a3": "Numero di conto principale", + "a4": "numero di cellulare", + "a5": "Separazione", + "a6": "vincolante", + "a7": "Legame per corrispondenza", + "a8": "Scambio di conti", + "a9": "Esci fuori", + "b0": "Cambia nick", + "b1": "Inserisci un nickname", + "b2": "lingua", + "b3": "Informazioni di contatto", + "b4": "Consultazione di routine", + "b5": "Servizio clienti", + "b6": "Cooperazione dei media", + "b7": "Se avete bisogno di aiuto, vi preghiamo di contattarci" + }, + "assets": { + "a0": "Gestione dell’indirizzo di ritiro", + "a1": "L'indirizzo può essere usato per gestire i vostri indirizzi comuni, e non c'è bisogno di effettuare controlli multipli quando prelevare denaro dagli indirizzi nella rubrica", + "a2": "Il prelievo automatico di valuta è supportato. Quando {nome} è usato, solo gli indirizzi nel portafoglio indirizzi sono autorizzati ad avviare il ritiro di valuta", + "a3": "Elimina indirizzo", + "a4": "Aggiungi indirizzo", + "a5": "Seleziona l'indirizzo da eliminare", + "a6": "Elimina l'indirizzo attualmente selezionato", + "a7": "fluente acqua", + "a8": "totale", + "a9": "disponibile", + "b0": "congelati", + "b1": "Conto di capitale", + "b2": "Conto contrattuale", + "b3": "Conto di leva", + "b4": "Conto finanziario", + "b5": "Inserisci parole chiave di ricerca", + "b6": "Ritirare i soldi", + "b7": "Per favore seleziona tipo di catena", + "b8": "Indirizzo di ritiro", + "b9": "Inserisci l'indirizzo", + "c0": "numero", + "c1": "saldo", + "c2": "Quantità di input", + "c3": "intero", + "c4": "Carica di servizio", + "c5": "Si prega di controllare attentamente ed inserire l'indirizzo corretto del portafoglio.", + "c6": "Inviare valuta digitale senza pari all'indirizzo del portafoglio causerà perdite permanenti.", + "c7": "La tassa di gestione sarà detratta dall’importo del denaro ritirato.", + "c8": "Registrazione di ritiro", + "c9": "tempo", + "d0": "Stato", + "d1": "In revisione", + "d2": "successo", + "d3": "fail", + "d4": "Vedi di più", + "d5": "Presentato con successo, in corso di revisione", + "d6": "modifica", + "d7": "aggiungere a", + "d8": "indirizzo", + "d9": "Inserisci o incolla l'indirizzo", + "e0": "osservazioni", + "e1": "Per favore inserisci i tuoi commenti", + "e2": "Si prega di compilare l'indirizzo", + "e3": "Si prega di compilare le osservazioni", + "e4": "Funzionamento riuscito", + "e5": "Onere denaro", + "e6": "Scansiona il codice QR sopra per ottenere l'indirizzo di ricarica", + "e7": "Indirizzo di ricarica", + "e8": "Numero di monete addebitate", + "e9": "Inserisci l'importo della valuta addebitata", + "f0": "Questo indirizzo è il tuo ultimo indirizzo di ricarica. Quando il sistema riceve la ricarica, sarà automaticamente registrato.", + "f1": "Il trasferimento deve essere confermato da tutta la rete Blockchain. Quando si arriva alla conferma della rete {num}, il tuo {nome} sarà automaticamente depositato nel conto.", + "f2": "Quando una rete è confermata, il vostro", + "f3": "Inviare {nome} a questo indirizzo. Inviare altra valuta digitale a questo indirizzo causerà una perdita permanente.", + "f4": "Registrazione di ricarica", + "f5": "Si prega di utilizzare la rete di {name} per inviare." + }, + "auth": { + "a0": "autenticazione identità", + "a1": "Autenticazione del nome reale", + "a2": "Non certificata", + "a3": "Certificato", + "a4": "Certificazione avanzata", + "a5": "In revisione", + "a6": "Autenticazione non riuscita", + "a7": "nazionalità", + "a8": "Scegli la tua nazionalità", + "a9": "Nome vero", + "b0": "Inserisci il tuo vero nome", + "b1": "Numero di identificazione", + "b2": "Inserisci numero identificativo", + "b3": "conferma", + "b4": "Certificazione riuscita", + "b5": "Si prega di caricare la foto anteriore della carta d'identità", + "b6": "Si prega di caricare il retro del certificato", + "b7": "Per favore carica la tua foto identificativa tenuta a mano", + "b8": "Assicurati che la foto sia chiara senza filigrana e che il corpo superiore sia intatto", + "b9": "La dimensione del file è troppo grande e non può superare", + "c0": "Errore del tipo di file", + "c1": "Upload riuscito", + "c2": "Si prega di caricare la foto sul retro del certificato", + "c3": "Si prega di caricare la foto anteriore della carta d'identità", + "c4": "Upload di successo, si prega di attendere il audit", + "d0": "Data di nascita", + "d1": "Tipo di documento", + "d2": "ID", + "d3": "Patente di guida", + "d4": "Passaporto", + "d5": "Indirizzo di residenza", + "d6": "Inserisci il tuo indirizzo residenziale", + "d7": "Città", + "d8": "Entrate nella vostra città", + "d9": "Codice postale", + "d10": "Inserisci il codice zip", + "d11": "numero di telefono", + "d12": "Inserisci il numero di telefono cellulare", + "d13": "Seleziona", + "SelectAreaCode": "selezionare il prefisso" + }, + "exchange": { + "a0": "Monete", + "a1": "domanda per l'acquisto", + "a2": "contratto", + "a3": "transazione", + "a4": "Delegazione attuale", + "a5": "Commissione storica", + "a6": "Aggiunto con successo", + "a7": "Annulla con successo", + "a8": "Numero totale", + "a9": "Totale della circolazione", + "b0": "Prezzo di emissione", + "b1": "Tempo di emissione", + "b2": "Indirizzo della carta bianca", + "b3": "Indirizzo ufficiale del sito", + "b4": "breve introduzione", + "b5": "comprare", + "b6": "vendere", + "b7": "Prezzo della Commissione", + "b8": "tipo", + "b9": "Traffico limite di prezzo", + "c0": "Operazioni di mercato", + "c1": "Chiuso", + "c2": "totale", + "c3": "acquisto", + "c4": "vendere fuori", + "c5": "numero", + "c6": "Chiudi al miglior prezzo di mercato", + "c7": "Prezzo totale", + "c8": "Quantità disponibile", + "c9": "valore lordo", + "d0": "Firma in", + "d1": "Scheda di condivisione del tempo", + "d2": "Prezzo", + "d3": "Ultimo accordo", + "d4": "tempo", + "d5": "direzione", + "d6": "prezzo fisso", + "d7": "Prezzo di mercato", + "d8": "Inserisci il prezzo", + "d9": "Quantità di input", + "e0": "Inserisci il prezzo totale", + "e1": "verificare il successo", + "e2": "prezzo medio", + "e3": "più alto", + "e4": "minimo", + "e5": "importo", + "e6": "Ordine", + "e7": "Informazioni sulla valuta", + "e8": "minuto", + "e9": "ora", + "f0": "giorno", + "f1": "settimana", + "f2": "mese", + "f3": "Prezzo di acquisto", + "f4": "Prezzo di vendita", + "f5": "Operazioni di valuta", + "f6": "Inserisci parole chiave di ricerca", + "f7": "Accordo per", + "f8": "Prezzo ultimo", + "f9": "Su e giù", + "g0": "Facoltativo", + "g1": "La mia commissione", + "g2": "Revoca dell’incarico", + "g3": "operazione", + "g4": "revoco", + "g5": "Annulla la delegazione attuale", + "g6": "Cancellato con successo" + }, + "option": { + "a0": "opzione", + "a1": "Distanza di consegna", + "a2": "Vedi di più", + "a3": "essere portatori", + "a4": "Tasso di ritorno", + "a5": "acquisto", + "a6": "molti", + "a7": "vuota", + "a8": "corrente", + "a9": "Prossimo numero", + "b0": "Vedi piano", + "b1": "Scelta dell'aumento dei prezzi", + "b2": "Tasso di ritorno", + "b3": "Quantità di acquisto", + "b4": "Quantità di input", + "b5": "saldo", + "b6": "Entrate previste", + "b7": "Acquista ora", + "b8": "aumento", + "b9": "piatto", + "c0": "caduta", + "c1": "Acquisto riuscito", + "c2": "dettagli", + "c3": "Numero d'ordine", + "c4": "Prezzo di apertura", + "c5": "Prezzo di chiusura", + "c6": "Tempo di acquisto", + "c7": "Quantità di acquisto", + "c8": "Tipo di acquisto", + "c9": "Stato", + "d0": "Risultato di chiusura", + "d1": "Quantità di regolamento", + "d2": "tempo di consegna", + "d3": "Vedi di più", + "d4": "Opzione di acquisto", + "d5": "In attesa di consegna", + "d6": "La mia consegna", + "d7": "Registrazione di consegna", + "d8": "minuto", + "d9": "ora", + "e0": "giorno", + "e1": "settimana", + "e2": "mese", + "e3": "direzione", + "e4": "Su e giù" + }, + "purchase": { + "a0": "Prezzo di emissione", + "a1": "Moneta di sottoscrizione", + "a2": "Tempo previsto online", + "a3": "Orario di inizio della sottoscrizione", + "a4": "Tempo di chiusura", + "a5": "domanda per l'acquisto", + "a6": "Seleziona la valuta di sottoscrizione", + "a7": "Quantità di acquisto", + "a8": "Inserisci la quantità", + "a9": "intero", + "b0": "Applicare immediatamente", + "b1": "Ciclo di sottoscrizione", + "b2": "Progetto di riscaldamento", + "b3": "Avvia sottoscrizione", + "b4": "Chiudi l'abbonamento", + "b5": "Pubblica i risultati", + "b6": "Dettagli del progetto", + "b7": "Uso o no", + "b8": "acquisto", + "b9": "Acquisto riuscito" + }, + "reg": { + "a0": "Registrazione mobile", + "a1": "Registrazione elettronica", + "a2": "cellulare", + "a3": "Inserisci il numero di telefono cellulare", + "a4": "mailbox", + "a5": "Inserisci il tuo numero di posta elettronica", + "a6": "Codice di verifica", + "a7": "Inserire il codice di verifica", + "a8": "password", + "a9": "Inserisci una password", + "b0": "Conferma password", + "b1": "Conferma la password", + "b2": "Riferimenti", + "b3": "Inserire la raccomandazione", + "b4": "Facoltativo", + "b5": "Avete accettato", + "b6": "Accordo utente", + "b7": "E impara su di noi", + "b8": "Accordo sulla privacy", + "b9": "registrazione", + "c0": "Numero di conto esistente", + "c1": "Firma subito.", + "c2": "Si prega di leggere e accettare l'accordo", + "c3": "Inserisci il tuo numero di cellulare", + "c4": "Inserisci il numero di posta elettronica", + "c5": "login è stato efficace", + "c6": "Codice invito (richiesto)", + "c7": "Per favore inserisci il codice invito" + }, + "safe": { + "a0": "Separazione", + "a1": "vincolante", + "a2": "mailbox", + "a3": "Email n.", + "a4": "Inserisci il tuo numero di posta elettronica", + "a5": "Codice di verifica Email", + "a6": "Inserire il codice di verifica", + "a7": "Codice di verifica", + "a8": "Unlegante riuscito", + "a9": "Binding riuscito", + "b0": "Scordati la password di accesso", + "b1": "numero di conto", + "b2": "Per favore inserisci il tuo indirizzo email", + "b3": "Nuova password", + "b4": "Inserisci una nuova password", + "b5": "Conferma password", + "b6": "Conferma la password", + "b7": "Conferma modifica", + "b8": "Inserisci il numero di cellulare o di posta elettronica corretto", + "b9": "Google verificatore", + "c0": "Come farlo: Scarica e apri il verificatore di Google, scansiona il codice QR sotto o inserisci manualmente la chiave segreta per aggiungere il segno di verifica", + "c1": "Copia chiave", + "c2": "Ho tenuto la chiave come si deve, se la perdo, non sarà recuperata.", + "c3": "passo successivo", + "c4": "Codice di verifica SMS", + "c5": "Google captcha", + "c6": "Conferma il legame", + "c7": "Centro di sicurezza", + "c8": "Login password", + "c9": "modifica", + "d0": "montato", + "d1": "Codice di transazione", + "d2": "cellulare", + "d3": "Modificato con successo", + "d4": "numero di cellulare", + "d5": "Inserisci il numero di telefono cellulare", + "d6": "Inserisci codice di verifica SMS", + "d7": "chiusura", + "d8": "aperto", + "d9": "verifica", + "e0": "breve messaggio", + "e1": "Chiuso con successo", + "e2": "Apri con successo", + "e3": "conferma", + "e4": "Imposta con successo" + }, + "transfer": { + "a0": "Registrazione di trasferimento", + "a1": "successo", + "a2": "numero", + "a3": "direzione", + "a4": "Attività del conto", + "a5": "Conto contrattuale", + "a6": "Conto di leva", + "a7": "Conto finanziario", + "a8": "Trasferimento", + "a9": "da", + "b0": "a", + "b1": "Moneta di trasferimento", + "b2": "saldo", + "b3": "intero", + "b4": "Trasferimento" + }, + "notice": { + "a0": "dettagli", + "a1": "Notifica del messaggio", + "a2": "Avviso", + "a3": "news" + }, + "invite": { + "a0": "Goditi lo sconto commerciale e invita gli amici", + "a1": "partner", + "a2": "Goditi lo sconto commerciale", + "a3": "Utenti ordinari", + "a4": "La mia identità", + "a5": "Goditi la tua identità", + "a6": "Il mio codice d'invito", + "a7": "Copia codice di invito QR", + "a8": "Copia link di invito", + "a9": "La mia promozione", + "b0": "Numero totale di promozioni", + "b1": "persone", + "b2": "Importo totale del reddito", + "b3": "Risultati della promozione", + "b4": "invito diretto", + "b5": "Registrazione della Commissione restituita", + "b6": "Grado", + "b7": "Impostazione del livello", + "b8": "Condizioni di promozione", + "b9": "Dividend interessi", + "c0": "Cognome?", + "c1": "Numero di promotori", + "c2": "Conversione del reddito", + "c3": "Registrazione di invito", + "c4": "Registrazione della Commissione restituita", + "c5": "Descrizione degli interessi di classe", + "c6": "Grado", + "c7": "Diritti e interessi", + "c8": "spiegare", + "c9": "I miei diritti e interessi" + }, + "help": { + "a0": "dettagli", + "a1": "college", + "a2": "classificazione", + "a3": "" + }, + "login": { + "a0": "Cellulare o numero di posta elettronica", + "a1": "Inserisci il cellulare o il numero di posta elettronica", + "a2": "password", + "a3": "Inserisci una password", + "a4": "Firma in", + "a5": "Scordati la password", + "a6": "Nessun conto", + "a7": "Registrati ora", + "a8": "cellulare", + "a9": "mailbox", + "b0": "completa" + }, + "contract": { + "a0": "aprire un granaio per fornire sollievo", + "a1": "Posizione", + "a2": "affidare", + "a3": "storia", + "a4": "Operazioni contrattuali", + "a5": "Apertura riuscita", + "a6": "Tipo di transazione", + "a7": "Chiuso", + "a8": "Importo delegato totale", + "a9": "Prezzo medio di transazione", + "b0": "Prezzo della Commissione", + "b1": "obbligazione", + "b2": "Carica di servizio", + "b3": "Stato", + "b4": "operazione", + "b5": "annullare l'ordine", + "b6": "revocato", + "b7": "Senza", + "b8": "Operazioni parziali", + "b9": "Tutti chiusi", + "c0": "Kaiduo.", + "c1": "Pingkong", + "c2": "Aria aperta", + "c3": "Pinto", + "c4": "promemoria", + "c5": "Annulla l'ordine corrente", + "c6": "Cancellato con successo", + "c7": "Profitto e perdita", + "c8": "condivisione", + "c9": "Informazioni sull’incarico", + "d0": "Nessun dato disponibile", + "d1": "Prezzo", + "d2": "numero", + "d3": "Tempo di transazione", + "d4": "Diritti dell'utente", + "d5": "Risultato e perdita non saldati", + "d6": "Tasso di rischio", + "d7": "Prezzo di mercato", + "d8": "Zhang.", + "d9": "Attività di deposito", + "e0": "Buffo", + "e1": "Può aprire di più", + "e2": "Orribile", + "e3": "Può aprire vuoto", + "e4": "disponibile", + "e5": "Trasferimento", + "e6": "Tasso di capitale", + "e7": "Distanza di regolamento", + "e8": "molti", + "e9": "vuota", + "f0": "Trasferimento di fondi", + "f1": "Calcolatore", + "f2": "Sul contratto", + "f3": "Fondo di protezione dei rischi", + "f4": "Storia dei costi di capitale", + "f5": "Obbligo generale", + "f6": "ordine di mercato", + "f7": "È basato su", + "f8": "Il prezzo di", + "f9": "Doppia leva finanziaria", + "g0": "Kaiduo.", + "g1": "Aria aperta", + "g2": "Commissione di successo", + "g3": "Mostra solo il contratto corrente", + "g4": "Keping", + "g5": "affidare", + "g6": "Prezzo di apertura medio", + "g7": "Prezzo di riferimento per regolamento", + "g8": "Stimata forte parità", + "g9": "Reddito versato", + "h0": "Tasso di ritorno", + "h1": "Stop profit", + "h2": "Perdita di arresto", + "h3": "chiudere una posizione", + "h4": "Il prezzo di mercato è piatto", + "h5": "Stop profitti e arresto perdita", + "h6": "piatto", + "h7": "Inserire il prezzo di chiusura", + "h8": "prezzo fisso", + "h9": "Indicare il quantitativo di chiusura", + "i0": "Keping", + "i1": "Prezzo di apertura medio", + "i2": "Ultimo prezzo di transazione", + "i3": "Inserisci il prezzo", + "i4": "Smetti di guadagnare il prezzo del grilletto", + "i5": "Prezzo di mercato a", + "i6": "Quando l'operazione è completata, il profitto e la perdita saranno stimati", + "i7": "Prezzo del grilletto", + "i8": "Stop loss Commission sarà attivato quando l'operazione è completata, e ci si aspetta profitti e perdite dopo l'operazione", + "i9": "determinare", + "j0": "Chiusura riuscita", + "j1": "Il prezzo di mercato è piatto", + "j2": "Tutto piatto", + "j3": "successo", + "j4": "Imposta con successo", + "j5": "Non c'e'nessuna corrispondenza per un calcolo intelligente.", + "j6": "do", + "j7": "tasso di chiusura", + "j8": "Digital asset trading platform", + "j9": "Quando {name1} incontra {Name2} {name3} sulla strada dell'ascensione ardente", + "k0": "Prezzo di apertura", + "k1": "Prezzo ultimo", + "k2": "Scansion codice per saperne di più", + "k3": "Regolamento del risultato economico", + "k4": "Lo screenshot è stato salvato localmente", + "k5": "Screenshot non riuscito", + "k6": "Schermo stampa lunga", + "k7": "Un clic piano", + "k8": "Un click indietro", + "k9": "E'tutto piatto?", + "l0": "Tutti uguali, successo", + "l1": "Una chiave inversa", + "l2": "Successo inverso", + "l3": "Pingkong", + "l4": "Pinto" + }, + "otc": { + "a0": "Pubblicità", + "a1": "ordine", + "a2": "Moneta di transazione", + "a3": "Il mio ordine", + "a4": "La mia pubblicità", + "a5": "acquisto", + "a6": "vendere", + "a7": "totale", + "a8": "eccedenza", + "a9": "Limiti", + "b0": "Prezzo unitario", + "b1": "Modalità di pagamento", + "b2": "operazione", + "b3": "totale", + "b4": "Si prega di scegliere il metodo di pagamento", + "b5": "Quantità di input", + "b6": "Effettuare un ordine", + "b7": "Alipay", + "b8": "Chat", + "b9": "carta bancaria", + "c0": "verificare il successo", + "c1": "Stato", + "c2": "Numero di pubblicità", + "c3": "Prezzo totale", + "c4": "numero", + "c5": "Tempo di rilascio", + "c6": "Sulla mensola", + "c7": "revocato", + "c8": "In commercio", + "c9": "Completato", + "d0": "promemoria", + "d1": "È rimosso l'annuncio corrente", + "d2": "determinare", + "d3": "annulla", + "d4": "Cancellato con successo", + "d5": "Conto di valuta legale", + "d6": "congelati", + "d7": "Numero del conto corrente", + "d8": "Inserisci il numero di conto", + "d9": "nome completo", + "e0": "Inserisci il tuo nome", + "e1": "Codice di pagamento", + "e2": "vincolante", + "e3": "Conto di Webchat", + "e4": "Nome della banca", + "e5": "Inserisci il nome della banca", + "e6": "Apertura del conto", + "e7": "Inserire la sezione di apertura del conto", + "e8": "Numero della carta bancaria", + "e9": "Inserisci il numero della carta bancaria", + "f0": "Modificato con successo", + "f1": "Aggiunto con successo", + "f2": "vendere fuori", + "f3": "acquisto", + "f4": "Dettagli dell'ordine", + "f5": "Numero d'ordine", + "f6": "numero di conto", + "f7": "Banca di deposito", + "f8": "Tempo rimanente", + "f9": "ramo", + "g0": "secondo", + "g1": "Biglietto di pagamento", + "g2": "confermare il pagamento", + "g3": "annullamento dell'ordine", + "g4": "Conferma ricevuta", + "g5": "Non ricevuto", + "g6": "Annulla l'ordine corrente", + "g7": "Ordine annullato", + "g8": "Conferma il pagamento corrente", + "g9": "Funzionamento riuscito", + "h0": "Dopo la conferma della raccolta, le attività saranno vendute e trasferite automaticamente", + "h1": "Dopo aver confermato che il pagamento non è stato ricevuto, l'ordine entrerà automaticamente nella modalità di ricorso", + "h2": "Ordine di vendita", + "h3": "Ordine di acquisto", + "h4": "Ordine di acquisto pubblicitario", + "h5": "Ordine di vendita pubblicitario", + "h6": "tempo", + "h7": "dettagli", + "h8": "intero", + "h9": "Chiuso", + "i0": "Da pagare", + "i1": "Da confermare", + "i2": "Sotto denuncia", + "i3": "Tipi di pubblicità", + "i4": "Seleziona il tipo di transazione", + "i5": "Seleziona la valuta di transazione", + "i6": "Prezzo", + "i7": "Inserisci il prezzo", + "i8": "prezzo minimo", + "i9": "Inserisci il prezzo più basso", + "j0": "Prezzo più alto", + "j1": "Inserisci il prezzo più alto", + "j2": "osservazioni", + "j3": "Per favore inserisci i tuoi commenti", + "j4": "rilascio", + "j5": "Pubblicato con successo", + "j6": "metodo di pagamento", + "j7": "Quantità minima", + "j8": "Quantità massima", + "j9": "Inserisci il volume minimo di transazione", + "k0": "Inserisci il volume massimo di trading" + }, + "first": { + "a0": "Vai al vero nome", + "a1": "Su di noi", + "a2": "Benvenuti!", + "a3": "Ferma l'impostazione del profitto e della perdita di arresto", + "a4": "Commercio all'ultimo prezzo attuale", + "a5": "Mantenere la posizione", + "a6": "Gestione degli ordini", + "a7": "Tutti gli incarichi", + "a8": "Archivi storici", + "a9": "multiplo", + "b0": "Sei sicuro di voler uscire di casa?", + "b1": "Firma o registro", + "b2": "Ciao, benvenuto a CATYcoin", + "b3": "importo", + "b4": "indice dei punti", + "b5": "Indice dei contratti", + "b6": "Supporta metodi di acquisto multipli", + "b7": "Acquisto di denaro veloce", + "b8": "sostenibile", + "b9": "L'area corrente non è ancora aperta", + "c0": "acquisto", + "c1": "vendere fuori", + "c2": "tempo", + "c3": "Prezzo totale", + "c4": "numero", + "c5": "Prezzo del marchio", + "c6": "Atti classificati", + "c7": "volume" + }, + "recharge": { + "a0": "Cambia valuta", + "a1": "*Cambio di indirizzo può ricevere solo", + "a2": "Se ricaricate i vostri beni in altre valute, non sarete in grado di recuperarli!", + "a3": "Erc20 è consigliato per la raccolta", + "a4": "Copia indirizzo", + "a5": "*Assicuratevi che l'indirizzo e le informazioni siano corretti prima del trasferimento!Una volta trasferito, è irrevocabile!", + "a6": "Si prega di rigenerare" + }, + "currency": { + "a0": "Operazioni in valuta legale", + "a1": "Mi piacerebbe comprarlo io.", + "a2": "Io voglio vendere", + "a3": "Acquisto di una moneta", + "a4": "Vendita di una moneta", + "a5": "Acquisto per quantità", + "a6": "Acquisto per importo", + "a55": "vendere per quantità", + "a66": "vendere per importo", + "a7": "Inserisci la quantità di acquisto", + "a8": "Inserisci l'importo dell'acquisto", + "a9": "Inserire il quantitativo in vendita", + "b0": "Inserire l'importo della vendita", + "b1": "Prezzo unitario", + "b2": "0 acquisto di spese di movimentazione", + "b3": "0 Vendita di commissione", + "b4": "Insufficiente saldo disponibile", + "b5": "Per favore completare la certificazione avanzata prima", + "b6": "De autenticazione", + "b7": "Conferma acquisto", + "b8": "Conferma vendita" + }, + "cxiNewText": { + "a0": "Primi 10", + "a1": "5 milioni +", + "a2": "< 0.10%", + "a3": "200+", + "a4": "Classifica globale", + "a5": "Gli utenti si fidano di noi", + "a6": "Commissioni ultra basse", + "a7": "Paesi", + "a21": "Guadagna reddito immediatamente", + "a22": "Crea un portafoglio personale di criptovalute", + "a23": "Compra, scambia e detieni oltre 100 criptovalute", + "a24": "Ricarica il conto", + "a25": "Iscriviti tramite e-mail", + "a38": "Apri transazioni sempre e ovunque.", + "a39": "Inizia a fare trading in modo sicuro e conveniente in qualsiasi momento tramite la nostra APP e la nostra pagina web", + "a41": "Una piattaforma affidabile per il trading di criptovalute", + "a42": "Ci impegniamo a garantire la sicurezza degli utenti con protocolli rigorosi e misure tecniche leader del settore.", + "a43": "Fondi di sicurezza dell'utente", + "a44": "Conserviamo il 10% di tutte le commissioni di transazione in fondi di asset sicuri per fornire una protezione parziale ai fondi degli utenti", + "a45": "Controllo accessi personalizzato", + "a46": "Il controllo degli accessi personalizzato limita l'accesso ai dispositivi e agli indirizzi degli account personali, in modo che gli utenti non abbiano preoccupazioni.", + "a47": "Crittografia dati avanzata", + "a48": "I dati delle transazioni personali sono protetti dalla crittografia end-to-end e solo la persona può accedere alle informazioni personali.", + "a57": "Clicca per andare", + "a71": "Guida per principianti ", + "a72": "Inizia immediatamente l'apprendimento del trading di valuta digitale ", + "a77": "Come acquistare valuta digitale ", + "a78": "Come vendere valuta digitale ", + "a79": "Come scambiare valute digitali", + "a80": "Piazza del mercato", + "a81": "Andamento del mercato 24 ore", + "a82": "Aggiungi fondi di criptovaluta al tuo portafoglio e inizia a fare trading all'istante" + }, + "homeNewText": { + "aa1": "Porta della criptovaluta", + "aa2": "Fai trading sicuro, veloce e facile su oltre 100 criptovalute", + "aa3": "Registrati tramite e-mail", + "aa4": "Inizia a fare trading adesso", + "aa5": "tendenza di mercato", + "aa6": "Preventivo rapido di risorse digitali", + "aa7": "Valuta", + "bb1": "Ultimo prezzo (USD)", + "bb2": "Incremento 24h", + "bb3": "Volume degli scambi nelle 24 ore", + "bb4": "Scambio di criptovaluta per tutti", + "bb5": "Inizia a fare trading qui e sperimenta un viaggio migliore nella criptovaluta", + "bb6": "personale", + "bb7": "Uno scambio di criptovaluta per tutti. La piattaforma di trading leader più affidabile con una vasta gamma di valute", + "cc1": "Attività commerciale", + "cc2": "Pensato per aziende e istituzioni. Fornire soluzioni crittografiche a investitori istituzionali e imprese", + "cc3": "Sviluppatore", + "cc4": "Costruito per gli sviluppatori, affinché gli sviluppatori possano creare gli strumenti e le API del futuro del web3", + "cc6": "Scansiona il codice QR", + "cc7": "Scarica l'applicazione Android/IOS", + "dd1": "Sicuro e stabile con zero incidenti", + "dd2": "Molteplici strategie di sicurezza e una garanzia di riserva del 100% assicurano che non si sia verificato alcun incidente di sicurezza dalla sua istituzione.", + "dd3": "Scambia risorse crittografiche in modo semplice e conveniente", + "dd4": "In CATYcoin, i prodotti sono facili da comprendere, il processo di transazione è conveniente e la piattaforma di servizi asset blockchain unica", + "dd5": "Derivati", + "dd6": "Puoi scambiare contratti su oltre 100 criptovalute con una leva fino a 150x e ottenere profitti elevati", + "ee1": "Supporto di terminali multipli", + "ee2": "Scambia risorse digitali sempre e ovunque", + "ee3": "Supporta un'ampia gamma di tipi di asset, con tutte le informazioni sulla valuta disponibili", + "ee4": "Comprendi rapidamente il processo di trading delle risorse digitali", + "ee5": "Inizia il tuo viaggio nella crittografia", + "ee6": "Verifica grafica", + "ee7": "Verifica grafica", + "dd1": "Verifica riuscita", + "dd2": "verifica fallita", + "dd3": "Completa la verifica di sicurezza", + "dd4": "Fai scorrere il cursore per completare il puzzle", + + "hh0": "Il futuro del denaro è qui", + "hh1": "Cerco buone opportunità di trading", + "hh2": "Scambiare oltre 100 criptovalute in modo sicuro, veloce e facile", + "hh3": "Prova adesso il nostro scambio di criptovaluta", + "hh4": "Inizia rapidamente il tuo viaggio nel trading", + "hh5": "Registra l'account {nome}", + "hh6": "Registrati", + "hh7": "Esplora i nostri prodotti e servizi qui", + "hh8": "La sicurezza non è una cosa da poco. Per proteggere la sicurezza dei tuoi beni e delle tue informazioni, faremo sforzi infiniti", + "hh9": "Disponibile", + "hh10": "Scambia criptovalute con strumenti completi.", + "hh11": "Derivati", + "hh12": "Contratti commerciali con il miglior scambio di criptovalute al mondo.", + "hh13": "Robot commerciale", + "hh14": "Guadagna profitti passivi senza monitorare il mercato.", + "hh15": "Acquista monete", + "hh16": "Acquista criptovalute con un clic.", + "hh17": "{nem} guadagna monete", + "hh18": "Guadagna un reddito stabile attraverso investimenti con gestori patrimoniali professionisti.", + "hh19": "Trading con leva finanziaria", + "hh20": "Prendi in prestito, scambia e rimborsa, sfrutta i tuoi asset con il trading a margine.", + "hh21": "Il tuo scambio di criptovaluta affidabile e sicuro", + "hh22": "Archiviazione sicura delle risorse", + "hh23": "I nostri sistemi leader di crittografia e archiviazione garantiscono che le tue risorse siano sempre sicure e riservate.", + "hh24": "Forte sicurezza dell'account", + "hh25": "Rispettiamo i più alti standard di sicurezza e implementiamo le misure di sicurezza più rigorose per garantire la sicurezza del tuo account.", + "hh26": "Piattaforma attendibile", + "hh27": "Abbiamo una base di progettazione sicura per garantire un rilevamento e una risposta rapidi a qualsiasi attacco informatico.", + "hh28": "Prova della riserva patrimoniale: trasparenza delle risorse", + "hh29": "La Proof of Reserve (PoR) è un metodo ampiamente utilizzato per dimostrare la custodia delle risorse blockchain. Ciò significa che {name} dispone di fondi che coprono tutte le risorse degli utenti sui nostri libri.", + "hh30": "Il trading può essere effettuato sempre e ovunque", + "hh31": "Che sia APP o WEB, puoi avviare rapidamente la transazione", + "hh32": "Inizia adesso il tuo viaggio nella valuta digitale", + "hh33": "Registrati ora", + "hh34": "Siamo il luogo più affidabile in cui gli investitori possono acquistare, vendere e gestire criptovalute", + "hh35": "Registrati via e-mail", + "hh36": "Domande frequenti", + "hh41": "CATYcoin, fai trading sempre e ovunque", + "hh42": "Fai trading ora", + "hh43": "Scansiona il codice QR per scaricare CATYcoin APP", + "hh37": "Classifica globale", + "hh38": "gli utenti si fidano di noi", + "hh39": "Commissioni ultra-basse", + "hh40": "Paesi" + } +} \ No newline at end of file diff --git a/i18n/lang/jp.json b/i18n/lang/jp.json new file mode 100644 index 0000000..1d48e87 --- /dev/null +++ b/i18n/lang/jp.json @@ -0,0 +1,931 @@ +{ + "common": { + "D": "日", + "M": "月", + "Y": "年", + "add": "追加", + "address": "住所", + "all": "すべて", + "amout": "数", + "cancel": "キャンセル", + "check": "審査する", + "code": "認証コード", + "confirm": "を選択します", + "date": "日付", + "detail": "詳細", + "email": "メールボックス", + "enter": "入力してください", + "error": "失敗", + "getCode": "認証コードを取得", + "h": "時刻", + "loadMore": "もっとロード", + "m": "ポイント", + "money": "金額", + "more": "詳細", + "notData": "データがありません", + "notMore": "これ以上ないです", + "phone": "携帯電話", + "requestError": "インターネットが忙しいので、後で試してみてください。", + "s": "秒", + "save": "保存", + "select": "選択してください", + "sendSuccess": "送信成功", + "sms": "メッセージ", + "submit": "送信", + "success": "成功", + "tips": "暖かいヒント", + "total": "総額", + "type": "タイプ", + "copy": "コピー", + "light": "白", + "dark": "黒い", + "service": "顧客サービス", + "toDwon": "ダウンロードページに行くかどうか", + "a0": "申し込みコードを入力してください", + "a1": "コピー成功", + "a2": "コピーに失敗しました", + "a3": "購入申請記録", + "a4": "支払い金額", + "a5": "入金数量", + "a6": "アカウント", + "a7": "チャージ数量", + "a8": "支払証明書", + "a9": "チャージ数量を入力してください", + "b0": "支払証明書をアップロードしてください", + "b1": "買います{amount}枚{name}トークンがもらえます{rate}%奨励", + "b2": "申し込み活動", + "b3": "保存に成功しました", + "b4": "保存に失敗しました", + "b5": "招待ポスターを生成", + "b6": "ポスターを選択", + "b8": "寄り付き時間", + "b9": "終値時間", + "c0": "最小チャージ金額:{num}では、最小金額以下のチャージは入金されず、かつ返却できません.", + "c1": "最小貨幣高", + "c2": "バージョン番号", + "c3": "開けてもいいです", + "c4": "仮勘定保証金", + "c5": "あなたの振替注文書はすでに提出されました。待ってください。振り替え結果はメールやメールで通知されます。ご確認ください。問題があれば、すぐにカスタマーサービスに連絡してください。" + }, + "base": { + "a0": "タイトル", + "a1": "戻る", + "a2": "詳細", + "a3": "相場", + "a4": "約束権", + "a5": "新コーナーを開く", + "a6": "会員", + "a7": "学院", + "a8": "取引ペア", + "a9": "最新の価格", + "b0": "上昇幅", + "b1": "ログインをクリックします", + "b2": "いらっしゃいませ", + "b3": "ログインしてください", + "b4": "級が上がる", + "b5": "貨幣をチャージする", + "b6": "貨幣を受け取る", + "b7": "押し広める", + "b8": "手数料を差し引く", + "b9": "利用可能", + "c0": "買います", + "c1": "私の依頼", + "c2": "認証", + "c3": "安全センター", + "c4": "メッセージ", + "c5": "お札の住所", + "c6": "設定", + "c7": "自選する", + "c8": "追加成功", + "c9": "キャンセル成功", + "d0": "最初のページ", + "d1": "取引", + "d2": "資産", + "d3": "検索キーワードを入力してください。", + "d4": "全部", + "d5": "マザーボード", + "d6": "総資産換算", + "d7": "資金勘定", + "d8": "振り回す", + "d9": "通貨を検索する", + "e0": "非表示", + "e1": "残余資産", + "e2": "凍結する", + "e3": "換算する", + "e4": "契約口座", + "e5": "契約が折衷する", + "e6": "鉱夫階級", + "e7": "鉱夫", + "h1": "帳簿", + "h2": "名前" + }, + "accountSettings": { + "a0": "アカウントの設定", + "a1": "顔写真", + "a2": "ニックネーム", + "a3": "メインアカウント", + "a4": "携帯の番号", + "a5": "縛りを解く", + "a6": "結合", + "a7": "メールボックスバインド", + "a8": "アカウントを切り替え", + "a9": "ログアウト", + "b0": "ニックネームを変更", + "b1": "ニックネームを入力してください", + "b2": "言語", + "b3": "連絡情報", + "b4": "一般的なコンサルティング", + "b5": "顧客サービス", + "b6": "メディア連携", + "b7": "どんな助けが必要ですか?連絡してください。" + }, + "assets": { + "a0": "お札の住所管理", + "a1": "アドレス帳はよく使う住所を管理してもいいです。アドレス帳にある住所にお金を引き出してもいいです。多重検査は必要ありません。", + "a2": "自動貨幣の引き出しがサポートされています。「name」を使ってお金を引き出す場合、ネットアドレス帳に存在する住所だけでお金を引き出します。", + "a3": "アドレスを削除", + "a4": "アドレスを追加", + "a5": "削除する住所を選択してください。", + "a6": "現在選択されているアドレスを削除しますか?", + "a7": "水のながれ", + "a8": "総額", + "a9": "利用可能", + "b0": "凍結する", + "b1": "資金勘定", + "b2": "契約口座", + "b3": "てこの口座", + "b4": "投資信託口座", + "b5": "検索キーワードを入力してください。", + "b6": "貨幣を受け取る", + "b7": "チェーンの種類を選択してください", + "b8": "お札の住所", + "b9": "住所を入力してください", + "c0": "数", + "c1": "残額", + "c2": "数量を入力してください", + "c3": "全部", + "c4": "手数料", + "c5": "財布の住所をよく確認して入力してください.", + "c6": "対応していないデジタル通貨をウォレットアドレスに送ると永久的な損失が発生します.", + "c7": "お引き出し手数料は引き出しの数から差し引きます.", + "c8": "貨幣の引き出し記録", + "c9": "時間", + "d0": "状態", + "d1": "審査中", + "d2": "成功", + "d3": "失敗", + "d4": "もっと見る", + "d5": "提出に成功しました。審査中です。", + "d6": "編集", + "d7": "追加", + "d8": "住所", + "d9": "住所を入力または貼り付けてください。", + "e0": "コメント", + "e1": "コメントを入力してください", + "e2": "住所を記入してください", + "e3": "備考を記入してください", + "e4": "操作が成功しました", + "e5": "貨幣をチャージする", + "e6": "上の二次元コードをスキャンしてチャージアドレスを取得します。", + "e7": "チャージアドレス", + "e8": "チャージの数", + "e9": "チャージの数を入力してください。", + "f0": "この住所は最新のチャージ住所です。システムがチャージを受けると、自動的に入金されます.", + "f1": "振替はブロックチェーンネットワーク全体で確認する必要があります.num個のネットワークに確認したら、自動的に口座に振り込みます.", + "f2": "このネットワークを確認する時、あなたの", + "f3": "この住所だけを送ってください。他のデジタル通貨をこの住所に送ります.永久的な損失をもたらします.", + "f4": "チャージ記録", + "f5": "送信には{name}のネットワークをご利用ください。" + }, + "auth": { + "a0": "認証", + "a1": "実名認証", + "a2": "認証なし", + "a3": "認証済み", + "a4": "認証", + "a5": "審査中", + "a6": "認証に失敗しました", + "a7": "国籍", + "a8": "国籍を選んでください", + "a9": "実名", + "b0": "実名を入力してください。", + "b1": "証明書番号", + "b2": "証明書の番号を入力してください。", + "b3": "確認", + "b4": "認証に成功しました", + "b5": "証明書の正面の写真をアップロードしてください。", + "b6": "証明書の裏に載せてください。", + "b7": "手に持っている証明書の写真をアップロードしてください。", + "b8": "写真のクリアな透かしなし、上半身の完全性を確保する。", + "b9": "ファイルサイズが大きすぎて、超えてはいけません。", + "c0": "ファイルタイプエラー", + "c1": "アップロード成功", + "c2": "証明書の裏写真をアップロードしてください。", + "c3": "証明書の正面写真をアップロードしてください。", + "c4": "アップロードが成功しました。審査を待ってください。", + "d0": "生年月日", + "d1": "証明書の種類", + "d2": "身分証", + "d3": "運転免許証", + "d4": "パスポート", + "d5": "住所", + "d6": "住所を入力してください。", + "d7": "都市", + "d8": "場所都市を入力してください。", + "d9": "郵便番号", + "d10": "郵便番号を入力してください。", + "d11": "電話番号", + "d12": "携帯の番号を入力してください", + "d13": "選択してください", + "SelectAreaCode": "市外局番を選択してください" + }, + "exchange": { + "a0": "貨幣", + "a1": "購入を申請する", + "a2": "契約書", + "a3": "取引", + "a4": "現在の依頼", + "a5": "履歴依頼", + "a6": "追加成功", + "a7": "キャンセル成功", + "a8": "発行総量", + "a9": "流通総量", + "b0": "発行価格", + "b1": "リリース時間", + "b2": "白書の住所", + "b3": "公式サイトのアドレス", + "b4": "概要", + "b5": "買う", + "b6": "売ります", + "b7": "委託価格", + "b8": "タイプ", + "b9": "指し値取引", + "c0": "市価取引", + "c1": "取引済み", + "c2": "合計", + "c3": "買い入れる", + "c4": "売りに出る", + "c5": "数", + "c6": "ベスト市場で取引が成立する", + "c7": "総価格", + "c8": "利用可能な数", + "c9": "総価値", + "d0": "ログイン", + "d1": "タイムチャート", + "d2": "価格", + "d3": "最新の取引", + "d4": "時間", + "d5": "方向", + "d6": "価格を限る", + "d7": "市価", + "d8": "価格を入力してください", + "d9": "数量を入力してください", + "e0": "総価格を入力してください", + "e1": "注文しました", + "e2": "平均価格", + "e3": "最高", + "e4": "最低", + "e5": "量を測る", + "e6": "商売相場", + "e7": "通貨情報", + "e8": "分", + "e9": "時間", + "f0": "空", + "f1": "週間", + "f2": "月", + "f3": "買い取り価格", + "f4": "売り相場", + "f5": "貨幣取引", + "f6": "検索キーワードを入力してください。", + "f7": "取引ペア", + "f8": "最新の価格", + "f9": "上昇幅", + "g0": "自選する", + "g1": "私の依頼", + "g2": "依頼を取り消す", + "g3": "操作", + "g4": "取り消す", + "g5": "現在の依頼を取り消すかどうか", + "g6": "キャンセル成功" + }, + "option": { + "a0": "約束権", + "a1": "距離受け渡し", + "a2": "多目に見る", + "a3": "暇を見る", + "a4": "収益率", + "a5": "買います", + "a6": "複数", + "a7": "空", + "a8": "現在", + "a9": "次の号", + "b0": "平を読む", + "b1": "上げ幅の選択", + "b2": "収益率", + "b3": "購入数量", + "b4": "数量を入力してください", + "b5": "残額", + "b6": "予想収益", + "b7": "即座に買う", + "b8": "上がる", + "b9": "フラット", + "c0": "転ぶ", + "c1": "購入成功", + "c2": "詳細", + "c3": "注文番号", + "c4": "寄り付き相場", + "c5": "終値", + "c6": "買い入れ時間", + "c7": "購入数量", + "c8": "購入タイプ", + "c9": "状態", + "d0": "受け渡しの結果", + "d1": "決済数量", + "d2": "受け渡し時間", + "d3": "もっと見る", + "d4": "購入オプション", + "d5": "受け渡しを待つ", + "d6": "私の受け渡し", + "d7": "受け渡し記録", + "d8": "分", + "d9": "時間", + "e0": "空", + "e1": "週間", + "e2": "月", + "e3": "方向", + "e4": "上昇幅" + }, + "purchase": { + "a0": "発行価格", + "a1": "通貨を申請購入する", + "a2": "予定ライン時間", + "a3": "申し込み開始時間", + "a4": "申請終了時間", + "a5": "購入を申請する", + "a6": "通貨の申請を選んでください。", + "a7": "購入数量", + "a8": "申し込み数量を入力してください。", + "a9": "全部", + "b0": "即座に申し込みます", + "b1": "申請期間", + "b2": "プロジェクト予熱", + "b3": "申し込みを開始する", + "b4": "申し込みを終了する", + "b5": "結果を公表する", + "b6": "プロジェクトの詳細", + "b7": "使用するかどうか", + "b8": "買います", + "b9": "申し込み成功" + }, + "reg": { + "a0": "携帯電話の登録", + "a1": "メールアドレス登録", + "a2": "携帯電話", + "a3": "携帯の番号を入力してください", + "a4": "メールボックス", + "a5": "メールアドレスを入力してください", + "a6": "認証コード", + "a7": "認証コードを入力してください", + "a8": "パスワード", + "a9": "パスワードを入力してください", + "b0": "パスワードを確認する", + "b1": "パスワードを確認してください", + "b2": "推薦人", + "b3": "推薦者を入力してください", + "b4": "記入する", + "b5": "同意しました", + "b6": "ユーザプロトコル", + "b7": "私たちのことを知っています", + "b8": "プライバシープロトコル", + "b9": "登録する", + "c0": "アカウントがあります", + "c1": "すぐに登録します", + "c2": "合意を読んでください。", + "c3": "携帯番号を記入してください", + "c4": "メールアドレスを記入してください", + "c5": "登録成功", + "c6": "招待コード(必須)", + "c7": "招待コードを入力してください" + }, + "safe": { + "a0": "縛りを解く", + "a1": "結合", + "a2": "メールボックス", + "a3": "メールアドレス", + "a4": "メールアドレスを入力してください", + "a5": "メールアドレス", + "a6": "認証コードを入力してください", + "a7": "認証コード", + "a8": "縛りを解くことに成功した", + "a9": "バインディング成功", + "b0": "パスワードを忘れます", + "b1": "アカウント", + "b2": "メールアドレスを入力してください", + "b3": "新しいパスワード", + "b4": "新しいパスワードを入力してください", + "b5": "パスワードを確認する", + "b6": "パスワードを確認してください", + "b7": "変更の確認", + "b8": "正しい携帯電話またはメール番号を入力してください。", + "b9": "Google", + "c0": "操作方法:Googleの検証器をダウンロードして開き、下の二次元コードをスキャンしたり、秘密鍵を手動で入力して検証トークンを追加する。", + "c1": "鍵をコピー", + "c2": "鍵はちゃんと保存しましたので、なくしたら取り戻せません。", + "c3": "次のステップ", + "c4": "ショートメッセージの検証コード", + "c5": "Googleの認証コード", + "c6": "バインディングの確認", + "c7": "安全センター", + "c8": "ログインパスワード", + "c9": "変更", + "d0": "設定", + "d1": "取引パスワード", + "d2": "携帯電話", + "d3": "修正成功", + "d4": "携帯の番号", + "d5": "携帯の番号を入力してください", + "d6": "メールの検証コードを入力してください。", + "d7": "閉じる", + "d8": "開く", + "d9": "検証", + "e0": "メッセージ", + "e1": "クローズ成功", + "e2": "オープン成功", + "e3": "確認", + "e4": "設定成功" + }, + "transfer": { + "a0": "記録を振り替える", + "a1": "成功", + "a2": "数", + "a3": "方向", + "a4": "口座資産", + "a5": "契約口座", + "a6": "てこの口座", + "a7": "投資信託口座", + "a8": "振り回す", + "a9": "から", + "b0": "を選択します", + "b1": "通貨を切り換える", + "b2": "残額", + "b3": "全部", + "b4": "振り替え済み" + }, + "notice": { + "a0": "詳細", + "a1": "メッセージ", + "a2": "公告する", + "a3": "メッセージ" + }, + "invite": { + "a0": "取引を尊んで帰用して友人を招く", + "a1": "パートナー", + "a2": "取引を尊び奉公する", + "a3": "一般ユーザー", + "a4": "私の身分", + "a5": "身分を尊ぶ", + "a6": "私の招待番号", + "a7": "招待された二次元コードをコピー", + "a8": "招待リンクをコピー", + "a9": "私のプロモーション", + "b0": "総人数を押し広める", + "b1": "人", + "b2": "総収益の折衷", + "b3": "普及記録", + "b4": "直接招待", + "b5": "返上記録", + "b6": "レベル", + "b7": "レベル設定", + "b8": "昇進条件", + "b9": "利益を分配する", + "c0": "ニックネーム", + "c1": "人数を押し広める", + "c2": "収益折衷", + "c3": "招待レコード", + "c4": "返上記録", + "c5": "等級権益説明", + "c6": "レベル", + "c7": "権益", + "c8": "説明", + "c9": "私の権益" + }, + "help": { + "a0": "詳細", + "a1": "学院", + "a2": "カテゴリ", + "a3": "" + }, + "login": { + "a0": "携帯やメールアドレス", + "a1": "携帯やメールアドレスを入力してください。", + "a2": "パスワード", + "a3": "パスワードを入力してください", + "a4": "ログイン", + "a5": "パスワードを忘れます", + "a6": "アカウントがありません", + "a7": "即時登録", + "a8": "携帯電話", + "a9": "メールボックス", + "b0": "完了" + }, + "contract": { + "a0": "倉をあける", + "a1": "倉持", + "a2": "委託する", + "a3": "歴史", + "a4": "契約取引", + "a5": "オープン成功", + "a6": "取引の種類", + "a7": "取引済み", + "a8": "委託総量", + "a9": "成約価格", + "b0": "委託価格", + "b1": "保証金", + "b2": "手数料", + "b3": "状態", + "b4": "操作", + "b5": "帳消しにする", + "b6": "キャンセルしました", + "b7": "取引が成立していない", + "b8": "部分的な取引", + "b9": "全部成約する", + "c0": "運転が多い", + "c1": "平たい空", + "c2": "暇をあける", + "c3": "平たい", + "c4": "暖かいヒント", + "c5": "現在の注文をキャンセルしますか?", + "c6": "キャンセル成功", + "c7": "利益と損失", + "c8": "分かち合う", + "c9": "委託の詳細", + "d0": "データがありません", + "d1": "価格", + "d2": "数", + "d3": "取引の時間", + "d4": "ユーザー持分", + "d5": "損益が実現されていない", + "d6": "リスク率", + "d7": "市価", + "d8": "枚", + "d9": "占用保証金", + "e0": "上伸歩調だ", + "e1": "運転が多い", + "e2": "弱気になる", + "e3": "空きがある", + "e4": "利用可能", + "e5": "振り回す", + "e6": "資金費率", + "e7": "距離決済", + "e8": "複数", + "e9": "空", + "f0": "資金の振り替え", + "f1": "計算機", + "f2": "", + "f3": "リスク保障基金", + "f4": "資金費の歴史", + "f5": "一般依頼", + "f6": "相場の委託", + "f7": "を選択します", + "f8": "の価格", + "f9": "倍レバー", + "g0": "運転が多い", + "g1": "暇をあける", + "g2": "依頼成功", + "g3": "現在の契約のみを表示します。", + "g4": "フラット", + "g5": "委託する", + "g6": "出庫平均価格", + "g7": "決済基準価格", + "g8": "過当評価", + "g9": "決済済み収益", + "h0": "収益率", + "h1": "満ちが止まる", + "h2": "ストップロス", + "h3": "平倉", + "h4": "市価が全平均している", + "h5": "ストップロス", + "h6": "フラット", + "h7": "平倉価格を入力してください。", + "h8": "価格を限る", + "h9": "平倉の数量を入力してください。", + "i0": "フラット", + "i1": "寄り付き相場", + "i2": "最新の取引価格", + "i3": "価格を入力してください", + "i4": "ストップトリガ価格", + "i5": "市場価格が", + "i6": "取引が成立した後、損益が予想されます。", + "i7": "ストップロストリガ価格", + "i8": "時に損失停止の委託をトリガします。取引後に損益が予想されます。", + "i9": "を選択します", + "j0": "平倉成功", + "j1": "市価は全平均ですか", + "j2": "全平均", + "j3": "成功", + "j4": "設定成功", + "j5": "神算鬼謀に匹敵するものはない", + "j6": "します", + "j7": "平倉価格", + "j8": "デジタル資産取引プラットフォーム", + "j9": "name 1が{name 2}{name 3}の熱い上昇の道に出会うと", + "k0": "寄り付き相場", + "k1": "最新の価格", + "k2": "スキャンコードをもっと知りたいです", + "k3": "損益を決算する", + "k4": "スクリーンショットが成功しました。ローカルに保存されました。", + "k5": "スクリーンショット失敗", + "k6": "", + "k7": "ワンボタン", + "k8": "ワンボタンの逆方向", + "k9": "ワンタッチで全フラットにしますか", + "l0": "完全に成功する", + "l1": "キーが逆になるかどうか", + "l2": "逆効果成功", + "l3": "平たい空", + "l4": "平たい" + }, + "otc": { + "a0": "広告を出す", + "a1": "注文書", + "a2": "貨幣を取引する", + "a3": "私の注文", + "a4": "私の広告", + "a5": "買います", + "a6": "売りに出す", + "a7": "合計", + "a8": "残り", + "a9": "数量を限定する", + "b0": "単価", + "b1": "支払い方法", + "b2": "操作", + "b3": "総量", + "b4": "お支払い方法を選択してください。", + "b5": "数量を入力してください", + "b6": "注文する", + "b7": "アリペイを支払う", + "b8": "WeChat", + "b9": "銀行カード", + "c0": "注文しました", + "c1": "状態", + "c2": "広告番号", + "c3": "総価格", + "c4": "数", + "c5": "リリース時間", + "c6": "棚をおりる", + "c7": "キャンセルしました", + "c8": "取引中", + "c9": "完了しました", + "d0": "暖かいヒント", + "d1": "現在の広告を降りますか?", + "d2": "を選択します", + "d3": "キャンセル", + "d4": "キャンセル成功", + "d5": "仏貨の口座", + "d6": "凍結する", + "d7": "アリペイアカウントを支払う", + "d8": "アカウントを入力してください", + "d9": "名前", + "e0": "名前を入力してください", + "e1": "支払いコード", + "e2": "結合", + "e3": "WeChatアカウント", + "e4": "銀行の名前", + "e5": "銀行名を入力してください。", + "e6": "銀行を開設する", + "e7": "口座開設支店を入力してください。", + "e8": "銀行カード番号", + "e9": "銀行カード番号を入力してください。", + "f0": "編集に成功しました", + "f1": "追加成功", + "f2": "売りに出る", + "f3": "買い入れる", + "f4": "注文の詳細", + "f5": "注文番号", + "f6": "アカウント", + "f7": "銀行を開く", + "f8": "残り時間", + "f9": "ポイント", + "g0": "秒", + "g1": "支払証明書をアップロードする", + "g2": "支払いの確認", + "g3": "注文をキャンセルする", + "g4": "入金確認", + "g5": "未着勘定", + "g6": "現在の注文をキャンセルしますか?", + "g7": "注文はキャンセルされました", + "g8": "現在の支払い確認", + "g9": "操作が成功しました", + "h0": "入金確認後、販売資産は自動的に振り替えられます。", + "h1": "お金を受け取っていないことを確認したら、この注文は自動的に申告に入ります。", + "h2": "注文を売る", + "h3": "注文書を買う", + "h4": "広告購入注文書", + "h5": "広告販売注文書", + "h6": "時間", + "h7": "詳細", + "h8": "全部", + "h9": "閉じられました", + "i0": "支払い待ち", + "i1": "確認します", + "i2": "訴えが当たる", + "i3": "広告の種類", + "i4": "取引の種類を選択してください。", + "i5": "通貨の取引を選択してください。", + "i6": "価格", + "i7": "価格を入力してください", + "i8": "最低価格", + "i9": "最低価格を入力してください", + "j0": "高値", + "j1": "最高価格を入力してください", + "j2": "コメント", + "j3": "コメントを入力してください", + "j4": "リリース", + "j5": "リリース成功", + "j6": "お支払い方法", + "j7": "最低量", + "j8": "最高量", + "j9": "最低取引量を入力してください。", + "k0": "最高取引量を入力してください。" + }, + "first": { + "a0": "実名をつける", + "a1": "私たちについて", + "a2": "いらっしゃいませ", + "a3": "ストップロス設定", + "a4": "現在の最新価格で取引する", + "a5": "倉位を持つ", + "a6": "オーダー管理", + "a7": "全部委託する", + "a8": "履歴", + "a9": "倍数", + "b0": "本当にログアウトしますか?", + "b1": "ログインまたは登録", + "b2": "Hi、CATYcoinをご利用ください。", + "b3": "量を測る", + "b4": "現物指数", + "b5": "契約指数", + "b6": "いろいろな方法で買うことができます。", + "b7": "速くお金を買います", + "b8": "永久に続く", + "b9": "現在の地区はまだ開放されていない。", + "c0": "買い入れる", + "c1": "売りに出る", + "c2": "時間", + "c3": "総価格", + "c4": "数", + "c5": "価格を表記する", + "c6": "担保資産", + "c7": "出来高" + }, + "recharge": { + "a0": "貨幣の種類を切り替える", + "a1": "*住所変更は受信のみ可能です。", + "a2": "資産を他の貨幣にチャージすれば、探し出せません。", + "a3": "ERC 20を使って入金することをおすすめします。", + "a4": "アドレスをコピー", + "a5": "*振込前に必ず住所と情報を確認してください。いったん転出したら、撤回してはいけません。", + "a6": "再生成してください" + }, + "currency": { + "a0": "仏貨取引", + "a1": "買いたいです", + "a2": "売りたいです", + "a3": "ワンタッチで貨幣を買う", + "a4": "一押しで貨幣を売る", + "a5": "数量別に買う", + "a6": "金額で買う", + "a55": "数量で売る", + "a66": "金額で売る", + "a7": "購入数量を入力してください。", + "a8": "購入金額を入力してください。", + "a9": "販売数量を入力してください。", + "b0": "販売金額を入力してください。", + "b1": "単価", + "b2": "0手数料で買う", + "b3": "0手数料販売", + "b4": "利用可能残高が足りません", + "b5": "先に高級認証を完成してください。", + "b6": "認証に行きます", + "b7": "購入確認", + "b8": "販売の確認" + }, + "cxiNewText": { + "a0": "トップ10", + "a1": "500万以上", + "a2": "< 0.10%", + "a3": "200+", + "a4": "世界ランキング", + "a5": "ユーザーは私たちを信頼しています", + "a6": "超低料金", + "a7": "国", + "a21": "すぐに収入を得る", + "a22": "個人の暗号通貨ポートフォリオを作成する", + "a23": "100 以上の暗号通貨を購入、取引、保持", + "a24": "アカウントにリチャージします", + "a25": "メールでサインアップする", + "a38": "いつでもどこでも取引を開始できます。", + "a39": "アプリとウェブページでいつでも安全かつ便利に取引を開始できます", + "a41": "信頼できる仮想通貨取引プラットフォーム", + "a42": "当社は、厳格なプロトコルと業界をリードする技術対策によりユーザーの安全を確保することに尽力しています。", + "a43": "ユーザーセキュリティ資産ファンド", + "a44": "ユーザー資金を部分的に保護するために、すべての取引手数料の 10% を安全資産基金に保管します。", + "a45": "個人的なアクセス制御", + "a46": "個人用アクセス制御により、個人アカウントのデバイスとアドレスへのアクセスが制限されるため、ユーザーは心配ありません。", + "a47": "高度なデータ暗号化", + "a48": "個人の取引データはエンドツーエンドの暗号化によって保護されており、本人のみが個人情報にアクセスできます。", + "a57": "クリックして移動", + "a71": "初心者ガイド", + "a72": "デジタル通貨取引の学習を今すぐ開始します", + "a77": "デジタル通貨の購入方法", + "a78": "デジタル通貨の販売方法", + "a79": "デジタル通貨の取引方法", + "a80": "取引市場", + "a81": "24時間市場動向", + "a82": "ウォレットに暗号通貨資金を追加して、すぐに取引を開始しましょう" + }, + "homeNewText": { + "aa1": "暗号通貨ゲート", + "aa2": "100 を超える仮想通貨の安全、迅速、簡単な取引", + "aa3": "メールで登録する", + "aa4": "今すぐ取引を始めましょう", + "aa5": "市場動向", + "aa6": "デジタル資産見積エクスプレス", + "aa7": "通貨", + "bb1": "最新価格(米ドル)", + "bb2": "24時間増加", + "bb3": "24時間の取引量", + "bb4": "誰もが利用できる仮想通貨交換所", + "bb5": "ここで取引を開始して、より良い仮想通貨の旅を体験してください", + "bb6": "個人的", + "bb7": "誰もが利用できる仮想通貨取引所。 幅広い通貨を扱う最も信頼できる大手取引プラットフォーム", + "cc1": "仕事", + "cc2": "企業や機関向けに構築されています。 機関投資家や企業への暗号ソリューションの提供", + "cc3": "開発者", + "cc4": "開発者向けに構築され、開発者が Web3 の将来のツールと API を構築できるようにする", + "cc6": "QRコードをスキャンします", + "cc7": "Android/iOSアプリをダウンロード", + "dd1": "事故ゼロで安全・安定", + "dd2": "複数のセキュリティ戦略と 100% の予備保証により、設立以来セキュリティ事故が発生していないことを保証します。", + "dd3": "暗号資産を簡単かつ便利に取引", + "dd4": "CATYcoin では、製品が理解しやすく、取引プロセスが便利で、ワンストップのブロックチェーン資産サービス プラットフォームを提供します", + "dd5": "デリバティブ", + "dd6": "最大 150 倍のレバレッジで 100 以上の暗号通貨の契約を取引し、高い利益を得ることができます", + "ee1": "複数端末のサポート", + "ee2": "いつでもどこでもデジタル資産を取引する", + "ee3": "幅広い資産タイプをサポートし、すべての通貨情報を利用可能", + "ee4": "デジタル資産の取引プロセスをすぐに理解する", + "ee5": "暗号化への取り組みを始めましょう", + "ee6": "グラフィカルな検証", + "ee7": "グラフィカルな検証", + "dd1": "検証成功", + "dd2": "検証に失敗しました", + "dd3": "セキュリティ検証を完了してください", + "dd4": "スライダーをスライドさせてパズルを完成させます", + + "hh0": "お金の未来がここにあります", + "hh1": "良い取引機会を探しています", + "hh2": "100 以上の暗号通貨を安全、高速、簡単に取引", + "hh3": "今すぐ仮想通貨取引所を試してみてください", + "hh4": "すぐに取引を始めましょう", + "hh5": "{name} アカウントを登録します", + "hh6": "登録", + "hh7": "弊社の製品とサービスについてはこちらをご覧ください", + "hh8": "セキュリティは小さな問題ではありません。お客様の資産と情報のセキュリティを守るために、私たちは絶え間ない努力をしていきます。", + "hh9": "在庫あり", + "hh10": "包括的なツールを使用して暗号通貨を取引します。", + "hh11": "派生語", + "hh12": "世界最高の暗号通貨取引所との取引契約。", + "hh13": "取引ロボット", + "hh14": "市場を監視せずに受動的利益を獲得します。", + "hh15": "コインを購入", + "hh16": "ワンクリックで暗号通貨を購入します。", + "hh17": "{nem} はコインを獲得します", + "hh18": "プロの資産運用会社との投資で安定した収益を獲得します。", + "hh19": "レバレッジ取引", + "hh20": "借りて、取引して、返済して、信用取引で資産を活用しましょう。", + "hh21": "信頼できる安全な暗号通貨取引所", + "hh22": "安全な資産ストレージ", + "hh23": "当社の最先端の暗号化およびストレージ システムにより、お客様の資産は常に安全で機密性が保たれます。", + "hh24": "強力なアカウント セキュリティ", + "hh25": "お客様のアカウントの安全を確保するために、当社は最高のセキュリティ基準を遵守し、最も厳格なセキュリティ対策を実施しています。", + "hh26": "信頼できるプラットフォーム", + "hh27": "当社には、あらゆるサイバー攻撃を迅速に検出して対応するための安全な設計基盤があります。", + "hh28": "資産準備金の証明 - 資産の透明性", + "hh29": "Proof of Reserve (PoR) は、ブロックチェーン資産の保管を証明するために広く使用されている方法です。これは、{name} が帳簿上のすべてのユーザー資産をカバーする資金を持っていることを意味します。", + "hh30": "いつでもどこでも取引が可能", + "hh31": "APPでもWEBでもすぐに取引を開始できます", + "hh32": "今すぐデジタル通貨の旅を始めましょう", + "hh33": "今すぐ登録", + "hh34": "当社は投資家にとって仮想通貨の購入、販売、管理において最も信頼できる場所です", + "hh35": "メールで登録", + "hh36": "よくある質問", + "hh41": "CATYcoin、いつでもどこでも取引", + "hh42": "今すぐ取引", + "hh43": "QR コードをスキャンして CATYcoin APP をダウンロードします", + "hh37": "グローバルランキング", + "hh38": "ユーザーは私たちを信頼しています", + "hh39": "超低手数料", + "hh40": "国" + } +} \ No newline at end of file diff --git a/i18n/lang/kor.json b/i18n/lang/kor.json new file mode 100644 index 0000000..1337258 --- /dev/null +++ b/i18n/lang/kor.json @@ -0,0 +1,931 @@ +{ + "common": { + "D": "해.", + "M": "달.", + "Y": "나이.", + "add": "첨가 하 다.", + "address": "주소.", + "all": "소유 하 다.", + "amout": "수량.", + "cancel": "취소 하 다.", + "check": "심사 하 다.", + "code": "인증번호", + "confirm": "확정 하 다.", + "date": "날짜.", + "detail": "상세 한 상황.", + "email": "메 일주 소", + "enter": "입력 하 세 요", + "error": "실패 하 다.", + "getCode": "인증번호 가 져 오기", + "h": "시.", + "loadMore": "더 많이 불 러 오기", + "m": "분.", + "money": "금액.", + "more": "더.", + "notData": "데이터 없 음", + "notMore": "더 없어.", + "phone": "핸드폰", + "requestError": "네트워크 가 바 쁘 니 잠시 후에 다시 시도 해 주세요.", + "s": "초.", + "save": "보존 하 다.", + "select": "선택 하 세 요.", + "sendSuccess": "발송 성공", + "sms": "문자 메시지", + "submit": "제출 하 다.", + "success": "성공 하 다.", + "tips": "알림", + "total": "총액", + "type": "유형.", + "copy": "복제 하 다.", + "light": "희다.", + "dark": "어둡다.", + "service": "고객 지원", + "toDwon": "다운로드 페이지 로 바로 가기", + "a0": "구 매 신청 코드 를 입력 하 세 요", + "a1": "복사 성공", + "a2": "복사 실패", + "a3": "구 매 신청 기록", + "a4": "지불 금액", + "a5": "입금 수량", + "a6": "계좌번호", + "a7": "충전 수량", + "a8": "지불 증명서", + "a9": "충전 수량 을 입력 하 세 요", + "b0": "지급 증명 서 를 올 려 주세요.", + "b1": "구입 하 다{amount}매{name}토 큰 획득 가능{rate}%장려 하 다.", + "b2": "구 매 신청 이벤트", + "b3": "저장 성공", + "b4": "저장 실패", + "b5": "초대장 생 성", + "b6": "포스터 선택", + "b8": "개장 시간", + "b9": "마감 시간", + "c0": "최소 충전 금액:{num},최소 금액 이하 의 충전 은 입금 되 지 않 으 며 되 돌 릴 수 없습니다.", + "c1": "최소 인출 액", + "c2": "버 전 번호", + "c3": "열 수 있 습 니 다", + "c4": "보증금 예상", + "c5": "당신 의 이월 주문 서 는 이미 제출 되 었 습 니 다. 인내심 을 가지 고 기 다 려 주 십시오. 이월 결 과 는 문자 나 우편 으로 통지 할 것 입 니 다. 수령 에 주의 하 십시오. 궁금 한 점 이 있 으 면 즉시 고객 센터 에 연락 하 십시오." + }, + "base": { + "a0": "표제.", + "a1": "돌아가다", + "a2": "더.", + "a3": "시세.", + "a4": "옵션", + "a5": "새로운 전문 지역 을 개척 하 다.", + "a6": "회원", + "a7": "대학.", + "a8": "거래 팀", + "a9": "최신 가", + "b0": "상승폭", + "b1": "클릭 하여 로그 인 하 다", + "b2": "어서 오 세 요.", + "b3": "로그 인하 세 요.", + "b4": "진급 하 다.", + "b5": "충전 화폐", + "b6": "돈 을 인출 하 다.", + "b7": "보급 하 다.", + "b8": "수수 료 를 공제 하 다.", + "b9": "사용 가능 하 다.", + "c0": "구입 하 다.", + "c1": "나의 부탁", + "c2": "신분 인증", + "c3": "안전 센터", + "c4": "소식 을 알리다.", + "c5": "코 인 주소", + "c6": "설치", + "c7": "스스로 선택 하 다.", + "c8": "추가 성공", + "c9": "취소 성공", + "d0": "홈 페이지", + "d1": "거래 하 다.", + "d2": "자산.", + "d3": "검색 키 워드 를 입력 하 세 요.", + "d4": "전부.", + "d5": "메인보드", + "d6": "총 자산 을 환산 하 다.", + "d7": "자금 계좌", + "d8": "돌리다.", + "d9": "화폐 종 류 를 검색 하 다.", + "e0": "감추다.", + "e1": "잔고 자산", + "e2": "동결 하 다.", + "e3": "환산 하 다.", + "e4": "계약 계좌", + "e5": "계약 을 절충 하 다.", + "e6": "광부 등급", + "e7": "광부.", + "h1": "계산서", + "h2": "이름" + }, + "accountSettings": { + "a0": "계 정 설정", + "a1": "두상", + "a2": "닉네임.", + "a3": "주 계좌 번호", + "a4": "핸드폰 번호", + "a5": "포박 을 풀다", + "a6": "귀속 하 다.", + "a7": "메 일 박스 바 인 딩", + "a8": "계 정 전환", + "a9": "로그아웃 로그 인", + "b0": "닉네임 을 고치다", + "b1": "닉네임 을 입력 하 세 요", + "b2": "언어.", + "b3": "연락 정보", + "b4": "일반 상담", + "b5": "고객 서비스", + "b6": "미디어 합작", + "b7": "도움 이 필요 하 시 면 연락 주세요." + }, + "assets": { + "a0": "코 인 주소 관리", + "a1": "주소록 은 귀하 가 자주 사용 하 는 주 소 를 관리 할 수 있 습 니 다. 주소록 에 존재 하 는 주소 로 돈 을 인출 할 때 여러 가지 검 사 를 하지 않 아 도 됩 니 다.", + "a2": "자동 으로 코 인 을 인출 할 수 있 습 니 다. {name} 코 인 을 사용 할 때, 웹 주소록 에 존재 하 는 주소 만 코 인 을 인출 할 수 있 습 니 다.", + "a3": "주소 삭제", + "a4": "주소 추가", + "a5": "삭제 할 주 소 를 선택 하 세 요", + "a6": "현재 선택 한 주 소 를 삭제 하 시 겠 습 니까", + "a7": "흐 르 는 물", + "a8": "총액", + "a9": "사용 가능 하 다.", + "b0": "동결 하 다.", + "b1": "자금 계좌", + "b2": "계약 계좌", + "b3": "레버 계 정", + "b4": "재 테 크 계좌", + "b5": "검색 키 워드 를 입력 하 세 요.", + "b6": "돈 을 인출 하 다.", + "b7": "체인 유형 을 선택 하 세 요", + "b8": "코 인 주소", + "b9": "주 소 를 입력 하 세 요", + "c0": "수량.", + "c1": "잔금", + "c2": "수량 을 입력 하 세 요", + "c3": "전부.", + "c4": "수수료", + "c5": "정확 한 코 인 지갑 주 소 를 자세히 확인 하고 입력 하 세 요.", + "c6": "대응 하지 않 는 디지털 화 폐 를 지갑 주소 로 보 내 면 영구적 인 손실 을 초래 할 수 있다.", + "c7": "인출 수수 료 는 인출 수량 에서 공제 된다.", + "c8": "동전 인출 기록", + "c9": "시간.", + "d0": "상태.", + "d1": "심사 중 입 니 다.", + "d2": "성공 하 다.", + "d3": "실패 하 다.", + "d4": "더 보기", + "d5": "제출 성공, 심사 중", + "d6": "편집 하 다.", + "d7": "첨가 하 다.", + "d8": "주소.", + "d9": "주 소 를 입력 하거나 붙 여 넣 으 세 요.", + "e0": "비고 하 다.", + "e1": "설명 을 입력 하 세 요", + "e2": "주소 적어 주세요.", + "e3": "비고 를 기입 해 주 십시오", + "e4": "조작 이 성공 하 다", + "e5": "충전 화폐", + "e6": "위의 QR 코드 를 스 캔 해서 동전 충전 주 소 를 획득 하 세 요.", + "e7": "코 인 충전 주소", + "e8": "충전 수량", + "e9": "충전 수량 을 입력 하 세 요", + "f0": "이 주 소 는 귀하 의 최신 충전 주소 입 니 다. 시스템 이 충전 을 받 으 면 자동 으로 입 금 됩 니 다.", + "f1": "계좌 이체 시 전체 블록 체인 네트워크 에서 확인 해 야 합 니 다. {num} 개 네트워크 확인 시 {name} 이 계 정 에 자동 으로 저 장 됩 니 다.", + "f2": "개 네트워크 확인 시", + "f3": "{name} 을 이 주소 로 만 보 내 주세요. 다른 디지털 화 폐 를 이 주소 로 보 내 면 영구적 인 손실 이 발생 합 니 다.", + "f4": "동전 충전 기록", + "f5": "{name}의 네트워크를 이용하여 보내주세요." + }, + "auth": { + "a0": "신분 인증", + "a1": "실명 인증", + "a2": "인증 되 지 않 음", + "a3": "인증 됨", + "a4": "고급 인증", + "a5": "심사 중 입 니 다.", + "a6": "인증 실패", + "a7": "국적.", + "a8": "국적 을 선택 하 세 요.", + "a9": "실명", + "b0": "실명 을 입력 하 세 요", + "b1": "여권번호", + "b2": "증명 번 호 를 입력 하 세 요.", + "b3": "확인 하 다.", + "b4": "인증 성공", + "b5": "증명서 정면 사진 올 려 주세요.", + "b6": "증명서 뒷면 을 올 려 주세요.", + "b7": "신분증 사진 을 올 려 주세요.", + "b8": "사진 이 선명 하고 워 터 마크 가 없 으 며 상반신 이 완전 하 게 보이 도록 확보 하 다", + "b9": "문건 의 크기 가 너무 커서 초과 해 서 는 안 된다.", + "c0": "파일 형식 오류", + "c1": "업로드 성공", + "c2": "증명서 뒷면 사진 을 올 려 주세요.", + "c3": "증명 서 를 정면 사진 으로 올 려 주세요.", + "c4": "업로드 성공, 심사 대기", + "d0": "생년월일", + "d1": "증명서 유형", + "d2": "신분증", + "d3": "운전 면허증", + "d4": "여권.", + "d5": "거주 지", + "d6": "거주 지 를 입력 하 세 요", + "d7": "도시.", + "d8": "소재 도 시 를 입력 하 세 요", + "d9": "우편번호", + "d10": "우편 번호 입력 하 세 요", + "d11": "전화 번호", + "d12": "핸드폰 번 호 를 입력 하 세 요.", + "d13": "선택 하 세 요.", + "SelectAreaCode": "지역번호 선택" + }, + "exchange": { + "a0": "화폐", + "a1": "구입 을 신청 하 다.", + "a2": "계약", + "a3": "거래 하 다.", + "a4": "현재 의뢰", + "a5": "역사적 의뢰", + "a6": "추가 성공", + "a7": "취소 성공", + "a8": "발행 총량", + "a9": "유통 총량", + "b0": "발행 가격", + "b1": "발행 일자", + "b2": "백서 주소", + "b3": "홈 페이지 주소", + "b4": "간단 한 소개", + "b5": "사다.", + "b6": "팔다.", + "b7": "위탁 가격", + "b8": "유형.", + "b9": "제한 거래", + "c0": "시가 거래", + "c1": "거래 가 이루어지다", + "c2": "총계 하 다", + "c3": "매입 하 다.", + "c4": "매출 하 다.", + "c5": "수량.", + "c6": "최고의 시장가 격 에서 거래 가 이 루어 집 니 다.", + "c7": "총가격", + "c8": "사용 가능 수량", + "c9": "총액.", + "d0": "등록 하 다.", + "d1": "시 분할 도", + "d2": "가격.", + "d3": "최신 거래", + "d4": "시간.", + "d5": "방향.", + "d6": "가격 을 제한 하 다.", + "d7": "시가.", + "d8": "가격 입력 해 주세요.", + "d9": "수량 을 입력 하 세 요", + "e0": "총 가격 을 입력 하 세 요", + "e1": "주문 성공", + "e2": "평균 가격", + "e3": "최고", + "e4": "가장 낮다.", + "e5": "재다.", + "e6": "매매 시세", + "e7": "화폐 정보", + "e8": "분.", + "e9": "시간.", + "f0": "하늘.", + "f1": "주.", + "f2": "달.", + "f3": "매입 가격", + "f4": "판매 가격", + "f5": "화폐 거래", + "f6": "검색 키 워드 를 입력 하 세 요.", + "f7": "거래 팀", + "f8": "최신 가", + "f9": "상승폭", + "g0": "스스로 선택 하 다.", + "g1": "나의 부탁", + "g2": "의뢰 를 취소 하 다", + "g3": "조작 하 다.", + "g4": "철회 하 다.", + "g5": "현재 의뢰 를 취소 합 니까", + "g6": "취소 성공" + }, + "option": { + "a0": "옵션", + "a1": "거리 인도", + "a2": "많이 보다.", + "a3": "틈 을 보다.", + "a4": "수익 률", + "a5": "구입 하 다.", + "a6": "많다.", + "a7": "비다.", + "a8": "현재.", + "a9": "다음 기", + "b0": "똑바로 보다", + "b1": "상승폭 선택", + "b2": "수익 률", + "b3": "구 매 수량", + "b4": "수량 을 입력 하 세 요", + "b5": "잔금", + "b6": "예상 수익", + "b7": "즉시 구 매", + "b8": "붇다.", + "b9": "평평 하 다.", + "c0": "넘어지다.", + "c1": "구 매 성공", + "c2": "상세 한 상황.", + "c3": "주문 번호", + "c4": "개장 가", + "c5": "종가", + "c6": "매입 시간", + "c7": "매입 수량", + "c8": "구 매 유형", + "c9": "상태.", + "d0": "결 과 를 인계 하 다.", + "d1": "결산 수량", + "d2": "결제 시간", + "d3": "더 보기", + "d4": "옵션 을 구 매 하 다", + "d5": "거래 를 기다리다", + "d6": "나의 인도", + "d7": "인계 기록", + "d8": "분.", + "d9": "시간.", + "e0": "하늘.", + "e1": "주.", + "e2": "달.", + "e3": "방향.", + "e4": "상승폭" + }, + "purchase": { + "a0": "발행 가격", + "a1": "구 매 신청 화폐 종류", + "a2": "예상 접속 시간", + "a3": "구입 신청 시작 시간", + "a4": "구 매 신청 마감 시간", + "a5": "구입 을 신청 하 다.", + "a6": "구 매 신청 화폐 종 류 를 선택 하 세 요.", + "a7": "구 매 수량", + "a8": "구 매 신청 수량 을 입력 하 세 요", + "a9": "전부.", + "b0": "즉시 구 매 신청", + "b1": "구입 신청 주기", + "b2": "프로젝트 예열", + "b3": "구 매 신청 을 시작 하 다", + "b4": "구 매 신청 을 마감 하 다", + "b5": "결 과 를 발표 하 다", + "b6": "프로젝트 정보", + "b7": "사용 여부", + "b8": "구입 하 다.", + "b9": "구 매 신청 성공" + }, + "reg": { + "a0": "휴대폰 등록", + "a1": "메 일주 소 등록", + "a2": "핸드폰", + "a3": "핸드폰 번 호 를 입력 하 세 요.", + "a4": "메 일주 소", + "a5": "메 일주 소 번 호 를 입력 하 세 요.", + "a6": "인증번호", + "a7": "인증번호 입력", + "a8": "비밀 번호", + "a9": "비밀 번 호 를 입력 하 세 요.", + "b0": "비밀번호 확인", + "b1": "비밀번호 확인 해 주세요.", + "b2": "추천인", + "b3": "추천 인 을 입력 하 세 요", + "b4": "골 라 적다", + "b5": "당신 은 이미 동의 하 였 습 니 다", + "b6": "사용자 프로 토 콜", + "b7": "우리 의", + "b8": "프라이버시 협의", + "b9": "등록 하 다.", + "c0": "계 정 이 있 습 니 다.", + "c1": "즉시 로그 인", + "c2": "협의 서 를 읽 고 동의 하 십시오.", + "c3": "핸드폰 번호 적어 주세요.", + "c4": "메 일주 소 번 호 를 적어 주세요.", + "c5": "등록 성공", + "c6": "초대코드 (필수)", + "c7": "초대코드를 입력해주세요" + }, + "safe": { + "a0": "포박 을 풀다", + "a1": "귀속 하 다.", + "a2": "메 일주 소", + "a3": "메 일주 소 번호", + "a4": "메 일주 소 번 호 를 입력 하 세 요.", + "a5": "메 일주 소 인증번호", + "a6": "인증번호 입력", + "a7": "인증번호", + "a8": "해제 성공", + "a9": "귀속 성공", + "b0": "로그 인 비밀 번 호 를 잊어버리다.", + "b1": "계좌번호", + "b2": "이메일 주소를 입력하세요", + "b3": "새 비밀번호", + "b4": "새 암 호 를 입력 하 세 요", + "b5": "비밀번호 확인", + "b6": "비밀번호 확인 해 주세요.", + "b7": "수정 을 확인 하 다", + "b8": "정확 한 핸드폰 이나 메 일주 소 번 호 를 입력 하 세 요.", + "b9": "구 글 검증 기", + "c0": "조작 방법: 구 글 의 검증 기 를 다운로드 하고 열 어 아래 QR 코드 를 스 캔 하거나 수 동 으로 비밀 키 를 입력 하여 인증 토 큰 을 추가 합 니 다.", + "c1": "키 복사", + "c2": "키 를 잘 저 장 했 습 니 다. 잃 어 버 리 면 찾 을 수 없습니다.", + "c3": "다음 단계", + "c4": "문자 인증번호", + "c5": "구 글 인증번호", + "c6": "바 인 딩 확인", + "c7": "안전 센터", + "c8": "로그 인 비밀번호", + "c9": "고치다.", + "d0": "설치", + "d1": "거래 비밀번호", + "d2": "핸드폰", + "d3": "수정 성공", + "d4": "핸드폰 번호", + "d5": "핸드폰 번 호 를 입력 하 세 요.", + "d6": "문자 인증 번 호 를 입력 하 세 요.", + "d7": "폐쇄 하 다.", + "d8": "열다.", + "d9": "검증 하 다.", + "e0": "문자 메시지", + "e1": "종료 성공", + "e2": "오픈 성공", + "e3": "확인 하 다.", + "e4": "설정 성공" + }, + "transfer": { + "a0": "이체 기록", + "a1": "성공 하 다.", + "a2": "수량.", + "a3": "방향.", + "a4": "계좌 자산", + "a5": "계약 계좌", + "a6": "레버 계 정", + "a7": "재 테 크 계좌", + "a8": "돌리다.", + "a9": "부터.", + "b0": "까지", + "b1": "화폐 종 류 를 이체 하 다.", + "b2": "잔금", + "b3": "전부.", + "b4": "스 위칭 됨" + }, + "notice": { + "a0": "상세 한 상황.", + "a1": "소식 을 알리다.", + "a2": "공고 하 다.", + "a3": "소식." + }, + "invite": { + "a0": "고객 님 께 서 거래 커미션 을 받 고 친 구 를 초대 하 십 니 다.", + "a1": "동업 자", + "a2": "거래 를 즐 기 고 커미션 을 반환 하 다.", + "a3": "일반 사용자", + "a4": "나의 신분", + "a5": "신분 을 존귀 하 게 누리다.", + "a6": "나의 초대 코드", + "a7": "요청 QR 코드 복사", + "a8": "초대장 링크 복사", + "a9": "나의 프로 모 션", + "b0": "총 인원 을 확대 하 다", + "b1": "사람.", + "b2": "총 수익 을 환산 하 다.", + "b3": "보급 기록", + "b4": "직접 요청", + "b5": "리베이트 레코드", + "b6": "등급.", + "b7": "등급 설정", + "b8": "진급 조건", + "b9": "배당 권익", + "c0": "닉네임.", + "c1": "인원 을 확대 하 다.", + "c2": "수익 을 환산 하 다.", + "c3": "요청 레코드", + "c4": "리베이트 레코드", + "c5": "등급 권익 설명", + "c6": "등급.", + "c7": "권익.", + "c8": "설명 하 다.", + "c9": "나의 권익" + }, + "help": { + "a0": "상세 한 상황.", + "a1": "대학.", + "a2": "분류 하 다.", + "a3": "" + }, + "login": { + "a0": "핸드폰 이나 메 일주 소 번호", + "a1": "핸드폰 이나 메 일주 소 번 호 를 입력 하 세 요.", + "a2": "비밀 번호", + "a3": "비밀 번 호 를 입력 하 세 요.", + "a4": "등록 하 다.", + "a5": "비밀 번 호 를 잊어버리다.", + "a6": "계 정 이 없어 요.", + "a7": "즉시 등록", + "a8": "핸드폰", + "a9": "메 일주 소", + "b0": "완성 하 다." + }, + "contract": { + "a0": "창 고 를 내다.", + "a1": "창 고 를 보유 하 다.", + "a2": "위탁 하 다.", + "a3": "역사", + "a4": "계약 거래", + "a5": "개통 성공", + "a6": "거래 유형", + "a7": "거래 가 이루어지다", + "a8": "위탁 총량", + "a9": "평균 거래 가 성립 되다.", + "b0": "위탁 가격", + "b1": "보증금", + "b2": "수수료", + "b3": "상태.", + "b4": "조작 하 다.", + "b5": "철회 서", + "b6": "취소 됨", + "b7": "미 거래", + "b8": "부분 적 거래", + "b9": "전 거래", + "c0": "많이 하 다.", + "c1": "텅 비다", + "c2": "비다", + "c3": "평 다", + "c4": "알림", + "c5": "현재 주문 취소 여부", + "c6": "취소 성공", + "c7": "손익.", + "c8": "함께 나누다", + "c9": "상세 한 상황 을 위탁 하 다.", + "d0": "데이터 없 음", + "d1": "가격.", + "d2": "수량.", + "d3": "거래 시간", + "d4": "사용자 권익", + "d5": "손익 을 실현 하지 못 하 다.", + "d6": "위험 률", + "d7": "시가.", + "d8": "장.", + "d9": "보증금 을 점용 하 다", + "e0": "상승 세 를 보이다.", + "e1": "많이 열 수 있다.", + "e2": "하락 세 를 보이다.", + "e3": "오픈 스페이스", + "e4": "사용 가능 하 다.", + "e5": "돌리다.", + "e6": "자금 비율", + "e7": "거리 결산", + "e8": "많다.", + "e9": "비다.", + "f0": "자금 을 이체 하 다.", + "f1": "계산기", + "f2": "계약 에 대하 여", + "f3": "위험 보장 기금", + "f4": "자금 비용 역사", + "f5": "일반 의뢰", + "f6": "시가 의뢰", + "f7": "과연", + "f8": "가격", + "f9": "곱절 레버 로 창 고 를 열다.", + "g0": "많이 하 다.", + "g1": "비다", + "g2": "의뢰 성공", + "g3": "현재 계약 만 표시", + "g4": "가 평", + "g5": "위탁 하 다.", + "g6": "창 고 를 여 는 평균 가격.", + "g7": "결제 기준 가격", + "g8": "강 평 가 를 견적 하 다.", + "g9": "이미 결산 한 수익", + "h0": "수익 률", + "h1": "그치다.", + "h2": "손실 을 멈추다.", + "h3": "창고 가 평평 하 다.", + "h4": "시가 가 균일 하 다.", + "h5": "이윤 을 정지 하고 손실 을 줄이다.", + "h6": "평평 하 다.", + "h7": "일반 창고 가격 입력 하 세 요", + "h8": "가격 을 제한 하 다.", + "h9": "창고 수량 을 입력 하 세 요", + "i0": "가 평", + "i1": "창고 오픈 평균 가격.", + "i2": "최신 거래 가격", + "i3": "가격 입력 해 주세요.", + "i4": "이윤 정지 트리거 가격", + "i5": "시가 가 되다", + "i6": "시 수익 정지 의뢰 를 촉발, 거래 후 손익 예상", + "i7": "손실 정지 트리거 가격", + "i8": "시 손실 정지 의뢰 를 촉발, 거래 후 손익 예상", + "i9": "확정 하 다.", + "j0": "창고 정리 에 성공 하 다.", + "j1": "시가 전평 여부", + "j2": "전 평", + "j3": "성공 하 다.", + "j4": "설정 성공", + "j5": "신기 한 계책 은 타의 추종 을 불허 한다", + "j6": "만들다.", + "j7": "일반 창고 가격.", + "j8": "디지털 자산 거래 플랫폼", + "j9": "{name 1} {name 2} {name 3} 뜨 거 운 날 아 오 르 는 길", + "k0": "창 고 를 여 는 가격.", + "k1": "최신 가격", + "k2": "스 캔 하면 더 알 아 요.", + "k3": "손익 을 결산 하 다.", + "k4": "캡 처 성공, 로 컬 에 저장", + "k5": "캡 처 실패.", + "k6": "길 게 눌 러 서 캡 처.", + "k7": "원 키 전평", + "k8": "원 키 반전", + "k9": "원 키 전평 여부", + "l0": "순 전 히 성공 하 다", + "l1": "원 클릭 반전 여부", + "l2": "역방향 성공", + "l3": "텅 비다", + "l4": "평 다" + }, + "otc": { + "a0": "광 고 를 내다", + "a1": "주문 하 다.", + "a2": "거래 화폐 종류", + "a3": "내 주문", + "a4": "내 광고.", + "a5": "구입 하 다.", + "a6": "판매 하 다.", + "a7": "총수", + "a8": "나머지.", + "a9": "한정 하 다.", + "b0": "단가", + "b1": "지불 방식", + "b2": "조작 하 다.", + "b3": "총량", + "b4": "결제 방법 을 선택해 주세요.", + "b5": "수량 을 입력 하 세 요", + "b6": "주문 하 다.", + "b7": "알 리 페 이", + "b8": "위 챗 편지", + "b9": "은행 카드", + "c0": "주문 성공", + "c1": "상태.", + "c2": "광고 번호", + "c3": "총가격", + "c4": "수량.", + "c5": "발표 시간", + "c6": "내리다", + "c7": "취소 됨", + "c8": "거래 중", + "c9": "완료 됨", + "d0": "알림", + "d1": "현재 광고 내리 기 여부", + "d2": "확정 하 다.", + "d3": "취소 하 다.", + "d4": "취소 성공", + "d5": "법정 통화 계좌", + "d6": "동결 하 다.", + "d7": "알 리 페 이 계 정", + "d8": "계 정 을 입력 하 세 요", + "d9": "성명.", + "e0": "이름 을 입력 하 세 요", + "e1": "지불 코드", + "e2": "귀속 하 다.", + "e3": "위 챗 계 정", + "e4": "은행 명", + "e5": "은행 명칭 을 입력 하 세 요", + "e6": "계좌 개설 지점", + "e7": "계좌 개설 지점 을 입력 하 세 요", + "e8": "은행 카드번호", + "e9": "카드 번 호 를 입력 하 세 요.", + "f0": "편집 성공", + "f1": "추가 성공", + "f2": "매출 하 다.", + "f3": "매입 하 다.", + "f4": "주문 상세", + "f5": "주문 번호", + "f6": "계좌번호", + "f7": "계좌 개설 은행", + "f8": "남 은 시간", + "f9": "분.", + "g0": "초.", + "g1": "지급 증명 서 를 업로드 하 다.", + "g2": "지불 을 확인 하 다", + "g3": "주문 취소", + "g4": "수금 을 확인 하 다", + "g5": "미 입금", + "g6": "현재 주문 취소 여부", + "g7": "주문 이 취소 되 었 습 니 다.", + "g8": "현재 지불 확인", + "g9": "조작 이 성공 하 다", + "h0": "수금 을 확인 한 후 매 물 자산 을 자동 으로 이체 하 다", + "h1": "미 입금 확인 후, 이 주문 서 는 자동 으로 신고 에 들 어 갑 니 다", + "h2": "판매 주문서", + "h3": "주문 서 를 구입 하 다.", + "h4": "광고 구 매 주문서", + "h5": "광고 판매 주문서", + "h6": "시간.", + "h7": "상세 한 상황.", + "h8": "전부.", + "h9": "종료 됨", + "i0": "미 지급", + "i1": "확인 을 기다리다", + "i2": "신고 중 입 니 다.", + "i3": "광고 유형", + "i4": "거래 유형 을 선택 하 세 요", + "i5": "거래 화폐 종 류 를 선택해 주세요.", + "i6": "가격.", + "i7": "가격 입력 해 주세요.", + "i8": "최저 가", + "i9": "최저 가 입력 하 세 요", + "j0": "최고가", + "j1": "최고 가격 을 입력 하 세 요", + "j2": "비고 하 다.", + "j3": "설명 을 입력 하 세 요", + "j4": "발표 하 다.", + "j5": "발표 성공", + "j6": "수금 방식", + "j7": "최저 량", + "j8": "최고 량", + "j9": "최소 거래 량 을 입력 하 세 요", + "k0": "최고 거래 량 을 입력 하 세 요" + }, + "first": { + "a0": "실명 을 찾아가다", + "a1": "우리", + "a2": "어서 오 세 요!", + "a3": "수익 정지 설정", + "a4": "현재 최신 가격 으로 거래 하 다.", + "a5": "보유 창고", + "a6": "주문 관리", + "a7": "모든 의뢰", + "a8": "역사 기록", + "a9": "배수", + "b0": "로그 인 을 종료 하 시 겠 습 니까?", + "b1": "등록", + "b2": "안녕하세요,CATYcoin 사용 을 환영 합 니 다.", + "b3": "재다.", + "b4": "현물 지수", + "b5": "계약 지수", + "b6": "다양한 방식 으로 구 매 지원", + "b7": "간편 구 매", + "b8": "영속", + "b9": "현재 지역 은 아직 개방 되 지 않 았 습 니 다.", + "c0": "매입", + "c1": "팔리다", + "c2": "시간.", + "c3": "총가격", + "c4": "수량", + "c5": "표시 가격", + "c6": "담보 자산", + "c7": "거래 량" + }, + "recharge": { + "a0": "화폐 종 류 를 바꾸다.", + "a1": "*주소 변경 은 수신 만 가능", + "a2": "의 자산 을 다른 화폐 로 충전 하면 찾 을 수 없습니다!", + "a3": "ERC 20 으로 수금 을 추천 합 니 다.", + "a4": "주소 복사", + "a5": "*계좌 이체 전 주소 및 정보 확인 꼭 해 주세요!일단 전출 하면 철회 할 수 없다!", + "a6": "다시 만들어 주세요" + }, + "currency": { + "a0": "법정 화폐 거래", + "a1": "살 래 요.", + "a2": "팔 거 야.", + "a3": "원 클릭 으로 돈 을 사다.", + "a4": "원 클릭 으로 화 폐 를 팔다.", + "a5": "수량 에 따라 구 매 하 다", + "a6": "금액 에 따라 구 매 하 다", + "a55": "수량 에 따라 판매", + "a66": "금액 에 따라 판매", + "a7": "구 매 수량 을 입력 하 세 요", + "a8": "구 매 금액 을 입력 하 세 요", + "a9": "판매 수량 을 입력 하 세 요", + "b0": "판매 금액 을 입력 하 세 요", + "b1": "단가", + "b2": "수수료", + "b3": "수수료", + "b4": "사용 가능 잔액 부족", + "b5": "우선 고급 인증 을 완성 하 세 요", + "b6": "인증 하 러 가다", + "b7": "구 매 확인", + "b8": "판매 확인" + }, + "cxiNewText": { + "a0": "상위 10 개", + "a1": "500만+", + "a2": "< 0.10%", + "a3": "200+", + "a4": "글로벌 랭킹", + "a5": "사용자는 우리를 신뢰합니다", + "a6": "매우 낮은 수수료", + "a7": "국가", + "a21": "즉시 수익 창출", + "a22": "개인 암호화폐 포트폴리오 만들기", + "a23": "100개 이상의 암호화폐 구매, 거래 및 보유", + "a24": "계정 충전", + "a25": "이메일로 가입", + "a38": "언제 어디서나 거래를 엽니다.", + "a39": "APP과 웹페이지를 통해 언제든지 안전하고 편리하게 거래를 시작하세요.", + "a41": "신뢰할 수 있는 암호화폐 거래 플랫폼", + "a42": "우리는 엄격한 프로토콜과 업계 최고의 기술적 조치로 사용자의 안전을 보장하기 위해 최선을 다하고 있습니다.", + "a43": "사용자 보안 자산 펀드", + "a44": "모든 거래 수수료의 10%를 안전자산 펀드에 보관하여 사용자 자금을 부분적으로 보호합니다.", + "a45": "개인화된 액세스 제어", + "a46": "개인화된 액세스 제어는 개인 계정 장치 및 주소에 대한 액세스를 제한하므로 사용자가 걱정할 필요가 없습니다.", + "a47": "고급 데이터 암호화", + "a48": "개인 거래 데이터는 종단 간 암호화로 보호되며 개인 정보에 접근할 수 있는 사람은 본인뿐입니다.", + "a57": "클릭하여 이동", + "a71": "초보자 가이드 ", + "a72": "즉시 디지털 통화 거래 학습 시작 ", + "a77": "디지털 화폐 구매 방법 ", + "a78": "디지털 통화 판매 방법 ", + "a79": "디지털 통화 거래 방법", + "a80": "시장", + "a81": "24시간 시장 동향", + "a82": "지갑에 암호화폐 자금을 추가하고 즉시 거래를 시작하세요." + }, + "homeNewText": { + "aa1": "암호화폐 게이트", + "aa2": "100개 이상의 암호화폐를 안전하고 빠르고 쉽게 거래하세요", + "aa3": "이메일로 등록", + "aa4": "지금 거래를 시작하세요", + "aa5": "시장 동향", + "aa6": "디지털 자산 견적 익스프레스", + "aa7": "통화", + "bb1": "최신 가격(USD)", + "bb2": "24시간 증가", + "bb3": "24시간 거래량", + "bb4": "모두를 위한 암호화폐 거래소", + "bb5": "여기에서 거래를 시작하고 더 나은 암호화폐 여행을 경험해보세요", + "bb6": "개인의", + "bb7": "모두를 위한 암호화폐 거래소. 다양한 통화를 제공하는 가장 신뢰할 수 있는 선도적인 거래 플랫폼", + "cc1": "사업", + "cc2": "기업과 기관을 위해 제작되었습니다. 기관 투자자 및 기업에 암호화폐 솔루션 제공", + "cc3": "개발자", + "cc4": "개발자를 위해 제작되었으며 개발자가 web3의 미래를 위한 도구와 API를 구축할 수 있도록 제작되었습니다.", + "cc6": "QR 코드 스캔", + "cc7": "안드로이드/IOS 앱 다운로드", + "dd1": "무사고로 안전하고 안정적입니다.", + "dd2": "다양한 보안 전략과 100% 예비 보장을 통해 설립 이후 보안 사고가 발생하지 않았음을 보장합니다.", + "dd3": "간단하고 편리하게 암호화폐 자산을 거래하세요", + "dd4": "CATYcoin에서는 상품을 이해하기 쉽고, 거래 과정이 편리하며, 원스톱 블록체인 자산 서비스 플랫폼입니다.", + "dd5": "파생상품", + "dd6": "최대 150배의 레버리지로 100개 이상의 암호화폐 계약을 거래하고 높은 수익을 올릴 수 있습니다", + "ee1": "다중 터미널 지원", + "ee2": "언제 어디서나 디지털 자산을 거래하세요", + "ee3": "모든 통화 정보를 사용할 수 있는 다양한 자산 유형을 지원합니다.", + "ee4": "디지털 자산 거래 프로세스를 빠르게 이해하세요", + "ee5": "암호화 여정을 시작하세요", + "ee6": "그래픽 검증", + "ee7": "그래픽 검증", + "dd1": "확인 성공", + "dd2": "확인 실패", + "dd3": "보안인증을 완료해주세요", + "dd4": "슬라이더를 밀어서 퍼즐을 완성하세요", + + "hh0": "돈의 미래가 여기에 있습니다", + "hh1": "좋은 거래 기회를 찾고 있습니다", + "hh2": "100개 이상의 암호화폐를 안전하고 빠르며 쉽게 거래할 수 있습니다", + "hh3": "지금 저희 암호화폐 거래소를 이용해 보세요", + "hh4": "빠른 거래 여정을 시작하세요", + "hh5": "{name} 계정 등록", + "hh6": "등록", + "hh7": "여기에서 당사의 제품과 서비스를 살펴보세요", + "hh8": "보안은 작은 문제가 아닙니다. 고객님의 자산과 정보의 보안을 지키기 위해 끊임없는 노력을 하겠습니다.", + "hh9": "재고 있음", + "hh10": "포괄적인 도구를 사용하여 암호화폐를 거래하세요.", + "hh11": "파생상품", + "hh12": "세계 최고의 암호화폐 거래소와 거래 계약을 맺으세요.", + "hh13": "거래 로봇", + "hh14": "시장을 모니터링하지 않고도 수동적 이익을 얻으세요.", + "hh15": "코인 구매", + "hh16": "한 번의 클릭으로 암호화폐를 구매하세요.", + "hh17": "{nem} 코인 획득", + "hh18": "전문 자산운용사와 함께 투자하여 안정적인 수익을 얻으세요.", + "hh19": "레버리지 거래", + "hh20": "마진 거래를 통해 빌리고, 거래하고, 상환하고, 자산을 활용하세요.", + "hh21": "신뢰할 수 있고 안전한 암호화폐 거래소", + "hh22": "안전한 자산 보관", + "hh23": "우리의 선도적인 암호화 및 저장 시스템은 귀하의 자산을 항상 안전하고 기밀로 유지하도록 보장합니다.", + "hh24": "강력한 계정 보안", + "hh25": "저희는 귀하의 계정 안전을 보장하기 위해 최고의 보안 표준을 준수하고 가장 엄격한 보안 조치를 구현합니다.", + "hh26": "신뢰할 수 있는 플랫폼", + "hh27": "우리는 모든 사이버 공격을 신속하게 탐지하고 대응할 수 있는 안전한 설계 기반을 갖추고 있습니다.", + "hh28": "자산 보유 증명 - 자산 투명성", + "hh29": "예비 증명(PoR)은 블록체인 자산의 보관을 증명하는 데 널리 사용되는 방법입니다. 이는 {name}이(가) 장부에 있는 모든 사용자 자산을 포괄하는 자금을 보유하고 있음을 의미합니다.", + "hh30": "언제 어디서나 거래가 가능합니다", + "hh31": "APP이든 WEB이든 빠르게 거래를 시작할 수 있습니다.", + "hh32": "지금 디지털 화폐 여행을 시작하세요", + "hh33": "지금 등록하세요", + "hh34": "우리는 투자자들이 암호화폐를 사고 팔고 관리할 수 있는 가장 신뢰할 수 있는 곳입니다.", + "hh35": "이메일로 등록", + "hh36": "자주 묻는 질문", + "hh41": "CATYcoin, 언제 어디서나 거래하세요", + "hh42": "지금 거래하세요", + "hh43": "CATYcoin APP을 다운로드하려면 QR 코드를 스캔하세요", + "hh37": "글로벌 순위", + "hh38": "사용자들은 우리를 신뢰합니다", + "hh39": "초저렴한 수수료", + "hh40": "국가" + } +} \ No newline at end of file diff --git a/i18n/lang/pl.json b/i18n/lang/pl.json new file mode 100644 index 0000000..85176ef --- /dev/null +++ b/i18n/lang/pl.json @@ -0,0 +1,787 @@ +{ + "common": { + "D":"dzień", + "M":"miesiąc", + "Y":"rok", + "add":"Dodaj do", + "address":"adres", + "all":"Wszystkie", + "amout":"liczba", + "cancel":"Anuluj", + "check":"do zbadania", + "code":"Kod weryfikacji", + "confirm":"określić", + "date":"data", + "detail":"szczegóły", + "email":"skrzynka", + "enter":"Proszę podać", + "error":"niepowodzenie", + "getCode":"Kod weryfikacji", + "h":"Czas", + "loadMore":"Wczytaj więcej", + "m":"Branża", + "money":"kwota pieniędzy", + "more":"więcej", + "notData":"Brak dostępnych danych", + "notMore":"Koniec z tym.", + "phone":"telefon komórkowy", + "requestError":"Sieć jest zajęta. Proszę spróbować później.", + "s":"drugi", + "save":"konserwacja", + "select":"Proszę wybrać", + "sendSuccess":"Wysłane pomyślnie", + "sms":"krótka wiadomość", + "submit":"Przedstaw", + "success":"sukces", + "tips":"przypomnienie", + "total":"ogółem", + "type":"rodzaj", + "copy":"kopiuj", + "light":"białe", + "dark":"czarny", + "service":"obsługi klienta", + "toDwon":"Czy chcesz przejść na stronę pobierania", + "a0":"Proszę podać kod zakupu", + "a1":"Kopiowanie zakończone", + "a2":"Kopiowanie nie powiodło się", + "a3":"Dokumentacja zakupu", + "a4":"Kwota płatności", + "a5":"Otrzymana ilość", + "a6":"numer konta", + "a7":"Ilość ładowania", + "a8":"Kwit płatniczy", + "a9":"Proszę podać ilość doładowania", + "b0":"Proszę przesłać kupon płatniczy", + "b1": "zakup{amount}Kawałki{name}Token dostępny{rate}%nagroda", + "b2":"Działalność subskrypcyjna", + "b3":"Zapisane pomyślnie", + "b4":"Błąd zapisu", + "b5":"Generuj plakat zaproszenia", + "b6":"Wybierz plakat", + "b8":"Czas otwarcia", + "b9":"Czas zamknięcia", + "c0":"Minimalna ilość doładowania: {num} usdt. Rekrutacja mniejsza niż minimalna kwota nie zostanie wysłana i nie może zostać zwrócona", + "c1":"Minimalna kwota wycofania", + "c2":"Numer wersji", + "c3":"otwarta", + "c4":"szacowany margines", + "c5": "Twój transfer został pomyślnie złożony, proszę czekać cierpliwie, a wynik transferu zostanie powiadomiony przez SMS lub e-mail. Proszę dokładnie sprawdzić. Jeśli masz jakieś pytania, skontaktuj się z obsługą klienta na czas." + }, + "base": { + "a0":"tytuł", + "a1":"powrót", + "a2":"więcej", + "a3":"cytat", + "a4":"opcja", + "a5":"Nowa strefa", + "a6":"członek", + "a7":"studia", + "a8":"Umowa na", + "a9":"Najnowsza cena", + "b0":"W górę i w dół", + "b1":"Kliknij na logowanie", + "b2":"Witamy w", + "b3":"Proszę zalogować się", + "b4":"aktualizacja", + "b5":"Pobierz pieniądze.", + "b6":"Wycofać pieniądze.", + "b7":"rozszerzenie", + "b8":"Odliczenie od opłaty za usługi", + "b9":"dostępne", + "c0":"zakup", + "c1":"Moja prowizja", + "c2":"uwierzytelnianie tożsamości", + "c3":"Centrum bezpieczeństwa", + "c4":"Powiadomienie o wiadomości", + "c5":"Adres wycofania", + "c6":"w górę", + "c7":"Opcjonalne", + "c8":"Dodano pomyślnie", + "c9":"Anuluj pomyślnie", + "d0":"Strona główna", + "d1":"Transakcja", + "d2":"aktywa", + "d3":"Proszę wpisać słowa kluczowe", + "d4":"całe", + "d5":"główny zarząd", + "d6":"ekwiwalent aktywów ogółem", + "d7":"Rachunek kapitałowy", + "d8":"Transfer", + "d9":"Szukanie waluty", + "e0":"ukryj", + "e1":"Aktywa salda", + "e2":"zamrożone", + "e3":"Równoważne", + "e4":"Konto kontraktowe", + "e5":"Przetwarzanie umów", + "e6":"Klasa górnicza", + "e7":"miner" + }, + "accountSettings": { + "a0":"Ustawienia konta", + "a1":"portret głowy", + "a2":"Pseudonim?", + "a3":"Główny numer rachunku", + "a4":"numer komórki", + "a5":"Rozdzielenie", + "a6":"wiążące", + "a7":"Skrzynka pocztowa", + "a8":"Przełączanie rachunków", + "a9":"Zgłoś się.", + "b0":"Zmień nazwę", + "b1":"Proszę wpisać pseudonim", + "b2":"język" + }, + "assets": { + "a0":"Zarządzanie adresem wycofania", + "a1":"Książka adresowa może być używana do zarządzania waszymi wspólnymi adresami i nie ma potrzeby przeprowadzania wielu kontroli przy pobieraniu pieniędzy z adresów w książce adresowej.", + "a2":"Automatyczne wycofanie waluty jest obsługiwane. W przypadku użycia {name} tylko adresy w książce adresowej mogą rozpocząć wycofanie waluty", + "a3":"Usuń adres", + "a4":"Dodaj adres", + "a5":"Proszę wybrać adres do usunięcia", + "a6":"Usuń aktualnie wybrany adres", + "a7":"Płynąca woda", + "a8":"ogółem", + "a9":"dostępne", + "b0":"zamrożone", + "b1":"Rachunek kapitałowy", + "b2":"Konto kontraktowe", + "b3":"Rachunek dźwigni", + "b4":"Rachunek finansowy", + "b5":"Proszę wpisać słowa kluczowe", + "b6":"Wycofać pieniądze.", + "b7":"Proszę wybrać typ łańcucha", + "b8":"Adres wycofania", + "b9":"Proszę podać adres", + "c0":"liczba", + "c1":"bilans", + "c2":"Proszę podać ilość", + "c3":"całe", + "c4":"Opłata za usługę", + "c5":"Proszę dokładnie sprawdzić i podać właściwy adres portfela", + "c6":"Wysyłanie nienamierzonej cyfrowej waluty na adres portfela spowoduje trwałą utratę", + "c7":"Opłata manipulacyjna zostanie odjęta od kwoty pobranych pieniędzy", + "c8":"Rejestr wycofania", + "c9":"czas", + "d0":"stan", + "d1":"W trakcie przeglądu", + "d2":"sukces", + "d3":"niepowodzenie", + "d4":"Więcej informacji", + "d5":"Przedstawione z powodzeniem, w trakcie przeglądu", + "d6":"edytuj", + "d7":"Dodaj do", + "d8":"adres", + "d9":"Proszę wpisać lub wkleić adres", + "e0":"uwagi", + "e1":"Proszę podać swoje uwagi", + "e2":"Proszę wpisać adres", + "e3":"Prosimy o wypełnienie uwag", + "e4":"Operacja zakończona sukcesem", + "e5":"Pobierz pieniądze.", + "e6":"Przeskanuj kod QR, aby uzyskać adres ładowania.", + "e7":"Pobieranie adresu", + "e8":"Liczba naładowanych monet", + "e9":"Proszę podać kwotę naładowanej waluty", + "f0":"Ten adres jest twoim ostatnim adresem ładowania. Kiedy system otrzyma ładowanie, będzie on automatycznie rejestrowany", + "f1":"Transfer musi by ć potwierdzony przez całą sieć blokową. Po dotarciu do {num} potwierdzenia sieci, Twój {name} zostanie automatycznie zdeponowany na koncie", + "f2":"Kiedy sieć jest potwierdzona, Twój", + "f3":"Proszę tylko wysłać {name} na ten adres. Wysyłanie innej waluty cyfrowej na ten adres spowoduje trwałą utratę", + "f4":"Nagrywanie rekordu" + }, + "auth": { + "a0":"uwierzytelnianie tożsamości", + "a1":"Uwierzytelnianie prawdziwej nazwy", + "a2":"Brak certyfikatu", + "a3":"Poświadczone", + "a4":"Zaawansowana certyfikacja", + "a5":"W trakcie przeglądu", + "a6":"Błąd uwierzytelniania", + "a7":"obywatelstwo", + "a8":"Proszę wybrać narodowość", + "a9":"Prawdziwe nazwisko", + "b0":"Proszę podać swoje prawdziwe imię", + "b1":"Numer identyfikacyjny", + "b2":"Proszę podać numer identyfikacyjny", + "b3":"potwierdzić", + "b4":"Certyfikacja zakończona sukcesem", + "b5":"Proszę przesłać zdjęcie z przodu swojej karty identyfikacyjnej.", + "b6":"Proszę przesłać z powrotem certyfikat", + "b7":"Proszę przesłać swoje zdjęcie ID", + "b8":"Upewnij się, że zdjęcie jest jasne bez znaku wodnego i górne ciało jest nietknięte", + "b9":"Wielkość pliku jest zbyt duża i nie może przekroczyć", + "c0":"Błąd typu pliku", + "c1":"Upload zakończony", + "c2":"Proszę przesłać zdjęcie na odwrocie certyfikatu", + "c3":"Proszę przesłać zdjęcie z przodu swojej karty identyfikacyjnej.", + "c4":"Upload udany, proszę czekać na audyt" + }, + "exchange": { + "a0":"Monety", + "a1":"ubiegać się o zakup", + "a2":"kontrakt", + "a3":"Transakcja", + "a4":"Obecna delegacja", + "a5":"Komisja Historyczna", + "a6":"Dodano pomyślnie", + "a7":"Anuluj pomyślnie", + "a8":"Emisja ogółem", + "a9":"Łączny obrót", + "b0":"Cena emisji", + "b1":"Czas wydania", + "b2":"Adres na papierze białym", + "b3":"Adres strony internetowej", + "b4":"krótkie wprowadzenie", + "b5":"kupić", + "b6":"sprzedaż", + "b7":"Cena Komisji", + "b8":"rodzaj", + "b9":"Ograniczenie cen", + "c0":"Transakcja rynkowa", + "c1":"Zamknięte", + "c2":"ogółem", + "c3":"zakup", + "c4":"wyprzedaż się", + "c5":"liczba", + "c6":"Blisko po najlepszej cenie rynkowej", + "c7":"Cena ogółem", + "c8":"Dostępna ilość", + "c9":"Wartość brutto", + "d0":"Wpisz się", + "d1":"Harmonogram podziału czasu", + "d2":"Cena", + "d3":"Najnowsza umowa", + "d4":"czas", + "d5":"kierunek", + "d6":"stała cena", + "d7":"cena rynkowa", + "d8":"Proszę podać cenę", + "d9":"Proszę podać ilość", + "e0":"Proszę podać całkowitą cenę", + "e1":"Wynik wymeldowania", + "e2":"Średnia cena", + "e3":"najwyższy", + "e4":"minimum", + "e5":"kwota", + "e6":"Porządek", + "e7":"Informacje o walucie", + "e8":"minuta", + "e9":"godzina", + "f0":"dzień", + "f1":"tydzień", + "f2":"miesiąc", + "f3":"Cena zakupu", + "f4":"Cena sprzedaży", + "f5":"Transakcja walutowa", + "f6":"Proszę wpisać słowa kluczowe", + "f7":"Umowa na", + "f8":"Najnowsza cena", + "f9":"W górę i w dół", + "g0":"Opcjonalne", + "g1":"Moja prowizja", + "g2":"Cofnięcie powierzenia", + "g3":"działanie", + "g4":"cofnięcie", + "g5":"Anuluj bieżącą delegację", + "g6":"Anulowanie pomyślnie" + }, + "option": { + "a0":"opcja", + "a1":"Dostawa na odległość", + "a2":"Więcej informacji", + "a3":"bądź niedźwiedzia", + "a4":"Stopa zwrotu", + "a5":"zakup", + "a6":"wiele", + "a7":"pusty", + "a8":"Bieżąca", + "a9":"Następny numer", + "b0":"Patrz płasko", + "b1":"Wybór wzrostu cen", + "b2":"Stopa zwrotu", + "b3":"Ilość zakupu", + "b4":"Proszę podać ilość", + "b5":"bilans", + "b6":"Oczekiwany dochód", + "b7":"Kup teraz", + "b8":"powstanie", + "b9":"płasko", + "c0":"upadek", + "c1":"Udany zakup", + "c2":"szczegóły", + "c3":"numer zamówienia", + "c4":"Cena otwarcia", + "c5":"Cena zamknięcia", + "c6":"Czas zakupu", + "c7":"Ilość zakupu", + "c8":"Rodzaj zakupu", + "c9":"stan", + "d0":"Wynik zamknięcia", + "d1":"Ilość rozliczenia", + "d2":"Czas dostawy", + "d3":"Więcej informacji", + "d4":"Opcja kupna", + "d5":"Czekanie na dostawę", + "d6":"Moja dostawa", + "d7":"Dokument dostawy", + "d8":"minuta", + "d9":"godzina", + "e0":"dzień", + "e1":"tydzień", + "e2":"miesiąc", + "e3":"kierunek", + "e4":"W górę i w dół" + }, + "purchase": { + "a0":"Cena emisji", + "a1":"Waluta subskrypcji", + "a2":"Oczekiwany czas online", + "a3":"Czas rozpoczęcia subskrypcji", + "a4":"Czas zamknięcia", + "a5":"ubiegać się o zakup", + "a6":"Proszę wybrać walutę subskrypcji", + "a7":"Ilość zakupu", + "a8":"Proszę podać ilość", + "a9":"całe", + "b0":"Zastosuj natychmiast", + "b1":"Cykl subskrypcji", + "b2":"Projekt rozgrzewka", + "b3":"Rozpocznij subskrypcję", + "b4":"Zamknij subskrypcję", + "b5":"Publikowanie wyników", + "b6":"Szczegóły projektu", + "b7":"Użyj lub nie", + "b8":"zakup", + "b9":"Udany zakup" + }, + "reg": { + "a0":"Rejestracja komórkowa", + "a1":"Rejestracja e-mail", + "a2":"telefon komórkowy", + "a3":"Proszę podać numer telefonu komórkowego", + "a4":"skrzynka", + "a5":"Proszę podać swój numer e-mail", + "a6":"Kod weryfikacji", + "a7":"Proszę podać kod weryfikacji", + "a8":"hasło", + "a9":"Proszę podać hasło", + "b0":"Potwierdzenie hasła", + "b1":"Proszę potwierdzić hasło", + "b2":"Odesłania", + "b3":"Proszę podać rekomendację", + "b4":"Opcjonalne", + "b5":"Zgodziłeś się.", + "b6":"Umowa użytkownika", + "b7":"I dowiedzieć się o nas", + "b8":"Umowa prywatności", + "b9":"Rejestr", + "c0":"Numer rachunku istniejącego", + "c1":"Proszę się wpisać.", + "c2":"Proszę przeczytać i zgodzić się na umowę", + "c3":"Proszę podać swój numer telefonu komórkowego", + "c4":"Proszę podać numer e-mail", + "c5":"logowanie było udane" + }, + "safe": { + "a0":"Rozdzielenie", + "a1":"wiążące", + "a2":"skrzynka", + "a3":"E-mail nr", + "a4":"Proszę podać swój numer e-mail", + "a5":"Kod weryfikacji e-mail", + "a6":"Proszę podać kod weryfikacji", + "a7":"Kod weryfikacji", + "a8":"Niepowiązanie zakończone", + "a9":"Powiązanie zakończone", + "b0":"Zapomnij hasło do logowania", + "b1":"numer konta", + "b2":"Proszę podać telefon komórkowy", + "b3":"Nowe hasło", + "b4":"Proszę podać nowe hasło", + "b5":"Potwierdzenie hasła", + "b6":"Proszę potwierdzić hasło", + "b7":"Potwierdź modyfikację", + "b8":"Proszę podać prawidłowy numer telefonu komórkowego lub e-mail", + "b9":"Weryfikator Google", + "c0":"Jak to zrobić: Pobierz i otwórz weryfikatora Google, zeskanuj poniżej kod QR lub ręcznie wprowadź tajny klucz, aby dodać token weryfikacji", + "c1":"Kopiuj klucz", + "c2":"Jeśli go zgubię, nie uda mi się go odzyskać.", + "c3":"następny krok", + "c4":"Kod weryfikacji SMS", + "c5":"Google captcha", + "c6":"Potwierdzenie wiązania", + "c7":"Centrum bezpieczeństwa", + "c8":"Hasło do logowania", + "c9":"Modyfikuj", + "d0":"w górę", + "d1":"Kod transakcji", + "d2":"telefon komórkowy", + "d3":"Poprawiona pomyślnie", + "d4":"numer komórki", + "d5":"Proszę podać numer telefonu komórkowego", + "d6":"Proszę wprowadzić kod weryfikacji SMS", + "d7":"blisko", + "d8":"otwarte", + "d9":"weryfikacja", + "e0":"krótka wiadomość", + "e1":"Zakończone pomyślnie", + "e2":"Otwórz pomyślnie", + "e3":"potwierdzić", + "e4":"Ustaw pomyślnie" + }, + "transfer": { + "a0":"Zapis transferu", + "a1":"sukces", + "a2":"liczba", + "a3":"kierunek", + "a4":"Aktywa rachunku", + "a5":"Konto kontraktowe", + "a6":"Rachunek dźwigni", + "a7":"Rachunek finansowy", + "a8":"Transfer", + "a9":"od", + "b0":"do", + "b1":"Waluta transferowa", + "b2":"bilans", + "b3":"całe", + "b4":"Przeniesione" + }, + "notice": { + "a0":"szczegóły", + "a1":"Powiadomienie o wiadomości", + "a2":"Ogłoszenie", + "a3":"wiadomości" + }, + "invite": { + "a0":"Skorzystaj z rabatu handlowego i zaproś przyjaciół", + "a1":"partner", + "a2":"Wykorzystanie rabatu handlowego", + "a3":"Zwykli użytkownicy", + "a4":"Moja tożsamość", + "a5":"Ciesz się swoją tożsamością", + "a6":"Mój kod zaproszenia", + "a7":"Kopiuj zaproszenie kod QR", + "a8":"Kopiuj link zaproszenia", + "a9":"Mój awans.", + "b0":"Łączna liczba awansów", + "b1":"ludzie", + "b2":"Całkowity ekwiwalent dochodów", + "b3":"Rekord promocji", + "b4":"Bezpośrednie zaproszenie", + "b5":"Rejestr zwróconej Komisji", + "b6":"Stopień", + "b7":"Ustawienie poziomu", + "b8":"Warunki promocji", + "b9":"Odsetki od dywidend", + "c0":"Pseudonim?", + "c1":"Liczba promotorów", + "c2":"Zmiana dochodów", + "c3":"Zapis zaproszenia", + "c4":"Rejestr zwróconej Komisji", + "c5":"Opis interesów klasy", + "c6":"Stopień", + "c7":"Prawa i interesy", + "c8":"wyjaśnić", + "c9":"Moje prawa i interesy" + }, + "help": { + "a0":"szczegóły", + "a1":"studia", + "a2":"klasyfikacja" + }, + "login": { + "a0":"Numer telefonu komórkowego lub e-mail", + "a1":"Proszę podać numer telefonu komórkowego lub e-mail", + "a2":"hasło", + "a3":"Proszę podać hasło", + "a4":"Wpisz się", + "a5":"Zapomnij o hasle.", + "a6":"Brak konta", + "a7":"Zarejestruj się", + "a8":"telefon komórkowy", + "a9":"skrzynka", + "b0":"kompletny" + }, + "contract": { + "a0":"otworzyć spichlerz w celu zapewnienia ulgi", + "a1":"Pozycja", + "a2":"powierzyć", + "a3":"Historia", + "a4":"Transakcja kontraktowa", + "a5":"Udane otwarcie", + "a6":"Rodzaj transakcji", + "a7":"Zamknięte", + "a8":"Całkowita kwota powierzona", + "a9":"Średnia cena transakcji", + "b0":"Cena Komisji", + "b1":"obligacja", + "b2":"Opłata za usługę", + "b3":"stan", + "b4":"działanie", + "b5":"Anuluj zamówienie", + "b6":"unieważnione", + "b7":"Niezaspokojony", + "b8":"Częściowa transakcja", + "b9":"Wszystkie zamknięte", + "c0":"Kaiduo.", + "c1":"Pingkong.", + "c2":"Otwarte powietrze", + "c3":"Pinto.", + "c4":"przypomnienie", + "c5":"Anuluj aktualną kolejność", + "c6":"Anulowanie pomyślnie", + "c7":"Zysk i strata", + "c8":"udział", + "c9":"Szczegóły dotyczące powierzenia", + "d0":"Brak dostępnych danych", + "d1":"Cena", + "d2":"liczba", + "d3":"Czas transakcji", + "d4":"Prawa użytkownika", + "d5":"Niezrealizowane zyski i straty", + "d6":"Stawka ryzyka", + "d7":"cena rynkowa", + "d8":"Zhang.", + "d9":"Zawód depozytu", + "e0":"Bydlak", + "e1":"Można otworzyć więcej", + "e2":"Niedźwiedzie", + "e3":"Otwórz puste", + "e4":"dostępne", + "e5":"Transfer", + "e6":"Stopa kapitałowa", + "e7":"Odległość rozliczeniowa", + "e8":"wiele", + "e9":"pusty", + "f0":"Transfer środków", + "f1":"Kalkulator", + "f2":"O umowie", + "f3":"Fundusz ochrony ryzyka", + "f4":"Historia kosztów kapitałowych", + "f5":"Ogólne powierzenie", + "f6":"na rynku", + "f7":"Czy jest oparta na", + "f8":"Cena za", + "f9":"Otwieranie podwójnej dźwigni", + "g0":"Kaiduo.", + "g1":"Otwarte powietrze", + "g2":"Pomyślna Komisja", + "g3":"Pokaż tylko aktualną umowę", + "g4":"Keping", + "g5":"powierzyć", + "g6":"Średnia cena otwarcia", + "g7":"Cena referencyjna rozliczenia", + "g8":"Szacunkowa silna parytet", + "g9":"Dochody rozliczone", + "h0":"Stopa zwrotu", + "h1":"Zatrzymaj zysk", + "h2":"Zatrzymaj stratę.", + "h3":"Zamknij pozycję", + "h4":"Cena rynkowa jest płaska", + "h5":"Zatrzymaj zyski i zatrzymaj straty", + "h6":"płasko", + "h7":"Proszę podać cenę końcową", + "h8":"stała cena", + "h9":"Proszę podać ilość końcową", + "i0":"Keping", + "i1":"Średnia cena otwarcia", + "i2":"Najnowsza cena transakcji", + "i3":"Proszę podać cenę", + "i4":"Przestać zarabiać cenę spustu", + "i5":"Cena rynkowa do", + "i6":"Po zakończeniu transakcji, zysk i strata zostaną oszacowane", + "i7":"Cena progowa straty", + "i8":"Komisja strat zatrzymanych zostanie uruchomiona po zakończeniu transakcji, a zysk i strata są oczekiwane po transakcji", + "i9":"określić", + "j0":"Zakończenie pomyślnie", + "j1":"Czy cena rynkowa jest płaska", + "j2":"Wszystkie płaskie", + "j3":"sukces", + "j4":"Ustaw pomyślnie", + "j5":"Nie ma szans na sprytne obliczenia.", + "j6":"do", + "j7":"blisko stawki", + "j8":"Cyfrowa platforma obrotu aktywami", + "j9":"Kiedy {name1} spotyka {Name2} {name3} na drodze ognistego wznoszenia", + "k0":"Cena otwarcia", + "k1":"Najnowsza cena", + "k2":"Kod skanowania aby dowiedzieć się więcej", + "k3":"Rozliczenie zysków i strat", + "k4":"Scenariusz został zapisany lokalnie", + "k5":"Błąd ekranu", + "k6":"Długi screen prasowy", + "k7":"Jedno kliknięcie", + "k8":"Jedno kliknięcie wsteczne", + "k9":"Czy wszystko jest płaskie", + "l0":"Wszyscy równi, sukces", + "l1":"Jeden klucz wstecz", + "l2":"Odwrotny sukces", + "l3":"Pingkong.", + "l4":"Pinto." + }, + "otc": { + "a0":"Reklama", + "a1":"zamówienie", + "a2":"Waluta transakcji", + "a3":"Mój rozkaz.", + "a4":"Moja reklama", + "a5":"zakup", + "a6":"sprzedaż", + "a7":"ogółem", + "a8":"nadwyżka", + "a9":"Limit", + "b0":"Cena jednostkowa", + "b1":"Metoda płatności", + "b2":"działanie", + "b3":"ogółem", + "b4":"Proszę wybrać metodę płatności", + "b5":"Proszę podać ilość", + "b6":"złożyć zamówienie", + "b7":"Alipay", + "b8":"Comment", + "b9":"karta bankowa", + "c0":"Wynik wymeldowania", + "c1":"stan", + "c2":"Numer reklamy", + "c3":"Cena ogółem", + "c4":"liczba", + "c5":"Czas wydania", + "c6":"Z półki", + "c7":"unieważnione", + "c8":"W handlu", + "c9":"Zakończone", + "d0":"przypomnienie", + "d1":"Czy bieżąca reklama została usunięta", + "d2":"określić", + "d3":"Anuluj", + "d4":"Anulowanie pomyślnie", + "d5":"Rachunek waluty prawnej", + "d6":"zamrożone", + "d7":"Numer rachunku Alipay", + "d8":"Proszę podać numer konta", + "d9":"pełna nazwa", + "e0":"Proszę podać swoje imię", + "e1":"Kod płatności", + "e2":"wiążące", + "e3":"Wechat konto", + "e4":"Nazwa banku", + "e5":"Proszę podać nazwę banku", + "e6":"Branża otwierająca konto", + "e7":"Proszę wpisać oddział otwierający konto", + "e8":"Numer karty bankowej", + "e9":"Proszę podać numer karty bankowej", + "f0":"Z powodzeniem edycja", + "f1":"Dodano pomyślnie", + "f2":"wyprzedaż się", + "f3":"zakup", + "f4":"Szczegóły zamówienia", + "f5":"numer zamówienia", + "f6":"numer konta", + "f7":"Bank depozytu", + "f8":"Pozostały czas", + "f9":"Branża", + "g0":"drugi", + "g1":"Pobierz kupon płatniczy", + "g2":"potwierdzenie płatności", + "g3":"anulowanie zamówienia", + "g4":"Potwierdzenie odbioru", + "g5":"Nie otrzymano", + "g6":"Anuluj aktualną kolejność", + "g7":"Zamówienie anulowane", + "g8":"Potwierdzenie bieżącej płatności", + "g9":"Operacja zakończona sukcesem", + "h0":"Po potwierdzeniu poboru, aktywa zostaną sprzedane i przeniesione automatycznie", + "h1":"Po potwierdzeniu, że płatność nie została otrzymana, zamówienie automatycznie wprowadzi tryb odwołania", + "h2":"Zamówienie sprzedaży", + "h3":"Zamówienie kupna", + "h4":"Zakup reklamy", + "h5":"Reklama sprzedaży", + "h6":"czas", + "h7":"szczegóły", + "h8":"całe", + "h9":"Zamknięte", + "i0":"Do zapłaty", + "i1":"Do potwierdzenia", + "i2":"W skardze", + "i3":"Rodzaje reklam", + "i4":"Proszę wybrać typ transakcji", + "i5":"Proszę wybrać walutę transakcji", + "i6":"Cena", + "i7":"Proszę podać cenę", + "i8":"cena minimalna", + "i9":"Proszę podać najniższą cenę", + "j0":"Najwyższa cena", + "j1":"Proszę podać najwyższą cenę", + "j2":"uwagi", + "j3":"Proszę podać swoje uwagi", + "j4":"zwolnienie", + "j5":"Udało się opublikować", + "j6":"Metoda płatności", + "j7":"Minimalna ilość", + "j8":"Maksymalna ilość", + "j9":"Proszę podać minimalny wolumen transakcji", + "k0":"Proszę podać maksymalną wielkość obrotu" + }, + "first":{ + "a0":"Idź do prawdziwego nazwiska", + "a1":"O nas", + "a2":"Witajcie!", + "a3":"Zatrzymaj ustalanie zysków i strat", + "a4":"Handel po aktualnej ostatniej cenie", + "a5":"Utrzymać pozycję.", + "a6":"Zarządzanie zamówieniami", + "a7":"Wszystkie powierzenia", + "a8":"Historyczne zapisy", + "a9":"wiele", + "b0":"Jesteś pewien, że chcesz się zalogować?", + "b1":"Wpisz się lub zarejestruj", + "b2":"Witam w AMATAK.", + "b3":"kwota", + "b4":"indeks punktowy", + "b5":"Kontrakt indeks", + "b6":"Obsługa wielu metod zakupu", + "b7":"Szybkie kupowanie pieniędzy", + "b8":"zrównoważonego", + "b9":"Obecny obszar nie jest jeszcze otwarty", + "c0":"zakup", + "c1":"wyprzedaż się", + "c2":"czas", + "c3":"Cena ogółem", + "c4":"liczba", + "c5":"Cena Mark", + "c6":"Zobowiązane aktywa", + "c7":"objętość" + }, + "recharge":{ + "a0":"Zmień walutę", + "a1":"*Zmiana adresu może otrzymywać tylko", + "a2":"Jeśli naładujesz swoje aktywa w innych walutach, nie będziesz w stanie ich odzyskać!", + "a3":"Erc20 zaleca się do zbierania", + "a4":"Kopiuj adres", + "a5":"*Przed transferem upewnij się, że adres i informacje są poprawne!Po przeniesieniu jest nieodwołalna!", + "a6":"Proszę zregenerować." + }, + "currency":{ + "a0":"Transakcja w walucie prawnej", + "a1":"Chciałbym go sobie kupić.", + "a2":"Chcę go sprzedać.", + "a3":"Moneta z jednym kliknięciem", + "a4":"Moneta z jednym kliknięciem", + "a5":"Zakup według ilości", + "a6":"Zakup według kwoty", + "a55":"sprzedaż według ilości", + "a66":"sprzedaż według kwoty", + "a7":"Proszę podać ilość zakupu", + "a8":"Proszę podać kwotę zakupu", + "a9":"Proszę podać ilość do sprzedaży", + "b0":"Proszę podać kwotę sprzedaży", + "b1":"Cena jednostkowa", + "b2":"0 zakup opłaty manipulacyjnej", + "b3":"0 sprzedaż prowizji", + "b4":"Niewystarczające dostępne saldo", + "b5":"Proszę najpierw wypełnić zaawansowane certyfikaty", + "b6":"De uwierzytelnianie", + "b7":"Potwierdzenie zakupu", + "b8":"Potwierdzenie sprzedaży" + } +} \ No newline at end of file diff --git a/i18n/lang/pt.json b/i18n/lang/pt.json new file mode 100644 index 0000000..084ea24 --- /dev/null +++ b/i18n/lang/pt.json @@ -0,0 +1,929 @@ +{ + "common": { + "D": "Dia", + "M": "Mês", + "Y": "ANO", + "add": "Adicionar a", + "address": "Endereço", + "all": "Todos.", + "amout": "Número", + "cancel": "Cancelar", + "check": "Para examinar", + "code": "Código de verificação", + "confirm": "Determinar", + "date": "Data", + "detail": "Detalhes", + "email": "Caixa postal", + "enter": "Por favor, insira", + "error": "Falha", + "getCode": "Obter código de verificação", + "h": "Tempo", + "loadMore": "Carregar Mais", + "m": "Ramo", + "money": "Montante do dinheiro", + "more": "Mais", + "notData": "Não existem dados disponíveis", + "notMore": "Não mais.", + "phone": "Telefone celular", + "requestError": "A rede está ocupada. Tente novamente Mais tarde.", + "s": "Segundo", + "save": "Preservação", + "select": "Por favor, seleccione", + "sendSuccess": "Enviado com SUCESSO", + "sms": "Mensagem curta", + "submit": "Enviar", + "success": "SUCESSO", + "tips": "Recordação", + "total": "Total", + "type": "Tipo", + "copy": "Cópia", + "light": "Branco", + "dark": "Preto", + "service": "Serviço Ao cliente", + "toDwon": "Você deseja IR para a página de Download", + "a0": "Por favor, insira o código de compra", + "a1": "Cópia BEM sucedida", + "a2": "Cópia falhou", + "a3": "Registos de Compras", + "a4": "Montante do pagamento", + "a5": "Quantidade recebida", + "a6": "Número Da conta", + "a7": "Quantidade de recarga", + "a8": "Autorização de pagamento", + "a9": "Por favor, introduza a quantidade de recarga", + "b0": "Por favor, envie o talão de pagamento.", + "b1": "Compra{amount}Peças{name}Token disponível{rate}%Recompensa", + "b2": "Actividades de subscrição", + "b3": "Gravado com SUCESSO", + "b4": "Gravar falhou", + "b5": "Gerar Poster de Convites", + "b6": "Selecionar Poster", + "b8": "Hora de Abertura", + "b9": "Hora de Fechar", + "c0": "Montante mínimo de recarga: {num}. Recarregamento inferior Ao montante mínimo não será publicado e não Pode ser devolvido.", + "c1": "Montante mínimo de retirada", + "c2": "Número de versão", + "c3": "Aberto", + "c4": "Margem estimada", + "c5": "Sua ordem de transfer ência FOI enviada com sucesso, por favor aguarde pacientemente, e o Resultado Da transferência será notificado por SMS ou e-mail. Por favor, verifique-o com cuidado. Se você tiver quaisquer perguntas, por favor contacte o serviço de cliente a tempo." + }, + "base": { + "a0": "Título", + "a1": "Retorno", + "a2": "Mais", + "a3": "Cotação", + "a4": "Opção", + "a5": "Nova zona", + "a6": "Membro", + "a7": "Universidade", + "a8": "Negociar para", + "a9": "Preço Mais recente", + "b0": "Pra CIMA e pra baixo", + "b1": "Clicar login", + "b2": "Bem-vindo Ao", + "b3": "Por favor, entre.", + "b4": "Actualização", + "b5": "Cobrir dinheiro", + "b6": "Retirar dinheiro", + "b7": "Extensão", + "b8": "Dedução Da taxa de serviço", + "b9": "Disponível", + "c0": "Compra", + "c1": "Minha comissão", + "c2": "Autenticação Da identidade", + "c3": "Centro de Segurança", + "c4": "Notificação de mensagens", + "c5": "Endereço de retirada", + "c6": "Configurado", + "c7": "Opcional", + "c8": "Adicionado com SUCESSO", + "c9": "Cancelar com SUCESSO", + "d0": "Página inicial", + "d1": "Transacção", + "d2": "Ativos", + "d3": "Digite as palavras-chave de pesquisa", + "d4": "Inteiro", + "d5": "Um tabuleiro principal", + "d6": "Total do equivalente Activo", + "d7": "Conta de capital", + "d8": "Transfer ência", + "d9": "Moeda de pesquisa", + "e0": "Esconder", + "e1": "Activos de balanço", + "e2": "Congelados", + "e3": "Equivalente", + "e4": "Conta de contrato", + "e5": "Conversão contratual", + "e6": "Classe de mineiros", + "e7": "Mineiro", + "h1": "Conta", + "h2": "nome" + }, + "accountSettings": { + "a0": "Configuração Da Conta", + "a1": "Retrato Da cabeça", + "a2": "Apelido?", + "a3": "Número Da conta principal", + "a4": "Número de telemóvel", + "a5": "Desagregação", + "a6": "Vinculativo", + "a7": "Ligação por correio", + "a8": "Trocando Contas", + "a9": "Cair fora", + "b0": "Alterar apelido", + "b1": "Por favor, Digite um apelido", + "b2": "Língua", + "b3": "Informações de contacto", + "b4": "Consultas de rotina", + "b5": "Serviço ao cliente", + "b6": "Cooperação com os meios de comunicação social", + "b7": "Para qualquer ajuda, entre em contato conosco" + }, + "assets": { + "a0": "Gestão do endereço de retirada", + "a1": "O livro de endereços Pode ser usado para gerenciar seus endereços comuns, e não há necessidade de realizar verificações múltiplas Ao retirar dinheiro DOS endereços Na lista de endereços", + "a2": "A retirada automática Da moeda é suportada. Quando {nome} é usado, apenas OS endereços Na lista de endereços são autorizados a iniciar a retirada Da moeda", + "a3": "Apagar o endereço", + "a4": "Adicionar endereço", + "a5": "Por favor, seleccione o endereço para apagar", + "a6": "Apagar o endereço atualmente selecionado", + "a7": "água Corrente", + "a8": "Total", + "a9": "Disponível", + "b0": "Congelados", + "b1": "Conta de capital", + "b2": "Conta de contrato", + "b3": "Conta de nivelamento", + "b4": "Conta financeira", + "b5": "Digite as palavras-chave de pesquisa", + "b6": "Retirar dinheiro", + "b7": "Seleccione por favor o Tipo de cadeia", + "b8": "Endereço de retirada", + "b9": "Por favor, insira o endereço", + "c0": "Número", + "c1": "Balanço", + "c2": "Por favor, quantidade de Entrada", + "c3": "Inteiro", + "c4": "Taxa de serviço", + "c5": "Por favor, verifique cuidadosamente e insira o endereço correto Da carteira.", + "c6": "O envio de moeda digital SEM Paralelo para o endereço Da carteira irá causar perda Permanente.", + "c7": "A taxa de movimentação será deduzida do montante do dinheiro retirado.", + "c8": "Registo Da retirada", + "c9": "Tempo", + "d0": "Estado", + "d1": "Em revisão", + "d2": "SUCESSO", + "d3": "Falha", + "d4": "Veja Mais", + "d5": "Apresentado com sucesso, sob revisão", + "d6": "Editar", + "d7": "Adicionar a", + "d8": "Endereço", + "d9": "Por favor, Digite Ou Cole o endereço", + "e0": "Observações", + "e1": "Por favor, insira seus comentários", + "e2": "Por favor, preencha o endereço", + "e3": "Por favor, preencha as observações", + "e4": "Operação BEM sucedida", + "e5": "Cobrir dinheiro", + "e6": "Digitalizar o código QR acima para obter o endereço de carregamento", + "e7": "Endereço de envio", + "e8": "Número de moedas cobradas", + "e9": "Por favor, introduza o montante Da moeda cobrada", + "f0": "Este endereço é o SEU último endereço de recarga. Quando o sistema receber a recarga, será automaticamente gravado.", + "f1": "A transfer ência Precisa de ser confirmada por toda a rede blockchain. Quando chegar à confirmação Da rede {num} o SEU {nome} será automaticamente depositado Na conta.", + "f2": "Quando UMA rede é confirmada, o SEU", + "f3": "Por favor, envie apenas {nome} para este endereço. Enviar outra moeda digital para este endereço irá causar perda Permanente.", + "f4": "Registo de carga", + "f5": "Por favor, use a rede do {name} para enviar." + }, + "auth": { + "a0": "Autenticação Da identidade", + "a1": "Autenticação do Nome verdadeiro", + "a2": "Não certificado", + "a3": "Certificado", + "a4": "Certificação avançada", + "a5": "Em revisão", + "a6": "Autenticação falhou", + "a7": "Nacionalidade", + "a8": "Por favor, escolha SUA nacionalidade.", + "a9": "Nome verdadeiro", + "b0": "Por favor, Digite SEU Nome verdadeiro", + "b1": "Número de identificação", + "b2": "Por favor, inserir número de ID", + "b3": "Confirmar", + "b4": "Certificação BEM sucedida", + "b5": "Por favor, envie a foto Da Frente do SEU cartão de identificação", + "b6": "Por favor, carregue a parte de trás do certificado", + "b7": "Por favor, envie a SUA foto de identificação portátil", + "b8": "Certifique-se de que a foto está limpa SEM Marca de água e o Corpo superior está intacto", + "b9": "O tamanho do arquivo é Muito Grande e não Pode exceder", + "c0": "Erro do Tipo de arquivo", + "c1": "Envio BEM sucedido", + "c2": "Por favor, envie a foto Na parte de trás do certificado", + "c3": "Por favor, envie a foto Da Frente do SEU cartão de identificação", + "c4": "Carregar com sucesso, por favor aguarde a auditoria", + "d0": "Data de nascimento", + "d1": "Tipo de certificado", + "d2": "Identificação", + "d3": "Carta de condução", + "d4": "Passaporte", + "d5": "Endereço de residência", + "d6": "Por favor, insira o endereço de residência", + "d7": "cidade", + "d8": "Por favor, insira a cidade", + "d9": "Código postal", + "d10": "Por favor, digite o código postal", + "d11": "Número de telefone", + "d12": "Por favor, digite o número de telefone celular", + "d13": "Por favor, escolha", + "SelectAreaCode": "selecione o código de área" + }, + "exchange": { + "a0": "Moedas", + "a1": "Solicitar a compra", + "a2": "Contrato", + "a3": "Transacção", + "a4": "Delegação actual", + "a5": "Comissão histórica", + "a6": "Adicionado com SUCESSO", + "a7": "Cancelar com SUCESSO", + "a8": "Total Da emissão", + "a9": "Circulação total", + "b0": "Preço de emissão", + "b1": "Tempo de emissão", + "b2": "Endereço de Papel Branco", + "b3": "Endereço Oficial Do site", + "b4": "Breve introdução", + "b5": "Comprar", + "b6": "Vender", + "b7": "Preço Da Comissão", + "b8": "Tipo", + "b9": "Negociação DOS limites de preços", + "c0": "Transacção de Mercado", + "c1": "Fechado", + "c2": "Total", + "c3": "Compra", + "c4": "Vender fora", + "c5": "Número", + "c6": "Fechar Ao Melhor preço de Mercado", + "c7": "Preço total", + "c8": "Quantidade disponível", + "c9": "Valor Bruto", + "d0": "Assine aqui.", + "d1": "Mapa de compartilhamento de tempo", + "d2": "Preço", + "d3": "Último negócio", + "d4": "Tempo", + "d5": "Direcção", + "d6": "Preço FIXO", + "d7": "Preço de Mercado", + "d8": "Por favor, indique o preço.", + "d9": "Por favor, quantidade de Entrada", + "e0": "Por favor, indique o preço total", + "e1": "SUCESSO do checkout", + "e2": "Preço médio", + "e3": "Maior", + "e4": "Mínimo", + "e5": "Montante", + "e6": "Ordem.", + "e7": "Informação monetária", + "e8": "Minuto", + "e9": "Hora", + "f0": "Dia", + "f1": "Semana", + "f2": "Mês", + "f3": "Preço de compra", + "f4": "Preço de Venda", + "f5": "Transacção monetária", + "f6": "Digite as palavras-chave de pesquisa", + "f7": "Negociar para", + "f8": "Preço Mais recente", + "f9": "Pra CIMA e pra baixo", + "g0": "Opcional", + "g1": "Minha comissão", + "g2": "Revogação Da atribuição", + "g3": "Operação", + "g4": "Revogar", + "g5": "Cancelar a delegação actual", + "g6": "Cancelado com SUCESSO" + }, + "option": { + "a0": "Opção", + "a1": "Entrega à distância", + "a2": "Veja Mais", + "a3": "Ser barbudo", + "a4": "Taxa de Retorno", + "a5": "Compra", + "a6": "Muitos", + "a7": "Vazio", + "a8": "Atual", + "a9": "Próxima edição", + "b0": "Ver plana", + "b1": "Escolha do aumento de preços", + "b2": "Taxa de Retorno", + "b3": "Quantidade de compra", + "b4": "Por favor, quantidade de Entrada", + "b5": "Balanço", + "b6": "Receitas previstas", + "b7": "Compre agora.", + "b8": "Aumento", + "b9": "Plana", + "c0": "Queda", + "c1": "Compra BEM sucedida", + "c2": "Detalhes", + "c3": "Número de ordem", + "c4": "Preço de Abertura", + "c5": "Preço de encerramento", + "c6": "Tempo de compra", + "c7": "Quantidade de compra", + "c8": "Tipo de compra", + "c9": "Estado", + "d0": "Resultado final", + "d1": "Quantidade de liquidação", + "d2": "Tempo de entrega", + "d3": "Veja Mais", + "d4": "Opção de compra", + "d5": "Esperando PELA entrega", + "d6": "Minha entrega.", + "d7": "Registro de entrega", + "d8": "Minuto", + "d9": "Hora", + "e0": "Dia", + "e1": "Semana", + "e2": "Mês", + "e3": "Direcção", + "e4": "Pra CIMA e pra baixo" + }, + "purchase": { + "a0": "Preço de emissão", + "a1": "Moeda de subscrição", + "a2": "Tempo online esperado", + "a3": "Hora de início Da assinatura", + "a4": "Hora de Fechar", + "a5": "Solicitar a compra", + "a6": "Selecione por favor a moeda de assinatura", + "a7": "Quantidade de compra", + "a8": "Por favor, introduza a quantidade", + "a9": "Inteiro", + "b0": "Aplicar imediatamente", + "b1": "Ciclo de subscrição", + "b2": "Projecto a aquecer", + "b3": "Iniciar assinatura", + "b4": "Assinatura fechada", + "b5": "Resultados publicitários", + "b6": "Detalhes do projecto", + "b7": "Utilização ou não", + "b8": "Compra", + "b9": "Compra BEM sucedida" + }, + "reg": { + "a0": "Registo móvel", + "a1": "Registo por correio", + "a2": "Telefone celular", + "a3": "Por favor, insira o número de telefone móvel", + "a4": "Caixa postal", + "a5": "Por favor, Digite o SEU número de e-mail", + "a6": "Código de verificação", + "a7": "Digite o código de verificação", + "a8": "Senha", + "a9": "Por favor insira UMA senha", + "b0": "Confirmar senha", + "b1": "Por favor, confirme a senha", + "b2": "Referências", + "b3": "Por favor, indique o recomendado", + "b4": "Opcional", + "b5": "Você concordou.", + "b6": "Contrato de utilizador", + "b7": "E Aprender sobre nós", + "b8": "Acordo de privacidade", + "b9": "Registar", + "c0": "Número de conta existente", + "c1": "Assine agora.", + "c2": "Por favor Leia e Concorde com o acordo.", + "c3": "Por favor, preencha o SEU número de telemóvel", + "c4": "Por favor, preencha o número de e-mail", + "c5": "Login FOI BEM sucedido", + "c6": "Código de convite (obrigatório)", + "c7": "Por favor preencha o código do convite" + }, + "safe": { + "a0": "Desagregação", + "a1": "Vinculativo", + "a2": "Caixa postal", + "a3": "Número de e- mail", + "a4": "Por favor, Digite o SEU número de e-mail", + "a5": "Código de verificação por correio", + "a6": "Digite o código de verificação", + "a7": "Código de verificação", + "a8": "Sem SUCESSO", + "a9": "Ligação BEM sucedida", + "b0": "Esqueça a senha de login", + "b1": "Número Da conta", + "b2": "Por favor insira seu endereço de e-mail", + "b3": "Nova senha", + "b4": "Por favor, insira UMA Nova senha", + "b5": "Confirmar senha", + "b6": "Por favor, confirme a senha", + "b7": "Confirmar modificação", + "b8": "Por favor, insira o telefone celular correto ou número de e-mail", + "b9": "Verificador do Google", + "c0": "Como fazê-lo: Baixar e abrir o verificador do Google, digitalizar o código QR abaixo ou manualmente introduzir a chave secreta para adicionar o símbolo de verificação", + "c1": "Copiar Tecla", + "c2": "Eu mantive minha chave corretamente. Se EU a perder, ELA não será recuperada", + "c3": "Próximo Passo", + "c4": "Código de verificação SMS", + "c5": "Google captcha", + "c6": "Confirmar ligação", + "c7": "Centro de Segurança", + "c8": "Senha de login", + "c9": "Modificar", + "d0": "Configurado", + "d1": "Código de transação", + "d2": "Telefone celular", + "d3": "Modificado com SUCESSO", + "d4": "Número de telemóvel", + "d5": "Por favor, insira o número de telefone móvel", + "d6": "Por favor introduza o código de verificação SMS", + "d7": "Fechar", + "d8": "Abre", + "d9": "Verificação", + "e0": "Mensagem curta", + "e1": "Fechado com SUCESSO", + "e2": "Abrir com SUCESSO", + "e3": "Confirmar", + "e4": "Definir com SUCESSO" + }, + "transfer": { + "a0": "Registo de transferências", + "a1": "SUCESSO", + "a2": "Número", + "a3": "Direcção", + "a4": "Activos de conta", + "a5": "Conta de contrato", + "a6": "Conta de nivelamento", + "a7": "Conta financeira", + "a8": "Transfer ência", + "a9": "De", + "b0": "A", + "b1": "Moeda de transferência", + "b2": "Balanço", + "b3": "Inteiro", + "b4": "Transferido" + }, + "notice": { + "a0": "Detalhes", + "a1": "Notificação de mensagens", + "a2": "Aviso", + "a3": "Notícias" + }, + "invite": { + "a0": "Desfrutar do desconto comercial e convidar amigos", + "a1": "Parceiro", + "a2": "Desfrutar do desconto comercial", + "a3": "Utilizadores comuns", + "a4": "Minha identidade.", + "a5": "Aproveite a SUA identidade.", + "a6": "Meu código de convite", + "a7": "Copiar código QR do convite", + "a8": "Copiar link de convite", + "a9": "Minha promoção", + "b0": "Número total de promoção", + "b1": "Pessoas", + "b2": "Total do rendimento equivalente", + "b3": "Registo de promoção", + "b4": "Convite Directo", + "b5": "Registo Da Comissão devolvida", + "b6": "Grau", + "b7": "Configuração do nível", + "b8": "Condições de promoção", + "b9": "Interesse de divisão", + "c0": "Apelido?", + "c1": "Número de Promotores", + "c2": "Conversão DOS rendimentos", + "c3": "Registro de convite", + "c4": "Registo Da Comissão devolvida", + "c5": "Descrição DOS interesses de classe", + "c6": "Grau", + "c7": "Direitos e interesses", + "c8": "Explicar", + "c9": "Os MEUS direitos e interesses" + }, + "help": { + "a0": "Detalhes", + "a1": "Universidade", + "a2": "Classificação", + "a3": "" + }, + "login": { + "a0": "Telefone celular ou número de e-mail", + "a1": "Por favor, insira telefone celular ou número de e-mail", + "a2": "Senha", + "a3": "Por favor insira UMA senha", + "a4": "Assine aqui.", + "a5": "Esqueça a senha.", + "a6": "Sem conta", + "a7": "Registre-se agora.", + "a8": "Telefone celular", + "a9": "Caixa postal", + "b0": "Completo" + }, + "contract": { + "a0": "Abrir um celeiro para fornecer alívio", + "a1": "Posição", + "a2": "Confiar", + "a3": "História", + "a4": "Transacção contratual", + "a5": "Abertura BEM sucedida", + "a6": "Tipo de transacção", + "a7": "Fechado", + "a8": "Montante total atribuído", + "a9": "Preço médio de transacção", + "b0": "Preço Da Comissão", + "b1": "Obrigações", + "b2": "Taxa de serviço", + "b3": "Estado", + "b4": "Operação", + "b5": "Cancelar a ordem", + "b6": "Rescindido", + "b7": "Indefinido", + "b8": "Transacção parcial", + "b9": "Tudo fechado.", + "c0": "Kaiduo.", + "c1": "Ping-kong.", + "c2": "Abrir ar", + "c3": "Pinto.", + "c4": "Recordação", + "c5": "Cancelar a ordem actual", + "c6": "Cancelado com SUCESSO", + "c7": "Resultado e perda", + "c8": "Partilha", + "c9": "Detalhes Da atribuição", + "d0": "Não existem dados disponíveis", + "d1": "Preço", + "d2": "Número", + "d3": "Hora Da transacção", + "d4": "Direitos DOS utilizadores", + "d5": "Lucros e Perdas não realizados", + "d6": "Taxa de Risco", + "d7": "Preço de Mercado", + "d8": "Zhang.", + "d9": "Profissão do depósito", + "e0": "Bullish.", + "e1": "Pode abrir Mais", + "e2": "Bearish.", + "e3": "Pode abrir vazio", + "e4": "Disponível", + "e5": "Transfer ência", + "e6": "Taxa de capital", + "e7": "Resolução Da distância", + "e8": "Muitos", + "e9": "Vazio", + "f0": "Transfer ência de fundos", + "f1": "Calculadora", + "f2": "Sobre o contrato", + "f3": "Fundo de protecção DOS Riscos", + "f4": "História DOS custos de capital", + "f5": "Atribuição geral", + "f6": "Ordem de Mercado", + "f7": "É Baseado em", + "f8": "O preço de", + "f9": "Abertura de alavancagem Dupla", + "g0": "Kaiduo.", + "g1": "Abrir ar", + "g2": "Comissão BEM sucedida", + "g3": "Mostrar apenas o contrato atual", + "g4": "Mantendo", + "g5": "Confiar", + "g6": "Preço médio de Abertura", + "g7": "Preço de referência de liquidação", + "g8": "Estimativa Da paridade Forte", + "g9": "Rendimentos liquidados", + "h0": "Taxa de Retorno", + "h1": "Parar o lucro", + "h2": "Parar a perda", + "h3": "Fechar UMA posição", + "h4": "O preço de Mercado é Plano", + "h5": "Parar o lucro e parar a perda", + "h6": "Plana", + "h7": "Por favor, Digite o preço final", + "h8": "Preço FIXO", + "h9": "Por favor, indique a quantidade de fecho", + "i0": "Mantendo", + "i1": "Preço médio de Abertura", + "i2": "Preço de transacção Mais recente", + "i3": "Por favor, indique o preço.", + "i4": "Parar de Ganhar preço gatilho", + "i5": "Preço de Mercado", + "i6": "Quando a operação estiver concluída, o lucro e a perda serão estimados", + "i7": "Parar preço de desencadeamento Da perda", + "i8": "A Comissão de cessação Da perda será desencadeada Quando a operação estiver concluída, e OS resultados são esperados após a transacção", + "i9": "Determinar", + "j0": "Fechamento BEM sucedido", + "j1": "É o preço de Mercado Plano", + "j2": "Tudo Plano", + "j3": "SUCESSO", + "j4": "Definir com SUCESSO", + "j5": "Não há correspondência para cálculo inteligente", + "j6": "Fazer", + "j7": "Taxa de fecho", + "j8": "Plataforma digital de negociação de ativos", + "j9": "Quando {name1} se encontrar {Name2} {name3} Na Estrada Da subida de fogo", + "k0": "Preço de Abertura", + "k1": "Preço Mais recente", + "k2": "Digitalizar o código para Aprender Mais", + "k3": "Liquidação DOS lucros e Perdas", + "k4": "A Imagem FOI Salva localmente", + "k5": "Imagem falhou", + "k6": "Imagem de imprensa longa", + "k7": "Um clique plana", + "k8": "Um clique para trás", + "k9": "É tudo Plano", + "l0": "Todos iguais, SUCESSO", + "l1": "Uma Tecla reversa", + "l2": "Sucesso inverso", + "l3": "Ping-kong.", + "l4": "Pinto." + }, + "otc": { + "a0": "Publicidade", + "a1": "Ordem", + "a2": "Moeda de transacção", + "a3": "Minha ordem.", + "a4": "Meu anúncio", + "a5": "Compra", + "a6": "Vender", + "a7": "Total", + "a8": "Excedente", + "a9": "Limite", + "b0": "Preço unitário", + "b1": "Método de pagamento", + "b2": "Operação", + "b3": "Total", + "b4": "Por favor, escolha o método de pagamento", + "b5": "Por favor, quantidade de Entrada", + "b6": "Fazer UMA encomenda", + "b7": "Alipay.", + "b8": "Conversa-Molhada", + "b9": "Cartão bancário", + "c0": "SUCESSO do checkout", + "c1": "Estado", + "c2": "Número de publicidade", + "c3": "Preço total", + "c4": "Número", + "c5": "Tempo de libertação", + "c6": "Na prateleira.", + "c7": "Rescindido", + "c8": "No comércio", + "c9": "Completo", + "d0": "Recordação", + "d1": "É o anúncio atual removido", + "d2": "Determinar", + "d3": "Cancelar", + "d4": "Cancelado com SUCESSO", + "d5": "Conta de moeda legal", + "d6": "Congelados", + "d7": "Número Da conta paga", + "d8": "Por favor, Digite o número Da conta", + "d9": "Nome completo", + "e0": "Por favor, Digite SEU nome.", + "e1": "Código de pagamento", + "e2": "Vinculativo", + "e3": "Conta de Wechat", + "e4": "Nome do Banco", + "e5": "Indique o Nome do Banco", + "e6": "Filial de Abertura Da conta", + "e7": "Por favor, insira o Ramo de Abertura Da conta", + "e8": "Número do cartão bancário", + "e9": "Por favor, inserir número do cartão bancário", + "f0": "Editado com SUCESSO", + "f1": "Adicionado com SUCESSO", + "f2": "Vender fora", + "f3": "Compra", + "f4": "Detalhes Da ordem", + "f5": "Número de ordem", + "f6": "Número Da conta", + "f7": "Banco de depósito", + "f8": "Tempo restante", + "f9": "Ramo", + "g0": "Segundo", + "g1": "Enviar talão de pagamento", + "g2": "Confirmar o pagamento", + "g3": "Anulação Da encomenda", + "g4": "Confirmar recibo", + "g5": "Não recebido", + "g6": "Cancelar a ordem actual", + "g7": "Ordem anulada", + "g8": "Confirmar pagamento atual", + "g9": "Operação BEM sucedida", + "h0": "Após confirmar a cobrança, OS ativos serão vendidos e transferidos automaticamente", + "h1": "Após confirmar que o pagamento não FOI recebido, a ordem entrará automaticamente no modo de Recurso", + "h2": "Ordem de Venda", + "h3": "Ordem de compra", + "h4": "Ordem de compra publicitária", + "h5": "Ordem de Venda publicitária", + "h6": "Tempo", + "h7": "Detalhes", + "h8": "Inteiro", + "h9": "Fechado", + "i0": "A Pagar", + "i1": "A confirmar", + "i2": "Sob queixa", + "i3": "Tipos de publicidade", + "i4": "Selecione o Tipo de transação", + "i5": "Selecione moeda de transação", + "i6": "Preço", + "i7": "Por favor, indique o preço.", + "i8": "Preço mínimo", + "i9": "Por favor, indique o preço Mais baixo", + "j0": "Preço Mais elevado", + "j1": "Por favor, indique o preço Mais Alto", + "j2": "Observações", + "j3": "Por favor, insira seus comentários", + "j4": "Libertação", + "j5": "Publicado com SUCESSO", + "j6": "Método de pagamento", + "j7": "Quantidade mínima", + "j8": "Quantidade máxima", + "j9": "Por favor, Digite o volume mínimo de transações", + "k0": "Por favor, Digite o volume máximo de negociação" + }, + "first": { + "a0": "Ir para o Nome real", + "a1": "Sobre nós", + "a2": "Bem-vindos.", + "a3": "Parar a determinação do lucro e parar a perda", + "a4": "Comércio a preços Mais Recentes", + "a5": "Manter posição", + "a6": "Gestão Da ordem", + "a7": "Toda a confiança", + "a8": "Registos históricos", + "a9": "Múltiplos", + "b0": "Tem certeza que quer fazer logon?", + "b1": "Assinar ou registar", + "b2": "Olá, bem-vindo ao CATYcoin.", + "b3": "Montante", + "b4": "índice de Pontos", + "b5": "Índice de contratos", + "b6": "Suportar métodos de compra múltiplos", + "b7": "Compra rápida de dinheiro", + "b8": "Sustentável", + "b9": "A área actual ainda não está aberta.", + "c0": "Compra", + "c1": "Vender fora", + "c2": "Tempo", + "c3": "Preço total", + "c4": "Número", + "c5": "Preço de marcação", + "c6": "Activos fechados", + "c7": "Volume" + }, + "recharge": { + "a0": "Trocar moeda", + "a1": "*Mudança de endereço só Pode receber", + "a2": "Se você recarregar seus ativos EM outras moedas, você não será Capaz de recuperá-los!", + "a3": "O Erc20 é recomendado para recolha", + "a4": "Copiar endereço", + "a5": "*Por favor, certifique-se de que o endereço e informação estão corretos antes Da transfer ência!Uma Vez transferido, é irrevogável!", + "a6": "Por favor regenerar" + }, + "currency": { + "a0": "Transacção monetária legal", + "a1": "Eu gostaria de comprá-lo.", + "a2": "Eu Quero vender.", + "a3": "Um clique para comprar moedas", + "a4": "Um clique para vender moedas", + "a5": "Compra por quantidade", + "a6": "Compra por montante", + "a7": "Por favor, indique a quantidade de compra", + "a8": "Por favor, Digite o montante de compra", + "a9": "Por favor, indique a quantidade para Venda", + "b0": "Por favor, Digite o montante Da Venda", + "b1": "Preço unitário", + "b2": "0 Manutenção Da compra", + "b3": "0 Venda por encomenda", + "b4": "Balanço disponível insuficiente", + "b5": "Por favor, complete primeiro a certificação avançada.", + "b6": "De autenticação", + "b7": "Confirmar compra", + "b8": "Confirmar Venda" + }, + "cxiNewText": { + "a0": "10 melhores", + "a1": "5 milhões+", + "a2": "< 0.10%", + "a3": "200+", + "a4": "Classificação Global", + "a5": "Os usuários confiam em nós", + "a6": "Taxas ultrabaixas", + "a7": "Países", + "a21": "Ganhar renda imediatamente", + "a22": "Crie um portfólio pessoal de criptomoedas", + "a23": "Compre, negocie e mantenha mais de 100 criptomoedas", + "a24": "Recarregue a conta", + "a25": "Inscreva-se por e-mail", + "a38": "Transações abertas a qualquer hora, em qualquer lugar.", + "a39": "Comece a negociar com segurança e conveniência a qualquer momento através do nosso APP e página da web", + "a41": "Uma plataforma confiável de negociação de criptomoedas", + "a42": "Fique a par das últimas novidades através da nossa App e página web.", + "a43": "Fundos de ativos de segurança do usuário", + "a44": "Armazenamos 10% de todas as taxas de transação em fundos de ativos seguros para fornecer proteção parcial aos fundos do usuário", + "a45": "Controle de Acesso Personalizado", + "a46": "O controle de acesso personalizado restringe o acesso a dispositivos e endereços de contas pessoais, para que os usuários não tenham preocupações.", + "a47": "Criptografia de dados avançada", + "a48": "Os dados de transações pessoais são protegidos por criptografia de ponta a ponta e somente a pessoa pode acessar as informações pessoais.", + "a57": "Clique para ir", + "a71": "Guia do Iniciante ", + "a72": "Inicie o aprendizado de negociação de moeda digital imediatamente ", + "a77": "Como comprar moeda digital ", + "a78": "Como vender moeda digital ", + "a79": "Como negociar moedas digitais", + "a80": "Mercado", + "a81": "Tendência de mercado 24 horas", + "a82": "Adicione fundos de criptomoeda à sua carteira e comece a negociar instantaneamente" + }, + "homeNewText": { + "aa1": "Portão de criptomoeda", + "aa2": "Negociação segura, rápida e fácil em mais de 100 criptomoedas", + "aa3": "Cadastre-se por e-mail", + "aa4": "Comece a negociar agora", + "aa5": "tendência de mercado", + "aa6": "Cotação Expressa de Ativos Digitais", + "aa7": "Moeda", + "bb1": "Preço mais recente (USD)", + "bb2": "Aumento de 24h", + "bb3": "Volume de negociação em 24 horas", + "bb4": "Troca de criptomoedas para todos", + "bb5": "Comece a negociar aqui e experimente uma jornada melhor com criptomoedas", + "bb6": "pessoal", + "bb7": "Uma troca de criptomoedas para todos. A plataforma de negociação líder mais confiável com uma ampla variedade de moedas", + "cc1": "negócios", + "cc2": "Construído para empresas e instituições. Fornecendo soluções criptográficas para investidores institucionais e empresas", + "cc3": "Desenvolvedor", + "cc4": "Construído para desenvolvedores, para que desenvolvedores construam as ferramentas e APIs do futuro da web3", + "cc6": "Digitalize o código QR", + "cc7": "Baixe o aplicativo Android/IOS", + "dd1": "Seguro e estável com zero acidentes", + "dd2": "Múltiplas estratégias de segurança e garantia de 100% de reserva garantem que nenhum incidente de segurança ocorreu desde a sua criação.", + "dd3": "Negocie ativos criptográficos de forma simples e conveniente", + "dd4": "Em CATYcoin, os produtos são fáceis de entender, o processo de transação é conveniente e a plataforma completa de serviços de ativos blockchain", + "dd5": "Derivados", + "dd6": "Você pode negociar contratos em mais de 100 criptomoedas com alavancagem de até 150x e obter lucros elevados", + "ee1": "Suporte a vários terminais", + "ee2": "Negocie ativos digitais a qualquer hora, em qualquer lugar", + "ee3": "Suporta uma ampla variedade de tipos de ativos, com todas as informações monetárias disponíveis", + "ee4": "Entenda rapidamente o processo de negociação de ativos digitais", + "ee5": "Comece sua jornada de criptografia", + "ee6": "Verificação gráfica", + "ee7": "Verificação gráfica", + "dd1": "Verificação bem-sucedida", + "dd2": "falha na verificação", + "dd3": "Por favor, complete a verificação de segurança", + "dd4": "Deslize o controle deslizante para completar o quebra-cabeça", + + "hh0": "O futuro do dinheiro está aqui", + "hh1": "Procurando boas oportunidades de negociação", + "hh2": "Seguro, rápido e fácil de negociar mais de 100 criptomoedas", + "hh3": "Experimente nossa troca de criptomoedas agora", + "hh4": "Inicie rapidamente sua jornada de negociação", + "hh5": "Registrar conta {nome}", + "hh6": "Registrar", + "hh7": "Explore nossos produtos e serviços aqui", + "hh8": "Segurança não é pouca coisa. Para proteger a segurança de seus ativos e informações, faremos esforços infinitos", + "hh9": "Em estoque", + "hh10": "Negocie criptomoedas com ferramentas abrangentes.", + "hh11": "Derivativos", + "hh12": "Negocie contratos com a melhor exchange de criptomoedas do mundo.", + "hh13": "Robô de Negociação", + "hh14": "Ganhe lucros passivos sem monitorar o mercado.", + "hh15": "Comprar moedas", + "hh16": "Compre criptomoedas com um clique.", + "hh17": "{nem} ganhar moedas", + "hh18": "Ganhe uma renda estável através do investimento com gestores de ativos profissionais.", + "hh19": "Alavancagem de negociação", + "hh20": "Pegue emprestado, negocie e pague, aproveite seus ativos com negociação de margem.", + "hh21": "Sua troca de criptomoedas confiável e segura", + "hh22": "Armazenamento seguro de ativos", + "hh23": "Nossos sistemas líderes de criptografia e armazenamento garantem que seus ativos estejam sempre seguros e confidenciais.", + "hh24": "Forte segurança da conta", + "hh25": "Aderimos aos mais altos padrões de segurança e implementamos as mais rigorosas medidas de segurança para garantir a segurança da sua conta.", + "hh26": "Plataforma confiável", + "hh27": "Temos uma base de design segura para garantir rápida detecção e resposta a qualquer ataque cibernético.", + "hh28": "Prova de Reserva de Ativos—Transparência de Ativos", + "hh29": "Proof of Reserve (PoR) é um método amplamente utilizado para comprovar a custódia de ativos blockchain. Isso significa que {name} tem fundos que cobrem todos os ativos de usuários em nossos livros.", + "hh30": "A negociação pode ser feita a qualquer hora, em qualquer lugar", + "hh31": "Seja APP ou WEB, você pode iniciar sua transação rapidamente", + "hh32": "Comece sua jornada com a moeda digital agora", + "hh33": "Registre-se agora", + "hh34": "Somos o lugar mais confiável para os investidores comprarem, venderem e gerenciarem criptomoedas", + "hh35": "Registro via e-mail", + "hh36": "Perguntas frequentes", + "hh41": "CATYcoin, negocie a qualquer hora, em qualquer lugar", + "hh42": "Negocie agora", + "hh43": "Digitalize o código QR para baixar CATYcoin APP", + "hh37": "Küresel Sıralama", + "hh38": "kullanıcılar bize güveniyor", + "hh39": "Ultra Düşük Ücretler", + "hh40": "Ülkeler" + } +} \ No newline at end of file diff --git a/i18n/lang/spa.json b/i18n/lang/spa.json new file mode 100644 index 0000000..18d57a8 --- /dev/null +++ b/i18n/lang/spa.json @@ -0,0 +1,932 @@ +{ + "common": { + "D": "Día", + "M": "Mes", + "Y": "Año", + "add": "Añadir", + "address": "Dirección", + "all": "Todos", + "amout": "Cantidad", + "cancel": "Cancelar", + "check": "Auditoría", + "code": "Código de verificación", + "confirm": "Determinar", + "date": "Fecha", + "detail": "Detalles", + "email": "Buzón de correo", + "enter": "Por favor, introduzca", + "error": "Fracaso", + "getCode": "Obtener Código de verificación", + "h": "Tiempo", + "loadMore": "Cargar más", + "m": "Puntos", + "money": "Importe", + "more": "Más", + "notData": "Datos no disponibles", + "notMore": "No más", + "phone": "Teléfono móvil", + "requestError": "La red está ocupada.", + "s": "Segundos", + "save": "Guardar", + "select": "Por favor, elija", + "sendSuccess": "Enviar con éxito", + "sms": "SMS", + "submit": "Submission", + "success": "éxito", + "tips": "Consejos cálidos", + "total": "Total", + "type": "Tipo", + "copy": "Copiar", + "light": "Blanco", + "dark": "Negro", + "service": "Servicio al cliente", + "toDwon": "Ir a la página de descarga", + "a0": "Por favor, introduzca el Código de suscripción", + "a1": "Copia exitosa", + "a2": "Falló la replicación", + "a3": "Registro de pedidos", + "a4": "Importe pagado", + "a5": "Cantidad recibida", + "a6": "Número de cuenta", + "a7": "Cantidad de recarga", + "a8": "Comprobante de pago", + "a9": "Introduzca el número de recargas", + "b0": "Por favor, suba el certificado de pago", + "b1": "Comprar{amount}Pieza{name}Token disponible{rate}%Recompensa", + "b2": "Actividades de suscripción", + "b3": "Guardar con éxito", + "b4": "Fallo al guardar", + "b5": "Generar póster de invitación", + "b6": "Seleccionar póster", + "b8": "Hora de apertura", + "b9": "Hora de cierre", + "c0": "Cantidad mínima de recarga: {num}. Las recargas inferiores a la cantidad mínima no se cargarán y no se devolverán.", + "c1": "Retirada mínima", + "c2": "Número de versión", + "c3": "abierto", + "c4": "margen estimado", + "c5": "su orden de transferencia ha sido enviada con éxito, por favor espere pacientemente, los resultados de la transferencia serán notificados por SMS o correo electrónico. Por favor, preste atención a la recepción, si tiene alguna pregunta por favor póngase en contacto con el servicio al cliente a tiempo." + }, + "base": { + "a0": "Título", + "a1": "Return", + "a2": "Más", + "a3": "Cotización", + "a4": "Opciones", + "a5": "Zona de Daxin", + "a6": "Miembro", + "a7": "College", + "a8": "Par de transacciones", + "a9": "El último precio", + "b0": "Rango de fluctuación", + "b1": "Haga clic en inicio de sesión", + "b2": "Bienvenido a", + "b3": "Por favor, inicie sesión", + "b4": "Actualización", + "b5": "Monetización", + "b6": "Retirada de moneda", + "b7": "Popularización", + "b8": "Comisiones deducibles", + "b9": "Disponible", + "c0": "Comprar", + "c1": "Mi Comisión", + "c2": "Autenticación de la identidad", + "c3": "Centro de Seguridad", + "c4": "Notificación de mensajes", + "c5": "Dirección de la moneda", + "c6": "Configuración", + "c7": "Auto - Elección", + "c8": "Añadir con éxito", + "c9": "Cancelación exitosa", + "d0": "Página principal", + "d1": "Comercio", + "d2": "Activos", + "d3": "Introduzca la palabra clave de búsqueda", + "d4": "Todos", + "d5": "Placa madre", + "d6": "Conversión total de activos", + "d7": "Cuenta de fondos", + "d8": "Remar", + "d9": "Buscar moneda", + "e0": "Ocultar", + "e1": "Saldo activo", + "e2": "Congelación", + "e3": "Conversión", + "e4": "Cuentas contractuales", + "e5": "Conversión de contratos", + "e6": "Grado minero", + "e7": "Minero", + "h1": "Factura", + "h2": "nombre" + }, + "accountSettings": { + "a0": "Configuración de la cuenta", + "a1": "Avatar", + "a2": "Apodo", + "a3": "Número de cuenta principal", + "a4": "Número de teléfono móvil", + "a5": "Desenganche", + "a6": "Binding", + "a7": "Unión del buzón", + "a8": "Cambiar cuenta", + "a9": "Iniciar sesión", + "b0": "Modificar apodos", + "b1": "Por favor, introduzca un apodo", + "b2": "Idioma", + "b3": "Información de contacto", + "b4": "Consulta de rutina", + "b5": "Servicio al cliente", + "b6": "Cooperación con los medios de comunicación", + "b7": "Si necesita ayuda, por favor póngase en contacto con nosotros." + }, + "assets": { + "a0": "Gestión de direcciones de monedas", + "a1": "La libreta de direcciones se puede utilizar para administrar sus direcciones comunes, sin necesidad de múltiples comprobaciones cuando se inicia la recolección de dinero a una dirección existente en la libreta de direcciones", + "a2": "Se admite la acuñación automática de monedas. Cuando se utiliza {name} para la acuñación de monedas, sólo se permite la acuñación de monedas a partir de direcciones existentes en la libreta de direcciones web", + "a3": "Borrar dirección", + "a4": "Añadir dirección", + "a5": "Seleccione la dirección a eliminar", + "a6": "Borrar la dirección seleccionada actualmente", + "a7": "Agua corriente", + "a8": "Total", + "a9": "Disponible", + "b0": "Congelación", + "b1": "Cuenta de fondos", + "b2": "Cuentas contractuales", + "b3": "Cuenta apalancada", + "b4": "Cuenta financiera", + "b5": "Introduzca la palabra clave de búsqueda", + "b6": "Retirada de moneda", + "b7": "Seleccione el tipo de cadena", + "b8": "Dirección de la moneda", + "b9": "Introduzca la dirección", + "c0": "Cantidad", + "c1": "Saldo", + "c2": "Por favor, introduzca la cantidad", + "c3": "Todos", + "c4": "Gastos de tramitación", + "c5": "Por favor, compruebe cuidadosamente e introduzca la dirección correcta de la cartera de monedas.", + "c6": "Enviar dinero digital no correspondiente a la dirección de la cartera puede causar pérdidas permanentes.", + "c7": "Los gastos de manipulación de la retirada de moneda se deducirán de la cantidad de retirada de moneda.", + "c8": "Registro de monedas", + "c9": "Tiempo", + "d0": "Estado", + "d1": "Auditoría en curso", + "d2": "éxito", + "d3": "Fracaso", + "d4": "Ver más", + "d5": "Submitted successfully, under review", + "d6": "Editar", + "d7": "Añadir", + "d8": "Dirección", + "d9": "Introduzca o pegue la dirección", + "e0": "Observaciones", + "e1": "Por favor, introduzca comentarios", + "e2": "Por favor, rellene la dirección", + "e3": "Por favor, rellene los comentarios", + "e4": "Operación exitosa", + "e5": "Monetización", + "e6": "Escanear el Código QR superior para obtener la dirección de llenado de moneda", + "e7": "Dirección de llenado de moneda", + "e8": "Cantidad de llenado", + "e9": "Introduzca el número de monedas rellenas", + "f0": "Esta dirección es su última dirección de recarga, que se registrará automáticamente cuando el sistema reciba recarga.", + "f1": "Las transferencias deben ser confirmadas por toda la red de blockchain, y su {nombre} se depositará automáticamente en la cuenta cuando llegue a {num} Network confirms.", + "f2": "Cuando se confirme su red", + "f3": "Por favor, envíe sólo {nombre} a esta dirección. Enviar otra moneda digital a esta dirección causará una pérdida permanente.", + "f4": "Registro de llenado de monedas", + "f5": "Utilice la red de {name} para enviar." + }, + "auth": { + "a0": "Autenticación de la identidad", + "a1": "Autenticación del nombre real", + "a2": "No autenticado", + "a3": "Certificado", + "a4": "Certificación avanzada", + "a5": "Auditoría en curso", + "a6": "Fallo de autenticación", + "a7": "Nacionalidad", + "a8": "Por favor, elija la nacionalidad", + "a9": "Nombre real", + "b0": "Introduzca el nombre real", + "b1": "Número de identificación", + "b2": "Por favor, introduzca el número de identificación", + "b3": "Confirmar", + "b4": "Autenticación exitosa", + "b5": "Por favor, suba la foto frontal del documento", + "b6": "Por favor, suba la parte posterior del documento", + "b7": "Por favor, suba su foto de identificación", + "b8": "Asegúrese de que la imagen es clara y sin marcas de agua y que la parte superior del cuerpo está completa.", + "b9": "El tamaño del documento es demasiado grande para exceder", + "c0": "Error de tipo de archivo", + "c1": "Subida exitosa", + "c2": "Por favor, suba la foto de atrás del documento.", + "c3": "Por favor, suba la foto frontal del documento.", + "c4": "Carga exitosa, por favor espere a ser auditada", + "d0": "Fecha de nacimiento", + "d1": "Tipo de documento", + "d2": "Documento de identidad", + "d3": "Licencia de conducir", + "d4": "Pasaporte", + "d5": "Dirección de residencia", + "d6": "Introduzca la dirección de residencia", + "d7": "Ciudad", + "d8": "Por favor, introduzca su ciudad", + "d9": "Código postal", + "d10": "Introduzca el código postal", + "d11": "Número de teléfono", + "d12": "Por favor, introduzca el número de teléfono", + "d13": "Por favor, elija", + "SelectAreaCode": "seleccionar código de área" + }, + "exchange": { + "a0": "Moneda", + "a1": "Suscripción", + "a2": "Contrato", + "a3": "Comercio", + "a4": "Delegación actual", + "a5": "Delegación histórica", + "a6": "Añadir con éxito", + "a7": "Cancelación exitosa", + "a8": "Total de emisiones", + "a9": "Cantidad total de circulación", + "b0": "Precio de emisión", + "b1": "Tiempo de emisión", + "b2": "Dirección del Libro Blanco", + "b3": "Dirección web oficial", + "b4": "Introducción", + "b5": "Comprar", + "b6": "Vender", + "b7": "Precio confiado", + "b8": "Tipo", + "b9": "Comercio limitado", + "c0": "Comercio de mercado", + "c1": "Trato hecho", + "c2": "Total", + "c3": "Comprar", + "c4": "Vender", + "c5": "Cantidad", + "c6": "Negociar a los mejores precios de mercado", + "c7": "Precio total", + "c8": "Cantidad disponible", + "c9": "Valor total", + "d0": "Iniciar sesión", + "d1": "Gráfico de tiempo compartido", + "d2": "Precio", + "d3": "Última transacción", + "d4": "Tiempo", + "d5": "Dirección", + "d6": "Límite de precios", + "d7": "Precio de mercado", + "d8": "Por favor, introduzca el precio", + "d9": "Por favor, introduzca la cantidad", + "e0": "Por favor, introduzca el precio total", + "e1": "Pedido exitoso", + "e2": "Precio medio", + "e3": "Máximo", + "e4": "Mínimo", + "e5": "Cantidad", + "e6": "Oferta", + "e7": "Información monetaria", + "e8": "Minutos", + "e9": "Horas", + "f0": "Días", + "f1": "Semana", + "f2": "Mes", + "f3": "Precio de compra", + "f4": "Precio de venta", + "f5": "Transacciones monetarias", + "f6": "Introduzca la palabra clave de búsqueda", + "f7": "Par de transacciones", + "f8": "El último precio", + "f9": "Rango de fluctuación", + "g0": "Auto - Elección", + "g1": "Mi Comisión", + "g2": "Revocación de la delegación", + "g3": "Operaciones", + "g4": "Revocación", + "g5": "Revocar el delegado actual", + "g6": "Revocación exitosa" + }, + "option": { + "a0": "Opciones", + "a1": "Entrega a distancia", + "a2": "Ver más", + "a3": "Ver vacío", + "a4": "Tasa de rendimiento", + "a5": "Comprar", + "a6": "Muchos", + "a7": "Vacío", + "a8": "Actual", + "a9": "Próximo período", + "b0": "Ver plano", + "b1": "Opciones de aumento", + "b2": "Tasa de rendimiento", + "b3": "Cantidad comprada", + "b4": "Por favor, introduzca la cantidad", + "b5": "Saldo", + "b6": "Ingresos previstos", + "b7": "Comprar inmediatamente", + "b8": "Subir", + "b9": "Plano", + "c0": "Caer", + "c1": "Compra exitosa", + "c2": "Detalles", + "c3": "Número de orden", + "c4": "Precio de apertura", + "c5": "Precio de cierre", + "c6": "Tiempo de compra", + "c7": "Cantidad comprada", + "c8": "Tipo de compra", + "c9": "Estado", + "d0": "Resultados de la entrega", + "d1": "Cantidad de liquidación", + "d2": "Tiempo de entrega", + "d3": "Ver más", + "d4": "Opciones de compra", + "d5": "Esperando la entrega", + "d6": "Mi entrega", + "d7": "Registros de entrega", + "d8": "Minutos", + "d9": "Horas", + "e0": "Días", + "e1": "Semana", + "e2": "Mes", + "e3": "Dirección", + "e4": "Rango de fluctuación" + }, + "purchase": { + "a0": "Precio de emisión", + "a1": "Moneda de compra", + "a2": "Tiempo estimado en línea", + "a3": "Hora de inicio de la compra", + "a4": "Fin del tiempo de suscripción", + "a5": "Suscripción", + "a6": "Por favor, seleccione la moneda de compra", + "a7": "Cantidad comprada", + "a8": "Por favor, introduzca la cantidad de suscripción", + "a9": "Todos", + "b0": "Compra inmediata", + "b1": "Ciclo de suscripción", + "b2": "Precalentamiento del proyecto", + "b3": "Inicio de la compra", + "b4": "Cierre de la suscripción", + "b5": "Publicación de los resultados", + "b6": "Detalles del proyecto", + "b7": "Usar o no", + "b8": "Comprar", + "b9": "éxito de la compra" + }, + "reg": { + "a0": "Registro de teléfonos móviles", + "a1": "Registro de correo electrónico", + "a2": "Teléfono móvil", + "a3": "Por favor, introduzca el número de teléfono", + "a4": "Buzón de correo", + "a5": "Introduzca el número de buzón de correo", + "a6": "Código de verificación", + "a7": "Introduzca el Código de verificación", + "a8": "Contraseña", + "a9": "Introduzca la contraseña", + "b0": "Confirmar contraseña", + "b1": "Por favor, confirme la contraseña", + "b2": "Recomendador", + "b3": "Por favor, introduzca una referencia", + "b4": "Opcional", + "b5": "Usted está de acuerdo", + "b6": "Protocolo de usuario", + "b7": "Y entender nuestro", + "b8": "Protocolo de privacidad", + "b9": "Registro", + "c0": "Cuenta existente", + "c1": "Iniciar sesión ahora", + "c2": "Por favor, lea y acepte el Acuerdo", + "c3": "Por favor, rellene el número de teléfono móvil", + "c4": "Por favor, rellene el número de correo electrónico", + "c5": "Registro exitoso", + "c6": "Código de invitación (obligatorio)", + "c7": "Por favor complete el código de invitación" + }, + "safe": { + "a0": "Desenganche", + "a1": "Binding", + "a2": "Buzón de correo", + "a3": "Número de buzón", + "a4": "Introduzca el número de buzón de correo", + "a5": "Código de verificación del buzón de correo", + "a6": "Introduzca el Código de verificación", + "a7": "Código de verificación", + "a8": "Desenganche exitoso", + "a9": "Unión exitosa", + "b0": "Olvida la contraseña de inicio de sesión", + "b1": "Número de cuenta", + "b2": "Por favor ingresa tu dirección de correo electrónico", + "b3": "Nueva contraseña", + "b4": "Introduzca una nueva contraseña", + "b5": "Confirmar contraseña", + "b6": "Por favor, confirme la contraseña", + "b7": "Confirmar cambios", + "b8": "Introduzca el número correcto de teléfono o correo electrónico", + "b9": "Verificador de Google", + "c0": "Método de operación: descargar y abrir el verificador de Google, escanear el siguiente código QR o introducir manualmente la clave secreta para añadir el token de verificación", + "c1": "Clave de copia", + "c2": "He guardado la clave correctamente y no la recuperaré si la pierdo.", + "c3": "Siguiente paso", + "c4": "Código de verificación SMS", + "c5": "Código de verificación de Google", + "c6": "Confirmar Unión", + "c7": "Centro de Seguridad", + "c8": "Contraseña de inicio de sesión", + "c9": "Modificar", + "d0": "Configuración", + "d1": "Contraseña de transacción", + "d2": "Teléfono móvil", + "d3": "Modificación exitosa", + "d4": "Número de teléfono móvil", + "d5": "Por favor, introduzca el número de teléfono", + "d6": "Introduzca el Código de verificación SMS", + "d7": "Cerrar", + "d8": "Abrir", + "d9": "Verificación", + "e0": "SMS", + "e1": "Cierre exitoso", + "e2": "Apertura exitosa", + "e3": "Confirmar", + "e4": "Configuración exitosa" + }, + "transfer": { + "a0": "Registro de transferencias", + "a1": "éxito", + "a2": "Cantidad", + "a3": "Dirección", + "a4": "Activos de la cuenta", + "a5": "Cuentas contractuales", + "a6": "Cuenta apalancada", + "a7": "Cuenta financiera", + "a8": "Remar", + "a9": "De", + "b0": "A", + "b1": "Transferencia de divisas", + "b2": "Saldo", + "b3": "Todos", + "b4": "Tachado" + }, + "notice": { + "a0": "Detalles", + "a1": "Notificación de mensajes", + "a2": "Proclamación", + "a3": "Mensaje" + }, + "invite": { + "a0": "Honra a tu amigo con la invitación de la criada.", + "a1": "Partner", + "a2": "Reembolso de transacciones privilegiadas", + "a3": "Usuarios ordinarios", + "a4": "Mi identidad", + "a5": "Respeto de la identidad", + "a6": "Mi Código de invitación", + "a7": "Copiar Código QR invitado", + "a8": "Copiar enlace de invitación", + "a9": "Mi promoción", + "b0": "Número total de promotores", + "b1": "Persona", + "b2": "Conversión de los ingresos totales", + "b3": "Registro de extensión", + "b4": "Invitación directa", + "b5": "Registro de devolución", + "b6": "Grado", + "b7": "Configuración del nivel", + "b8": "Condiciones de ascenso", + "b9": "Participación en dividendos", + "c0": "Apodo", + "c1": "Número de promotores", + "c2": "Conversión de ingresos", + "c3": "Registro de invitaciones", + "c4": "Registro de devolución", + "c5": "Descripción de los derechos jerárquicos", + "c6": "Grado", + "c7": "Derechos e intereses", + "c8": "Descripción", + "c9": "Mis derechos" + }, + "help": { + "a0": "Detalles", + "a1": "College", + "a2": "Clasificación", + "a3": "" + }, + "login": { + "a0": "Número de teléfono móvil o correo electrónico", + "a1": "Por favor, introduzca su número de teléfono o correo electrónico", + "a2": "Contraseña", + "a3": "Introduzca la contraseña", + "a4": "Iniciar sesión", + "a5": "Olvida la contraseña.", + "a6": "Sin número de cuenta", + "a7": "Regístrese ahora", + "a8": "Teléfono móvil", + "a9": "Buzón de correo", + "b0": "Complete" + }, + "contract": { + "a0": "Apertura", + "a1": "Posición", + "a2": "Delegación", + "a3": "Historia", + "a4": "Transacciones contractuales", + "a5": "Apertura exitosa", + "a6": "Tipo de transacción", + "a7": "Trato hecho", + "a8": "Total confiado", + "a9": "Precio medio de transacción", + "b0": "Precio confiado", + "b1": "Margen", + "b2": "Gastos de tramitación", + "b3": "Estado", + "b4": "Operaciones", + "b5": "Retirada", + "b6": "Revocado", + "b7": "No cerrar", + "b8": "Trato parcial", + "b9": "Trato completo", + "c0": "Kaiduo", + "c1": "Plano", + "c2": "Abrir espacio", + "c3": "Pindo", + "c4": "Consejos cálidos", + "c5": "Cancelar el pedido actual", + "c6": "Revocación exitosa", + "c7": "Ganancias y pérdidas", + "c8": "Compartir", + "c9": "Detalles de la delegación", + "d0": "Datos no disponibles", + "d1": "Precio", + "d2": "Cantidad", + "d3": "Tiempo de transacción", + "d4": "Derechos de los usuarios", + "d5": "Ganancias y pérdidas no realizadas", + "d6": "Tasa de riesgo", + "d7": "Precio de mercado", + "d8": "Zhang.", + "d9": "Depósito de ocupación", + "e0": "Alcista", + "e1": "Apertura múltiple", + "e2": "Bajista", + "e3": "Vacío abierto", + "e4": "Disponible", + "e5": "Remar", + "e6": "Tasa de fondos", + "e7": "Liquidación a distancia", + "e8": "Muchos", + "e9": "Vacío", + "f0": "Transferencia de fondos", + "f1": "Calculadora", + "f2": "Sobre el contrato", + "f3": "Fondo de garantía de riesgos", + "f4": "Historial de gastos de capital", + "f5": "Delegación ordinaria", + "f6": "Comisión de mercado", + "f7": "Con o sin", + "f8": "Precio", + "f9": "Doble palanca", + "g0": "Kaiduo", + "g1": "Abrir espacio", + "g2": "Delegación exitosa", + "g3": "Mostrar sólo el contrato actual", + "g4": "Keping", + "g5": "Delegación", + "g6": "Precio medio de apertura", + "g7": "Precio de referencia de la liquidación", + "g8": "Estimación de las fuertes paridades", + "g9": "Ingresos liquidados", + "h0": "Tasa de rendimiento", + "h1": "Detener la ganancia", + "h2": "Stop loss", + "h3": "Cierre", + "h4": "Precio de mercado plano", + "h5": "Stop loss", + "h6": "Plano", + "h7": "Por favor, introduzca el precio de cierre", + "h8": "Límite de precios", + "h9": "Introduzca la cantidad de cierre", + "i0": "Keping", + "i1": "Precio medio de apertura", + "i2": "El último precio de transacción", + "i3": "Por favor, introduzca el precio", + "i4": "Precio de activación", + "i5": "Precio de mercado a", + "i6": "Se activará el mandato de detener las ganancias y se espera que las ganancias y pérdidas se produzcan después de la transacción.", + "i7": "Stop - loss trigger Price", + "i8": "La Comisión de STOP - loss se activará en el momento de la transacción, y se espera que las ganancias y pérdidas se produzcan después de la transacción.", + "i9": "Determinar", + "j0": "Cierre exitoso", + "j1": "Si el precio de mercado es plano", + "j2": "Todo plano", + "j3": "éxito", + "j4": "Configuración exitosa", + "j5": "Ingeniosa e incomparable", + "j6": "Hacer", + "j7": "Precio de cierre", + "j8": "Plataforma de negociación de activos digitales", + "j9": "Cuando {name 1} se encuentra con el camino ardiente de {name 2} {name 3}.", + "k0": "Precio de apertura", + "k1": "El último precio", + "k2": "Leer más", + "k3": "Liquidación de pérdidas y ganancias", + "k4": "Captura de pantalla exitosa, guardada localmente", + "k5": "Falló la captura de pantalla", + "k6": "Captura de pantalla de prensa larga", + "k7": "Plano de un botón", + "k8": "Reversión de un botón", + "k9": "Si un botón es plano", + "l0": "éxito total", + "l1": "Si un botón se invierte", + "l2": "éxito inverso", + "l3": "Plano", + "l4": "Pindo" + }, + "otc": { + "a0": "Anunciar", + "a1": "Orden", + "a2": "Moneda de transacción", + "a3": "Mi orden", + "a4": "Mi anuncio", + "a5": "Comprar", + "a6": "Vender", + "a7": "Total", + "a8": "Remanente", + "a9": "Límite", + "b0": "Precio unitario", + "b1": "Método de pago", + "b2": "Operaciones", + "b3": "Total", + "b4": "Por favor, seleccione el método de pago", + "b5": "Por favor, introduzca la cantidad", + "b6": "Ordenar", + "b7": "Alipay", + "b8": "Wechat", + "b9": "Tarjeta bancaria", + "c0": "Pedido exitoso", + "c1": "Estado", + "c2": "Número de anuncio", + "c3": "Precio total", + "c4": "Cantidad", + "c5": "Tiempo de publicación", + "c6": "Marco inferior", + "c7": "Revocado", + "c8": "En el comercio", + "c9": "Completado", + "d0": "Consejos cálidos", + "d1": "Anuncios actuales fuera del estante", + "d2": "Determinar", + "d3": "Cancelar", + "d4": "Revocación exitosa", + "d5": "Cuenta en moneda francesa", + "d6": "Congelación", + "d7": "Alipay Account", + "d8": "Por favor, introduzca el número de cuenta", + "d9": "Nombre", + "e0": "Por favor, introduzca un nombre", + "e1": "Código de pago", + "e2": "Binding", + "e3": "Cuenta Wechat", + "e4": "Nombre del Banco", + "e5": "Introduzca el nombre del Banco", + "e6": "Subdivisión de apertura de cuentas", + "e7": "Por favor, introduzca la sucursal de apertura de cuentas", + "e8": "Número de tarjeta bancaria", + "e9": "Introduzca el número de tarjeta bancaria", + "f0": "Edición exitosa", + "f1": "Añadir con éxito", + "f2": "Vender", + "f3": "Comprar", + "f4": "Detalles del pedido", + "f5": "Número de orden", + "f6": "Número de cuenta", + "f7": "Banco depositario", + "f8": "Tiempo restante", + "f9": "Puntos", + "g0": "Segundos", + "g1": "Cargar documentos de pago", + "g2": "Confirmación del pago", + "g3": "Cancelar orden", + "g4": "Acuse de recibo", + "g5": "Cuentas pendientes", + "g6": "Cancelar el pedido actual", + "g7": "Orden cancelada", + "g8": "Confirmar el pago actual", + "g9": "Operación exitosa", + "h0": "Los activos de venta se transferirán automáticamente después de la confirmación de la recogida", + "h1": "Una vez confirmada la falta de pago, la orden entrará automáticamente en la reclamación", + "h2": "Orden de venta", + "h3": "Orden de compra", + "h4": "Orden de compra publicitaria", + "h5": "Orden de venta publicitaria", + "h6": "Tiempo", + "h7": "Detalles", + "h8": "Todos", + "h9": "Cerrado", + "i0": "Pendiente de pago", + "i1": "Por confirmar", + "i2": "En apelación", + "i3": "Tipos de anuncios", + "i4": "Por favor, seleccione el tipo de transacción", + "i5": "Por favor, seleccione la moneda de transacción", + "i6": "Precio", + "i7": "Por favor, introduzca el precio", + "i8": "Precio más bajo", + "i9": "Por favor, introduzca el precio más bajo", + "j0": "Precio máximo", + "j1": "Por favor, introduzca el precio más alto", + "j2": "Observaciones", + "j3": "Por favor, introduzca comentarios", + "j4": "Publicación", + "j5": "Publicado con éxito", + "j6": "Método de recogida", + "j7": "Cantidad mínima", + "j8": "Cantidad máxima", + "j9": "Introduzca el volumen mínimo de negociación", + "k0": "Introduzca el volumen máximo de negociación" + }, + "first": { + "a0": "Ir al nombre real", + "a1": "Sobre nosotros", + "a2": "¡Bienvenido!", + "a3": "Configuración de la parada de interferencia", + "a4": "Comerciar a los últimos precios", + "a5": "Posición mantenida", + "a6": "Gestión de pedidos", + "a7": "Todos los delegados", + "a8": "Historia", + "a9": "Múltiplo", + "b0": "¿Estás seguro de que quieres desconectarte?", + "b1": "Iniciar sesión o registrarse", + "b2": "Hola, bienvenido a CATYcoin.", + "b3": "Cantidad", + "b4": "Índice al contado", + "b5": "Índice de contratos", + "b6": "Soporte para múltiples compras", + "b7": "Compra rápida de monedas", + "b8": "Perpetuidad", + "b9": "La zona actual no está abierta", + "c0": "Comprar", + "c1": "Vender", + "c2": "Tiempo", + "c3": "Precio total", + "c4": "Cantidad", + "c5": "Precio marcado", + "c6": "Bienes gravados", + "c7": "Volumen de Negocios" + }, + "recharge": { + "a0": "Cambiar moneda", + "a1": "Cambio de dirección sólo se puede recibir", + "a2": "Si se recargan otras monedas, no se recuperarán los activos.", + "a3": "Se recomienda el uso de erc20 para la recolección", + "a4": "Copiar dirección", + "a5": "Por favor, asegúrese de que la dirección y la información son correctas antes de la transferencia.¡Una vez fuera, irrevocable!", + "a6": "Por favor, reconstruir" + }, + "currency": { + "a0": "Transacciones en moneda francesa", + "a1": "Quiero comprar", + "a2": "Quiero vender", + "a3": "Un botón para comprar dinero", + "a4": "Un botón para vender dinero", + "a5": "Comprar por cantidad", + "a6": "Comprar por cantidad", + "a55": "Vender por quantidade", + "a66": "vender por quantidade", + "a7": "Por favor, introduzca la cantidad de compra", + "a8": "Introduzca la cantidad de compra", + "a9": "Por favor, introduzca la cantidad vendida", + "b0": "Por favor, introduzca el importe de la venta", + "b1": "Precio unitario", + "b2": "0 cargo de compra", + "b3": "0 gastos de venta", + "b4": "Saldo disponible insuficiente", + "b5": "Por favor complete la autenticación avanzada primero", + "b6": "Descertificación", + "b7": "Confirmar la compra", + "b8": "Confirmación de la venta" + }, + "cxiNewText": { + "a0": "10 mejores", + "a1": "5 millones+", + "a2": "< 0.10%", + "a3": "200+", + "a4": "Clasificación mundial", + "a5": "Los usuarios confían en nosotros", + "a6": "Tarifas ultra bajas", + "a7": "Países", + "a21": "Obtener ingresos inmediatamente", + "a22": "Crear una cartera personal de criptomonedas", + "a23": "Compre, intercambie y mantenga más de 100 criptomonedas", + "a24": "Recargar la cuenta", + "a25": "Registrarse por correo electrónico", + "a38": "Abrir transacciones en cualquier momento y en cualquier lugar.", + "a39": "Comience a operar de manera segura y conveniente en cualquier momento a través de nuestra aplicación y página web", + "a41": "Una plataforma de negociación de criptomonedas de confianza", + "a42": "Estamos comprometidos a garantizar la seguridad de los usuarios con estrictos protocolos y medidas técnicas líderes en la industria.", + "a43": "Fondos de activos de seguridad del usuario", + "a44": "Almacenamos el 10% de todas las tarifas de transacción en fondos de activos seguros para brindar protección parcial a los fondos de los usuarios", + "a45": "Control de acceso personalizado", + "a46": "El control de acceso personalizado restringe el acceso a dispositivos y direcciones de cuentas personales, para que los usuarios no tengan preocupaciones.", + "a47": "Cifrado de datos avanzado", + "a48": "Los datos de transacciones personales están protegidos por encriptación de extremo a extremo y solo la persona puede acceder a la información personal.", + "a57": "Haga clic para ir", + "a71": "Guía para principiantes ", + "a72": "Comience a aprender a operar con divisas digitales de inmediato ", + "a77": "Cómo comprar moneda digital ", + "a78": "Cómo vender moneda digital ", + "a79": "Cómo operar con monedas digitales", + "a80": "Mercado", + "a81": "Tendencia del mercado de 24 horas", + "a82": "Agregue fondos de criptomonedas a su billetera y comience a operar al instante" + + }, + "homeNewText": { + "aa1": "Puerta de criptomonedas", + "aa2": "Opere de forma segura, rápida y sencilla con más de 100 criptomonedas", + "aa3": "Regístrese por correo electrónico", + "aa4": "Comience a operar ahora", + "aa5": "tendencia del mercado", + "aa6": "Cotización Express de Activos Digitales", + "aa7": "Divisa", + "bb1": "Último precio (USD)", + "bb2": "Augmentation de 24h", + "bb3": "Volume des transactions sur 24 heures", + "bb4": "Volume des transactions sur 24 heures", + "bb5": "Comience a operar aquí y experimente un mejor viaje con las criptomonedas", + "bb6": "personal", + "bb7": "Un intercambio de criptomonedas para todos. La plataforma comercial líder más confiable con una amplia gama de monedas", + "cc1": "Negocio", + "cc2": "Creado para empresas e instituciones. Proporcionar soluciones criptográficas a inversores institucionales y empresas.", + "cc3": "Desarrollador", + "cc4": "Creado para desarrolladores, para que los desarrolladores creen las herramientas y API del futuro de web3", + "cc6": "Escanear código QR", + "cc7": "Descargar la aplicación Android/IOS", + "dd1": "Seguro y estable con cero accidentes.", + "dd2": "Múltiples estrategias de seguridad y una garantía de reserva del 100% garantizan que no se hayan producido incidentes de seguridad desde su creación.", + "dd3": "Opere con criptoactivos de forma sencilla y cómoda", + "dd4": "En CATYcoin, los productos son fáciles de entender, el proceso de transacción es conveniente y la plataforma integral de servicios de activos blockchain", + "dd5": "Derivados", + "dd6": "Puede negociar contratos en más de 100 criptomonedas con un apalancamiento de hasta 150x y obtener grandes ganancias", + "ee1": "Soporte para múltiples terminales", + "ee2": "Opere con activos digitales en cualquier momento y lugar", + "ee3": "Admite una amplia gama de tipos de activos, con toda la información monetaria disponible", + "ee4": "Comprenda rápidamente el proceso de negociación de activos digitales", + "ee5": "Comience su viaje de cifrado", + "ee6": "Verificación gráfica", + "ee7": "Verificación gráfica", + "dd1": "Verificación exitosa", + "dd2": "Fallo en la verificación", + "dd3": "Por favor completa la verificación de seguridad.", + "dd4": "Desliza el control deslizante para completar el rompecabezas.", + + "hh0": "El futuro del dinero está aquí", + "hh1": "Buscando buenas oportunidades comerciales", + "hh2": "Es seguro, rápido y fácil operar con más de 100 criptomonedas", + "hh3": "Pruebe nuestro intercambio de criptomonedas ahora", + "hh4": "Comience rápidamente su viaje comercial", + "hh5": "Registrar cuenta {nombre}", + "hh6": "Registrarse", + "hh7": "Explora nuestros productos y servicios aquí", + "hh8": "La seguridad no es un asunto menor. Para proteger la seguridad de sus activos e información, haremos infinitos esfuerzos", + "hh9": "En stock", + "hh10": "Negocia con criptomonedas con herramientas integrales.", + "hh11": "Derivados", + "hh12": "Contratos comerciales con el mejor intercambio de criptomonedas del mundo.", + "hh13": "Robot comercial", + "hh14": "Obtenga ganancias pasivas sin monitorear el mercado.", + "hh15": "Comprar monedas", + "hh16": "Compre criptomonedas con un clic.", + "hh17": "{nem} gana monedas", + "hh18": "Obtenga ingresos estables invirtiendo con administradores de activos profesionales.", + "hh19": "Negociación de apalancamiento", + "hh20": "Pedir prestado, negociar y pagar, aprovechar sus activos con operaciones de margen.", + "hh21": "Tu intercambio de criptomonedas seguro y confiable", + "hh22": "Almacenamiento seguro de activos", + "hh23": "Nuestros sistemas líderes de cifrado y almacenamiento garantizan que sus activos estén siempre seguros y confidenciales.", + "hh24": "Seguridad de cuenta sólida", + "hh25": "Nos adherimos a los más altos estándares de seguridad e implementamos las medidas de seguridad más estrictas para garantizar la seguridad de su cuenta.", + "hh26": "Plataforma confiable", + "hh27": "Contamos con una base de diseño segura para garantizar una rápida detección y respuesta a cualquier ciberataque.", + "hh28": "Prueba de reserva de activos: transparencia de activos", + "hh29": "La prueba de reserva (PoR) es un método ampliamente utilizado para demostrar la custodia de los activos de blockchain. Esto significa que {name} tiene fondos que cubren todos los activos de los usuarios en nuestros libros.", + "hh30": "El comercio se puede realizar en cualquier momento y en cualquier lugar", + "hh31": "Ya sea APP o WEB, puedes iniciar rápidamente tu transacción", + "hh32": "Comienza tu viaje con la moneda digital ahora", + "hh33": "Regístrese ahora", + "hh34": "Somos el lugar más confiable para que los inversores compren, vendan y administren criptomonedas", + "hh35": "Registrarse por correo electrónico", + "hh36": "Preguntas frecuentes", + "hh41": "CATYcoin, opera en cualquier momento y en cualquier lugar", + "hh42": "Negociar ahora", + "hh43": "Escanea el código QR para descargar CATYcoin APP", + "hh37": "Ranking Mundial", + "hh38": "los usuarios confían en nosotros", + "hh39": "Tarifas ultrabajas", + "hh40": "Países" + } +} \ No newline at end of file diff --git a/i18n/lang/swe.json b/i18n/lang/swe.json new file mode 100644 index 0000000..b47ed9c --- /dev/null +++ b/i18n/lang/swe.json @@ -0,0 +1,787 @@ +{ + "common": { + "D":"dag", + "M":"månad", + "Y":"år", + "add":"Lägg till", + "address":"adress", + "all":"Alla", + "amout":"nummer", + "cancel":"Avbryt", + "check":"att undersöka", + "code":"Kontrollkod", + "confirm":"bestämma", + "date":"datum", + "detail":"Uppgifter", + "email":"brevlåda", + "enter":"Mata in", + "error":"misslyckas", + "getCode":"Hämta verifieringskod", + "h":"Tid", + "loadMore":"Ladda mer", + "m":"filial", + "money":"summa pengar", + "more":"mer", + "notData":"Inga data tillgängliga", + "notMore":"Inte mer.", + "phone":"mobil telefon", + "requestError":"Nätverket är upptaget. Försök igen senare.", + "s":"andra", + "save":"Bevarande", + "select":"Välj", + "sendSuccess":"Skickat med lyckat resultat", + "sms":"kort meddelande", + "submit":"Skicka", + "success":"framgång", + "tips":"påminnelse", + "total":"Totalt", + "type":"Typ", + "copy":"kopia", + "light":"vitt", + "dark":"svart", + "service":"kundtjänst (kundtjänst)", + "toDwon":"Vill du gå till nerladdningssidan", + "a0":"Var vänlig och skriv in köpkoden", + "a1":"Kopiering lyckades", + "a2":"Kopiering misslyckades", + "a3":"Lager om inköp", + "a4":"Betalningsbelopp", + "a5":"Mottagen kvantitet", + "a6":"Kontots nummer", + "a7":"Kvantitet för påfyllning", + "a8":"Betalningsintyg", + "a9":"Ange laddningskapacitet", + "b0":"Vänligen ladda upp betalningskupongen", + "b1": "Inköp{amount}Delar{name}Tillgänglig symbol{rate}%Belöning", + "b2":"Verksamhet med prenumeration", + "b3":"Sparad med lyckat resultat", + "b4":"Spara misslyckades", + "b5":"Skapa inbjudan Poste", + "b6":"Välj Poste", + "b8":"Öppnings- tid", + "b9":"Avslutande tid", + "c0":"Minsta laddningsbelopp: {num}. Återladdning som understiger minimibeloppet kommer inte att postas och kan inte returneras", + "c1":"Minsta återköpsbelopp", + "c2":"Versionsnummer", + "c3":"Öppen", + "c4":"Beräknad marginal", + "c5": "Din överföringsorder har lämnats in med lyckat resultat, vänta tålmodigt, och överföringsresultatet kommer att anmälas med SMS eller e-post. Kontrollera det noga. Om du har några frågor, kontakta kundtjänsten i tid." + }, + "base": { + "a0":"Titel", + "a1":"retur", + "a2":"mer", + "a3":"notering", + "a4":"alternativ", + "a5":"Ny zon", + "a6":"medlem", + "a7":"college", + "a8":"Deal för", + "a9":"Senaste pris", + "b0":"Upp och ner", + "b1":"Klicka på inloggning", + "b2":"Välkommen till", + "b3":"Vänligen logga in", + "b4":"uppgradering", + "b5":"Ladda pengar", + "b6":"Dra tillbaka pengar", + "b7":"Förlängning", + "b8":"Avdrag av serviceavgift", + "b9":"tillgängligt", + "c0":"Inköp", + "c1":"Min provision", + "c2":"Identifiering av identitet", + "c3":"Säkerhetscentralen@ info: whatsthis", + "c4":"Meddelande meddelande", + "c5":"Adressen till återkallandet", + "c6":"Upprättad", + "c7":"Valfri", + "c8":"Bifogat med lyckat resultat", + "c9":"Avbryt med lyckat resultat", + "d0":"Hemsida@ info: whatsthis", + "d1":"transaktion", + "d2":"tillgångar", + "d3":"Ange söknyckelord", + "d4":"hela", + "d5":"en huvudbräda", + "d6":"Motsvarande tillgångar totalt", + "d7":"Eget kapital", + "d8":"Överföring", + "d9":"Valuta för sökning", + "e0":"gömma", + "e1":"Balanstillgångar", + "e2":"fryst", + "e3":"Likvärdig", + "e4":"Kontraktskonto", + "e5":"Omräkning av kontrakt", + "e6":"Klassificering av mineraler", + "e7":"gruvarbetare" + }, + "accountSettings": { + "a0":"Inställningar av konto", + "a1":"porträtt av huvudet", + "a2":"Smeknamn?", + "a3":"Huvudkontots nummer", + "a4":"Mobilnummer", + "a5":"Åtskillnad", + "a6":"bindemedel", + "a7":"Bindning till brevlådan", + "a8":"Byta konton", + "a9":"Logga ut", + "b0":"Ändra smeknamn", + "b1":"Ange ett smeknamn", + "b2":"språk" + }, + "assets": { + "a0":"Hantering av återtagandeadress", + "a1":"Adressboken kan användas för att hantera dina gemensamma adresser, och det finns inget behov av att utföra flera kontroller när pengar dras tillbaka från adresserna i adressboken.", + "a2":"Automatiskt penninguttag stöds. När {namn} används, tillåts bara adresser i adressboken att initiera valutauttag", + "a3":"Ta bort adress", + "a4":"Lägg till adress", + "a5":"Välj adressen att ta bort", + "a6":"Ta bort adressen som för närvarande är markerad", + "a7":"rinnande vatten", + "a8":"Totalt", + "a9":"tillgängligt", + "b0":"fryst", + "b1":"Eget kapital", + "b2":"Kontraktskonto", + "b3":"Konto för hävstång", + "b4":"Finansiell redovisning", + "b5":"Ange söknyckelord", + "b6":"Dra tillbaka pengar", + "b7":"Välj kedjetyp", + "b8":"Adressen till återkallandet", + "b9":"Skriv in adressen", + "c0":"nummer", + "c1":"balans", + "c2":"Ange mängd", + "c3":"hela", + "c4":"Laddning av tjänst", + "c5":"Kontrollera noggrant och skriv in rätt adress för plånboken", + "c6":"Att skicka icke avstämd digital valuta till plånboksadressen kommer att orsaka permanent förlust", + "c7":"Avgiften för hantering dras av från det belopp som dragits tillbaka", + "c8":"Registrering om återkallelse", + "c9":"tid", + "d0":"tillstånd", + "d1":"Under översyn", + "d2":"framgång", + "d3":"misslyckas", + "d4":"Se mer", + "d5":"Inlämnat med lyckat resultat, under översyn", + "d6":"redigera", + "d7":"Lägg till", + "d8":"adress", + "d9":"Skriv in eller klistra in adressen", + "e0":"Anmärkningar", + "e1":"Skriv in dina kommentarer", + "e2":"Fyll i adressen", + "e3":"Fyll i anmärkningarna", + "e4":"Operation lyckades", + "e5":"Ladda pengar", + "e6":"Skanna QR- koden ovan för att få laddningsadress", + "e7":"Charging- adress", + "e8":"Antal laddade mynt", + "e9":"Ange beloppet för den debiterade valutan", + "f0":"Den här adressen är din senaste uppladdningsadress. När systemet tar emot uppladdningen, registreras den automatiskt.", + "f1":"Överföringen måste bekräftas av hela blockeringsnätet. När du kommer till {num} nätverksbekräftelse, läggs ditt {namn} automatiskt ner på kontot.", + "f2":"När ett nätverk är bekräftat", + "f3":"Skicka bara {namn} till den här adressen. Att skicka annan digital valuta till den här adressen orsakar permanent förlust", + "f4":"Registrering av avgifter" + }, + "auth": { + "a0":"Identifiering av identitet", + "a1":"autentisering av verkligt namn", + "a2":"Ej certifierat", + "a3":"Certifierad", + "a4":"Avancerad certifiering", + "a5":"Under översyn", + "a6":"Behörighetskontroll misslyckades", + "a7":"Medborgarskap", + "a8":"Välj din nationalitet", + "a9":"Verkligt namn", + "b0":"Ange ditt riktiga namn", + "b1":"Identifieringsnummer@ info: whatsthis", + "b2":"Ange identifikationsnummer", + "b3":"Bekräfta", + "b4":"Certifiering lyckades", + "b5":"Var snäll och ladda upp det främre fotot på ditt ID-kort", + "b6":"Vänligen ladda upp baksidan av certifikatet", + "b7":"Var snäll och ladda upp ditt handhållna ID-foto", + "b8":"Se till att bilden är klar utan vattenstämpel och att överkroppen är intakt.", + "b9":"Filstorleken är för stor och kan inte överstiga", + "c0":"Fel i filtyp", + "c1":"Uppladdning lyckades", + "c2":"Vänligen ladda upp fotot på baksidan av certifikatet", + "c3":"Var snäll och ladda upp det främre fotot på ditt ID-kort", + "c4":"Uppladdning lyckades, vänta på revisionen" + }, + "exchange": { + "a0":"Mynt", + "a1":"Ansökan om köp", + "a2":"kontrakt", + "a3":"transaktion", + "a4":"Nuvarande delegering", + "a5":"Historisk kommission", + "a6":"Bifogat med lyckat resultat", + "a7":"Avbryt med lyckat resultat", + "a8":"Total emission", + "a9":"Total omsättning", + "b0":"Utfärdandepris", + "b1":"Tidpunkt för utfärdande", + "b2":"Adressen till vitpapper", + "b3":"Officiell webbplats", + "b4":"kort inledning", + "b5":"köpa", + "b6":"Sälj", + "b7":"Kommissionens pris", + "b8":"Typ", + "b9":"Handel med prisbegränsningar", + "c0":"Transaktioner på marknaden", + "c1":"Avslutat", + "c2":"Totalt", + "c3":"Inköp", + "c4":"Sälj ut", + "c5":"nummer", + "c6":"Nära till bästa marknadspris", + "c7":"Totalt pris", + "c8":"Tillgänglig kvantitet", + "c9":"bruttovärde", + "d0":"Skriv in dig", + "d1":"Tidsdelningsplan", + "d2":"Pris", + "d3":"Senaste affär", + "d4":"tid", + "d5":"riktning", + "d6":"fast pris", + "d7":"marknadspris (marknadspris)", + "d8":"Skriv in priset.", + "d9":"Ange mängd", + "e0":"Ange det totala priset", + "e1":"Kontroll av framgång", + "e2":"Genomsnittligt pris", + "e3":"högst", + "e4":"Lägst", + "e5":"belopp", + "e6":"Ordning", + "e7":"Information om valuta", + "e8":"minut", + "e9":"timme", + "f0":"dag", + "f1":"vecka", + "f2":"månad", + "f3":"Inköpspris", + "f4":"Försäljningspris (försäljningspris)", + "f5":"Valutatransaktion", + "f6":"Ange söknyckelord", + "f7":"Deal för", + "f8":"Senaste pris", + "f9":"Upp och ner", + "g0":"Valfri", + "g1":"Min provision", + "g2":"Återkallelse av tilldelning", + "g3":"Drift", + "g4":"återkalla", + "g5":"Avbryt nuvarande delegering", + "g6":"Lyckligt inställd" + }, + "option": { + "a0":"alternativ", + "a1":"Leverans från avstånd", + "a2":"Se mer", + "a3":"vara björn", + "a4":"Räntesats i", + "a5":"Inköp", + "a6":"många", + "a7":"tomt", + "a8":"aktuell", + "a9":"Nästa nummer", + "b0":"Se platt", + "b1":"Val av prisökning", + "b2":"Räntesats i", + "b3":"Inköpskvantitet", + "b4":"Ange mängd", + "b5":"balans", + "b6":"Förväntade inkomster", + "b7":"Köp nu", + "b8":"uppgång", + "b9":"platt", + "c0":"Fall", + "c1":"Framgångsrik köp", + "c2":"Uppgifter", + "c3":"ordningsnummer@ info: whatsthis", + "c4":"Inledande pris", + "c5":"Slutligt pris", + "c6":"Tid för köp", + "c7":"Inköpskvantitet", + "c8":"Typ av köp", + "c9":"tillstånd", + "d0":"Avslutande resultat", + "d1":"Kvantitet av avräkning", + "d2":"Leverans tid", + "d3":"Se mer", + "d4":"Köp option", + "d5":"Väntar på leverans", + "d6":"Min leverans.", + "d7":"Rapport om leverans", + "d8":"minut", + "d9":"timme", + "e0":"dag", + "e1":"vecka", + "e2":"månad", + "e3":"riktning", + "e4":"Upp och ner" + }, + "purchase": { + "a0":"Utfärdandepris", + "a1":"Valuta för prenumeration", + "a2":"Förväntad online-tid", + "a3":"Starttid för prenumeration", + "a4":"Avslutande tid", + "a5":"Ansökan om köp", + "a6":"Välj abonnentvaluta@ info: whatsthis", + "a7":"Inköpskvantitet", + "a8":"Ange mängden", + "a9":"hela", + "b0":"Verkställ omedelbart", + "b1":"cykel för prenumeration", + "b2":"Projekt uppvärmning", + "b3":"Starta abonnemang", + "b4":"Stäng abonnemang", + "b5":"Publicera resultat", + "b6":"Uppgifter om projektet", + "b7":"Används eller ej", + "b8":"Inköp", + "b9":"Framgångsrik köp" + }, + "reg": { + "a0":"Mobil registrering", + "a1":"E- postregistrering", + "a2":"mobil telefon", + "a3":"Mata in mobilnummer", + "a4":"brevlåda", + "a5":"Ange ditt e- postnummer", + "a6":"Kontrollkod", + "a7":"Ange kontrollkoden, tack.", + "a8":"lösenord", + "a9":"Ange ett lösenord", + "b0":"Bekräfta lösenord", + "b1":"Bekräfta lösenordet, tack.", + "b2":"Referenser", + "b3":"Ange den rekommenderade", + "b4":"Valfri", + "b5":"Du har gått med på", + "b6":"Användaravtal", + "b7":"Och lära sig om oss", + "b8":"Avtal om integritet", + "b9":"register", + "c0":"Befintligt kontonummer", + "c1":"Skriv in dig nu.", + "c2":"Läs och gå med på avtalet.", + "c3":"Fyll i ditt mobilnummer", + "c4":"Fyll i e- postnumret", + "c5":"inloggning lyckades" + }, + "safe": { + "a0":"Åtskillnad", + "a1":"bindemedel", + "a2":"brevlåda", + "a3":"E- post nr", + "a4":"Ange ditt e- postnummer", + "a5":"Kod för e-post-kontroll", + "a6":"Ange kontrollkoden, tack.", + "a7":"Kontrollkod", + "a8":"Avvecklingen lyckades", + "a9":"Bindningen lyckades", + "b0":"Glöm inloggninglösenord", + "b1":"Kontots nummer", + "b2":"Mata in mobiltelefon", + "b3":"Nytt lösenord", + "b4":"Ange ett nytt lösenord", + "b5":"Bekräfta lösenord", + "b6":"Bekräfta lösenordet, tack.", + "b7":"Bekräfta ändring", + "b8":"Ange rätt mobilnummer eller e- postnummer", + "b9":"Google- kontrollör", + "c0":"Hur man gör det: Ladda ner och öppna Googles kontrollör, skanna QR- koden nedan eller skriv in den hemliga nyckeln för att lägga till verifieringsdokumentet", + "c1":"Kopiera nyckel", + "c2":"Jag har behållit min nyckel och om jag förlorar den, kommer den inte att hämtas.", + "c3":"nästa steg", + "c4":"Kod för SMS-verifiering", + "c5":"Google captcha", + "c6":"Bekräfta bindning", + "c7":"Säkerhetscentralen@ info: whatsthis", + "c8":"Logga in lösenord", + "c9":"ändra", + "d0":"Upprättad", + "d1":"Transaktionskod", + "d2":"mobil telefon", + "d3":"Ändrad med lyckat resultat", + "d4":"Mobilnummer", + "d5":"Mata in mobilnummer", + "d6":"Ange SMS-verifikationskod", + "d7":"Stäng", + "d8":"öppen", + "d9":"Kontroll", + "e0":"kort meddelande", + "e1":"Stängt med lyckat resultat", + "e2":"Öppna med lyckat resultat", + "e3":"Bekräfta", + "e4":"Ställ in med lyckat resultat" + }, + "transfer": { + "a0":"Registret för överföring", + "a1":"framgång", + "a2":"nummer", + "a3":"riktning", + "a4":"Kontots tillgångar", + "a5":"Kontraktskonto", + "a6":"Konto för hävstång", + "a7":"Finansiell redovisning", + "a8":"Överföring", + "a9":"från", + "b0":"till", + "b1":"Valuta för överföring", + "b2":"balans", + "b3":"hela", + "b4":"Överförd" + }, + "notice": { + "a0":"Uppgifter", + "a1":"Meddelande meddelande", + "a2":"Meddelande", + "a3":"Nyheter" + }, + "invite": { + "a0":"Njut av rabatten och bjud vänner.", + "a1":"partner", + "a2":"Njut av rabatten", + "a3":"Vanliga användare", + "a4":"Min identitet", + "a5":"Njut av din identitet.", + "a6":"Min inbjudningskod", + "a7":"Kopiera inbjudan QR- kod", + "a8":"Kopiera inbjudan", + "a9":"Min befordran", + "b0":"Totalt antal säljfrämjande åtgärder", + "b1":"människor", + "b2":"Motsvarande totalinkomst", + "b3":"Journal för säljfrämjande åtgärder", + "b4":"Direkt inbjudan", + "b5":"Register över returnerad kommission", + "b6":"Grad", + "b7":"Fastställande av nivå", + "b8":"Villkor för befordran", + "b9":"Ränta på utdelning", + "c0":"Smeknamn?", + "c1":"Antal initiativtagare", + "c2":"Konvertering av intäkter", + "c3":"Inbjudan registrering", + "c4":"Register över returnerad kommission", + "c5":"Beskrivning av klassintressen", + "c6":"Grad", + "c7":"Rättigheter och intressen", + "c8":"förklara", + "c9":"Mina rättigheter och intressen" + }, + "help": { + "a0":"Uppgifter", + "a1":"college", + "a2":"Klassificering" + }, + "login": { + "a0":"Mobiltelefon- eller e-postnummer", + "a1":"Ange mobilnummer eller e- postnummer", + "a2":"lösenord", + "a3":"Ange ett lösenord", + "a4":"Skriv in dig", + "a5":"Glöm lösenordet.", + "a6":"Inget konto", + "a7":"Registrera nu", + "a8":"mobil telefon", + "a9":"brevlåda", + "b0":"Fullständigt" + }, + "contract": { + "a0":"öppna en Granar för att tillhandahålla lättnader", + "a1":"Position", + "a2":"anförtror", + "a3":"Historia", + "a4":"Kontraktstransaktion", + "a5":"Framgångsrik öppning", + "a6":"Typ av transaktion", + "a7":"Avslutat", + "a8":"Totalt anförtrott belopp", + "a9":"Genomsnittligt transaktionspris", + "b0":"Kommissionens pris", + "b1":"obligation", + "b2":"Laddning av tjänst", + "b3":"tillstånd", + "b4":"Drift", + "b5":"avbeställ ordern", + "b6":"återkallad", + "b7":"Obehandlad", + "b8":"Partiell transaktion", + "b9":"Alla stängda", + "c0":"Kaiduo", + "c1":"PingkongGenericName", + "c2":"Öppen luft", + "c3":"Pinto", + "c4":"påminnelse", + "c5":"Avbryt nuvarande ordning", + "c6":"Lyckligt inställd", + "c7":"Resultat och förluster", + "c8":"Andel", + "c9":"Uppgifter om tilldelning", + "d0":"Inga data tillgängliga", + "d1":"Pris", + "d2":"nummer", + "d3":"Transaktionstid", + "d4":"Användarnas rättigheter", + "d5":"Orealiserade resultat", + "d6":"Risknivå", + "d7":"marknadspris (marknadspris)", + "d8":"Zhang.", + "d9":"Yrke som deposition", + "e0":"Bullisk", + "e1":"Kan öppna mer", + "e2":"Björn", + "e3":"Kan öppnas tomt", + "e4":"tillgängligt", + "e5":"Överföring", + "e6":"Ränta på kapital", + "e7":"Avveckling på avstånd", + "e8":"många", + "e9":"tomt", + "f0":"Överföring av medel", + "f1":"Räknare", + "f2":"Om kontraktet", + "f3":"Riskskyddsfond", + "f4":"Historia för kapitalkostnader", + "f5":"Allmän tilldelning", + "f6":"Marknadens order", + "f7":"Är det baserat på", + "f8":"Priset för", + "f9":"Dubbel hävstångseffekt", + "g0":"Kaiduo", + "g1":"Öppen luft", + "g2":"Framgångsrik kommission", + "g3":"Visa bara aktuellt kontrakt", + "g4":"KeppningName", + "g5":"anförtror", + "g6":"Genomsnittligt öppningspris", + "g7":"Referenspris för avveckling", + "g8":"Beräknad stark paritet", + "g9":"Avvecklade inkomster", + "h0":"Räntesats i", + "h1":"Stoppa vinsten", + "h2":"Stoppa förlust", + "h3":"Stäng en position", + "h4":"Marknadens pris är platt", + "h5":"Stoppa vinsten och stoppa förlusten", + "h6":"platt", + "h7":"Ange slutpris för", + "h8":"fast pris", + "h9":"Ange den sista kvantiteten", + "i0":"KeppningName", + "i1":"Genomsnittligt öppningspris", + "i2":"Senaste transaktionspris", + "i3":"Skriv in priset.", + "i4":"Sluta tjäna trigger price", + "i5":"Marknadspris till", + "i6":"När transaktionen är slutförd kommer resultatet att uppskattas.", + "i7":"Stoppa förlust utlösande pris", + "i8":"Stop-förlust Kommissionen kommer att utlösas när transaktionen är slutförd och resultatet förväntas efter transaktionen", + "i9":"bestämma", + "j0":"Framgångsrik avslutning", + "j1":"Är marknadspriset jämnt", + "j2":"Helt platt", + "j3":"framgång", + "j4":"Ställ in med lyckat resultat", + "j5":"Det finns ingen match för smart beräkning", + "j6":"gör", + "j7":"nära ränta", + "j8":"Digital plattform för handel med tillgångar", + "j9":"När {name1} möter {Name2} {name3} på vägen till brinnande uppstigning", + "k0":"Inledande pris", + "k1":"Senaste pris", + "k2":"Läs kod för att lära sig mer", + "k3":"Avveckling av resultat", + "k4":"Skärmbilden har sparats lokalt", + "k5":"Skärmbild misslyckades", + "k6":"Skärmbild för långpress", + "k7":"Ett klick platt", + "k8":"Ett klick bakåt", + "k9":"Är allt platt?", + "l0":"Alla lika, framgång", + "l1":"En nyckel baklänges", + "l2":"Omvänd framgång", + "l3":"PingkongGenericName", + "l4":"Pinto" + }, + "otc": { + "a0":"Reklam", + "a1":"ordning", + "a2":"Transaktionsvaluta", + "a3":"Min order.", + "a4":"Min annons", + "a5":"Inköp", + "a6":"Sälj", + "a7":"Totalt", + "a8":"överskott", + "a9":"Gräns", + "b0":"Pris per enhet", + "b1":"Betalningsmetod", + "b2":"Drift", + "b3":"Totalt", + "b4":"Välj betalningsmetod för detta", + "b5":"Ange mängd", + "b6":"Placera en order", + "b7":"Alipay", + "b8":"WechatGenericName", + "b9":"bankkort@ info: whatsthis", + "c0":"Kontroll av framgång", + "c1":"tillstånd", + "c2":"Reklamnummer", + "c3":"Totalt pris", + "c4":"nummer", + "c5":"Tid för frisläppande", + "c6":"Från hyllan", + "c7":"återkallad", + "c8":"I handeln", + "c9":"Avslutat", + "d0":"påminnelse", + "d1":"Är den nuvarande annonsen borttagen", + "d2":"bestämma", + "d3":"Avbryt", + "d4":"Lyckligt inställd", + "d5":"Konto för laglig valuta", + "d6":"fryst", + "d7":"Kontantnummer för Alipay", + "d8":"Ange kontots nummer", + "d9":"Fullständigt namn", + "e0":"Ange ditt namn", + "e1":"Betalningskod", + "e2":"bindemedel", + "e3":"Wechat- konto", + "e4":"Bankens namn", + "e5":"Ange namn på banken", + "e6":"Filial som öppnar konto", + "e7":"Ange filialen för att öppna konto", + "e8":"Bankkortsnummer@ info: whatsthis", + "e9":"Mata in bankkortsnummer", + "f0":"Redigerad med lyckat resultat", + "f1":"Bifogat med lyckat resultat", + "f2":"Sälj ut", + "f3":"Inköp", + "f4":"Uppgifter om ordningen", + "f5":"ordningsnummer@ info: whatsthis", + "f6":"Kontots nummer", + "f7":"Banken för insättning", + "f8":"Återstående tid", + "f9":"filial", + "g0":"andra", + "g1":"Ladda upp betalningskupongen", + "g2":"bekräfta betalningen", + "g3":"annullering av order", + "g4":"Bekräfta mottagandet", + "g5":"Ej mottaget", + "g6":"Avbryt nuvarande ordning", + "g7":"Ordning avbruten", + "g8":"Bekräfta löpande betalning", + "g9":"Operation lyckades", + "h0":"Efter det att insamlingen har bekräftats kommer tillgångarna att säljas och överföras automatiskt.", + "h1":"Efter att ha bekräftat att betalningen inte har mottagits kommer beslutet automatiskt att inleda överklagandet", + "h2":"Försäljningsordning", + "h3":"Inköpsorder", + "h4":"Inköp av reklam", + "h5":"Försäljningsorder för annonsering", + "h6":"tid", + "h7":"Uppgifter", + "h8":"hela", + "h9":"Avslutat", + "i0":"Ska betalas", + "i1":"Ska bekräftas", + "i2":"I klagomål", + "i3":"Typ av reklam", + "i4":"Välj transaktionstyp", + "i5":"Välj transaktionsvaluta", + "i6":"Pris", + "i7":"Skriv in priset.", + "i8":"lägsta pris", + "i9":"Ange det lägsta priset", + "j0":"Högsta pris", + "j1":"Ange det högsta priset.", + "j2":"Anmärkningar", + "j3":"Skriv in dina kommentarer", + "j4":"frisläppande", + "j5":"Framgångsrik publicering", + "j6":"Betalningsmetod", + "j7":"Minsta kvantitet", + "j8":"Högsta kvantitet", + "j9":"Skriv in minsta transaktionsvolym", + "k0":"Ange den maximala handelsvolymen" + }, + "first":{ + "a0":"Gå till riktigt namn", + "a1":"Om oss", + "a2":"Välkomna!", + "a3":"Stoppa vinst och stoppa förlustinställning", + "a4":"Handel till aktuellt pris", + "a5":"Håll positionen", + "a6":"Hantering av order", + "a7":"Alla uppdrag", + "a8":"Historiska uppgifter", + "a9":"multipel", + "b0":"Är du säker på att du vill logga ut?", + "b1":"Skriv under eller registrera dig", + "b2":"Hej, välkommen till AMATAK", + "b3":"belopp", + "b4":"Spot index", + "b5":"Index för kontrakt", + "b6":"Stöd till flera inköpsmetoder", + "b7":"Snabbköp av pengar", + "b8":"hållbar", + "b9":"Det nuvarande området är inte öppet ännu", + "c0":"Inköp", + "c1":"Sälj ut", + "c2":"tid", + "c3":"Totalt pris", + "c4":"nummer", + "c5":"Markvärde för", + "c6":"Inlagda tillgångar", + "c7":"volym" + }, + "recharge":{ + "a0":"Byt valuta", + "a1":"*Adressändring kan bara tas emot", + "a2":"Om du laddar dina tillgångar i andra valutor, kommer du inte att kunna hämta dem!", + "a3":"Erc20 rekommenderas för insamling", + "a4":"Kopiera adress", + "a5":"Se till att adressen och informationen är korrekta före överföringen!När det väl har överförts är det oåterkalleligt!", + "a6":"Vänligen regenerera" + }, + "currency":{ + "a0":"Transaktioner i laglig valuta", + "a1":"Jag skulle vilja köpa den.", + "a2":"Jag vill sälja.", + "a3":"Köper mynt med ett klick", + "a4":"Ett klick mynt säljer", + "a5":"Inköp per kvantitet", + "a6":"Inköp per belopp", + "a55": "Försäljning per kvantitet", + "a66": "Sälj per belopp", + "a7":"Ange inköpskvantiteten i fråga", + "a8":"Skriv in inköpsbeloppet", + "a9":"Ange den kvantitet som är till salu", + "b0":"Skriv in försäljningsbeloppet", + "b1":"Pris per enhet", + "b2":"0 inköp av hanteringsavgift", + "b3":"0 Försäljning av provision", + "b4":"Otillräcklig tillgänglig balans", + "b5":"Fyll i avancerad certifiering först.", + "b6":"Verifiering av", + "b7":"Bekräfta köp", + "b8":"Bekräfta försäljning" + } +} \ No newline at end of file diff --git a/i18n/lang/tr.json b/i18n/lang/tr.json new file mode 100644 index 0000000..6f45c42 --- /dev/null +++ b/i18n/lang/tr.json @@ -0,0 +1,929 @@ +{ + "common": { + "D": "Gün", + "M": "Ay", + "Y": "Yıl", + "add": "Ekle", + "address": "Adres", + "all": "Hepsi", + "amout": "Tutar", + "cancel": "İptal", + "check": "Kontrol et", + "code": "Doğrulama Kodu", + "confirm": "Onayla", + "date": "Tarih", + "detail": "Ayrıntı", + "email": "Posta Kutusu", + "enter": "Lütfen girin", + "error": "Başarısız", + "getCode": "Doğrulama Kodunu Alın", + "h": "Saat", + "loadMore": "Daha Fazla Yükle", + "m": "dakika", + "money": "Tutar", + "more": "fazla", + "notData": "Geçici olarak veri yok", + "notMore": "Artık Yok", + "phone": " telefonu", + "requestError": "Ağ meşgul, lütfen daha sonra tekrar deneyin", + "s": "ikinci", + "save": "Kaydet", + "select": "Lütfen seçin", + "sendSuccess": "Başarıyla gönder", + "sms": "SMS", + "submit": " Gönder", + "success": "Başarı", + "tips": "Önemli İpuçları", + "total": "Toplam", + "type": "Tür", + "copy": "Kopyala", + "light": "Beyaz", + "dark": "siyah", + "service": "Müşteri servisi", + "toDwon": "İndirme sayfasına gitmek ister misiniz", + "a0": "Lütfen satın kodunu girin", + "a1": "Kopyalama başarılı oldu", + "a2": "kopyalama başarısız oldu", + "a3": "Kayıtlar alın", + "a4": "Ödeme miktarı", + "a5": "Kıymet alındı", + "a6": "hesap numarası", + "a7": "recharge quantity", + "a8": "ödeme verici", + "a9": "Lütfen yenilenme miktarını girin", + "b0": "Lütfen ödeme verici yükleyin", + "b1": "satın alın{amount}Parçalar{name}Token mevcut{rate}%Ödül", + "b2": "İmzalama etkinlikleri", + "b3": "Başarıyla kaydedildi", + "b4": "Kayıt başarısız", + "b5": "Davetiye posteri oluştur", + "b6": "Bir poster seçin", + "b8": "Açılış zamanı", + "b9": "Kapanış saati", + "c0": "Minimum yeniden yükleme tutarı: {num}, minimum tutardan daha az yükleme hesaba yansıtılmaz ve iade edilemez.", + "c1": "Minimal çekilme miktarı", + "c2": "Sürüm numarası", + "c3": "açılabilir", + "c4": "tahmin edilen margin", + "c5": "Taşıma emriniz başarıyla teslim edildi, lütfen sabırlı bekleyin ve aktarım sonuçları SMS veya e-posta tarafından bildirilecek. Lütfen dikkatli kontrol edin. Bir sorununuz varsa, lütfen müşteri hizmetine zamanında temas edin." + }, + "base": { + "a0": "Başlık", + "a1": "Geri Dön", + "a2": "Daha Fazla", + "a3": "Alıntılar", + "a4": "Seçenekler", + "a5": "Yeni yap", + "a6": "Üye", + "a7": "Kolej", + "a8": "İşlem Çifti", + "a9": "En Son Fiyat", + "b0": "Yüksel ve al", + "b1": "Giriş yapmak için tıklayın", + "b2": "Hoş Geldiniz", + "b3": "Lütfen giriş yapın", + "b4": "Yükselt", + "b5": "Şarj etmek", + "b6": "Anma", + "b7": "Promosyon", + "b8": "İşlem ücretini düşürün", + "b9": "Kullanılabilir", + "c0": "Satın Al", + "c1": "Komisyonum", + "c2": "Kimlik Doğrulama", + "c3": "Güvenlik Merkezi", + "c4": "Mesaj Bildirimi", + "c5": "Para Çekme Adresi", + "c6": "Ayarlar", + "c7": "İsteğe bağlı", + "c8": "Başarıyla eklendi", + "c9": "Başarıyla iptal edildi", + "d0": "Ana Sayfa", + "d1": "İşlem", + "d2": "Varlıklar", + "d3": "Lütfen arama anahtar kelimelerini girin", + "d4": "Tümü", + "d5": "Anakart", + "d6": "Dönüştürülen toplam varlıklar", + "d7": "Para Birimi Hesabı", + "d8": "Aktarım", + "d9": "Para birimi ara", + "e0": "Gizle", + "e1": "Bakiye Varlıkları", + "e2": "Dondur", + "e3": "Katlama", + "e4": "Kontrat Hesabı", + "e5": "Sözleşme dönüştürme", + "e6": "Madenci Seviyesi", + "e7": "Madenci", + "h1": "Bill", + "h2": "isim" + }, + "accountSettings": { + "a0": "Hesap Ayarları", + "a1": "Dikey", + "a2": "Takma ad", + "a3": "Ana Hesap", + "a4": "Cep Numarası", + "a5": "Çöz", + "a6": "Bağlama", + "a7": "Posta kutusu bağlama", + "a8": "Hesabı değiştir", + "a9": "Oturumu Kapat", + "b0": "Takma Adı Değiştir", + "b1": "Lütfen bir takma ad girin", + "b2": "Dil", + "b3": "İletişim bilgileri", + "b4": "Rutin danışma", + "b5": "müşteri servisi", + "b6": "medya işbirliği", + "b7": "Herhangi bir yardıma ihtiyacınız olursa lütfen bizimle iletişime geçin" + }, + "assets": { + "a0": "Para çekme adresi yönetimi", + "a1": "Adres defteri, sık kullandığınız adresleri yönetmek için kullanılabilir. Adres defterinde bulunan adreslerden para çekme işlemi başlatırken birden fazla doğrulama yapmaya gerek yoktur", + "a2": "Otomatik para çekme destekleniyor. Para çekmek için {name} kullanılırken, yalnızca web adres defterindeki adreslerin para çekme işlemini başlatmasına izin verilir", + "a3": "Adresi Sil", + "a4": "Adres Ekle", + "a5": "Lütfen silinecek adresi seçin", + "a6": "Seçili olan adresin silinip silinmeyeceği", + "a7": "Akan Su", + "a8": "Toplam", + "a9": "Kullanılabilir", + "b0": "Dondur", + "b1": "Finansman Hesabı", + "b2": "Kontrat Hesabı", + "b3": "Teminat Hesabı", + "b4": "Varlık Yönetimi Hesabı", + "b5": "Lütfen arama anahtar kelimelerini girin", + "b6": "Geri Çekilme", + "b7": "Lütfen zincir türünü seçin", + "b8": "Para Çekme Adresi", + "b9": "Lütfen adresi girin", + "c0": "Miktar", + "c1": "Bakiye", + "c2": "Lütfen miktarı girin", + "c3": "Tümü", + "c4": "İşlem Ücreti", + "c5": "Lütfen tekrar kontrol edin ve para çekmek için doğru cüzdan adresini girin.", + "c6": "M-cüzdan adresine karşılık gelmeyen dijital para biriminin gönderilmesi kalıcı kayba neden olur.", + "c7": "Para çekme ücretleri, para çekme tutarından düşülecektir.", + "c8": "Para Çekme Kaydı", + "c9": "Zaman", + "d0": "Durum", + "d1": "İnceleniyor", + "d2": "Başarılı", + "d3": "Başarısız", + "d4": "Daha fazlasını görün", + "d5": "Başarıyla gönderildi, inceleniyor", + "d6": "Düzenle", + "d7": "Ekle", + "d8": "Adres", + "d9": "Lütfen adresi girin veya yapıştırın", + "e0": "Açıklamalar", + "e1": "Lütfen bir not girin", + "e2": "Lütfen adresi yazınız", + "e3": "Lütfen açıklamaları doldurun", + "e4": "İşlem başarılı", + "e5": "Yeniden Şarj Et", + "e6": "Para yatırma adresini almak için yukarıdaki QR kodunu tarayın", + "e7": "bozuk para yatırma adresi", + "e8": "Yatırılan Tutar", + "e9": "Lütfen depozito tutarını girin", + "f0": "Bu adres, en son yeniden yükleme adresinizdir. Sistem yeniden yükleme aldığında, otomatik olarak hesaba aktarılacaktır.", + "f1": "Transferin tüm blok zinciri ağı tarafından onaylanması gerekiyor. {num} ağ onayına ulaştığında, {name} adınız otomatik olarak hesaba yatırılacaktır.", + "f2": "Bir ağ onaylandığında, sizinki", + "f3": "Lütfen bu adrese yalnızca {name} gönderin, bu adrese başka dijital para birimleri göndermek kalıcı kayba neden olur.", + "f4": "Token Para Yatırma Kaydı", + "f5": "Lütfen göndermek için {name} ağını kullanın." + }, + "auth": { + "a0": "Kimlik Doğrulama", + "a1": "Gerçek ad kimlik doğrulaması", + "a2": "Onaylanmamış", + "a3": "Kimliği Doğrulanmış", + "a4": "Gelişmiş Sertifikasyon", + "a5": "İnceleniyor", + "a6": "Kimlik doğrulama başarısız oldu", + "a7": "Milliyet", + "a8": "Lütfen uyruğu seçin", + "a9": "Gerçek ad", + "b0": "Lütfen gerçek adınızı girin", + "b1": "Sertifika Numarası", + "b2": "Lütfen kimlik numarasını girin", + "b3": "Onayla", + "b4": "Kimlik doğrulama başarılı", + "b5": "Lütfen kimliğin ön fotoğrafını yükleyin", + "b6": "Lütfen sertifikanın arkasını yükleyin", + "b7": "Lütfen elde tutulan bir kimlik fotoğrafı yükleyin", + "b8": "Fotoğrafın filigran olmadan net ve gövdenin üst kısmının sağlam olduğundan emin olun", + "b9": "Dosya boyutu çok büyük ve aşılmamalıdır", + "c0": "Dosya türü hatası", + "c1": "Başarıyla yüklendi", + "c2": "Lütfen kimliğinizin arka yüzünün bir fotoğrafını yükleyin", + "c3": "Lütfen kimliğinizin ön fotoğrafını yükleyin", + "c4": "Başarıyla yüklendi, lütfen inceleme için bekleyin", + "d0": "Doğum tarihi", + "d1": "Sertifika türü", + "d2": "Kimlik kartı", + "d3": "Ehliyet", + "d4": "Pasaport", + "d5": "Konut adresi", + "d6": "Lütfen ikamet adresini girin", + "d7": "Kent", + "d8": "Lütfen şehrinizi girin", + "d9": "Posta kodu", + "d10": "Lütfen posta kodunu girin", + "d11": "Telefon numarası", + "d12": "Lütfen telefon numarasını girin", + "d13": "Lütfen seç", + "SelectAreaCode": "alan kodunu seçin" + }, + "exchange": { + "a0": "Madeni Paralar", + "a1": "Abonelik", + "a2": "Sözleşme", + "a3": "İşlem", + "a4": "Mevcut Sipariş", + "a5": "Tarihi Komisyon", + "a6": "Başarıyla eklendi", + "a7": "Başarıyla iptal edildi", + "a8": "Toplam Verilen", + "a9": "Toplam Dolaşım", + "b0": "Düzenleme Fiyatı", + "b1": "Yayın zamanı", + "b2": "Beyaz Kağıt Adresi", + "b3": "Resmi web sitesi adresi", + "b4": "Giriş", + "b5": "Satın Al", + "b6": "Sat", + "b7": "Sipariş Fiyatı", + "b8": "Tür", + "b9": "Limit Fiyat Ticareti", + "c0": "Piyasa Ticareti", + "c1": "Tamamlandı", + "c2": "Toplam", + "c3": "Satın Al", + "c4": "Sat", + "c5": "Miktar", + "c6": "En iyi piyasa fiyatından sat", + "c7": "Toplam Fiyat", + "c8": "Kullanılabilir Miktar", + "c9": "Toplam Değer", + "d0": "Giriş", + "d1": "Zaman Paylaşımı Grafiği", + "d2": "Fiyat", + "d3": "En Son İşlem", + "d4": "Zaman", + "d5": "Yön", + "d6": "Limit Fiyatı", + "d7": "Piyasa Fiyatı", + "d8": "Lütfen fiyatı girin", + "d9": "Lütfen miktarı girin", + "e0": "Lütfen toplam fiyatı girin", + "e1": "Sipariş başarıyla verildi", + "e2": "Ortalama Fiyat", + "e3": "En Yüksek", + "e4": "En Düşük", + "e5": "Tutar", + "e6": "Sırala", + "e7": "Para Birimi Bilgileri", + "e8": "Dakika", + "e9": "Saat", + "f0": "gün", + "f1": "hafta", + "f2": "Ay", + "f3": "Alış Fiyatı", + "f4": "Satış Fiyatı", + "f5": "Döviz Ticareti", + "f6": "Lütfen arama anahtar kelimelerini girin", + "f7": "İşlem Çifti", + "f8": "En Son Fiyat", + "f9": "Yüksel ve al", + "g0": "İsteğe bağlı", + "g1": "Yetkim", + "g2": "Yetkilendirmeyi iptal et", + "g3": "İşlem", + "g4": "İptal", + "g5": "Mevcut siparişin iptal edilip edilmeyeceği", + "g6": "Başarıyla geri al" + }, + "option": { + "a0": "Seçenekler", + "a1": "Mesafeli teslimat", + "a2": "Daha fazlasını görün", + "a3": "boş görün", + "a4": "Verim", + "a5": "Satın Al", + "a6": "Çoklu", + "a7": "Boş", + "a8": "Güncel", + "a9": "Sonraki Sayı", + "b0": "Ping Görme", + "b1": "Seçimi artır", + "b2": "Verim", + "b3": "Satın Alma Miktarı", + "b4": "Lütfen miktarı girin", + "b5": "Bakiye", + "b6": "Tahmini Gelir", + "b7": "Şimdi Satın Alın", + "b8": "Arttır", + "b9": "Qiping", + "c0": "Güz", + "c1": "Başarılı satın alma", + "c2": "Ayrıntılar", + "c3": "Sipariş Numarası", + "c4": "Açılış Fiyatı", + "c5": "Kapanış Fiyatı", + "c6": "Satın Alma Süresi", + "c7": "Satın Alma Miktarı", + "c8": "Satın Alma Türü", + "c9": "Durum", + "d0": "Teslimat Sonucu", + "d1": "Yerleşim Miktarı", + "d2": "Teslim Süresi", + "d3": "Daha fazlasını görüntüle", + "d4": "Satın Alma Seçeneği", + "d5": "Teslimat bekleniyor", + "d6": "Teslimatım", + "d7": "Teslimat Kaydı", + "d8": "Dakika", + "d9": "Saat", + "e0": "gün", + "e1": "hafta", + "e2": "Ay", + "e3": "Yön", + "e4": "Yüksel ve al" + }, + "purchase": { + "a0": "Düzenleme Fiyatı", + "a1": "Abonelik Para Birimi", + "a2": "Çevrimiçi olma için tahmini süre", + "a3": "Satın alma için başlangıç ​​zamanı", + "a4": "Abonelik Süresinin Sonu", + "a5": "Abonelik", + "a6": "Lütfen satın alma para birimini seçin", + "a7": "Satın Alma Miktarı", + "a8": "Lütfen satın alma miktarını girin", + "a9": "Tümü", + "b0": "Şimdi abone olun", + "b1": "Abonelik Süresi", + "b2": "Proje ısınması", + "b3": "Satın almaya başlayın", + "b4": "Aboneliğin Sonu", + "b5": "Sonuçları Açıklayın", + "b6": "Proje Ayrıntıları", + "b7": "Kullanılıp kullanılmayacağı", + "b8": "Satın Al", + "b9": "Abonelik başarılı" + }, + "reg": { + "a0": "Mobil kayıt", + "a1": "Posta Kutusu Kaydı", + "a2": "Mobil", + "a3": "Lütfen telefon numaranızı girin", + "a4": "Posta Kutusu", + "a5": "Lütfen posta kutusu numarasını girin", + "a6": "Doğrulama Kodu", + "a7": "Lütfen doğrulama kodunu girin", + "a8": "Şifre", + "a9": "Lütfen bir şifre girin", + "b0": "Parolayı Onayla", + "b1": "Lütfen şifrenizi onaylayın", + "b2": "Önerilen kişi", + "b3": "Lütfen tavsiye edeni girin", + "b4": "İsteğe bağlı", + "b5": "Kabul ettiniz", + "b6": "Kullanıcı Sözleşmesi", + "b7": "ve bizimkini anlayın", + "b8": "Gizlilik Sözleşmesi", + "b9": "Kaydol", + "c0": "Zaten bir hesabınız var", + "c1": "Şimdi giriş yapın", + "c2": "Lütfen sözleşmeyi okuyup kabul edin", + "c3": "Lütfen telefon numarasını girin", + "c4": "Lütfen posta kutusu numarasını girin", + "c5": "Başarıyla kaydettirildi", + "c6": "Davetiye kodu (gerekli)", + "c7": "Lütfen davetiye kodunu giriniz" + }, + "safe": { + "a0": "Çöz", + "a1": "Bağlama", + "a2": "Posta Kutusu", + "a3": "Posta Kutusu Numarası", + "a4": "Lütfen posta kutusu numarasını girin", + "a5": "E-posta Doğrulama Kodu", + "a6": "Lütfen doğrulama kodunu girin", + "a7": "Doğrulama Kodu", + "a8": "Bağlantıyı başarıyla kaldır", + "a9": "Bağlama başarılı", + "b0": "Giriş şifrenizi unuttum", + "b1": "Hesap", + "b2": "Lütfen e-posta adresinizi girin", + "b3": "Yeni Parola", + "b4": "Lütfen yeni bir şifre girin", + "b5": "Parolayı Onayla", + "b6": "Lütfen şifrenizi onaylayın", + "b7": "Değişikliği Onayla", + "b8": "Lütfen doğru telefon veya e-posta numarasını girin", + "b9": "Google Authenticator", + "c0": "Nasıl yapılır: Google Authenticator'ı indirip açın, aşağıdaki QR kodunu tarayın veya bir doğrulama jetonu eklemek için gizli anahtarı manuel olarak girin", + "c1": "Anahtarı kopyala", + "c2": "Anahtarı düzgün bir şekilde depoladım ve kaybolursa geri alınmayacaktır", + "c3": "Sonraki", + "c4": "SMS doğrulama kodu", + "c5": "Google Doğrulama Kodu", + "c6": "Bağlamayı onayla", + "c7": "Güvenlik Merkezi", + "c8": "Giriş şifresini değiştir", + "c9": "Değiştir", + "d0": "Ayarlar", + "d1": "İşlem Şifresi", + "d2": "Mobil", + "d3": "Başarıyla değiştirildi", + "d4": "Cep Numarası", + "d5": "Lütfen telefon numaranızı girin", + "d6": "Lütfen SMS doğrulama kodunu girin", + "d7": "Kapat", + "d8": "Aç", + "d9": "Doğrula", + "e0": "SMS", + "e1": "Başarıyla kapatıldı", + "e2": "Başarıyla aç", + "e3": "Onayla", + "e4": "Başarıyla kurun" + }, + "transfer": { + "a0": "Kaydı Aktar", + "a1": "Başarılı", + "a2": "Miktar", + "a3": "Yön", + "a4": "Finansman Hesabı", + "a5": "Sözleşmeli Hesap", + "a6": "Teminat Hesabı", + "a7": "Varlık Yönetimi Hesabı", + "a8": "Aktarım", + "a9": "Kimden", + "b0": "Kime", + "b1": "Transfer Para Birimi", + "b2": "Bakiye", + "b3": "Tümü", + "b4": "Transferred" + }, + "notice": { + "a0": "Ayrıntılar", + "a1": "Mesaj Bildirimi", + "a2": "Duyuru", + "a3": "Mesaj" + }, + "invite": { + "a0": "Arkadaşlarını Davet Et", + "a1": "Ortak", + "a2": "Özel ticaret indirimi", + "a3": "Sıradan kullanıcı", + "a4": "Kimliğim", + "a5": "Özel Kimlik", + "a6": "Davet kodum", + "a7": "Davet QR kodunu kopyalayın", + "a8": "Davet bağlantısını kopyala", + "a9": "Promosyonum", + "b0": "Terfi edecek toplam kişi sayısı", + "b1": "Kişiler", + "b2": "Toplam gelir eşdeğeri", + "b3": "Promosyon Kaydı", + "b4": "Doğrudan davet", + "b5": "İndirim Kaydı", + "b6": "Seviye", + "b7": "Seviye Ayarı", + "b8": "Promosyon Koşulları", + "b9": "Temettü Hakları", + "c0": "takma", + "c1": "Promosyon Sayısı", + "c2": "Kazanç eşdeğeri", + "c3": "Davet Kaydı", + "c4": "İndirim Kaydı", + "c5": "Sınıf hakları açıklaması", + "c6": "Seviye", + "c7": "Eşitlik", + "c8": "Açıklama", + "c9": "Benim haklarım" + }, + "help": { + "a0": "Ayrıntılar", + "a1": "Kolej", + "a2": "Sınıflandırma", + "a3": "" + }, + "login": { + "a0": "Cep telefonu veya posta kutusu numarası", + "a1": "Lütfen telefon veya e-posta numaranızı girin", + "a2": "Şifre", + "a3": "Lütfen bir şifre girin", + "a4": "Giriş", + "a5": "Şifremi Unuttum", + "a6": "Hesap yok", + "a7": "Şimdi Kaydolun", + "a8": "Mobil", + "a9": "posta kutusu", + "b0": "Bitti" + }, + "contract": { + "a0": "Açık Pozisyon", + "a1": "Konum", + "a2": "Yetki", + "a3": "Geçmiş", + "a4": "Sözleşmeli İşlem", + "a5": "Başarıyla açıldı", + "a6": "İşlem Türü", + "a7": "Kapalı", + "a8": "Sipariş Toplamı", + "a9": "Ortalama İşlem Fiyatı", + "b0": "Sipariş Fiyatı", + "b1": "Marj", + "b2": "İşlem Ücreti", + "b3": "Durum", + "b4": "İşlem", + "b5": "Siparişi iptal et", + "b6": "İptal edildi", + "b7": "Satılmadı", + "b8": "Kısmi İşlem", + "b9": "Tam anlaşma", + "c0": "Uzun süre satın al", + "c1": "Kısa satın al", + "c2": "Açığa sat", + "c3": "Düz ve uzun sat", + "c4": "Sıcak Hatırlatma", + "c5": "Mevcut siparişin iptal edilip edilmeyeceği", + "c6": "Başarıyla geri al", + "c7": "Kar ve Zarar", + "c8": "Paylaş", + "c9": "Yetki Ayrıntıları", + "d0": "Henüz veri yok", + "d1": "Fiyat", + "d2": "Miktar", + "d3": "Anlaşma zamanı", + "d4": "Kullanıcı Hakları", + "d5": "Gerçekleşmemiş kar ve zarar", + "d6": "Risk Oranı", + "d7": "Piyasa Fiyatı", + "d8": "Zhang", + "d9": "Occupy Margin", + "e0": "yükseliş", + "e1": "Daha fazla açabilir", + "e2": "Ayı", + "e3": "Boş açılabilir", + "e4": "Kullanılabilir", + "e5": "Transfer", + "e6": "Para Oranı", + "e7": "Mesafe yerleşimi", + "e8": "Çoklu", + "e9": "Boş", + "f0": "Para Transferi", + "f1": "Hesap Makinesi", + "f2": "Sözleşme hakkında", + "f3": "Risk Koruma Fonu", + "f4": "Fon Gider Geçmişi", + "f5": "Olağan Komisyon", + "f6": "Piyasa Emri", + "f7": "Kullanılıp kullanılmayacağı", + "f8": "Fiyat", + "f9": "Çift kaldıraçla açık pozisyon", + "g0": "Çoklu Aç", + "g1": "Boş aç", + "g2": "Yetki başarılı", + "g3": "Yalnızca mevcut sözleşmeyi göster", + "g4": "Düzleştirilebilir", + "g5": "Yetkilendirilmiş Dondurma", + "g6": "Ortalama açılış fiyatı", + "g7": "Uzlaşma Taban Fiyatı", + "g8": "Tahmini Güçlü Parite", + "g9": "Yerleşik gelir", + "h0": "Verim", + "h1": "Kârı Durdur", + "h2": "Kaybı Durdur", + "h3": "Konumu Kapat", + "h4": "Piyasa fiyatı sabit", + "h5": "Kârı Durdur Zararı Durdur", + "h6": "Seviye", + "h7": "Lütfen kapanış fiyatını girin", + "h8": "Limit Fiyatı", + "h9": "Lütfen kapanış miktarını girin", + "i0": "Keping", + "i1": "Ortalama açılış fiyatı", + "i2": "En Son İşlem Fiyatı", + "i3": "Lütfen fiyatı girin", + "i4": "Kâr Tetikleyici Fiyatını Al", + "i5": "Piyasa fiyatı", + "i6": "Kâr al emri o anda tetiklenecek ve işlemden sonra kar ve zarar bekleniyor", + "i7": "Kaybı Durdur Tetikleme Fiyatı", + "i8": "Bir zarar durdurma emri o anda tetiklenecek ve işlemden sonra kar ve zarar bekleniyor", + "i9": "Tamam", + "j0": "Başarıyla kapatılan pozisyon", + "j1": "Piyasa fiyatının sabit olup olmadığı", + "j2": "Quan Ping", + "j3": "Başarılı", + "j4": "Kurulum başarılı", + "j5": "Sihirli hesaplama, eşsiz", + "j6": "Yap", + "j7": "Fiyatı kapat", + "j8": "Dijital varlık ticaret platformu", + "j9": "{name1}, {name2} ve {name3}'ü yükselişe giden ateşli yolla karşılaştığında", + "k0": "Açılış fiyatı", + "k1": "En Son Fiyat", + "k2": "Daha fazla bilgi edinmek için kodu tarayın", + "k3": "Yerleşim kar ve zararı", + "k4": "Ekran görüntüsü başarılı ve yerel olarak kaydedildi", + "k5": "Ekran görüntüsü başarısız oldu", + "k6": "Ekran görüntüsü almak için uzun basın", + "k7": "Tek tuşla tam tesviye", + "k8": "Tek tuşla ters", + "k9": "Tek tuşla tam seviyelendirme olsun", + "l0": "Tamamen başarılı", + "l1": "Tek tuşla tersine çevirmek", + "l2": "Ters başarı" + }, + "otc": { + "a0": "Bir reklam yayınlayın", + "a1": "Sipariş", + "a2": "Ticaret para birimi", + "a3": "Siparişim", + "a4": "Reklamlarım", + "a5": "Satın Al", + "a6": "İndirim", + "a7": "Toplam", + "a8": "Kalan", + "a9": "Sınırlı", + "b0": "Birim Fiyat", + "b1": "Ödeme Yöntemi", + "b2": "İşlem", + "b3": "Toplam", + "b4": "Lütfen bir ödeme yöntemi seçin", + "b5": "Lütfen miktarı girin", + "b6": "Sipariş verin", + "b7": "Alipay", + "b8": "WeChat", + "b9": "Banka Kartı", + "c0": "Sipariş başarıyla verildi", + "c1": "Durum", + "c2": "Reklam Numarası", + "c3": "Toplam Fiyat", + "c4": "Miktar", + "c5": "Yayın zamanı", + "c6": "Kaldır", + "c7": "İptal edildi", + "c8": "İşlemde", + "c9": "Tamamlandı", + "d0": "Sıcak Hatırlatma", + "d1": "Mevcut reklamın kaldırılıp kaldırılmayacağı", + "d2": "Tamam", + "d3": "İptal", + "d4": "Başarıyla geri al", + "d5": "Fiat para birimi hesabı", + "d6": "Dondur", + "d7": "Alipay Hesabı", + "d8": "Lütfen hesap numarasını girin", + "d9": "Ad", + "e0": "Lütfen adınızı girin", + "e1": "Ödeme Kodu", + "e2": "Bağlama", + "e3": "WeChat Hesabı", + "e4": "Banka Adı", + "e5": "Lütfen banka adını girin", + "e6": "Hesap Açma Şubesi", + "e7": "Lütfen hesap açma şubesini girin", + "e8": "Banka Kartı Numarası", + "e9": "Lütfen banka kartı numarasını girin", + "f0": "Başarıyla düzenlendi", + "f1": "Başarıyla eklendi", + "f2": "Sat", + "f3": "Satın Al", + "f4": "Sipariş Ayrıntıları", + "f5": "Sipariş Numarası", + "f6": "Hesap", + "f7": "Hesap Bankası", + "f8": "Kalan süre", + "f9": "Dakika", + "g0": "İkinci", + "g1": "Ödeme kuponu yükle", + "g2": "Ödemeyi onayla", + "g3": "Siparişi iptal et", + "g4": "Ödemeyi Onayla", + "g5": "Ödenmemiş hesap", + "g6": "Mevcut siparişin iptal edilip edilmeyeceği", + "g7": "Sipariş iptal edildi", + "g8": "Mevcut ödemeyi onaylayın", + "g9": "İşlem başarılı", + "h0": "Ödeme onaylandıktan sonra, listelenen varlıklar otomatik olarak aktarılacaktır", + "h1": "Ödemenin alınmadığını onayladıktan sonra, bu sipariş otomatik olarak itiraza girecektir", + "h2": "Satış Emri", + "h3": "Satın Alma Siparişi", + "h4": "Reklam Satın Alma Siparişi", + "h5": "Reklam Satış Siparişi", + "h6": "Zaman", + "h7": "Ayrıntılar", + "h8": "Tümü", + "h9": "Kapalı", + "i0": "Bekleyen Ödeme", + "i1": "Onaylanacak", + "i2": "Çekici", + "i3": "Reklam Türü", + "i4": "Lütfen işlem türünü seçin", + "i5": "Lütfen işlem para birimini seçin", + "i6": "Fiyat", + "i7": "Lütfen fiyatı girin", + "i8": "En Düşük Fiyat", + "i9": "Lütfen en düşük fiyatı girin", + "j0": "En yüksek fiyat", + "j1": "Lütfen en yüksek fiyatı girin", + "j2": "Açıklamalar", + "j3": "Lütfen bir not girin", + "j4": "Yayın", + "j5": "Başarıyla gönderildi", + "j6": "Ödeme yöntemi", + "j7": "Minimum Miktar", + "j8": "Maksimum miktar", + "j9": "Lütfen minimum işlem hacmini girin", + "k0": "Lütfen en yüksek işlem hacmini girin" + }, + "first": { + "a0": "gerçek isme git", + "a1": "Hakkımızda", + "a2": "Hoş geldin!", + "a3": "Kar durdurma ve zarar durdurma ayarları", + "a4": "Güncel en son fiyatla işlem yapın", + "a5": "Pozisyonu tut", + "a6": "Sipariş yönetimi", + "a7": "Hepsi görevlendirildi", + "a8": "tarih kaydı", + "a9": "çoklu", + "b0": "Oturumu kapatmak istediğinizden emin misiniz?", + "b1": "Giriş yap veya kayıt ol", + "b2": "Merhaba, CATYcoin'e hoş geldiniz", + "b3": "miktar", + "b4": "nokta indeksi", + "b5": "Sözleşme endeksi", + "b6": "Satın almanın birden çok yolunu destekleyin", + "b7": "Hızlı bir şekilde para satın alın", + "b8": "Sürdürülebilir", + "b9": "Mevcut alan henüz açık değil", + "c0": "Satın almak", + "c1": "Satmak", + "c2": "zaman", + "c3": "Toplam fiyat", + "c4": "miktar", + "c5": "Fiyatı işaretle", + "c6": "ipotekli varlıklar", + "c7": "Ses" + }, + "recharge": { + "a0": "AKIMI degistir", + "a1": "* Değiştirilen adres sadece alabilir", + "a2": "Diğer para birimlerini şarj ederseniz, geri alamazsınız!", + "a3": "Toplama için ERC20 kullanılması tavsiye edilir.", + "a4": "Adresi kopyala", + "a5": "*Para transferi yapmadan önce adres ve bilgileri doğruladığınızdan emin olun! ", + "a6": "Lütfen yeniden oluşturun" + }, + "currency": { + "a0": "yasal para transaksyon", + "a1": "I want to buy", + "a2": "Satmak istiyorum", + "a3": "bir klik para satın alması", + "a4": "bir tıklamayla para satmak", + "a5": "miktarla satın alın", + "a6": "miktarla alış", + "a55": "miktarla satın", + "a66": "miktarla satın", + "a7": "Lütfen satın miktarını girin", + "a8": "lütfen alış miktarını girin", + "a9": "Lütfen satış miktarına girin", + "b0": "Lütfen satış miktarını girin", + "b1": "birim fiyatı", + "b2": "0 hizmet satın satın", + "b3": "0 yük satışı", + "b4": "yeterli alan yok", + "b5": "lütfen önce gelişmiş doğrulamayı tamamlayın", + "b6": "de authentication", + "b7": "alışveri onaylayın", + "b8": "satış doğrulaması" + }, + "cxiNewText": { + "a0": "En iyi 10", + "a1": "5 milyon+", + "a2": "< 0.10%", + "a3": "200+", + "a4": "Küresel Sıralama", + "a5": "Kullanıcılar bize güveniyor", + "a6": "Ultra Düşük Ücretler", + "a7": "Ülkeler", + "a21": "hemen gelir elde et", + "a22": "Kişisel bir kripto para portföyü oluştur", + "a23": "100'den fazla kripto para birimi satın alın, ticaret yapın ve tutun", + "a24": "Hesabı şarj et", + "a25": "E-posta ile kaydol", + "a38": "İşlemleri istediğiniz zaman, istediğiniz yerde açın.", + "a39": "APP ve web sayfamız aracılığıyla istediğiniz zaman güvenli ve rahat bir şekilde işlem yapmaya başlayın", + "a41": "Güvenilir bir kripto para ticaret platformu", + "a42": "Katı protokoller ve endüstri lideri teknik önlemlerle kullanıcıların güvenliğini sağlamaya kararlıyız.", + "a43": "Kullanıcı güvenlik varlık fonları", + "a44": "Kullanıcı fonlarına kısmi koruma sağlamak için tüm işlem ücretlerinin %10'unu güvenli varlık fonlarında saklıyoruz", + "a45": "Kişiselleştirilmiş Erişim Kontrolü", + "a46": "Kişiselleştirilmiş erişim kontrolü, kullanıcıların endişelenmemesi için kişisel hesap cihazlarına ve adreslerine erişimi kısıtlar.", + "a47": "Gelişmiş Veri Şifreleme", + "a48": "Kişisel işlem verileri uçtan uca şifreleme ile korunmaktadır ve kişisel bilgilere yalnızca kişi erişebilir.", + "a57": "Gitmek için tıklayın", + "a71": "Başlangıç Kılavuzu ", + "a72": "Dijital döviz ticareti öğrenmeye hemen başlayın ", + "a77": "Dijital para birimi nasıl alınır ", + "a78": "Dijital para birimi nasıl satılır ", + "a79": "Dijital Para Birimleri Nasıl Ticaret Yapılır?", + "a80": "Pazar yeri", + "a81": "24 saat piyasa trendi", + "a82": "Cüzdanınıza kripto para birimi fonları ekleyin ve anında işlem yapmaya başlayın" + }, + "homeNewText": { + "aa1": "Kripto Para Kapısı", + "aa2": "100'den fazla kripto para biriminde güvenli, hızlı ve kolay ticaret", + "aa3": "E-posta yoluyla kayıt olun", + "aa4": "Şimdi ticarete başlayın", + "aa5": "piyasa eğilimi", + "aa6": "Dijital Varlık Fiyat Teklifi Ekspres", + "aa7": "Para birimi", + "bb1": "Son fiyat (USD)", + "bb2": "24 saatlik artış", + "bb3": "24 saatlik işlem hacmi", + "bb4": "Herkes için kripto para borsası", + "bb5": "Burada işlem yapmaya başlayın ve daha iyi bir kripto para birimi yolculuğunu deneyimleyin", + "bb6": "kişisel", + "bb7": "Herkes için bir kripto para borsası. Çok çeşitli para birimleriyle en güvenilir lider ticaret platformu", + "cc1": "İşletme", + "cc2": "İşletmeler ve kurumlar için tasarlandı. Kurumsal yatırımcılara ve işletmelere kripto çözümleri sağlamak", + "cc3": "Geliştirici", + "cc4": "Geliştiriciler için, geliştiricilerin web3'ün geleceğinin araçlarını ve API'lerini oluşturmaları için tasarlandı", + "cc6": "QR kodunu tarayın", + "cc7": "Android/IOS Uygulamasını İndirin", + "dd1": "Sıfır kazayla güvenli ve istikrarlı", + "dd2": "Çoklu güvenlik stratejileri ve %100 rezerv garantisi, kuruluşundan bu yana hiçbir güvenlik olayının yaşanmamasını sağlar.", + "dd3": "Kripto varlıklarıyla basit ve rahat bir şekilde ticaret yapın", + "dd4": "CATYcoinx'te ürünlerin anlaşılması kolaydır, işlem süreci uygundur ve tek noktadan blockchain varlık hizmeti platformu", + "dd5": "Türevler", + "dd6": "100'den fazla kripto para birimindeki sözleşmelerle 150 katına kadar kaldıraçla işlem yapabilir ve yüksek kar elde edebilirsiniz", + "ee1": "Çoklu terminal desteği", + "ee2": "Dijital varlıklarla istediğiniz zaman, istediğiniz yerde ticaret yapın", + "ee3": "Tüm para birimi bilgilerinin mevcut olduğu çok çeşitli varlık türlerini destekler", + "ee4": "Dijital varlık alım satım sürecini hızla anlayın", + "ee5": "Şifreleme yolculuğunuza başlayın", + "ee6": "Grafiksel doğrulama", + "ee7": "Grafiksel doğrulama", + "dd1": "Doğrulama başarılı", + "dd2": "doğrulama başarısız oldu", + "dd3": "Lütfen güvenlik doğrulamasını tamamlayın", + "dd4": "Bulmacayı tamamlamak için kaydırıcıyı kaydırın", + + "hh0": "Paranın geleceği burada", + "hh1": "İyi ticaret fırsatları arıyorum", + "hh2": "100'den fazla kripto para biriminin ticareti güvenli, hızlı ve kolay", + "hh3": "Şimdi kripto para borsamızı deneyin", + "hh4": "Ticaret yolculuğunuza hızla başlayın", + "hh5": "{name} hesabını kaydedin", + "hh6": "Kayıt Ol", + "hh7": "Ürün ve hizmetlerimizi burada keşfedin", + "hh8": "Güvenlik küçük bir mesele değildir. Varlıklarınızın ve bilgilerinizin güvenliğini korumak için sonsuz çaba göstereceğiz", + "hh9": "Stokta", + "hh10": "Kapsamlı araçlarla kripto para ticareti yapın.", + "hh11": "Türevler", + "hh12": "Dünyanın en iyi kripto para borsasıyla ticaret sözleşmeleri.", + "hh13": "Ticaret Robotu", + "hh14": "Piyasayı izlemeden pasif kar elde edin.", + "hh15": "Jeton satın al", + "hh16": "Tek tıkla kripto para satın alın.", + "hh17": "{nem} jeton kazan", + "hh18": "Profesyonel varlık yöneticileriyle yatırım yaparak istikrarlı gelir elde edin.", + "hh19": "Kaldıraçlı ticaret", + "hh20": "Borç alın, ticaret yapın ve geri ödeyin, varlıklarınızı kredili ticaretle güçlendirin.", + "hh21": "Güvenilir ve emniyetli kripto para borsanız", + "hh22": "Güvenli varlık depolama", + "hh23": "Önde gelen şifreleme ve depolama sistemlerimiz, varlıklarınızın her zaman güvende ve gizli kalmasını sağlar.", + "hh24": "Güçlü hesap güvenliği", + "hh25": "Hesabınızın güvenliğini sağlamak için en yüksek güvenlik standartlarına uyuyoruz ve en katı güvenlik önlemlerini uyguluyoruz.", + "hh26": "Güvenilir platform", + "hh27": "Herhangi bir siber saldırının hızlı tespit edilmesini ve yanıt verilmesini sağlayacak güvenli bir tasarım temelimiz var.", + "hh28": "Varlık Rezervinin Kanıtı - Varlık Şeffaflığı", + "hh29": "Rezerv Kanıtı (PoR), blockchain varlıklarının saklandığını kanıtlamak için yaygın olarak kullanılan bir yöntemdir. Bu, {name}'in defterlerimizdeki tüm kullanıcı varlıklarını kapsayan fonlara sahip olduğu anlamına gelir.", + "hh30": "Ticaret her zaman, her yerde yapılabilir", + "hh31": "İster APP ister WEB olsun işleminize hızlı bir şekilde başlayabilirsiniz", + "hh32": "Dijital para yolculuğunuza şimdi başlayın", + "hh33": "Şimdi kaydolun", + "hh34": "Yatırımcıların kripto para birimini satın alması, satması ve yönetmesi için en güvenilir yer biziz", + "hh35": "E-posta yoluyla kayıt olun", + "hh36": "SSS", + "hh41": "CATYcoin, her zaman, her yerde işlem yapın", + "hh42": "Şimdi işlem yap", + "hh43": "CATYcoin APP'i indirmek için QR kodunu tarayın", + "hh37": "Classificação Global", + "hh38": "os usuários confiam em nós", + "hh39": "Taxas ultrabaixas", + "hh40": "Países" + } +} \ No newline at end of file diff --git a/i18n/lang/ukr.json b/i18n/lang/ukr.json new file mode 100644 index 0000000..29fd34a --- /dev/null +++ b/i18n/lang/ukr.json @@ -0,0 +1,787 @@ +{ + "common": { + "D":"день", + "M":"місяць", + "Y":"рік", + "add":"Додати до", + "address":"адресу", + "all":"всі", + "amout": "Кількість", + "cancel": "скасувати", + "check": "Огляд", + "code": "Код підтвердження", + "confirm": "визначити", + "date": "дата", + "detail": "Деталі", + "email": "поштової скриньки", + "enter": "будь ласка введіть", + "error": "невдача", + "getCode": "отримати код підтвердження", + "h": "Час", + "loadMore": "завантажити ще", + "m": "Хвилина", + "money": "Сума", + "more": "Більше", + "notData": "Немає даних", + "notMore": "Більше немає", + "phone": "Мобільний телефон", + "requestError": "Мережа зайнята. Повторіть спробу пізніше", + "s": "друге", + "save": "Зберегти", + "select": "будь-ласка оберіть", + "sendSuccess": "Надіслано успішно", + "sms": "СМС", + "submit": "подати", + "success": "успіху", + "tips": "Поради", + "total": "одноразова сума", + "type": "Типи", + "copy": "копіювати", + "light": "Білий", + "dark": "чорний", + "service": "Обслуговування клієнтів", + "toDwon": "Чи переходити на сторінку завантаження", + "a0":"Будь ласка, введіть код купу", + "a1":"Копіювання успішно", + "a2":"не вдалося копіювати", + "a3":"Записи купу", + "a4":"Сума заплати", + "a5":"Кількість отриманих", + "a6":"номер рахунку", + "a7":"кількість перезавантаження", + "a8":"платний каучер", + "a9":"будь ласка, введіть кількість перезавантаження", + "b0":"будь ласка, вивантажте каучер плати", + "b1": "купувати{amount}Частки{name}Знак доступний{rate}%нагорода", + "b2":"Дії підписування", + "b3":"Збережено", + "b4":"Не вдалося зберегти", + "b5":"Створення запрошення плакат", + "b6":"Виберіть плакат", + "b8":"Час відкриття", + "b9":"Час закриття", + "c0":"Мінімальна сума поповнення: {num}, поповнення менше мінімальної суми не буде зараховано на рахунок і не може бути повернуто", + "c1":"Мінімальна сума вилучення", + "c2":"Номер версії", + "c3":"відкритий", + "c4":"оцінений меж", + "c5": "Ваш наказ перенесення було успішно надіслано, будь ласка, чекайте терпливо, і результат перенесення буде повідомлено SMS або електронною поштою. Будь ласка, перевірте його уважно. Якщо у вас є питання, будь ласка, зв’ яжіться з службою клієнт" + }, + "base": { + "a0": "заголовок", + "a1": "повернення", + "a2": "Більше", + "a3": "Цитати", + "a4": "Варіант", + "a5": "Потрапити в нову зону", + "a6": "член", + "a7": "Академія", + "a8": "Торгова пара", + "a9": "Остання ціна", + "b0": "Зміна ціни", + "b1": "Клацніть для входу", + "b2": "Ласкаво просимо до", + "b3": "будь ласка, увійдіть", + "b4": "оновлення", + "b5": "Підзарядка", + "b6": "Зняти", + "b7": "Просувайте", + "b8": "Відрахування плати за обробку", + "b9": "Доступні", + "c0": "купити", + "c1": "Моя комісія", + "c2": "Аутентифікація", + "c3": "Центр безпеки", + "c4": "повідомлення", + "c5": "Адреса вилучення", + "c6": "Налаштування", + "c7": "Необов’язково", + "c8": "Додано успішно", + "c9": "Скасувати успіх", + "d0": "Домашня сторінка", + "d1": "транзакція", + "d2": "активів", + "d3": "Введіть ключові слова для пошуку", + "d4": "Всі", + "d5": "Материнська плата", + "d6": "Загальна кількість конвертованих активів", + "d7": "Рахунок фонду", + "d8": "Передача", + "d9": "Пошук валюти", + "e0": "сховати", + "e1": "Балансові активи", + "e2": "заморозити", + "e3": "Перетворити", + "e4": "Контрактний рахунок", + "e5": "Конвертація договору", + "e6": "Майнерський рівень", + "e7": "шахтар" + }, + "accountSettings": { + "a0": "Налаштування аккаунта", + "a1": "Аватар", + "a2": "прізвисько", + "a3": "основний рахунок", + "a4": "номер телефону", + "a5": "Розв’язати", + "a6": "Зв’язати", + "a7": "Прив'язка поштової скриньки", + "a8": "Змінити обліковий запис", + "a9": "вийти з аккаунта", + "b0": "змінити ім'я користувача", + "b1": "Введіть псевдонім", + "b2": "Мову" +}, + "assets": { + "a0": "Управління адресою вилучення", + "a1": "Адресна книга може використовуватися для керування вашими часто використовуваними адресами. Немає необхідності проводити багаторазові перевірки при ініціюванні зняття з адрес в адресній книзі", + "a2": "Підтримується автоматичне зняття коштів. Якщо для зняття використовується {name}, лише адреси веб-адресної книги можуть ініціювати зняття коштів.", + "a3": "Видалити адресу", + "a4": "Додати адресу", + "a5": "Виберіть адресу для видалення", + "a6": "Чи потрібно видаляти поточно вибрану адресу", + "a7": "Протічна вода", + "a8": "одноразова сума", + "a9": "Доступні", + "b0": "заморозити", + "b1": "Рахунок фонду", + "b2": "Контрактний рахунок", + "b3": "Маржинальний рахунок", + "b4": "Фінансовий рахунок", + "b5": "Введіть ключові слова для пошуку", + "b6": "Зняти", + "b7": "Виберіть тип ланцюжка", + "b8": "Адреса вилучення", + "b9": "Введіть адресу", + "c0": "Кількість", + "c1": "Баланс", + "c2": "Введіть кількість", + "c3": "Всі", + "c4": "Мито за обробку", + "c5": "Перевірте ще раз і введіть правильну адресу гаманця", + "c6": "Надсилання невідповідної цифрової валюти на адресу гаманця спричинить постійні втрати", + "c7": "Плата за зняття коштів буде вираховуватися з кількості знятих коштів", + "c8": "Запис про вилучення", + "c9": "час", + "d0": "статус", + "d1": "переглядається", + "d2": "успіху", + "d3": "невдача", + "d4": "побачити більше", + "d5": "Подано успішно, переглядається", + "d6": "редагувати", + "d7": "Додати до", + "d8": "адресу", + "d9": "Введіть або вставте адресу", + "e0": "Зауваження", + "e1": "Введіть примітку", + "e2": "Будь ласка, введіть адресу", + "e3": "Будь ласка, заповніть зауваження", + "e4": "Успішна операція", + "e5": "Підзарядка", + "e6": "Відскануйте QR-код вище, щоб отримати адресу депозиту", + "e7": "Адреса депозиту", + "e8": "Кількість депозитів", + "e9": "Введіть кількість монет, які потрібно поповнити", + "f0": "Ця адреса є вашою останньою адресою поповнення, коли система отримає поповнення, вона буде автоматично зарахована на рахунок", + "f1": "Переказ повинен бути підтверджений усією мережею блокчейнів. Коли він отримає підтвердження мережі {num}, ваше ім’я {name} буде автоматично внесено на рахунок", + "f2": "Коли мережа підтверджена, ваш", + "f3": "Будь ласка, надішліть {name} лише на цю адресу, надсилання інших цифрових валют на цю адресу призведе до постійної втрати", + "f4": "Депозитний запис" + }, + "auth": { + "a0": "Аутентифікація", + "a1": "Перевірено", + "a2": "не сертифікований", + "a3": "перевірено", + "a4": "Розширена сертифікація", + "a5": "переглядається", + "a6": "Помилка автентифікації", + "a7": "Громадянство", + "a8": "Будь ласка, виберіть національність", + "a9": "фактична назва", + "b0": "будь ласка, введіть своє справжнє ім'я", + "b1": "ідентифікаційний номер", + "b2": "Введіть ідентифікаційний номер", + "b3": "підтвердити", + "b4": "Аутентифікація успішна", + "b5": "Завантажте передню фотографію посвідчення особи", + "b6": "Будь ласка, завантажте зворотний бік сертифіката", + "b7": "Завантажте ручне посвідчення особи", + "b8": "Переконайтеся, що фотографія чітка без водяних знаків, а верхня частина тіла ціла", + "b9": "Розмір файлу завеликий, щоб його перевищити", + "c0": "Помилка типу файлу", + "c1": "Завантажено успішно", + "c2": "Будь ласка, завантажте фотографію задньої частини вашого посвідчення особи", + "c3": "Будь ласка, завантажте передню фотографію свого посвідчення особи", + "c4": "Завантаження успішно, зачекайте на перевірку" + }, + "exchange": { + "a0": "Монети", + "a1": "Підпишіться", + "a2": "контракт", + "a3": "транзакція", + "a4": "Поточна комісія", + "a5": "Історична комісія", + "a6": "Додано успішно", + "a7": "Скасувати успіх", + "a8": "Загальний випуск", + "a9": "Загальний тираж", + "b0": "Ціна випуску", + "b1": "час публікації", + "b2": "Електронна книга", + "b3": "Адреса офіційного веб-сайту", + "b4": "Вступ", + "b5": "купити", + "b6": "Продавати", + "b7": "Комісійна ціна", + "b8": "Типи", + "b9": "Лімітна транзакція", + "c0": "Ринкова операція", + "c1": "Угода зроблена", + "c2": "усього", + "c3": "Купувати в", + "c4": "Продавати", + "c5": "Кількість", + "c6": "Угода за найкращою ринковою ціною", + "c7": "Загальна сума", + "c8": "Доступна кількість", + "c9": "Загальна вартість", + "d0": "увійдіть", + "d1": "Діаграма розподілу часу", + "d2": "ціна", + "d3": "Остання операція", + "d4": "час", + "d5": "напрямку", + "d6": "Лімітна ціна", + "d7": "ринкова ціна", + "d8": "Введіть ціну", + "d9": "Введіть кількість", + "e0": "Введіть загальну ціну", + "e1": "успішно замовлено", + "e2": "середня ціна", + "e3": "найвищий", + "e4": "найнижчий", + "e5": "кількість", + "e6": "Замовлення купівлі та продажу", + "e7": "Інформація про валюту", + "e8": "хвилини", + "e9": "год", + "f0": "день", + "f1": "тиждень", + "f2": "місяць", + "f3": "Ціна покупки", + "f4": "Відпускна ціна", + "f5": "Валютна операція", + "f6": "Введіть ключові слова для пошуку", + "f7": "Торгова пара", + "f8": "Остання ціна", + "f9": "Зміна ціни", + "g0": "Необов’язково", + "g1": "Моя комісія", + "g2": "Відкликання делегування", + "g3": "діючий", + "g4": "Відкликати", + "g5": "Чи слід скасувати поточне замовлення", + "g6": "Відкликання успішне" + }, + "option": { + "a0": "Варіант", + "a1": "Відстань до доставки", + "a2": "Побачити більше", + "a3": "Ведмежий", + "a4": "норма прибутку", + "a5": "купити", + "a6": "багато", + "a7": "повітря", + "a8": "струм", + "a9": "Друга половина", + "b0": "Ярмарок", + "b1": "Збільшити вибір", + "b2": "норма прибутку", + "b3": "Кількість закупівлі", + "b4": "Введіть кількість", + "b5": "Баланс", + "b6": "Орієнтовний дохід", + "b7": "Придбайте зараз", + "b8": "підйом", + "b9": "рівень", + "c0": "падіння", + "c1": "Вдала покупка", + "c2": "Деталі", + "c3": "номер замовлення", + "c4": "Ціна відкриття", + "c5": "Ціна закриття", + "c6": "Придбайте час", + "c7": "Кількість для покупки", + "c8": "Тип покупки", + "c9": "статус", + "d0": "Результат доставки", + "d1": "Кількість розрахунків", + "d2": "Час доставки", + "d3": "побачити більше", + "d4": "Купити варіант", + "d5": "Чекаємо доставки", + "d6": "Моя доставка", + "d7": "Запис доставки", + "d8": "хвилини", + "d9": "год", + "e0": "день", + "e1": "тиждень", + "e2": "місяць", + "e3": "напрямку", + "e4": "Зміна ціни" + }, + "purchase": { + "a0": "Ціна випуску", + "a1": "Валюта підписки", + "a2": "Приблизний час виходу в Інтернет", + "a3": "Час початку покупки", + "a4": "Кінець часу передплати", + "a5": "Підпишіться", + "a6": "Виберіть валюту придбання", + "a7": "Кількість закупівлі", + "a8": "Введіть кількість покупки", + "a9": "Всі", + "b0": "Підпишись зараз", + "b1": "Передплатний цикл", + "b2": "Розминка проекту", + "b3": "Почніть купувати", + "b4": "Кінець передплати", + "b5": "Оголосіть результати", + "b6": "Деталі проекту", + "b7": "використовувати чи ні", + "b8": "купити", + "b9": "Успішна підписка" + }, + "reg": { + "a0": "Зареєструйте свій телефон", + "a1": "реєстрація електронною поштою", + "a2": "Мобільний телефон", + "a3": "Введіть номер телефону", + "a4": "поштової скриньки", + "a5": "Введіть номер поштової скриньки", + "a6": "Код підтвердження", + "a7": "введіть код підтвердження", + "a8": "пароль", + "a9": "Введіть пароль", + "b0": "підтвердити пароль", + "b1": "Будь ласка, підтвердьте свій пароль", + "b2": "Реферал", + "b3": "Введіть рекомендатор", + "b4": "Необов’язково", + "b5": "Ви погодились", + "b6": "Угода користувача", + "b7": "І зрозумійте наш", + "b8": "Угода про конфіденційність", + "b9": "зареєстрований", + "c0": "Вже є аккаунт", + "c1": "увійдіть негайно", + "c2": "Будь ласка, прочитайте та погодьтеся з угодою", + "c3": "Будь ласка, введіть свій номер телефону", + "c4": "Будь ласка, введіть номер поштової скриньки", + "c5": "успішної реєстрації" +}, + "safe": { + "a0": "Розв’язати", + "a1": "Зв’язати", + "a2": "поштової скриньки", + "a3": "Номер поштової скриньки", + "a4": "Введіть номер поштової скриньки", + "a5": "Код підтвердження електронної пошти", + "a6": "введіть код підтвердження", + "a7": "Код підтвердження", + "a8": "Скасувати успішно", + "a9": "Пов’язати успішно", + "b0": "Забули свій пароль", + "b1": "номер рахунку", + "b2": "Будь ласка, введіть свій телефон", + "b3": "новий пароль", + "b4": "Введіть новий пароль", + "b5": "підтвердити пароль", + "b6": "Будь ласка, підтвердьте свій пароль", + "b7": "Підтвердьте зміни", + "b8": "Введіть правильний номер телефону або електронної пошти", + "b9": "Google Authenticator", + "c0": "Метод роботи: завантажте та відкрийте Google Authenticator, відскануйте QR-код нижче або введіть секретний ключ вручну, щоб додати маркер підтвердження", + "c1": "Копіювати ключ", + "c2": "Я правильно зберег ключ, і його не відновити, якщо його загубити", + "c3": "Наступний крок", + "c4": "Код підтвердження SMS", + "c5": "Код підтвердження Google", + "c6": "Підтвердьте прив'язку", + "c7": "Центр безпеки", + "c8": "пароль для входу", + "c9": "модифікувати", + "d0": "Налаштування", + "d1": "пароль транзакції", + "d2": "Мобільний телефон", + "d3": "Успішно змінено", + "d4": "номер телефону", + "d5": "Введіть номер телефону", + "d6": "Введіть код підтвердження SMS", + "d7": "закрити", + "d8": "Ввімкнути", + "d9": "перевірка", + "e0": "СМС", + "e1": "Закрито успішно", + "e2": "Успішно відкрито", + "e3": "підтвердити", + "e4": "Встановлено успішно" + }, + "transfer": { + "a0": "Передати запис", + "a1": "успіху", + "a2": "Кількість", + "a3": "напрямку", + "a4": "Активи рахунку", + "a5": "Контрактний рахунок", + "a6": "Маржинальний рахунок", + "a7": "Фінансовий рахунок", + "a8": "Передача", + "a9": "Від", + "b0": "до", + "b1": "Переказ валюти", + "b2": "Баланс", + "b3": "Всі", + "b4": "Передача успішна" + }, + "notice": { + "a0": "Деталі", + "a1": "повідомлення", + "a2": "оголошення", + "a3": "новини" + }, + "invite": { + "a0": "Запросіть друзів з ексклюзивними торговими знижками", + "a1": "партнер", + "a2": "Ексклюзивна торгова знижка", + "a3": "загальний користувач", + "a4": "Моя особа", + "a5": "Ексклюзивний статус", + "a6": "Мій код запрошення", + "a7": "Скопіюйте QR-код запрошення", + "a8": "Скопіювати посилання на запрошення", + "a9": "Моє підвищення", + "b0": "Загальна кількість просування по службі", + "b1": "Люди", + "b2": "Загальний еквівалент доходу", + "b3": "Запис просування", + "b4": "Пряме запрошення", + "b5": "Знижка записів", + "b6": "сорт", + "b7": "Налаштування рівня", + "b8": "Умови просування", + "b9": "Права на дивіденди", + "c0": "прізвисько", + "c1": "Номер підвищення", + "c2": "Еквівалент доходу", + "c3": "Запис запрошень", + "c4": "Знижка записів", + "c5": "Опис прав рівня", + "c6": "сорт", + "c7": "права та інтереси", + "c8": "Опис", + "c9": "Мої права" + }, + "help": { + "a0": "Деталі", + "a1": "Академія", + "a2": "класифікація" + }, + "login": { + "a0": "Номер мобільного телефону або електронної пошти", + "a1": "Введіть номер телефону або електронної пошти", + "a2": "пароль", + "a3": "Введіть пароль", + "a4": "увійдіть", + "a5": "Забули пароль", + "a6": "Немає облікового запису", + "a7": "Зареєструйся зараз", + "a8": "Мобільний телефон", + "a9": "поштової скриньки", + "b0": "здійснювати" + }, + "contract": { + "a0": "Відкрийте позицію", + "a1": "Позиція", + "a2": "Комісія", + "a3": "історії", + "a4": "Контрактна операція", + "a5": "Успішно відкрито", + "a6": "Тип транзакції", + "a7": "Угода зроблена", + "a8": "Загальна комісія", + "a9": "Середня ціна транзакції", + "b0": "Комісійна ціна", + "b1": "Запас", + "b2": "Мито за обробку", + "b3": "статус", + "b4": "діючий", + "b5": "Відмінити замовлення", + "b6": "Відкликаний", + "b7": "Непроданий", + "b8": "Часткова операція", + "b9": "Усі операції", + "c0": "Відкрийте більше", + "c1": "Плоске повітря", + "c2": "Відкритий простір", + "c3": "Піндо", + "c4": "Поради", + "c5": "Чи слід скасувати поточне замовлення", + "c6": "Відкликання успішне", + "c7": "Прибутки та збитки", + "c8": "поділіться цим", + "c9": "Деталі комісії", + "d0": "Немає даних", + "d1": "ціна", + "d2": "Кількість", + "d3": "Час транзакції", + "d4": "Права користувача", + "d5": "Нереалізовані прибутки та збитки", + "d6": "Рівень ризику", + "d7": "ринкова ціна", + "d8": "Чжан", + "d9": "Займіть запас", + "e0": "Бичачий", + "e1": "Можна відкрити більше", + "e2": "Ведмежий", + "e3": "Відкривається", + "e4": "Доступні", + "e5": "Передача", + "e6": "Ставка фінансування", + "e7": "Відстань поселення", + "e8": "багато", + "e9": "повітря", + "f0": "Переказ коштів", + "f1": "Калькулятор", + "f2": "Про контракт", + "f3": "Фонд захисту від ризиків", + "f4": "Історія фінансових витрат", + "f5": "Звичайна комісія", + "f6": "Ринковий порядок", + "f7": "Чи потрібно", + "f8": "s ціна", + "f9": "Відкрийте позицію з кількома важелями", + "g0": "Відкрийте більше", + "g1": "Відкритий простір", + "g2": "Введено в експлуатацію успішно", + "g3": "Показати лише поточний контракт", + "g4": "Keping", + "g5": "Комісія", + "g6": "Середня ціна відкриття", + "g7": "Базова ціна розрахунку", + "g8": "Розрахунковий сильний паритет", + "g9": "Розрахунковий дохід", + "h0": "норма прибутку", + "h1": "Стій", + "h2": "Стоп-лосс", + "h3": "Ліквідація", + "h4": "Рівна ринкова ціна", + "h5": "Стоп-прибуток і стоп-лосс", + "h6": "рівень", + "h7": "Введіть ціну закриття", + "h8": "Лімітна ціна", + "h9": "Введіть кінцеву кількість", + "i0": "Keping", + "i1": "Середня ціна відкриття", + "i2": "Остання ціна транзакції", + "i3": "Введіть ціну", + "i4": "Взяти прибуток Trigger Price", + "i5": "Ринкова ціна до", + "i6": "Замовлення на прийняття прибутку буде активовано в той час, а прибуток та збитки будуть оцінені після транзакції", + "i7": "Стоп-ціна тривоги зупинки", + "i8": "Замовлення стоп-лосс буде спрацьовано вчасно, і прибуток та збитки будуть оцінені", + "i9": "визначити", + "j0": "Закрито успішно", + "j1": "Чи є ринкова ціна рівною", + "j2": "Zenpei", + "j3": "успіху", + "j4": "Встановлено успішно", + "j5": "Магічні розрахунки, неперевершені", + "j6": "робити", + "j7": "Ціна закриття", + "j8": "Цифрова платформа для торгівлі активами", + "j9": "Коли {name1} зустрічає {name2} {name3} вогненну дорогу до сходження", + "k0": "Ціна відкриття", + "k1": "остання ціна", + "k2": "Відскануйте код, щоб дізнатися більше", + "k3": "Прибутки та збитки від розрахунків", + "k4": "Знімок екрана вдалий і його було збережено локально", + "k5": "Помилка знімка екрана", + "k6": "Довго натискайте, щоб зробити знімок екрана", + "k7": "Повне вирівнювання в один клік", + "k8": "Зворотне натискання одним клацанням миші", + "k9": "Будь то одноклавішне повне вирівнювання", + "l0": "Повний успіх", + "l1": "Чи одна клавіша зворотна", + "l2": "Зворотний успіх", + "l3": "Плоске повітря", + "l4": "Піндо" + }, + "otc": { + "a0": "Розмістіть оголошення", + "a1": "Порядок", + "a2": "Валюта операції", + "a3": "Моє замовлення", + "a4": "Моє оголошення", + "a5": "купити", + "a6": "продати", + "a7": "усього", + "a8": "Залишився", + "a9": "Обмежений", + "b0": "ціна за одиницю", + "b1": "спосіб оплати", + "b2": "діючий", + "b3": "Усього", + "b4": "Виберіть спосіб оплати", + "b5": "Введіть кількість", + "b6": "Замовлення", + "b7": "Alipay", + "b8": "Wechat", + "b9": "Банківська картка", + "c0": "успішно замовлено", + "c1": "статус", + "c2": "Ідентифікатор реклами", + "c3": "Загальна сума", + "c4": "Кількість", + "c5": "час випуску", + "c6": "Без полиці", + "c7": "Відкликаний", + "c8": "в угоді", + "c9": "завершено", + "d0": "Поради", + "d1": "Чи потрібно видаляти поточне оголошення", + "d2": "визначити", + "d3": "скасувати", + "d4": "Відкликання успішне", + "d5": "Фіат-рахунок", + "d6": "заморозити", + "d7": "Рахунок Alipay", + "d8": "будь ласка, введіть рахунок", + "d9": "Ім'я", + "e0": "Введіть своє ім’я", + "e1": "Код платежу", + "e2": "Зв’язати", + "e3": "Обліковий запис WeChat", + "e4": "назва банку", + "e5": "Введіть назву банку", + "e6": "Відділення відкриття рахунку", + "e7": "Будь ласка, введіть відділення відкриття рахунку", + "e8": "Номер банківської картки", + "e9": "Введіть номер банківської картки", + "f0": "Редагувати успішно", + "f1": "Додано успішно", + "f2": "Продавати", + "f3": "Купувати в", + "f4": "деталі замовлення", + "f5": "номер замовлення", + "f6": "номер рахунку", + "f7": "банківський рахунок", + "f8": "залишився час", + "f9": "Хвилина", + "g0": "друге", + "g1": "Завантажте ваучер на оплату", + "g2": "підтвердити оплату", + "g3": "відмінити замовлення", + "g4": "Підтвердити оплату", + "g5": "Не прибув", + "g6": "Чи слід скасувати поточне замовлення", + "g7": "Замовлення скасовано", + "g8": "Підтвердьте поточний платіж", + "g9": "Успішна операція", + "h0": "Після підтвердження платежу активи будуть автоматично передані", + "h1": "Після підтвердження того, що платіж не отримано, це замовлення автоматично надійде до апеляції", + "h2": "Замовлення на продаж", + "h3": "Замовлення на придбання", + "h4": "Замовлення на придбання реклами", + "h5": "Рекламне замовлення на продаж", + "h6": "час", + "h7": "Деталі", + "h8": "Всі", + "h9": "зачинено", + "i0": "Підлягає оплаті", + "i1": "бути підтвердженим", + "i2": "Привабливий", + "i3": "тип реклами", + "i4": "Виберіть тип транзакції", + "i5": "Виберіть валюту транзакції", + "i6": "ціна", + "i7": "Введіть ціну", + "i8": "Найнижча ціна", + "i9": "Введіть найнижчу ціну", + "j0": "Найвища ціна", + "j1": "Введіть найвищу ціну", + "j2": "Зауваження", + "j3": "Введіть примітку", + "j4": "звільнення", + "j5": "Успішні", + "j6": "спосіб оплати", + "j7": "Мінімальна сума", + "j8": "Максимальна сума", + "j9": "Введіть мінімальний обсяг транзакції", + "k0": "Введіть максимальний обсяг транзакції" + }, + "first":{ + "a0":"Перейдіть до справжнього імені", + "a1":"про нас", + "a2":"Ласкаво просимо!", + "a3":"Налаштування стоп-прибутку та стоп-лоссу", + "a4":"Торгуйте за найновішою ціною", + "a5":"Утримуйте положення", + "a6":"Управління замовленнями", + "a7":"Все введено в експлуатацію", + "a8":"запис історії", + "a9":"множинні", + "b0":"Ви впевнені, що хочете вийти?", + "b1":"Увійдіть або зареєструйтесь", + "b2":"Привіт, ласкаво просимо до AMATAK", + "b3":"кількість", + "b4":"Плямистий індекс", + "b5":"Індекс контракту", + "b6":"Підтримуйте кілька способів покупки", + "b7":"Швидко купуйте монети", + "b8":"Стійкий", + "b9":"Поточна площа ще не відкрита", + "c0":"Купити в", + "c1":"Продам", + "c2":"час", + "c3":"Загальна сума", + "c4":"кількість", + "c5":"Позначте ціну", + "c6":"Обтяжені активи", + "c7":"Обсяг" + }, + "recharge":{ + "a0":"Змінити валюту", + "a1":"*Змінену адресу можна отримувати лише", + "a2":"Якщо ви поповнюєте інші валюти, ви не зможете отримати їх!", + "a3":"Рекомендується використовувати ERC20 для збору", + "a4":"Скопіювати адресу", + "a5":"*Обов’язково підтвердьте адресу та інформацію перед переказом грошей! ", + "a6":"Будь ласка, відновіть" + }, + "currency":{ + "a0": "операції в правній валюті", + "a1": "Я хочу купити", + "a2": "Я хочу продати", + "a3": "куп монет одного клацання", + "a4": "продавання грошей одним клацанням", + "a5": "purchase by quantity", + "a6": "купування за сумою", + "a55": "продавати за кількістю", + "a66": "продавати за сумою", + "a7": "будь ласка, введіть кількість купу", + "a8": "будь ласка, введіть суму купу", + "a9": "будь ласка, введіть кількість продажів", + "b0": "будь ласка, введіть суму продажу", + "b1": "ціна одиниці", + "b2": "0 купування оплат за службу", + "b3": "0 продаж заряду", + "b4": "недостатнього доступного балансу", + "b5": "будь ласка, спочатку завершите розширену автентифікацію", + "b6": "de authentication", + "b7": "підтвердити купу", + "b8": "підтвердження продажу" + } +} diff --git a/i18n/lang/zh-CN.json b/i18n/lang/zh-CN.json new file mode 100644 index 0000000..68d58e3 --- /dev/null +++ b/i18n/lang/zh-CN.json @@ -0,0 +1,791 @@ +{ + "common": { + "D": "日", + "M": "月", + "Y": "年", + "add": "添加", + "address": "地址", + "all": "所有", + "amout": "数量", + "cancel": "取消", + "check": "审核", + "code": "验证码", + "confirm": "确定", + "date": "日期", + "detail": "详情", + "email": "邮箱", + "enter": "请输入", + "error": "失败", + "getCode": "获取验证码", + "h": "时", + "loadMore": "加载更多", + "m": "分", + "money": "金额", + "more": "更多", + "notData": "暂无数据", + "notMore": "没有更多了", + "phone": "手机", + "requestError": "网络繁忙,请稍后再试", + "s": "秒", + "save": "保存", + "select": "请选择", + "sendSuccess": "发送成功", + "sms": "短信", + "submit": "提交", + "success": "成功", + "tips": "温馨提示", + "total": "总额", + "type": "类型", + "copy": "复制", + "light": "白", + "dark": "黑", + "service": "客服", + "toDwon": "是否前往下载页", + "a0":"请输入申购码", + "a1":"复制成功", + "a2":"复制失败", + "a3":"申购记录", + "a4":"支付金额", + "a5":"到账数量", + "a6":"账号", + "a7":"充值数量", + "a8":"支付凭证", + "a9":"请输入充值数量", + "b0":"请上传支付凭证", + "b1": "购买{amount}枚{name}代币可获{rate}%奖励", + "b2":"申购活动", + "b3":"保存成功", + "b4":"保存失败", + "b5":"生成邀请海报", + "b6":"选择海报", + "b8":"开盘时间", + "b9":"收盘时间", + "c0":"最小充值金额:{num},小于最小金额的充值将不会上账且无法返回", + "c1":"最小提币额", + "c2":"版本号", + "c3": "可开", + "c4": "预估保证金", + "c5": "您的划转订单已提交成功,请耐心等待,划转结果会以短信或邮件的方式通知。请注意查收,如有疑问请及时联系客服", + "c6":"涨幅比例", + "c7":"当前估值" + }, + "base": { + "a0": "标题", + "a1": "返回", + "a2": "更多", + "a3": "行情", + "a4": "期权", + "a5": "打新专区", + "a6": "会员", + "a7": "学院", + "a8": "交易对", + "a9": "最新价", + "b0": "涨跌幅", + "b1": "点击登录", + "b2": "欢迎来到", + "b3": "请登录", + "b4": "升级", + "b5": "充币", + "b6": "提币", + "b7": "推广", + "b8": "抵扣手续费", + "b9": "可用", + "c0": "购买", + "c1": "我的委托", + "c2": "身份认证", + "c3": "安全中心", + "c4": "消息通知", + "c5": "提币地址", + "c6": "设置", + "c7": "自选", + "c8": "添加成功", + "c9": "取消成功", + "d0": "首页", + "d1": "交易", + "d2": "资产", + "d3": "请输入搜索关键词", + "d4": "全部", + "d5": "主板", + "d6": "总资产折合", + "d7": "资金账户", + "d8": "划转", + "d9": "搜索币种", + "e0": "隐藏", + "e1": "余额资产", + "e2": "冻结", + "e3": "折合", + "e4": "合约账户", + "e5": "合约折合", + "e6": "矿工等级", + "e7": "矿工" + }, + "accountSettings": { + "a0": "账号设置", + "a1": "头像", + "a2": "昵称", + "a3": "主账号", + "a4": "手机号", + "a5": "解绑", + "a6": "绑定", + "a7": "邮箱绑定", + "a8": "切换账户", + "a9": "退出登录", + "b0": "修改昵称", + "b1": "请输入昵称", + "b2": "语言" + }, + "assets": { + "a0": "提币地址管理", + "a1": "地址簿可以用来管理您的常用地址,往地址簿中存在的地址发起提币时,无需进行多重校验", + "a2": "已支持自动提币,使用{name}提币时,只允许网地址簿中存在的地址发起提币", + "a3": "删除地址", + "a4": "添加地址", + "a5": "请选择要删除的地址", + "a6": "是否删除当前选中地址", + "a7": "流水", + "a8": "总额", + "a9": "可用", + "b0": "冻结", + "b1": "资金账户", + "b2": "合约账户", + "b3": "杠杆账户", + "b4": "理财账户", + "b5": "请输入搜索关键词", + "b6": "提币", + "b7": "请选择链类型", + "b8": "提币地址", + "b9": "请输入地址", + "c0": "数量", + "c1": "余额", + "c2": "请输入数量", + "c3": "全部", + "c4": "手续费", + "c5": "请仔细检查并输入正确的提币钱包地址", + "c6": "发送不对应的数字货币到钱包地址会造成永久性的损失", + "c7": "提币手续费将从提币数量中扣除", + "c8": "提币记录", + "c9": "时间", + "d0": "状态", + "d1": "审核中", + "d2": "成功", + "d3": "失败", + "d4": "查看更多", + "d5": "提交成功,正在审核", + "d6": "编辑", + "d7": "添加", + "d8": "地址", + "d9": "请输入或粘贴地址", + "e0": "备注", + "e1": "请输入备注", + "e2": "请填写地址", + "e3": "请填写备注", + "e4": "操作成功", + "e5": "充币", + "e6": "扫描上方二维码获取充币地址", + "e7": "充币地址", + "e8": "充币数量", + "e9": "请输入充币数量", + "f0": "此地址是您最新的充值地址,当系统收到充值时,将进行自动入账", + "f1": "转账需要由整个区块链网络进行确认,到达{num}个网络确认时,您的{name}将被自动存入账户中", + "f2": "个网络确认时,您的", + "f3": "请只发送{name}到此地址,发送其他数字货币到此地址会造成永久性的损失", + "f4": "充币记录" + }, + "auth": { + "a0": "身份认证", + "a1": "实名认证", + "a2": "未认证", + "a3": "已认证", + "a4": "高级认证", + "a5": "审核中", + "a6": "认证失败", + "a7": "国籍", + "a8": "请选择国籍", + "a9": "真实姓名", + "b0": "请输入真实姓名", + "b1": "证件号码", + "b2": "请输入证件号码", + "b3": "确认", + "b4": "认证成功", + "b5": "请上传证件正面照片", + "b6": "请上传证件背面", + "b7": "请上传手持证件照", + "b8": "确保照片清晰无水印,且上半身完整", + "b9": "文件尺寸过大,不得超过", + "c0": "文件类型错误", + "c1": "上传成功", + "c2": "请上传证件背面照", + "c3": "请上传证件正面照", + "c4": "上传成功,请等待审核" + }, + "exchange": { + "a0": "币币", + "a1": "申购", + "a2": "合约", + "a3": "交易", + "a4": "当前委托", + "a5": "历史委托", + "a6": "添加成功", + "a7": "取消成功", + "a8": "发行总量", + "a9": "流通总量", + "b0": "发行价格", + "b1": "发行时间", + "b2": "白皮书地址", + "b3": "官网地址", + "b4": "简介", + "b5": "买", + "b6": "卖", + "b7": "委托价", + "b8": "类型", + "b9": "限价交易", + "c0": "市价交易", + "c1": "已成交", + "c2": "总计", + "c3": "买入", + "c4": "卖出", + "c5": "数量", + "c6": "在最佳市场价格成交", + "c7": "总价", + "c8": "可用数量", + "c9": "总值", + "d0": "登录", + "d1": "分时图", + "d2": "价格", + "d3": "最新成交", + "d4": "时间", + "d5": "方向", + "d6": "限价", + "d7": "市价", + "d8": "请输入价格", + "d9": "请输入数量", + "e0": "请输入总价", + "e1": "下单成功", + "e2": "平均价格", + "e3": "最高", + "e4": "最低", + "e5": "量", + "e6": "买卖盘", + "e7": "币种信息", + "e8": "分钟", + "e9": "小时", + "f0": "天", + "f1": "周", + "f2": "月", + "f3": "买价", + "f4": "卖价", + "f5": "币币交易", + "f6": "请输入搜索关键词", + "f7": "交易对", + "f8": "最新价", + "f9": "涨跌幅", + "g0": "自选", + "g1": "我的委托", + "g2": "撤销委托", + "g3": "操作", + "g4": "撤销", + "g5": "是否撤销当前委托", + "g6": "撤销成功" + }, + "option": { + "a0": "期权", + "a1": "距离交割", + "a2": "看多", + "a3": "看空", + "a4": "收益率", + "a5": "购买", + "a6": "多", + "a7": "空", + "a8": "当前", + "a9": "下期", + "b0": "看平", + "b1": "涨幅选择", + "b2": "收益率", + "b3": "购买数量", + "b4": "请输入数量", + "b5": "余额", + "b6": "预计收益", + "b7": "立即购买", + "b8": "涨", + "b9": "平", + "c0": "跌", + "c1": "购买成功", + "c2": "详情", + "c3": "订单号", + "c4": "开盘价", + "c5": "收盘价", + "c6": "买入时间", + "c7": "买入数量", + "c8": "购买类型", + "c9": "状态", + "d0": "交割结果", + "d1": "结算数量", + "d2": "交割时间", + "d3": "查看更多", + "d4": "购买期权", + "d5": "等待交割", + "d6": "我的交割", + "d7": "交割记录", + "d8": "分钟", + "d9": "小时", + "e0": "天", + "e1": "周", + "e2": "月", + "e3": "方向", + "e4": "涨跌幅" + }, + "purchase": { + "a0": "发行价", + "a1": "申购币种", + "a2": "预计上线时间", + "a3": "开始申购时间", + "a4": "结束申购时间", + "a5": "申购", + "a6": "请选择申购币种", + "a7": "购买数量", + "a8": "请输入申购数量", + "a9": "全部", + "b0": "立即申购", + "b1": "申购周期", + "b2": "项目预热", + "b3": "开始申购", + "b4": "结束申购", + "b5": "公布结果", + "b6": "项目详情", + "b7": "是否使用", + "b8": "购买", + "b9": "申购成功" + }, + "reg": { + "a0": "手机注册", + "a1": "邮箱注册", + "a2": "手机", + "a3": "请输入手机号", + "a4": "邮箱", + "a5": "请输入邮箱号", + "a6": "验证码", + "a7": "请输入验证码", + "a8": "密码", + "a9": "请输入密码", + "b0": "确认密码", + "b1": "请确认密码", + "b2": "推荐人", + "b3": "请输入推荐人", + "b4": "选填", + "b5": "您已同意", + "b6": "用户协议", + "b7": "并了解我们的", + "b8": "隐私协议", + "b9": "注册", + "c0": "已有账号", + "c1": "立即登录", + "c2": "请阅读并同意协议", + "c3": "请填写手机号", + "c4": "请填写邮箱号", + "c5": "注册成功", + "c6":"邀请码(必填)", + "c7":"请填写邀请码" + }, + "safe": { + "a0": "解绑", + "a1": "绑定", + "a2": "邮箱", + "a3": "邮箱号", + "a4": "请输入邮箱号", + "a5": "邮箱验证码", + "a6": "请输入验证码", + "a7": "验证码", + "a8": "解绑成功", + "a9": "绑定成功", + "b0": "忘记登录密码", + "b1": "账号", + "b2": "请输入手机", + "b3": "新密码", + "b4": "请输入新密码", + "b5": "确认密码", + "b6": "请确认密码", + "b7": "确认修改", + "b8": "请输入正确的手机或邮箱号", + "b9": "谷歌验证器", + "c0": "操作方法:下载并打开谷歌验证器,扫描下方二维码或手动输入秘钥添加验证令牌", + "c1": "复制密钥", + "c2": "我已经妥善保存密钥,丢失后将不可找回", + "c3": "下一步", + "c4": "短信验证码", + "c5": "谷歌验证码", + "c6": "确认绑定", + "c7": "安全中心", + "c8": "登录密码", + "c9": "修改", + "d0": "设置", + "d1": "交易密码", + "d2": "手机", + "d3": "修改成功", + "d4": "手机号", + "d5": "请输入手机号", + "d6": "请输入短信验证码", + "d7": "关闭", + "d8": "开启", + "d9": "验证", + "e0": "短信", + "e1": "关闭成功", + "e2": "开启成功", + "e3": "确认", + "e4": "设置成功" + }, + "transfer": { + "a0": "划转记录", + "a1": "成功", + "a2": "数量", + "a3": "方向", + "a4": "账户资产", + "a5": "合约账户", + "a6": "杠杆账户", + "a7": "理财账户", + "a8": "划转", + "a9": "从", + "b0": "至", + "b1": "划转币种", + "b2": "余额", + "b3": "全部", + "b4": "已划转" + }, + "notice": { + "a0": "详情", + "a1": "消息通知", + "a2": "公告", + "a3": "消息" + }, + "invite": { + "a0": "申购", + "a1": "合伙人", + "a2": "尊享交易返佣", + "a3": "普通用户", + "a4": "我的身份", + "a5": "尊享身份", + "a6": "我的邀请码", + "a7": "复制邀请二维码", + "a8": "复制邀请链接", + "a9": "我的推广", + "b0": "推广总人数", + "b1": "人", + "b2": "总收益折合", + "b3": "推广记录", + "b4": "直接邀请", + "b5": "返佣记录", + "b6": "等级", + "b7": "级别设定", + "b8": "晋升条件", + "b9": "分红权益", + "c0": "昵称", + "c1": "推广人数", + "c2": "收益折合", + "c3": "邀请记录", + "c4": "返佣记录", + "c5": "等级权益说明", + "c6": "等级", + "c7": "权益", + "c8": "说明", + "c9": "我的权益" + }, + "help": { + "a0": "详情", + "a1": "学院", + "a2": "分类" + }, + "login": { + "a0": "手机或邮箱号", + "a1": "请输入手机或邮箱号", + "a2": "密码", + "a3": "请输入密码", + "a4": "登录", + "a5": "忘记密码", + "a6": "没有账号", + "a7": "立即注册", + "a8": "手机", + "a9": "邮箱", + "b0": "完成" + }, + "contract": { + "a0": "开仓", + "a1": "持仓", + "a2": "委托", + "a3": "历史", + "a4": "合约交易", + "a5": "开通成功", + "a6": "交易类型", + "a7": "已成交", + "a8": "委托总量", + "a9": "成交均价", + "b0": "委托价格", + "b1": "保证金", + "b2": "手续费", + "b3": "状态", + "b4": "操作", + "b5": "撤单", + "b6": "已撤销", + "b7": "未成交", + "b8": "部分成交", + "b9": "全部成交", + "c0": "开多", + "c1": "平空", + "c2": "开空", + "c3": "平多", + "c4": "温馨提示", + "c5": "是否撤销当前订单", + "c6": "撤销成功", + "c7": "盈亏", + "c8": "分享", + "c9": "委托详情", + "d0": "暂无数据", + "d1": "价格", + "d2": "数量", + "d3": "成交时间", + "d4": "用户权益", + "d5": "未实现盈亏", + "d6": "风险率", + "d7": "市价", + "d8": "张", + "d9": "占用保证金", + "e0": "看涨", + "e1": "可开多", + "e2": "看跌", + "e3": "可开空", + "e4": "可用", + "e5": "划转", + "e6": "资金费率", + "e7": "距离结算", + "e8": "多", + "e9": "空", + "f0": "资金划转", + "f1": "计算器", + "f2": "关于合约", + "f3": "风险保障基金", + "f4": "资金费用历史", + "f5": "普通委托", + "f6": "市价委托", + "f7": "是否以", + "f8": "的价格", + "f9": "倍杠杆开仓", + "g0": "开多", + "g1": "开空", + "g2": "委托成功", + "g3": "仅显示当前合约", + "g4": "可平", + "g5": "委托", + "g6": "开仓平均价", + "g7": "结算基准价", + "g8": "预估强平价", + "g9": "已结算收益", + "h0": "收益率", + "h1": "止盈", + "h2": "止损", + "h3": "平仓", + "h4": "市价全平", + "h5": "止盈止损", + "h6": "平", + "h7": "请输入平仓价格", + "h8": "限价", + "h9": "请输入平仓数量", + "i0": "可平", + "i1": "开仓均价", + "i2": "最新成交价", + "i3": "请输入价格", + "i4": "止盈触发价", + "i5": "市价至", + "i6": "时将触发止盈委托,成交后预计盈亏", + "i7": "止损触发价", + "i8": "时将触发止损委托,成交后预计盈亏", + "i9": "确定", + "j0": "平仓成功", + "j1": "是否市价全平", + "j2": "全平", + "j3": "成功", + "j4": "设置成功", + "j5": "神机妙算,无可匹敌", + "j6": "做", + "j7": "平仓价格", + "j8": "数字资产交易平台", + "j9": "当{name1}遇上{name2} {name3}的火热飞升之路", + "k0": "开仓价格", + "k1": "最新价格", + "k2": "扫码了解更多", + "k3": "结算盈亏", + "k4": "截图成功,已保存到本地", + "k5": "截图失败", + "k6": "长按截图", + "k7": "一键全平", + "k8": "一键反向", + "k9": "是否一键全平", + "l0": "全平成功", + "l1": "是否一键反向", + "l2": "反向成功", + "l3": "平空", + "l4": "平多" + }, + "otc": { + "a0": "发布广告", + "a1": "订单", + "a2": "交易币种", + "a3": "我的订单", + "a4": "我的广告", + "a5": "购买", + "a6": "出售", + "a7": "总数", + "a8": "剩余", + "a9": "限量", + "b0": "单价", + "b1": "支付方式", + "b2": "操作", + "b3": "总量", + "b4": "请选择支付方式", + "b5": "请输入数量", + "b6": "下单", + "b7": "支付宝", + "b8": "微信", + "b9": "银行卡", + "c0": "下单成功", + "c1": "状态", + "c2": "广告编号", + "c3": "总价", + "c4": "数量", + "c5": "发布时间", + "c6": "下架", + "c7": "已撤销", + "c8": "交易中", + "c9": "已完成", + "d0": "温馨提示", + "d1": "是否下架当前广告", + "d2": "确定", + "d3": "取消", + "d4": "撤销成功", + "d5": "法币账户", + "d6": "冻结", + "d7": "支付宝账号", + "d8": "请输入账号", + "d9": "姓名", + "e0": "请输入姓名", + "e1": "付款码", + "e2": "绑定", + "e3": "微信账号", + "e4": "银行名称", + "e5": "请输入银行名称", + "e6": "开户支行", + "e7": "请输入开户支行", + "e8": "银行卡号", + "e9": "请输入银行卡号", + "f0": "编辑成功", + "f1": "添加成功", + "f2": "卖出", + "f3": "买入", + "f4": "订单详情", + "f5": "订单号", + "f6": "账号", + "f7": "开户银行", + "f8": "剩余时间", + "f9": "分", + "g0": "秒", + "g1": "上传支付凭证", + "g2": "确认付款", + "g3": "取消订单", + "g4": "确认收款", + "g5": "未到账", + "g6": "是否取消当前订单", + "g7": "订单已取消", + "g8": "确认当前已付款", + "g9": "操作成功", + "h0": "确认收款后将挂卖资产将自动划转", + "h1": "确认未收到款项后,此订单将自动进入申诉", + "h2": "出售订单", + "h3": "购买订单", + "h4": "广告购买订单", + "h5": "广告出售订单", + "h6": "时间", + "h7": "详情", + "h8": "全部", + "h9": "已关闭", + "i0": "待支付", + "i1": "待确认", + "i2": "申诉中", + "i3": "广告类型", + "i4": "请选择交易类型", + "i5": "请选择交易币种", + "i6": "价格", + "i7": "请输入价格", + "i8": "最低价", + "i9": "请输入最低价", + "j0": "最高价", + "j1": "请输入最高价", + "j2": "备注", + "j3": "请输入备注", + "j4": "发布", + "j5": "发布成功", + "j6": "收款方式", + "j7": "最低量", + "j8": "最高量", + "j9": "请输入最低交易量", + "k0": "请输入最高交易量" + }, + "first":{ + "a0": "去实名", + "a1": "关于我们", + "a2": "欢迎您!", + "a3": "止盈止损设置", + "a4": "以当前最新价交易", + "a5": "持有仓位", + "a6": "订单管理", + "a7": "全部委托", + "a8": "历史记录", + "a9": "倍数", + "b0": "确定要退出登录吗?", + "b1": "登录或注册", + "b2": "Hi,欢迎使用CXIsux", + "b3": "量", + "b4": "现货指数", + "b5": "合约指数", + "b6": "支持多种方式购买", + "b7": "快捷买币", + "b8": "永续", + "b9": "当前地区暂未开放", + "c0": "买入", + "c1": "卖出", + "c2": "时间", + "c3": "总价", + "c4": "数量", + "c5": "标记价", + "c6": "担保资产", + "c7": "成交量" + }, + "recharge":{ + "a0": "切换币种", + "a1": "*改地址只能接收", + "a2": "的资产,如果充值其他币种,将无法找回!", + "a3": "推荐使用ERC20进行收款", + "a4": "复制地址", + "a5": "*转账前请务必确认地址及信息无误!一旦转出,不可撤回!", + "a6":"请重新生成" + }, + "currency":{ + "a0": "法币交易", + "a1": "我要买", + "a2": "我要卖", + "a3": "一键买币", + "a4": "一键卖币", + "a5": "按数量购买", + "a6": "按金额购买", + "a55": "按数量出售", + "a66": "按金额出售", + "a7": "请输入购买数量", + "a8": "请输入购买金额", + "a9": "请输入出售数量", + "b0": "请输入出售金额", + "b1": "单价", + "b2": "0手续费购买", + "b3": "0手续费出售", + "b4": "可用余额不足", + "b5": "请先完成高级认证", + "b6": "去认证", + "b7": "确认购买", + "b8": "确认出售" + } +} diff --git a/i18n/lang/zh-TW.json b/i18n/lang/zh-TW.json new file mode 100644 index 0000000..0a77429 --- /dev/null +++ b/i18n/lang/zh-TW.json @@ -0,0 +1,931 @@ +{ + "common": { + "D": "日", + "M": "月", + "Y": "年", + "add": "添加", + "address": "地址", + "all": "所有", + "amout": "數量", + "cancel": "取消", + "check": "審核", + "code": "驗證碼", + "confirm": "確定", + "date": "日期", + "detail": "詳情", + "email": "郵箱", + "enter": "請輸入", + "error": "失敗", + "getCode": "獲取驗證碼", + "h": "時", + "loadMore": "加載更多", + "m": "分", + "money": "金額", + "more": "更多", + "notData": "暫無數據", + "notMore": "沒有更多了", + "phone": "手機", + "requestError": "網絡繁忙,請稍後再試", + "s": "秒", + "save": "保存", + "select": "請選擇", + "sendSuccess": "發送成功", + "sms": "短信", + "submit": "提交", + "success": "成功", + "tips": "溫馨提示", + "total": "總額", + "type": "類型", + "copy": "複製", + "light": "白", + "dark": "黑", + "service": "客服", + "toDwon": "是否前往下載頁", + "toDwon1": "是否前往認證頁", + "a0": "請輸入申購碼", + "a1": "複製成功", + "a2": "複製失敗", + "a3": "申購記錄", + "a4": "支付金額", + "a5": "到賬數量", + "a6": "帳號", + "a7": "充值數量", + "a8": "支付憑證", + "a9": "請輸入充值數量", + "b0": "請上傳支付憑證", + "b1": "購買{amount}枚{name}代幣可獲{rate}%獎勵", + "b2": "申購活動", + "b3": "保存成功", + "b4": "保存失敗", + "b5": "生成邀請海報", + "b6": "選擇海報", + "b8": "開盤時間", + "b9": "收盤時間", + "c0": "最小充值金額:{num},小於最小金額的充值將不會上帳且無法返回。", + "c1": "最小提幣額", + "c2": "版本號", + "c3": "可開", + "c4": "數量", + "c5": "您的劃轉訂單已提交成功,請耐心等待,劃轉結果會以簡訊或郵件的管道通知。請注意查收,如有疑問請及時聯系客服", + "c6": "漲幅比例" + }, + "base": { + "a0": "標題", + "a1": "返回", + "a2": "更多", + "a3": "行情", + "a4": "期權", + "a5": "打新專區", + "a6": "會員", + "a7": "學院", + "a8": "交易對", + "a9": "最新價", + "b0": "漲跌幅", + "b1": "點擊登錄", + "b2": "歡迎來到", + "b3": "請登錄", + "b4": "升級", + "b5": "充幣", + "b6": "提幣", + "b7": "推廣", + "b8": "抵扣手續費", + "b9": "可用", + "c0": "購買", + "c1": "我的委託", + "c2": "身份認證", + "c3": "安全中心", + "c4": "消息通知", + "c5": "提幣地址", + "c6": "設置", + "c7": "自選", + "c8": "添加成功", + "c9": "取消成功", + "d0": "首頁", + "d1": "交易", + "d2": "資產", + "d3": "請輸入搜索關鍵詞", + "d4": "全部", + "d5": "主板", + "d6": "總資產折合", + "d7": "資金賬戶", + "d8": "劃轉", + "d9": "搜索幣種", + "e0": "隱藏", + "e1": "餘額資產", + "e2": "凍結", + "e3": "折合", + "e4": "合約賬戶", + "e5": "合約折合", + "e6": "礦工等級", + "e7": "礦工", + "h1": "賬單", + "h2": "名稱" + }, + "accountSettings": { + "a0": "賬號設置", + "a1": "頭像", + "a2": "暱稱", + "a3": "主賬號", + "a4": "手機號", + "a5": "解綁", + "a6": "綁定", + "a7": "郵箱綁定", + "a8": "切換賬戶", + "a9": "退出登錄", + "b0": "修改暱稱", + "b1": "請輸入暱稱", + "b2": "語言", + "b3": "聯系資訊", + "b4": "常規諮詢", + "b5": "客戶服務", + "b6": "媒體合作", + "b7": "需要任何幫助請聯繫我們" + }, + "assets": { + "a0": "提幣地址管理", + "a1": "地址簿可以用來管理您的常用地址,往地址簿中存在的地址發起提幣時,無需進行多重校驗", + "a2": "已支持自動提幣,使用{name}提幣時,只允許網地址簿中存在的地址發起提幣", + "a3": "刪除地址", + "a4": "添加地址", + "a5": "請選擇要刪除的地址", + "a6": "是否刪除當前選中地址", + "a7": "流水", + "a8": "總額", + "a9": "可用", + "b0": "凍結", + "b1": "資金賬戶", + "b2": "合約賬戶", + "b3": "槓桿賬戶", + "b4": "理財賬戶", + "b5": "請輸入搜索關鍵詞", + "b6": "提幣", + "b7": "請選擇鏈類型", + "b8": "提幣地址", + "b9": "請輸入地址", + "c0": "數量", + "c1": "餘額", + "c2": "請輸入數量", + "c3": "全部", + "c4": "手續費", + "c5": "請仔細檢查並輸入正確的提幣錢包地址。", + "c6": "發送不對應的數字貨幣到錢包地址會造成永久性的損失。", + "c7": "提幣手續費將從提幣數量中扣除。", + "c8": "提幣記錄", + "c9": "時間", + "d0": "狀態", + "d1": "審核中", + "d2": "成功", + "d3": "失敗", + "d4": "查看更多", + "d5": "提交成功,正在審核", + "d6": "編輯", + "d7": "添加", + "d8": "地址", + "d9": "請輸入或粘貼地址", + "e0": "備註", + "e1": "請輸入備註", + "e2": "請填寫地址", + "e3": "請填寫備註", + "e4": "操作成功", + "e5": "充幣", + "e6": "掃描上方二維碼獲取充幣地址", + "e7": "充幣地址", + "e8": "充幣數量", + "e9": "請輸入充幣數量", + "f0": "此地址是您最新的充值地址,當系統收到充值時,將進行自動入賬。", + "f1": "轉賬需要由整個區塊鍊網絡進行確認,到達{num}個網絡確認時,您的{name}將被自動存入賬戶中。", + "f2": "個網絡確認時,您的", + "f3": "請只發送{name}到此地址,發送其他數字貨幣到此地址會造成永久性的損失。", + "f4": "充幣記錄", + "f5": "請使用 {name} 的網路發送。" + }, + "auth": { + "a0": "身份認證", + "a1": "實名認證", + "a2": "未認證", + "a3": "已認證", + "a4": "高級認證", + "a5": "審核中", + "a6": "認證失敗", + "a7": "國籍", + "a8": "請選擇國籍", + "a9": "真實姓名", + "b0": "請輸入真實姓名", + "b1": "證件號碼", + "b2": "請輸入證件號碼", + "b3": "確認", + "b4": "認證成功", + "b5": "請上傳證件正面照片", + "b6": "請上傳證件背面", + "b7": "請上傳手持證件照", + "b8": "確保照片清晰無水印,且上半身完整", + "b9": "文件尺寸過大,不得超過", + "c0": "文件類型錯誤", + "c1": "上傳成功", + "c2": "請上傳證件背面照", + "c3": "請上傳證件正面照", + "c4": "上傳成功,請等待審核", + "d0": "出生日期", + "d1": "證件類型", + "d2": "身份證", + "d3": "駕駛證", + "d4": "護照", + "d5": "居住地址", + "d6": "請輸入居住地址", + "d7": "城市", + "d8": "請輸入所在城市", + "d9": "郵遞區號", + "d10": "請輸入郵遞區號", + "d11": "電話號碼", + "d12": "請輸入手機號", + "d13": "請選擇", + "SelectAreaCode": "選擇區號" + }, + "exchange": { + "a0": "幣幣", + "a1": "申購", + "a2": "合約", + "a3": "交易", + "a4": "當前委託", + "a5": "歷史委託", + "a6": "添加成功", + "a7": "取消成功", + "a8": "發行總量", + "a9": "流通總量", + "b0": "發行價格", + "b1": "發行時間", + "b2": "白皮書地址", + "b3": "官網地址", + "b4": "簡介", + "b5": "買", + "b6": "賣", + "b7": "委託價", + "b8": "類型", + "b9": "限價交易", + "c0": "市價交易", + "c1": "已成交", + "c2": "總計", + "c3": "買入", + "c4": "賣出", + "c5": "數量", + "c6": "在最佳市場價格成交", + "c7": "總價", + "c8": "可用數量", + "c9": "總值", + "d0": "登錄", + "d1": "分時圖", + "d2": "價格", + "d3": "最新成交", + "d4": "時間", + "d5": "方向", + "d6": "限價", + "d7": "市價", + "d8": "請輸入價格", + "d9": "請輸入數量", + "e0": "請輸入總價", + "e1": "下單成功", + "e2": "平均價格", + "e3": "最高", + "e4": "最低", + "e5": "量", + "e6": "買賣盤", + "e7": "幣種信息", + "e8": "分鐘", + "e9": "小時", + "f0": "天", + "f1": "週", + "f2": "月", + "f3": "買價", + "f4": "賣價", + "f5": "幣幣交易", + "f6": "請輸入搜索關鍵詞", + "f7": "交易對", + "f8": "最新價", + "f9": "漲跌幅", + "g0": "自選", + "g1": "我的委託", + "g2": "撤銷委託", + "g3": "操作", + "g4": "撤銷", + "g5": "是否撤銷當前委託", + "g6": "撤銷成功" + }, + "option": { + "a0": "期權", + "a1": "距離交割", + "a2": "看多", + "a3": "看空", + "a4": "收益率", + "a5": "購買", + "a6": "多", + "a7": "空", + "a8": "當前", + "a9": "下期", + "b0": "看平", + "b1": "漲幅選擇", + "b2": "收益率", + "b3": "購買數量", + "b4": "請輸入數量", + "b5": "餘額", + "b6": "預計收益", + "b7": "立即購買", + "b8": "漲", + "b9": "平", + "c0": "跌", + "c1": "購買成功", + "c2": "詳情", + "c3": "訂單號", + "c4": "開盤價", + "c5": "收盤價", + "c6": "買入時間", + "c7": "買入數量", + "c8": "購買類型", + "c9": "狀態", + "d0": "交割結果", + "d1": "結算數量", + "d2": "交割時間", + "d3": "查看更多", + "d4": "購買期權", + "d5": "等待交割", + "d6": "我的交割", + "d7": "交割記錄", + "d8": "分鐘", + "d9": "小時", + "e0": "天", + "e1": "週", + "e2": "月", + "e3": "方向", + "e4": "漲跌幅" + }, + "purchase": { + "a0": "發行價", + "a1": "申購幣種", + "a2": "預計上線時間", + "a3": "開始申購時間", + "a4": "結束申購時間", + "a5": "申購", + "a6": "請選擇申購幣種", + "a7": "購買數量", + "a8": "請輸入申購數量", + "a9": "全部", + "b0": "立即申購", + "b1": "申購週期", + "b2": "項目預熱", + "b3": "開始申購", + "b4": "結束申購", + "b5": "公佈結果", + "b6": "項目詳情", + "b7": "是否使用", + "b8": "購買", + "b9": "申購成功" + }, + "reg": { + "a0": "手機註冊", + "a1": "郵箱註冊", + "a2": "手機", + "a3": "請輸入手機號", + "a4": "郵箱", + "a5": "請輸入郵箱號", + "a6": "驗證碼", + "a7": "請輸入驗證碼", + "a8": "密碼", + "a9": "請輸入密碼", + "b0": "確認密碼", + "b1": "請確認密碼", + "b2": "推薦人", + "b3": "請輸入推薦人", + "b4": "選填", + "b5": "您已同意", + "b6": "用戶協議", + "b7": "並了解我們的", + "b8": "隱私協議", + "b9": "註冊", + "c0": "已有賬號", + "c1": "立即登錄", + "c2": "請閱讀並同意協議", + "c3": "請填寫手機號", + "c4": "請填寫郵箱號", + "c5": "註冊成功", + "c6": "邀請碼(必填)", + "c7": "請填寫邀請碼" + }, + "safe": { + "a0": "解綁", + "a1": "綁定", + "a2": "郵箱", + "a3": "郵箱號", + "a4": "請輸入郵箱號", + "a5": "郵箱驗證碼", + "a6": "請輸入驗證碼", + "a7": "驗證碼", + "a8": "解綁成功", + "a9": "綁定成功", + "b0": "忘記登錄密碼", + "b1": "賬號", + "b2": "請輸入郵件號碼", + "b3": "新密碼", + "b4": "請輸入新密碼", + "b5": "確認密碼", + "b6": "請確認密碼", + "b7": "確認修改", + "b8": "請輸入正確的手機或郵箱號", + "b9": "谷歌驗證器", + "c0": "操作方法:下載並打開谷歌驗證器,掃描下方二維碼或手動輸入秘鑰添加驗證令牌", + "c1": "複製密鑰", + "c2": "我已經妥善保存密鑰,丟失後將不可找回", + "c3": "下一步", + "c4": "短信驗證碼", + "c5": "谷歌驗證碼", + "c6": "確認綁定", + "c7": "安全中心", + "c8": "登錄密碼", + "c9": "修改", + "d0": "設置", + "d1": "交易密碼", + "d2": "手機", + "d3": "修改成功", + "d4": "手機號", + "d5": "請輸入手機號", + "d6": "請輸入短信驗證碼", + "d7": "關閉", + "d8": "開啟", + "d9": "驗證", + "e0": "短信", + "e1": "關閉成功", + "e2": "開啟成功", + "e3": "確認", + "e4": "設置成功" + }, + "transfer": { + "a0": "劃轉記錄", + "a1": "成功", + "a2": "數量", + "a3": "方向", + "a4": "資金賬戶", + "a5": "合約賬戶", + "a6": "槓桿賬戶", + "a7": "理財賬戶", + "a8": "劃轉", + "a9": "從", + "b0": "至", + "b1": "劃轉幣種", + "b2": "餘額", + "b3": "全部", + "b4": "已劃轉" + }, + "notice": { + "a0": "詳情", + "a1": "消息通知", + "a2": "公告", + "a3": "消息" + }, + "invite": { + "a0": "邀請好友", + "a1": "合夥人", + "a2": "尊享交易返佣", + "a3": "普通用戶", + "a4": "我的身份", + "a5": "尊享身份", + "a6": "我的邀請碼", + "a7": "複製邀請二維碼", + "a8": "複製邀請鏈接", + "a9": "我的推廣", + "b0": "推廣總人數", + "b1": "人", + "b2": "總收益折合", + "b3": "推廣記錄", + "b4": "直接邀請", + "b5": "返佣記錄", + "b6": "等級", + "b7": "級別設定", + "b8": "晉升條件", + "b9": "分紅權益", + "c0": "暱稱", + "c1": "推廣人數", + "c2": "收益折合", + "c3": "邀請記錄", + "c4": "返佣記錄", + "c5": "等級權益說明", + "c6": "等級", + "c7": "權益", + "c8": "說明", + "c9": "我的權益" + }, + "help": { + "a0": "詳情", + "a1": "學院", + "a2": "分類", + "a3": "學院" + }, + "login": { + "a0": "手機或郵箱號", + "a1": "請輸入手機或郵箱號", + "a2": "密碼", + "a3": "請輸入密碼", + "a4": "登錄", + "a5": "忘記密碼", + "a6": "沒有賬號", + "a7": "立即註冊", + "a8": "手機", + "a9": "郵箱", + "b0": "完成" + }, + "contract": { + "a0": "開倉", + "a1": "持倉", + "a2": "委託", + "a3": "歷史", + "a4": "合約交易", + "a5": "開通成功", + "a6": "交易類型", + "a7": "已成交", + "a8": "委託總量", + "a9": "成交均價", + "b0": "委託價格", + "b1": "保證金", + "b2": "手續費", + "b3": "狀態", + "b4": "操作", + "b5": "撤單", + "b6": "已撤銷", + "b7": "未成交", + "b8": "部分成交", + "b9": "全部成交", + "c0": "開多", + "c1": "平空", + "c2": "開空", + "c3": "平多", + "c4": "溫馨提示", + "c5": "是否撤銷當前訂單", + "c6": "撤銷成功", + "c7": "盈虧", + "c8": "分享", + "c9": "委託詳情", + "d0": "暫無數據", + "d1": "價格", + "d2": "保證金", + "d3": "成交時間", + "d4": "用戶權益", + "d5": "未實現盈虧", + "d6": "風險率", + "d7": "市價", + "d8": "張", + "d9": "佔用保證金", + "e0": "看漲", + "e1": "可開多", + "e2": "看跌", + "e3": "可開空", + "e4": "可用", + "e5": "劃轉", + "e6": "資金費率", + "e7": "距離結算", + "e8": "多", + "e9": "空", + "f0": "資金劃轉", + "f1": "計算器", + "f2": "關於合約", + "f3": "風險保障基金", + "f4": "資金費用歷史", + "f5": "普通委託", + "f6": "市價委託", + "f7": "是否以", + "f8": "的價格", + "f9": "倍槓桿開倉", + "g0": "開多", + "g1": "開空", + "g2": "委託成功", + "g3": "僅顯示當前合約", + "g4": "可平量", + "g5": "委託凍結", + "g6": "開倉平均價", + "g7": "結算基準價", + "g8": "預估強平價", + "g9": "已結算收益", + "h0": "收益率", + "h1": "止盈", + "h2": "止損", + "h3": "平倉", + "h4": "市價全平", + "h5": "止盈止損", + "h6": "平", + "h7": "請輸入平倉價格", + "h8": "限價", + "h9": "請輸入平倉數量", + "i0": "可平", + "i1": "開倉均價", + "i2": "最新成交價", + "i3": "請輸入價格", + "i4": "止盈觸發價", + "i5": "市價至", + "i6": "時將觸發止盈委託,成交後預計盈虧", + "i7": "止損觸發價", + "i8": "時將觸發止損委託,成交後預計盈虧", + "i9": "確定", + "j0": "平倉成功", + "j1": "是否市價全平", + "j2": "全平", + "j3": "成功", + "j4": "設置成功", + "j5": "神機妙算,無可匹敵", + "j6": "做", + "j7": "平倉價格", + "j8": "數字資產交易平台", + "j9": "當1遇上2 3的火熱飛升之路", + "k0": "開倉價格", + "k1": "最新價格", + "k2": "掃碼了解更多", + "k3": "結算盈虧", + "k4": "截圖成功,已保存到本地", + "k5": "截圖失敗", + "k6": "長按截圖", + "k7": "一鍵全平", + "k8": "一鍵反向", + "k9": "是否一鍵全平", + "l0": "全平成功", + "l1": "是否一鍵反向", + "l2": "反向成功", + "l3": "平空" + }, + "otc": { + "a0": "發布廣告", + "a1": "訂單", + "a2": "交易幣種", + "a3": "我的訂單", + "a4": "我的廣告", + "a5": "購買", + "a6": "出售", + "a7": "總數", + "a8": "剩餘", + "a9": "限量", + "b0": "單價", + "b1": "支付方式", + "b2": "操作", + "b3": "總量", + "b4": "請選擇支付方式", + "b5": "請輸入數量", + "b6": "下單", + "b7": "支付寶", + "b8": "微信", + "b9": "銀行卡", + "c0": "下單成功", + "c1": "狀態", + "c2": "廣告編號", + "c3": "總價", + "c4": "數量", + "c5": "發佈時間", + "c6": "下架", + "c7": "已撤銷", + "c8": "交易中", + "c9": "已完成", + "d0": "溫馨提示", + "d1": "是否下架當前廣告", + "d2": "確定", + "d3": "取消", + "d4": "撤銷成功", + "d5": "法幣賬戶", + "d6": "凍結", + "d7": "支付寶賬號", + "d8": "請輸入賬號", + "d9": "姓名", + "e0": "請輸入姓名", + "e1": "付款碼", + "e2": "綁定", + "e3": "微信賬號", + "e4": "銀行名稱", + "e5": "請輸入銀行名稱", + "e6": "開戶支行", + "e7": "請輸入開戶支行", + "e8": "銀行卡號", + "e9": "請輸入銀行卡號", + "f0": "編輯成功", + "f1": "添加成功", + "f2": "賣出", + "f3": "買入", + "f4": "訂單詳情", + "f5": "訂單號", + "f6": "賬號", + "f7": "開戶銀行", + "f8": "剩餘時間", + "f9": "分", + "g0": "秒", + "g1": "上傳支付憑證", + "g2": "確認付款", + "g3": "取消訂單", + "g4": "確認收款", + "g5": "未到賬", + "g6": "是否取消當前訂單", + "g7": "訂單已取消", + "g8": "確認當前已付款", + "g9": "操作成功", + "h0": "確認收款後將掛賣資產將自動劃轉", + "h1": "確認未收到款項後,此訂單將自動進入申訴", + "h2": "出售訂單", + "h3": "購買訂單", + "h4": "廣告購買訂單", + "h5": "廣告出售訂單", + "h6": "時間", + "h7": "詳情", + "h8": "全部", + "h9": "已關閉", + "i0": "待支付", + "i1": "待確認", + "i2": "申訴中", + "i3": "廣告類型", + "i4": "請選擇交易類型", + "i5": "請選擇交易幣種", + "i6": "價格", + "i7": "請輸入價格", + "i8": "最低價", + "i9": "請輸入最低價", + "j0": "最高價", + "j1": "請輸入最高價", + "j2": "備註", + "j3": "請輸入備註", + "j4": "發布", + "j5": "發布成功", + "j6": "收款管道", + "j7": "最低量", + "j8": "最高量", + "j9": "請輸入最低交易量", + "k0": "請輸入最高交易量" + }, + "first": { + "a0": "去實名", + "a1": "關於我們", + "a2": "歡迎您!", + "a3": "止盈止損設定", + "a4": "以當前最新價交易", + "a5": "持有倉位", + "a6": "訂單管理", + "a7": "全部委託", + "a8": "歷史記錄", + "a9": "倍數", + "b0": "確定要登出嗎?", + "b1": "登入或注册", + "b2": "Hi,歡迎使用CATYcoin", + "b3": "量", + "b4": "現貨指數", + "b5": "合約指數", + "b6": "支持多種方式購買", + "b7": "快捷買幣", + "b8": "永續", + "b9": "當前地區暫未開放", + "c0": "買入", + "c1": "賣出", + "c2": "時間", + "c3": "總價", + "c4": "數量", + "c5": "標記價", + "c6": "擔保資產", + "c7": "成交量" + }, + "recharge": { + "a0": "切換幣種", + "a1": "*改地址只能接收", + "a2": "的資產,如果充值其他幣種,將無法找回!", + "a3": "推薦使用ERC20進行收款", + "a4": "複製地址", + "a5": "*轉帳前請務必確認地址及資訊無誤!一旦轉出,不可撤回!", + "a6": "請重新生成" + }, + "currency": { + "a0": "法幣交易", + "a1": "我要買", + "a2": "我要賣", + "a3": "一鍵買幣", + "a4": "一鍵賣幣", + "a5": "按數量購買", + "a6": "按金額購買", + "a55": "按數量出售", + "a66": "按金額出售", + "a7": "請輸入購買數量", + "a8": "請輸入購買金額", + "a9": "請輸入出售數量", + "b0": "請輸入出售金額", + "b1": "單價", + "b2": "0手續費購買", + "b3": "0手續費出售", + "b4": "可用餘額不足", + "b5": "請先完成高級認證", + "b6": "去認證", + "b7": "確認購買", + "b8": "確認出售" + }, + "cxiNewText": { + "a0": "前10名", + "a1": "500萬+", + "a2": "< 0.10%", + "a3": "200+", + "a4": "全球排名", + "a5": "用戶信任我們", + "a6": "超低費用", + "a7": "國家", + "a21": "立即賺取收益", + "a22": "創建個人加密貨幣投資組合", + "a23": "購買、交易和持有100多種加密貨幣", + "a24": "向賬戶充值", + "a25": "通過電子郵件註冊", + "a38": "隨時隨地,開啟交易。", + "a39": "通過我們的應用程序和網頁,隨時安全又便利地開始交易。", + "a41": "值得用戶信賴的加密貨幣交易平台", + "a42": "我們終力承諾以嚴格協議和行業領先的技術措施為用戶安全駕駛護航。", + "a43": "用戶安全資產資金", + "a44": "我們將所有交易費用的10%存入與安全資產資金,為用戶資金提供部分保障。", + "a45": "個性化訪問控制", + "a46": "個性化訪問控制限制訪問個人賬戶的設備和地址,讓用戶無後顧之憂。", + "a47": "先進數據加密", + "a48": "個人交易數據通過端到端加密獲得保障,僅限本人訪問個人信息。", + "a57": "點擊前往", + "a71": "新手指引", + "a72": "即刻開啟數字貨幣交易學習", + "a77": "如何購買數字貨幣", + "a78": "如何出售數字貨幣", + "a79": "如何交易數字貨幣", + "a80": "交易市場", + "a81": "24小時市場走勢", + "a82": "將添加加密貨幣資金添加到您的錢包並立即開始交易" + }, + "homeNewText": { + "aa1": "加密貨幣之門", + "aa2": "安全,快捷,輕鬆交易超過100種加密貨幣", + "aa3": "透過電子郵件註冊", + "aa4": "立即開始交易", + "aa5": "市場趨勢", + "aa6": "數位資產行情速遞", + "aa7": "幣種", + "bb1": "最新價(USD)", + "bb2": "24h漲幅", + "bb3": "24h成交量", + "bb4": "適合所有人的加密貨幣交易所", + "bb5": "在這裡開始交易並體驗更好的加密貨幣之旅", + "bb6": "個人", + "bb7": "適合所有人的加密貨幣交易所。 最值得信賴的領先交易平台,幣種豐富", + "cc1": "商務", + "cc2": "專為企業和機構打造。 為機構投資者和企業提供加密解決方案", + "cc3": "開發者", + "cc4": "專為開發者打造,供開發人員建構web3未來的工具和API", + "cc6": "掃描二維碼", + "cc7": "下載 Android/IOS App", + "dd1": "安全穩定零事故", + "dd2": "多重安全策略保障、100%備用金保證,成立至今未發生安全事故、", + "dd3": "簡單便捷交易加密資產", + "dd4": "在CATYcoin,產品簡單易懂、交易流程便捷,一站式區塊鏈資產服務平台", + "dd5": "衍生性商品", + "dd6": "您可以高達150倍的槓桿率交易100+加密貨幣的合約,賺取高額收益", + "ee1": "多終端支持", + "ee2": "隨時隨地交易數字資產", + "ee3": "支持豐富的資產種類,幣種信息一應俱全", + "ee4": "快速瞭解數字資產交易流程", + "ee5": "開啓加密之旅", + "ee6": "圖形驗證", + "ee7": "填寫圖形驗證", + "dd1": "驗證成功", + "dd2": "驗證失敗", + "dd3": "請完成安全驗證", + "dd4": "滑動滑桿完成拼圖", + "hh0": "金錢的未來就在這裡", + "hh1": "尋找交易良機", + "hh2": "安全,快捷,輕鬆交易超過100種加密貨幣", + "hh3": "立即嘗試我們的加密貨幣交易所", + "hh4": "快速開啟您的交易之旅", + "hh5": "註冊{name}帳戶", + "hh6": "註冊", + "hh7": "在這裡探索我們的產品和服務", + "hh8": "安全無小事,為了保護你的資產與資訊安全,我們進無止境", + "hh9": "現貨", + "hh10": "使用全面的工具交易加密貨幣。", + "hh11": "衍生產品", + "hh12": "使用世界上最好的加密貨幣交易所交易合約。", + "hh13": "交易機器人", + "hh14": "在不監控市場的情況下賺取被動利潤。", + "hh15": "買幣", + "hh16": "一鍵購買加密貨幣。", + "hh17": "{nem} 賺幣", + "hh18": "透過專業資產管理人投資賺取穩定收益。", + "hh19": "槓桿交易", + "hh20": "借入、交易和償還,透過槓桿交易槓桿化您的資產。", + "hh21": "您可信任且安全的加密貨幣交易所", + "hh22": "安全資產儲存", + "hh23": "我們領先的加密和儲存系統確保您的資產始終安全保密。", + "hh24": "強大的賬戶安全性", + "hh25": "我們堅持最高的安全標準並實施最嚴格的安全措施,以確保您的帳戶安全。", + "hh26": "可信任平台", + "hh27": "我們有一個安全的設計基礎,以確保快速檢測和回應任何網絡攻擊。", + "hh28": "資產儲備證明—資產透明度", + "hh29": "資產儲備證明(PoR)是一種廣泛使用的證明區塊鏈資產託管的方法。 這意味著{name} 擁有涵蓋我們賬面上所有用戶資產的資金。", + "hh30": "隨時隨地皆可交易", + "hh31": "無論是 APP 還是 WEB,都可以快速開啟您的交易", + "hh32": "立即開啟您的數位貨幣之旅", + "hh33": "立即註冊", + "hh34": "我們是投資者購買、銷售和管理加密貨幣最值得信賴的地方", + "hh35": "透過電子郵件信箱註冊", + "hh36": "常見問題", + "hh41": "CATYcoin,随时随地交易", + "hh42": "立即交易", + "hh43": "扫码下载CATYcoin APP", + "hh37": "Global Ranking", + "hh38": "users trust us", + "hh39": "Ultra-Low Fees", + "hh40": "Countries" + } +} \ No newline at end of file diff --git a/js_sdk/Sansnn-uQRCode/uqrcode.js b/js_sdk/Sansnn-uQRCode/uqrcode.js new file mode 100644 index 0000000..22a947d --- /dev/null +++ b/js_sdk/Sansnn-uQRCode/uqrcode.js @@ -0,0 +1,1382 @@ +//--------------------------------------------------------------------- +// github https://github.com/Sansnn/uQRCode +//--------------------------------------------------------------------- + +let uQRCode = {}; + +(function() { + //--------------------------------------------------------------------- + // QRCode for JavaScript + // + // Copyright (c) 2009 Kazuhiko Arase + // + // URL: http://www.d-project.com/ + // + // Licensed under the MIT license: + // http://www.opensource.org/licenses/mit-license.php + // + // The word "QR Code" is registered trademark of + // DENSO WAVE INCORPORATED + // http://www.denso-wave.com/qrcode/faqpatent-e.html + // + //--------------------------------------------------------------------- + + //--------------------------------------------------------------------- + // QR8bitByte + //--------------------------------------------------------------------- + + function QR8bitByte(data) { + this.mode = QRMode.MODE_8BIT_BYTE; + this.data = data; + } + + QR8bitByte.prototype = { + + getLength: function(buffer) { + return this.data.length; + }, + + write: function(buffer) { + for (var i = 0; i < this.data.length; i++) { + // not JIS ... + buffer.put(this.data.charCodeAt(i), 8); + } + } + }; + + //--------------------------------------------------------------------- + // QRCode + //--------------------------------------------------------------------- + + function QRCode(typeNumber, errorCorrectLevel) { + this.typeNumber = typeNumber; + this.errorCorrectLevel = errorCorrectLevel; + this.modules = null; + this.moduleCount = 0; + this.dataCache = null; + this.dataList = new Array(); + } + + QRCode.prototype = { + + addData: function(data) { + var newData = new QR8bitByte(data); + this.dataList.push(newData); + this.dataCache = null; + }, + + isDark: function(row, col) { + if (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) { + throw new Error(row + "," + col); + } + return this.modules[row][col]; + }, + + getModuleCount: function() { + return this.moduleCount; + }, + + make: function() { + // Calculate automatically typeNumber if provided is < 1 + if (this.typeNumber < 1) { + var typeNumber = 1; + for (typeNumber = 1; typeNumber < 40; typeNumber++) { + var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel); + + var buffer = new QRBitBuffer(); + var totalDataCount = 0; + for (var i = 0; i < rsBlocks.length; i++) { + totalDataCount += rsBlocks[i].dataCount; + } + + for (var i = 0; i < this.dataList.length; i++) { + var data = this.dataList[i]; + buffer.put(data.mode, 4); + buffer.put(data.getLength(), QRUtil.getLengthInBits(data.mode, typeNumber)); + data.write(buffer); + } + if (buffer.getLengthInBits() <= totalDataCount * 8) + break; + } + this.typeNumber = typeNumber; + } + this.makeImpl(false, this.getBestMaskPattern()); + }, + + makeImpl: function(test, maskPattern) { + + this.moduleCount = this.typeNumber * 4 + 17; + this.modules = new Array(this.moduleCount); + + for (var row = 0; row < this.moduleCount; row++) { + + this.modules[row] = new Array(this.moduleCount); + + for (var col = 0; col < this.moduleCount; col++) { + this.modules[row][col] = null; //(col + row) % 3; + } + } + + this.setupPositionProbePattern(0, 0); + this.setupPositionProbePattern(this.moduleCount - 7, 0); + this.setupPositionProbePattern(0, this.moduleCount - 7); + this.setupPositionAdjustPattern(); + this.setupTimingPattern(); + this.setupTypeInfo(test, maskPattern); + + if (this.typeNumber >= 7) { + this.setupTypeNumber(test); + } + + if (this.dataCache == null) { + this.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList); + } + + this.mapData(this.dataCache, maskPattern); + }, + + setupPositionProbePattern: function(row, col) { + + for (var r = -1; r <= 7; r++) { + + if (row + r <= -1 || this.moduleCount <= row + r) continue; + + for (var c = -1; c <= 7; c++) { + + if (col + c <= -1 || this.moduleCount <= col + c) continue; + + if ((0 <= r && r <= 6 && (c == 0 || c == 6)) || + (0 <= c && c <= 6 && (r == 0 || r == 6)) || + (2 <= r && r <= 4 && 2 <= c && c <= 4)) { + this.modules[row + r][col + c] = true; + } else { + this.modules[row + r][col + c] = false; + } + } + } + }, + + getBestMaskPattern: function() { + + var minLostPoint = 0; + var pattern = 0; + + for (var i = 0; i < 8; i++) { + + this.makeImpl(true, i); + + var lostPoint = QRUtil.getLostPoint(this); + + if (i == 0 || minLostPoint > lostPoint) { + minLostPoint = lostPoint; + pattern = i; + } + } + + return pattern; + }, + + createMovieClip: function(target_mc, instance_name, depth) { + + var qr_mc = target_mc.createEmptyMovieClip(instance_name, depth); + var cs = 1; + + this.make(); + + for (var row = 0; row < this.modules.length; row++) { + + var y = row * cs; + + for (var col = 0; col < this.modules[row].length; col++) { + + var x = col * cs; + var dark = this.modules[row][col]; + + if (dark) { + qr_mc.beginFill(0, 100); + qr_mc.moveTo(x, y); + qr_mc.lineTo(x + cs, y); + qr_mc.lineTo(x + cs, y + cs); + qr_mc.lineTo(x, y + cs); + qr_mc.endFill(); + } + } + } + + return qr_mc; + }, + + setupTimingPattern: function() { + + for (var r = 8; r < this.moduleCount - 8; r++) { + if (this.modules[r][6] != null) { + continue; + } + this.modules[r][6] = (r % 2 == 0); + } + + for (var c = 8; c < this.moduleCount - 8; c++) { + if (this.modules[6][c] != null) { + continue; + } + this.modules[6][c] = (c % 2 == 0); + } + }, + + setupPositionAdjustPattern: function() { + + var pos = QRUtil.getPatternPosition(this.typeNumber); + + for (var i = 0; i < pos.length; i++) { + + for (var j = 0; j < pos.length; j++) { + + var row = pos[i]; + var col = pos[j]; + + if (this.modules[row][col] != null) { + continue; + } + + for (var r = -2; r <= 2; r++) { + + for (var c = -2; c <= 2; c++) { + + if (r == -2 || r == 2 || c == -2 || c == 2 || + (r == 0 && c == 0)) { + this.modules[row + r][col + c] = true; + } else { + this.modules[row + r][col + c] = false; + } + } + } + } + } + }, + + setupTypeNumber: function(test) { + + var bits = QRUtil.getBCHTypeNumber(this.typeNumber); + + for (var i = 0; i < 18; i++) { + var mod = (!test && ((bits >> i) & 1) == 1); + this.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod; + } + + for (var i = 0; i < 18; i++) { + var mod = (!test && ((bits >> i) & 1) == 1); + this.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod; + } + }, + + setupTypeInfo: function(test, maskPattern) { + + var data = (this.errorCorrectLevel << 3) | maskPattern; + var bits = QRUtil.getBCHTypeInfo(data); + + // vertical + for (var i = 0; i < 15; i++) { + + var mod = (!test && ((bits >> i) & 1) == 1); + + if (i < 6) { + this.modules[i][8] = mod; + } else if (i < 8) { + this.modules[i + 1][8] = mod; + } else { + this.modules[this.moduleCount - 15 + i][8] = mod; + } + } + + // horizontal + for (var i = 0; i < 15; i++) { + + var mod = (!test && ((bits >> i) & 1) == 1); + + if (i < 8) { + this.modules[8][this.moduleCount - i - 1] = mod; + } else if (i < 9) { + this.modules[8][15 - i - 1 + 1] = mod; + } else { + this.modules[8][15 - i - 1] = mod; + } + } + + // fixed module + this.modules[this.moduleCount - 8][8] = (!test); + + }, + + mapData: function(data, maskPattern) { + + var inc = -1; + var row = this.moduleCount - 1; + var bitIndex = 7; + var byteIndex = 0; + + for (var col = this.moduleCount - 1; col > 0; col -= 2) { + + if (col == 6) col--; + + while (true) { + + for (var c = 0; c < 2; c++) { + + if (this.modules[row][col - c] == null) { + + var dark = false; + + if (byteIndex < data.length) { + dark = (((data[byteIndex] >>> bitIndex) & 1) == 1); + } + + var mask = QRUtil.getMask(maskPattern, row, col - c); + + if (mask) { + dark = !dark; + } + + this.modules[row][col - c] = dark; + bitIndex--; + + if (bitIndex == -1) { + byteIndex++; + bitIndex = 7; + } + } + } + + row += inc; + + if (row < 0 || this.moduleCount <= row) { + row -= inc; + inc = -inc; + break; + } + } + } + + } + + }; + + QRCode.PAD0 = 0xEC; + QRCode.PAD1 = 0x11; + + QRCode.createData = function(typeNumber, errorCorrectLevel, dataList) { + + var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel); + + var buffer = new QRBitBuffer(); + + for (var i = 0; i < dataList.length; i++) { + var data = dataList[i]; + buffer.put(data.mode, 4); + buffer.put(data.getLength(), QRUtil.getLengthInBits(data.mode, typeNumber)); + data.write(buffer); + } + + // calc num max data. + var totalDataCount = 0; + for (var i = 0; i < rsBlocks.length; i++) { + totalDataCount += rsBlocks[i].dataCount; + } + + if (buffer.getLengthInBits() > totalDataCount * 8) { + throw new Error("code length overflow. (" + + buffer.getLengthInBits() + + ">" + + totalDataCount * 8 + + ")"); + } + + // end code + if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) { + buffer.put(0, 4); + } + + // padding + while (buffer.getLengthInBits() % 8 != 0) { + buffer.putBit(false); + } + + // padding + while (true) { + + if (buffer.getLengthInBits() >= totalDataCount * 8) { + break; + } + buffer.put(QRCode.PAD0, 8); + + if (buffer.getLengthInBits() >= totalDataCount * 8) { + break; + } + buffer.put(QRCode.PAD1, 8); + } + + return QRCode.createBytes(buffer, rsBlocks); + } + + QRCode.createBytes = function(buffer, rsBlocks) { + + var offset = 0; + + var maxDcCount = 0; + var maxEcCount = 0; + + var dcdata = new Array(rsBlocks.length); + var ecdata = new Array(rsBlocks.length); + + for (var r = 0; r < rsBlocks.length; r++) { + + var dcCount = rsBlocks[r].dataCount; + var ecCount = rsBlocks[r].totalCount - dcCount; + + maxDcCount = Math.max(maxDcCount, dcCount); + maxEcCount = Math.max(maxEcCount, ecCount); + + dcdata[r] = new Array(dcCount); + + for (var i = 0; i < dcdata[r].length; i++) { + dcdata[r][i] = 0xff & buffer.buffer[i + offset]; + } + offset += dcCount; + + var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount); + var rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1); + + var modPoly = rawPoly.mod(rsPoly); + ecdata[r] = new Array(rsPoly.getLength() - 1); + for (var i = 0; i < ecdata[r].length; i++) { + var modIndex = i + modPoly.getLength() - ecdata[r].length; + ecdata[r][i] = (modIndex >= 0) ? modPoly.get(modIndex) : 0; + } + + } + + var totalCodeCount = 0; + for (var i = 0; i < rsBlocks.length; i++) { + totalCodeCount += rsBlocks[i].totalCount; + } + + var data = new Array(totalCodeCount); + var index = 0; + + for (var i = 0; i < maxDcCount; i++) { + for (var r = 0; r < rsBlocks.length; r++) { + if (i < dcdata[r].length) { + data[index++] = dcdata[r][i]; + } + } + } + + for (var i = 0; i < maxEcCount; i++) { + for (var r = 0; r < rsBlocks.length; r++) { + if (i < ecdata[r].length) { + data[index++] = ecdata[r][i]; + } + } + } + + return data; + + } + + //--------------------------------------------------------------------- + // QRMode + //--------------------------------------------------------------------- + + var QRMode = { + MODE_NUMBER: 1 << 0, + MODE_ALPHA_NUM: 1 << 1, + MODE_8BIT_BYTE: 1 << 2, + MODE_KANJI: 1 << 3 + }; + + //--------------------------------------------------------------------- + // QRErrorCorrectLevel + //--------------------------------------------------------------------- + + var QRErrorCorrectLevel = { + L: 1, + M: 0, + Q: 3, + H: 2 + }; + + //--------------------------------------------------------------------- + // QRMaskPattern + //--------------------------------------------------------------------- + + var QRMaskPattern = { + PATTERN000: 0, + PATTERN001: 1, + PATTERN010: 2, + PATTERN011: 3, + PATTERN100: 4, + PATTERN101: 5, + PATTERN110: 6, + PATTERN111: 7 + }; + + //--------------------------------------------------------------------- + // QRUtil + //--------------------------------------------------------------------- + + var QRUtil = { + + PATTERN_POSITION_TABLE: [ + [], + [6, 18], + [6, 22], + [6, 26], + [6, 30], + [6, 34], + [6, 22, 38], + [6, 24, 42], + [6, 26, 46], + [6, 28, 50], + [6, 30, 54], + [6, 32, 58], + [6, 34, 62], + [6, 26, 46, 66], + [6, 26, 48, 70], + [6, 26, 50, 74], + [6, 30, 54, 78], + [6, 30, 56, 82], + [6, 30, 58, 86], + [6, 34, 62, 90], + [6, 28, 50, 72, 94], + [6, 26, 50, 74, 98], + [6, 30, 54, 78, 102], + [6, 28, 54, 80, 106], + [6, 32, 58, 84, 110], + [6, 30, 58, 86, 114], + [6, 34, 62, 90, 118], + [6, 26, 50, 74, 98, 122], + [6, 30, 54, 78, 102, 126], + [6, 26, 52, 78, 104, 130], + [6, 30, 56, 82, 108, 134], + [6, 34, 60, 86, 112, 138], + [6, 30, 58, 86, 114, 142], + [6, 34, 62, 90, 118, 146], + [6, 30, 54, 78, 102, 126, 150], + [6, 24, 50, 76, 102, 128, 154], + [6, 28, 54, 80, 106, 132, 158], + [6, 32, 58, 84, 110, 136, 162], + [6, 26, 54, 82, 110, 138, 166], + [6, 30, 58, 86, 114, 142, 170] + ], + + G15: (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0), + G18: (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0), + G15_MASK: (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1), + + getBCHTypeInfo: function(data) { + var d = data << 10; + while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) { + d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15))); + } + return ((data << 10) | d) ^ QRUtil.G15_MASK; + }, + + getBCHTypeNumber: function(data) { + var d = data << 12; + while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) { + d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18))); + } + return (data << 12) | d; + }, + + getBCHDigit: function(data) { + + var digit = 0; + + while (data != 0) { + digit++; + data >>>= 1; + } + + return digit; + }, + + getPatternPosition: function(typeNumber) { + return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1]; + }, + + getMask: function(maskPattern, i, j) { + + switch (maskPattern) { + + case QRMaskPattern.PATTERN000: + return (i + j) % 2 == 0; + case QRMaskPattern.PATTERN001: + return i % 2 == 0; + case QRMaskPattern.PATTERN010: + return j % 3 == 0; + case QRMaskPattern.PATTERN011: + return (i + j) % 3 == 0; + case QRMaskPattern.PATTERN100: + return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0; + case QRMaskPattern.PATTERN101: + return (i * j) % 2 + (i * j) % 3 == 0; + case QRMaskPattern.PATTERN110: + return ((i * j) % 2 + (i * j) % 3) % 2 == 0; + case QRMaskPattern.PATTERN111: + return ((i * j) % 3 + (i + j) % 2) % 2 == 0; + + default: + throw new Error("bad maskPattern:" + maskPattern); + } + }, + + getErrorCorrectPolynomial: function(errorCorrectLength) { + + var a = new QRPolynomial([1], 0); + + for (var i = 0; i < errorCorrectLength; i++) { + a = a.multiply(new QRPolynomial([1, QRMath.gexp(i)], 0)); + } + + return a; + }, + + getLengthInBits: function(mode, type) { + + if (1 <= type && type < 10) { + + // 1 - 9 + + switch (mode) { + case QRMode.MODE_NUMBER: + return 10; + case QRMode.MODE_ALPHA_NUM: + return 9; + case QRMode.MODE_8BIT_BYTE: + return 8; + case QRMode.MODE_KANJI: + return 8; + default: + throw new Error("mode:" + mode); + } + + } else if (type < 27) { + + // 10 - 26 + + switch (mode) { + case QRMode.MODE_NUMBER: + return 12; + case QRMode.MODE_ALPHA_NUM: + return 11; + case QRMode.MODE_8BIT_BYTE: + return 16; + case QRMode.MODE_KANJI: + return 10; + default: + throw new Error("mode:" + mode); + } + + } else if (type < 41) { + + // 27 - 40 + + switch (mode) { + case QRMode.MODE_NUMBER: + return 14; + case QRMode.MODE_ALPHA_NUM: + return 13; + case QRMode.MODE_8BIT_BYTE: + return 16; + case QRMode.MODE_KANJI: + return 12; + default: + throw new Error("mode:" + mode); + } + + } else { + throw new Error("type:" + type); + } + }, + + getLostPoint: function(qrCode) { + + var moduleCount = qrCode.getModuleCount(); + + var lostPoint = 0; + + // LEVEL1 + + for (var row = 0; row < moduleCount; row++) { + + for (var col = 0; col < moduleCount; col++) { + + var sameCount = 0; + var dark = qrCode.isDark(row, col); + + for (var r = -1; r <= 1; r++) { + + if (row + r < 0 || moduleCount <= row + r) { + continue; + } + + for (var c = -1; c <= 1; c++) { + + if (col + c < 0 || moduleCount <= col + c) { + continue; + } + + if (r == 0 && c == 0) { + continue; + } + + if (dark == qrCode.isDark(row + r, col + c)) { + sameCount++; + } + } + } + + if (sameCount > 5) { + lostPoint += (3 + sameCount - 5); + } + } + } + + // LEVEL2 + + for (var row = 0; row < moduleCount - 1; row++) { + for (var col = 0; col < moduleCount - 1; col++) { + var count = 0; + if (qrCode.isDark(row, col)) count++; + if (qrCode.isDark(row + 1, col)) count++; + if (qrCode.isDark(row, col + 1)) count++; + if (qrCode.isDark(row + 1, col + 1)) count++; + if (count == 0 || count == 4) { + lostPoint += 3; + } + } + } + + // LEVEL3 + + for (var row = 0; row < moduleCount; row++) { + for (var col = 0; col < moduleCount - 6; col++) { + if (qrCode.isDark(row, col) && + !qrCode.isDark(row, col + 1) && + qrCode.isDark(row, col + 2) && + qrCode.isDark(row, col + 3) && + qrCode.isDark(row, col + 4) && + !qrCode.isDark(row, col + 5) && + qrCode.isDark(row, col + 6)) { + lostPoint += 40; + } + } + } + + for (var col = 0; col < moduleCount; col++) { + for (var row = 0; row < moduleCount - 6; row++) { + if (qrCode.isDark(row, col) && + !qrCode.isDark(row + 1, col) && + qrCode.isDark(row + 2, col) && + qrCode.isDark(row + 3, col) && + qrCode.isDark(row + 4, col) && + !qrCode.isDark(row + 5, col) && + qrCode.isDark(row + 6, col)) { + lostPoint += 40; + } + } + } + + // LEVEL4 + + var darkCount = 0; + + for (var col = 0; col < moduleCount; col++) { + for (var row = 0; row < moduleCount; row++) { + if (qrCode.isDark(row, col)) { + darkCount++; + } + } + } + + var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5; + lostPoint += ratio * 10; + + return lostPoint; + } + + }; + + + //--------------------------------------------------------------------- + // QRMath + //--------------------------------------------------------------------- + + var QRMath = { + + glog: function(n) { + + if (n < 1) { + throw new Error("glog(" + n + ")"); + } + + return QRMath.LOG_TABLE[n]; + }, + + gexp: function(n) { + + while (n < 0) { + n += 255; + } + + while (n >= 256) { + n -= 255; + } + + return QRMath.EXP_TABLE[n]; + }, + + EXP_TABLE: new Array(256), + + LOG_TABLE: new Array(256) + + }; + + for (var i = 0; i < 8; i++) { + QRMath.EXP_TABLE[i] = 1 << i; + } + for (var i = 8; i < 256; i++) { + QRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4] ^ + QRMath.EXP_TABLE[i - 5] ^ + QRMath.EXP_TABLE[i - 6] ^ + QRMath.EXP_TABLE[i - 8]; + } + for (var i = 0; i < 255; i++) { + QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i; + } + + //--------------------------------------------------------------------- + // QRPolynomial + //--------------------------------------------------------------------- + + function QRPolynomial(num, shift) { + + if (num.length == undefined) { + throw new Error(num.length + "/" + shift); + } + + var offset = 0; + + while (offset < num.length && num[offset] == 0) { + offset++; + } + + this.num = new Array(num.length - offset + shift); + for (var i = 0; i < num.length - offset; i++) { + this.num[i] = num[i + offset]; + } + } + + QRPolynomial.prototype = { + + get: function(index) { + return this.num[index]; + }, + + getLength: function() { + return this.num.length; + }, + + multiply: function(e) { + + var num = new Array(this.getLength() + e.getLength() - 1); + + for (var i = 0; i < this.getLength(); i++) { + for (var j = 0; j < e.getLength(); j++) { + num[i + j] ^= QRMath.gexp(QRMath.glog(this.get(i)) + QRMath.glog(e.get(j))); + } + } + + return new QRPolynomial(num, 0); + }, + + mod: function(e) { + + if (this.getLength() - e.getLength() < 0) { + return this; + } + + var ratio = QRMath.glog(this.get(0)) - QRMath.glog(e.get(0)); + + var num = new Array(this.getLength()); + + for (var i = 0; i < this.getLength(); i++) { + num[i] = this.get(i); + } + + for (var i = 0; i < e.getLength(); i++) { + num[i] ^= QRMath.gexp(QRMath.glog(e.get(i)) + ratio); + } + + // recursive call + return new QRPolynomial(num, 0).mod(e); + } + }; + + //--------------------------------------------------------------------- + // QRRSBlock + //--------------------------------------------------------------------- + + function QRRSBlock(totalCount, dataCount) { + this.totalCount = totalCount; + this.dataCount = dataCount; + } + + QRRSBlock.RS_BLOCK_TABLE = [ + + // L + // M + // Q + // H + + // 1 + [1, 26, 19], + [1, 26, 16], + [1, 26, 13], + [1, 26, 9], + + // 2 + [1, 44, 34], + [1, 44, 28], + [1, 44, 22], + [1, 44, 16], + + // 3 + [1, 70, 55], + [1, 70, 44], + [2, 35, 17], + [2, 35, 13], + + // 4 + [1, 100, 80], + [2, 50, 32], + [2, 50, 24], + [4, 25, 9], + + // 5 + [1, 134, 108], + [2, 67, 43], + [2, 33, 15, 2, 34, 16], + [2, 33, 11, 2, 34, 12], + + // 6 + [2, 86, 68], + [4, 43, 27], + [4, 43, 19], + [4, 43, 15], + + // 7 + [2, 98, 78], + [4, 49, 31], + [2, 32, 14, 4, 33, 15], + [4, 39, 13, 1, 40, 14], + + // 8 + [2, 121, 97], + [2, 60, 38, 2, 61, 39], + [4, 40, 18, 2, 41, 19], + [4, 40, 14, 2, 41, 15], + + // 9 + [2, 146, 116], + [3, 58, 36, 2, 59, 37], + [4, 36, 16, 4, 37, 17], + [4, 36, 12, 4, 37, 13], + + // 10 + [2, 86, 68, 2, 87, 69], + [4, 69, 43, 1, 70, 44], + [6, 43, 19, 2, 44, 20], + [6, 43, 15, 2, 44, 16], + + // 11 + [4, 101, 81], + [1, 80, 50, 4, 81, 51], + [4, 50, 22, 4, 51, 23], + [3, 36, 12, 8, 37, 13], + + // 12 + [2, 116, 92, 2, 117, 93], + [6, 58, 36, 2, 59, 37], + [4, 46, 20, 6, 47, 21], + [7, 42, 14, 4, 43, 15], + + // 13 + [4, 133, 107], + [8, 59, 37, 1, 60, 38], + [8, 44, 20, 4, 45, 21], + [12, 33, 11, 4, 34, 12], + + // 14 + [3, 145, 115, 1, 146, 116], + [4, 64, 40, 5, 65, 41], + [11, 36, 16, 5, 37, 17], + [11, 36, 12, 5, 37, 13], + + // 15 + [5, 109, 87, 1, 110, 88], + [5, 65, 41, 5, 66, 42], + [5, 54, 24, 7, 55, 25], + [11, 36, 12], + + // 16 + [5, 122, 98, 1, 123, 99], + [7, 73, 45, 3, 74, 46], + [15, 43, 19, 2, 44, 20], + [3, 45, 15, 13, 46, 16], + + // 17 + [1, 135, 107, 5, 136, 108], + [10, 74, 46, 1, 75, 47], + [1, 50, 22, 15, 51, 23], + [2, 42, 14, 17, 43, 15], + + // 18 + [5, 150, 120, 1, 151, 121], + [9, 69, 43, 4, 70, 44], + [17, 50, 22, 1, 51, 23], + [2, 42, 14, 19, 43, 15], + + // 19 + [3, 141, 113, 4, 142, 114], + [3, 70, 44, 11, 71, 45], + [17, 47, 21, 4, 48, 22], + [9, 39, 13, 16, 40, 14], + + // 20 + [3, 135, 107, 5, 136, 108], + [3, 67, 41, 13, 68, 42], + [15, 54, 24, 5, 55, 25], + [15, 43, 15, 10, 44, 16], + + // 21 + [4, 144, 116, 4, 145, 117], + [17, 68, 42], + [17, 50, 22, 6, 51, 23], + [19, 46, 16, 6, 47, 17], + + // 22 + [2, 139, 111, 7, 140, 112], + [17, 74, 46], + [7, 54, 24, 16, 55, 25], + [34, 37, 13], + + // 23 + [4, 151, 121, 5, 152, 122], + [4, 75, 47, 14, 76, 48], + [11, 54, 24, 14, 55, 25], + [16, 45, 15, 14, 46, 16], + + // 24 + [6, 147, 117, 4, 148, 118], + [6, 73, 45, 14, 74, 46], + [11, 54, 24, 16, 55, 25], + [30, 46, 16, 2, 47, 17], + + // 25 + [8, 132, 106, 4, 133, 107], + [8, 75, 47, 13, 76, 48], + [7, 54, 24, 22, 55, 25], + [22, 45, 15, 13, 46, 16], + + // 26 + [10, 142, 114, 2, 143, 115], + [19, 74, 46, 4, 75, 47], + [28, 50, 22, 6, 51, 23], + [33, 46, 16, 4, 47, 17], + + // 27 + [8, 152, 122, 4, 153, 123], + [22, 73, 45, 3, 74, 46], + [8, 53, 23, 26, 54, 24], + [12, 45, 15, 28, 46, 16], + + // 28 + [3, 147, 117, 10, 148, 118], + [3, 73, 45, 23, 74, 46], + [4, 54, 24, 31, 55, 25], + [11, 45, 15, 31, 46, 16], + + // 29 + [7, 146, 116, 7, 147, 117], + [21, 73, 45, 7, 74, 46], + [1, 53, 23, 37, 54, 24], + [19, 45, 15, 26, 46, 16], + + // 30 + [5, 145, 115, 10, 146, 116], + [19, 75, 47, 10, 76, 48], + [15, 54, 24, 25, 55, 25], + [23, 45, 15, 25, 46, 16], + + // 31 + [13, 145, 115, 3, 146, 116], + [2, 74, 46, 29, 75, 47], + [42, 54, 24, 1, 55, 25], + [23, 45, 15, 28, 46, 16], + + // 32 + [17, 145, 115], + [10, 74, 46, 23, 75, 47], + [10, 54, 24, 35, 55, 25], + [19, 45, 15, 35, 46, 16], + + // 33 + [17, 145, 115, 1, 146, 116], + [14, 74, 46, 21, 75, 47], + [29, 54, 24, 19, 55, 25], + [11, 45, 15, 46, 46, 16], + + // 34 + [13, 145, 115, 6, 146, 116], + [14, 74, 46, 23, 75, 47], + [44, 54, 24, 7, 55, 25], + [59, 46, 16, 1, 47, 17], + + // 35 + [12, 151, 121, 7, 152, 122], + [12, 75, 47, 26, 76, 48], + [39, 54, 24, 14, 55, 25], + [22, 45, 15, 41, 46, 16], + + // 36 + [6, 151, 121, 14, 152, 122], + [6, 75, 47, 34, 76, 48], + [46, 54, 24, 10, 55, 25], + [2, 45, 15, 64, 46, 16], + + // 37 + [17, 152, 122, 4, 153, 123], + [29, 74, 46, 14, 75, 47], + [49, 54, 24, 10, 55, 25], + [24, 45, 15, 46, 46, 16], + + // 38 + [4, 152, 122, 18, 153, 123], + [13, 74, 46, 32, 75, 47], + [48, 54, 24, 14, 55, 25], + [42, 45, 15, 32, 46, 16], + + // 39 + [20, 147, 117, 4, 148, 118], + [40, 75, 47, 7, 76, 48], + [43, 54, 24, 22, 55, 25], + [10, 45, 15, 67, 46, 16], + + // 40 + [19, 148, 118, 6, 149, 119], + [18, 75, 47, 31, 76, 48], + [34, 54, 24, 34, 55, 25], + [20, 45, 15, 61, 46, 16] + ]; + + QRRSBlock.getRSBlocks = function(typeNumber, errorCorrectLevel) { + + var rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel); + + if (rsBlock == undefined) { + throw new Error("bad rs block @ typeNumber:" + typeNumber + "/errorCorrectLevel:" + errorCorrectLevel); + } + + var length = rsBlock.length / 3; + + var list = new Array(); + + for (var i = 0; i < length; i++) { + + var count = rsBlock[i * 3 + 0]; + var totalCount = rsBlock[i * 3 + 1]; + var dataCount = rsBlock[i * 3 + 2]; + + for (var j = 0; j < count; j++) { + list.push(new QRRSBlock(totalCount, dataCount)); + } + } + + return list; + } + + QRRSBlock.getRsBlockTable = function(typeNumber, errorCorrectLevel) { + + switch (errorCorrectLevel) { + case QRErrorCorrectLevel.L: + return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0]; + case QRErrorCorrectLevel.M: + return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1]; + case QRErrorCorrectLevel.Q: + return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2]; + case QRErrorCorrectLevel.H: + return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3]; + default: + return undefined; + } + } + + //--------------------------------------------------------------------- + // QRBitBuffer + //--------------------------------------------------------------------- + + function QRBitBuffer() { + this.buffer = new Array(); + this.length = 0; + } + + QRBitBuffer.prototype = { + + get: function(index) { + var bufIndex = Math.floor(index / 8); + return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) == 1; + }, + + put: function(num, length) { + for (var i = 0; i < length; i++) { + this.putBit(((num >>> (length - i - 1)) & 1) == 1); + } + }, + + getLengthInBits: function() { + return this.length; + }, + + putBit: function(bit) { + + var bufIndex = Math.floor(this.length / 8); + if (this.buffer.length <= bufIndex) { + this.buffer.push(0); + } + + if (bit) { + this.buffer[bufIndex] |= (0x80 >>> (this.length % 8)); + } + + this.length++; + } + }; + + //--------------------------------------------------------------------- + // Support Chinese + //--------------------------------------------------------------------- + function utf16To8(text) { + var result = ''; + var c; + for (var i = 0; i < text.length; i++) { + c = text.charCodeAt(i); + if (c >= 0x0001 && c <= 0x007F) { + result += text.charAt(i); + } else if (c > 0x07FF) { + result += String.fromCharCode(0xE0 | c >> 12 & 0x0F); + result += String.fromCharCode(0x80 | c >> 6 & 0x3F); + result += String.fromCharCode(0x80 | c >> 0 & 0x3F); + } else { + result += String.fromCharCode(0xC0 | c >> 6 & 0x1F); + result += String.fromCharCode(0x80 | c >> 0 & 0x3F); + } + } + return result; + } + + uQRCode = { + + errorCorrectLevel: QRErrorCorrectLevel, + + defaults: { + size: 354, + margin: 0, + backgroundColor: '#ffffff', + foregroundColor: '#000000', + fileType: 'png', // 'jpg', 'png' + errorCorrectLevel: QRErrorCorrectLevel.H, + typeNumber: -1 + }, + + make: function(options) { + var defaultOptions = { + canvasId: options.canvasId, + componentInstance: options.componentInstance, + text: options.text, + size: this.defaults.size, + margin: this.defaults.margin, + backgroundColor: this.defaults.backgroundColor, + foregroundColor: this.defaults.foregroundColor, + fileType: this.defaults.fileType, + errorCorrectLevel: this.defaults.errorCorrectLevel, + typeNumber: this.defaults.typeNumber + }; + if (options) { + for (var i in options) { + defaultOptions[i] = options[i]; + } + } + options = defaultOptions; + if (!options.canvasId) { + console.error('uQRCode: Please set canvasId!'); + return; + } + + function createCanvas() { + var qrcode = new QRCode(options.typeNumber, options.errorCorrectLevel); + qrcode.addData(utf16To8(options.text)); + qrcode.make(); + + var ctx = uni.createCanvasContext(options.canvasId, options.componentInstance); + ctx.setFillStyle(options.backgroundColor); + ctx.fillRect(0, 0, options.size, options.size); + + var tileW = (options.size - options.margin * 2) / qrcode.getModuleCount(); + var tileH = tileW; + + for (var row = 0; row < qrcode.getModuleCount(); row++) { + for (var col = 0; col < qrcode.getModuleCount(); col++) { + var style = qrcode.isDark(row, col) ? options.foregroundColor : options.backgroundColor; + ctx.setFillStyle(style); + var x = Math.round(col * tileW) + options.margin; + var y = Math.round(row * tileH) + options.margin; + var w = Math.ceil((col + 1) * tileW) - Math.floor(col * tileW); + var h = Math.ceil((row + 1) * tileW) - Math.floor(row * tileW); + ctx.fillRect(x, y, w, h); + } + } + + setTimeout(function() { + ctx.draw(false, (function() { + setTimeout(function() { + uni.canvasToTempFilePath({ + canvasId: options.canvasId, + fileType: options.fileType, + width: options.size, + height: options.size, + destWidth: options.size, + destHeight: options.size, + success: function(res) { + options.success && options.success(res.tempFilePath); + }, + fail: function(error) { + options.fail && options.fail(error); + }, + complete: function(res) { + options.complete && options.complete(res); + } + }, options.componentInstance); + }, options.text.length + 100); + })()); + }, 150); + } + + createCanvas(); + } + + } + +})() + +export default uQRCode diff --git a/layout/notData.vue b/layout/notData.vue new file mode 100644 index 0000000..0191dcc --- /dev/null +++ b/layout/notData.vue @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/layout/specialBanner.vue b/layout/specialBanner.vue new file mode 100644 index 0000000..592159b --- /dev/null +++ b/layout/specialBanner.vue @@ -0,0 +1,220 @@ + + + diff --git a/layout/tvChart.vue b/layout/tvChart.vue new file mode 100644 index 0000000..cf60d34 --- /dev/null +++ b/layout/tvChart.vue @@ -0,0 +1,454 @@ + + + diff --git a/layout/vButton.vue b/layout/vButton.vue new file mode 100644 index 0000000..5a4b8af --- /dev/null +++ b/layout/vButton.vue @@ -0,0 +1,202 @@ + + + \ No newline at end of file diff --git a/layout/vCode.vue b/layout/vCode.vue new file mode 100644 index 0000000..d7577dd --- /dev/null +++ b/layout/vCode.vue @@ -0,0 +1,131 @@ + + \ No newline at end of file diff --git a/layout/vCountry.vue b/layout/vCountry.vue new file mode 100644 index 0000000..890bce9 --- /dev/null +++ b/layout/vCountry.vue @@ -0,0 +1,77 @@ + + \ No newline at end of file diff --git a/layout/vCurve.vue b/layout/vCurve.vue new file mode 100644 index 0000000..860b108 --- /dev/null +++ b/layout/vCurve.vue @@ -0,0 +1,124 @@ + + + + + + + diff --git a/layout/vDropdwon.vue b/layout/vDropdwon.vue new file mode 100644 index 0000000..92997bf --- /dev/null +++ b/layout/vDropdwon.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/layout/vHeader.vue b/layout/vHeader.vue new file mode 100644 index 0000000..8b0fe03 --- /dev/null +++ b/layout/vHeader.vue @@ -0,0 +1,50 @@ + + \ No newline at end of file diff --git a/layout/vInput.vue b/layout/vInput.vue new file mode 100644 index 0000000..6e8f54d --- /dev/null +++ b/layout/vInput.vue @@ -0,0 +1,57 @@ + + + \ No newline at end of file diff --git a/layout/vLang.vue b/layout/vLang.vue new file mode 100644 index 0000000..d1ed723 --- /dev/null +++ b/layout/vLang.vue @@ -0,0 +1,56 @@ + + + \ No newline at end of file diff --git a/layout/vLink.vue b/layout/vLink.vue new file mode 100644 index 0000000..26aaf9e --- /dev/null +++ b/layout/vLink.vue @@ -0,0 +1,96 @@ + + + diff --git a/layout/vNoticeBar.vue b/layout/vNoticeBar.vue new file mode 100644 index 0000000..a1c9a8e --- /dev/null +++ b/layout/vNoticeBar.vue @@ -0,0 +1,17 @@ + + \ No newline at end of file diff --git a/layout/vPage.vue b/layout/vPage.vue new file mode 100644 index 0000000..77e1309 --- /dev/null +++ b/layout/vPage.vue @@ -0,0 +1,38 @@ + + \ No newline at end of file diff --git a/layout/vPaging.vue b/layout/vPaging.vue new file mode 100644 index 0000000..337f76f --- /dev/null +++ b/layout/vPaging.vue @@ -0,0 +1,63 @@ + + \ No newline at end of file diff --git a/layout/vPicker.vue b/layout/vPicker.vue new file mode 100644 index 0000000..0b9759e --- /dev/null +++ b/layout/vPicker.vue @@ -0,0 +1,69 @@ + + diff --git a/layout/vPlaceImg.vue b/layout/vPlaceImg.vue new file mode 100644 index 0000000..fb4f6ab --- /dev/null +++ b/layout/vPlaceImg.vue @@ -0,0 +1,9 @@ + + \ No newline at end of file diff --git a/layout/vQr.vue b/layout/vQr.vue new file mode 100644 index 0000000..922adef --- /dev/null +++ b/layout/vQr.vue @@ -0,0 +1,64 @@ + + \ No newline at end of file diff --git a/layout/vScroll.vue b/layout/vScroll.vue new file mode 100644 index 0000000..5436b9e --- /dev/null +++ b/layout/vScroll.vue @@ -0,0 +1,85 @@ + + \ No newline at end of file diff --git a/layout/vUpgrade.vue b/layout/vUpgrade.vue new file mode 100644 index 0000000..521cb06 --- /dev/null +++ b/layout/vUpgrade.vue @@ -0,0 +1,173 @@ + + + \ No newline at end of file diff --git a/main.html b/main.html new file mode 100644 index 0000000..391d3c6 --- /dev/null +++ b/main.html @@ -0,0 +1,28 @@ + + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + + + + + + + + + +
+ + + diff --git a/main.js b/main.js new file mode 100644 index 0000000..a2c6788 --- /dev/null +++ b/main.js @@ -0,0 +1,23 @@ +import Vue from 'vue' +import App from './App.vue' +import '@/plugins' +import i18n from "./i18n"; +import store from './store' +// import 'element-ui/lib/theme-chalk/index.css' +// import element from './element/index' +// Vue.use(element) +//把vuex定义成全局组件 +Vue.prototype.$store = store +Vue.prototype._i18n = i18n; + +Vue.config.productionTip = false + +App.mpType = 'app' + +const app = new Vue({ + ...App, + i18n, + store +}) +app.$mount() + diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..79e5d89 --- /dev/null +++ b/manifest.json @@ -0,0 +1,118 @@ +{ + "name" : "CATYcoin", + "appid" : "__UNI__D31CE01", + "description" : "", + "versionName" : "1.0.0", + "versionCode" : 100, + "transformPx" : false, + "app-plus" : { + "compatible" : { + "ignoreVersion" : true //true表示忽略版本检查提示框,HBuilderX1.9.0及以上版本支持 + }, + "nvueCompiler" : "uni-app", + "compilerVersion" : 3, + "modules" : {}, + "distribute" : { + "android" : { + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "autoSdkPermissions" : true, + "abiFilters" : [ "armeabi-v7a", "x86" ] + }, + "ios" : {}, + "sdkConfigs" : { + "ad" : {} + }, + "splashscreen" : { + "androidStyle" : "common", + "android" : { + "hdpi" : "qidongye/android/bark.png", + "xhdpi" : "qidongye/android/bark.png", + "xxhdpi" : "qidongye/android/bark.png" + }, + "iosStyle" : "common", + "ios" : { + "iphone" : { + "portrait-896h@3x" : "C:/Users/Administrator/Desktop/bc371c0f89d2e942730a9939cad190c.png", + "landscape-896h@3x" : "C:/Users/Administrator/Desktop/bc371c0f89d2e942730a9939cad190c.png", + "portrait-896h@2x" : "C:/Users/Administrator/Desktop/bc371c0f89d2e942730a9939cad190c.png", + "landscape-896h@2x" : "C:/Users/Administrator/Desktop/bc371c0f89d2e942730a9939cad190c.png", + "iphonex" : "C:/Users/Administrator/Desktop/bc371c0f89d2e942730a9939cad190c.png", + "iphonexl" : "C:/Users/Administrator/Desktop/bc371c0f89d2e942730a9939cad190c.png", + "retina55" : "C:/Users/Administrator/Desktop/bc371c0f89d2e942730a9939cad190c.png", + "retina55l" : "C:/Users/Administrator/Desktop/bc371c0f89d2e942730a9939cad190c.png", + "retina47" : "C:/Users/Administrator/Desktop/bc371c0f89d2e942730a9939cad190c.png", + "retina47l" : "C:/Users/Administrator/Desktop/bc371c0f89d2e942730a9939cad190c.png", + "retina40" : "C:/Users/Administrator/Desktop/bc371c0f89d2e942730a9939cad190c.png", + "retina40l" : "C:/Users/Administrator/Desktop/bc371c0f89d2e942730a9939cad190c.png", + "retina35" : "C:/Users/Administrator/Desktop/bc371c0f89d2e942730a9939cad190c.png" + } + } + }, + "icons" : { + "android" : { + "hdpi" : "unpackage/res/icons/72x72.png", + "xhdpi" : "unpackage/res/icons/96x96.png", + "xxhdpi" : "unpackage/res/icons/144x144.png", + "xxxhdpi" : "unpackage/res/icons/192x192.png" + }, + "ios" : { + "appstore" : "unpackage/res/icons/1024x1024.png", + "ipad" : { + "app" : "unpackage/res/icons/76x76.png", + "app@2x" : "unpackage/res/icons/152x152.png", + "notification" : "unpackage/res/icons/20x20.png", + "notification@2x" : "unpackage/res/icons/40x40.png", + "proapp@2x" : "unpackage/res/icons/167x167.png", + "settings" : "unpackage/res/icons/29x29.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "spotlight" : "unpackage/res/icons/40x40.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png" + }, + "iphone" : { + "app@2x" : "unpackage/res/icons/120x120.png", + "app@3x" : "unpackage/res/icons/180x180.png", + "notification@2x" : "unpackage/res/icons/40x40.png", + "notification@3x" : "unpackage/res/icons/60x60.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "settings@3x" : "unpackage/res/icons/87x87.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png", + "spotlight@3x" : "unpackage/res/icons/120x120.png" + } + } + } + }, + "splashscreen" : { + "waiting" : false + }, + "nativePlugins" : {} + }, + "quickapp" : {}, + "mp-weixin" : { + "appid" : "", + "setting" : { + "urlCheck" : true + } + }, + "h5" : { + "devServer" : { + "https" : false + }, + "router" : { + "base" : "./" + }, + "domain" : "https://app.dficoins.com", + "template" : "main.html" + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..7cdcf0d --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "name": "exchange", + "version": "1.0.0", + "description": "", + "main": "main.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "async-validator": "^1.11.5", + "axios": "^0.20.0", + "clipboard": "^2.0.8", + "element-ui": "^2.15.3", + "highcharts": "^8.2.0", + "lodash": "^4.17.20", + "qs": "^6.9.4", + "vue-i18n": "^8.21.0", + "vuex": "^3.5.1" + }, + "devDependencies": { + "babel-plugin-component": "^1.1.1" + } +} diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..7d40228 --- /dev/null +++ b/pages.json @@ -0,0 +1,252 @@ +{ + "pages": [ + { + "path": "pages/startPage/index" + }, + { + "path": "pages/base/index", + "style": { + "app-plus": { + "bounce": "none" + } + } + }, + { + "path": "pages/index/index" + }, + { + "path": "pages/currency/index" + }, + { + "path": "pages/currency/list" + }, + { + "path": "pages/exchange/exchangeHis" + }, + { + "path": "pages/exchange/contractHis" + }, + { + "path": "pages/exchange/his" + }, + { + "path": "pages/login/index" + }, + { + "path": "pages/purchase/index" + }, + { + "path": "pages/purchase/bill" + }, + { + "path": "pages/reg/index" + }, + { + "path": "pages/safe/forget-password" + }, + { + "path": "pages/notice/detail" + }, + { + "path": "pages/accountSettings/accountSettings" + }, + { + "path": "pages/assets/recharge" + }, + { + "path": "pages/assets/paypal" + }, + { + "path": "pages/assets/draw" + }, + { + "path": "pages/assets/address-list" + }, + { + "path": "pages/assets/edit-address" + }, + { + "path": "pages/invite/index" + }, + { + "path": "pages/invite/level" + }, + { + "path": "pages/commission/index" + }, + { + "path": "pages/commission/revoke" + }, + { + "path": "pages/auth/index" + }, + { + "path": "pages/auth/primary" + }, + { + "path": "pages/auth/senior" + }, + { + "path": "pages/safe/index" + }, + { + "path": "pages/safe/login-password" + }, + { + "path": "pages/safe/phone" + }, + { + "path": "pages/safe/google" + }, + { + "path": "pages/safe/transaction-password" + }, + { + "path": "pages/safe/email" + }, + { + "path": "pages/notice/index" + }, + { + "path": "pages/notice/msg-detail" + }, + { + "path": "pages/option/index" + }, + { + "path": "pages/transfer/index" + }, + { + "path": "pages/transfer/bill" + }, + { + "path": "pages/assets/bill" + }, + { + "path": "pages/exchange/index" + }, + { + "path": "pages/assets/account-bill" + }, + { + "path": "pages/assets/currency-bill" + }, + { + "path": "pages/help/index" + }, + { + "path": "pages/help/detail" + }, + { + "path": "pages/help/sort" + }, + { + "path": "pages/list/list" + }, + { + "path": "pages/option/delivery-detail" + }, + { + "path": "pages/income/index" + }, + { + "path": "pages/otc/send-ad" + }, + { + "path": "pages/otc/order" + }, + { + "path": "pages/otc/ad" + }, + { + "path": "pages/otc/detail" + }, + { + "path": "pages/otc/pays" + }, + { + "path": "pages/otc/bind-pay" + }, + { + "path": "pages/otc/bill" + }, + { + "path": "pages/service/service" + }, + { + "path": "pages/service/index", + "style": { + "navigationBarTitleText": "咨询客服", + "navigationStyle": "default", + "app-plus": { + "titleNView": { + } + } + } + }, + { + "path": "pages/service/otc", + "style": { + "navigationBarTitleText": "otc", + "navigationStyle": "default", + "app-plus": { + "titleNView": { + } + } + } + }, + { + "path": "pages/upgrade/index", + "style": { + "navigationStyle": "custom", + "app-plus": { + "animationType": "fade-in", + "background": "transparent", + "backgroundColor": "rgba(0,0,0,0)", + "popGesture": "none" + } + } + } + ,{ + "path" : "pages/assets/records", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + } + ], + "globalStyle": { + "app-plus": { + "titleNView": false + }, + "navigationBarTextStyle": "black", + "navigationBarTitleText": "CATYcoin", + "navigationBarBackgroundColor": "#007AFF", + "backgroundColor": "#FFFFFF" + }, + "easycom": { + "autoscan": true, + "custom": { + "^van-(.*)": "@/wxcomponents/vant/$1/index.vue", + "v-button": "@/layout/vButton.vue", + "v-input": "@/layout/vInput.vue", + "v-header": "@/layout/vHeader.vue", + "v-code": "@/layout/vCode.vue", + "v-country": "@/layout/vCountry.vue", + "v-link": "@/layout/vLink.vue", + "v-notice-bar": "@/layout/vNoticeBar.vue", + "v-lang": "@/layout/vLang.vue", + "v-qr": "@/layout/vQr.vue", + "v-scroll": "@/layout/vScroll.vue", + "v-paging": "@/layout/vPaging.vue", + "v-curve": "@/layout/vCurve.vue", + "v-dropdwon": "@/layout/vDropdwon.vue", + "v-picker": "@/layout/vPicker.vue", + "v-page": "@/layout/vPage.vue", + "not-data": "@/layout/notData.vue", + "special-Banner": "@/layout/specialBanner.vue" + } + } +} diff --git a/pages/accountSettings/accountSettings.vue b/pages/accountSettings/accountSettings.vue new file mode 100644 index 0000000..43865cb --- /dev/null +++ b/pages/accountSettings/accountSettings.vue @@ -0,0 +1,203 @@ + + + + + \ No newline at end of file diff --git a/pages/accountSettings/changeNickname.vue b/pages/accountSettings/changeNickname.vue new file mode 100644 index 0000000..3232f6f --- /dev/null +++ b/pages/accountSettings/changeNickname.vue @@ -0,0 +1,30 @@ + + + \ No newline at end of file diff --git a/pages/assets/account-bill.vue b/pages/assets/account-bill.vue new file mode 100644 index 0000000..8c10dcd --- /dev/null +++ b/pages/assets/account-bill.vue @@ -0,0 +1,80 @@ + + + \ No newline at end of file diff --git a/pages/assets/address-list.vue b/pages/assets/address-list.vue new file mode 100644 index 0000000..473833b --- /dev/null +++ b/pages/assets/address-list.vue @@ -0,0 +1,186 @@ + + + \ No newline at end of file diff --git a/pages/assets/bill.vue b/pages/assets/bill.vue new file mode 100644 index 0000000..ca5b6cc --- /dev/null +++ b/pages/assets/bill.vue @@ -0,0 +1,94 @@ + + + \ No newline at end of file diff --git a/pages/assets/coin-list.vue b/pages/assets/coin-list.vue new file mode 100644 index 0000000..f89b8b6 --- /dev/null +++ b/pages/assets/coin-list.vue @@ -0,0 +1,107 @@ + + + \ No newline at end of file diff --git a/pages/assets/currency-bill.vue b/pages/assets/currency-bill.vue new file mode 100644 index 0000000..6d9056b --- /dev/null +++ b/pages/assets/currency-bill.vue @@ -0,0 +1,62 @@ + + + \ No newline at end of file diff --git a/pages/assets/draw.vue b/pages/assets/draw.vue new file mode 100644 index 0000000..a267ef8 --- /dev/null +++ b/pages/assets/draw.vue @@ -0,0 +1,523 @@ + + + diff --git a/pages/assets/edit-address.vue b/pages/assets/edit-address.vue new file mode 100644 index 0000000..c7304fd --- /dev/null +++ b/pages/assets/edit-address.vue @@ -0,0 +1,94 @@ + + \ No newline at end of file diff --git a/pages/assets/paypal.vue b/pages/assets/paypal.vue new file mode 100644 index 0000000..56ef15d --- /dev/null +++ b/pages/assets/paypal.vue @@ -0,0 +1,206 @@ + + + + diff --git a/pages/assets/recharge.vue b/pages/assets/recharge.vue new file mode 100644 index 0000000..dc5e4d0 --- /dev/null +++ b/pages/assets/recharge.vue @@ -0,0 +1,336 @@ + + + \ No newline at end of file diff --git a/pages/assets/records.vue b/pages/assets/records.vue new file mode 100644 index 0000000..3bbe59b --- /dev/null +++ b/pages/assets/records.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/pages/auth/index.vue b/pages/auth/index.vue new file mode 100644 index 0000000..b4440e8 --- /dev/null +++ b/pages/auth/index.vue @@ -0,0 +1,86 @@ + + + \ No newline at end of file diff --git a/pages/auth/primary.vue b/pages/auth/primary.vue new file mode 100644 index 0000000..3b8a1f5 --- /dev/null +++ b/pages/auth/primary.vue @@ -0,0 +1,266 @@ + + + diff --git a/pages/auth/senior.vue b/pages/auth/senior.vue new file mode 100644 index 0000000..99263a0 --- /dev/null +++ b/pages/auth/senior.vue @@ -0,0 +1,135 @@ + + + \ No newline at end of file diff --git a/pages/base/contract.vue b/pages/base/contract.vue new file mode 100644 index 0000000..701b082 --- /dev/null +++ b/pages/base/contract.vue @@ -0,0 +1,277 @@ + + diff --git a/pages/base/exchange-operation.vue b/pages/base/exchange-operation.vue new file mode 100644 index 0000000..db3e85d --- /dev/null +++ b/pages/base/exchange-operation.vue @@ -0,0 +1,242 @@ + + + \ No newline at end of file diff --git a/pages/base/home.vue b/pages/base/home.vue new file mode 100644 index 0000000..5ded212 --- /dev/null +++ b/pages/base/home.vue @@ -0,0 +1,2042 @@ + + + + \ No newline at end of file diff --git a/pages/base/index.vue b/pages/base/index.vue new file mode 100644 index 0000000..1e82139 --- /dev/null +++ b/pages/base/index.vue @@ -0,0 +1,169 @@ + + + + \ No newline at end of file diff --git a/pages/base/mine.vue b/pages/base/mine.vue new file mode 100644 index 0000000..9045028 --- /dev/null +++ b/pages/base/mine.vue @@ -0,0 +1,569 @@ + + + + \ No newline at end of file diff --git a/pages/base/option-list.vue b/pages/base/option-list.vue new file mode 100644 index 0000000..d8513eb --- /dev/null +++ b/pages/base/option-list.vue @@ -0,0 +1,405 @@ + + + diff --git a/pages/base/otc.vue b/pages/base/otc.vue new file mode 100644 index 0000000..76f2d4f --- /dev/null +++ b/pages/base/otc.vue @@ -0,0 +1,290 @@ + + + \ No newline at end of file diff --git a/pages/commission/index.vue b/pages/commission/index.vue new file mode 100644 index 0000000..3a15de4 --- /dev/null +++ b/pages/commission/index.vue @@ -0,0 +1,165 @@ + + + \ No newline at end of file diff --git a/pages/commission/revoke.vue b/pages/commission/revoke.vue new file mode 100644 index 0000000..784b360 --- /dev/null +++ b/pages/commission/revoke.vue @@ -0,0 +1,94 @@ + + \ No newline at end of file diff --git a/pages/currency/index.vue b/pages/currency/index.vue new file mode 100644 index 0000000..4d17a69 --- /dev/null +++ b/pages/currency/index.vue @@ -0,0 +1,239 @@ + + + + diff --git a/pages/currency/list.vue b/pages/currency/list.vue new file mode 100644 index 0000000..87407b7 --- /dev/null +++ b/pages/currency/list.vue @@ -0,0 +1,92 @@ + + + \ No newline at end of file diff --git a/pages/exchange/coin-info.vue b/pages/exchange/coin-info.vue new file mode 100644 index 0000000..92e7e57 --- /dev/null +++ b/pages/exchange/coin-info.vue @@ -0,0 +1,96 @@ + + + \ No newline at end of file diff --git a/pages/exchange/contract-bill.vue b/pages/exchange/contract-bill.vue new file mode 100644 index 0000000..2173114 --- /dev/null +++ b/pages/exchange/contract-bill.vue @@ -0,0 +1,42 @@ + + \ No newline at end of file diff --git a/pages/exchange/contract-entrustment.vue b/pages/exchange/contract-entrustment.vue new file mode 100644 index 0000000..f70793d --- /dev/null +++ b/pages/exchange/contract-entrustment.vue @@ -0,0 +1,114 @@ + + diff --git a/pages/exchange/contract-history.vue b/pages/exchange/contract-history.vue new file mode 100644 index 0000000..6aaedd8 --- /dev/null +++ b/pages/exchange/contract-history.vue @@ -0,0 +1,407 @@ + + + diff --git a/pages/exchange/contractHis.vue b/pages/exchange/contractHis.vue new file mode 100644 index 0000000..ec5c737 --- /dev/null +++ b/pages/exchange/contractHis.vue @@ -0,0 +1,485 @@ + + + diff --git a/pages/exchange/current-commission.vue b/pages/exchange/current-commission.vue new file mode 100644 index 0000000..14ef54a --- /dev/null +++ b/pages/exchange/current-commission.vue @@ -0,0 +1,90 @@ + + \ No newline at end of file diff --git a/pages/exchange/depth-map.vue b/pages/exchange/depth-map.vue new file mode 100644 index 0000000..ca04bb1 --- /dev/null +++ b/pages/exchange/depth-map.vue @@ -0,0 +1,202 @@ + + + + + + \ No newline at end of file diff --git a/pages/exchange/exchange-transaction.vue b/pages/exchange/exchange-transaction.vue new file mode 100644 index 0000000..72ecd8f --- /dev/null +++ b/pages/exchange/exchange-transaction.vue @@ -0,0 +1,1020 @@ + + + \ No newline at end of file diff --git a/pages/exchange/exchangeHis.vue b/pages/exchange/exchangeHis.vue new file mode 100644 index 0000000..da2ba38 --- /dev/null +++ b/pages/exchange/exchangeHis.vue @@ -0,0 +1,177 @@ + + + diff --git a/pages/exchange/his.vue b/pages/exchange/his.vue new file mode 100644 index 0000000..7191bad --- /dev/null +++ b/pages/exchange/his.vue @@ -0,0 +1,246 @@ + + diff --git a/pages/exchange/history-commisson.vue b/pages/exchange/history-commisson.vue new file mode 100644 index 0000000..8965ae9 --- /dev/null +++ b/pages/exchange/history-commisson.vue @@ -0,0 +1,60 @@ + + \ No newline at end of file diff --git a/pages/exchange/index.vue b/pages/exchange/index.vue new file mode 100644 index 0000000..b4f7f96 --- /dev/null +++ b/pages/exchange/index.vue @@ -0,0 +1,563 @@ + + + diff --git a/pages/exchange/latest-transaction.vue b/pages/exchange/latest-transaction.vue new file mode 100644 index 0000000..5c8ad89 --- /dev/null +++ b/pages/exchange/latest-transaction.vue @@ -0,0 +1,46 @@ + + \ No newline at end of file diff --git a/pages/exchange/open-position.vue b/pages/exchange/open-position.vue new file mode 100644 index 0000000..0c56fb3 --- /dev/null +++ b/pages/exchange/open-position.vue @@ -0,0 +1,1875 @@ + + +s diff --git a/pages/exchange/position.vue b/pages/exchange/position.vue new file mode 100644 index 0000000..40803d6 --- /dev/null +++ b/pages/exchange/position.vue @@ -0,0 +1,454 @@ + + + diff --git a/pages/exchange/sale.vue b/pages/exchange/sale.vue new file mode 100644 index 0000000..13d05e7 --- /dev/null +++ b/pages/exchange/sale.vue @@ -0,0 +1,92 @@ + + + \ No newline at end of file diff --git a/pages/exchange/sell-and-buy.vue b/pages/exchange/sell-and-buy.vue new file mode 100644 index 0000000..8758794 --- /dev/null +++ b/pages/exchange/sell-and-buy.vue @@ -0,0 +1,132 @@ + + + \ No newline at end of file diff --git a/pages/exchange/symbol-list copy.vue b/pages/exchange/symbol-list copy.vue new file mode 100644 index 0000000..6dbea95 --- /dev/null +++ b/pages/exchange/symbol-list copy.vue @@ -0,0 +1,105 @@ + + + \ No newline at end of file diff --git a/pages/exchange/symbol-list.vue b/pages/exchange/symbol-list.vue new file mode 100644 index 0000000..8198cb3 --- /dev/null +++ b/pages/exchange/symbol-list.vue @@ -0,0 +1,177 @@ + + + \ No newline at end of file diff --git a/pages/exchange/time-sharing.vue b/pages/exchange/time-sharing.vue new file mode 100644 index 0000000..14f6bc6 --- /dev/null +++ b/pages/exchange/time-sharing.vue @@ -0,0 +1,305 @@ + + + + \ No newline at end of file diff --git a/pages/exchange/trade-list.vue b/pages/exchange/trade-list.vue new file mode 100644 index 0000000..4c9a4be --- /dev/null +++ b/pages/exchange/trade-list.vue @@ -0,0 +1,979 @@ + + + diff --git a/pages/help/detail.vue b/pages/help/detail.vue new file mode 100644 index 0000000..9cc6097 --- /dev/null +++ b/pages/help/detail.vue @@ -0,0 +1,42 @@ + + \ No newline at end of file diff --git a/pages/help/index.vue b/pages/help/index.vue new file mode 100644 index 0000000..f5b628f --- /dev/null +++ b/pages/help/index.vue @@ -0,0 +1,69 @@ + + \ No newline at end of file diff --git a/pages/help/sort.vue b/pages/help/sort.vue new file mode 100644 index 0000000..d114c2e --- /dev/null +++ b/pages/help/sort.vue @@ -0,0 +1,56 @@ + + + \ No newline at end of file diff --git a/pages/income/index.vue b/pages/income/index.vue new file mode 100644 index 0000000..35c012a --- /dev/null +++ b/pages/income/index.vue @@ -0,0 +1,377 @@ + + + + + diff --git a/pages/index/index.vue b/pages/index/index.vue new file mode 100644 index 0000000..4237403 --- /dev/null +++ b/pages/index/index.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/pages/invite/index.vue b/pages/invite/index.vue new file mode 100644 index 0000000..1d32545 --- /dev/null +++ b/pages/invite/index.vue @@ -0,0 +1,394 @@ + + + \ No newline at end of file diff --git a/pages/invite/level.vue b/pages/invite/level.vue new file mode 100644 index 0000000..bfe0e8e --- /dev/null +++ b/pages/invite/level.vue @@ -0,0 +1,207 @@ + + + \ No newline at end of file diff --git a/pages/list/list.vue b/pages/list/list.vue new file mode 100644 index 0000000..b8d76e1 --- /dev/null +++ b/pages/list/list.vue @@ -0,0 +1,245 @@ + + + + \ No newline at end of file diff --git a/pages/login/index.vue b/pages/login/index.vue new file mode 100644 index 0000000..0279f8a --- /dev/null +++ b/pages/login/index.vue @@ -0,0 +1,228 @@ + + + \ No newline at end of file diff --git a/pages/notice/detail.vue b/pages/notice/detail.vue new file mode 100644 index 0000000..9c0cc93 --- /dev/null +++ b/pages/notice/detail.vue @@ -0,0 +1,40 @@ + + + \ No newline at end of file diff --git a/pages/notice/index.vue b/pages/notice/index.vue new file mode 100644 index 0000000..8c8e9c7 --- /dev/null +++ b/pages/notice/index.vue @@ -0,0 +1,77 @@ + + + \ No newline at end of file diff --git a/pages/notice/msg-detail.vue b/pages/notice/msg-detail.vue new file mode 100644 index 0000000..8ad311a --- /dev/null +++ b/pages/notice/msg-detail.vue @@ -0,0 +1,49 @@ + + + \ No newline at end of file diff --git a/pages/option/buy-option-form copy.vue b/pages/option/buy-option-form copy.vue new file mode 100644 index 0000000..b422455 --- /dev/null +++ b/pages/option/buy-option-form copy.vue @@ -0,0 +1,267 @@ + + + \ No newline at end of file diff --git a/pages/option/buy-option-form.vue b/pages/option/buy-option-form.vue new file mode 100644 index 0000000..8f11fd5 --- /dev/null +++ b/pages/option/buy-option-form.vue @@ -0,0 +1,276 @@ + + + \ No newline at end of file diff --git a/pages/option/buy-option.vue b/pages/option/buy-option.vue new file mode 100644 index 0000000..d5ff921 --- /dev/null +++ b/pages/option/buy-option.vue @@ -0,0 +1,97 @@ + + + \ No newline at end of file diff --git a/pages/option/delivery-detail.vue b/pages/option/delivery-detail.vue new file mode 100644 index 0000000..b1f60ab --- /dev/null +++ b/pages/option/delivery-detail.vue @@ -0,0 +1,106 @@ + + \ No newline at end of file diff --git a/pages/option/delivery-record.vue b/pages/option/delivery-record.vue new file mode 100644 index 0000000..6b55dea --- /dev/null +++ b/pages/option/delivery-record.vue @@ -0,0 +1,103 @@ + + + \ No newline at end of file diff --git a/pages/option/highchart.vue b/pages/option/highchart.vue new file mode 100644 index 0000000..5ce3261 --- /dev/null +++ b/pages/option/highchart.vue @@ -0,0 +1,355 @@ + + + + + + + \ No newline at end of file diff --git a/pages/option/index.vue b/pages/option/index.vue new file mode 100644 index 0000000..b104600 --- /dev/null +++ b/pages/option/index.vue @@ -0,0 +1,397 @@ + + + \ No newline at end of file diff --git a/pages/option/my-delivery.vue b/pages/option/my-delivery.vue new file mode 100644 index 0000000..1901dd1 --- /dev/null +++ b/pages/option/my-delivery.vue @@ -0,0 +1,104 @@ + + + \ No newline at end of file diff --git a/pages/option/option-nav-list.vue b/pages/option/option-nav-list.vue new file mode 100644 index 0000000..5ffbc7f --- /dev/null +++ b/pages/option/option-nav-list.vue @@ -0,0 +1,79 @@ + + \ No newline at end of file diff --git a/pages/option/waiting-delivery.vue b/pages/option/waiting-delivery.vue new file mode 100644 index 0000000..362b1ff --- /dev/null +++ b/pages/option/waiting-delivery.vue @@ -0,0 +1,101 @@ + + + \ No newline at end of file diff --git a/pages/otc/ad.vue b/pages/otc/ad.vue new file mode 100644 index 0000000..9da36ab --- /dev/null +++ b/pages/otc/ad.vue @@ -0,0 +1,185 @@ + + \ No newline at end of file diff --git a/pages/otc/bill.vue b/pages/otc/bill.vue new file mode 100644 index 0000000..6c94332 --- /dev/null +++ b/pages/otc/bill.vue @@ -0,0 +1,82 @@ + + + \ No newline at end of file diff --git a/pages/otc/bind-pay.vue b/pages/otc/bind-pay.vue new file mode 100644 index 0000000..55f6483 --- /dev/null +++ b/pages/otc/bind-pay.vue @@ -0,0 +1,199 @@ + + \ No newline at end of file diff --git a/pages/otc/detail.vue b/pages/otc/detail.vue new file mode 100644 index 0000000..3230e99 --- /dev/null +++ b/pages/otc/detail.vue @@ -0,0 +1,315 @@ + + + \ No newline at end of file diff --git a/pages/otc/order.vue b/pages/otc/order.vue new file mode 100644 index 0000000..8d5ad15 --- /dev/null +++ b/pages/otc/order.vue @@ -0,0 +1,136 @@ + + \ No newline at end of file diff --git a/pages/otc/pays.vue b/pages/otc/pays.vue new file mode 100644 index 0000000..b8730af --- /dev/null +++ b/pages/otc/pays.vue @@ -0,0 +1,25 @@ + \ No newline at end of file diff --git a/pages/otc/send-ad.vue b/pages/otc/send-ad.vue new file mode 100644 index 0000000..65fc391 --- /dev/null +++ b/pages/otc/send-ad.vue @@ -0,0 +1,203 @@ + + \ No newline at end of file diff --git a/pages/purchase/bill.vue b/pages/purchase/bill.vue new file mode 100644 index 0000000..ea9ccbc --- /dev/null +++ b/pages/purchase/bill.vue @@ -0,0 +1,92 @@ + + \ No newline at end of file diff --git a/pages/purchase/index.vue b/pages/purchase/index.vue new file mode 100644 index 0000000..3701a3e --- /dev/null +++ b/pages/purchase/index.vue @@ -0,0 +1,368 @@ + + + \ No newline at end of file diff --git a/pages/reg/index.vue b/pages/reg/index.vue new file mode 100644 index 0000000..c5f96dc --- /dev/null +++ b/pages/reg/index.vue @@ -0,0 +1,380 @@ + + + \ No newline at end of file diff --git a/pages/safe/email.vue b/pages/safe/email.vue new file mode 100644 index 0000000..1fa0d1a --- /dev/null +++ b/pages/safe/email.vue @@ -0,0 +1,86 @@ + + + \ No newline at end of file diff --git a/pages/safe/forget-password.vue b/pages/safe/forget-password.vue new file mode 100644 index 0000000..3b218bf --- /dev/null +++ b/pages/safe/forget-password.vue @@ -0,0 +1,169 @@ + + + \ No newline at end of file diff --git a/pages/safe/google.vue b/pages/safe/google.vue new file mode 100644 index 0000000..d8874f4 --- /dev/null +++ b/pages/safe/google.vue @@ -0,0 +1,146 @@ + + + \ No newline at end of file diff --git a/pages/safe/index.vue b/pages/safe/index.vue new file mode 100644 index 0000000..52e4501 --- /dev/null +++ b/pages/safe/index.vue @@ -0,0 +1,113 @@ + + \ No newline at end of file diff --git a/pages/safe/login-password.vue b/pages/safe/login-password.vue new file mode 100644 index 0000000..1d62932 --- /dev/null +++ b/pages/safe/login-password.vue @@ -0,0 +1,89 @@ + + + \ No newline at end of file diff --git a/pages/safe/phone.vue b/pages/safe/phone.vue new file mode 100644 index 0000000..2b495f7 --- /dev/null +++ b/pages/safe/phone.vue @@ -0,0 +1,111 @@ + + + \ No newline at end of file diff --git a/pages/safe/switch.vue b/pages/safe/switch.vue new file mode 100644 index 0000000..2541032 --- /dev/null +++ b/pages/safe/switch.vue @@ -0,0 +1,111 @@ + + \ No newline at end of file diff --git a/pages/safe/transaction-password.vue b/pages/safe/transaction-password.vue new file mode 100644 index 0000000..aa0b0cf --- /dev/null +++ b/pages/safe/transaction-password.vue @@ -0,0 +1,85 @@ + + + \ No newline at end of file diff --git a/pages/service/index.vue b/pages/service/index.vue new file mode 100644 index 0000000..f90739b --- /dev/null +++ b/pages/service/index.vue @@ -0,0 +1,72 @@ + + + diff --git a/pages/service/otc.vue b/pages/service/otc.vue new file mode 100644 index 0000000..4a64940 --- /dev/null +++ b/pages/service/otc.vue @@ -0,0 +1,76 @@ + + + diff --git a/pages/service/service.vue b/pages/service/service.vue new file mode 100644 index 0000000..e29fd37 --- /dev/null +++ b/pages/service/service.vue @@ -0,0 +1,80 @@ + + + \ No newline at end of file diff --git a/pages/startPage/index.vue b/pages/startPage/index.vue new file mode 100644 index 0000000..3fde059 --- /dev/null +++ b/pages/startPage/index.vue @@ -0,0 +1,66 @@ + + + \ No newline at end of file diff --git a/pages/transfer/bill.vue b/pages/transfer/bill.vue new file mode 100644 index 0000000..067bfe8 --- /dev/null +++ b/pages/transfer/bill.vue @@ -0,0 +1,105 @@ + + \ No newline at end of file diff --git a/pages/transfer/index.vue b/pages/transfer/index.vue new file mode 100644 index 0000000..a8f8ff1 --- /dev/null +++ b/pages/transfer/index.vue @@ -0,0 +1,301 @@ + + + \ No newline at end of file diff --git a/pages/upgrade/index.vue b/pages/upgrade/index.vue new file mode 100644 index 0000000..cd487af --- /dev/null +++ b/pages/upgrade/index.vue @@ -0,0 +1,109 @@ + + + \ No newline at end of file diff --git a/pages/wallets/mine.vue b/pages/wallets/mine.vue new file mode 100644 index 0000000..27e1809 --- /dev/null +++ b/pages/wallets/mine.vue @@ -0,0 +1,517 @@ + + + + \ No newline at end of file diff --git a/plugins/createWS.js b/plugins/createWS.js new file mode 100644 index 0000000..9dc8902 --- /dev/null +++ b/plugins/createWS.js @@ -0,0 +1,20 @@ +let createWS = (url, callbackObj) =>{ + var ws = new WebSocket(url) + WebSocket.prototype.sendJson = function (obj) { + this.send(JSON.stringify(obj)) + } + ws.onopen = function () { + callbackObj.open && callbackObj.open(ws) + setInterval(function () { + ws.send(JSON.stringify({ + type: "heartbeat" + })) + }, 10000); + } + ws.onclose = function () { + callbackObj.onclose && callbackObj.onclose(ws) + } + return ws +} + +export default createWS; \ No newline at end of file diff --git a/plugins/datafeed.js b/plugins/datafeed.js new file mode 100644 index 0000000..0a9c324 --- /dev/null +++ b/plugins/datafeed.js @@ -0,0 +1,102 @@ +class Datafeed { + constructor(vm) { + this.self = vm; + } + onReady(callback) { + console.log('onReady') + var _this = this; + return new Promise(function (resolve) { + var configuration = _this.defaultConfiguration(); + if (_this.self.getConfig) { + configuration = Object.assign( + _this.defaultConfiguration(), + _this.self.getConfig() + ); + } + resolve(configuration); + }).then(function (data) { + if (_this.self.onReady) { + _this.self.onReady() + } + return callback(data); + }); + } + resolveSymbol(symbolName, onSymbolResolvedCallback, onResolveErrorCallback) { + var _this2 = this + return new Promise(function (resolve) { + var symbolInfo = _this2.defaultSymbol(); + if (_this2.self.getSymbol) { + symbolInfo = Object.assign(_this2.defaultSymbol(), _this2.self.getSymbol()); + } + + resolve(symbolInfo); + }).then(function (data) { + return onSymbolResolvedCallback(data); + }).catch(function (err) { + return onResolveErrorCallback(err); + }); + + } + getBars(symbolInfo, resolution, rangeStartDate, rangeEndDate, onDataCallback, onErrorCallback) { + + var onLoadedCallback = function onLoadedCallback(data) { + if (data && data.length) { + onDataCallback(data, { noData: false }); + } else { + onDataCallback([], { noData: true }); + } + }; + + this.self.getBars(symbolInfo, resolution, rangeStartDate, rangeEndDate, onLoadedCallback, onErrorCallback); + } + subscribeBars(symbolInfo, resolution, onRealtimeCallback, subscriberUID, onResetCacheNeededCallback) { + this.self.onRealtimeCallback = onRealtimeCallback + if (this.self.subscribeBars) { + this.self.subscribeBars(symbolInfo, resolution, onRealtimeCallback, subscriberUID, onResetCacheNeededCallback) + } + } + unsubscribeBars(subscriberUID) { + if (this.self.unsubscribeBars) { + this.self.unsubscribeBars(subscriberUID) + } + } + defaultConfiguration() { + return { + supports_search: false, + supports_group_request: false, + supported_resolutions: this.self.resolutions, + supports_marks: true, + supports_timescale_marks: true, + supports_time: true + }; + } + defaultSymbol() { + return { + 'name': this.self.symbol.toLocaleUpperCase(), + 'timezone': 'Asia/Shanghai', + 'minmov': 1, + 'minmov2': 0, + 'fractional': false, + //设置周期 + 'session': '24x7', + 'has_intraday': true, + 'has_no_volume': false, + //设置是否支持周月线 + "has_daily": true, + //设置是否支持周月线 + "has_weekly_and_monthly": true, + 'description': this.self.symbol.toLocaleUpperCase(), + //设置精度 100表示保留两位小数 1000三位 10000四位 + 'pricescale': 10000, + 'ticker': this.self.symbol.toLocaleUpperCase(), + + // intraday_multipliers: ["1","5", + // "15", + // "30", + // "60", + // "240",], + 'supported_resolutions': this.self.resolutions + }; + } +} +export default Datafeed; \ No newline at end of file diff --git a/plugins/index.js b/plugins/index.js new file mode 100644 index 0000000..e7f0ee5 --- /dev/null +++ b/plugins/index.js @@ -0,0 +1,5 @@ +import './method'; +import './vant'; + + + diff --git a/plugins/method.js b/plugins/method.js new file mode 100644 index 0000000..742f51f --- /dev/null +++ b/plugins/method.js @@ -0,0 +1,154 @@ +import vue from 'vue'; +import qs from 'qs' +import app from '@/app' + +// 过去本地文件 +let getFile = function (config) { + return new Promise((ress, recs) => { + // uni.showActionSheet({ + // itemList: uni.getStorageSync('language')=='zh-CN'?['拍照', '从相册中选择']:['Camera', 'Album'], + // success(res) { + // console.log(res.tapIndex,) + // let sourceType ='camera' + // if (res.tapIndex == 0) { + // sourceType = 'camera' + // } else if (res.tapIndex == 1) { + // sourceType = 'album' + // } + // uni.chooseImage({ + // count: config.config || 9, + // sourceType: [sourceType], + // success: (chooseImageRes) => { + // ress(chooseImageRes) + // }, + // fail: () => { + // recs() + // } + // }); + // } + // }) + uni.chooseImage({ + count: config.config || 9, + success: (chooseImageRes) => { + ress(chooseImageRes) + }, + fail: () => { + recc() + } + }); + }) +} +// 复制文本 +function copy(txt) { + uni.setClipboardData({ + data: txt, + success: function () { + uni.showToast({ + title: uni.getStorageSync('language')=='zh-CN'?'复制成功':'success', + duration: 2000 + }); + } + }); +} + +// 页面后退方法 +vue.prototype.$back = (num = 1) => { + let arr = getCurrentPages(); + let arr2 = arr.map(item=>{ + return item.route; + }) + console.log(arr,'页面栈路由', arr2); + if(arr.length===1){ + history.back(); + }else{ + uni.navigateBack(num) + } + + navFontColor() +} + +// 标签过滤 +function filterCode(str) { + return str.replace(/<[^<>]+>/g, '').replace(/ /ig, '') +} + +// 解决uni-app slot 数组传递bug +vue.prototype.$list = function (obj) { + return Object.entries(obj).filter(item => item[0] != '_i').map(item => item[1]) +} + +// 替换路由 +vue.prototype._router = { + push(path) { + var url = '', query, animationType, animationDuration; + if (typeof path == 'string') { + url = path + } else { + url = path.path; + query = qs.stringify(path.query); + animationType = path.animationType + animationDuration = path.animationDuration + } + uni.navigateTo({ + url: `${url}${url.includes('?') ? '&' : '?'}${query || ''}`, + animationType, + animationDuration + }); + navFontColor() + }, + replace(path) { + var url = '', query, animationType, animationDuration; + if (typeof path == 'string') { + url = path + } else { + url = path.path || ''; + query = qs.stringify(path.query); + animationType = path.animationType + animationDuration = path.animationDuration + } + uni.redirectTo({ + url: `${url}${url.includes('?') ? '&' : '?'}${query || ''}`, + animationType, + animationDuration + }); + navFontColor() + } +} +function defaultTheme() { + return `dark` + // 获取当前时间 + let timeNow = new Date(); + // 获取当前小时 + let hours = timeNow.getHours(); + // 设置默认文字 + let state = ``; + // 判断当前时间段 + if (hours >= 19 || hours <= 7) { + state = `dark`; + } else { + state = `light`; + } + return state; +} +function navFontColor() { + let theme = uni.getStorageSync('theme') || defaultTheme() + setTimeout(() => { + uni.setNavigationBarColor({ + frontColor: theme == 'light' ? '#000000' : '#ffffff', + backgroundColor: '#cccccc', + }) + }, 300) +} +function localImgUrl(name) { + let theme = uni.getStorageSync('theme') || defaultTheme() + let str = theme == 'light' ? 'static/img/light/' : 'static/img/' + return str + name +} +vue.prototype.$imgUrl = app.imgUrl +vue.prototype.$baseUrl = app.baseUrl +vue.prototype.$getFile = getFile +vue.prototype.$copy = copy +vue.prototype.$filterCode = filterCode +vue.prototype.$navFontColor = navFontColor +vue.prototype.$localImgUrl = localImgUrl + diff --git a/plugins/theme-style.js b/plugins/theme-style.js new file mode 100644 index 0000000..cd62c70 --- /dev/null +++ b/plugins/theme-style.js @@ -0,0 +1,50 @@ +let light =` + --light: #333; + --plain:#fff; + --text-color: #666; + --panel: #f7efe5; + --panel-1: fff; + --panel-2: #ebedf0; + --panel-3: #fff; + --form-panel-3: #f7f7f7; + --panel-4: #fff; + --form-panel-4: #F1F1F6; + --border-color: #dcdee0; + --mimicry-shadow:3px 3px 7px #d9d9d9, -5px -5px 10px #ffffff; + --nei-shadow:inset 5px 5px 10px #d9d9d9; + --nei-shadow-5:inset 2px 2px 5px #d9d9d9; + --shadow: 0px 0px 26px 0px rgba(34, 34, 44, 0.06); + --picker-mask:linear-gradient(180deg,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6)),linear-gradient(0deg,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6)); + --bg-top:#fff; + --bg-bottom:#f9f9f9; + --tab-nav:#fff; + --tab-nav-shadow:0px -9px 14px 0px rgba(0, 0, 0, 0.06); + --nav-tab-active:#EABB71; +` +let dark = ` + --light:#fff; + --plain:#fff; + --text-color: #9FA6B5; + --panel: #22222d; + --panel-1: #2A2A38; + --panel-2: #343445; + --panel-3: #22222d; + --panel-4: #484859; + --form-panel-4: #484859; + --border-color:#49495F; + --mimicry-shadow:3px 3px 7px #1a1a1a, -5px -5px 10px #242424; + --nei-shadow:inset 5px 5px 10px #1a1a1a; + --nei-shadow-5:inset 2px 2px 5px #1a1a1a; + --shadow: 0px 0px 33px 0px rgba(34, 34, 44, 0.25); + --picker-mask:linear-gradient(180deg,#1f1f1f,rgba(70, 70, 70, 0.6)),linear-gradient(0deg,#1f1f1f,rgba(70, 70, 70, 0.6)); + --bg-top:#292d39; + --bg-bottom:#292d39; + --tab-nav:#292d39; + --tab-nav-shadow:0px -7px 20px 0px rgba(37, 37, 48, 0.83); + --nav-tab-active:#ffffff; +` + +export default { + light, + dark +} \ No newline at end of file diff --git a/plugins/tvStyle.js b/plugins/tvStyle.js new file mode 100644 index 0000000..159cdc6 --- /dev/null +++ b/plugins/tvStyle.js @@ -0,0 +1,28 @@ +let light = { + "paneProperties.background": "#ffffff", + "paneProperties.vertGridProperties.color": "#dcdee0", + "paneProperties.horzGridProperties.color": "#dcdee0", + "scalesProperties.backgroundColor": "#ffffff", + "scalesProperties.lineColor" : "#dcdee0", + "scalesProperties.textColor": "#333", + "scalesProperties.fontSize":9, + "mainSeriesProperties.style": 8, +} + +let dark = { + "paneProperties.background": "#2b2b37", + "paneProperties.vertGridProperties.color": "#49495F", + "paneProperties.horzGridProperties.color": "#49495F", + "scalesProperties.backgroundColor": "#2b2b37", + "scalesProperties.textColor": "#fff", + "scalesProperties.lineColor" : "#49495F", + "scalesProperties.fontSize":9, + "mainSeriesProperties.style": 8, + "paneProperties.legendProperties.showSeriesOHLC": false +} + + +export default { + light, + dark +} \ No newline at end of file diff --git a/plugins/upgrade.js b/plugins/upgrade.js new file mode 100644 index 0000000..4f5ad03 --- /dev/null +++ b/plugins/upgrade.js @@ -0,0 +1,112 @@ +import Member from "../api/member.js" +import vue from 'vue' +// 缓存数据避免重复请求 +let localVersion, onlineVersionObj +// import router from '@/router' +/* eslint-disable */ +let upgrade = { + // 检测是否需要升级并返回升级信息 + async isUpdate(call, notCall) { + // #ifdef H5 + notCall && notCall() + // #endif + // #ifdef APP-PLUS + let currentVersion = await this.getAppVersion(); + let { data } = await this.getNewestVersion() + // data.android.version data.ios.version + if (plus.os.name == "Android") { + if (this.getNum(data.android.version) > this.getNum(currentVersion)) { + call && call(data) + } else { + notCall && notCall() + } + } else if (plus.os.name == "iOS") { + if (this.getNum(data.ios.version) > this.getNum(currentVersion)) { + call && call(data) + } else { + notCall && notCall() + } + } + // #endif + }, + // 获取本地app版本 + getAppVersion() { + return new Promise((success, error) => { + if (localVersion) { + success(localVersion) + } else { + plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => { + success(widgetInfo.version); + localVersion = widgetInfo.version + }); + } + }); + }, + // 获取平台名称 + osName() { + return plus.os.name + }, + // 获取线上版本 + getNewestVersion() { + if (onlineVersionObj) { + return onlineVersionObj + } + onlineVersionObj = Member.getNewestVersion() + return onlineVersionObj + }, + // 获取纯数字(无小数点) + getNum(str) { + str += ""; + return str.replace(/[^0-9]/gi, "") * 1; + }, + // 提示升级 + toUpgrade() { + console.log('去升级') + }, + // 下载文件 + downloadFile({ url, update, before, after }) { + return new Promise((success, error) => { + before && before() + let downloadTask = plus.downloader.createDownload(url, {}, (res, status) => { + if (status == 200) { + success(res.filename) + } + after && after() + }) + let onStateChanged = (e) => { + update && update(parseInt(e.downloadedSize / e.totalSize * 100) || 0) + } + downloadTask.addEventListener("statechanged", onStateChanged, false); + downloadTask.start(); + }); + }, + // 打开文件(安装) + install(path) { + if (plus.os.name == 'Android') { + plus.runtime.install( + path, + { + force: false, + }, + () => { + plus.runtime.restart(); + vue.prototype.$toast("下载成功,正在安装。。。"); + }, + (e) => { + vue.prototype.$toast("安装失败,请尝试重新下载"); + } + ); + } else if (plus.os.name == "iOS") { + plus.runtime.openURL(path) + } + }, + ready(call) { + if (window.plus) { + call(); + } else { + document.addEventListener('plusready', call, false); + } + } +} +/* eslint-disable */ +export default upgrade \ No newline at end of file diff --git a/plugins/vant.js b/plugins/vant.js new file mode 100644 index 0000000..93fc38d --- /dev/null +++ b/plugins/vant.js @@ -0,0 +1,17 @@ +import Vue from 'vue'; +// import Toast from '../wxcomponents/vant/toast/toast'; +import Dialog from '../wxcomponents/vant/dialog/dialog'; +// Vue.prototype.$toast = Toast +Vue.prototype.$toast = (msg) => { + uni.showToast({ + title: msg, + icon: "none" + }); +} +Vue.prototype.$toast.success=(msg)=>{ + uni.showToast({ + title: msg, + icon: "success" + }); +} +Vue.prototype.$dialog = Dialog \ No newline at end of file diff --git a/plugins/vue-modules/index.js b/plugins/vue-modules/index.js new file mode 100644 index 0000000..10c8f5a --- /dev/null +++ b/plugins/vue-modules/index.js @@ -0,0 +1,65 @@ +import Vue from "vue"; +import picker from "./picker"; + +let BoxConstructor = Vue.extend(picker) +let $picker = function (columns, config) { + let defaultConfig = Object.assign({ + title: this.$t('common.select') + }, config) + return new Promise((res, err) => { + let instance = new BoxConstructor({ + el: document.createElement('div'), + data() { + return { + show: false, + columns: [ + { + values: columns.map(item => item.label), + defaultIndex: columns.findIndex(item => item.value == defaultConfig.value) || 0 + } + ], + title: defaultConfig.title + } + }, + methods: { + close() { + this.show = false + let $el = instance.$el + setTimeout(() => { + instance.$destroy() + if ($el.parentNode) { + $el.parentNode.removeChild($el) + } + }, 600) + }, + input(boo) { + if (boo) { + this.show = boo + } else { + this.close() + } + }, + onConfirm(value, index) { + this.close() + res(columns[index].value, value) + }, + onCancel() { + this.close() + err() + }, + onChange() { } + }, + mounted() { + this.$nextTick(() => { + this.show = true + }) + }, + }) + document.body.appendChild(instance.$el); + }) + + +} +export { + $picker +} \ No newline at end of file diff --git a/plugins/vue-modules/picker.vue b/plugins/vue-modules/picker.vue new file mode 100644 index 0000000..fae1d2f --- /dev/null +++ b/plugins/vue-modules/picker.vue @@ -0,0 +1,33 @@ + + + \ No newline at end of file diff --git a/qidongye/android/1080.png b/qidongye/android/1080.png new file mode 100644 index 0000000..bbb3b62 Binary files /dev/null and b/qidongye/android/1080.png differ diff --git a/qidongye/android/480.png b/qidongye/android/480.png new file mode 100644 index 0000000..4bded3a Binary files /dev/null and b/qidongye/android/480.png differ diff --git a/qidongye/android/720.png b/qidongye/android/720.png new file mode 100644 index 0000000..ebf67e2 Binary files /dev/null and b/qidongye/android/720.png differ diff --git a/qidongye/android/bark.png b/qidongye/android/bark.png new file mode 100644 index 0000000..378964f Binary files /dev/null and b/qidongye/android/bark.png differ diff --git a/static/chart_main/aaa.js b/static/chart_main/aaa.js new file mode 100644 index 0000000..8823f97 --- /dev/null +++ b/static/chart_main/aaa.js @@ -0,0 +1,510 @@ +Datafeeds = {}, Datafeeds.UDFCompatibleDatafeed = function () { + "use strict"; + this._configuration = void 0, this._symbolSearch = null, this._symbolsStorage = null, this._enableLogging = !1, this._initializationFinished = !1, this._callbacks = {}, this._binary_websockets = new BinaryWebsockets, this._symbolRequestResponseHandler = new SymbolReqRespHandler(this._binary_websockets), this._historicalOHLCReqResHandler = new HistoricalOHLCReqRespHandler(this._binary_websockets), this._ohlcStreamingReqResHandler = new OHLCStreamingReqResHandler(this._binary_websockets, this._symbolRequestResponseHandler), this._supported_resolutions = [], this._supported_resolutions.push("1"), this._supported_resolutions.push("2"), this._supported_resolutions.push("3"), this._supported_resolutions.push("5"), this._supported_resolutions.push("10"), this._supported_resolutions.push("15"), this._supported_resolutions.push("30"), this._supported_resolutions.push("60"), this._supported_resolutions.push("120"), this._supported_resolutions.push("240"), this._supported_resolutions.push("480"), this._supported_resolutions.push("D"), this.globalNotifier = GlobalNotifier.getInstance(), this._initialize() +}, Datafeeds.UDFCompatibleDatafeed.prototype.defaultConfiguration = function () { + "use strict"; + return { + supports_search: !0, + supports_group_request: !1, + supported_resolutions: this._supported_resolutions, + supports_marks: !0, + exchanges: [], + symbolsTypes: [{name: "Forex", value: "Forex"}, {name: "Indices", value: "Indices"}, { + name: "OTC Stocks", + value: "OTC Stocks" + }, {name: "Commodities", value: "Commodities"}, {name: "Volatility Indices", value: "Volatility Indices"}] + } +}, Datafeeds.UDFCompatibleDatafeed.prototype.on = function (a, b) { + "use strict"; + return this._callbacks.hasOwnProperty(a) || (this._callbacks[a] = []), this._callbacks[a].push(b), this +}, Datafeeds.UDFCompatibleDatafeed.prototype._fireEvent = function (a, b) { + "use strict"; + if (this._callbacks.hasOwnProperty(a)) { + for (var c = this._callbacks[a], d = 0; d < c.length; ++d) c[d](b); + this._callbacks[a] = [] + } +}, Datafeeds.UDFCompatibleDatafeed.prototype.onInitialized = function () { + "use strict"; + this._initializationFinished = !0, this._fireEvent("initialized") +}, Datafeeds.UDFCompatibleDatafeed.prototype._logMessage = function (a) { + "use strict"; + if (this._enableLogging) { + new Date + } +}, Datafeeds.UDFCompatibleDatafeed.prototype._initialize = function () { + "use strict"; + var a = this; + this._binary_websockets.init().then(function (b) { + b && a._symbolRequestResponseHandler.init().then(function (b, c) { + var d = a.defaultConfiguration(); + d.symbolsTypes = []; + var e = b; + e.forEach(function (a) { + d.symbolsTypes.push({name: a, value: a}) + }), a._setupWithConfiguration(d) + }) + }) +}, Datafeeds.UDFCompatibleDatafeed.prototype.onReady = function (a) { + "use strict"; + var b = this; + setTimeout(function () { + b._configuration ? a(b._configuration) : b.on("configuration_ready", function () { + a(b._configuration) + }) + }, 0) +}, Datafeeds.UDFCompatibleDatafeed.prototype._setupWithConfiguration = function (a) { + "use strict"; + this._configuration = a, a.exchanges || (a.exchanges = []); + var b = a.supported_resolutions || a.supportedResolutions; + a.supported_resolutions = b; + var c = a.symbols_types || a.symbolsTypes; + if (a.symbols_types = c, !a.supports_search && !a.supports_group_request) throw"Unsupported datafeed configuration. Must either support search, or support group request"; + a.supports_search || (this._symbolSearch = new Datafeeds.SymbolSearchComponent(this)), a.supports_group_request ? this._symbolsStorage = new Datafeeds.SymbolsStorage(this) : this.onInitialized(), this._fireEvent("configuration_ready"), this._logMessage("Initialized with " + JSON.stringify(a)) +}, Datafeeds.UDFCompatibleDatafeed.prototype._symbolMetadata = function (a) { + "use strict"; + var b = {}, c = function () { + return "Indices" === a + }, d = function () { + return "OTC Stocks" === a + }, e = function () { + return "Commodities" === a + }, f = function () { + return "Volatility Indices" === a + }, g = function () { + return "Forex" === a + }; + if (a) { + var h = 1e4, i = "2200-2159:123456"; + g() && (h = 1e5), (d() || c() || e()) && (h = 100), f() && (h = 1e4, i = "24x7"), b = { + pricescale: h, + minmov: 1, + session: i + } + } + return b +}, Datafeeds.UDFCompatibleDatafeed.prototype.searchSymbolsByName = function (a, b, c, d) { + "use strict"; + if (!this._configuration) return void d([]); + if (this._configuration.supports_search) { + var e = this, f = function (a) { + var b = []; + return $.each(e._symbolRequestResponseHandler._markets, function (d, f) { + f.name === c && $.each(f.submarkets, function (d, g) { + $.each(g.symbols, function (d, g) { + f.name.indexOf(c) !== -1 && (g.symbol.indexOf(a) === -1 && g.symbol_display.toUpperCase().indexOf(a) === -1 || b.push({ + symbol: g.symbol, + description: g.symbol_display, + type: f.name, + exchange: "", + full_name: g.symbol, + supported_resolutions: e._supported_resolutions + })) + }) + }) + }), b + }; + d(f(a)) + } +}, Datafeeds.UDFCompatibleDatafeed.prototype.searchSymbolsByNameOnly = function (a) { + "use strict"; + if (!this._configuration) return []; + if (this._configuration.supports_search) { + var b = this, c = []; + return $.each(b._symbolRequestResponseHandler._markets, function (d, e) { + $.each(e.submarkets, function (d, f) { + $.each(f.symbols, function (d, f) { + f.symbol.indexOf(a) === -1 && f.symbol_display.toUpperCase().indexOf(a) === -1 || c.push({ + symbol: f.symbol, + description: f.symbol_display, + type: e.name, + exchange: "", + full_name: f.symbol, + supported_resolutions: b._supported_resolutions + }) + }) + }) + }), c + } +}, Datafeeds.UDFCompatibleDatafeed.prototype.resolveSymbol = function (a, b, c) { + "use strict"; + var d = this; + setTimeout(function () { + function e(a) { + var c = a; + d.postProcessSymbolInfo && (c = d.postProcessSymbolInfo(c)), b(c) + } + + if (!d._initializationFinished) return void d.on("initialized", function () { + d.resolveSymbol(a, b, c) + }); + if (d._configuration.supports_group_request) d._initializationFinished ? d._symbolsStorage.resolveSymbol(a, e, c) : d.on("initialized", function () { + d._symbolsStorage.resolveSymbol(a, e, c) + }); else { + var f = !1; + $.each(d._symbolRequestResponseHandler._markets, function (b, c) { + return $.each(c.submarkets, function (b, g) { + return $.each(g.symbols, function (b, g) { + if (g.symbol.indexOf(a) !== -1) { + var h = d._symbolMetadata(c.name), i = h.pricescale, j = h.minmov, k = h.session; + return e({ + name: g.symbol, + timezone: "UTC", + has_intraday: !0, + has_no_volume: !0, + ticker: g.symbol, + description: g.symbol_display, + type: c.name, + minmov: j, + pricescale: i, + supported_resolutions: d._supported_resolutions, + session: k + }), f = !0, !1 + } + }), !f + }), !f + }), f || c("unknown_symbol") + } + }, 0) +}, Datafeeds.UDFCompatibleDatafeed.prototype.getBars = function (a, b, c, d, e, f) { + "use strict"; + this.globalNotifier.loadingNotification(), this._historicalOHLCReqResHandler.getBars(a, e, f) +}, Datafeeds.UDFCompatibleDatafeed.prototype.subscribeBars = function (a, b, c, d) { + "use strict"; + this._ohlcStreamingReqResHandler.subscribeBars(a, c, d) +}, Datafeeds.UDFCompatibleDatafeed.prototype.unsubscribeBars = function (a) { + "use strict"; + this._ohlcStreamingReqResHandler.unsubscribeBars(a) +}, Datafeeds.UDFCompatibleDatafeed.prototype.getMarks = function (a, b, c, d, e) { + "use strict" +}, Datafeeds.UDFCompatibleDatafeed.prototype.calculateHistoryDepth = function (a, b, c) { + "use strict" +}, Datafeeds.UDFCompatibleDatafeed.prototype.getQuotes = function (a, b, c) { + "use strict" +}, Datafeeds.UDFCompatibleDatafeed.prototype.subscribeQuotes = function (a, b, c, d) { + "use strict" +}, Datafeeds.UDFCompatibleDatafeed.prototype.unsubscribeQuotes = function (a) { + "use strict" +}, Datafeeds.SymbolsStorage = function (a) { + "use strict"; + this._datafeed = a, this._symbolsInfo = {}, this._symbolsList = [], this._requestFullSymbolsList() +}, Datafeeds.SymbolsStorage.prototype._requestFullSymbolsList = function () { + "use strict"; + var a = this, b = this._datafeed; + $.each(a._symbolRequestResponseHandler._markets, function (c, d) { + $.each(d.submarkets, function (c, e) { + $.each(e.symbols, function (c, e) { + var f = b._symbolMetadata(d.symbol), g = f.pricescale, h = f.minmov, i = f.session, j = { + name: e.symbol, + base_name: e.symbol, + description: e.symbol_display, + full_name: e.symbol, + legs: [e.symbol], + has_intraday: !0, + has_no_volume: !0, + listed_exchange: [], + exchange: [""], + minmov: h, + pricescale: g, + type: d.name, + session: i, + ticker: e.symbol, + timezone: "UTC", + supported_resolutions: a._supported_resolutions, + has_daily: !0, + has_fractional_volume: !1, + has_weekly_and_monthly: !0, + has_empty_bars: !1, + volume_precision: 0 + }; + a._symbolsInfo[e.symbol] = a._symbolsInfo[e.display_name] = j, a._symbolsList.push(e.symbol) + }) + }) + }), this._symbolsList.sort(), this._datafeed.onInitialized() +}, Datafeeds.SymbolsStorage.prototype.resolveSymbol = function (a, b, c) { + "use strict"; + this._symbolsInfo.hasOwnProperty(a) ? b(this._symbolsInfo[a]) : c("invalid symbol") +}, Datafeeds.SymbolSearchComponent = function (a) { + "use strict"; + this._datafeed = a +}, Datafeeds.SymbolSearchComponent.prototype.searchSymbolsByName = function (a, b) { + "use strict"; + if (!this._datafeed._symbolsStorage) throw"Cannot use local symbol search when no groups information is available"; + for (var c = this._datafeed._symbolsStorage, d = [], e = !a.ticker || 0 === a.ticker.length, f = 0; f < c._symbolsList.length; ++f) { + var g = c._symbolsList[f], h = c._symbolsInfo[g]; + if (!(a.type && a.type.length > 0 && h.type !== a.type) && ((e || 0 === h.name.toUpperCase().indexOf(a.ticker)) && d.push({ + symbol: h.name, + full_name: h.full_name, + description: h.description, + exchange: h.exchange, + params: [], + type: h.type, + ticker: h.name, + supported_resolutions: this._datafeed._supported_resolutions + }), d.length >= b)) break + } + a.onResultReadyCallback(d) +}, BinaryWebsockets = function () { + "use strict"; + this.unresolved_promises = [], this.callbacks = [], this.ws = null, this._commonUtils = CommonUtils.getInstance(), this.globalNotifier = GlobalNotifier.getInstance(), this.reqIdCounter = 0 +}, BinaryWebsockets.prototype.init = function () { + var a = this; + return this.ws = new WebSocket("wss://frontend.binaryws.com/websockets/v3?l=en&app_id=2742"), this.ws.onopen = function (b) { + (a.unresolved_promises.connectionOpenEvent || []).forEach(function (a) { + a.resolve(!0) + }), delete a.unresolved_promises.connectionOpenEvent + }, this.ws.onclose = function (b) { + setTimeout(function () { + a.init().then(function (b) { + b && (a.callbacks.ohlc || []).forEach(function (b) { + if (b.requestObject) { + var c = b.requestObject.req_id && Object.keys(b.requestObject).length > 1, + d = !b.requestObject.req_id && Object.keys(b.requestObject).length > 0; + (c || d) && a.ws.send(JSON.stringify(b.requestObject)) + } + }) + }) + }, 1e3) + }, this.ws.onerror = function (b) { + a.globalNotifier.noConnectionNotification(), $.growl.error({message: "Connection error. Refresh page!"}), a.unresolved_promises = [], a.callbacks = [] + }, this.ws.onmessage = function (b) { + var c = JSON.parse(b.data); + (a.callbacks[c.msg_type] || []).forEach(function (a) { + a._callback(c) + }); + var d = c.req_id, e = a.unresolved_promises[d]; + e && (c.error ? (c.error.echo_req = c.echo_req, e.reject(c.error)) : e.resolve(c), delete a.unresolved_promises[d]) + }, new Promise(function (b, c) { + a.unresolved_promises.connectionOpenEvent = a.unresolved_promises.connectionOpenEvent || [], a.unresolved_promises.connectionOpenEvent.push({ + resolve: b, + reject: c + }) + }) +}, BinaryWebsockets.prototype.send_request = function (a) { + a.req_id = ++this.reqIdCounter; + var b = this, c = a.req_id && Object.keys(a).length > 1; + return c ? new Promise(function (c, d) { + b.unresolved_promises[a.req_id] = {resolve: c, reject: d}, b.ws.send(JSON.stringify(a)) + }) : Promise.reject({code: "EmptyRequest", message: "Empty Request", echo_req: a}) +}, BinaryWebsockets.prototype.on = function (a, b) { + (this.callbacks[a] = this.callbacks[a] || []).push(b) +}, BinaryWebsockets.prototype.request_trading_times = function () { + "use strict"; + return this.send_request({trading_times: "" + (new Date).toISOString().slice(0, 10)}) +}, BinaryWebsockets.prototype.request_stop_ohlc_streaming = function (a, b) { + "use strict"; + var c = this; + return this.callbacks.ohlc = this.callbacks.ohlc || [], this.callbacks.ohlc.forEach(function (a, d) { + if (a.listenerID === b) return c.callbacks.ohlc.splice(d, 1), !1 + }), this.send_request({forget: a}) +}, BinaryWebsockets.prototype.request_ohlc_streaming = function (a, b, c) { + "use strict"; + var d = {ticks_history: a, end: "latest", count: 1, style: "candles", granularity: b, subscribe: 1}; + this.ws.send(JSON.stringify(d)), c && (c.requestObject = d, this.on("ohlc", c)) +}, BinaryWebsockets.prototype.request_candles = function (a) { + "use strict"; + var b = a.count || 5e3, c = a.granularity, d = null; + if (a.startTime) d = moment.utc(a.startTime); else { + d = moment.utc(); + var e = this._commonUtils.parseSuffixAndIntValue(); + d = d.subtract(b * this._commonUtils.totalSecondsInABar(e.suffix, e.intVal), "seconds") + } + var f = moment.utc(); + f = f.subtract(3, "years"), f = f.add(2, "days"), d.isBefore(f) && (d = f); + var g = {ticks_history: a.symbol, end: "latest", style: "candles", start: d.unix(), count: b, granularity: c}; + return void 0 !== a.adjust_start_time && null !== a.adjust_start_time || (g.adjust_start_time = 1), this.send_request(g) +}; +var CommonUtils = function () { + function a() { + } + + a.prototype.parseSuffixAndIntValue = function () { + "use strict"; + var a = TradingView.actualResolution.toUpperCase().replace("D", "").replace("M", "").replace("W", ""), + b = "" === a ? 1 : parseInt(a), c = TradingView.actualResolution.replace("" + b, ""); + switch (c) { + case"": + b < 60 ? c = "M" : (b /= 60, c = "H"); + break; + case"W": + b *= 7, c = "D"; + break; + case"M": + b *= 30, c = "D" + } + return {suffix: c, intVal: b} + }, a.prototype.totalSecondsInABar = function (a, b) { + "use strict"; + var c = 0; + switch (a) { + case"M": + c = 60 * b; + break; + case"H": + c = 60 * b * 60; + break; + case"D": + c = 24 * b * 60 * 60 + } + return c + }; + var b = null; + return { + getInstance: function () { + return null === b && (b = new a, b.constructor = null), b + } + } +}(), GlobalNotifier = function () { + function a() { + this.handleEvent = function (a) { + var b = $(document).find("iframe").contents().find(".chart-status-picture"); + b.removeClass(b.attr("class")).addClass("chart-status-picture " + a) + } + } + + a.prototype.delayedNotification = function () { + this.handleEvent("delayed-feed") + }, a.prototype.realtimeNotification = function () { + this.handleEvent("realtime-feed") + }, a.prototype.loadingNotification = function () { + this.handleEvent("loading") + }, a.prototype.noConnectionNotification = function () { + this.handleEvent("no-connection") + }; + var b = null; + return { + getInstance: function () { + return null === b && (b = new a, b.constructor = null), b + } + } +}(); +HistoricalOHLCReqRespHandler = function (a) { + this._binary_websockets = a, this._commonUtils = CommonUtils.getInstance() +}, HistoricalOHLCReqRespHandler.prototype.getBars = function (a, b, c) { + "use strict"; + var d = this._commonUtils.parseSuffixAndIntValue(), e = d.suffix, f = d.intVal, + g = this._commonUtils.totalSecondsInABar(e, f); + this._binary_websockets.request_candles({symbol: a.ticker, granularity: g}).catch(function () { + c() + }).then(function (a) { + if (a.candles) { + var c = []; + a.candles.forEach(function (a) { + var b = 1e3 * parseInt(a.epoch), d = parseFloat(a.open), e = parseFloat(a.high), f = parseFloat(a.low), + g = parseFloat(a.close); + c.push({time: b, open: d, high: e, low: f, close: g}) + }), b(c) + } + }) +}, OHLCStreamingReqResHandler = function (a, b) { + this._binary_websockets = a, this._streamingMap = {}, this._commonUtils = CommonUtils.getInstance(), this._symbolRequestResponseHandler = b, this.globalNotifier = GlobalNotifier.getInstance() +}, OHLCStreamingReqResHandler.prototype.subscribeBars = function (a, b, c) { + var d = this, e = this._commonUtils.parseSuffixAndIntValue(), + f = this._commonUtils.totalSecondsInABar(e.suffix, e.intVal); + this._streamingMap[c] = { + symbol: a.ticker, + resolution: TradingView.actualResolution, + timerHandler: null, + granularity: f, + lastBar: null, + timerCallback: function () { + d.globalNotifier.delayedNotification(); + var a = this; + d._binary_websockets.request_candles({ + symbol: a.symbol, + granularity: a.granularity, + startTime: a.lastBar ? a.lastBar.time : null, + count: a.lastBar ? null : 1, + adjust_start_time: a.lastBar ? 0 : null + }).catch(function (a) { + }).then(function (c) { + c && c.candles && c.candles.forEach(function (c) { + var d = 1e3 * parseInt(c.epoch), e = parseFloat(c.open), f = parseFloat(c.high), g = parseFloat(c.low), + h = parseFloat(c.close), i = {time: d, open: e, high: f, low: g, close: h}; + (!a.lastBar || i.time > a.lastBar.time) && (a.lastBar = i), b(i) + }) + }) + }, + streamingCallback: function (a) { + d.globalNotifier.realtimeNotification(); + var e = d._streamingMap[c]; + if (e && a.ohlc.symbol === e.symbol && a.ohlc.granularity === e.granularity) { + e.server_request_id = a.ohlc.id; + var f = 1e3 * parseInt(a.ohlc.open_time), g = parseFloat(a.ohlc.open), h = parseFloat(a.ohlc.high), + i = parseFloat(a.ohlc.low), j = parseFloat(a.ohlc.close); + f && g && h && i && j && (this.lastBar = {time: f, open: g, high: h, low: i, close: j}, b(this.lastBar)) + } + } + }; + var g = this._symbolRequestResponseHandler.findInstrumentObjectBySymbol(a.ticker); + if (g) if (g.delay_amount > 0) { + var h = this._streamingMap[c]; + h.timerHandler = setInterval(function () { + h.timerCallback.call(h) + }, 6e4) + } else this._binary_websockets.request_ohlc_streaming(a.ticker, f, { + listenerID: c, + _callback: this._streamingMap[c].streamingCallback + }) +}, OHLCStreamingReqResHandler.prototype.unsubscribeBars = function (a) { + var b = this._streamingMap[a]; + b.timerHandler ? clearInterval(b.timerHandler) : this._binary_websockets.request_stop_ohlc_streaming(b.server_request_id, a).then(function () { + }).catch(function () { + }), delete this._streamingMap[a] +}, SymbolReqRespHandler = function (a) { + this._binary_websockets = a +}, SymbolReqRespHandler.prototype.init = function () { + "use strict"; + this._markets = null, this._symbolTypes = null; + var a = this; + return new Promise(function (b, c) { + a._binary_websockets.request_trading_times().then(function (c) { + a.process(c), b(a._symbolTypes, a._markets) + }).catch(function (a) { + "undefined" != typeof trackJs && trackJs.track("Unexpected response from server, [request_trading_times] Response error " + JSON.stringify(a)) + }) + }) +}, SymbolReqRespHandler.prototype.process = function (a) { + "use strict"; + this._markets = [], this._symbolTypes = []; + for (var b = 0; b < a.trading_times.markets.length; b++) { + var c = a.trading_times.markets[b]; + this._symbolTypes.push(c.name); + for (var d = {name: c.name, submarkets: []}, e = 0; e < c.submarkets.length; ++e) { + for (var f = c.submarkets[e], g = {name: f.name, symbols: []}, h = 0; h < f.symbols.length; h++) { + var i = f.symbols[h]; + i.feed_license && "chartonly" === i.feed_license || g.symbols.push({ + symbol: i.symbol, + symbol_display: i.name, + feed_license: i.feed_license || "realtime", + delay_amount: i.delay_amount || 0 + }) + } + d.submarkets.push(g) + } + this._markets.push(d) + } +}, SymbolReqRespHandler.prototype.findInstrumentObjectBySymbol = function (a) { + var b = null, c = !0; + return this._markets.forEach(function (d) { + return d.submarkets.forEach(function (d) { + return d.symbols.forEach(function (d) { + return d.symbol === a && (b = $.extend(!0, {}, d), c = !1), c + }), c + }), c + }), b +}, function (a) { + a.fn.bindFirst = function (b, c, d) { + var e = b.indexOf("."), f = e > 0 ? b.substring(e) : ""; + return b = e > 0 ? b.substring(0, e) : b, d = void 0 === d ? c : d, c = "function" == typeof c ? {} : c, this.each(function () { + var e = a(this), g = this["on" + b]; + g && (e.bind(b, function (a) { + return g(a.originalEvent) + }), this["on" + b] = null), e.bind(b + f, c, d); + var h = e.data("events") || a._data(e[0], "events"), i = h[b], j = i.pop(); + i.unshift(j) + }) + }, a.isEnterKeyPressed = function (a) { + var b = a.keyCode ? a.keyCode : a.which; + return "13" == b + } +}(jQuery); diff --git a/static/chart_main/binance.js b/static/chart_main/binance.js new file mode 100644 index 0000000..611effb --- /dev/null +++ b/static/chart_main/binance.js @@ -0,0 +1,15577 @@ +function isArray(e) { + return "[object Array]" === Object.prototype.toString.call(e) +} + +function isBoolean(e) { + return "boolean" == typeof e +} + +function isDate(e) { + return "[object Date]" === Object.prototype.toString.call(e) +} + +function isDefined(e) { + return void 0 !== e +} + +function isFunction(e) { + return "function" == typeof e +} + +function isNull(e) { + return null === e +} + +function isNumber(e) { + return "number" == typeof e +} + +function isObject(e) { + return null !== e && "object" == typeof e +} + +function isString(e) { + return "string" == typeof e +} + +function isUndefined(e) { + return void 0 === e +} + +function convertToBoolean(e) { + return isBoolean(e) ? e : null !== e && "" !== e && "false" !== e +} + +function hasProperty(e, t) { + return e.hasOwnProperty(t) +} + +function isStringEmpty(e) { + return isNull(e) || isUndefined(e) || isString(e) && 0 == e.length +} + +function isStringNonempty(e) { + return isString(e) && e.length > 0 +} + +function upperCaseFirstLetter(e) { + return e.charAt(0).toUpperCase() + e.slice(1) +} + +function areEqual(e, t) { + return angular.equals(e, t) +} + +function min(e, t) { + return e < t ? e : t +} + +function max(e, t) { + return e > t ? e : t +} + +function beginsWith(e, t) { + return isString(e) && 0 == e.lastIndexOf(t, 0) +} + +function endsWith(e, t) { + return isString(e) && -1 !== e.indexOf(t, e.length - t.length) +} + +function copy(e, t) { + return angular.copy(e, t) +} + +function removeProperty(e, t) { + delete e[t] +} + +function removeProperties(e, t) { + for (var n = 0; n < t.length; ++n) delete e[t[n]] +} + +function forEach(e, t, n) { + return angular.forEach(e, t, n) +} + +function defineScalyrJsLibrary(e, t) { + var n = []; + if (t instanceof Array) for (var r = 0; r < t.length - 1; ++r) n.push(t[r]); + return angular.module(e, n).factory(e, t) +} + +function defineScalyrAngularModule(e, t) { + return angular.module(e, t) +} + +function isArray(e) { + return "[object Array]" === Object.prototype.toString.call(e) +} + +function isBoolean(e) { + return "boolean" == typeof e +} + +function isDate(e) { + return "[object Date]" === Object.prototype.toString.call(e) +} + +function isDefined(e) { + return void 0 !== e +} + +function isFunction(e) { + return "function" == typeof e +} + +function isNull(e) { + return null === e +} + +function isNumber(e) { + return "number" == typeof e +} + +function isObject(e) { + return null !== e && "object" == typeof e +} + +function isString(e) { + return "string" == typeof e +} + +function isUndefined(e) { + return void 0 === e +} + +function convertToBoolean(e) { + return isBoolean(e) ? e : null !== e && "" !== e && "false" !== e +} + +function hasProperty(e, t) { + return e.hasOwnProperty(t) +} + +function isStringEmpty(e) { + return isNull(e) || isUndefined(e) || isString(e) && 0 == e.length +} + +function isStringNonempty(e) { + return isString(e) && e.length > 0 +} + +function upperCaseFirstLetter(e) { + return e.charAt(0).toUpperCase() + e.slice(1) +} + +function areEqual(e, t) { + return angular.equals(e, t) +} + +function min(e, t) { + return e < t ? e : t +} + +function max(e, t) { + return e > t ? e : t +} + +function beginsWith(e, t) { + return isString(e) && 0 == e.lastIndexOf(t, 0) +} + +function endsWith(e, t) { + return isString(e) && -1 !== e.indexOf(t, e.length - t.length) +} + +function copy(e, t) { + return angular.copy(e, t) +} + +function removeProperty(e, t) { + delete e[t] +} + +function removeProperties(e, t) { + for (var n = 0; n < t.length; ++n) delete e[t[n]] +} + +function forEach(e, t, n) { + return angular.forEach(e, t, n) +} + +function defineScalyrJsLibrary(e, t) { + var n = []; + if (t instanceof Array) for (var r = 0; r < t.length - 1; ++r) n.push(t[r]); + return angular.module(e, n).factory(e, t) +} + +function defineScalyrAngularModule(e, t) { + return angular.module(e, t) +} + +function getLang() { + var e = localStorage.lang || "en"; + return Langs[e] || Langs.en +} + +function log10(e) { + return Math.log(e) / Math.LN10 +} + +function millitime() { + return (new Date).getTime() / 1e3 +} + +function hms_from_epoch_ms(e, t) { + var n, r, o, i = "", a = null; + try { + a = new Date(e), t ? (n = a.getHours(), r = a.getMinutes(), o = a.getSeconds()) : (n = a.getUTCHours(), r = a.getUTCMinutes(), o = a.getUTCSeconds()), i += (n < 10 ? "0" + n : n) + ":", i += (r < 10 ? "0" + r : r) + ":", i += o < 10 ? "0" + o : o + } catch (e) { + i = "00:00:00" + } + return i +} + +function formatted_date(e, t, n) { + var r = new Date(1e3 * e), o = ""; + return !0 === n ? (t && (o = r.getFullYear() + "-"), o += r.getMonth() + 1 < 10 ? "0" : "", o += r.getMonth() + 1 + "-", o += r.getDate() < 10 ? "0" : "", o += r.getDate()) : (t && (o = r.getUTCFullYear() + "-"), o += r.getUTCMonth() + 1 < 10 ? "0" : "", o += r.getUTCMonth() + 1 + "-", o += r.getUTCDate() < 10 ? "0" : "", o += r.getUTCDate()), o +} + +function timestamp(e) { + null != e && void 0 !== e || (e = !0); + var t, n, r, o = new Date, i = ""; + return e ? (t = o.getHours(), n = o.getMinutes(), r = o.getSeconds()) : (t = o.getUTCHours(), n = o.getUTCMinutes(), r = o.getUTCSeconds()), i += (t < 10 ? "0" + t : t) + ":", i += (n < 10 ? "0" + n : n) + ":", i += r < 10 ? "0" + r : r +} + +function hms_from_sec(e) { + var t = "", n = e % 60, r = (e - n) / 60 % 60, o = (e - 60 * r - n) / 3600 % 3600; + return t += (o < 10 ? "0" + o : o) + ":", t += (r < 10 ? "0" + r : r) + ":", t += n < 10 ? "0" + n : n +} + +function dhms_from_sec(e) { + var t, n, r, o, i = "", a = e; + return t = Math.floor(a / 86400), a -= 86400 * t, n = Math.floor(a / 3600), a -= 3600 * n, r = Math.floor(a / 60), o = a - 60 * r, i += t > 0 ? t + ":" : "", i += (n < 10 ? "0" + n : n) + ":", i += (r < 10 ? "0" + r : r) + ":", i += o < 10 ? "0" + o : o +} + +function time_delta_print(e) { + var t = "", n = 0, r = 0, o = 0, i = 0, a = e; + return a |= 0, n = Math.floor(a / 86400), a -= 86400 * n, r = Math.floor(a / 3600), a -= 3600 * r, o = Math.floor(a / 60), i = a - 60 * o, n >= 2 ? t = n + " days" : n >= 1 ? (t = n + " day, " + r + " hour", r > 1 && (t += "s")) : r >= 1 ? (t = r + " hour", r > 1 && (t += "s")) : t = o >= 1 ? o + " min" : i + " sec", t + " ago" +} + +function numberWithCommas(e) { + var t = e.toString().split("."); + return t[0] = t[0].replace(/\B(?=(\d{3})+(?!\d))/g, ","), t.join(".") +} + +function delayClass(e, t, n) { + window.setTimeout(function () { + $(e).removeClass(t) + }, n) +} + +function deepCopy(e) { + return $.extend(!0, {}, e) +} + +function AssertException(e) { + this.message = e +} + +function assert(e, t) { + if (!e) throw new AssertException(t) +} + +function stopEvent(e) { + try { + e.preventDefault(), e.stopPropagation() + } catch (e) { + } +} + +function NoBreak(e) { + return e.replace(/ /g, " ") +} + +function HTMLEncode(e) { + return $("
").text(e).html() +} + +function HTMLDecode(e) { + return $("
").html(e).text() +} + +function clearingSpan() { + return $("").addClass("clear").html(" ") +} + +function clearingSpanHTML() { + return ' ' +} + +function uniqueID() { + return "id" + lastUniqueID++ +} + +function randInt(e) { + return Math.floor(Math.random() * e) +} + +function randRange(e, t) { + return Math.floor(Math.random() * (t - e)) + e +} + +function randomString(e) { + "number" != typeof e && (e = 10); + var t = 0, n = ""; + for (t = 0; t < e; t++) n += alphabet[randInt(alphalen)]; + return n +} + +function storageSupport() { + try { + return "localStorage" in window && null !== window.localStorage + } catch (e) { + return !1 + } +} + +function wsSupport() { + try { + return !!window.WebSocket + } catch (e) { + return !1 + } +} + +function locationOf(e, t, n, r, o) { + null == n && (n = 0), null == r && (r = t.length - 1), "string" == typeof o && ("gt" == o ? o = function (e, t) { + return e > t + } : "lt" == o && (o = function (e, t) { + return e < t + })); + var i = parseInt(n + (r - n) / 2); + return t[i] == e ? {index: i, exact: !0} : r - n <= 1 ? { + index: i + 1, + exact: !1 + } : o(t[i], e) ? locationOf(e, t, i, r, o) : locationOf(e, t, n, i, o) +} + +function has_worker() { + return !!window.Worker +} + +function pixel_ratio() { + return window.hasOwnProperty("devicePixelRatio") ? window.devicePixelRatio : 1 +} + +function _(e, t) { + return e +} + +function PtInPolygon(e, t) { + for (var n = 0, r = 0; r < t.length; r++) p1 = t[r], p2 = t[(r + 1) % t.length], p1[1] != p2[1] && (e[1] < Math.min(p1[1], p2[1]) || e[1] >= Math.max(p1[1], p2[1]) || (e[1] - p1[1]) * (p2[0] - p1[0]) / (p2[1] - p1[1]) + p1[0] > e[0] && n++); + return n % 2 == 1 +} + +function chackRate() { + var e = 0; + for (timesList.length >= times && timesList.pop(), timesList.splice(0, 0, (new Date).getTime()), e = 0; e < timesList.length && !(timesList[e] + timeLimit < (new Date).getTime()); e++) ; + return !(e >= times) || (console.log("@@@@@@按钮点击频率太快"), !1) +} + +function Graph(e) { + this.vertices = e, this.edges = 0, this.adj = [], this.edgeTo = []; + for (var t = 0; t < this.vertices; t++) ; + this.marked = {}, this.addEdge = function (e, t) { + this.adj[e] || (this.adj[e] = []), this.adj[t] || (this.adj[t] = []), this.adj[e].push(t), this.adj[t].push(e), this.edges++ + }, this.bfs = function (e) { + this.source = e; + for (var t in this.marked) this.marked[t] = !1; + var n = []; + for (this.marked[e] = !0, n.push(e); n.length > 0;) { + var r = n.shift(); + if (this.adj[r]) for (var o = 0; o < this.adj[r].length; o++) for (var i = this.adj[r], a = 0; a < i.length; a++) this.marked[i[a]] || (this.edgeTo[i[a]] = r, this.marked[i[a]] = !0, n.push(i[a])) + } + }, this.pathTo = function (e) { + var t = this.source, n = 0, r = []; + if (!this.edgeTo[e]) return 0; + for (var o = e; o != t; o = this.edgeTo[o]) { + if (!this.edgeTo[o]) return 0; + if (r.push([this.edgeTo[o], o]), ++n > 100) break + } + return r + } +} + +!function (e) { + var t = function (e) { + var t = e.backingStorePixelRatio || e.mozBackingStorePixelRatio || e.msBackingStorePixelRatio || e.oBackingStorePixelRatio || e.backingStorePixelRatio || 1; + return (window.devicePixelRatio || 1) / t + }(e); + 1 !== t && (!function (e, t) { + for (var n in e) e.hasOwnProperty(n) && t(e[n], n) + }({ + fillRect: "all", + clearRect: "all", + strokeRect: "all", + moveTo: "all", + lineTo: "all", + arc: [0, 1, 2], + arcTo: "all", + bezierCurveTo: "all", + isPointinPath: "all", + isPointinStroke: "all", + quadraticCurveTo: "all", + rect: "all", + translate: "all", + createRadialGradient: "all", + createLinearGradient: "all" + }, function (n, r) { + e[r] = function (e) { + return function () { + var r, o, i = Array.prototype.slice.call(arguments); + if ("all" === n) i = i.map(function (e) { + return e * t + }); else if (Array.isArray(n)) for (r = 0, o = n.length; r < o; r++) i[n[r]] *= t; + return e.apply(this, i) + } + }(e[r]) + }), e.stroke = function (e) { + return function () { + this.lineWidth *= t, e.apply(this, arguments), this.lineWidth /= t + } + }(e.stroke), e.fillText = function (e) { + return function () { + var n = Array.prototype.slice.call(arguments); + n[1] *= t, n[2] *= t, this.font = this.font.replace(/(\d+)(px|em|rem|pt)/g, function (e, n, r) { + return n * t + r + }), n.length >= 4 && t > 1 && (n[3] *= t), e.apply(this, n), this.font = this.font.replace(/(\d+)(px|em|rem|pt)/g, function (e, n, r) { + return n / t + r + }) + } + }(e.fillText), e.strokeText = function (e) { + return function () { + var n = Array.prototype.slice.call(arguments); + n[1] *= t, n[2] *= t, this.font = this.font.replace(/(\d+)(px|em|rem|pt)/g, function (e, n, r) { + return n * t + r + }), e.apply(this, n), this.font = this.font.replace(/(\d+)(px|em|rem|pt)/g, function (e, n, r) { + return n / t + r + }) + } + }(e.strokeText)) +}(CanvasRenderingContext2D.prototype), function (e) { + e.getContext = function (e) { + return function (t) { + var n, r, o = e.call(this, t); + return "2d" === t && (n = o.backingStorePixelRatio || o.mozBackingStorePixelRatio || o.msBackingStorePixelRatio || o.oBackingStorePixelRatio || o.backingStorePixelRatio || 1, (r = (window.devicePixelRatio || 1) / n) > 1 && "true" != $(this).attr("val") && !($(this).attr("class") || "").match("geetest_absolute") && ("" != this.style.height && Number(this.style.height.replace("px", "")) * r == this.height || (this.style.height = this.height + "px", this.style.width = this.width + "px", this.width *= r, this.height *= r, $(this).attr("val", !0)))), o + } + }(e.getContext) +}(HTMLCanvasElement.prototype), function (e, t) { + function n(e) { + var t = e.length, n = ce.type(e); + return !ce.isWindow(e) && (!(1 !== e.nodeType || !t) || ("array" === n || "function" !== n && (0 === t || "number" == typeof t && t > 0 && t - 1 in e))) + } + + function r(e) { + var t = Te[e] = {}; + return ce.each(e.match(fe) || [], function (e, n) { + t[n] = !0 + }), t + } + + function o(e, n, r, o) { + if (ce.acceptData(e)) { + var i, a, s = ce.expando, l = e.nodeType, c = l ? ce.cache : e, u = l ? e[s] : e[s] && s; + if (u && c[u] && (o || c[u].data) || r !== t || "string" != typeof n) return u || (u = l ? e[s] = ee.pop() || ce.guid++ : s), c[u] || (c[u] = l ? {} : {toJSON: ce.noop}), ("object" == typeof n || "function" == typeof n) && (o ? c[u] = ce.extend(c[u], n) : c[u].data = ce.extend(c[u].data, n)), a = c[u], o || (a.data || (a.data = {}), a = a.data), r !== t && (a[ce.camelCase(n)] = r), "string" == typeof n ? null == (i = a[n]) && (i = a[ce.camelCase(n)]) : i = a, i + } + } + + function i(e, t, n) { + if (ce.acceptData(e)) { + var r, o, i = e.nodeType, a = i ? ce.cache : e, l = i ? e[ce.expando] : ce.expando; + if (a[l]) { + if (t && (r = n ? a[l] : a[l].data)) { + ce.isArray(t) ? t = t.concat(ce.map(t, ce.camelCase)) : t in r ? t = [t] : (t = ce.camelCase(t), t = t in r ? [t] : t.split(" ")), o = t.length; + for (; o--;) delete r[t[o]]; + if (n ? !s(r) : !ce.isEmptyObject(r)) return + } + (n || (delete a[l].data, s(a[l]))) && (i ? ce.cleanData([e], !0) : ce.support.deleteExpando || a != a.window ? delete a[l] : a[l] = null) + } + } + } + + function a(e, n, r) { + if (r === t && 1 === e.nodeType) { + var o = "data-" + n.replace(Ce, "-$1").toLowerCase(); + if ("string" == typeof(r = e.getAttribute(o))) { + try { + r = "true" === r || "false" !== r && ("null" === r ? null : +r + "" === r ? +r : Se.test(r) ? ce.parseJSON(r) : r) + } catch (e) { + } + ce.data(e, n, r) + } else r = t + } + return r + } + + function s(e) { + var t; + for (t in e) if (("data" !== t || !ce.isEmptyObject(e[t])) && "toJSON" !== t) return !1; + return !0 + } + + function l() { + return !0 + } + + function c() { + return !1 + } + + function u() { + try { + return X.activeElement + } catch (e) { + } + } + + function f(e, t) { + do { + e = e[t] + } while (e && 1 !== e.nodeType); + return e + } + + function d(e, t, n) { + if (ce.isFunction(t)) return ce.grep(e, function (e, r) { + return !!t.call(e, r, e) !== n + }); + if (t.nodeType) return ce.grep(e, function (e) { + return e === t !== n + }); + if ("string" == typeof t) { + if (qe.test(t)) return ce.filter(t, e, n); + t = ce.filter(t, e) + } + return ce.grep(e, function (e) { + return ce.inArray(e, t) >= 0 !== n + }) + } + + function p(e) { + var t = ze.split("|"), n = e.createDocumentFragment(); + if (n.createElement) for (; t.length;) n.createElement(t.pop()); + return n + } + + function h(e, t) { + return ce.nodeName(e, "table") && ce.nodeName(1 === t.nodeType ? t : t.firstChild, "tr") ? e.getElementsByTagName("tbody")[0] || e.appendChild(e.ownerDocument.createElement("tbody")) : e + } + + function g(e) { + return e.type = (null !== ce.find.attr(e, "type")) + "/" + e.type, e + } + + function m(e) { + var t = rt.exec(e.type); + return t ? e.type = t[1] : e.removeAttribute("type"), e + } + + function v(e, t) { + for (var n, r = 0; null != (n = e[r]); r++) ce._data(n, "globalEval", !t || ce._data(t[r], "globalEval")) + } + + function b(e, t) { + if (1 === t.nodeType && ce.hasData(e)) { + var n, r, o, i = ce._data(e), a = ce._data(t, i), s = i.events; + if (s) { + delete a.handle, a.events = {}; + for (n in s) for (r = 0, o = s[n].length; o > r; r++) ce.event.add(t, n, s[n][r]) + } + a.data && (a.data = ce.extend({}, a.data)) + } + } + + function y(e, t) { + var n, r, o; + if (1 === t.nodeType) { + if (n = t.nodeName.toLowerCase(), !ce.support.noCloneEvent && t[ce.expando]) { + o = ce._data(t); + for (r in o.events) ce.removeEvent(t, r, o.handle); + t.removeAttribute(ce.expando) + } + "script" === n && t.text !== e.text ? (g(t).text = e.text, m(t)) : "object" === n ? (t.parentNode && (t.outerHTML = e.outerHTML), ce.support.html5Clone && e.innerHTML && !ce.trim(t.innerHTML) && (t.innerHTML = e.innerHTML)) : "input" === n && et.test(e.type) ? (t.defaultChecked = t.checked = e.checked, t.value !== e.value && (t.value = e.value)) : "option" === n ? t.defaultSelected = t.selected = e.defaultSelected : ("input" === n || "textarea" === n) && (t.defaultValue = e.defaultValue) + } + } + + function x(e, n) { + var r, o, i = 0, + a = typeof e.getElementsByTagName !== G ? e.getElementsByTagName(n || "*") : typeof e.querySelectorAll !== G ? e.querySelectorAll(n || "*") : t; + if (!a) for (a = [], r = e.childNodes || e; null != (o = r[i]); i++) !n || ce.nodeName(o, n) ? a.push(o) : ce.merge(a, x(o, n)); + return n === t || n && ce.nodeName(e, n) ? ce.merge([e], a) : a + } + + function w(e) { + et.test(e.type) && (e.defaultChecked = e.checked) + } + + function $(e, t) { + if (t in e) return t; + for (var n = t.charAt(0).toUpperCase() + t.slice(1), r = t, o = $t.length; o--;) if ((t = $t[o] + n) in e) return t; + return r + } + + function k(e, t) { + return e = t || e, "none" === ce.css(e, "display") || !ce.contains(e.ownerDocument, e) + } + + function T(e, t) { + for (var n, r, o, i = [], a = 0, s = e.length; s > a; a++) (r = e[a]).style && (i[a] = ce._data(r, "olddisplay"), n = r.style.display, t ? (i[a] || "none" !== n || (r.style.display = ""), "" === r.style.display && k(r) && (i[a] = ce._data(r, "olddisplay", A(r.nodeName)))) : i[a] || (o = k(r), (n && "none" !== n || !o) && ce._data(r, "olddisplay", o ? n : ce.css(r, "display")))); + for (a = 0; s > a; a++) (r = e[a]).style && (t && "none" !== r.style.display && "" !== r.style.display || (r.style.display = t ? i[a] || "" : "none")); + return e + } + + function S(e, t, n) { + var r = gt.exec(t); + return r ? Math.max(0, r[1] - (n || 0)) + (r[2] || "px") : t + } + + function C(e, t, n, r, o) { + for (var i = n === (r ? "border" : "content") ? 4 : "width" === t ? 1 : 0, a = 0; 4 > i; i += 2) "margin" === n && (a += ce.css(e, n + wt[i], !0, o)), r ? ("content" === n && (a -= ce.css(e, "padding" + wt[i], !0, o)), "margin" !== n && (a -= ce.css(e, "border" + wt[i] + "Width", !0, o))) : (a += ce.css(e, "padding" + wt[i], !0, o), "padding" !== n && (a += ce.css(e, "border" + wt[i] + "Width", !0, o))); + return a + } + + function E(e, t, n) { + var r = !0, o = "width" === t ? e.offsetWidth : e.offsetHeight, i = lt(e), + a = ce.support.boxSizing && "border-box" === ce.css(e, "boxSizing", !1, i); + if (0 >= o || null == o) { + if ((0 > (o = ct(e, t, i)) || null == o) && (o = e.style[t]), mt.test(o)) return o; + r = a && (ce.support.boxSizingReliable || o === e.style[t]), o = parseFloat(o) || 0 + } + return o + C(e, t, n || (a ? "border" : "content"), r, i) + "px" + } + + function A(e) { + var t = X, n = bt[e]; + return n || ("none" !== (n = N(e, t)) && n || (st = (st || ce("'},t}(),d=a;window.TradingView=window.TradingView||{},window.TradingView.version=o,t.version=o,t.onready=i,t.widget=d,Object.defineProperty(t,"__esModule",{value:!0})}); diff --git a/static/chart_main/chart_main/datafeed-api.d.ts b/static/chart_main/chart_main/datafeed-api.d.ts new file mode 100644 index 0000000..072cc76 --- /dev/null +++ b/static/chart_main/chart_main/datafeed-api.d.ts @@ -0,0 +1,220 @@ +export declare type ResolutionString = string; +export interface Exchange { + value: string; + name: string; + desc: string; +} +export interface DatafeedSymbolType { + name: string; + value: string; +} +export interface DatafeedConfiguration { + exchanges?: Exchange[]; + supported_resolutions?: ResolutionString[]; + supports_marks?: boolean; + supports_time?: boolean; + supports_timescale_marks?: boolean; + symbols_types?: DatafeedSymbolType[]; +} +export declare type OnReadyCallback = (configuration: DatafeedConfiguration) => void; +export interface IExternalDatafeed { + onReady(callback: OnReadyCallback): void; +} +export interface DatafeedQuoteValues { + ch?: number; + chp?: number; + short_name?: string; + exchange?: string; + description?: string; + lp?: number; + ask?: number; + bid?: number; + spread?: number; + open_price?: number; + high_price?: number; + low_price?: number; + prev_close_price?: number; + volume?: number; + original_name?: string; + [valueName: string]: string | number | undefined; +} +export interface QuoteOkData { + s: 'ok'; + n: string; + v: DatafeedQuoteValues; +} +export interface QuoteErrorData { + s: 'error'; + n: string; + v: object; +} +export declare type QuoteData = QuoteOkData | QuoteErrorData; +export declare type QuotesCallback = (data: QuoteData[]) => void; +export interface IDatafeedQuotesApi { + getQuotes(symbols: string[], onDataCallback: QuotesCallback, onErrorCallback: (msg: string) => void): void; + subscribeQuotes(symbols: string[], fastSymbols: string[], onRealtimeCallback: QuotesCallback, listenerGUID: string): void; + unsubscribeQuotes(listenerGUID: string): void; +} +export declare type CustomTimezones = 'America/New_York' | 'America/Los_Angeles' | 'America/Chicago' | 'America/Phoenix' | 'America/Toronto' | 'America/Vancouver' | 'America/Argentina/Buenos_Aires' | 'America/El_Salvador' | 'America/Sao_Paulo' | 'America/Bogota' | 'America/Caracas' | 'Europe/Moscow' | 'Europe/Athens' | 'Europe/Belgrade' | 'Europe/Berlin' | 'Europe/London' | 'Europe/Luxembourg' | 'Europe/Madrid' | 'Europe/Paris' | 'Europe/Rome' | 'Europe/Warsaw' | 'Europe/Istanbul' | 'Europe/Zurich' | 'Australia/Sydney' | 'Australia/Brisbane' | 'Australia/Adelaide' | 'Australia/ACT' | 'Asia/Almaty' | 'Asia/Ashkhabad' | 'Asia/Tokyo' | 'Asia/Taipei' | 'Asia/Singapore' | 'Asia/Shanghai' | 'Asia/Seoul' | 'Asia/Tehran' | 'Asia/Dubai' | 'Asia/Kolkata' | 'Asia/Hong_Kong' | 'Asia/Bangkok' | 'Asia/Chongqing' | 'Asia/Jerusalem' | 'Asia/Kuwait' | 'Asia/Muscat' | 'Asia/Qatar' | 'Asia/Riyadh' | 'Pacific/Auckland' | 'Pacific/Chatham' | 'Pacific/Fakaofo' | 'Pacific/Honolulu' | 'America/Mexico_City' | 'Africa/Cairo' | 'Africa/Johannesburg' | 'Asia/Kathmandu' | 'US/Mountain'; +export declare type Timezone = 'Etc/UTC' | CustomTimezones; +export interface LibrarySymbolInfo { + /** + * Symbol Name + */ + name: string; + full_name: string; + base_name?: [string]; + /** + * Unique symbol id + */ + ticker?: string; + description: string; + type: string; + /** + * @example "1700-0200" + */ + session: string; + /** + * Traded exchange + * @example "NYSE" + */ + exchange: string; + listed_exchange: string; + timezone: Timezone; + /** + * Code (Tick) + * @example 8/16/.../256 (1/8/100 1/16/100 ... 1/256/100) or 1/10/.../10000000 (1 0.1 ... 0.0000001) + */ + pricescale: number; + /** + * The number of units that make up one tick. + * @example For example, U.S. equities are quotes in decimals, and tick in decimals, and can go up +/- .01. So the tick increment is 1. But the e-mini S&P futures contract, though quoted in decimals, goes up in .25 increments, so the tick increment is 25. (see also Tick Size) + */ + minmov: number; + fractional?: boolean; + /** + * @example Quarters of 1/32: pricescale=128, minmovement=1, minmovement2=4 + */ + minmove2?: number; + /** + * false if DWM only + */ + has_intraday?: boolean; + /** + * An array of resolutions which should be enabled in resolutions picker for this symbol. + */ + supported_resolutions: ResolutionString[]; + /** + * @example (for ex.: "1,5,60") - only these resolutions will be requested, all others will be built using them if possible + */ + intraday_multipliers?: string[]; + has_seconds?: boolean; + /** + * It is an array containing seconds resolutions (in seconds without a postfix) the datafeed builds by itself. + */ + seconds_multipliers?: string[]; + has_daily?: boolean; + has_weekly_and_monthly?: boolean; + has_empty_bars?: boolean; + force_session_rebuild?: boolean; + has_no_volume?: boolean; + /** + * Integer showing typical volume value decimal places for this symbol + */ + volume_precision?: number; + data_status?: 'streaming' | 'endofday' | 'pulsed' | 'delayed_streaming'; + /** + * Boolean showing whether this symbol is expired futures contract or not. + */ + expired?: boolean; + /** + * Unix timestamp of expiration date. + */ + expiration_date?: number; + sector?: string; + industry?: string; + currency_code?: string; +} +export interface DOMLevel { + price: number; + volume: number; +} +export interface DOMData { + snapshot: boolean; + asks: DOMLevel[]; + bids: DOMLevel[]; +} +export interface Bar { + time: number; + open: number; + high: number; + low: number; + close: number; + volume?: number; +} +export interface SearchSymbolResultItem { + symbol: string; + full_name: string; + description: string; + exchange: string; + ticker: string; + type: string; +} +export interface HistoryMetadata { + noData: boolean; + nextTime?: number | null; +} +export interface MarkCustomColor { + color: string; + background: string; +} +export declare type MarkConstColors = 'red' | 'green' | 'blue' | 'yellow'; +export interface Mark { + id: string | number; + time: number; + color: MarkConstColors | MarkCustomColor; + text: string; + label: string; + labelFontColor: string; + minSize: number; +} +export interface TimescaleMark { + id: string | number; + time: number; + color: MarkConstColors | string; + label: string; + tooltip: string[]; +} +export declare type ResolutionBackValues = 'D' | 'M'; +export interface HistoryDepth { + resolutionBack: ResolutionBackValues; + intervalBack: number; +} +export declare type SearchSymbolsCallback = (items: SearchSymbolResultItem[]) => void; +export declare type ResolveCallback = (symbolInfo: LibrarySymbolInfo) => void; +export declare type HistoryCallback = (bars: Bar[], meta: HistoryMetadata) => void; +export declare type SubscribeBarsCallback = (bar: Bar) => void; +export declare type GetMarksCallback = (marks: T[]) => void; +export declare type ServerTimeCallback = (serverTime: number) => void; +export declare type DomeCallback = (data: DOMData) => void; +export declare type ErrorCallback = (reason: string) => void; +export interface IDatafeedChartApi { + calculateHistoryDepth?(resolution: ResolutionString, resolutionBack: ResolutionBackValues, intervalBack: number): HistoryDepth | undefined; + getMarks?(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; + getTimescaleMarks?(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; + /** + * This function is called if configuration flag supports_time is set to true when chart needs to know the server time. + * The charting library expects callback to be called once. + * The time is provided without milliseconds. Example: 1445324591. It is used to display Countdown on the price scale. + */ + getServerTime?(callback: ServerTimeCallback): void; + searchSymbols(userInput: string, exchange: string, symbolType: string, onResult: SearchSymbolsCallback): void; + resolveSymbol(symbolName: string, onResolve: ResolveCallback, onError: ErrorCallback): void; + getBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, rangeStartDate: number, rangeEndDate: number, onResult: HistoryCallback, onError: ErrorCallback, isFirstCall: boolean): void; + subscribeBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, onTick: SubscribeBarsCallback, listenerGuid: string, onResetCacheNeededCallback: () => void): void; + unsubscribeBars(listenerGuid: string): void; + subscribeDepth?(symbolInfo: LibrarySymbolInfo, callback: DomeCallback): string; + unsubscribeDepth?(subscriberUID: string): void; +} + +export as namespace TradingView; diff --git a/static/chart_main/chart_main/huobi.js b/static/chart_main/chart_main/huobi.js new file mode 100644 index 0000000..ada6e7b --- /dev/null +++ b/static/chart_main/chart_main/huobi.js @@ -0,0 +1,19553 @@ +!function (t) { + function e(n) { + if (r[n]) return r[n].exports; + var i = r[n] = {i: n, l: !1, exports: {}}; + return t[n].call(i.exports, i, i.exports, e), i.l = !0, i.exports + } + + var n = window.webpackJsonp; + window.webpackJsonp = function (r, a, o) { + for (var s, l, u, c = 0, f = []; c < r.length; c++) l = r[c], i[l] && f.push(i[l][0]), i[l] = 0; + for (s in a) Object.prototype.hasOwnProperty.call(a, s) && (t[s] = a[s]); + for (n && n(r, a, o); f.length;) f.shift()(); + if (o) for (c = 0; c < o.length; c++) u = e(e.s = o[c]); + return u + }; + var r = {}, i = {76: 0}; + e.e = function (t) { + function n() { + s.onerror = s.onload = null, clearTimeout(l); + var e = i[t]; + 0 !== e && (e && e[1](new Error("Loading chunk " + t + " failed.")), i[t] = void 0) + } + + var r = i[t]; + if (0 === r) return new Promise(function (t) { + t() + }); + if (r) return r[2]; + var a = new Promise(function (e, n) { + r = i[t] = [e, n] + }); + r[2] = a; + var o = document.getElementsByTagName("head")[0], s = document.createElement("script"); + s.type = "text/javascript", s.charset = "utf-8", s.async = !0, s.timeout = 12e4, e.nc && s.setAttribute("nonce", e.nc), s.src = e.p + "assets/scripts/" + t + "_" + { + 0: "997bbf9f", + 1: "34a46847", + 2: "298900da", + 3: "452813bb", + 4: "2828ea33", + 5: "1de5df60", + 6: "ee164123", + 7: "7bdc835f", + 8: "92ef6b32", + 9: "b7986e82", + 10: "1f94aca6", + 11: "8888d94e", + 12: "0a7dbedb", + 13: "c235f57d", + 14: "8c05e09d", + 15: "d5ec3e9e", + 16: "7290b915", + 17: "ec0dbd0b", + 18: "3e0d36cd", + 19: "8a21ec78", + 20: "9acd1d24", + 21: "6ddf4f8b", + 22: "f661b36b", + 23: "e7f9dab5", + 24: "8e6f24eb", + 25: "8b320d59", + 26: "7aedda47", + 27: "e77726f9", + 28: "a36e2569", + 29: "6a3de57f", + 30: "6931692c", + 31: "af5713b6", + 32: "6a037020", + 33: "fb614388", + 34: "d0961311", + 35: "95959014", + 36: "f8531011", + 37: "f55d7ba0", + 38: "41450df7", + 39: "9e90aba5", + 40: "c2bb5087", + 41: "50b00f7e", + 42: "f7855b14", + 43: "4d1e8251", + 44: "e9c81872", + 45: "2fabe9a8", + 46: "9cf2941e", + 47: "53d25c99", + 48: "4bdbe16f", + 49: "c8e23fce", + 50: "4b1b6d1a", + 51: "776782cb", + 52: "ee81a843", + 53: "740c6940", + 54: "02c9b4a6", + 55: "a6b97ab6", + 56: "deec9f6a", + 57: "d206f93e", + 58: "54cde00e", + 59: "f04f64fc", + 60: "32a88d54", + 61: "4a88622a", + 62: "50372790", + 63: "438c9548", + 64: "78fa0dbd", + 65: "1369163f", + 66: "221a5002", + 67: "3ecd6ca8", + 68: "85d72229", + 69: "3d48baf4", + 70: "6421babe", + 71: "733aa5f6", + 72: "f5b61b34", + 73: "a0b74537", + 74: "58f0c200", + 75: "61a755e9" + }[t] + ".js"; + var l = setTimeout(n, 12e4); + return s.onerror = s.onload = n, o.appendChild(s), a + }, e.m = t, e.c = r, e.i = function (t) { + return t + }, e.d = function (t, n, r) { + e.o(t, n) || Object.defineProperty(t, n, {configurable: !1, enumerable: !0, get: r}) + }, e.n = function (t) { + var n = t && t.__esModule ? function () { + return t.default + } : function () { + return t + }; + return e.d(n, "a", n), n + }, e.o = function (t, e) { + return Object.prototype.hasOwnProperty.call(t, e) + }, e.p = "/", e.oe = function (t) { + throw console.error(t), t + } +}([, , , , , , , function (t, e, n) { + "use strict"; + e.__esModule = !0; + var r = n(74), i = function (t) { + return t && t.__esModule ? t : {default: t} + }(r); + e.default = function (t) { + return function () { + var e = t.apply(this, arguments); + return new i.default(function (t, n) { + function r(a, o) { + try { + var s = e[a](o), l = s.value + } catch (t) { + return void n(t) + } + if (!s.done) return i.default.resolve(l).then(function (t) { + r("next", t) + }, function (t) { + r("throw", t) + }); + t(l) + } + + return r("next") + }) + } + } +}, function (t, e, n) { + t.exports = n(483) +}, , , , , , function (t, e, n) { + t.exports = {default: n(500), __esModule: !0} +}, , , , function (t, e, n) { + "use strict"; + + function r(t) { + return t && t.__esModule ? t : {default: t} + } + + e.__esModule = !0; + var i = n(479), a = r(i), o = n(478), s = r(o), + l = "function" == typeof s.default && "symbol" == typeof a.default ? function (t) { + return typeof t + } : function (t) { + return t && "function" == typeof s.default && t.constructor === s.default && t !== s.default.prototype ? "symbol" : typeof t + }; + e.default = "function" == typeof s.default && "symbol" === l(a.default) ? function (t) { + return void 0 === t ? "undefined" : l(t) + } : function (t) { + return t && "function" == typeof s.default && t.constructor === s.default && t !== s.default.prototype ? "symbol" : void 0 === t ? "undefined" : l(t) + } +}, , , , , function (t, e, n) { + t.exports = n(435) +}, , , , function (t, e, n) { + "use strict"; + e.__esModule = !0; + var r = n(73), i = function (t) { + return t && t.__esModule ? t : {default: t} + }(r); + e.default = i.default || function (t) { + for (var e = 1; e < arguments.length; e++) { + var n = arguments[e]; + for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (t[r] = n[r]) + } + return t + } +}, function (t, e, n) { + t.exports = {default: n(507), __esModule: !0} +}, , , , , , , , function (t, e, n) { + var r = n(79), i = n(113), a = n(99), o = n(100), s = n(107), l = function (t, e, n) { + var u, c, f, h, d = t & l.F, p = t & l.G, v = t & l.S, g = t & l.P, m = t & l.B, + _ = p ? r : v ? r[e] || (r[e] = {}) : (r[e] || {}).prototype, y = p ? i : i[e] || (i[e] = {}), + b = y.prototype || (y.prototype = {}); + p && (n = e); + for (u in n) c = !d && _ && void 0 !== _[u], f = (c ? _ : n)[u], h = m && c ? s(f, r) : g && "function" == typeof f ? s(Function.call, f) : f, _ && o(_, u, f, t & l.U), y[u] != f && a(y, u, h), g && b[u] != f && (b[u] = f) + }; + r.core = i, l.F = 1, l.G = 2, l.S = 4, l.P = 8, l.B = 16, l.W = 32, l.U = 64, l.R = 128, t.exports = l +}, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , function (t, e, n) { + !function () { + var e = n(756), r = n(296).utf8, i = n(346), a = n(296).bin, o = function (t, n) { + t.constructor == String ? t = n && "binary" === n.encoding ? a.stringToBytes(t) : r.stringToBytes(t) : i(t) ? t = Array.prototype.slice.call(t, 0) : Array.isArray(t) || (t = t.toString()); + for (var s = e.bytesToWords(t), l = 8 * t.length, u = 1732584193, c = -271733879, f = -1732584194, h = 271733878, d = 0; d < s.length; d++) s[d] = 16711935 & (s[d] << 8 | s[d] >>> 24) | 4278255360 & (s[d] << 24 | s[d] >>> 8); + s[l >>> 5] |= 128 << l % 32, s[14 + (l + 64 >>> 9 << 4)] = l; + for (var p = o._ff, v = o._gg, g = o._hh, m = o._ii, d = 0; d < s.length; d += 16) { + var _ = u, y = c, b = f, w = h; + u = p(u, c, f, h, s[d + 0], 7, -680876936), h = p(h, u, c, f, s[d + 1], 12, -389564586), f = p(f, h, u, c, s[d + 2], 17, 606105819), c = p(c, f, h, u, s[d + 3], 22, -1044525330), u = p(u, c, f, h, s[d + 4], 7, -176418897), h = p(h, u, c, f, s[d + 5], 12, 1200080426), f = p(f, h, u, c, s[d + 6], 17, -1473231341), c = p(c, f, h, u, s[d + 7], 22, -45705983), u = p(u, c, f, h, s[d + 8], 7, 1770035416), h = p(h, u, c, f, s[d + 9], 12, -1958414417), f = p(f, h, u, c, s[d + 10], 17, -42063), c = p(c, f, h, u, s[d + 11], 22, -1990404162), u = p(u, c, f, h, s[d + 12], 7, 1804603682), h = p(h, u, c, f, s[d + 13], 12, -40341101), f = p(f, h, u, c, s[d + 14], 17, -1502002290), c = p(c, f, h, u, s[d + 15], 22, 1236535329), u = v(u, c, f, h, s[d + 1], 5, -165796510), h = v(h, u, c, f, s[d + 6], 9, -1069501632), f = v(f, h, u, c, s[d + 11], 14, 643717713), c = v(c, f, h, u, s[d + 0], 20, -373897302), u = v(u, c, f, h, s[d + 5], 5, -701558691), h = v(h, u, c, f, s[d + 10], 9, 38016083), f = v(f, h, u, c, s[d + 15], 14, -660478335), c = v(c, f, h, u, s[d + 4], 20, -405537848), u = v(u, c, f, h, s[d + 9], 5, 568446438), h = v(h, u, c, f, s[d + 14], 9, -1019803690), f = v(f, h, u, c, s[d + 3], 14, -187363961), c = v(c, f, h, u, s[d + 8], 20, 1163531501), u = v(u, c, f, h, s[d + 13], 5, -1444681467), h = v(h, u, c, f, s[d + 2], 9, -51403784), f = v(f, h, u, c, s[d + 7], 14, 1735328473), c = v(c, f, h, u, s[d + 12], 20, -1926607734), u = g(u, c, f, h, s[d + 5], 4, -378558), h = g(h, u, c, f, s[d + 8], 11, -2022574463), f = g(f, h, u, c, s[d + 11], 16, 1839030562), c = g(c, f, h, u, s[d + 14], 23, -35309556), u = g(u, c, f, h, s[d + 1], 4, -1530992060), h = g(h, u, c, f, s[d + 4], 11, 1272893353), f = g(f, h, u, c, s[d + 7], 16, -155497632), c = g(c, f, h, u, s[d + 10], 23, -1094730640), u = g(u, c, f, h, s[d + 13], 4, 681279174), h = g(h, u, c, f, s[d + 0], 11, -358537222), f = g(f, h, u, c, s[d + 3], 16, -722521979), c = g(c, f, h, u, s[d + 6], 23, 76029189), u = g(u, c, f, h, s[d + 9], 4, -640364487), h = g(h, u, c, f, s[d + 12], 11, -421815835), f = g(f, h, u, c, s[d + 15], 16, 530742520), c = g(c, f, h, u, s[d + 2], 23, -995338651), u = m(u, c, f, h, s[d + 0], 6, -198630844), h = m(h, u, c, f, s[d + 7], 10, 1126891415), f = m(f, h, u, c, s[d + 14], 15, -1416354905), c = m(c, f, h, u, s[d + 5], 21, -57434055), u = m(u, c, f, h, s[d + 12], 6, 1700485571), h = m(h, u, c, f, s[d + 3], 10, -1894986606), f = m(f, h, u, c, s[d + 10], 15, -1051523), c = m(c, f, h, u, s[d + 1], 21, -2054922799), u = m(u, c, f, h, s[d + 8], 6, 1873313359), h = m(h, u, c, f, s[d + 15], 10, -30611744), f = m(f, h, u, c, s[d + 6], 15, -1560198380), c = m(c, f, h, u, s[d + 13], 21, 1309151649), u = m(u, c, f, h, s[d + 4], 6, -145523070), h = m(h, u, c, f, s[d + 11], 10, -1120210379), f = m(f, h, u, c, s[d + 2], 15, 718787259), c = m(c, f, h, u, s[d + 9], 21, -343485551), u = u + _ >>> 0, c = c + y >>> 0, f = f + b >>> 0, h = h + w >>> 0 + } + return e.endian([u, c, f, h]) + }; + o._ff = function (t, e, n, r, i, a, o) { + var s = t + (e & n | ~e & r) + (i >>> 0) + o; + return (s << a | s >>> 32 - a) + e + }, o._gg = function (t, e, n, r, i, a, o) { + var s = t + (e & r | n & ~r) + (i >>> 0) + o; + return (s << a | s >>> 32 - a) + e + }, o._hh = function (t, e, n, r, i, a, o) { + var s = t + (e ^ n ^ r) + (i >>> 0) + o; + return (s << a | s >>> 32 - a) + e + }, o._ii = function (t, e, n, r, i, a, o) { + var s = t + (n ^ (e | ~r)) + (i >>> 0) + o; + return (s << a | s >>> 32 - a) + e + }, o._blocksize = 16, o._digestsize = 16, t.exports = function (t, n) { + if (void 0 === t || null === t) throw new Error("Illegal argument " + t); + var r = e.wordsToBytes(o(t, n)); + return n && n.asBytes ? r : n && n.asString ? a.bytesToString(r) : e.bytesToHex(r) + } + }() +}, function (t, e, n) { + t.exports = {default: n(502), __esModule: !0} +}, function (t, e, n) { + t.exports = {default: n(510), __esModule: !0} +}, function (t, e, n) { + t.exports = {default: n(509), __esModule: !0} +}, function (t, e, n) { + "use strict"; + (function (t) { + function e(t, e, n) { + t[e] || Object[r](t, e, {writable: !0, configurable: !0, value: n}) + } + + if (n(755), n(830), n(496), t._babelPolyfill) throw new Error("only one instance of babel-polyfill is allowed"); + t._babelPolyfill = !0; + var r = "defineProperty"; + e(String.prototype, "padLeft", "".padStart), e(String.prototype, "padRight", "".padEnd), "pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill".split(",").forEach(function (t) { + [][t] && e(Array, t, Function.call.bind([][t])) + }) + }).call(e, n(124)) +}, function (t, e, n) { + t.exports = {default: n(501), __esModule: !0} +}, function (t, e, n) { + var r = n(82); + t.exports = function (t) { + if (!r(t)) throw TypeError(t + " is not an object!"); + return t + } +}, function (t, e) { + var n = t.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")(); + "number" == typeof __g && (__g = n) +}, , function (t, e) { + t.exports = function (t) { + try { + return !!t() + } catch (t) { + return !0 + } + } +}, function (t, e) { + t.exports = function (t) { + return "object" == typeof t ? null !== t : "function" == typeof t + } +}, , function (t, e, n) { + var r = n(211)("wks"), i = n(151), a = n(79).Symbol, o = "function" == typeof a; + (t.exports = function (t) { + return r[t] || (r[t] = o && a[t] || (o ? a : i)("Symbol." + t)) + }).store = r +}, function (t, e) { + var n = t.exports = {version: "2.5.0"}; + "number" == typeof __e && (__e = n) +}, function (t, e, n) { + t.exports = !n(81)(function () { + return 7 != Object.defineProperty({}, "a", { + get: function () { + return 7 + } + }).a + }) +}, function (t, e, n) { + var r = n(78), i = n(322), a = n(117), o = Object.defineProperty; + e.f = n(86) ? Object.defineProperty : function (t, e, n) { + if (r(t), e = a(e, !0), r(n), i) try { + return o(t, e, n) + } catch (t) { + } + if ("get" in n || "set" in n) throw TypeError("Accessors not supported!"); + return "value" in n && (t[e] = n.value), t + } +}, function (t, e, n) { + var r = n(116), i = Math.min; + t.exports = function (t) { + return t > 0 ? i(r(t), 9007199254740991) : 0 + } +}, function (t, e, n) { + var r = n(114); + t.exports = function (t) { + return Object(r(t)) + } +}, function (t, e) { + t.exports = function (t) { + if ("function" != typeof t) throw TypeError(t + " is not a function!"); + return t + } +}, , , , function (t, e, n) { + var r = n(236)("wks"), i = n(197), a = n(97).Symbol, o = "function" == typeof a; + (t.exports = function (t) { + return r[t] || (r[t] = o && a[t] || (o ? a : i)("Symbol." + t)) + }).store = r +}, function (t, e, n) { + "use strict"; + (function (t) { + function r() { + return a.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823 + } + + function i(t, e) { + if (r() < e) throw new RangeError("Invalid typed array length"); + return a.TYPED_ARRAY_SUPPORT ? (t = new Uint8Array(e), t.__proto__ = a.prototype) : (null === t && (t = new a(e)), t.length = e), t + } + + function a(t, e, n) { + if (!(a.TYPED_ARRAY_SUPPORT || this instanceof a)) return new a(t, e, n); + if ("number" == typeof t) { + if ("string" == typeof e) throw new Error("If encoding is specified then the first argument must be a string"); + return u(this, t) + } + return o(this, t, e, n) + } + + function o(t, e, n, r) { + if ("number" == typeof e) throw new TypeError('"value" argument must not be a number'); + return "undefined" != typeof ArrayBuffer && e instanceof ArrayBuffer ? h(t, e, n, r) : "string" == typeof e ? c(t, e, n) : d(t, e) + } + + function s(t) { + if ("number" != typeof t) throw new TypeError('"size" argument must be a number'); + if (t < 0) throw new RangeError('"size" argument must not be negative') + } + + function l(t, e, n, r) { + return s(e), e <= 0 ? i(t, e) : void 0 !== n ? "string" == typeof r ? i(t, e).fill(n, r) : i(t, e).fill(n) : i(t, e) + } + + function u(t, e) { + if (s(e), t = i(t, e < 0 ? 0 : 0 | p(e)), !a.TYPED_ARRAY_SUPPORT) for (var n = 0; n < e; ++n) t[n] = 0; + return t + } + + function c(t, e, n) { + if ("string" == typeof n && "" !== n || (n = "utf8"), !a.isEncoding(n)) throw new TypeError('"encoding" must be a valid string encoding'); + var r = 0 | g(e, n); + t = i(t, r); + var o = t.write(e, n); + return o !== r && (t = t.slice(0, o)), t + } + + function f(t, e) { + var n = e.length < 0 ? 0 : 0 | p(e.length); + t = i(t, n); + for (var r = 0; r < n; r += 1) t[r] = 255 & e[r]; + return t + } + + function h(t, e, n, r) { + if (e.byteLength, n < 0 || e.byteLength < n) throw new RangeError("'offset' is out of bounds"); + if (e.byteLength < n + (r || 0)) throw new RangeError("'length' is out of bounds"); + return e = void 0 === n && void 0 === r ? new Uint8Array(e) : void 0 === r ? new Uint8Array(e, n) : new Uint8Array(e, n, r), a.TYPED_ARRAY_SUPPORT ? (t = e, t.__proto__ = a.prototype) : t = f(t, e), t + } + + function d(t, e) { + if (a.isBuffer(e)) { + var n = 0 | p(e.length); + return t = i(t, n), 0 === t.length ? t : (e.copy(t, 0, 0, n), t) + } + if (e) { + if ("undefined" != typeof ArrayBuffer && e.buffer instanceof ArrayBuffer || "length" in e) return "number" != typeof e.length || Y(e.length) ? i(t, 0) : f(t, e); + if ("Buffer" === e.type && J(e.data)) return f(t, e.data) + } + throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.") + } + + function p(t) { + if (t >= r()) throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + r().toString(16) + " bytes"); + return 0 | t + } + + function v(t) { + return +t != t && (t = 0), a.alloc(+t) + } + + function g(t, e) { + if (a.isBuffer(t)) return t.length; + if ("undefined" != typeof ArrayBuffer && "function" == typeof ArrayBuffer.isView && (ArrayBuffer.isView(t) || t instanceof ArrayBuffer)) return t.byteLength; + "string" != typeof t && (t = "" + t); + var n = t.length; + if (0 === n) return 0; + for (var r = !1; ;) switch (e) { + case"ascii": + case"latin1": + case"binary": + return n; + case"utf8": + case"utf-8": + case void 0: + return W(t).length; + case"ucs2": + case"ucs-2": + case"utf16le": + case"utf-16le": + return 2 * n; + case"hex": + return n >>> 1; + case"base64": + return $(t).length; + default: + if (r) return W(t).length; + e = ("" + e).toLowerCase(), r = !0 + } + } + + function m(t, e, n) { + var r = !1; + if ((void 0 === e || e < 0) && (e = 0), e > this.length) return ""; + if ((void 0 === n || n > this.length) && (n = this.length), n <= 0) return ""; + if (n >>>= 0, e >>>= 0, n <= e) return ""; + for (t || (t = "utf8"); ;) switch (t) { + case"hex": + return O(this, e, n); + case"utf8": + case"utf-8": + return M(this, e, n); + case"ascii": + return P(this, e, n); + case"latin1": + case"binary": + return L(this, e, n); + case"base64": + return C(this, e, n); + case"ucs2": + case"ucs-2": + case"utf16le": + case"utf-16le": + return R(this, e, n); + default: + if (r) throw new TypeError("Unknown encoding: " + t); + t = (t + "").toLowerCase(), r = !0 + } + } + + function _(t, e, n) { + var r = t[e]; + t[e] = t[n], t[n] = r + } + + function y(t, e, n, r, i) { + if (0 === t.length) return -1; + if ("string" == typeof n ? (r = n, n = 0) : n > 2147483647 ? n = 2147483647 : n < -2147483648 && (n = -2147483648), n = +n, isNaN(n) && (n = i ? 0 : t.length - 1), n < 0 && (n = t.length + n), n >= t.length) { + if (i) return -1; + n = t.length - 1 + } else if (n < 0) { + if (!i) return -1; + n = 0 + } + if ("string" == typeof e && (e = a.from(e, r)), a.isBuffer(e)) return 0 === e.length ? -1 : b(t, e, n, r, i); + if ("number" == typeof e) return e &= 255, a.TYPED_ARRAY_SUPPORT && "function" == typeof Uint8Array.prototype.indexOf ? i ? Uint8Array.prototype.indexOf.call(t, e, n) : Uint8Array.prototype.lastIndexOf.call(t, e, n) : b(t, [e], n, r, i); + throw new TypeError("val must be string, number or Buffer") + } + + function b(t, e, n, r, i) { + function a(t, e) { + return 1 === o ? t[e] : t.readUInt16BE(e * o) + } + + var o = 1, s = t.length, l = e.length; + if (void 0 !== r && ("ucs2" === (r = String(r).toLowerCase()) || "ucs-2" === r || "utf16le" === r || "utf-16le" === r)) { + if (t.length < 2 || e.length < 2) return -1; + o = 2, s /= 2, l /= 2, n /= 2 + } + var u; + if (i) { + var c = -1; + for (u = n; u < s; u++) if (a(t, u) === a(e, -1 === c ? 0 : u - c)) { + if (-1 === c && (c = u), u - c + 1 === l) return c * o + } else -1 !== c && (u -= u - c), c = -1 + } else for (n + l > s && (n = s - l), u = n; u >= 0; u--) { + for (var f = !0, h = 0; h < l; h++) if (a(t, u + h) !== a(e, h)) { + f = !1; + break + } + if (f) return u + } + return -1 + } + + function w(t, e, n, r) { + n = Number(n) || 0; + var i = t.length - n; + r ? (r = Number(r)) > i && (r = i) : r = i; + var a = e.length; + if (a % 2 != 0) throw new TypeError("Invalid hex string"); + r > a / 2 && (r = a / 2); + for (var o = 0; o < r; ++o) { + var s = parseInt(e.substr(2 * o, 2), 16); + if (isNaN(s)) return o; + t[n + o] = s + } + return o + } + + function x(t, e, n, r) { + return X(W(e, t.length - n), t, n, r) + } + + function S(t, e, n, r) { + return X(V(e), t, n, r) + } + + function E(t, e, n, r) { + return S(t, e, n, r) + } + + function k(t, e, n, r) { + return X($(e), t, n, r) + } + + function T(t, e, n, r) { + return X(Z(e, t.length - n), t, n, r) + } + + function C(t, e, n) { + return 0 === e && n === t.length ? K.fromByteArray(t) : K.fromByteArray(t.slice(e, n)) + } + + function M(t, e, n) { + n = Math.min(t.length, n); + for (var r = [], i = e; i < n;) { + var a = t[i], o = null, s = a > 239 ? 4 : a > 223 ? 3 : a > 191 ? 2 : 1; + if (i + s <= n) { + var l, u, c, f; + switch (s) { + case 1: + a < 128 && (o = a); + break; + case 2: + l = t[i + 1], 128 == (192 & l) && (f = (31 & a) << 6 | 63 & l) > 127 && (o = f); + break; + case 3: + l = t[i + 1], u = t[i + 2], 128 == (192 & l) && 128 == (192 & u) && (f = (15 & a) << 12 | (63 & l) << 6 | 63 & u) > 2047 && (f < 55296 || f > 57343) && (o = f); + break; + case 4: + l = t[i + 1], u = t[i + 2], c = t[i + 3], 128 == (192 & l) && 128 == (192 & u) && 128 == (192 & c) && (f = (15 & a) << 18 | (63 & l) << 12 | (63 & u) << 6 | 63 & c) > 65535 && f < 1114112 && (o = f) + } + } + null === o ? (o = 65533, s = 1) : o > 65535 && (o -= 65536, r.push(o >>> 10 & 1023 | 55296), o = 56320 | 1023 & o), r.push(o), i += s + } + return A(r) + } + + function A(t) { + var e = t.length; + if (e <= Q) return String.fromCharCode.apply(String, t); + for (var n = "", r = 0; r < e;) n += String.fromCharCode.apply(String, t.slice(r, r += Q)); + return n + } + + function P(t, e, n) { + var r = ""; + n = Math.min(t.length, n); + for (var i = e; i < n; ++i) r += String.fromCharCode(127 & t[i]); + return r + } + + function L(t, e, n) { + var r = ""; + n = Math.min(t.length, n); + for (var i = e; i < n; ++i) r += String.fromCharCode(t[i]); + return r + } + + function O(t, e, n) { + var r = t.length; + (!e || e < 0) && (e = 0), (!n || n < 0 || n > r) && (n = r); + for (var i = "", a = e; a < n; ++a) i += G(t[a]); + return i + } + + function R(t, e, n) { + for (var r = t.slice(e, n), i = "", a = 0; a < r.length; a += 2) i += String.fromCharCode(r[a] + 256 * r[a + 1]); + return i + } + + function I(t, e, n) { + if (t % 1 != 0 || t < 0) throw new RangeError("offset is not uint"); + if (t + e > n) throw new RangeError("Trying to access beyond buffer length") + } + + function B(t, e, n, r, i, o) { + if (!a.isBuffer(t)) throw new TypeError('"buffer" argument must be a Buffer instance'); + if (e > i || e < o) throw new RangeError('"value" argument is out of bounds'); + if (n + r > t.length) throw new RangeError("Index out of range") + } + + function z(t, e, n, r) { + e < 0 && (e = 65535 + e + 1); + for (var i = 0, a = Math.min(t.length - n, 2); i < a; ++i) t[n + i] = (e & 255 << 8 * (r ? i : 1 - i)) >>> 8 * (r ? i : 1 - i) + } + + function F(t, e, n, r) { + e < 0 && (e = 4294967295 + e + 1); + for (var i = 0, a = Math.min(t.length - n, 4); i < a; ++i) t[n + i] = e >>> 8 * (r ? i : 3 - i) & 255 + } + + function N(t, e, n, r, i, a) { + if (n + r > t.length) throw new RangeError("Index out of range"); + if (n < 0) throw new RangeError("Index out of range") + } + + function D(t, e, n, r, i) { + return i || N(t, e, n, 4, 3.4028234663852886e38, -3.4028234663852886e38), q.write(t, e, n, r, 23, 4), n + 4 + } + + function j(t, e, n, r, i) { + return i || N(t, e, n, 8, 1.7976931348623157e308, -1.7976931348623157e308), q.write(t, e, n, r, 52, 8), n + 8 + } + + function U(t) { + if (t = H(t).replace(tt, ""), t.length < 2) return ""; + for (; t.length % 4 != 0;) t += "="; + return t + } + + function H(t) { + return t.trim ? t.trim() : t.replace(/^\s+|\s+$/g, "") + } + + function G(t) { + return t < 16 ? "0" + t.toString(16) : t.toString(16) + } + + function W(t, e) { + e = e || 1 / 0; + for (var n, r = t.length, i = null, a = [], o = 0; o < r; ++o) { + if ((n = t.charCodeAt(o)) > 55295 && n < 57344) { + if (!i) { + if (n > 56319) { + (e -= 3) > -1 && a.push(239, 191, 189); + continue + } + if (o + 1 === r) { + (e -= 3) > -1 && a.push(239, 191, 189); + continue + } + i = n; + continue + } + if (n < 56320) { + (e -= 3) > -1 && a.push(239, 191, 189), i = n; + continue + } + n = 65536 + (i - 55296 << 10 | n - 56320) + } else i && (e -= 3) > -1 && a.push(239, 191, 189); + if (i = null, n < 128) { + if ((e -= 1) < 0) break; + a.push(n) + } else if (n < 2048) { + if ((e -= 2) < 0) break; + a.push(n >> 6 | 192, 63 & n | 128) + } else if (n < 65536) { + if ((e -= 3) < 0) break; + a.push(n >> 12 | 224, n >> 6 & 63 | 128, 63 & n | 128) + } else { + if (!(n < 1114112)) throw new Error("Invalid code point"); + if ((e -= 4) < 0) break; + a.push(n >> 18 | 240, n >> 12 & 63 | 128, n >> 6 & 63 | 128, 63 & n | 128) + } + } + return a + } + + function V(t) { + for (var e = [], n = 0; n < t.length; ++n) e.push(255 & t.charCodeAt(n)); + return e + } + + function Z(t, e) { + for (var n, r, i, a = [], o = 0; o < t.length && !((e -= 2) < 0); ++o) n = t.charCodeAt(o), r = n >> 8, i = n % 256, a.push(i), a.push(r); + return a + } + + function $(t) { + return K.toByteArray(U(t)) + } + + function X(t, e, n, r) { + for (var i = 0; i < r && !(i + n >= e.length || i >= t.length); ++i) e[i + n] = t[i]; + return i + } + + function Y(t) { + return t !== t + } + + /*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ + var K = n(485), q = n(808), J = n(347); + e.Buffer = a, e.SlowBuffer = v, e.INSPECT_MAX_BYTES = 50, a.TYPED_ARRAY_SUPPORT = void 0 !== t.TYPED_ARRAY_SUPPORT ? t.TYPED_ARRAY_SUPPORT : function () { + try { + var t = new Uint8Array(1); + return t.__proto__ = { + __proto__: Uint8Array.prototype, foo: function () { + return 42 + } + }, 42 === t.foo() && "function" == typeof t.subarray && 0 === t.subarray(1, 1).byteLength + } catch (t) { + return !1 + } + }(), e.kMaxLength = r(), a.poolSize = 8192, a._augment = function (t) { + return t.__proto__ = a.prototype, t + }, a.from = function (t, e, n) { + return o(null, t, e, n) + }, a.TYPED_ARRAY_SUPPORT && (a.prototype.__proto__ = Uint8Array.prototype, a.__proto__ = Uint8Array, "undefined" != typeof Symbol && Symbol.species && a[Symbol.species] === a && Object.defineProperty(a, Symbol.species, { + value: null, + configurable: !0 + })), a.alloc = function (t, e, n) { + return l(null, t, e, n) + }, a.allocUnsafe = function (t) { + return u(null, t) + }, a.allocUnsafeSlow = function (t) { + return u(null, t) + }, a.isBuffer = function (t) { + return !(null == t || !t._isBuffer) + }, a.compare = function (t, e) { + if (!a.isBuffer(t) || !a.isBuffer(e)) throw new TypeError("Arguments must be Buffers"); + if (t === e) return 0; + for (var n = t.length, r = e.length, i = 0, o = Math.min(n, r); i < o; ++i) if (t[i] !== e[i]) { + n = t[i], r = e[i]; + break + } + return n < r ? -1 : r < n ? 1 : 0 + }, a.isEncoding = function (t) { + switch (String(t).toLowerCase()) { + case"hex": + case"utf8": + case"utf-8": + case"ascii": + case"latin1": + case"binary": + case"base64": + case"ucs2": + case"ucs-2": + case"utf16le": + case"utf-16le": + return !0; + default: + return !1 + } + }, a.concat = function (t, e) { + if (!J(t)) throw new TypeError('"list" argument must be an Array of Buffers'); + if (0 === t.length) return a.alloc(0); + var n; + if (void 0 === e) for (e = 0, n = 0; n < t.length; ++n) e += t[n].length; + var r = a.allocUnsafe(e), i = 0; + for (n = 0; n < t.length; ++n) { + var o = t[n]; + if (!a.isBuffer(o)) throw new TypeError('"list" argument must be an Array of Buffers'); + o.copy(r, i), i += o.length + } + return r + }, a.byteLength = g, a.prototype._isBuffer = !0, a.prototype.swap16 = function () { + var t = this.length; + if (t % 2 != 0) throw new RangeError("Buffer size must be a multiple of 16-bits"); + for (var e = 0; e < t; e += 2) _(this, e, e + 1); + return this + }, a.prototype.swap32 = function () { + var t = this.length; + if (t % 4 != 0) throw new RangeError("Buffer size must be a multiple of 32-bits"); + for (var e = 0; e < t; e += 4) _(this, e, e + 3), _(this, e + 1, e + 2); + return this + }, a.prototype.swap64 = function () { + var t = this.length; + if (t % 8 != 0) throw new RangeError("Buffer size must be a multiple of 64-bits"); + for (var e = 0; e < t; e += 8) _(this, e, e + 7), _(this, e + 1, e + 6), _(this, e + 2, e + 5), _(this, e + 3, e + 4); + return this + }, a.prototype.toString = function () { + var t = 0 | this.length; + return 0 === t ? "" : 0 === arguments.length ? M(this, 0, t) : m.apply(this, arguments) + }, a.prototype.equals = function (t) { + if (!a.isBuffer(t)) throw new TypeError("Argument must be a Buffer"); + return this === t || 0 === a.compare(this, t) + }, a.prototype.inspect = function () { + var t = "", n = e.INSPECT_MAX_BYTES; + return this.length > 0 && (t = this.toString("hex", 0, n).match(/.{2}/g).join(" "), this.length > n && (t += " ... ")), "" + }, a.prototype.compare = function (t, e, n, r, i) { + if (!a.isBuffer(t)) throw new TypeError("Argument must be a Buffer"); + if (void 0 === e && (e = 0), void 0 === n && (n = t ? t.length : 0), void 0 === r && (r = 0), void 0 === i && (i = this.length), e < 0 || n > t.length || r < 0 || i > this.length) throw new RangeError("out of range index"); + if (r >= i && e >= n) return 0; + if (r >= i) return -1; + if (e >= n) return 1; + if (e >>>= 0, n >>>= 0, r >>>= 0, i >>>= 0, this === t) return 0; + for (var o = i - r, s = n - e, l = Math.min(o, s), u = this.slice(r, i), c = t.slice(e, n), f = 0; f < l; ++f) if (u[f] !== c[f]) { + o = u[f], s = c[f]; + break + } + return o < s ? -1 : s < o ? 1 : 0 + }, a.prototype.includes = function (t, e, n) { + return -1 !== this.indexOf(t, e, n) + }, a.prototype.indexOf = function (t, e, n) { + return y(this, t, e, n, !0) + }, a.prototype.lastIndexOf = function (t, e, n) { + return y(this, t, e, n, !1) + }, a.prototype.write = function (t, e, n, r) { + if (void 0 === e) r = "utf8", n = this.length, e = 0; else if (void 0 === n && "string" == typeof e) r = e, n = this.length, e = 0; else { + if (!isFinite(e)) throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported"); + e |= 0, isFinite(n) ? (n |= 0, void 0 === r && (r = "utf8")) : (r = n, n = void 0) + } + var i = this.length - e; + if ((void 0 === n || n > i) && (n = i), t.length > 0 && (n < 0 || e < 0) || e > this.length) throw new RangeError("Attempt to write outside buffer bounds"); + r || (r = "utf8"); + for (var a = !1; ;) switch (r) { + case"hex": + return w(this, t, e, n); + case"utf8": + case"utf-8": + return x(this, t, e, n); + case"ascii": + return S(this, t, e, n); + case"latin1": + case"binary": + return E(this, t, e, n); + case"base64": + return k(this, t, e, n); + case"ucs2": + case"ucs-2": + case"utf16le": + case"utf-16le": + return T(this, t, e, n); + default: + if (a) throw new TypeError("Unknown encoding: " + r); + r = ("" + r).toLowerCase(), a = !0 + } + }, a.prototype.toJSON = function () { + return {type: "Buffer", data: Array.prototype.slice.call(this._arr || this, 0)} + }; + var Q = 4096; + a.prototype.slice = function (t, e) { + var n = this.length; + t = ~~t, e = void 0 === e ? n : ~~e, t < 0 ? (t += n) < 0 && (t = 0) : t > n && (t = n), e < 0 ? (e += n) < 0 && (e = 0) : e > n && (e = n), e < t && (e = t); + var r; + if (a.TYPED_ARRAY_SUPPORT) r = this.subarray(t, e), r.__proto__ = a.prototype; else { + var i = e - t; + r = new a(i, void 0); + for (var o = 0; o < i; ++o) r[o] = this[o + t] + } + return r + }, a.prototype.readUIntLE = function (t, e, n) { + t |= 0, e |= 0, n || I(t, e, this.length); + for (var r = this[t], i = 1, a = 0; ++a < e && (i *= 256);) r += this[t + a] * i; + return r + }, a.prototype.readUIntBE = function (t, e, n) { + t |= 0, e |= 0, n || I(t, e, this.length); + for (var r = this[t + --e], i = 1; e > 0 && (i *= 256);) r += this[t + --e] * i; + return r + }, a.prototype.readUInt8 = function (t, e) { + return e || I(t, 1, this.length), this[t] + }, a.prototype.readUInt16LE = function (t, e) { + return e || I(t, 2, this.length), this[t] | this[t + 1] << 8 + }, a.prototype.readUInt16BE = function (t, e) { + return e || I(t, 2, this.length), this[t] << 8 | this[t + 1] + }, a.prototype.readUInt32LE = function (t, e) { + return e || I(t, 4, this.length), (this[t] | this[t + 1] << 8 | this[t + 2] << 16) + 16777216 * this[t + 3] + }, a.prototype.readUInt32BE = function (t, e) { + return e || I(t, 4, this.length), 16777216 * this[t] + (this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3]) + }, a.prototype.readIntLE = function (t, e, n) { + t |= 0, e |= 0, n || I(t, e, this.length); + for (var r = this[t], i = 1, a = 0; ++a < e && (i *= 256);) r += this[t + a] * i; + return i *= 128, r >= i && (r -= Math.pow(2, 8 * e)), r + }, a.prototype.readIntBE = function (t, e, n) { + t |= 0, e |= 0, n || I(t, e, this.length); + for (var r = e, i = 1, a = this[t + --r]; r > 0 && (i *= 256);) a += this[t + --r] * i; + return i *= 128, a >= i && (a -= Math.pow(2, 8 * e)), a + }, a.prototype.readInt8 = function (t, e) { + return e || I(t, 1, this.length), 128 & this[t] ? -1 * (255 - this[t] + 1) : this[t] + }, a.prototype.readInt16LE = function (t, e) { + e || I(t, 2, this.length); + var n = this[t] | this[t + 1] << 8; + return 32768 & n ? 4294901760 | n : n + }, a.prototype.readInt16BE = function (t, e) { + e || I(t, 2, this.length); + var n = this[t + 1] | this[t] << 8; + return 32768 & n ? 4294901760 | n : n + }, a.prototype.readInt32LE = function (t, e) { + return e || I(t, 4, this.length), this[t] | this[t + 1] << 8 | this[t + 2] << 16 | this[t + 3] << 24 + }, a.prototype.readInt32BE = function (t, e) { + return e || I(t, 4, this.length), this[t] << 24 | this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3] + }, a.prototype.readFloatLE = function (t, e) { + return e || I(t, 4, this.length), q.read(this, t, !0, 23, 4) + }, a.prototype.readFloatBE = function (t, e) { + return e || I(t, 4, this.length), q.read(this, t, !1, 23, 4) + }, a.prototype.readDoubleLE = function (t, e) { + return e || I(t, 8, this.length), q.read(this, t, !0, 52, 8) + }, a.prototype.readDoubleBE = function (t, e) { + return e || I(t, 8, this.length), q.read(this, t, !1, 52, 8) + }, a.prototype.writeUIntLE = function (t, e, n, r) { + if (t = +t, e |= 0, n |= 0, !r) { + B(this, t, e, n, Math.pow(2, 8 * n) - 1, 0) + } + var i = 1, a = 0; + for (this[e] = 255 & t; ++a < n && (i *= 256);) this[e + a] = t / i & 255; + return e + n + }, a.prototype.writeUIntBE = function (t, e, n, r) { + if (t = +t, e |= 0, n |= 0, !r) { + B(this, t, e, n, Math.pow(2, 8 * n) - 1, 0) + } + var i = n - 1, a = 1; + for (this[e + i] = 255 & t; --i >= 0 && (a *= 256);) this[e + i] = t / a & 255; + return e + n + }, a.prototype.writeUInt8 = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 1, 255, 0), a.TYPED_ARRAY_SUPPORT || (t = Math.floor(t)), this[e] = 255 & t, e + 1 + }, a.prototype.writeUInt16LE = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 2, 65535, 0), a.TYPED_ARRAY_SUPPORT ? (this[e] = 255 & t, this[e + 1] = t >>> 8) : z(this, t, e, !0), e + 2 + }, a.prototype.writeUInt16BE = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 2, 65535, 0), a.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 8, this[e + 1] = 255 & t) : z(this, t, e, !1), e + 2 + }, a.prototype.writeUInt32LE = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 4, 4294967295, 0), a.TYPED_ARRAY_SUPPORT ? (this[e + 3] = t >>> 24, this[e + 2] = t >>> 16, this[e + 1] = t >>> 8, this[e] = 255 & t) : F(this, t, e, !0), e + 4 + }, a.prototype.writeUInt32BE = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 4, 4294967295, 0), a.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 24, this[e + 1] = t >>> 16, this[e + 2] = t >>> 8, this[e + 3] = 255 & t) : F(this, t, e, !1), e + 4 + }, a.prototype.writeIntLE = function (t, e, n, r) { + if (t = +t, e |= 0, !r) { + var i = Math.pow(2, 8 * n - 1); + B(this, t, e, n, i - 1, -i) + } + var a = 0, o = 1, s = 0; + for (this[e] = 255 & t; ++a < n && (o *= 256);) t < 0 && 0 === s && 0 !== this[e + a - 1] && (s = 1), this[e + a] = (t / o >> 0) - s & 255; + return e + n + }, a.prototype.writeIntBE = function (t, e, n, r) { + if (t = +t, e |= 0, !r) { + var i = Math.pow(2, 8 * n - 1); + B(this, t, e, n, i - 1, -i) + } + var a = n - 1, o = 1, s = 0; + for (this[e + a] = 255 & t; --a >= 0 && (o *= 256);) t < 0 && 0 === s && 0 !== this[e + a + 1] && (s = 1), this[e + a] = (t / o >> 0) - s & 255; + return e + n + }, a.prototype.writeInt8 = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 1, 127, -128), a.TYPED_ARRAY_SUPPORT || (t = Math.floor(t)), t < 0 && (t = 255 + t + 1), this[e] = 255 & t, e + 1 + }, a.prototype.writeInt16LE = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 2, 32767, -32768), a.TYPED_ARRAY_SUPPORT ? (this[e] = 255 & t, this[e + 1] = t >>> 8) : z(this, t, e, !0), e + 2 + }, a.prototype.writeInt16BE = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 2, 32767, -32768), a.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 8, this[e + 1] = 255 & t) : z(this, t, e, !1), e + 2 + }, a.prototype.writeInt32LE = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 4, 2147483647, -2147483648), a.TYPED_ARRAY_SUPPORT ? (this[e] = 255 & t, this[e + 1] = t >>> 8, this[e + 2] = t >>> 16, this[e + 3] = t >>> 24) : F(this, t, e, !0), e + 4 + }, a.prototype.writeInt32BE = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 4, 2147483647, -2147483648), t < 0 && (t = 4294967295 + t + 1), a.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 24, this[e + 1] = t >>> 16, this[e + 2] = t >>> 8, this[e + 3] = 255 & t) : F(this, t, e, !1), e + 4 + }, a.prototype.writeFloatLE = function (t, e, n) { + return D(this, t, e, !0, n) + }, a.prototype.writeFloatBE = function (t, e, n) { + return D(this, t, e, !1, n) + }, a.prototype.writeDoubleLE = function (t, e, n) { + return j(this, t, e, !0, n) + }, a.prototype.writeDoubleBE = function (t, e, n) { + return j(this, t, e, !1, n) + }, a.prototype.copy = function (t, e, n, r) { + if (n || (n = 0), r || 0 === r || (r = this.length), e >= t.length && (e = t.length), e || (e = 0), r > 0 && r < n && (r = n), r === n) return 0; + if (0 === t.length || 0 === this.length) return 0; + if (e < 0) throw new RangeError("targetStart out of bounds"); + if (n < 0 || n >= this.length) throw new RangeError("sourceStart out of bounds"); + if (r < 0) throw new RangeError("sourceEnd out of bounds"); + r > this.length && (r = this.length), t.length - e < r - n && (r = t.length - e + n); + var i, o = r - n; + if (this === t && n < e && e < r) for (i = o - 1; i >= 0; --i) t[i + e] = this[i + n]; else if (o < 1e3 || !a.TYPED_ARRAY_SUPPORT) for (i = 0; i < o; ++i) t[i + e] = this[i + n]; else Uint8Array.prototype.set.call(t, this.subarray(n, n + o), e); + return o + }, a.prototype.fill = function (t, e, n, r) { + if ("string" == typeof t) { + if ("string" == typeof e ? (r = e, e = 0, n = this.length) : "string" == typeof n && (r = n, n = this.length), 1 === t.length) { + var i = t.charCodeAt(0); + i < 256 && (t = i) + } + if (void 0 !== r && "string" != typeof r) throw new TypeError("encoding must be a string"); + if ("string" == typeof r && !a.isEncoding(r)) throw new TypeError("Unknown encoding: " + r) + } else "number" == typeof t && (t &= 255); + if (e < 0 || this.length < e || this.length < n) throw new RangeError("Out of range index"); + if (n <= e) return this; + e >>>= 0, n = void 0 === n ? this.length : n >>> 0, t || (t = 0); + var o; + if ("number" == typeof t) for (o = e; o < n; ++o) this[o] = t; else { + var s = a.isBuffer(t) ? t : W(new a(t, r).toString()), l = s.length; + for (o = 0; o < n - e; ++o) this[o + e] = s[o % l] + } + return this + }; + var tt = /[^+\/0-9A-Za-z-_]/g + }).call(e, n(124)) +}, function (t, e, n) { + var r = n(97), i = n(85), a = n(163), o = n(140), s = function (t, e, n) { + var l, u, c, f = t & s.F, h = t & s.G, d = t & s.S, p = t & s.P, v = t & s.B, g = t & s.W, + m = h ? i : i[e] || (i[e] = {}), _ = m.prototype, y = h ? r : d ? r[e] : (r[e] || {}).prototype; + h && (n = e); + for (l in n) (u = !f && y && void 0 !== y[l]) && l in m || (c = u ? y[l] : n[l], m[l] = h && "function" != typeof y[l] ? n[l] : v && u ? a(c, r) : g && y[l] == c ? function (t) { + var e = function (e, n, r) { + if (this instanceof t) { + switch (arguments.length) { + case 0: + return new t; + case 1: + return new t(e); + case 2: + return new t(e, n) + } + return new t(e, n, r) + } + return t.apply(this, arguments) + }; + return e.prototype = t.prototype, e + }(c) : p && "function" == typeof c ? a(Function.call, c) : c, p && ((m.virtual || (m.virtual = {}))[l] = c, t & s.R && _ && !_[l] && o(_, l, c))) + }; + s.F = 1, s.G = 2, s.S = 4, s.P = 8, s.B = 16, s.W = 32, s.U = 64, s.R = 128, t.exports = s +}, function (t, e) { + var n = t.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")(); + "number" == typeof __g && (__g = n) +}, function (t, e) { + var n = {}.hasOwnProperty; + t.exports = function (t, e) { + return n.call(t, e) + } +}, function (t, e, n) { + var r = n(87), i = n(147); + t.exports = n(86) ? function (t, e, n) { + return r.f(t, e, i(1, n)) + } : function (t, e, n) { + return t[e] = n, t + } +}, function (t, e, n) { + var r = n(79), i = n(99), a = n(98), o = n(151)("src"), s = Function.toString, l = ("" + s).split("toString"); + n(113).inspectSource = function (t) { + return s.call(t) + }, (t.exports = function (t, e, n, s) { + var u = "function" == typeof n; + u && (a(n, "name") || i(n, "name", e)), t[e] !== n && (u && (a(n, o) || i(n, o, t[e] ? "" + t[e] : l.join(String(e)))), t === r ? t[e] = n : s ? t[e] ? t[e] = n : i(t, e, n) : (delete t[e], i(t, e, n))) + })(Function.prototype, "toString", function () { + return "function" == typeof this && this[o] || s.call(this) + }) +}, function (t, e, n) { + var r = n(36), i = n(81), a = n(114), o = /"/g, s = function (t, e, n, r) { + var i = String(a(t)), s = "<" + e; + return "" !== n && (s += " " + n + '="' + String(r).replace(o, """) + '"'), s + ">" + i + "" + }; + t.exports = function (t, e) { + var n = {}; + n[t] = e(s), r(r.P + r.F * i(function () { + var e = ""[t]('"'); + return e !== e.toLowerCase() || e.split('"').length > 3 + }), "String", n) + } +}, function (t, e, n) { + var r = n(183), i = n(114); + t.exports = function (t) { + return r(i(t)) + } +}, function (t, e, n) { + "use strict"; + + function r(t) { + return "[object Array]" === E.call(t) + } + + function i(t) { + return "[object ArrayBuffer]" === E.call(t) + } + + function a(t) { + return "undefined" != typeof FormData && t instanceof FormData + } + + function o(t) { + return "undefined" != typeof ArrayBuffer && ArrayBuffer.isView ? ArrayBuffer.isView(t) : t && t.buffer && t.buffer instanceof ArrayBuffer + } + + function s(t) { + return "string" == typeof t + } + + function l(t) { + return "number" == typeof t + } + + function u(t) { + return void 0 === t + } + + function c(t) { + return null !== t && "object" == typeof t + } + + function f(t) { + return "[object Date]" === E.call(t) + } + + function h(t) { + return "[object File]" === E.call(t) + } + + function d(t) { + return "[object Blob]" === E.call(t) + } + + function p(t) { + return "[object Function]" === E.call(t) + } + + function v(t) { + return c(t) && p(t.pipe) + } + + function g(t) { + return "undefined" != typeof URLSearchParams && t instanceof URLSearchParams + } + + function m(t) { + return t.replace(/^\s*/, "").replace(/\s*$/, "") + } + + function _() { + return ("undefined" == typeof navigator || "ReactNative" !== navigator.product) && ("undefined" != typeof window && "undefined" != typeof document) + } + + function y(t, e) { + if (null !== t && void 0 !== t) if ("object" == typeof t || r(t) || (t = [t]), r(t)) for (var n = 0, i = t.length; n < i; n++) e.call(null, t[n], n, t); else for (var a in t) Object.prototype.hasOwnProperty.call(t, a) && e.call(null, t[a], a, t) + } + + function b() { + function t(t, n) { + "object" == typeof e[n] && "object" == typeof t ? e[n] = b(e[n], t) : e[n] = t + } + + for (var e = {}, n = 0, r = arguments.length; n < r; n++) y(arguments[n], t); + return e + } + + function w(t, e, n) { + return y(e, function (e, r) { + t[r] = n && "function" == typeof e ? x(e, n) : e + }), t + } + + var x = n(289), S = n(346), E = Object.prototype.toString; + t.exports = { + isArray: r, + isArrayBuffer: i, + isBuffer: S, + isFormData: a, + isArrayBufferView: o, + isString: s, + isNumber: l, + isObject: c, + isUndefined: u, + isDate: f, + isFile: h, + isBlob: d, + isFunction: p, + isStream: v, + isURLSearchParams: g, + isStandardBrowserEnv: _, + forEach: y, + merge: b, + extend: w, + trim: m + } +}, function (t, e, n) { + var r = n(184), i = n(147), a = n(102), o = n(117), s = n(98), l = n(322), u = Object.getOwnPropertyDescriptor; + e.f = n(86) ? u : function (t, e) { + if (t = a(t), e = o(e, !0), l) try { + return u(t, e) + } catch (t) { + } + if (s(t, e)) return i(!r.f.call(t, e), t[e]) + } +}, function (t, e, n) { + var r = n(98), i = n(89), a = n(259)("IE_PROTO"), o = Object.prototype; + t.exports = Object.getPrototypeOf || function (t) { + return t = i(t), r(t, a) ? t[a] : "function" == typeof t.constructor && t instanceof t.constructor ? t.constructor.prototype : t instanceof Object ? o : null + } +}, function (t, e) { + var n = {}.toString; + t.exports = function (t) { + return n.call(t).slice(8, -1) + } +}, function (t, e, n) { + var r = n(90); + t.exports = function (t, e, n) { + if (r(t), void 0 === e) return t; + switch (n) { + case 1: + return function (n) { + return t.call(e, n) + }; + case 2: + return function (n, r) { + return t.call(e, n, r) + }; + case 3: + return function (n, r, i) { + return t.call(e, n, r, i) + } + } + return function () { + return t.apply(e, arguments) + } + } +}, function (t, e, n) { + "use strict"; + var r = n(81); + t.exports = function (t, e) { + return !!t && r(function () { + e ? t.call(null, function () { + }, 1) : t.call(null) + }) + } +}, , function (t, e) { + function n() { + throw new Error("setTimeout has not been defined") + } + + function r() { + throw new Error("clearTimeout has not been defined") + } + + function i(t) { + if (c === setTimeout) return setTimeout(t, 0); + if ((c === n || !c) && setTimeout) return c = setTimeout, setTimeout(t, 0); + try { + return c(t, 0) + } catch (e) { + try { + return c.call(null, t, 0) + } catch (e) { + return c.call(this, t, 0) + } + } + } + + function a(t) { + if (f === clearTimeout) return clearTimeout(t); + if ((f === r || !f) && clearTimeout) return f = clearTimeout, clearTimeout(t); + try { + return f(t) + } catch (e) { + try { + return f.call(null, t) + } catch (e) { + return f.call(this, t) + } + } + } + + function o() { + v && d && (v = !1, d.length ? p = d.concat(p) : g = -1, p.length && s()) + } + + function s() { + if (!v) { + var t = i(o); + v = !0; + for (var e = p.length; e;) { + for (d = p, p = []; ++g < e;) d && d[g].run(); + g = -1, e = p.length + } + d = null, v = !1, a(t) + } + } + + function l(t, e) { + this.fun = t, this.array = e + } + + function u() { + } + + var c, f, h = t.exports = {}; + !function () { + try { + c = "function" == typeof setTimeout ? setTimeout : n + } catch (t) { + c = n + } + try { + f = "function" == typeof clearTimeout ? clearTimeout : r + } catch (t) { + f = r + } + }(); + var d, p = [], v = !1, g = -1; + h.nextTick = function (t) { + var e = new Array(arguments.length - 1); + if (arguments.length > 1) for (var n = 1; n < arguments.length; n++) e[n - 1] = arguments[n]; + p.push(new l(t, e)), 1 !== p.length || v || i(s) + }, l.prototype.run = function () { + this.fun.apply(null, this.array) + }, h.title = "browser", h.browser = !0, h.env = {}, h.argv = [], h.version = "", h.versions = {}, h.on = u, h.addListener = u, h.once = u, h.off = u, h.removeListener = u, h.removeAllListeners = u, h.emit = u, h.prependListener = u, h.prependOnceListener = u, h.listeners = function (t) { + return [] + }, h.binding = function (t) { + throw new Error("process.binding is not supported") + }, h.cwd = function () { + return "/" + }, h.chdir = function (t) { + throw new Error("process.chdir is not supported") + }, h.umask = function () { + return 0 + } +}, function (t, e, n) { + var r, i, a; + !function (o, s) { + i = [t, n(495), n(836), n(801)], r = s, void 0 !== (a = "function" == typeof r ? r.apply(e, i) : r) && (t.exports = a) + }(0, function (t, e, n, r) { + "use strict"; + + function i(t) { + return t && t.__esModule ? t : {default: t} + } + + function a(t, e) { + if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + } + + function o(t, e) { + if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !e || "object" != typeof e && "function" != typeof e ? t : e + } + + function s(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e); + t.prototype = Object.create(e && e.prototype, { + constructor: { + value: t, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e) + } + + function l(t, e) { + var n = "data-clipboard-" + t; + if (e.hasAttribute(n)) return e.getAttribute(n) + } + + var u = i(e), c = i(n), f = i(r), + h = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (t) { + return typeof t + } : function (t) { + return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t + }, d = function () { + function t(t, e) { + for (var n = 0; n < e.length; n++) { + var r = e[n]; + r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r) + } + } + + return function (e, n, r) { + return n && t(e.prototype, n), r && t(e, r), e + } + }(), p = function (t) { + function e(t, n) { + a(this, e); + var r = o(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this)); + return r.resolveOptions(n), r.listenClick(t), r + } + + return s(e, t), d(e, [{ + key: "resolveOptions", value: function () { + var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; + this.action = "function" == typeof t.action ? t.action : this.defaultAction, this.target = "function" == typeof t.target ? t.target : this.defaultTarget, this.text = "function" == typeof t.text ? t.text : this.defaultText, this.container = "object" === h(t.container) ? t.container : document.body + } + }, { + key: "listenClick", value: function (t) { + var e = this; + this.listener = (0, f.default)(t, "click", function (t) { + return e.onClick(t) + }) + } + }, { + key: "onClick", value: function (t) { + var e = t.delegateTarget || t.currentTarget; + this.clipboardAction && (this.clipboardAction = null), this.clipboardAction = new u.default({ + action: this.action(e), + target: this.target(e), + text: this.text(e), + container: this.container, + trigger: e, + emitter: this + }) + } + }, { + key: "defaultAction", value: function (t) { + return l("action", t) + } + }, { + key: "defaultTarget", value: function (t) { + var e = l("target", t); + if (e) return document.querySelector(e) + } + }, { + key: "defaultText", value: function (t) { + return l("text", t) + } + }, { + key: "destroy", value: function () { + this.listener.destroy(), this.clipboardAction && (this.clipboardAction.destroy(), this.clipboardAction = null) + } + }], [{ + key: "isSupported", value: function () { + var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : ["copy", "cut"], + e = "string" == typeof t ? [t] : t, n = !!document.queryCommandSupported; + return e.forEach(function (t) { + n = n && !!document.queryCommandSupported(t) + }), n + } + }]), e + }(c.default); + t.exports = p + }) +}, function (t, e, n) { + var r = n(107), i = n(183), a = n(89), o = n(88), s = n(244); + t.exports = function (t, e) { + var n = 1 == t, l = 2 == t, u = 3 == t, c = 4 == t, f = 6 == t, h = 5 == t || f, d = e || s; + return function (e, s, p) { + for (var v, g, m = a(e), _ = i(m), y = r(s, p, 3), b = o(_.length), w = 0, x = n ? d(e, b) : l ? d(e, 0) : void 0; b > w; w++) if ((h || w in _) && (v = _[w], g = y(v, w, m), t)) if (n) x[w] = g; else if (g) switch (t) { + case 3: + return !0; + case 5: + return v; + case 6: + return w; + case 2: + x.push(v) + } else if (c) return !1; + return f ? -1 : u || c ? c : x + } + } +}, function (t, e) { + var n = t.exports = {version: "2.5.0"}; + "number" == typeof __e && (__e = n) +}, function (t, e) { + t.exports = function (t) { + if (void 0 == t) throw TypeError("Can't call method on " + t); + return t + } +}, function (t, e, n) { + var r = n(36), i = n(113), a = n(81); + t.exports = function (t, e) { + var n = (i.Object || {})[t] || Object[t], o = {}; + o[t] = e(n), r(r.S + r.F * a(function () { + n(1) + }), "Object", o) + } +}, function (t, e) { + var n = Math.ceil, r = Math.floor; + t.exports = function (t) { + return isNaN(t = +t) ? 0 : (t > 0 ? r : n)(t) + } +}, function (t, e, n) { + var r = n(82); + t.exports = function (t, e) { + if (!r(t)) return t; + var n, i; + if (e && "function" == typeof(n = t.toString) && !r(i = n.call(t))) return i; + if ("function" == typeof(n = t.valueOf) && !r(i = n.call(t))) return i; + if (!e && "function" == typeof(n = t.toString) && !r(i = n.call(t))) return i; + throw TypeError("Can't convert object to primitive value") + } +}, function (t, e, n) { + var r = n(165); + t.exports = function (t) { + if (!r(t)) throw TypeError(t + " is not an object!"); + return t + } +}, function (t, e, n) { + var r = n(118), i = n(298), a = n(239), o = Object.defineProperty; + e.f = n(126) ? Object.defineProperty : function (t, e, n) { + if (r(t), e = a(e, !0), r(n), i) try { + return o(t, e, n) + } catch (t) { + } + if ("get" in n || "set" in n) throw TypeError("Accessors not supported!"); + return "value" in n && (t[e] = n.value), t + } +}, function (t, e, n) { + var r = n(299), i = n(227); + t.exports = function (t) { + return r(i(t)) + } +}, function (t, e, n) { + var r = n(342), i = n(36), a = n(211)("metadata"), o = a.store || (a.store = new (n(345))), s = function (t, e, n) { + var i = o.get(t); + if (!i) { + if (!n) return; + o.set(t, i = new r) + } + var a = i.get(e); + if (!a) { + if (!n) return; + i.set(e, a = new r) + } + return a + }, l = function (t, e, n) { + var r = s(e, n, !1); + return void 0 !== r && r.has(t) + }, u = function (t, e, n) { + var r = s(e, n, !1); + return void 0 === r ? void 0 : r.get(t) + }, c = function (t, e, n, r) { + s(n, r, !0).set(t, e) + }, f = function (t, e) { + var n = s(t, e, !1), r = []; + return n && n.forEach(function (t, e) { + r.push(e) + }), r + }, h = function (t) { + return void 0 === t || "symbol" == typeof t ? t : String(t) + }, d = function (t) { + i(i.S, "Reflect", t) + }; + t.exports = {store: o, map: s, has: l, get: u, set: c, keys: f, key: h, exp: d} +}, function (t, e, n) { + "use strict"; + if (n(86)) { + var r = n(144), i = n(79), a = n(81), o = n(36), s = n(213), l = n(265), u = n(107), c = n(142), f = n(147), + h = n(99), d = n(148), p = n(116), v = n(88), g = n(340), m = n(150), _ = n(117), y = n(98), b = n(182), + w = n(82), x = n(89), S = n(251), E = n(145), k = n(105), T = n(146).f, C = n(267), M = n(151), A = n(84), + P = n(112), L = n(199), O = n(212), R = n(268), I = n(167), B = n(206), z = n(149), F = n(243), N = n(314), + D = n(87), j = n(104), U = D.f, H = j.f, G = i.RangeError, W = i.TypeError, V = i.Uint8Array, Z = Array.prototype, + $ = l.ArrayBuffer, X = l.DataView, Y = P(0), K = P(2), q = P(3), J = P(4), Q = P(5), tt = P(6), et = L(!0), + nt = L(!1), rt = R.values, it = R.keys, at = R.entries, ot = Z.lastIndexOf, st = Z.reduce, lt = Z.reduceRight, + ut = Z.join, ct = Z.sort, ft = Z.slice, ht = Z.toString, dt = Z.toLocaleString, pt = A("iterator"), + vt = A("toStringTag"), gt = M("typed_constructor"), mt = M("def_constructor"), _t = s.CONSTR, yt = s.TYPED, + bt = s.VIEW, wt = P(1, function (t, e) { + return Tt(O(t, t[mt]), e) + }), xt = a(function () { + return 1 === new V(new Uint16Array([1]).buffer)[0] + }), St = !!V && !!V.prototype.set && a(function () { + new V(1).set({}) + }), Et = function (t, e) { + var n = p(t); + if (n < 0 || n % e) throw G("Wrong offset!"); + return n + }, kt = function (t) { + if (w(t) && yt in t) return t; + throw W(t + " is not a typed array!") + }, Tt = function (t, e) { + if (!(w(t) && gt in t)) throw W("It is not a typed array constructor!"); + return new t(e) + }, Ct = function (t, e) { + return Mt(O(t, t[mt]), e) + }, Mt = function (t, e) { + for (var n = 0, r = e.length, i = Tt(t, r); r > n;) i[n] = e[n++]; + return i + }, At = function (t, e, n) { + U(t, e, { + get: function () { + return this._d[n] + } + }) + }, Pt = function (t) { + var e, n, r, i, a, o, s = x(t), l = arguments.length, c = l > 1 ? arguments[1] : void 0, f = void 0 !== c, + h = C(s); + if (void 0 != h && !S(h)) { + for (o = h.call(s), r = [], e = 0; !(a = o.next()).done; e++) r.push(a.value); + s = r + } + for (f && l > 2 && (c = u(c, arguments[2], 2)), e = 0, n = v(s.length), i = Tt(this, n); n > e; e++) i[e] = f ? c(s[e], e) : s[e]; + return i + }, Lt = function () { + for (var t = 0, e = arguments.length, n = Tt(this, e); e > t;) n[t] = arguments[t++]; + return n + }, Ot = !!V && a(function () { + dt.call(new V(1)) + }), Rt = function () { + return dt.apply(Ot ? ft.call(kt(this)) : kt(this), arguments) + }, It = { + copyWithin: function (t, e) { + return N.call(kt(this), t, e, arguments.length > 2 ? arguments[2] : void 0) + }, every: function (t) { + return J(kt(this), t, arguments.length > 1 ? arguments[1] : void 0) + }, fill: function (t) { + return F.apply(kt(this), arguments) + }, filter: function (t) { + return Ct(this, K(kt(this), t, arguments.length > 1 ? arguments[1] : void 0)) + }, find: function (t) { + return Q(kt(this), t, arguments.length > 1 ? arguments[1] : void 0) + }, findIndex: function (t) { + return tt(kt(this), t, arguments.length > 1 ? arguments[1] : void 0) + }, forEach: function (t) { + Y(kt(this), t, arguments.length > 1 ? arguments[1] : void 0) + }, indexOf: function (t) { + return nt(kt(this), t, arguments.length > 1 ? arguments[1] : void 0) + }, includes: function (t) { + return et(kt(this), t, arguments.length > 1 ? arguments[1] : void 0) + }, join: function (t) { + return ut.apply(kt(this), arguments) + }, lastIndexOf: function (t) { + return ot.apply(kt(this), arguments) + }, map: function (t) { + return wt(kt(this), t, arguments.length > 1 ? arguments[1] : void 0) + }, reduce: function (t) { + return st.apply(kt(this), arguments) + }, reduceRight: function (t) { + return lt.apply(kt(this), arguments) + }, reverse: function () { + for (var t, e = this, n = kt(e).length, r = Math.floor(n / 2), i = 0; i < r;) t = e[i], e[i++] = e[--n], e[n] = t; + return e + }, some: function (t) { + return q(kt(this), t, arguments.length > 1 ? arguments[1] : void 0) + }, sort: function (t) { + return ct.call(kt(this), t) + }, subarray: function (t, e) { + var n = kt(this), r = n.length, i = m(t, r); + return new (O(n, n[mt]))(n.buffer, n.byteOffset + i * n.BYTES_PER_ELEMENT, v((void 0 === e ? r : m(e, r)) - i)) + } + }, Bt = function (t, e) { + return Ct(this, ft.call(kt(this), t, e)) + }, zt = function (t) { + kt(this); + var e = Et(arguments[1], 1), n = this.length, r = x(t), i = v(r.length), a = 0; + if (i + e > n) throw G("Wrong length!"); + for (; a < i;) this[e + a] = r[a++] + }, Ft = { + entries: function () { + return at.call(kt(this)) + }, keys: function () { + return it.call(kt(this)) + }, values: function () { + return rt.call(kt(this)) + } + }, Nt = function (t, e) { + return w(t) && t[yt] && "symbol" != typeof e && e in t && String(+e) == String(e) + }, Dt = function (t, e) { + return Nt(t, e = _(e, !0)) ? f(2, t[e]) : H(t, e) + }, jt = function (t, e, n) { + return !(Nt(t, e = _(e, !0)) && w(n) && y(n, "value")) || y(n, "get") || y(n, "set") || n.configurable || y(n, "writable") && !n.writable || y(n, "enumerable") && !n.enumerable ? U(t, e, n) : (t[e] = n.value, t) + }; + _t || (j.f = Dt, D.f = jt), o(o.S + o.F * !_t, "Object", { + getOwnPropertyDescriptor: Dt, + defineProperty: jt + }), a(function () { + ht.call({}) + }) && (ht = dt = function () { + return ut.call(this) + }); + var Ut = d({}, It); + d(Ut, Ft), h(Ut, pt, Ft.values), d(Ut, { + slice: Bt, set: zt, constructor: function () { + }, toString: ht, toLocaleString: Rt + }), At(Ut, "buffer", "b"), At(Ut, "byteOffset", "o"), At(Ut, "byteLength", "l"), At(Ut, "length", "e"), U(Ut, vt, { + get: function () { + return this[yt] + } + }), t.exports = function (t, e, n, l) { + l = !!l; + var u = t + (l ? "Clamped" : "") + "Array", f = "get" + t, d = "set" + t, p = i[u], m = p || {}, _ = p && k(p), + y = !p || !s.ABV, x = {}, S = p && p.prototype, C = function (t, n) { + var r = t._d; + return r.v[f](n * e + r.o, xt) + }, M = function (t, n, r) { + var i = t._d; + l && (r = (r = Math.round(r)) < 0 ? 0 : r > 255 ? 255 : 255 & r), i.v[d](n * e + i.o, r, xt) + }, A = function (t, e) { + U(t, e, { + get: function () { + return C(this, e) + }, set: function (t) { + return M(this, e, t) + }, enumerable: !0 + }) + }; + y ? (p = n(function (t, n, r, i) { + c(t, p, u, "_d"); + var a, o, s, l, f = 0, d = 0; + if (w(n)) { + if (!(n instanceof $ || "ArrayBuffer" == (l = b(n)) || "SharedArrayBuffer" == l)) return yt in n ? Mt(p, n) : Pt.call(p, n); + a = n, d = Et(r, e); + var m = n.byteLength; + if (void 0 === i) { + if (m % e) throw G("Wrong length!"); + if ((o = m - d) < 0) throw G("Wrong length!") + } else if ((o = v(i) * e) + d > m) throw G("Wrong length!"); + s = o / e + } else s = g(n), o = s * e, a = new $(o); + for (h(t, "_d", {b: a, o: d, l: o, e: s, v: new X(a)}); f < s;) A(t, f++) + }), S = p.prototype = E(Ut), h(S, "constructor", p)) : a(function () { + p(1) + }) && a(function () { + new p(-1) + }) && B(function (t) { + new p, new p(null), new p(1.5), new p(t) + }, !0) || (p = n(function (t, n, r, i) { + c(t, p, u); + var a; + return w(n) ? n instanceof $ || "ArrayBuffer" == (a = b(n)) || "SharedArrayBuffer" == a ? void 0 !== i ? new m(n, Et(r, e), i) : void 0 !== r ? new m(n, Et(r, e)) : new m(n) : yt in n ? Mt(p, n) : Pt.call(p, n) : new m(g(n)) + }), Y(_ !== Function.prototype ? T(m).concat(T(_)) : T(m), function (t) { + t in p || h(p, t, m[t]) + }), p.prototype = S, r || (S.constructor = p)); + var P = S[pt], L = !!P && ("values" == P.name || void 0 == P.name), O = Ft.values; + h(p, gt, !0), h(S, yt, u), h(S, bt, !0), h(S, mt, p), (l ? new p(1)[vt] == u : vt in S) || U(S, vt, { + get: function () { + return u + } + }), x[u] = p, o(o.G + o.W + o.F * (p != m), x), o(o.S, u, {BYTES_PER_ELEMENT: e}), o(o.S + o.F * a(function () { + m.of.call(p, 1) + }), u, { + from: Pt, + of: Lt + }), "BYTES_PER_ELEMENT" in S || h(S, "BYTES_PER_ELEMENT", e), o(o.P, u, It), z(u), o(o.P + o.F * St, u, {set: zt}), o(o.P + o.F * !L, u, Ft), r || S.toString == ht || (S.toString = ht), o(o.P + o.F * a(function () { + new p(1).slice() + }), u, {slice: Bt}), o(o.P + o.F * (a(function () { + return [1, 2].toLocaleString() != new p([1, 2]).toLocaleString() + }) || !a(function () { + S.toLocaleString.call([1, 2]) + })), u, {toLocaleString: Rt}), I[u] = L ? P : O, r || L || h(S, pt, O) + } + } else t.exports = function () { + } +}, function (t, e, n) { + "use strict"; + (function (e, r) { + function i(t, e) { + t = "string" == typeof t ? {ec_level: t} : t || {}; + var n = {type: String(e || t.type || "png").toLowerCase()}, r = "png" == n.type ? d : p; + for (var i in r) n[i] = i in t ? t[i] : r[i]; + return n + } + + function a(t, n) { + n = i(n); + var r = u(t, n.ec_level, n.parse_url), a = new l; + switch (a._read = h, n.type) { + case"svg": + case"pdf": + case"eps": + e.nextTick(function () { + f[n.type](r, a, n.margin, n.size) + }); + break; + case"svgpath": + e.nextTick(function () { + var t = f.svg_object(r, n.margin, n.size); + a.push(t.path), a.push(null) + }); + break; + case"png": + default: + e.nextTick(function () { + var t = c.bitmap(r, n.size, n.margin); + n.customize && n.customize(t), c.png(t, a) + }) + } + return a + } + + function o(t, e) { + e = i(e); + var n, a = u(t, e.ec_level, e.parse_url), o = []; + switch (e.type) { + case"svg": + case"pdf": + case"eps": + f[e.type](a, o, e.margin, e.size), n = o.filter(Boolean).join(""); + break; + case"png": + default: + var s = c.bitmap(a, e.size, e.margin); + e.customize && e.customize(s), c.png(s, o), n = r.concat(o.filter(Boolean)) + } + return n + } + + function s(t, e) { + e = i(e, "svg"); + var n = u(t, e.ec_level); + return f.svg_object(n, e.margin) + } + + var l = n(833).Readable, u = n(823).QR, c = n(822), f = n(824), h = function () { + }, d = {parse_url: !1, ec_level: "M", size: 5, margin: 4, customize: null}, + p = {parse_url: !1, ec_level: "M", margin: 1, size: 0}; + t.exports = {matrix: u, image: a, imageSync: o, svgObject: s} + }).call(e, n(110), n(95).Buffer) +}, function (t, e) { + var n; + n = function () { + return this + }(); + try { + n = n || Function("return this")() || (0, eval)("this") + } catch (t) { + "object" == typeof window && (n = window) + } + t.exports = n +}, , function (t, e, n) { + t.exports = !n(164)(function () { + return 7 != Object.defineProperty({}, "a", { + get: function () { + return 7 + } + }).a + }) +}, function (t, e, n) { + var r = n(84)("unscopables"), i = Array.prototype; + void 0 == i[r] && n(99)(i, r, {}), t.exports = function (t) { + i[r][t] = !0 + } +}, function (t, e, n) { + var r = n(151)("meta"), i = n(82), a = n(98), o = n(87).f, s = 0, l = Object.isExtensible || function () { + return !0 + }, u = !n(81)(function () { + return l(Object.preventExtensions({})) + }), c = function (t) { + o(t, r, {value: {i: "O" + ++s, w: {}}}) + }, f = function (t, e) { + if (!i(t)) return "symbol" == typeof t ? t : ("string" == typeof t ? "S" : "P") + t; + if (!a(t, r)) { + if (!l(t)) return "F"; + if (!e) return "E"; + c(t) + } + return t[r].i + }, h = function (t, e) { + if (!a(t, r)) { + if (!l(t)) return !0; + if (!e) return !1; + c(t) + } + return t[r].w + }, d = function (t) { + return u && p.NEED && l(t) && !a(t, r) && c(t), t + }, p = t.exports = {KEY: r, NEED: !1, fastKey: f, getWeak: h, onFreeze: d} +}, function (t, e, n) { + var r = n(332), i = n(247); + t.exports = Object.keys || function (t) { + return r(t, i) + } +}, function (t, e, n) { + "use strict"; + + function r(t, e) { + return Object.prototype.hasOwnProperty.call(t, e) + } + + var i = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array; + e.assign = function (t) { + for (var e = Array.prototype.slice.call(arguments, 1); e.length;) { + var n = e.shift(); + if (n) { + if ("object" != typeof n) throw new TypeError(n + "must be non-object"); + for (var i in n) r(n, i) && (t[i] = n[i]) + } + } + return t + }, e.shrinkBuf = function (t, e) { + return t.length === e ? t : t.subarray ? t.subarray(0, e) : (t.length = e, t) + }; + var a = { + arraySet: function (t, e, n, r, i) { + if (e.subarray && t.subarray) return void t.set(e.subarray(n, n + r), i); + for (var a = 0; a < r; a++) t[i + a] = e[n + a] + }, flattenChunks: function (t) { + var e, n, r, i, a, o; + for (r = 0, e = 0, n = t.length; e < n; e++) r += t[e].length; + for (o = new Uint8Array(r), i = 0, e = 0, n = t.length; e < n; e++) a = t[e], o.set(a, i), i += a.length; + return o + } + }, o = { + arraySet: function (t, e, n, r, i) { + for (var a = 0; a < r; a++) t[i + a] = e[n + a] + }, flattenChunks: function (t) { + return [].concat.apply([], t) + } + }; + e.setTyped = function (t) { + t ? (e.Buf8 = Uint8Array, e.Buf16 = Uint16Array, e.Buf32 = Int32Array, e.assign(e, a)) : (e.Buf8 = Array, e.Buf16 = Array, e.Buf32 = Array, e.assign(e, o)) + }, e.setTyped(i) +}, , , , , , , , , function (t, e) { + var n = {}.hasOwnProperty; + t.exports = function (t, e) { + return n.call(t, e) + } +}, function (t, e, n) { + var r = n(119), i = n(179); + t.exports = n(126) ? function (t, e, n) { + return r.f(t, e, i(1, n)) + } : function (t, e, n) { + return t[e] = n, t + } +}, function (t, e, n) { + var r = n(306), i = n(229); + t.exports = Object.keys || function (t) { + return r(t, i) + } +}, function (t, e) { + t.exports = function (t, e, n, r) { + if (!(t instanceof e) || void 0 !== r && r in t) throw TypeError(n + ": incorrect invocation!"); + return t + } +}, function (t, e, n) { + var r = n(107), i = n(324), a = n(251), o = n(78), s = n(88), l = n(267), u = {}, c = {}, + e = t.exports = function (t, e, n, f, h) { + var d, p, v, g, m = h ? function () { + return t + } : l(t), _ = r(n, f, e ? 2 : 1), y = 0; + if ("function" != typeof m) throw TypeError(t + " is not iterable!"); + if (a(m)) { + for (d = s(t.length); d > y; y++) if ((g = e ? _(o(p = t[y])[0], p[1]) : _(t[y])) === u || g === c) return g + } else for (v = m.call(t); !(p = v.next()).done;) if ((g = i(v, _, p.value, e)) === u || g === c) return g + }; + e.BREAK = u, e.RETURN = c +}, function (t, e) { + t.exports = !1 +}, function (t, e, n) { + var r = n(78), i = n(330), a = n(247), o = n(259)("IE_PROTO"), s = function () { + }, l = function () { + var t, e = n(246)("iframe"), r = a.length; + for (e.style.display = "none", n(249).appendChild(e), e.src = "javascript:", t = e.contentWindow.document, t.open(), t.write(" \ No newline at end of file diff --git a/static/chart_main/chart_main/static/tv-chart.82ee311dc10bb182c736.html b/static/chart_main/chart_main/static/tv-chart.82ee311dc10bb182c736.html new file mode 100644 index 0000000..9ce6b9f --- /dev/null +++ b/static/chart_main/chart_main/static/tv-chart.82ee311dc10bb182c736.html @@ -0,0 +1,126 @@ + + + + + + + + + + + +
+
+
+
时间
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
成交量
+
+
+
+ + + + + + + + diff --git a/static/chart_main/chart_main/ws.js b/static/chart_main/chart_main/ws.js new file mode 100644 index 0000000..7cc2381 --- /dev/null +++ b/static/chart_main/chart_main/ws.js @@ -0,0 +1,230 @@ +"use strict"; + + +function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return !!right[Symbol.hasInstance](left); } else { return left instanceof right; } } + +function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _classCallCheck(instance, Constructor) { if (!_instanceof(instance, Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var Ws = /*#__PURE__*/function () { + function Ws(ws, data) { + var _this = this; + + _classCallCheck(this, Ws); + + // [{url, data, method...},,,,] + this._ws = ws; + this._data = data; // 待发送的消息列 + + this._msgs = []; + this.socket = this.doLink(); + this.doOpen(); // 订阅/发布模型 + + this._events = {}; // 是否保持连接 + + this._isLink = true; // 循环检查 + + setInterval(function () { + if (_this._isLink) { + if (_this.socket.readyState == 2 || _this.socket.readyState == 3) { + _this.resetLink(); + } + } + }, 3000); + } // 重连 + + + _createClass(Ws, [{ + key: "resetLink", + value: function resetLink() { + this.socket = this.doLink(); + this.doOpen(); + } // 连接 + + }, { + key: "doLink", + value: function doLink() { + var ws = new WebSocket( this._ws); + return ws; + } + }, { + key: "doOpen", + value: function doOpen() { + var _this2 = this; + + this.socket.addEventListener('open',function (ev) { + _this2.onOpen(ev); + }); + this.socket.addEventListener('message',function (ev) { + _this2.onMessage(ev); + }); + this.socket.addEventListener('close',function (ev) { + _this2.onClose(ev); + }); + this.socket.addEventListener('error',function (ev) { + _this2.onError(ev); + }); + } // 打开 + + }, { + key: "onOpen", + value: function onOpen() { + var _this3 = this; + + // 打开时重发未发出的消息 + var list = Object.assign([], this._msgs); + list.forEach(function (item) { + if (_this3.send(item)) { + var idx = _this3._msgs.indexOf(item); + + if (idx != -1) { + _this3._msgs.splice(idx, 1); + } + } + }); + } // 手动关闭 + + }, { + key: "doClose", + value: function doClose() { + this._isLink = false; + this._events = {}; + this._msgs = []; + this.socket.close({ + success: function success() { + console.log('socket close success'); + } + }); + } // 添加监听 + + }, { + key: "on", + value: function on(name, handler) { + this.subscribe(name, handler); + } // 取消监听 + + }, { + key: "off", + value: function off(name, handler) { + this.unsubscribe(name, handler); + } // 关闭事件 + + }, { + key: "onClose", + value: function onClose() { + var _this4 = this; + + // 是否重新连接 + if (this._isLink) { + setTimeout(function () { + _this4.resetLink(); + }, 3000); + } + } // 错误 + + }, { + key: "onError", + value: function onError(evt) { + this.Notify({ + Event: 'error', + Data: evt + }); + } // 接受数据 + + }, { + key: "onMessage", + value: function onMessage(evt) { + try { + // 解析推送的数据 + var data = JSON.parse(evt.data); // 通知订阅者 + + this.Notify({ + Event: 'message', + Data: data + }); + } catch (err) { + console.error(' >> Data parsing error:', err); // 通知订阅者 + + this.Notify({ + Event: 'error', + Data: err + }); + } + } // 订阅事件的方法 + + }, { + key: "subscribe", + value: function subscribe(name, handler) { + if (this._events.hasOwnProperty(name)) { + this._events[name].push(handler); // 追加事件 + + } else { + this._events[name] = [handler]; // 添加事件 + } + } // 取消订阅事件 + + }, { + key: "unsubscribe", + value: function unsubscribe(name, handler) { + var start = this._events[name].findIndex(function (item) { + return item === handler; + }); // 删除该事件 + + + this._events[name].splice(start, 1); + } // 发布后通知订阅者 + + }, { + key: "Notify", + value: function Notify(entry) { + // 检查是否有订阅者 返回队列 + var cbQueue = this._events[entry.Event]; + + if (cbQueue && cbQueue.length) { + var _iterator = _createForOfIteratorHelper(cbQueue), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var callback = _step.value; + if (_instanceof(callback, Function)) callback(entry.Data); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } + } // 发送消息 + + }, { + key: "send", + value: function send(data) { + if (this.socket.readyState == 1) { + this.socket.send(JSON.stringify(data)); + return true; + } else { + // 保存到待发送信息 + if (!this._msgs.includes(data)) { + this._msgs.push(data); + } + + ; + return false; + } + } + }]); + + return Ws; +}(); + +window.Ws = Ws; \ No newline at end of file diff --git a/static/chart_main/charting_library.min.d.ts b/static/chart_main/charting_library.min.d.ts new file mode 100644 index 0000000..9091789 --- /dev/null +++ b/static/chart_main/charting_library.min.d.ts @@ -0,0 +1,1334 @@ +/// + +export declare type LanguageCode = 'ar' | 'zh' | 'cs' | 'da_DK' | 'nl_NL' | 'en' | 'et_EE' | 'fr' | 'de' | 'el' | 'he_IL' | 'hu_HU' | 'id_ID' | 'it' | 'ja' | 'ko' | 'fa' | 'pl' | 'pt' | 'ro' | 'ru' | 'sk_SK' | 'es' | 'sv' | 'th' | 'tr' | 'vi'; +export interface ISubscription { + subscribe(obj: object | null, member: TFunc, singleshot?: boolean): void; + unsubscribe(obj: object | null, member: TFunc): void; + unsubscribeAll(obj: object | null): void; +} +export interface IDelegate extends ISubscription { + fire: TFunc; +} +export interface IDestroyable { + destroy(): void; +} +/** + * This is the generic type useful for declaring a nominal type, + * which does not structurally matches with the base type and + * the other types declared over the same base type + * + * Usage: + * @example + * type Index = Nominal; + * // let i: Index = 42; // this fails to compile + * let i: Index = 42 as Index; // OK + * @example + * type TagName = Nominal; + */ +export declare type Nominal = T & { + [Symbol.species]: Name; +}; +export interface FormatterParseResult { + res: boolean; +} +export interface ErrorFormatterParseResult extends FormatterParseResult { + error?: string; + res: false; +} +export interface SuccessFormatterParseResult extends FormatterParseResult { + res: true; + suggest?: string; +} +export interface IFormatter { + format(value: any): string; + parse?(value: string): ErrorFormatterParseResult | SuccessFormatterParseResult; +} +export declare type StudyInputValueType = string | number | boolean; +export declare type StudyOverrideValueType = string | number | boolean; +export interface StudyOverrides { + [key: string]: StudyOverrideValueType; +} +export interface WatchedValueSubscribeOptions { + once?: boolean; + callWithLast?: boolean; +} +export interface IWatchedValueReadonly { + value(): T; + subscribe(callback: (value: T) => void, options?: WatchedValueSubscribeOptions): void; + unsubscribe(callback?: ((value: T) => void) | null): void; + spawn(): IWatchedValueReadonlySpawn; +} +export interface IWatchedValueReadonlySpawn extends IWatchedValueReadonly, IDestroyable { +} +export declare type WatchedValueCallback = (value: T) => void; +export interface IWatchedValue extends IWatchedValueReadonly { + value(): T; + setValue(value: T, forceUpdate?: boolean): void; + subscribe(callback: WatchedValueCallback, options?: WatchedValueSubscribeOptions): void; + unsubscribe(callback?: WatchedValueCallback | null): void; + readonly(): IWatchedValueReadonly; + spawn(): IWatchedValueSpawn; +} +export interface IWatchedValueSpawn extends IWatchedValueReadonlySpawn, IWatchedValue { + spawn(): IWatchedValueSpawn; +} +export declare const enum ConnectionStatus { + Connected = 1, + Connecting = 2, + Disconnected = 3, + Error = 4, +} +export declare const enum OrderType { + Limit = 1, + Market = 2, + Stop = 3, + StopLimit = 4, +} +export declare const enum Side { + Buy = 1, + Sell = -1, +} +export declare const enum OrderStatus { + Canceled = 1, + Filled = 2, + Inactive = 3, + Placing = 4, + Rejected = 5, + Working = 6, +} +export declare const enum ParentType { + Order = 1, + Position = 2, + Trade = 3, +} +export declare const enum OrderTicketFocusControl { + StopLoss = 1, + StopPrice = 2, + TakeProfit = 3, +} +export declare const enum NotificationType { + Error = 0, + Success = 1, +} +export interface TableRow { + priceFormatter?: IFormatter; + [name: string]: any; +} +export interface TableFormatterInputs { + value: number | string | Side | OrderType | OrderStatus; + prevValue?: number | undefined; + row: TableRow; + $container: JQuery; + priceFormatter?: IFormatter; +} +export declare type TableElementFormatFunction = (inputs: TableFormatterInputs) => string | JQuery; +export interface TableElementFormatter { + name: string; + format: TableElementFormatFunction; +} +export declare type StandardFormatterName = 'date' | 'default' | 'fixed' | 'formatPrice' | 'formatPriceForexSup' | 'integerSeparated' | 'localDate' | 'percentage' | 'pips' | 'profit' | 'side' | 'status' | 'symbol' | 'type'; +export interface DOMLevel { + price: number; + volume: number; +} +export interface DOMData { + snapshot: boolean; + asks: DOMLevel[]; + bids: DOMLevel[]; +} +export interface QuantityMetainfo { + min: number; + max: number; + step: number; + default?: number; +} +export interface InstrumentInfo { + qty: QuantityMetainfo; + pipValue: number; + pipSize: number; + minTick: number; + description: string; + domVolumePrecision?: number; +} +export interface CustomFields { + [key: string]: any; +} +export interface PreOrder { + symbol: string; + brokerSymbol?: string; + type?: OrderType; + side?: Side; + qty: number; + status?: OrderStatus; + stopPrice?: number; + limitPrice?: number; + stopLoss?: number; + takeProfit?: number; + duration?: OrderDuration; +} +export interface PlacedOrder extends PreOrder, CustomFields { + id: string; + filledQty?: number; + avgPrice?: number; + updateTime?: number; + takeProfit?: number; + stopLoss?: number; + type: OrderType; + side: Side; + status: OrderStatus; +} +export interface OrderWithParent extends PlacedOrder { + parentId: string; + parentType: ParentType; +} +export declare type Order = OrderWithParent | PlacedOrder; +export interface Position { + id: string; + symbol: string; + brokerSymbol?: string; + qty: number; + side: Side; + avgPrice: number; + [key: string]: any; +} +export interface Trade extends CustomFields { + id: string; + date: number; + symbol: string; + brokerSymbol?: string; + qty: number; + side: Side; + price: number; +} +export interface Execution extends CustomFields { + symbol: string; + brokerSymbol?: string; + price: number; + qty: number; + side: Side; + time: number; +} +export interface AccountInfo { + id: string; + name: string; + currency?: string; + currencySign?: string; +} +export interface AccountManagerColumn { + id?: string; + label: string; + className?: string; + formatter?: StandardFormatterName | 'orderSettings' | 'posSettings' | string; + property?: string; + sortProp?: string; + modificationProperty?: string; + notSortable?: boolean; + help?: string; + highlightDiff?: boolean; + fixedWidth?: boolean; + notHideable?: boolean; + hideByDefault?: boolean; +} +export interface SortingParameters { + columnId: string; + asc?: boolean; +} +export interface AccountManagerTable { + id: string; + title?: string; + columns: AccountManagerColumn[]; + initialSorting?: SortingParameters; + changeDelegate: ISubscription<(data: {}) => void>; + getData(): Promise<{}[]>; +} +export interface AccountManagerPage { + id: string; + title: string; + tables: AccountManagerTable[]; +} +export interface AccountManagerInfo { + accountTitle: string; + accountsList?: AccountInfo[]; + account?: IWatchedValue; + summary: AccountManagerSummaryField[]; + customFormatters?: TableElementFormatter[]; + orderColumns: AccountManagerColumn[]; + historyColumns?: AccountManagerColumn[]; + positionColumns: AccountManagerColumn[]; + tradeColumns?: AccountManagerColumn[]; + pages: AccountManagerPage[]; + possibleOrderStatuses?: OrderStatus[]; + contextMenuActions?(contextMenuEvent: JQueryEventObject, activePageActions: ActionMetaInfo[]): Promise; +} +export interface TradingQuotes { + trade?: number; + size?: number; + bid?: number; + bid_size?: number; + ask?: number; + ask_size?: number; + spread?: number; +} +export interface ActionDescription { + text?: '-' | string; + separator?: boolean; + shortcut?: string; + tooltip?: string; + checked?: boolean; + checkable?: boolean; + enabled?: boolean; + externalLink?: boolean; +} +export interface MenuSeparator extends ActionDescription { + separator: boolean; +} +export interface ActionDescriptionWithCallback extends ActionDescription { + action: (a: ActionDescription) => void; +} +export declare type ActionMetaInfo = ActionDescriptionWithCallback | MenuSeparator; +export interface AccountManagerSummaryField { + text: string; + wValue: IWatchedValueReadonly; + formatter?: string; +} +export interface OrderDurationMetaInfo { + hasDatePicker?: boolean; + hasTimePicker?: boolean; + name: string; + value: string; +} +export interface OrderDuration { + /** + * type is OrderDurationMetaInfo.value + */ + type: string; + datetime?: number; +} +export interface BrokerConfigFlags { + showQuantityInsteadOfAmount?: boolean; + supportOrderBrackets?: boolean; + supportPositionBrackets?: boolean; + supportTradeBrackets?: boolean; + supportTrades?: boolean; + supportClosePosition?: boolean; + supportCloseTrade?: boolean; + supportEditAmount?: boolean; + supportLevel2Data?: boolean; + supportMultiposition?: boolean; + supportPLUpdate?: boolean; + supportReducePosition?: boolean; + supportReversePosition?: boolean; + supportStopLimitOrders?: boolean; + supportDemoLiveSwitcher?: boolean; + supportCustomPlaceOrderTradableCheck?: boolean; + supportMarketBrackets?: boolean; + supportSymbolSearch?: boolean; + supportModifyDuration?: boolean; + supportModifyOrder?: boolean; + calculatePLUsingLast?: boolean; + requiresFIFOCloseTrades?: boolean; + supportBottomWidget?: boolean; + /** + * @deprecated + */ + supportBrackets?: boolean; +} +export interface SingleBrokerMetaInfo { + configFlags: BrokerConfigFlags; + customNotificationFields?: string[]; + durations?: OrderDurationMetaInfo[]; +} +export interface Brackets { + stopLoss?: number; + takeProfit?: number; +} +export interface DefaultContextMenuActionsParams { +} +export interface DefaultDropdownActionsParams { + showFloatingToolbar?: boolean; + showDOM?: boolean; + tradingProperties?: boolean; + selectAnotherBroker?: boolean; + disconnect?: boolean; + showHowToUse?: boolean; +} +export interface ITradeContext { + symbol: string; + displaySymbol: string; + value: number | null; + formattedValue: string; + last: number; +} +export interface QuotesBase { + change: number; + change_percent: number; + last_price: number; + fractional: number; + minmov: number; + minmove2: number; + pricescale: number; + description: string; +} +export interface OrderDialogOptions { + customFields?: (TextWithCheckboxFieldMetaInfo | CustomInputFieldMetaInfo)[]; +} +export interface BaseInputFieldValidatorResult { + valid: boolean; +} +export interface PositiveBaseInputFieldValidatorResult extends BaseInputFieldValidatorResult { + valid: true; +} +export interface NegativeBaseInputFieldValidatorResult extends BaseInputFieldValidatorResult { + valid: false; + errorMessage: string; +} +export declare type InputFieldValidatorResult = PositiveBaseInputFieldValidatorResult | NegativeBaseInputFieldValidatorResult; +export declare type InputFieldValidator = (value: any) => InputFieldValidatorResult; +export interface CustomInputFieldMetaInfo { + id: string; + title: string; + placeHolder: string; + value: any; + validator?: InputFieldValidator; + customInfo?: any; +} +export interface TextWithCheckboxValue { + text: string; + checked: boolean; +} +export interface TextWithCheckboxFieldCustomInfo { + checkboxTitle: string; + asterix?: boolean; +} +export declare type TextInputFieldValidator = (value: string) => InputFieldValidatorResult; +export interface TextWithCheckboxFieldMetaInfo extends CustomInputFieldMetaInfo { + value: TextWithCheckboxValue; + customInfo: TextWithCheckboxFieldCustomInfo; + validator?: TextInputFieldValidator; +} +export interface CustomInputFieldsValues { + [fieldId: string]: TextWithCheckboxValue | any; +} +export interface IBrokerCommon { + chartContextMenuActions(context: ITradeContext, options?: DefaultContextMenuActionsParams): Promise; + isTradable(symbol: string): Promise; + connectionStatus(): ConnectionStatus; + placeOrder(order: PreOrder, silently?: boolean): Promise; + modifyOrder(order: Order, silently?: boolean, focus?: OrderTicketFocusControl): Promise; + orders(): Promise; + positions(): Promise; + trades?(): Promise; + executions(symbol: string): Promise; + symbolInfo(symbol: string): Promise; + accountInfo(): Promise; + editPositionBrackets?(positionId: string, focus?: OrderTicketFocusControl, brackets?: Brackets, silently?: boolean): Promise; + editTradeBrackets?(tradeId: string, focus?: OrderTicketFocusControl, brackets?: Brackets, silently?: boolean): Promise; + accountManagerInfo(): AccountManagerInfo; + formatter?(symbol: string): Promise; + spreadFormatter?(symbol: string): Promise; +} +export interface SuggestedQuantity { + changed: IDelegate<(symbol: string) => void>; + value(symbol: string): Promise; + setValue(symbol: string, value: number): void; +} +export interface IBrokerConnectionAdapterFactory { + createDelegate(): IDelegate; + createWatchedValue(value?: T): IWatchedValue; +} +export interface IBrokerConnectionAdapterHost { + factory: IBrokerConnectionAdapterFactory; + connectionStatusUpdate(status: ConnectionStatus, message?: string): void; + defaultFormatter(symbol: string): Promise; + numericFormatter(decimalPlaces: number): Promise; + defaultContextMenuActions(context: ITradeContext, params?: DefaultContextMenuActionsParams): Promise; + defaultDropdownMenuActions(options?: Partial): ActionMetaInfo[]; + floatingTradingPanelVisibility(): IWatchedValue; + domVisibility(): IWatchedValue; + silentOrdersPlacement(): IWatchedValue; + patchConfig(config: Partial): void; + setDurations(durations: OrderDurationMetaInfo[]): void; + orderUpdate(order: Order, isHistoryUpdate?: boolean): void; + orderPartialUpdate(id: string, orderChanges: Partial): void; + positionUpdate(position: Position, isHistoryUpdate?: boolean): void; + positionPartialUpdate(id: string, positionChanges: Partial): void; + tradeUpdate(trade: Trade, isHistoryUpdate?: boolean): void; + tradePartialUpdate(id: string, tradeChanges: Partial): void; + executionUpdate(execution: Execution, isHistoryUpdate?: boolean): void; + fullUpdate(): void; + realtimeUpdate(symbol: string, data: TradingQuotes): void; + plUpdate(positionId: string, pl: number): void; + tradePLUpdate(tradeId: string, pl: number): void; + equityUpdate(equity: number): void; + domeUpdate(symbol: string, equity: DOMData): void; + showOrderDialog(order: T, handler: (order: T, customFieldsResult?: CustomInputFieldsValues) => Promise, focus?: OrderTicketFocusControl, options?: OrderDialogOptions): Promise; + showCancelOrderDialog(orderId: string, handler: () => void): Promise; + showCancelMultipleOrdersDialog(symbol: string, side: Side | undefined, qty: number, handler: () => void): Promise; + showCancelBracketsDialog(orderId: string, handler: () => void): Promise; + showCancelMultipleBracketsDialog(orderId: string, handler: () => void): Promise; + showClosePositionDialog(positionId: string, handler: () => void): Promise; + showReversePositionDialog(position: Position, handler: () => void): Promise; + showPositionBracketsDialog(position: Position | Trade, brackets: Brackets, focus: OrderTicketFocusControl | null, handler: (brackets: Brackets) => void): Promise; + showNotification(title: string, text: string, notificationType?: NotificationType): void; + setButtonDropdownActions(descriptions: ActionMetaInfo[]): void; + activateBottomWidget(): Promise; + showTradingProperties(): void; + suggestedQty(): SuggestedQuantity; + symbolSnapshot(symbol: string): Promise; +} +export interface IBrokerWithoutRealtime extends IBrokerCommon { + subscribeDOME?(symbol: string): void; + unsubscribeDOME?(symbol: string): void; + cancelOrder(orderId: string, silently: boolean): Promise; + cancelOrders(symbol: string, side: Side | undefined, ordersIds: string[], silently: boolean): Promise; + reversePosition?(positionId: string, silently?: boolean): Promise; + closePosition(positionId: string, silently: boolean): Promise; + closeTrade?(tradeId: string, silently: boolean): Promise; + /** + * @deprecated Brokers should always send PL and equity updates + */ + subscribePL?(positionId: string): void; + subscribeEquity?(): void; + /** + * @deprecated + */ + unsubscribePL?(positionId: string): void; + unsubscribeEquity?(): void; +} +export interface IBrokerTerminal extends IBrokerWithoutRealtime { + subscribeRealtime(symbol: string): void; + unsubscribeRealtime(symbol: string): void; +} +export declare type ResolutionString = string; +export interface Exchange { + value: string; + name: string; + desc: string; +} +export interface DatafeedSymbolType { + name: string; + value: string; +} +export interface DatafeedConfiguration { + exchanges?: Exchange[]; + supported_resolutions?: ResolutionString[]; + supports_marks?: boolean; + supports_time?: boolean; + supports_timescale_marks?: boolean; + symbols_types?: DatafeedSymbolType[]; +} +export declare type OnReadyCallback = (configuration: DatafeedConfiguration) => void; +export interface IExternalDatafeed { + onReady(callback: OnReadyCallback): void; +} +export interface DatafeedQuoteValues { + ch?: number; + chp?: number; + short_name?: string; + exchange?: string; + description?: string; + lp?: number; + ask?: number; + bid?: number; + spread?: number; + open_price?: number; + high_price?: number; + low_price?: number; + prev_close_price?: number; + volume?: number; + original_name?: string; + [valueName: string]: string | number | undefined; +} +export interface QuoteOkData { + s: 'ok'; + n: string; + v: DatafeedQuoteValues; +} +export interface QuoteErrorData { + s: 'error'; + n: string; + v: object; +} +export declare type QuoteData = QuoteOkData | QuoteErrorData; +export declare type QuotesCallback = (data: QuoteData[]) => void; +export interface IDatafeedQuotesApi { + getQuotes(symbols: string[], onDataCallback: QuotesCallback, onErrorCallback: (msg: string) => void): void; + subscribeQuotes(symbols: string[], fastSymbols: string[], onRealtimeCallback: QuotesCallback, listenerGUID: string): void; + unsubscribeQuotes(listenerGUID: string): void; +} +export declare type CustomTimezones = 'America/New_York' | 'America/Los_Angeles' | 'America/Chicago' | 'America/Phoenix' | 'America/Toronto' | 'America/Vancouver' | 'America/Argentina/Buenos_Aires' | 'America/El_Salvador' | 'America/Sao_Paulo' | 'America/Bogota' | 'America/Caracas' | 'Europe/Moscow' | 'Europe/Athens' | 'Europe/Belgrade' | 'Europe/Berlin' | 'Europe/London' | 'Europe/Luxembourg' | 'Europe/Madrid' | 'Europe/Paris' | 'Europe/Rome' | 'Europe/Warsaw' | 'Europe/Istanbul' | 'Europe/Zurich' | 'Australia/Sydney' | 'Australia/Brisbane' | 'Australia/Adelaide' | 'Australia/ACT' | 'Asia/Almaty' | 'Asia/Ashkhabad' | 'Asia/Tokyo' | 'Asia/Taipei' | 'Asia/Singapore' | 'Asia/Shanghai' | 'Asia/Seoul' | 'Asia/Tehran' | 'Asia/Dubai' | 'Asia/Kolkata' | 'Asia/Hong_Kong' | 'Asia/Bangkok' | 'Asia/Chongqing' | 'Asia/Jerusalem' | 'Asia/Kuwait' | 'Asia/Muscat' | 'Asia/Qatar' | 'Asia/Riyadh' | 'Pacific/Auckland' | 'Pacific/Chatham' | 'Pacific/Fakaofo' | 'Pacific/Honolulu' | 'America/Mexico_City' | 'Africa/Cairo' | 'Africa/Johannesburg' | 'Asia/Kathmandu' | 'US/Mountain'; +export declare type Timezone = 'Etc/UTC' | CustomTimezones; +export interface LibrarySymbolInfo { + /** + * Symbol Name + */ + name: string; + full_name: string; + base_name?: [string]; + /** + * Unique symbol id + */ + ticker?: string; + description: string; + type: string; + /** + * @example "1700-0200" + */ + session: string; + /** + * Traded exchange + * @example "NYSE" + */ + exchange: string; + listed_exchange: string; + timezone: Timezone; + /** + * Code (Tick) + * @example 8/16/.../256 (1/8/100 1/16/100 ... 1/256/100) or 1/10/.../10000000 (1 0.1 ... 0.0000001) + */ + pricescale: number; + /** + * The number of units that make up one tick. + * @example For example, U.S. equities are quotes in decimals, and tick in decimals, and can go up +/- .01. So the tick increment is 1. But the e-mini S&P futures contract, though quoted in decimals, goes up in .25 increments, so the tick increment is 25. (see also Tick Size) + */ + minmov: number; + fractional?: boolean; + /** + * @example Quarters of 1/32: pricescale=128, minmovement=1, minmovement2=4 + */ + minmove2?: number; + /** + * false if DWM only + */ + has_intraday?: boolean; + /** + * An array of resolutions which should be enabled in resolutions picker for this symbol. + */ + supported_resolutions: ResolutionString[]; + /** + * @example (for ex.: "1,5,60") - only these resolutions will be requested, all others will be built using them if possible + */ + intraday_multipliers?: string[]; + has_seconds?: boolean; + /** + * It is an array containing seconds resolutions (in seconds without a postfix) the datafeed builds by itself. + */ + seconds_multipliers?: string[]; + has_daily?: boolean; + has_weekly_and_monthly?: boolean; + has_empty_bars?: boolean; + force_session_rebuild?: boolean; + has_no_volume?: boolean; + /** + * Integer showing typical volume value decimal places for this symbol + */ + volume_precision?: number; + data_status?: 'streaming' | 'endofday' | 'pulsed' | 'delayed_streaming'; + /** + * Boolean showing whether this symbol is expired futures contract or not. + */ + expired?: boolean; + /** + * Unix timestamp of expiration date. + */ + expiration_date?: number; + sector?: string; + industry?: string; + currency_code?: string; +} +export interface Bar { + time: number; + open: number; + high: number; + low: number; + close: number; + volume?: number; +} +export interface SearchSymbolResultItem { + symbol: string; + full_name: string; + description: string; + exchange: string; + ticker: string; + type: string; +} +export interface HistoryMetadata { + noData: boolean; + nextTime?: number | null; +} +export interface MarkCustomColor { + color: string; + background: string; +} +export declare type MarkConstColors = 'red' | 'green' | 'blue' | 'yellow'; +export interface Mark { + id: string | number; + time: number; + color: MarkConstColors | MarkCustomColor; + text: string; + label: string; + labelFontColor: string; + minSize: number; +} +export interface TimescaleMark { + id: string | number; + time: number; + color: MarkConstColors | string; + label: string; + tooltip: string[]; +} +export declare type ResolutionBackValues = 'D' | 'M'; +export interface HistoryDepth { + resolutionBack: ResolutionBackValues; + intervalBack: number; +} +export declare type SearchSymbolsCallback = (items: SearchSymbolResultItem[]) => void; +export declare type ResolveCallback = (symbolInfo: LibrarySymbolInfo) => void; +export declare type HistoryCallback = (bars: Bar[], meta: HistoryMetadata) => void; +export declare type SubscribeBarsCallback = (bar: Bar) => void; +export declare type GetMarksCallback = (marks: T[]) => void; +export declare type ServerTimeCallback = (serverTime: number) => void; +export declare type DomeCallback = (data: DOMData) => void; +export declare type ErrorCallback = (reason: string) => void; +export interface IDatafeedChartApi { + calculateHistoryDepth?(resolution: ResolutionString, resolutionBack: ResolutionBackValues, intervalBack: number): HistoryDepth | undefined; + getMarks?(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; + getTimescaleMarks?(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; + /** + * This function is called if configuration flag supports_time is set to true when chart needs to know the server time. + * The charting library expects callback to be called once. + * The time is provided without milliseconds. Example: 1445324591. It is used to display Countdown on the price scale. + */ + getServerTime?(callback: ServerTimeCallback): void; + searchSymbols(userInput: string, exchange: string, symbolType: string, onResult: SearchSymbolsCallback): void; + resolveSymbol(symbolName: string, onResolve: ResolveCallback, onError: ErrorCallback): void; + getBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, rangeStartDate: number, rangeEndDate: number, onResult: HistoryCallback, onError: ErrorCallback, isFirstCall: boolean): void; + subscribeBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, onTick: SubscribeBarsCallback, listenerGuid: string, onResetCacheNeededCallback: () => void): void; + unsubscribeBars(listenerGuid: string): void; + subscribeDepth?(symbolInfo: LibrarySymbolInfo, callback: DomeCallback): string; + unsubscribeDepth?(subscriberUID: string): void; +} +export interface ChartMetaInfo { + id: string; + name: string; + symbol: string; + resolution: ResolutionString; + timestamp: number; +} +export interface ChartData { + id: string; + name: string; + symbol: string; + resolution: ResolutionString; + content: string; +} +export interface StudyTemplateMetaInfo { + name: string; +} +export interface StudyTemplateData { + name: string; + content: string; +} +export interface IExternalSaveLoadAdapter { + getAllCharts(): Promise; + removeChart(chartId: string): Promise; + saveChart(chartData: ChartData): Promise; + getChartContent(chartId: string): Promise; + getAllStudyTemplates(): Promise; + removeStudyTemplate(studyTemplateInfo: StudyTemplateMetaInfo): Promise; + saveStudyTemplate(studyTemplateData: StudyTemplateData): Promise; + getStudyTemplateContent(studyTemplateInfo: StudyTemplateMetaInfo): Promise; +} +export interface RestBrokerMetaInfo { + url: string; + access_token: string; +} +export interface AccessListItem { + name: string; + grayed?: boolean; +} +export interface AccessList { + type: 'black' | 'white'; + tools: AccessListItem[]; +} +export interface NumericFormattingParams { + decimal_sign: string; +} +export declare type AvailableSaveloadVersions = '1.0' | '1.1'; +export interface Overrides { + [key: string]: string | number | boolean; +} +export interface WidgetBarParams { + details?: boolean; + watchlist?: boolean; + news?: boolean; + watchlist_settings?: { + default_symbols: string[]; + readonly?: boolean; + }; +} +export interface RssNewsFeedInfo { + url: string; + name: string; +} +export declare type RssNewsFeedItem = RssNewsFeedInfo | RssNewsFeedInfo[]; +export interface RssNewsFeedParams { + default: RssNewsFeedItem; + [symbolType: string]: RssNewsFeedItem; +} +export interface NewsProvider { + is_news_generic?: boolean; + get_news(symbol: string, callback: (items: NewsItem[]) => void): void; +} +export interface CustomFormatter { + format(date: Date): string; + formatLocal(date: Date): string; +} +export interface CustomFormatters { + timeFormatter: CustomFormatter; + dateFormatter: CustomFormatter; +} +export interface TimeFrameItem { + text: string; + resolution: ResolutionString; + description?: string; + title?: string; +} +export interface Favorites { + intervals: ResolutionString[]; + chartTypes: string[]; +} +export interface NewsItem { + fullDescription: string; + link?: string; + published: number; + shortDescription?: string; + source: string; + title: string; +} +export interface LoadingScreenOptions { + foregroundColor?: string; + backgroundColor?: string; +} +export interface InitialSettingsMap { + [key: string]: string; +} +export interface ISettingsAdapter { + initialSettings?: InitialSettingsMap; + setValue(key: string, value: string): void; + removeValue(key: string): void; +} +export declare type IBasicDataFeed = IDatafeedChartApi & IExternalDatafeed; +export declare type ThemeName = 'Light' | 'Dark'; +export interface ChartingLibraryWidgetOptions { + container_id: string; + datafeed: IBasicDataFeed | (IBasicDataFeed & IDatafeedQuotesApi); + interval: ResolutionString; + symbol: string; + auto_save_delay?: number; + autosize?: boolean; + debug?: boolean; + disabled_features?: string[]; + drawings_access?: AccessList; + enabled_features?: string[]; + fullscreen?: boolean; + height?: number; + library_path?: string; + locale: LanguageCode; + numeric_formatting?: NumericFormattingParams; + saved_data?: object; + studies_access?: AccessList; + study_count_limit?: number; + symbol_search_request_delay?: number; + timeframe?: string; + timezone?: 'exchange' | Timezone; + toolbar_bg?: string; + width?: number; + charts_storage_url?: string; + charts_storage_api_version?: AvailableSaveloadVersions; + client_id?: string; + user_id?: string; + load_last_chart?: boolean; + studies_overrides?: StudyOverrides; + customFormatters?: CustomFormatters; + overrides?: Overrides; + snapshot_url?: string; + indicators_file_name?: string; + preset?: 'mobile'; + time_frames?: TimeFrameItem[]; + custom_css_url?: string; + favorites?: Favorites; + save_load_adapter?: IExternalSaveLoadAdapter; + loading_screen?: LoadingScreenOptions; + settings_adapter?: ISettingsAdapter; + theme?: ThemeName; +} +export interface TradingTerminalWidgetOptions extends ChartingLibraryWidgetOptions { + brokerConfig?: SingleBrokerMetaInfo; + restConfig?: RestBrokerMetaInfo; + widgetbar?: WidgetBarParams; + rss_news_feed?: RssNewsFeedParams; + news_provider?: NewsProvider; + brokerFactory?(host: IBrokerConnectionAdapterHost): IBrokerWithoutRealtime | IBrokerTerminal; +} +export declare type LayoutType = 's' | '2h' | '2-1' | '2v' | '3h' | '3v' | '3s' | '4' | '6' | '8'; +export declare type SupportedLineTools = 'text' | 'anchored_text' | 'note' | 'anchored_note' | 'double_curve' | 'arc' | 'icon' | 'arrow_up' | 'arrow_down' | 'arrow_left' | 'arrow_right' | 'price_label' | 'flag' | 'vertical_line' | 'horizontal_line' | 'horizontal_ray' | 'trend_line' | 'trend_angle' | 'arrow' | 'ray' | 'extended' | 'parallel_channel' | 'disjoint_angle' | 'flat_bottom' | 'pitchfork' | 'schiff_pitchfork_modified' | 'schiff_pitchfork' | 'balloon' | 'inside_pitchfork' | 'pitchfan' | 'gannbox' | 'gannbox_square' | 'gannbox_fixed' | 'gannbox_fan' | 'fib_retracement' | 'fib_trend_ext' | 'fib_speed_resist_fan' | 'fib_timezone' | 'fib_trend_time' | 'fib_circles' | 'fib_spiral' | 'fib_speed_resist_arcs' | 'fib_channel' | 'xabcd_pattern' | 'cypher_pattern' | 'abcd_pattern' | 'callout' | 'triangle_pattern' | '3divers_pattern' | 'head_and_shoulders' | 'fib_wedge' | 'elliott_impulse_wave' | 'elliott_triangle_wave' | 'elliott_triple_combo' | 'elliott_correction' | 'elliott_double_combo' | 'cyclic_lines' | 'time_cycles' | 'sine_line' | 'long_position' | 'short_position' | 'forecast' | 'date_range' | 'price_range' | 'date_and_price_range' | 'bars_pattern' | 'ghost_feed' | 'projection' | 'rectangle' | 'rotated_rectangle' | 'ellipse' | 'triangle' | 'polyline' | 'curve' | 'regression_trend' | 'cursor' | 'dot' | 'arrow_cursor' | 'eraser' | 'measure' | 'zoom' | 'brush'; +export interface IOrderLineAdapter { + remove(): void; + onModify(callback: () => void): this; + onModify(data: T, callback: (data: T) => void): this; + onMove(callback: () => void): this; + onMove(data: T, callback: (data: T) => void): this; + getPrice(): number; + setPrice(value: number): this; + getText(): string; + setText(value: string): this; + getTooltip(): string; + setTooltip(value: string): this; + getQuantity(): string; + setQuantity(value: string): this; + getEditable(): boolean; + setEditable(value: boolean): this; + getExtendLeft(): boolean; + setExtendLeft(value: boolean): this; + getLineLength(): number; + setLineLength(value: number): this; + getLineStyle(): number; + setLineStyle(value: number): this; + getLineWidth(): number; + setLineWidth(value: number): this; + getBodyFont(): string; + setBodyFont(value: string): this; + getQuantityFont(): string; + setQuantityFont(value: string): this; + getLineColor(): string; + setLineColor(value: string): this; + getBodyBorderColor(): string; + setBodyBorderColor(value: string): this; + getBodyBackgroundColor(): string; + setBodyBackgroundColor(value: string): this; + getBodyTextColor(): string; + setBodyTextColor(value: string): this; + getQuantityBorderColor(): string; + setQuantityBorderColor(value: string): this; + getQuantityBackgroundColor(): string; + setQuantityBackgroundColor(value: string): this; + getQuantityTextColor(): string; + setQuantityTextColor(value: string): this; + getCancelButtonBorderColor(): string; + setCancelButtonBorderColor(value: string): this; + getCancelButtonBackgroundColor(): string; + setCancelButtonBackgroundColor(value: string): this; + getCancelButtonIconColor(): string; + setCancelButtonIconColor(value: string): this; +} +export interface IPositionLineAdapter { + remove(): void; + onClose(callback: () => void): this; + onClose(data: T, callback: (data: T) => void): this; + onModify(callback: () => void): this; + onModify(data: T, callback: (data: T) => void): this; + onReverse(callback: () => void): this; + onReverse(data: T, callback: (data: T) => void): this; + getPrice(): number; + setPrice(value: number): this; + getText(): string; + setText(value: string): this; + getTooltip(): string; + setTooltip(value: string): this; + getQuantity(): string; + setQuantity(value: string): this; + getExtendLeft(): boolean; + setExtendLeft(value: boolean): this; + getLineLength(): number; + setLineLength(value: number): this; + getLineStyle(): number; + setLineStyle(value: number): this; + getLineWidth(): number; + setLineWidth(value: number): this; + getBodyFont(): string; + setBodyFont(value: string): this; + getQuantityFont(): string; + setQuantityFont(value: string): this; + getLineColor(): string; + setLineColor(value: string): this; + getBodyBorderColor(): string; + setBodyBorderColor(value: string): this; + getBodyBackgroundColor(): string; + setBodyBackgroundColor(value: string): this; + getBodyTextColor(): string; + setBodyTextColor(value: string): this; + getQuantityBorderColor(): string; + setQuantityBorderColor(value: string): this; + getQuantityBackgroundColor(): string; + setQuantityBackgroundColor(value: string): this; + getQuantityTextColor(): string; + setQuantityTextColor(value: string): this; + getReverseButtonBorderColor(): string; + setReverseButtonBorderColor(value: string): this; + getReverseButtonBackgroundColor(): string; + setReverseButtonBackgroundColor(value: string): this; + getReverseButtonIconColor(): string; + setReverseButtonIconColor(value: string): this; + getCloseButtonBorderColor(): string; + setCloseButtonBorderColor(value: string): this; + getCloseButtonBackgroundColor(): string; + setCloseButtonBackgroundColor(value: string): this; + getCloseButtonIconColor(): string; + setCloseButtonIconColor(value: string): this; +} +export declare type Direction = 'buy' | 'sell'; +export interface IExecutionLineAdapter { + remove(): void; + getPrice(): number; + setPrice(value: number): this; + getTime(): number; + setTime(value: number): this; + getDirection(): Direction; + setDirection(value: Direction): this; + getText(): string; + setText(value: string): this; + getTooltip(): string; + setTooltip(value: string): this; + getArrowHeight(): number; + setArrowHeight(value: number): this; + getArrowSpacing(): number; + setArrowSpacing(value: number): this; + getFont(): string; + setFont(value: string): this; + getTextColor(): string; + setTextColor(value: string): this; + getArrowColor(): string; + setArrowColor(value: string): this; +} +export declare type StudyInputId = Nominal; +export interface StudyInputInfo { + id: StudyInputId; + name: string; + type: string; + localizedName: string; +} +export interface StudyInputValueItem { + id: StudyInputId; + value: StudyInputValueType; +} +export declare type StudyPriceScale = 'left' | 'right' | 'no-scale' | 'as-series'; +export interface IStudyApi { + isUserEditEnabled(): boolean; + setUserEditEnabled(enabled: boolean): void; + getInputsInfo(): StudyInputInfo[]; + getInputValues(): StudyInputValueItem[]; + setInputValues(values: StudyInputValueItem[]): void; + mergeUp(): void; + mergeDown(): void; + unmergeUp(): void; + unmergeDown(): void; + changePriceScale(newPriceScale: StudyPriceScale): void; + isVisible(): boolean; + setVisible(visible: boolean): void; + bringToFront(): void; + sendToBack(): void; + applyOverrides(overrides: TOverrides): void; +} +export interface TimePoint { + time: number; +} +export interface StickedPoint extends TimePoint { + channel: 'open' | 'high' | 'low' | 'close'; +} +export interface PricedPoint extends TimePoint { + price: number; +} +export declare type ShapePoint = StickedPoint | PricedPoint | TimePoint; +export interface ILineDataSourceApi { + isSelectionEnabled(): boolean; + setSelectionEnabled(enable: boolean): void; + isSavingEnabled(): boolean; + setSavingEnabled(enable: boolean): void; + isShowInObjectsTreeEnabled(): boolean; + setShowInObjectsTreeEnabled(enabled: boolean): void; + isUserEditEnabled(): boolean; + setUserEditEnabled(enabled: boolean): void; + bringToFront(): void; + sendToBack(): void; + getProperties(): object; + setProperties(newProperties: object): void; + getPoints(): PricedPoint[]; + setPoints(points: ShapePoint[]): void; +} +export declare const enum PriceScaleMode { + Normal = 0, + Log = 1, + Percentage = 2, +} +export interface IPriceScaleApi { + getMode(): PriceScaleMode; + setMode(newMode: PriceScaleMode): void; +} +export interface IPaneApi { + hasMainSeries(): boolean; + getLeftPriceScale(): IPriceScaleApi; + getRightPriceScale(): IPriceScaleApi; + getMainSourcePriceScale(): IPriceScaleApi | null; +} +export interface CrossHairMovedEventParams { + time: number; + price: number; +} +export interface VisibleTimeRange { + from: number; + to: number; +} +export interface VisiblePriceRange { + from: number; + to: number; +} +export declare type ChartActionId = 'chartProperties' | 'compareOrAdd' | 'scalesProperties' | 'tmzProperties' | 'paneObjectTree' | 'insertIndicator' | 'symbolSearch' | 'changeInterval' | 'timeScaleReset' | 'chartReset' | 'seriesHide' | 'studyHide' | 'lineToggleLock' | 'lineHide' | 'showLeftAxis' | 'showRightAxis' | 'scaleSeriesOnly' | 'drawingToolbarAction' | 'magnetAction' | 'stayInDrawingModeAction' | 'hideAllDrawingsAction' | 'hideAllMarks' | 'showCountdown' | 'showSeriesLastValue' | 'showSymbolLabelsAction' | 'showStudyLastValue' | 'showStudyPlotNamesAction' | 'undo' | 'redo' | 'paneRemoveAllStudiesDrawingTools'; +export declare const enum SeriesStyle { + Bars = 0, + Candles = 1, + Line = 2, + Area = 3, + HeikenAshi = 8, + HollowCandles = 9, + Renko = 4, + Kagi = 5, + PointAndFigure = 6, + LineBreak = 7, +} +export declare type EntityId = Nominal; +export interface EntityInfo { + id: EntityId; + name: string; +} +export interface CreateStudyOptions { + checkLimit?: boolean; + priceScale?: StudyPriceScale; +} +export interface CreateShapeOptions { + shape?: 'arrow_up' | 'arrow_down' | 'flag' | 'vertical_line' | 'horizontal_line'; + text?: string; + lock?: boolean; + disableSelection?: boolean; + disableSave?: boolean; + disableUndo?: boolean; + overrides?: TOverrides; + zOrder?: 'top' | 'bottom'; + showInObjectsTree?: boolean; +} +export interface CreateStudyTemplateOptions { + saveInterval?: boolean; +} +export interface SymbolExt { + symbol: string; + full_name: string; + exchange: string; + description: string; + type: string; +} +export interface CreateTradingPrimitiveOptions { + disableUndo?: boolean; +} +export interface IChartWidgetApi { + onDataLoaded(): ISubscription<() => void>; + onSymbolChanged(): ISubscription<() => void>; + onIntervalChanged(): ISubscription<(interval: ResolutionString, timeFrameParameters: { + timeframe?: string; + }) => void>; + onVisibleRangeChanged(): ISubscription<() => void>; + dataReady(callback: () => void): boolean; + crossHairMoved(callback: (params: CrossHairMovedEventParams) => void): void; + setVisibleRange(range: VisibleTimeRange, callback: () => void): void; + setSymbol(symbol: string, callback: () => void): void; + setResolution(resolution: ResolutionString, callback: () => void): void; + resetData(): void; + executeActionById(actionId: ChartActionId): void; + getCheckableActionState(actionId: ChartActionId): boolean; + refreshMarks(): void; + clearMarks(): void; + setChartType(type: SeriesStyle): void; + getAllShapes(): EntityInfo[]; + getAllStudies(): EntityInfo[]; + /** + * @deprecated Use shape/study API instead ([getStudyById] / [getShapeById]) + */ + setEntityVisibility(entityId: EntityId, isVisible: boolean): void; + createStudy(name: string, forceOverlay: boolean, lock?: boolean, inputs?: TStudyInputs[], callback?: (entityId: EntityId) => void, overrides?: TOverrides, options?: CreateStudyOptions): EntityId | null; + getStudyById(entityId: EntityId): IStudyApi; + createShape(point: ShapePoint, options: CreateShapeOptions): EntityId | null; + createMultipointShape(points: ShapePoint[], options: CreateShapeOptions): EntityId | null; + getShapeById(entityId: EntityId): ILineDataSourceApi; + removeEntity(entityId: EntityId): void; + removeAllShapes(): void; + removeAllStudies(): void; + createStudyTemplate(options: CreateStudyTemplateOptions): object; + applyStudyTemplate(template: object): void; + createOrderLine(options: CreateTradingPrimitiveOptions): IOrderLineAdapter; + createPositionLine(options: CreateTradingPrimitiveOptions): IPositionLineAdapter; + createExecutionShape(options: CreateTradingPrimitiveOptions): IExecutionLineAdapter; + symbol(): string; + symbolExt(): SymbolExt; + resolution(): ResolutionString; + getVisibleRange(): VisibleTimeRange; + getVisiblePriceRange(): VisiblePriceRange; + priceFormatter(): IFormatter; + chartType(): SeriesStyle; + setTimezone(timezone: 'exchange' | Timezone): void; + getPanes(): IPaneApi[]; +} +export interface WatchListSymbolList extends WatchListSymbolListData { + id: string; +} +export interface WatchListSymbolListData { + symbols: string[]; + title: string; +} +export interface WatchListSymbolListMap { + [listId: string]: WatchListSymbolList; +} +export declare type WatchListSymbolListAddedCallback = (listId: string, symbols: string[]) => void; +export declare type WatchListSymbolListRemovedCallback = (listId: string) => void; +export declare type WatchListSymbolListRenamedCallback = (listId: string, oldName: string, newName: string) => void; +export declare type EditObjectDialogObjectType = 'mainSeries' | 'drawing' | 'study' | 'other'; +export interface EditObjectDialogEventParams { + objectType: EditObjectDialogObjectType; + scriptTitle: string; +} +export interface MouseEventParams { + clientX: number; + clientY: number; + pageX: number; + pageY: number; + screenX: number; + screenY: number; +} +export interface StudyOrDrawingAddedToChartEventParams { + value: string; +} +export declare type EmptyCallback = () => void; +export interface SubscribeEventsMap { + toggle_sidebar: (isHidden: boolean) => void; + indicators_dialog: EmptyCallback; + toggle_header: (isHidden: boolean) => void; + edit_object_dialog: (params: EditObjectDialogEventParams) => void; + chart_load_requested: (savedData: object) => void; + chart_loaded: EmptyCallback; + mouse_down: (params: MouseEventParams) => void; + mouse_up: (params: MouseEventParams) => void; + drawing: (params: StudyOrDrawingAddedToChartEventParams) => void; + study: (params: StudyOrDrawingAddedToChartEventParams) => void; + undo: EmptyCallback; + redo: EmptyCallback; + reset_scales: EmptyCallback; + compare_add: EmptyCallback; + add_compare: EmptyCallback; + 'load_study template': EmptyCallback; + onTick: (tick: Bar) => void; + onAutoSaveNeeded: EmptyCallback; + onScreenshotReady: (url: string) => void; + onMarkClick: (markId: Mark['id']) => void; + onTimescaleMarkClick: (markId: TimescaleMark['id']) => void; + onSelectedLineToolChanged: EmptyCallback; + layout_about_to_be_changed: (newLayoutType: LayoutType) => void; + layout_changed: EmptyCallback; + activeChartChanged: (chartIndex: number) => void; +} +export interface SaveChartToServerOptions { + chartName?: string; + defaultChartName?: string; +} +export interface WatchListApi { + defaultList(): string[]; + getList(id?: string): string[] | null; + getAllLists(): WatchListSymbolListMap | null; + getActiveListId(): string | null; + setList(symbols: string[]): void; + updateList(listId: string, symbols: string[]): void; + renameList(listId: string, newName: string): void; + createList(listName?: string, symbols?: string[]): WatchListSymbolList | null; + saveList(list: WatchListSymbolList): boolean; + deleteList(listId: string): void; + onListChanged(): ISubscription; + onActiveListChanged(): ISubscription; + onListAdded(): ISubscription; + onListRemoved(): ISubscription; + onListRenamed(): ISubscription; +} +export interface GrayedObject { + type: 'drawing' | 'study'; + name: string; +} +export interface ContextMenuItem { + position: 'top' | 'bottom'; + text: string; + click: EmptyCallback; +} +export interface DialogParams { + title: string; + body: string; + callback: CallbackType; +} +export interface SymbolIntervalResult { + symbol: string; + interval: ResolutionString; +} +export interface SaveLoadChartRecord { + id: string; + name: string; + image_url: string; + modified_iso: number; + short_symbol: string; + interval: ResolutionString; +} +export interface CreateButtonOptions { + align: 'right' | 'left'; +} +export interface IChartingLibraryWidget { + onChartReady(callback: EmptyCallback): void; + onGrayedObjectClicked(callback: (obj: GrayedObject) => void): void; + onShortcut(shortCut: string, callback: EmptyCallback): void; + subscribe(event: EventName, callback: SubscribeEventsMap[EventName]): void; + unsubscribe(event: EventName, callback: SubscribeEventsMap[EventName]): void; + chart(index?: number): IChartWidgetApi; + setLanguage(lang: LanguageCode): void; + setSymbol(symbol: string, interval: ResolutionString, callback: EmptyCallback): void; + remove(): void; + closePopupsAndDialogs(): void; + selectLineTool(linetool: SupportedLineTools): void; + selectedLineTool(): SupportedLineTools; + save(callback: (state: object) => void): void; + load(state: object): void; + getSavedCharts(callback: (chartRecords: SaveLoadChartRecord[]) => void): void; + loadChartFromServer(chartRecord: SaveLoadChartRecord): void; + saveChartToServer(onComplete?: EmptyCallback, onFail?: EmptyCallback, saveAsSnapshot?: false, options?: SaveChartToServerOptions): void; + removeChartFromServer(chartId: string, onCompleteCallback: EmptyCallback): void; + onContextMenu(callback: (unixTime: number, price: number) => ContextMenuItem[]): void; + createButton(options?: CreateButtonOptions): JQuery; + showNoticeDialog(params: DialogParams<() => void>): void; + showConfirmDialog(params: DialogParams<(confirmed: boolean) => void>): void; + showLoadChartDialog(): void; + showSaveAsChartDialog(): void; + symbolInterval(): SymbolIntervalResult; + mainSeriesPriceFormatter(): IFormatter; + getIntervals(): string[]; + getStudiesList(): string[]; + addCustomCSSFile(url: string): void; + applyOverrides(overrides: TOverrides): void; + applyStudiesOverrides(overrides: object): void; + watchList(): WatchListApi; + activeChart(): IChartWidgetApi; + chartsCount(): number; + layout(): LayoutType; + setLayout(layout: LayoutType): void; + changeTheme(themeName: ThemeName): void; + takeScreenshot(): void; + lockAllDrawingTools(): IWatchedValue; +} +export interface ChartingLibraryWidgetConstructor { + new (options: ChartingLibraryWidgetOptions | TradingTerminalWidgetOptions): IChartingLibraryWidget; +} +export declare function version(): string; +export declare function onready(callback: () => void): void; +export declare const widget: ChartingLibraryWidgetConstructor; + +export as namespace TradingView; diff --git a/static/chart_main/charting_library.min.js b/static/chart_main/charting_library.min.js new file mode 100644 index 0000000..e29e82f --- /dev/null +++ b/static/chart_main/charting_library.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.TradingView=t.TradingView||{})}(this,function(t){"use strict";function e(t,o){var i=n({},t);for(var s in o)"object"!=typeof t[s]||null===t[s]||Array.isArray(t[s])?void 0!==o[s]&&(i[s]=o[s]):i[s]=e(t[s],o[s]);return i}function o(){return"1.12 (internal id 82ee311d @ 2018-03-01 03:55:41.951080)"}function i(t){window.addEventListener("DOMContentLoaded",t,!1)}var n=Object.assign||function(t){for(var e,o=arguments,i=1,n=arguments.length;i'},t}(),d=a;window.TradingView=window.TradingView||{},window.TradingView.version=o,t.version=o,t.onready=i,t.widget=d,Object.defineProperty(t,"__esModule",{value:!0})}); diff --git a/static/chart_main/datafeed-api.d.ts b/static/chart_main/datafeed-api.d.ts new file mode 100644 index 0000000..072cc76 --- /dev/null +++ b/static/chart_main/datafeed-api.d.ts @@ -0,0 +1,220 @@ +export declare type ResolutionString = string; +export interface Exchange { + value: string; + name: string; + desc: string; +} +export interface DatafeedSymbolType { + name: string; + value: string; +} +export interface DatafeedConfiguration { + exchanges?: Exchange[]; + supported_resolutions?: ResolutionString[]; + supports_marks?: boolean; + supports_time?: boolean; + supports_timescale_marks?: boolean; + symbols_types?: DatafeedSymbolType[]; +} +export declare type OnReadyCallback = (configuration: DatafeedConfiguration) => void; +export interface IExternalDatafeed { + onReady(callback: OnReadyCallback): void; +} +export interface DatafeedQuoteValues { + ch?: number; + chp?: number; + short_name?: string; + exchange?: string; + description?: string; + lp?: number; + ask?: number; + bid?: number; + spread?: number; + open_price?: number; + high_price?: number; + low_price?: number; + prev_close_price?: number; + volume?: number; + original_name?: string; + [valueName: string]: string | number | undefined; +} +export interface QuoteOkData { + s: 'ok'; + n: string; + v: DatafeedQuoteValues; +} +export interface QuoteErrorData { + s: 'error'; + n: string; + v: object; +} +export declare type QuoteData = QuoteOkData | QuoteErrorData; +export declare type QuotesCallback = (data: QuoteData[]) => void; +export interface IDatafeedQuotesApi { + getQuotes(symbols: string[], onDataCallback: QuotesCallback, onErrorCallback: (msg: string) => void): void; + subscribeQuotes(symbols: string[], fastSymbols: string[], onRealtimeCallback: QuotesCallback, listenerGUID: string): void; + unsubscribeQuotes(listenerGUID: string): void; +} +export declare type CustomTimezones = 'America/New_York' | 'America/Los_Angeles' | 'America/Chicago' | 'America/Phoenix' | 'America/Toronto' | 'America/Vancouver' | 'America/Argentina/Buenos_Aires' | 'America/El_Salvador' | 'America/Sao_Paulo' | 'America/Bogota' | 'America/Caracas' | 'Europe/Moscow' | 'Europe/Athens' | 'Europe/Belgrade' | 'Europe/Berlin' | 'Europe/London' | 'Europe/Luxembourg' | 'Europe/Madrid' | 'Europe/Paris' | 'Europe/Rome' | 'Europe/Warsaw' | 'Europe/Istanbul' | 'Europe/Zurich' | 'Australia/Sydney' | 'Australia/Brisbane' | 'Australia/Adelaide' | 'Australia/ACT' | 'Asia/Almaty' | 'Asia/Ashkhabad' | 'Asia/Tokyo' | 'Asia/Taipei' | 'Asia/Singapore' | 'Asia/Shanghai' | 'Asia/Seoul' | 'Asia/Tehran' | 'Asia/Dubai' | 'Asia/Kolkata' | 'Asia/Hong_Kong' | 'Asia/Bangkok' | 'Asia/Chongqing' | 'Asia/Jerusalem' | 'Asia/Kuwait' | 'Asia/Muscat' | 'Asia/Qatar' | 'Asia/Riyadh' | 'Pacific/Auckland' | 'Pacific/Chatham' | 'Pacific/Fakaofo' | 'Pacific/Honolulu' | 'America/Mexico_City' | 'Africa/Cairo' | 'Africa/Johannesburg' | 'Asia/Kathmandu' | 'US/Mountain'; +export declare type Timezone = 'Etc/UTC' | CustomTimezones; +export interface LibrarySymbolInfo { + /** + * Symbol Name + */ + name: string; + full_name: string; + base_name?: [string]; + /** + * Unique symbol id + */ + ticker?: string; + description: string; + type: string; + /** + * @example "1700-0200" + */ + session: string; + /** + * Traded exchange + * @example "NYSE" + */ + exchange: string; + listed_exchange: string; + timezone: Timezone; + /** + * Code (Tick) + * @example 8/16/.../256 (1/8/100 1/16/100 ... 1/256/100) or 1/10/.../10000000 (1 0.1 ... 0.0000001) + */ + pricescale: number; + /** + * The number of units that make up one tick. + * @example For example, U.S. equities are quotes in decimals, and tick in decimals, and can go up +/- .01. So the tick increment is 1. But the e-mini S&P futures contract, though quoted in decimals, goes up in .25 increments, so the tick increment is 25. (see also Tick Size) + */ + minmov: number; + fractional?: boolean; + /** + * @example Quarters of 1/32: pricescale=128, minmovement=1, minmovement2=4 + */ + minmove2?: number; + /** + * false if DWM only + */ + has_intraday?: boolean; + /** + * An array of resolutions which should be enabled in resolutions picker for this symbol. + */ + supported_resolutions: ResolutionString[]; + /** + * @example (for ex.: "1,5,60") - only these resolutions will be requested, all others will be built using them if possible + */ + intraday_multipliers?: string[]; + has_seconds?: boolean; + /** + * It is an array containing seconds resolutions (in seconds without a postfix) the datafeed builds by itself. + */ + seconds_multipliers?: string[]; + has_daily?: boolean; + has_weekly_and_monthly?: boolean; + has_empty_bars?: boolean; + force_session_rebuild?: boolean; + has_no_volume?: boolean; + /** + * Integer showing typical volume value decimal places for this symbol + */ + volume_precision?: number; + data_status?: 'streaming' | 'endofday' | 'pulsed' | 'delayed_streaming'; + /** + * Boolean showing whether this symbol is expired futures contract or not. + */ + expired?: boolean; + /** + * Unix timestamp of expiration date. + */ + expiration_date?: number; + sector?: string; + industry?: string; + currency_code?: string; +} +export interface DOMLevel { + price: number; + volume: number; +} +export interface DOMData { + snapshot: boolean; + asks: DOMLevel[]; + bids: DOMLevel[]; +} +export interface Bar { + time: number; + open: number; + high: number; + low: number; + close: number; + volume?: number; +} +export interface SearchSymbolResultItem { + symbol: string; + full_name: string; + description: string; + exchange: string; + ticker: string; + type: string; +} +export interface HistoryMetadata { + noData: boolean; + nextTime?: number | null; +} +export interface MarkCustomColor { + color: string; + background: string; +} +export declare type MarkConstColors = 'red' | 'green' | 'blue' | 'yellow'; +export interface Mark { + id: string | number; + time: number; + color: MarkConstColors | MarkCustomColor; + text: string; + label: string; + labelFontColor: string; + minSize: number; +} +export interface TimescaleMark { + id: string | number; + time: number; + color: MarkConstColors | string; + label: string; + tooltip: string[]; +} +export declare type ResolutionBackValues = 'D' | 'M'; +export interface HistoryDepth { + resolutionBack: ResolutionBackValues; + intervalBack: number; +} +export declare type SearchSymbolsCallback = (items: SearchSymbolResultItem[]) => void; +export declare type ResolveCallback = (symbolInfo: LibrarySymbolInfo) => void; +export declare type HistoryCallback = (bars: Bar[], meta: HistoryMetadata) => void; +export declare type SubscribeBarsCallback = (bar: Bar) => void; +export declare type GetMarksCallback = (marks: T[]) => void; +export declare type ServerTimeCallback = (serverTime: number) => void; +export declare type DomeCallback = (data: DOMData) => void; +export declare type ErrorCallback = (reason: string) => void; +export interface IDatafeedChartApi { + calculateHistoryDepth?(resolution: ResolutionString, resolutionBack: ResolutionBackValues, intervalBack: number): HistoryDepth | undefined; + getMarks?(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; + getTimescaleMarks?(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; + /** + * This function is called if configuration flag supports_time is set to true when chart needs to know the server time. + * The charting library expects callback to be called once. + * The time is provided without milliseconds. Example: 1445324591. It is used to display Countdown on the price scale. + */ + getServerTime?(callback: ServerTimeCallback): void; + searchSymbols(userInput: string, exchange: string, symbolType: string, onResult: SearchSymbolsCallback): void; + resolveSymbol(symbolName: string, onResolve: ResolveCallback, onError: ErrorCallback): void; + getBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, rangeStartDate: number, rangeEndDate: number, onResult: HistoryCallback, onError: ErrorCallback, isFirstCall: boolean): void; + subscribeBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, onTick: SubscribeBarsCallback, listenerGuid: string, onResetCacheNeededCallback: () => void): void; + unsubscribeBars(listenerGuid: string): void; + subscribeDepth?(symbolInfo: LibrarySymbolInfo, callback: DomeCallback): string; + unsubscribeDepth?(subscriberUID: string): void; +} + +export as namespace TradingView; diff --git a/static/chart_main/huobi.js b/static/chart_main/huobi.js new file mode 100644 index 0000000..ada6e7b --- /dev/null +++ b/static/chart_main/huobi.js @@ -0,0 +1,19553 @@ +!function (t) { + function e(n) { + if (r[n]) return r[n].exports; + var i = r[n] = {i: n, l: !1, exports: {}}; + return t[n].call(i.exports, i, i.exports, e), i.l = !0, i.exports + } + + var n = window.webpackJsonp; + window.webpackJsonp = function (r, a, o) { + for (var s, l, u, c = 0, f = []; c < r.length; c++) l = r[c], i[l] && f.push(i[l][0]), i[l] = 0; + for (s in a) Object.prototype.hasOwnProperty.call(a, s) && (t[s] = a[s]); + for (n && n(r, a, o); f.length;) f.shift()(); + if (o) for (c = 0; c < o.length; c++) u = e(e.s = o[c]); + return u + }; + var r = {}, i = {76: 0}; + e.e = function (t) { + function n() { + s.onerror = s.onload = null, clearTimeout(l); + var e = i[t]; + 0 !== e && (e && e[1](new Error("Loading chunk " + t + " failed.")), i[t] = void 0) + } + + var r = i[t]; + if (0 === r) return new Promise(function (t) { + t() + }); + if (r) return r[2]; + var a = new Promise(function (e, n) { + r = i[t] = [e, n] + }); + r[2] = a; + var o = document.getElementsByTagName("head")[0], s = document.createElement("script"); + s.type = "text/javascript", s.charset = "utf-8", s.async = !0, s.timeout = 12e4, e.nc && s.setAttribute("nonce", e.nc), s.src = e.p + "assets/scripts/" + t + "_" + { + 0: "997bbf9f", + 1: "34a46847", + 2: "298900da", + 3: "452813bb", + 4: "2828ea33", + 5: "1de5df60", + 6: "ee164123", + 7: "7bdc835f", + 8: "92ef6b32", + 9: "b7986e82", + 10: "1f94aca6", + 11: "8888d94e", + 12: "0a7dbedb", + 13: "c235f57d", + 14: "8c05e09d", + 15: "d5ec3e9e", + 16: "7290b915", + 17: "ec0dbd0b", + 18: "3e0d36cd", + 19: "8a21ec78", + 20: "9acd1d24", + 21: "6ddf4f8b", + 22: "f661b36b", + 23: "e7f9dab5", + 24: "8e6f24eb", + 25: "8b320d59", + 26: "7aedda47", + 27: "e77726f9", + 28: "a36e2569", + 29: "6a3de57f", + 30: "6931692c", + 31: "af5713b6", + 32: "6a037020", + 33: "fb614388", + 34: "d0961311", + 35: "95959014", + 36: "f8531011", + 37: "f55d7ba0", + 38: "41450df7", + 39: "9e90aba5", + 40: "c2bb5087", + 41: "50b00f7e", + 42: "f7855b14", + 43: "4d1e8251", + 44: "e9c81872", + 45: "2fabe9a8", + 46: "9cf2941e", + 47: "53d25c99", + 48: "4bdbe16f", + 49: "c8e23fce", + 50: "4b1b6d1a", + 51: "776782cb", + 52: "ee81a843", + 53: "740c6940", + 54: "02c9b4a6", + 55: "a6b97ab6", + 56: "deec9f6a", + 57: "d206f93e", + 58: "54cde00e", + 59: "f04f64fc", + 60: "32a88d54", + 61: "4a88622a", + 62: "50372790", + 63: "438c9548", + 64: "78fa0dbd", + 65: "1369163f", + 66: "221a5002", + 67: "3ecd6ca8", + 68: "85d72229", + 69: "3d48baf4", + 70: "6421babe", + 71: "733aa5f6", + 72: "f5b61b34", + 73: "a0b74537", + 74: "58f0c200", + 75: "61a755e9" + }[t] + ".js"; + var l = setTimeout(n, 12e4); + return s.onerror = s.onload = n, o.appendChild(s), a + }, e.m = t, e.c = r, e.i = function (t) { + return t + }, e.d = function (t, n, r) { + e.o(t, n) || Object.defineProperty(t, n, {configurable: !1, enumerable: !0, get: r}) + }, e.n = function (t) { + var n = t && t.__esModule ? function () { + return t.default + } : function () { + return t + }; + return e.d(n, "a", n), n + }, e.o = function (t, e) { + return Object.prototype.hasOwnProperty.call(t, e) + }, e.p = "/", e.oe = function (t) { + throw console.error(t), t + } +}([, , , , , , , function (t, e, n) { + "use strict"; + e.__esModule = !0; + var r = n(74), i = function (t) { + return t && t.__esModule ? t : {default: t} + }(r); + e.default = function (t) { + return function () { + var e = t.apply(this, arguments); + return new i.default(function (t, n) { + function r(a, o) { + try { + var s = e[a](o), l = s.value + } catch (t) { + return void n(t) + } + if (!s.done) return i.default.resolve(l).then(function (t) { + r("next", t) + }, function (t) { + r("throw", t) + }); + t(l) + } + + return r("next") + }) + } + } +}, function (t, e, n) { + t.exports = n(483) +}, , , , , , function (t, e, n) { + t.exports = {default: n(500), __esModule: !0} +}, , , , function (t, e, n) { + "use strict"; + + function r(t) { + return t && t.__esModule ? t : {default: t} + } + + e.__esModule = !0; + var i = n(479), a = r(i), o = n(478), s = r(o), + l = "function" == typeof s.default && "symbol" == typeof a.default ? function (t) { + return typeof t + } : function (t) { + return t && "function" == typeof s.default && t.constructor === s.default && t !== s.default.prototype ? "symbol" : typeof t + }; + e.default = "function" == typeof s.default && "symbol" === l(a.default) ? function (t) { + return void 0 === t ? "undefined" : l(t) + } : function (t) { + return t && "function" == typeof s.default && t.constructor === s.default && t !== s.default.prototype ? "symbol" : void 0 === t ? "undefined" : l(t) + } +}, , , , , function (t, e, n) { + t.exports = n(435) +}, , , , function (t, e, n) { + "use strict"; + e.__esModule = !0; + var r = n(73), i = function (t) { + return t && t.__esModule ? t : {default: t} + }(r); + e.default = i.default || function (t) { + for (var e = 1; e < arguments.length; e++) { + var n = arguments[e]; + for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (t[r] = n[r]) + } + return t + } +}, function (t, e, n) { + t.exports = {default: n(507), __esModule: !0} +}, , , , , , , , function (t, e, n) { + var r = n(79), i = n(113), a = n(99), o = n(100), s = n(107), l = function (t, e, n) { + var u, c, f, h, d = t & l.F, p = t & l.G, v = t & l.S, g = t & l.P, m = t & l.B, + _ = p ? r : v ? r[e] || (r[e] = {}) : (r[e] || {}).prototype, y = p ? i : i[e] || (i[e] = {}), + b = y.prototype || (y.prototype = {}); + p && (n = e); + for (u in n) c = !d && _ && void 0 !== _[u], f = (c ? _ : n)[u], h = m && c ? s(f, r) : g && "function" == typeof f ? s(Function.call, f) : f, _ && o(_, u, f, t & l.U), y[u] != f && a(y, u, h), g && b[u] != f && (b[u] = f) + }; + r.core = i, l.F = 1, l.G = 2, l.S = 4, l.P = 8, l.B = 16, l.W = 32, l.U = 64, l.R = 128, t.exports = l +}, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , function (t, e, n) { + !function () { + var e = n(756), r = n(296).utf8, i = n(346), a = n(296).bin, o = function (t, n) { + t.constructor == String ? t = n && "binary" === n.encoding ? a.stringToBytes(t) : r.stringToBytes(t) : i(t) ? t = Array.prototype.slice.call(t, 0) : Array.isArray(t) || (t = t.toString()); + for (var s = e.bytesToWords(t), l = 8 * t.length, u = 1732584193, c = -271733879, f = -1732584194, h = 271733878, d = 0; d < s.length; d++) s[d] = 16711935 & (s[d] << 8 | s[d] >>> 24) | 4278255360 & (s[d] << 24 | s[d] >>> 8); + s[l >>> 5] |= 128 << l % 32, s[14 + (l + 64 >>> 9 << 4)] = l; + for (var p = o._ff, v = o._gg, g = o._hh, m = o._ii, d = 0; d < s.length; d += 16) { + var _ = u, y = c, b = f, w = h; + u = p(u, c, f, h, s[d + 0], 7, -680876936), h = p(h, u, c, f, s[d + 1], 12, -389564586), f = p(f, h, u, c, s[d + 2], 17, 606105819), c = p(c, f, h, u, s[d + 3], 22, -1044525330), u = p(u, c, f, h, s[d + 4], 7, -176418897), h = p(h, u, c, f, s[d + 5], 12, 1200080426), f = p(f, h, u, c, s[d + 6], 17, -1473231341), c = p(c, f, h, u, s[d + 7], 22, -45705983), u = p(u, c, f, h, s[d + 8], 7, 1770035416), h = p(h, u, c, f, s[d + 9], 12, -1958414417), f = p(f, h, u, c, s[d + 10], 17, -42063), c = p(c, f, h, u, s[d + 11], 22, -1990404162), u = p(u, c, f, h, s[d + 12], 7, 1804603682), h = p(h, u, c, f, s[d + 13], 12, -40341101), f = p(f, h, u, c, s[d + 14], 17, -1502002290), c = p(c, f, h, u, s[d + 15], 22, 1236535329), u = v(u, c, f, h, s[d + 1], 5, -165796510), h = v(h, u, c, f, s[d + 6], 9, -1069501632), f = v(f, h, u, c, s[d + 11], 14, 643717713), c = v(c, f, h, u, s[d + 0], 20, -373897302), u = v(u, c, f, h, s[d + 5], 5, -701558691), h = v(h, u, c, f, s[d + 10], 9, 38016083), f = v(f, h, u, c, s[d + 15], 14, -660478335), c = v(c, f, h, u, s[d + 4], 20, -405537848), u = v(u, c, f, h, s[d + 9], 5, 568446438), h = v(h, u, c, f, s[d + 14], 9, -1019803690), f = v(f, h, u, c, s[d + 3], 14, -187363961), c = v(c, f, h, u, s[d + 8], 20, 1163531501), u = v(u, c, f, h, s[d + 13], 5, -1444681467), h = v(h, u, c, f, s[d + 2], 9, -51403784), f = v(f, h, u, c, s[d + 7], 14, 1735328473), c = v(c, f, h, u, s[d + 12], 20, -1926607734), u = g(u, c, f, h, s[d + 5], 4, -378558), h = g(h, u, c, f, s[d + 8], 11, -2022574463), f = g(f, h, u, c, s[d + 11], 16, 1839030562), c = g(c, f, h, u, s[d + 14], 23, -35309556), u = g(u, c, f, h, s[d + 1], 4, -1530992060), h = g(h, u, c, f, s[d + 4], 11, 1272893353), f = g(f, h, u, c, s[d + 7], 16, -155497632), c = g(c, f, h, u, s[d + 10], 23, -1094730640), u = g(u, c, f, h, s[d + 13], 4, 681279174), h = g(h, u, c, f, s[d + 0], 11, -358537222), f = g(f, h, u, c, s[d + 3], 16, -722521979), c = g(c, f, h, u, s[d + 6], 23, 76029189), u = g(u, c, f, h, s[d + 9], 4, -640364487), h = g(h, u, c, f, s[d + 12], 11, -421815835), f = g(f, h, u, c, s[d + 15], 16, 530742520), c = g(c, f, h, u, s[d + 2], 23, -995338651), u = m(u, c, f, h, s[d + 0], 6, -198630844), h = m(h, u, c, f, s[d + 7], 10, 1126891415), f = m(f, h, u, c, s[d + 14], 15, -1416354905), c = m(c, f, h, u, s[d + 5], 21, -57434055), u = m(u, c, f, h, s[d + 12], 6, 1700485571), h = m(h, u, c, f, s[d + 3], 10, -1894986606), f = m(f, h, u, c, s[d + 10], 15, -1051523), c = m(c, f, h, u, s[d + 1], 21, -2054922799), u = m(u, c, f, h, s[d + 8], 6, 1873313359), h = m(h, u, c, f, s[d + 15], 10, -30611744), f = m(f, h, u, c, s[d + 6], 15, -1560198380), c = m(c, f, h, u, s[d + 13], 21, 1309151649), u = m(u, c, f, h, s[d + 4], 6, -145523070), h = m(h, u, c, f, s[d + 11], 10, -1120210379), f = m(f, h, u, c, s[d + 2], 15, 718787259), c = m(c, f, h, u, s[d + 9], 21, -343485551), u = u + _ >>> 0, c = c + y >>> 0, f = f + b >>> 0, h = h + w >>> 0 + } + return e.endian([u, c, f, h]) + }; + o._ff = function (t, e, n, r, i, a, o) { + var s = t + (e & n | ~e & r) + (i >>> 0) + o; + return (s << a | s >>> 32 - a) + e + }, o._gg = function (t, e, n, r, i, a, o) { + var s = t + (e & r | n & ~r) + (i >>> 0) + o; + return (s << a | s >>> 32 - a) + e + }, o._hh = function (t, e, n, r, i, a, o) { + var s = t + (e ^ n ^ r) + (i >>> 0) + o; + return (s << a | s >>> 32 - a) + e + }, o._ii = function (t, e, n, r, i, a, o) { + var s = t + (n ^ (e | ~r)) + (i >>> 0) + o; + return (s << a | s >>> 32 - a) + e + }, o._blocksize = 16, o._digestsize = 16, t.exports = function (t, n) { + if (void 0 === t || null === t) throw new Error("Illegal argument " + t); + var r = e.wordsToBytes(o(t, n)); + return n && n.asBytes ? r : n && n.asString ? a.bytesToString(r) : e.bytesToHex(r) + } + }() +}, function (t, e, n) { + t.exports = {default: n(502), __esModule: !0} +}, function (t, e, n) { + t.exports = {default: n(510), __esModule: !0} +}, function (t, e, n) { + t.exports = {default: n(509), __esModule: !0} +}, function (t, e, n) { + "use strict"; + (function (t) { + function e(t, e, n) { + t[e] || Object[r](t, e, {writable: !0, configurable: !0, value: n}) + } + + if (n(755), n(830), n(496), t._babelPolyfill) throw new Error("only one instance of babel-polyfill is allowed"); + t._babelPolyfill = !0; + var r = "defineProperty"; + e(String.prototype, "padLeft", "".padStart), e(String.prototype, "padRight", "".padEnd), "pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill".split(",").forEach(function (t) { + [][t] && e(Array, t, Function.call.bind([][t])) + }) + }).call(e, n(124)) +}, function (t, e, n) { + t.exports = {default: n(501), __esModule: !0} +}, function (t, e, n) { + var r = n(82); + t.exports = function (t) { + if (!r(t)) throw TypeError(t + " is not an object!"); + return t + } +}, function (t, e) { + var n = t.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")(); + "number" == typeof __g && (__g = n) +}, , function (t, e) { + t.exports = function (t) { + try { + return !!t() + } catch (t) { + return !0 + } + } +}, function (t, e) { + t.exports = function (t) { + return "object" == typeof t ? null !== t : "function" == typeof t + } +}, , function (t, e, n) { + var r = n(211)("wks"), i = n(151), a = n(79).Symbol, o = "function" == typeof a; + (t.exports = function (t) { + return r[t] || (r[t] = o && a[t] || (o ? a : i)("Symbol." + t)) + }).store = r +}, function (t, e) { + var n = t.exports = {version: "2.5.0"}; + "number" == typeof __e && (__e = n) +}, function (t, e, n) { + t.exports = !n(81)(function () { + return 7 != Object.defineProperty({}, "a", { + get: function () { + return 7 + } + }).a + }) +}, function (t, e, n) { + var r = n(78), i = n(322), a = n(117), o = Object.defineProperty; + e.f = n(86) ? Object.defineProperty : function (t, e, n) { + if (r(t), e = a(e, !0), r(n), i) try { + return o(t, e, n) + } catch (t) { + } + if ("get" in n || "set" in n) throw TypeError("Accessors not supported!"); + return "value" in n && (t[e] = n.value), t + } +}, function (t, e, n) { + var r = n(116), i = Math.min; + t.exports = function (t) { + return t > 0 ? i(r(t), 9007199254740991) : 0 + } +}, function (t, e, n) { + var r = n(114); + t.exports = function (t) { + return Object(r(t)) + } +}, function (t, e) { + t.exports = function (t) { + if ("function" != typeof t) throw TypeError(t + " is not a function!"); + return t + } +}, , , , function (t, e, n) { + var r = n(236)("wks"), i = n(197), a = n(97).Symbol, o = "function" == typeof a; + (t.exports = function (t) { + return r[t] || (r[t] = o && a[t] || (o ? a : i)("Symbol." + t)) + }).store = r +}, function (t, e, n) { + "use strict"; + (function (t) { + function r() { + return a.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823 + } + + function i(t, e) { + if (r() < e) throw new RangeError("Invalid typed array length"); + return a.TYPED_ARRAY_SUPPORT ? (t = new Uint8Array(e), t.__proto__ = a.prototype) : (null === t && (t = new a(e)), t.length = e), t + } + + function a(t, e, n) { + if (!(a.TYPED_ARRAY_SUPPORT || this instanceof a)) return new a(t, e, n); + if ("number" == typeof t) { + if ("string" == typeof e) throw new Error("If encoding is specified then the first argument must be a string"); + return u(this, t) + } + return o(this, t, e, n) + } + + function o(t, e, n, r) { + if ("number" == typeof e) throw new TypeError('"value" argument must not be a number'); + return "undefined" != typeof ArrayBuffer && e instanceof ArrayBuffer ? h(t, e, n, r) : "string" == typeof e ? c(t, e, n) : d(t, e) + } + + function s(t) { + if ("number" != typeof t) throw new TypeError('"size" argument must be a number'); + if (t < 0) throw new RangeError('"size" argument must not be negative') + } + + function l(t, e, n, r) { + return s(e), e <= 0 ? i(t, e) : void 0 !== n ? "string" == typeof r ? i(t, e).fill(n, r) : i(t, e).fill(n) : i(t, e) + } + + function u(t, e) { + if (s(e), t = i(t, e < 0 ? 0 : 0 | p(e)), !a.TYPED_ARRAY_SUPPORT) for (var n = 0; n < e; ++n) t[n] = 0; + return t + } + + function c(t, e, n) { + if ("string" == typeof n && "" !== n || (n = "utf8"), !a.isEncoding(n)) throw new TypeError('"encoding" must be a valid string encoding'); + var r = 0 | g(e, n); + t = i(t, r); + var o = t.write(e, n); + return o !== r && (t = t.slice(0, o)), t + } + + function f(t, e) { + var n = e.length < 0 ? 0 : 0 | p(e.length); + t = i(t, n); + for (var r = 0; r < n; r += 1) t[r] = 255 & e[r]; + return t + } + + function h(t, e, n, r) { + if (e.byteLength, n < 0 || e.byteLength < n) throw new RangeError("'offset' is out of bounds"); + if (e.byteLength < n + (r || 0)) throw new RangeError("'length' is out of bounds"); + return e = void 0 === n && void 0 === r ? new Uint8Array(e) : void 0 === r ? new Uint8Array(e, n) : new Uint8Array(e, n, r), a.TYPED_ARRAY_SUPPORT ? (t = e, t.__proto__ = a.prototype) : t = f(t, e), t + } + + function d(t, e) { + if (a.isBuffer(e)) { + var n = 0 | p(e.length); + return t = i(t, n), 0 === t.length ? t : (e.copy(t, 0, 0, n), t) + } + if (e) { + if ("undefined" != typeof ArrayBuffer && e.buffer instanceof ArrayBuffer || "length" in e) return "number" != typeof e.length || Y(e.length) ? i(t, 0) : f(t, e); + if ("Buffer" === e.type && J(e.data)) return f(t, e.data) + } + throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.") + } + + function p(t) { + if (t >= r()) throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + r().toString(16) + " bytes"); + return 0 | t + } + + function v(t) { + return +t != t && (t = 0), a.alloc(+t) + } + + function g(t, e) { + if (a.isBuffer(t)) return t.length; + if ("undefined" != typeof ArrayBuffer && "function" == typeof ArrayBuffer.isView && (ArrayBuffer.isView(t) || t instanceof ArrayBuffer)) return t.byteLength; + "string" != typeof t && (t = "" + t); + var n = t.length; + if (0 === n) return 0; + for (var r = !1; ;) switch (e) { + case"ascii": + case"latin1": + case"binary": + return n; + case"utf8": + case"utf-8": + case void 0: + return W(t).length; + case"ucs2": + case"ucs-2": + case"utf16le": + case"utf-16le": + return 2 * n; + case"hex": + return n >>> 1; + case"base64": + return $(t).length; + default: + if (r) return W(t).length; + e = ("" + e).toLowerCase(), r = !0 + } + } + + function m(t, e, n) { + var r = !1; + if ((void 0 === e || e < 0) && (e = 0), e > this.length) return ""; + if ((void 0 === n || n > this.length) && (n = this.length), n <= 0) return ""; + if (n >>>= 0, e >>>= 0, n <= e) return ""; + for (t || (t = "utf8"); ;) switch (t) { + case"hex": + return O(this, e, n); + case"utf8": + case"utf-8": + return M(this, e, n); + case"ascii": + return P(this, e, n); + case"latin1": + case"binary": + return L(this, e, n); + case"base64": + return C(this, e, n); + case"ucs2": + case"ucs-2": + case"utf16le": + case"utf-16le": + return R(this, e, n); + default: + if (r) throw new TypeError("Unknown encoding: " + t); + t = (t + "").toLowerCase(), r = !0 + } + } + + function _(t, e, n) { + var r = t[e]; + t[e] = t[n], t[n] = r + } + + function y(t, e, n, r, i) { + if (0 === t.length) return -1; + if ("string" == typeof n ? (r = n, n = 0) : n > 2147483647 ? n = 2147483647 : n < -2147483648 && (n = -2147483648), n = +n, isNaN(n) && (n = i ? 0 : t.length - 1), n < 0 && (n = t.length + n), n >= t.length) { + if (i) return -1; + n = t.length - 1 + } else if (n < 0) { + if (!i) return -1; + n = 0 + } + if ("string" == typeof e && (e = a.from(e, r)), a.isBuffer(e)) return 0 === e.length ? -1 : b(t, e, n, r, i); + if ("number" == typeof e) return e &= 255, a.TYPED_ARRAY_SUPPORT && "function" == typeof Uint8Array.prototype.indexOf ? i ? Uint8Array.prototype.indexOf.call(t, e, n) : Uint8Array.prototype.lastIndexOf.call(t, e, n) : b(t, [e], n, r, i); + throw new TypeError("val must be string, number or Buffer") + } + + function b(t, e, n, r, i) { + function a(t, e) { + return 1 === o ? t[e] : t.readUInt16BE(e * o) + } + + var o = 1, s = t.length, l = e.length; + if (void 0 !== r && ("ucs2" === (r = String(r).toLowerCase()) || "ucs-2" === r || "utf16le" === r || "utf-16le" === r)) { + if (t.length < 2 || e.length < 2) return -1; + o = 2, s /= 2, l /= 2, n /= 2 + } + var u; + if (i) { + var c = -1; + for (u = n; u < s; u++) if (a(t, u) === a(e, -1 === c ? 0 : u - c)) { + if (-1 === c && (c = u), u - c + 1 === l) return c * o + } else -1 !== c && (u -= u - c), c = -1 + } else for (n + l > s && (n = s - l), u = n; u >= 0; u--) { + for (var f = !0, h = 0; h < l; h++) if (a(t, u + h) !== a(e, h)) { + f = !1; + break + } + if (f) return u + } + return -1 + } + + function w(t, e, n, r) { + n = Number(n) || 0; + var i = t.length - n; + r ? (r = Number(r)) > i && (r = i) : r = i; + var a = e.length; + if (a % 2 != 0) throw new TypeError("Invalid hex string"); + r > a / 2 && (r = a / 2); + for (var o = 0; o < r; ++o) { + var s = parseInt(e.substr(2 * o, 2), 16); + if (isNaN(s)) return o; + t[n + o] = s + } + return o + } + + function x(t, e, n, r) { + return X(W(e, t.length - n), t, n, r) + } + + function S(t, e, n, r) { + return X(V(e), t, n, r) + } + + function E(t, e, n, r) { + return S(t, e, n, r) + } + + function k(t, e, n, r) { + return X($(e), t, n, r) + } + + function T(t, e, n, r) { + return X(Z(e, t.length - n), t, n, r) + } + + function C(t, e, n) { + return 0 === e && n === t.length ? K.fromByteArray(t) : K.fromByteArray(t.slice(e, n)) + } + + function M(t, e, n) { + n = Math.min(t.length, n); + for (var r = [], i = e; i < n;) { + var a = t[i], o = null, s = a > 239 ? 4 : a > 223 ? 3 : a > 191 ? 2 : 1; + if (i + s <= n) { + var l, u, c, f; + switch (s) { + case 1: + a < 128 && (o = a); + break; + case 2: + l = t[i + 1], 128 == (192 & l) && (f = (31 & a) << 6 | 63 & l) > 127 && (o = f); + break; + case 3: + l = t[i + 1], u = t[i + 2], 128 == (192 & l) && 128 == (192 & u) && (f = (15 & a) << 12 | (63 & l) << 6 | 63 & u) > 2047 && (f < 55296 || f > 57343) && (o = f); + break; + case 4: + l = t[i + 1], u = t[i + 2], c = t[i + 3], 128 == (192 & l) && 128 == (192 & u) && 128 == (192 & c) && (f = (15 & a) << 18 | (63 & l) << 12 | (63 & u) << 6 | 63 & c) > 65535 && f < 1114112 && (o = f) + } + } + null === o ? (o = 65533, s = 1) : o > 65535 && (o -= 65536, r.push(o >>> 10 & 1023 | 55296), o = 56320 | 1023 & o), r.push(o), i += s + } + return A(r) + } + + function A(t) { + var e = t.length; + if (e <= Q) return String.fromCharCode.apply(String, t); + for (var n = "", r = 0; r < e;) n += String.fromCharCode.apply(String, t.slice(r, r += Q)); + return n + } + + function P(t, e, n) { + var r = ""; + n = Math.min(t.length, n); + for (var i = e; i < n; ++i) r += String.fromCharCode(127 & t[i]); + return r + } + + function L(t, e, n) { + var r = ""; + n = Math.min(t.length, n); + for (var i = e; i < n; ++i) r += String.fromCharCode(t[i]); + return r + } + + function O(t, e, n) { + var r = t.length; + (!e || e < 0) && (e = 0), (!n || n < 0 || n > r) && (n = r); + for (var i = "", a = e; a < n; ++a) i += G(t[a]); + return i + } + + function R(t, e, n) { + for (var r = t.slice(e, n), i = "", a = 0; a < r.length; a += 2) i += String.fromCharCode(r[a] + 256 * r[a + 1]); + return i + } + + function I(t, e, n) { + if (t % 1 != 0 || t < 0) throw new RangeError("offset is not uint"); + if (t + e > n) throw new RangeError("Trying to access beyond buffer length") + } + + function B(t, e, n, r, i, o) { + if (!a.isBuffer(t)) throw new TypeError('"buffer" argument must be a Buffer instance'); + if (e > i || e < o) throw new RangeError('"value" argument is out of bounds'); + if (n + r > t.length) throw new RangeError("Index out of range") + } + + function z(t, e, n, r) { + e < 0 && (e = 65535 + e + 1); + for (var i = 0, a = Math.min(t.length - n, 2); i < a; ++i) t[n + i] = (e & 255 << 8 * (r ? i : 1 - i)) >>> 8 * (r ? i : 1 - i) + } + + function F(t, e, n, r) { + e < 0 && (e = 4294967295 + e + 1); + for (var i = 0, a = Math.min(t.length - n, 4); i < a; ++i) t[n + i] = e >>> 8 * (r ? i : 3 - i) & 255 + } + + function N(t, e, n, r, i, a) { + if (n + r > t.length) throw new RangeError("Index out of range"); + if (n < 0) throw new RangeError("Index out of range") + } + + function D(t, e, n, r, i) { + return i || N(t, e, n, 4, 3.4028234663852886e38, -3.4028234663852886e38), q.write(t, e, n, r, 23, 4), n + 4 + } + + function j(t, e, n, r, i) { + return i || N(t, e, n, 8, 1.7976931348623157e308, -1.7976931348623157e308), q.write(t, e, n, r, 52, 8), n + 8 + } + + function U(t) { + if (t = H(t).replace(tt, ""), t.length < 2) return ""; + for (; t.length % 4 != 0;) t += "="; + return t + } + + function H(t) { + return t.trim ? t.trim() : t.replace(/^\s+|\s+$/g, "") + } + + function G(t) { + return t < 16 ? "0" + t.toString(16) : t.toString(16) + } + + function W(t, e) { + e = e || 1 / 0; + for (var n, r = t.length, i = null, a = [], o = 0; o < r; ++o) { + if ((n = t.charCodeAt(o)) > 55295 && n < 57344) { + if (!i) { + if (n > 56319) { + (e -= 3) > -1 && a.push(239, 191, 189); + continue + } + if (o + 1 === r) { + (e -= 3) > -1 && a.push(239, 191, 189); + continue + } + i = n; + continue + } + if (n < 56320) { + (e -= 3) > -1 && a.push(239, 191, 189), i = n; + continue + } + n = 65536 + (i - 55296 << 10 | n - 56320) + } else i && (e -= 3) > -1 && a.push(239, 191, 189); + if (i = null, n < 128) { + if ((e -= 1) < 0) break; + a.push(n) + } else if (n < 2048) { + if ((e -= 2) < 0) break; + a.push(n >> 6 | 192, 63 & n | 128) + } else if (n < 65536) { + if ((e -= 3) < 0) break; + a.push(n >> 12 | 224, n >> 6 & 63 | 128, 63 & n | 128) + } else { + if (!(n < 1114112)) throw new Error("Invalid code point"); + if ((e -= 4) < 0) break; + a.push(n >> 18 | 240, n >> 12 & 63 | 128, n >> 6 & 63 | 128, 63 & n | 128) + } + } + return a + } + + function V(t) { + for (var e = [], n = 0; n < t.length; ++n) e.push(255 & t.charCodeAt(n)); + return e + } + + function Z(t, e) { + for (var n, r, i, a = [], o = 0; o < t.length && !((e -= 2) < 0); ++o) n = t.charCodeAt(o), r = n >> 8, i = n % 256, a.push(i), a.push(r); + return a + } + + function $(t) { + return K.toByteArray(U(t)) + } + + function X(t, e, n, r) { + for (var i = 0; i < r && !(i + n >= e.length || i >= t.length); ++i) e[i + n] = t[i]; + return i + } + + function Y(t) { + return t !== t + } + + /*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ + var K = n(485), q = n(808), J = n(347); + e.Buffer = a, e.SlowBuffer = v, e.INSPECT_MAX_BYTES = 50, a.TYPED_ARRAY_SUPPORT = void 0 !== t.TYPED_ARRAY_SUPPORT ? t.TYPED_ARRAY_SUPPORT : function () { + try { + var t = new Uint8Array(1); + return t.__proto__ = { + __proto__: Uint8Array.prototype, foo: function () { + return 42 + } + }, 42 === t.foo() && "function" == typeof t.subarray && 0 === t.subarray(1, 1).byteLength + } catch (t) { + return !1 + } + }(), e.kMaxLength = r(), a.poolSize = 8192, a._augment = function (t) { + return t.__proto__ = a.prototype, t + }, a.from = function (t, e, n) { + return o(null, t, e, n) + }, a.TYPED_ARRAY_SUPPORT && (a.prototype.__proto__ = Uint8Array.prototype, a.__proto__ = Uint8Array, "undefined" != typeof Symbol && Symbol.species && a[Symbol.species] === a && Object.defineProperty(a, Symbol.species, { + value: null, + configurable: !0 + })), a.alloc = function (t, e, n) { + return l(null, t, e, n) + }, a.allocUnsafe = function (t) { + return u(null, t) + }, a.allocUnsafeSlow = function (t) { + return u(null, t) + }, a.isBuffer = function (t) { + return !(null == t || !t._isBuffer) + }, a.compare = function (t, e) { + if (!a.isBuffer(t) || !a.isBuffer(e)) throw new TypeError("Arguments must be Buffers"); + if (t === e) return 0; + for (var n = t.length, r = e.length, i = 0, o = Math.min(n, r); i < o; ++i) if (t[i] !== e[i]) { + n = t[i], r = e[i]; + break + } + return n < r ? -1 : r < n ? 1 : 0 + }, a.isEncoding = function (t) { + switch (String(t).toLowerCase()) { + case"hex": + case"utf8": + case"utf-8": + case"ascii": + case"latin1": + case"binary": + case"base64": + case"ucs2": + case"ucs-2": + case"utf16le": + case"utf-16le": + return !0; + default: + return !1 + } + }, a.concat = function (t, e) { + if (!J(t)) throw new TypeError('"list" argument must be an Array of Buffers'); + if (0 === t.length) return a.alloc(0); + var n; + if (void 0 === e) for (e = 0, n = 0; n < t.length; ++n) e += t[n].length; + var r = a.allocUnsafe(e), i = 0; + for (n = 0; n < t.length; ++n) { + var o = t[n]; + if (!a.isBuffer(o)) throw new TypeError('"list" argument must be an Array of Buffers'); + o.copy(r, i), i += o.length + } + return r + }, a.byteLength = g, a.prototype._isBuffer = !0, a.prototype.swap16 = function () { + var t = this.length; + if (t % 2 != 0) throw new RangeError("Buffer size must be a multiple of 16-bits"); + for (var e = 0; e < t; e += 2) _(this, e, e + 1); + return this + }, a.prototype.swap32 = function () { + var t = this.length; + if (t % 4 != 0) throw new RangeError("Buffer size must be a multiple of 32-bits"); + for (var e = 0; e < t; e += 4) _(this, e, e + 3), _(this, e + 1, e + 2); + return this + }, a.prototype.swap64 = function () { + var t = this.length; + if (t % 8 != 0) throw new RangeError("Buffer size must be a multiple of 64-bits"); + for (var e = 0; e < t; e += 8) _(this, e, e + 7), _(this, e + 1, e + 6), _(this, e + 2, e + 5), _(this, e + 3, e + 4); + return this + }, a.prototype.toString = function () { + var t = 0 | this.length; + return 0 === t ? "" : 0 === arguments.length ? M(this, 0, t) : m.apply(this, arguments) + }, a.prototype.equals = function (t) { + if (!a.isBuffer(t)) throw new TypeError("Argument must be a Buffer"); + return this === t || 0 === a.compare(this, t) + }, a.prototype.inspect = function () { + var t = "", n = e.INSPECT_MAX_BYTES; + return this.length > 0 && (t = this.toString("hex", 0, n).match(/.{2}/g).join(" "), this.length > n && (t += " ... ")), "" + }, a.prototype.compare = function (t, e, n, r, i) { + if (!a.isBuffer(t)) throw new TypeError("Argument must be a Buffer"); + if (void 0 === e && (e = 0), void 0 === n && (n = t ? t.length : 0), void 0 === r && (r = 0), void 0 === i && (i = this.length), e < 0 || n > t.length || r < 0 || i > this.length) throw new RangeError("out of range index"); + if (r >= i && e >= n) return 0; + if (r >= i) return -1; + if (e >= n) return 1; + if (e >>>= 0, n >>>= 0, r >>>= 0, i >>>= 0, this === t) return 0; + for (var o = i - r, s = n - e, l = Math.min(o, s), u = this.slice(r, i), c = t.slice(e, n), f = 0; f < l; ++f) if (u[f] !== c[f]) { + o = u[f], s = c[f]; + break + } + return o < s ? -1 : s < o ? 1 : 0 + }, a.prototype.includes = function (t, e, n) { + return -1 !== this.indexOf(t, e, n) + }, a.prototype.indexOf = function (t, e, n) { + return y(this, t, e, n, !0) + }, a.prototype.lastIndexOf = function (t, e, n) { + return y(this, t, e, n, !1) + }, a.prototype.write = function (t, e, n, r) { + if (void 0 === e) r = "utf8", n = this.length, e = 0; else if (void 0 === n && "string" == typeof e) r = e, n = this.length, e = 0; else { + if (!isFinite(e)) throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported"); + e |= 0, isFinite(n) ? (n |= 0, void 0 === r && (r = "utf8")) : (r = n, n = void 0) + } + var i = this.length - e; + if ((void 0 === n || n > i) && (n = i), t.length > 0 && (n < 0 || e < 0) || e > this.length) throw new RangeError("Attempt to write outside buffer bounds"); + r || (r = "utf8"); + for (var a = !1; ;) switch (r) { + case"hex": + return w(this, t, e, n); + case"utf8": + case"utf-8": + return x(this, t, e, n); + case"ascii": + return S(this, t, e, n); + case"latin1": + case"binary": + return E(this, t, e, n); + case"base64": + return k(this, t, e, n); + case"ucs2": + case"ucs-2": + case"utf16le": + case"utf-16le": + return T(this, t, e, n); + default: + if (a) throw new TypeError("Unknown encoding: " + r); + r = ("" + r).toLowerCase(), a = !0 + } + }, a.prototype.toJSON = function () { + return {type: "Buffer", data: Array.prototype.slice.call(this._arr || this, 0)} + }; + var Q = 4096; + a.prototype.slice = function (t, e) { + var n = this.length; + t = ~~t, e = void 0 === e ? n : ~~e, t < 0 ? (t += n) < 0 && (t = 0) : t > n && (t = n), e < 0 ? (e += n) < 0 && (e = 0) : e > n && (e = n), e < t && (e = t); + var r; + if (a.TYPED_ARRAY_SUPPORT) r = this.subarray(t, e), r.__proto__ = a.prototype; else { + var i = e - t; + r = new a(i, void 0); + for (var o = 0; o < i; ++o) r[o] = this[o + t] + } + return r + }, a.prototype.readUIntLE = function (t, e, n) { + t |= 0, e |= 0, n || I(t, e, this.length); + for (var r = this[t], i = 1, a = 0; ++a < e && (i *= 256);) r += this[t + a] * i; + return r + }, a.prototype.readUIntBE = function (t, e, n) { + t |= 0, e |= 0, n || I(t, e, this.length); + for (var r = this[t + --e], i = 1; e > 0 && (i *= 256);) r += this[t + --e] * i; + return r + }, a.prototype.readUInt8 = function (t, e) { + return e || I(t, 1, this.length), this[t] + }, a.prototype.readUInt16LE = function (t, e) { + return e || I(t, 2, this.length), this[t] | this[t + 1] << 8 + }, a.prototype.readUInt16BE = function (t, e) { + return e || I(t, 2, this.length), this[t] << 8 | this[t + 1] + }, a.prototype.readUInt32LE = function (t, e) { + return e || I(t, 4, this.length), (this[t] | this[t + 1] << 8 | this[t + 2] << 16) + 16777216 * this[t + 3] + }, a.prototype.readUInt32BE = function (t, e) { + return e || I(t, 4, this.length), 16777216 * this[t] + (this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3]) + }, a.prototype.readIntLE = function (t, e, n) { + t |= 0, e |= 0, n || I(t, e, this.length); + for (var r = this[t], i = 1, a = 0; ++a < e && (i *= 256);) r += this[t + a] * i; + return i *= 128, r >= i && (r -= Math.pow(2, 8 * e)), r + }, a.prototype.readIntBE = function (t, e, n) { + t |= 0, e |= 0, n || I(t, e, this.length); + for (var r = e, i = 1, a = this[t + --r]; r > 0 && (i *= 256);) a += this[t + --r] * i; + return i *= 128, a >= i && (a -= Math.pow(2, 8 * e)), a + }, a.prototype.readInt8 = function (t, e) { + return e || I(t, 1, this.length), 128 & this[t] ? -1 * (255 - this[t] + 1) : this[t] + }, a.prototype.readInt16LE = function (t, e) { + e || I(t, 2, this.length); + var n = this[t] | this[t + 1] << 8; + return 32768 & n ? 4294901760 | n : n + }, a.prototype.readInt16BE = function (t, e) { + e || I(t, 2, this.length); + var n = this[t + 1] | this[t] << 8; + return 32768 & n ? 4294901760 | n : n + }, a.prototype.readInt32LE = function (t, e) { + return e || I(t, 4, this.length), this[t] | this[t + 1] << 8 | this[t + 2] << 16 | this[t + 3] << 24 + }, a.prototype.readInt32BE = function (t, e) { + return e || I(t, 4, this.length), this[t] << 24 | this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3] + }, a.prototype.readFloatLE = function (t, e) { + return e || I(t, 4, this.length), q.read(this, t, !0, 23, 4) + }, a.prototype.readFloatBE = function (t, e) { + return e || I(t, 4, this.length), q.read(this, t, !1, 23, 4) + }, a.prototype.readDoubleLE = function (t, e) { + return e || I(t, 8, this.length), q.read(this, t, !0, 52, 8) + }, a.prototype.readDoubleBE = function (t, e) { + return e || I(t, 8, this.length), q.read(this, t, !1, 52, 8) + }, a.prototype.writeUIntLE = function (t, e, n, r) { + if (t = +t, e |= 0, n |= 0, !r) { + B(this, t, e, n, Math.pow(2, 8 * n) - 1, 0) + } + var i = 1, a = 0; + for (this[e] = 255 & t; ++a < n && (i *= 256);) this[e + a] = t / i & 255; + return e + n + }, a.prototype.writeUIntBE = function (t, e, n, r) { + if (t = +t, e |= 0, n |= 0, !r) { + B(this, t, e, n, Math.pow(2, 8 * n) - 1, 0) + } + var i = n - 1, a = 1; + for (this[e + i] = 255 & t; --i >= 0 && (a *= 256);) this[e + i] = t / a & 255; + return e + n + }, a.prototype.writeUInt8 = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 1, 255, 0), a.TYPED_ARRAY_SUPPORT || (t = Math.floor(t)), this[e] = 255 & t, e + 1 + }, a.prototype.writeUInt16LE = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 2, 65535, 0), a.TYPED_ARRAY_SUPPORT ? (this[e] = 255 & t, this[e + 1] = t >>> 8) : z(this, t, e, !0), e + 2 + }, a.prototype.writeUInt16BE = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 2, 65535, 0), a.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 8, this[e + 1] = 255 & t) : z(this, t, e, !1), e + 2 + }, a.prototype.writeUInt32LE = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 4, 4294967295, 0), a.TYPED_ARRAY_SUPPORT ? (this[e + 3] = t >>> 24, this[e + 2] = t >>> 16, this[e + 1] = t >>> 8, this[e] = 255 & t) : F(this, t, e, !0), e + 4 + }, a.prototype.writeUInt32BE = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 4, 4294967295, 0), a.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 24, this[e + 1] = t >>> 16, this[e + 2] = t >>> 8, this[e + 3] = 255 & t) : F(this, t, e, !1), e + 4 + }, a.prototype.writeIntLE = function (t, e, n, r) { + if (t = +t, e |= 0, !r) { + var i = Math.pow(2, 8 * n - 1); + B(this, t, e, n, i - 1, -i) + } + var a = 0, o = 1, s = 0; + for (this[e] = 255 & t; ++a < n && (o *= 256);) t < 0 && 0 === s && 0 !== this[e + a - 1] && (s = 1), this[e + a] = (t / o >> 0) - s & 255; + return e + n + }, a.prototype.writeIntBE = function (t, e, n, r) { + if (t = +t, e |= 0, !r) { + var i = Math.pow(2, 8 * n - 1); + B(this, t, e, n, i - 1, -i) + } + var a = n - 1, o = 1, s = 0; + for (this[e + a] = 255 & t; --a >= 0 && (o *= 256);) t < 0 && 0 === s && 0 !== this[e + a + 1] && (s = 1), this[e + a] = (t / o >> 0) - s & 255; + return e + n + }, a.prototype.writeInt8 = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 1, 127, -128), a.TYPED_ARRAY_SUPPORT || (t = Math.floor(t)), t < 0 && (t = 255 + t + 1), this[e] = 255 & t, e + 1 + }, a.prototype.writeInt16LE = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 2, 32767, -32768), a.TYPED_ARRAY_SUPPORT ? (this[e] = 255 & t, this[e + 1] = t >>> 8) : z(this, t, e, !0), e + 2 + }, a.prototype.writeInt16BE = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 2, 32767, -32768), a.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 8, this[e + 1] = 255 & t) : z(this, t, e, !1), e + 2 + }, a.prototype.writeInt32LE = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 4, 2147483647, -2147483648), a.TYPED_ARRAY_SUPPORT ? (this[e] = 255 & t, this[e + 1] = t >>> 8, this[e + 2] = t >>> 16, this[e + 3] = t >>> 24) : F(this, t, e, !0), e + 4 + }, a.prototype.writeInt32BE = function (t, e, n) { + return t = +t, e |= 0, n || B(this, t, e, 4, 2147483647, -2147483648), t < 0 && (t = 4294967295 + t + 1), a.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 24, this[e + 1] = t >>> 16, this[e + 2] = t >>> 8, this[e + 3] = 255 & t) : F(this, t, e, !1), e + 4 + }, a.prototype.writeFloatLE = function (t, e, n) { + return D(this, t, e, !0, n) + }, a.prototype.writeFloatBE = function (t, e, n) { + return D(this, t, e, !1, n) + }, a.prototype.writeDoubleLE = function (t, e, n) { + return j(this, t, e, !0, n) + }, a.prototype.writeDoubleBE = function (t, e, n) { + return j(this, t, e, !1, n) + }, a.prototype.copy = function (t, e, n, r) { + if (n || (n = 0), r || 0 === r || (r = this.length), e >= t.length && (e = t.length), e || (e = 0), r > 0 && r < n && (r = n), r === n) return 0; + if (0 === t.length || 0 === this.length) return 0; + if (e < 0) throw new RangeError("targetStart out of bounds"); + if (n < 0 || n >= this.length) throw new RangeError("sourceStart out of bounds"); + if (r < 0) throw new RangeError("sourceEnd out of bounds"); + r > this.length && (r = this.length), t.length - e < r - n && (r = t.length - e + n); + var i, o = r - n; + if (this === t && n < e && e < r) for (i = o - 1; i >= 0; --i) t[i + e] = this[i + n]; else if (o < 1e3 || !a.TYPED_ARRAY_SUPPORT) for (i = 0; i < o; ++i) t[i + e] = this[i + n]; else Uint8Array.prototype.set.call(t, this.subarray(n, n + o), e); + return o + }, a.prototype.fill = function (t, e, n, r) { + if ("string" == typeof t) { + if ("string" == typeof e ? (r = e, e = 0, n = this.length) : "string" == typeof n && (r = n, n = this.length), 1 === t.length) { + var i = t.charCodeAt(0); + i < 256 && (t = i) + } + if (void 0 !== r && "string" != typeof r) throw new TypeError("encoding must be a string"); + if ("string" == typeof r && !a.isEncoding(r)) throw new TypeError("Unknown encoding: " + r) + } else "number" == typeof t && (t &= 255); + if (e < 0 || this.length < e || this.length < n) throw new RangeError("Out of range index"); + if (n <= e) return this; + e >>>= 0, n = void 0 === n ? this.length : n >>> 0, t || (t = 0); + var o; + if ("number" == typeof t) for (o = e; o < n; ++o) this[o] = t; else { + var s = a.isBuffer(t) ? t : W(new a(t, r).toString()), l = s.length; + for (o = 0; o < n - e; ++o) this[o + e] = s[o % l] + } + return this + }; + var tt = /[^+\/0-9A-Za-z-_]/g + }).call(e, n(124)) +}, function (t, e, n) { + var r = n(97), i = n(85), a = n(163), o = n(140), s = function (t, e, n) { + var l, u, c, f = t & s.F, h = t & s.G, d = t & s.S, p = t & s.P, v = t & s.B, g = t & s.W, + m = h ? i : i[e] || (i[e] = {}), _ = m.prototype, y = h ? r : d ? r[e] : (r[e] || {}).prototype; + h && (n = e); + for (l in n) (u = !f && y && void 0 !== y[l]) && l in m || (c = u ? y[l] : n[l], m[l] = h && "function" != typeof y[l] ? n[l] : v && u ? a(c, r) : g && y[l] == c ? function (t) { + var e = function (e, n, r) { + if (this instanceof t) { + switch (arguments.length) { + case 0: + return new t; + case 1: + return new t(e); + case 2: + return new t(e, n) + } + return new t(e, n, r) + } + return t.apply(this, arguments) + }; + return e.prototype = t.prototype, e + }(c) : p && "function" == typeof c ? a(Function.call, c) : c, p && ((m.virtual || (m.virtual = {}))[l] = c, t & s.R && _ && !_[l] && o(_, l, c))) + }; + s.F = 1, s.G = 2, s.S = 4, s.P = 8, s.B = 16, s.W = 32, s.U = 64, s.R = 128, t.exports = s +}, function (t, e) { + var n = t.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")(); + "number" == typeof __g && (__g = n) +}, function (t, e) { + var n = {}.hasOwnProperty; + t.exports = function (t, e) { + return n.call(t, e) + } +}, function (t, e, n) { + var r = n(87), i = n(147); + t.exports = n(86) ? function (t, e, n) { + return r.f(t, e, i(1, n)) + } : function (t, e, n) { + return t[e] = n, t + } +}, function (t, e, n) { + var r = n(79), i = n(99), a = n(98), o = n(151)("src"), s = Function.toString, l = ("" + s).split("toString"); + n(113).inspectSource = function (t) { + return s.call(t) + }, (t.exports = function (t, e, n, s) { + var u = "function" == typeof n; + u && (a(n, "name") || i(n, "name", e)), t[e] !== n && (u && (a(n, o) || i(n, o, t[e] ? "" + t[e] : l.join(String(e)))), t === r ? t[e] = n : s ? t[e] ? t[e] = n : i(t, e, n) : (delete t[e], i(t, e, n))) + })(Function.prototype, "toString", function () { + return "function" == typeof this && this[o] || s.call(this) + }) +}, function (t, e, n) { + var r = n(36), i = n(81), a = n(114), o = /"/g, s = function (t, e, n, r) { + var i = String(a(t)), s = "<" + e; + return "" !== n && (s += " " + n + '="' + String(r).replace(o, """) + '"'), s + ">" + i + "" + }; + t.exports = function (t, e) { + var n = {}; + n[t] = e(s), r(r.P + r.F * i(function () { + var e = ""[t]('"'); + return e !== e.toLowerCase() || e.split('"').length > 3 + }), "String", n) + } +}, function (t, e, n) { + var r = n(183), i = n(114); + t.exports = function (t) { + return r(i(t)) + } +}, function (t, e, n) { + "use strict"; + + function r(t) { + return "[object Array]" === E.call(t) + } + + function i(t) { + return "[object ArrayBuffer]" === E.call(t) + } + + function a(t) { + return "undefined" != typeof FormData && t instanceof FormData + } + + function o(t) { + return "undefined" != typeof ArrayBuffer && ArrayBuffer.isView ? ArrayBuffer.isView(t) : t && t.buffer && t.buffer instanceof ArrayBuffer + } + + function s(t) { + return "string" == typeof t + } + + function l(t) { + return "number" == typeof t + } + + function u(t) { + return void 0 === t + } + + function c(t) { + return null !== t && "object" == typeof t + } + + function f(t) { + return "[object Date]" === E.call(t) + } + + function h(t) { + return "[object File]" === E.call(t) + } + + function d(t) { + return "[object Blob]" === E.call(t) + } + + function p(t) { + return "[object Function]" === E.call(t) + } + + function v(t) { + return c(t) && p(t.pipe) + } + + function g(t) { + return "undefined" != typeof URLSearchParams && t instanceof URLSearchParams + } + + function m(t) { + return t.replace(/^\s*/, "").replace(/\s*$/, "") + } + + function _() { + return ("undefined" == typeof navigator || "ReactNative" !== navigator.product) && ("undefined" != typeof window && "undefined" != typeof document) + } + + function y(t, e) { + if (null !== t && void 0 !== t) if ("object" == typeof t || r(t) || (t = [t]), r(t)) for (var n = 0, i = t.length; n < i; n++) e.call(null, t[n], n, t); else for (var a in t) Object.prototype.hasOwnProperty.call(t, a) && e.call(null, t[a], a, t) + } + + function b() { + function t(t, n) { + "object" == typeof e[n] && "object" == typeof t ? e[n] = b(e[n], t) : e[n] = t + } + + for (var e = {}, n = 0, r = arguments.length; n < r; n++) y(arguments[n], t); + return e + } + + function w(t, e, n) { + return y(e, function (e, r) { + t[r] = n && "function" == typeof e ? x(e, n) : e + }), t + } + + var x = n(289), S = n(346), E = Object.prototype.toString; + t.exports = { + isArray: r, + isArrayBuffer: i, + isBuffer: S, + isFormData: a, + isArrayBufferView: o, + isString: s, + isNumber: l, + isObject: c, + isUndefined: u, + isDate: f, + isFile: h, + isBlob: d, + isFunction: p, + isStream: v, + isURLSearchParams: g, + isStandardBrowserEnv: _, + forEach: y, + merge: b, + extend: w, + trim: m + } +}, function (t, e, n) { + var r = n(184), i = n(147), a = n(102), o = n(117), s = n(98), l = n(322), u = Object.getOwnPropertyDescriptor; + e.f = n(86) ? u : function (t, e) { + if (t = a(t), e = o(e, !0), l) try { + return u(t, e) + } catch (t) { + } + if (s(t, e)) return i(!r.f.call(t, e), t[e]) + } +}, function (t, e, n) { + var r = n(98), i = n(89), a = n(259)("IE_PROTO"), o = Object.prototype; + t.exports = Object.getPrototypeOf || function (t) { + return t = i(t), r(t, a) ? t[a] : "function" == typeof t.constructor && t instanceof t.constructor ? t.constructor.prototype : t instanceof Object ? o : null + } +}, function (t, e) { + var n = {}.toString; + t.exports = function (t) { + return n.call(t).slice(8, -1) + } +}, function (t, e, n) { + var r = n(90); + t.exports = function (t, e, n) { + if (r(t), void 0 === e) return t; + switch (n) { + case 1: + return function (n) { + return t.call(e, n) + }; + case 2: + return function (n, r) { + return t.call(e, n, r) + }; + case 3: + return function (n, r, i) { + return t.call(e, n, r, i) + } + } + return function () { + return t.apply(e, arguments) + } + } +}, function (t, e, n) { + "use strict"; + var r = n(81); + t.exports = function (t, e) { + return !!t && r(function () { + e ? t.call(null, function () { + }, 1) : t.call(null) + }) + } +}, , function (t, e) { + function n() { + throw new Error("setTimeout has not been defined") + } + + function r() { + throw new Error("clearTimeout has not been defined") + } + + function i(t) { + if (c === setTimeout) return setTimeout(t, 0); + if ((c === n || !c) && setTimeout) return c = setTimeout, setTimeout(t, 0); + try { + return c(t, 0) + } catch (e) { + try { + return c.call(null, t, 0) + } catch (e) { + return c.call(this, t, 0) + } + } + } + + function a(t) { + if (f === clearTimeout) return clearTimeout(t); + if ((f === r || !f) && clearTimeout) return f = clearTimeout, clearTimeout(t); + try { + return f(t) + } catch (e) { + try { + return f.call(null, t) + } catch (e) { + return f.call(this, t) + } + } + } + + function o() { + v && d && (v = !1, d.length ? p = d.concat(p) : g = -1, p.length && s()) + } + + function s() { + if (!v) { + var t = i(o); + v = !0; + for (var e = p.length; e;) { + for (d = p, p = []; ++g < e;) d && d[g].run(); + g = -1, e = p.length + } + d = null, v = !1, a(t) + } + } + + function l(t, e) { + this.fun = t, this.array = e + } + + function u() { + } + + var c, f, h = t.exports = {}; + !function () { + try { + c = "function" == typeof setTimeout ? setTimeout : n + } catch (t) { + c = n + } + try { + f = "function" == typeof clearTimeout ? clearTimeout : r + } catch (t) { + f = r + } + }(); + var d, p = [], v = !1, g = -1; + h.nextTick = function (t) { + var e = new Array(arguments.length - 1); + if (arguments.length > 1) for (var n = 1; n < arguments.length; n++) e[n - 1] = arguments[n]; + p.push(new l(t, e)), 1 !== p.length || v || i(s) + }, l.prototype.run = function () { + this.fun.apply(null, this.array) + }, h.title = "browser", h.browser = !0, h.env = {}, h.argv = [], h.version = "", h.versions = {}, h.on = u, h.addListener = u, h.once = u, h.off = u, h.removeListener = u, h.removeAllListeners = u, h.emit = u, h.prependListener = u, h.prependOnceListener = u, h.listeners = function (t) { + return [] + }, h.binding = function (t) { + throw new Error("process.binding is not supported") + }, h.cwd = function () { + return "/" + }, h.chdir = function (t) { + throw new Error("process.chdir is not supported") + }, h.umask = function () { + return 0 + } +}, function (t, e, n) { + var r, i, a; + !function (o, s) { + i = [t, n(495), n(836), n(801)], r = s, void 0 !== (a = "function" == typeof r ? r.apply(e, i) : r) && (t.exports = a) + }(0, function (t, e, n, r) { + "use strict"; + + function i(t) { + return t && t.__esModule ? t : {default: t} + } + + function a(t, e) { + if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") + } + + function o(t, e) { + if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !e || "object" != typeof e && "function" != typeof e ? t : e + } + + function s(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e); + t.prototype = Object.create(e && e.prototype, { + constructor: { + value: t, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e) + } + + function l(t, e) { + var n = "data-clipboard-" + t; + if (e.hasAttribute(n)) return e.getAttribute(n) + } + + var u = i(e), c = i(n), f = i(r), + h = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (t) { + return typeof t + } : function (t) { + return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t + }, d = function () { + function t(t, e) { + for (var n = 0; n < e.length; n++) { + var r = e[n]; + r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r) + } + } + + return function (e, n, r) { + return n && t(e.prototype, n), r && t(e, r), e + } + }(), p = function (t) { + function e(t, n) { + a(this, e); + var r = o(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this)); + return r.resolveOptions(n), r.listenClick(t), r + } + + return s(e, t), d(e, [{ + key: "resolveOptions", value: function () { + var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; + this.action = "function" == typeof t.action ? t.action : this.defaultAction, this.target = "function" == typeof t.target ? t.target : this.defaultTarget, this.text = "function" == typeof t.text ? t.text : this.defaultText, this.container = "object" === h(t.container) ? t.container : document.body + } + }, { + key: "listenClick", value: function (t) { + var e = this; + this.listener = (0, f.default)(t, "click", function (t) { + return e.onClick(t) + }) + } + }, { + key: "onClick", value: function (t) { + var e = t.delegateTarget || t.currentTarget; + this.clipboardAction && (this.clipboardAction = null), this.clipboardAction = new u.default({ + action: this.action(e), + target: this.target(e), + text: this.text(e), + container: this.container, + trigger: e, + emitter: this + }) + } + }, { + key: "defaultAction", value: function (t) { + return l("action", t) + } + }, { + key: "defaultTarget", value: function (t) { + var e = l("target", t); + if (e) return document.querySelector(e) + } + }, { + key: "defaultText", value: function (t) { + return l("text", t) + } + }, { + key: "destroy", value: function () { + this.listener.destroy(), this.clipboardAction && (this.clipboardAction.destroy(), this.clipboardAction = null) + } + }], [{ + key: "isSupported", value: function () { + var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : ["copy", "cut"], + e = "string" == typeof t ? [t] : t, n = !!document.queryCommandSupported; + return e.forEach(function (t) { + n = n && !!document.queryCommandSupported(t) + }), n + } + }]), e + }(c.default); + t.exports = p + }) +}, function (t, e, n) { + var r = n(107), i = n(183), a = n(89), o = n(88), s = n(244); + t.exports = function (t, e) { + var n = 1 == t, l = 2 == t, u = 3 == t, c = 4 == t, f = 6 == t, h = 5 == t || f, d = e || s; + return function (e, s, p) { + for (var v, g, m = a(e), _ = i(m), y = r(s, p, 3), b = o(_.length), w = 0, x = n ? d(e, b) : l ? d(e, 0) : void 0; b > w; w++) if ((h || w in _) && (v = _[w], g = y(v, w, m), t)) if (n) x[w] = g; else if (g) switch (t) { + case 3: + return !0; + case 5: + return v; + case 6: + return w; + case 2: + x.push(v) + } else if (c) return !1; + return f ? -1 : u || c ? c : x + } + } +}, function (t, e) { + var n = t.exports = {version: "2.5.0"}; + "number" == typeof __e && (__e = n) +}, function (t, e) { + t.exports = function (t) { + if (void 0 == t) throw TypeError("Can't call method on " + t); + return t + } +}, function (t, e, n) { + var r = n(36), i = n(113), a = n(81); + t.exports = function (t, e) { + var n = (i.Object || {})[t] || Object[t], o = {}; + o[t] = e(n), r(r.S + r.F * a(function () { + n(1) + }), "Object", o) + } +}, function (t, e) { + var n = Math.ceil, r = Math.floor; + t.exports = function (t) { + return isNaN(t = +t) ? 0 : (t > 0 ? r : n)(t) + } +}, function (t, e, n) { + var r = n(82); + t.exports = function (t, e) { + if (!r(t)) return t; + var n, i; + if (e && "function" == typeof(n = t.toString) && !r(i = n.call(t))) return i; + if ("function" == typeof(n = t.valueOf) && !r(i = n.call(t))) return i; + if (!e && "function" == typeof(n = t.toString) && !r(i = n.call(t))) return i; + throw TypeError("Can't convert object to primitive value") + } +}, function (t, e, n) { + var r = n(165); + t.exports = function (t) { + if (!r(t)) throw TypeError(t + " is not an object!"); + return t + } +}, function (t, e, n) { + var r = n(118), i = n(298), a = n(239), o = Object.defineProperty; + e.f = n(126) ? Object.defineProperty : function (t, e, n) { + if (r(t), e = a(e, !0), r(n), i) try { + return o(t, e, n) + } catch (t) { + } + if ("get" in n || "set" in n) throw TypeError("Accessors not supported!"); + return "value" in n && (t[e] = n.value), t + } +}, function (t, e, n) { + var r = n(299), i = n(227); + t.exports = function (t) { + return r(i(t)) + } +}, function (t, e, n) { + var r = n(342), i = n(36), a = n(211)("metadata"), o = a.store || (a.store = new (n(345))), s = function (t, e, n) { + var i = o.get(t); + if (!i) { + if (!n) return; + o.set(t, i = new r) + } + var a = i.get(e); + if (!a) { + if (!n) return; + i.set(e, a = new r) + } + return a + }, l = function (t, e, n) { + var r = s(e, n, !1); + return void 0 !== r && r.has(t) + }, u = function (t, e, n) { + var r = s(e, n, !1); + return void 0 === r ? void 0 : r.get(t) + }, c = function (t, e, n, r) { + s(n, r, !0).set(t, e) + }, f = function (t, e) { + var n = s(t, e, !1), r = []; + return n && n.forEach(function (t, e) { + r.push(e) + }), r + }, h = function (t) { + return void 0 === t || "symbol" == typeof t ? t : String(t) + }, d = function (t) { + i(i.S, "Reflect", t) + }; + t.exports = {store: o, map: s, has: l, get: u, set: c, keys: f, key: h, exp: d} +}, function (t, e, n) { + "use strict"; + if (n(86)) { + var r = n(144), i = n(79), a = n(81), o = n(36), s = n(213), l = n(265), u = n(107), c = n(142), f = n(147), + h = n(99), d = n(148), p = n(116), v = n(88), g = n(340), m = n(150), _ = n(117), y = n(98), b = n(182), + w = n(82), x = n(89), S = n(251), E = n(145), k = n(105), T = n(146).f, C = n(267), M = n(151), A = n(84), + P = n(112), L = n(199), O = n(212), R = n(268), I = n(167), B = n(206), z = n(149), F = n(243), N = n(314), + D = n(87), j = n(104), U = D.f, H = j.f, G = i.RangeError, W = i.TypeError, V = i.Uint8Array, Z = Array.prototype, + $ = l.ArrayBuffer, X = l.DataView, Y = P(0), K = P(2), q = P(3), J = P(4), Q = P(5), tt = P(6), et = L(!0), + nt = L(!1), rt = R.values, it = R.keys, at = R.entries, ot = Z.lastIndexOf, st = Z.reduce, lt = Z.reduceRight, + ut = Z.join, ct = Z.sort, ft = Z.slice, ht = Z.toString, dt = Z.toLocaleString, pt = A("iterator"), + vt = A("toStringTag"), gt = M("typed_constructor"), mt = M("def_constructor"), _t = s.CONSTR, yt = s.TYPED, + bt = s.VIEW, wt = P(1, function (t, e) { + return Tt(O(t, t[mt]), e) + }), xt = a(function () { + return 1 === new V(new Uint16Array([1]).buffer)[0] + }), St = !!V && !!V.prototype.set && a(function () { + new V(1).set({}) + }), Et = function (t, e) { + var n = p(t); + if (n < 0 || n % e) throw G("Wrong offset!"); + return n + }, kt = function (t) { + if (w(t) && yt in t) return t; + throw W(t + " is not a typed array!") + }, Tt = function (t, e) { + if (!(w(t) && gt in t)) throw W("It is not a typed array constructor!"); + return new t(e) + }, Ct = function (t, e) { + return Mt(O(t, t[mt]), e) + }, Mt = function (t, e) { + for (var n = 0, r = e.length, i = Tt(t, r); r > n;) i[n] = e[n++]; + return i + }, At = function (t, e, n) { + U(t, e, { + get: function () { + return this._d[n] + } + }) + }, Pt = function (t) { + var e, n, r, i, a, o, s = x(t), l = arguments.length, c = l > 1 ? arguments[1] : void 0, f = void 0 !== c, + h = C(s); + if (void 0 != h && !S(h)) { + for (o = h.call(s), r = [], e = 0; !(a = o.next()).done; e++) r.push(a.value); + s = r + } + for (f && l > 2 && (c = u(c, arguments[2], 2)), e = 0, n = v(s.length), i = Tt(this, n); n > e; e++) i[e] = f ? c(s[e], e) : s[e]; + return i + }, Lt = function () { + for (var t = 0, e = arguments.length, n = Tt(this, e); e > t;) n[t] = arguments[t++]; + return n + }, Ot = !!V && a(function () { + dt.call(new V(1)) + }), Rt = function () { + return dt.apply(Ot ? ft.call(kt(this)) : kt(this), arguments) + }, It = { + copyWithin: function (t, e) { + return N.call(kt(this), t, e, arguments.length > 2 ? arguments[2] : void 0) + }, every: function (t) { + return J(kt(this), t, arguments.length > 1 ? arguments[1] : void 0) + }, fill: function (t) { + return F.apply(kt(this), arguments) + }, filter: function (t) { + return Ct(this, K(kt(this), t, arguments.length > 1 ? arguments[1] : void 0)) + }, find: function (t) { + return Q(kt(this), t, arguments.length > 1 ? arguments[1] : void 0) + }, findIndex: function (t) { + return tt(kt(this), t, arguments.length > 1 ? arguments[1] : void 0) + }, forEach: function (t) { + Y(kt(this), t, arguments.length > 1 ? arguments[1] : void 0) + }, indexOf: function (t) { + return nt(kt(this), t, arguments.length > 1 ? arguments[1] : void 0) + }, includes: function (t) { + return et(kt(this), t, arguments.length > 1 ? arguments[1] : void 0) + }, join: function (t) { + return ut.apply(kt(this), arguments) + }, lastIndexOf: function (t) { + return ot.apply(kt(this), arguments) + }, map: function (t) { + return wt(kt(this), t, arguments.length > 1 ? arguments[1] : void 0) + }, reduce: function (t) { + return st.apply(kt(this), arguments) + }, reduceRight: function (t) { + return lt.apply(kt(this), arguments) + }, reverse: function () { + for (var t, e = this, n = kt(e).length, r = Math.floor(n / 2), i = 0; i < r;) t = e[i], e[i++] = e[--n], e[n] = t; + return e + }, some: function (t) { + return q(kt(this), t, arguments.length > 1 ? arguments[1] : void 0) + }, sort: function (t) { + return ct.call(kt(this), t) + }, subarray: function (t, e) { + var n = kt(this), r = n.length, i = m(t, r); + return new (O(n, n[mt]))(n.buffer, n.byteOffset + i * n.BYTES_PER_ELEMENT, v((void 0 === e ? r : m(e, r)) - i)) + } + }, Bt = function (t, e) { + return Ct(this, ft.call(kt(this), t, e)) + }, zt = function (t) { + kt(this); + var e = Et(arguments[1], 1), n = this.length, r = x(t), i = v(r.length), a = 0; + if (i + e > n) throw G("Wrong length!"); + for (; a < i;) this[e + a] = r[a++] + }, Ft = { + entries: function () { + return at.call(kt(this)) + }, keys: function () { + return it.call(kt(this)) + }, values: function () { + return rt.call(kt(this)) + } + }, Nt = function (t, e) { + return w(t) && t[yt] && "symbol" != typeof e && e in t && String(+e) == String(e) + }, Dt = function (t, e) { + return Nt(t, e = _(e, !0)) ? f(2, t[e]) : H(t, e) + }, jt = function (t, e, n) { + return !(Nt(t, e = _(e, !0)) && w(n) && y(n, "value")) || y(n, "get") || y(n, "set") || n.configurable || y(n, "writable") && !n.writable || y(n, "enumerable") && !n.enumerable ? U(t, e, n) : (t[e] = n.value, t) + }; + _t || (j.f = Dt, D.f = jt), o(o.S + o.F * !_t, "Object", { + getOwnPropertyDescriptor: Dt, + defineProperty: jt + }), a(function () { + ht.call({}) + }) && (ht = dt = function () { + return ut.call(this) + }); + var Ut = d({}, It); + d(Ut, Ft), h(Ut, pt, Ft.values), d(Ut, { + slice: Bt, set: zt, constructor: function () { + }, toString: ht, toLocaleString: Rt + }), At(Ut, "buffer", "b"), At(Ut, "byteOffset", "o"), At(Ut, "byteLength", "l"), At(Ut, "length", "e"), U(Ut, vt, { + get: function () { + return this[yt] + } + }), t.exports = function (t, e, n, l) { + l = !!l; + var u = t + (l ? "Clamped" : "") + "Array", f = "get" + t, d = "set" + t, p = i[u], m = p || {}, _ = p && k(p), + y = !p || !s.ABV, x = {}, S = p && p.prototype, C = function (t, n) { + var r = t._d; + return r.v[f](n * e + r.o, xt) + }, M = function (t, n, r) { + var i = t._d; + l && (r = (r = Math.round(r)) < 0 ? 0 : r > 255 ? 255 : 255 & r), i.v[d](n * e + i.o, r, xt) + }, A = function (t, e) { + U(t, e, { + get: function () { + return C(this, e) + }, set: function (t) { + return M(this, e, t) + }, enumerable: !0 + }) + }; + y ? (p = n(function (t, n, r, i) { + c(t, p, u, "_d"); + var a, o, s, l, f = 0, d = 0; + if (w(n)) { + if (!(n instanceof $ || "ArrayBuffer" == (l = b(n)) || "SharedArrayBuffer" == l)) return yt in n ? Mt(p, n) : Pt.call(p, n); + a = n, d = Et(r, e); + var m = n.byteLength; + if (void 0 === i) { + if (m % e) throw G("Wrong length!"); + if ((o = m - d) < 0) throw G("Wrong length!") + } else if ((o = v(i) * e) + d > m) throw G("Wrong length!"); + s = o / e + } else s = g(n), o = s * e, a = new $(o); + for (h(t, "_d", {b: a, o: d, l: o, e: s, v: new X(a)}); f < s;) A(t, f++) + }), S = p.prototype = E(Ut), h(S, "constructor", p)) : a(function () { + p(1) + }) && a(function () { + new p(-1) + }) && B(function (t) { + new p, new p(null), new p(1.5), new p(t) + }, !0) || (p = n(function (t, n, r, i) { + c(t, p, u); + var a; + return w(n) ? n instanceof $ || "ArrayBuffer" == (a = b(n)) || "SharedArrayBuffer" == a ? void 0 !== i ? new m(n, Et(r, e), i) : void 0 !== r ? new m(n, Et(r, e)) : new m(n) : yt in n ? Mt(p, n) : Pt.call(p, n) : new m(g(n)) + }), Y(_ !== Function.prototype ? T(m).concat(T(_)) : T(m), function (t) { + t in p || h(p, t, m[t]) + }), p.prototype = S, r || (S.constructor = p)); + var P = S[pt], L = !!P && ("values" == P.name || void 0 == P.name), O = Ft.values; + h(p, gt, !0), h(S, yt, u), h(S, bt, !0), h(S, mt, p), (l ? new p(1)[vt] == u : vt in S) || U(S, vt, { + get: function () { + return u + } + }), x[u] = p, o(o.G + o.W + o.F * (p != m), x), o(o.S, u, {BYTES_PER_ELEMENT: e}), o(o.S + o.F * a(function () { + m.of.call(p, 1) + }), u, { + from: Pt, + of: Lt + }), "BYTES_PER_ELEMENT" in S || h(S, "BYTES_PER_ELEMENT", e), o(o.P, u, It), z(u), o(o.P + o.F * St, u, {set: zt}), o(o.P + o.F * !L, u, Ft), r || S.toString == ht || (S.toString = ht), o(o.P + o.F * a(function () { + new p(1).slice() + }), u, {slice: Bt}), o(o.P + o.F * (a(function () { + return [1, 2].toLocaleString() != new p([1, 2]).toLocaleString() + }) || !a(function () { + S.toLocaleString.call([1, 2]) + })), u, {toLocaleString: Rt}), I[u] = L ? P : O, r || L || h(S, pt, O) + } + } else t.exports = function () { + } +}, function (t, e, n) { + "use strict"; + (function (e, r) { + function i(t, e) { + t = "string" == typeof t ? {ec_level: t} : t || {}; + var n = {type: String(e || t.type || "png").toLowerCase()}, r = "png" == n.type ? d : p; + for (var i in r) n[i] = i in t ? t[i] : r[i]; + return n + } + + function a(t, n) { + n = i(n); + var r = u(t, n.ec_level, n.parse_url), a = new l; + switch (a._read = h, n.type) { + case"svg": + case"pdf": + case"eps": + e.nextTick(function () { + f[n.type](r, a, n.margin, n.size) + }); + break; + case"svgpath": + e.nextTick(function () { + var t = f.svg_object(r, n.margin, n.size); + a.push(t.path), a.push(null) + }); + break; + case"png": + default: + e.nextTick(function () { + var t = c.bitmap(r, n.size, n.margin); + n.customize && n.customize(t), c.png(t, a) + }) + } + return a + } + + function o(t, e) { + e = i(e); + var n, a = u(t, e.ec_level, e.parse_url), o = []; + switch (e.type) { + case"svg": + case"pdf": + case"eps": + f[e.type](a, o, e.margin, e.size), n = o.filter(Boolean).join(""); + break; + case"png": + default: + var s = c.bitmap(a, e.size, e.margin); + e.customize && e.customize(s), c.png(s, o), n = r.concat(o.filter(Boolean)) + } + return n + } + + function s(t, e) { + e = i(e, "svg"); + var n = u(t, e.ec_level); + return f.svg_object(n, e.margin) + } + + var l = n(833).Readable, u = n(823).QR, c = n(822), f = n(824), h = function () { + }, d = {parse_url: !1, ec_level: "M", size: 5, margin: 4, customize: null}, + p = {parse_url: !1, ec_level: "M", margin: 1, size: 0}; + t.exports = {matrix: u, image: a, imageSync: o, svgObject: s} + }).call(e, n(110), n(95).Buffer) +}, function (t, e) { + var n; + n = function () { + return this + }(); + try { + n = n || Function("return this")() || (0, eval)("this") + } catch (t) { + "object" == typeof window && (n = window) + } + t.exports = n +}, , function (t, e, n) { + t.exports = !n(164)(function () { + return 7 != Object.defineProperty({}, "a", { + get: function () { + return 7 + } + }).a + }) +}, function (t, e, n) { + var r = n(84)("unscopables"), i = Array.prototype; + void 0 == i[r] && n(99)(i, r, {}), t.exports = function (t) { + i[r][t] = !0 + } +}, function (t, e, n) { + var r = n(151)("meta"), i = n(82), a = n(98), o = n(87).f, s = 0, l = Object.isExtensible || function () { + return !0 + }, u = !n(81)(function () { + return l(Object.preventExtensions({})) + }), c = function (t) { + o(t, r, {value: {i: "O" + ++s, w: {}}}) + }, f = function (t, e) { + if (!i(t)) return "symbol" == typeof t ? t : ("string" == typeof t ? "S" : "P") + t; + if (!a(t, r)) { + if (!l(t)) return "F"; + if (!e) return "E"; + c(t) + } + return t[r].i + }, h = function (t, e) { + if (!a(t, r)) { + if (!l(t)) return !0; + if (!e) return !1; + c(t) + } + return t[r].w + }, d = function (t) { + return u && p.NEED && l(t) && !a(t, r) && c(t), t + }, p = t.exports = {KEY: r, NEED: !1, fastKey: f, getWeak: h, onFreeze: d} +}, function (t, e, n) { + var r = n(332), i = n(247); + t.exports = Object.keys || function (t) { + return r(t, i) + } +}, function (t, e, n) { + "use strict"; + + function r(t, e) { + return Object.prototype.hasOwnProperty.call(t, e) + } + + var i = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array; + e.assign = function (t) { + for (var e = Array.prototype.slice.call(arguments, 1); e.length;) { + var n = e.shift(); + if (n) { + if ("object" != typeof n) throw new TypeError(n + "must be non-object"); + for (var i in n) r(n, i) && (t[i] = n[i]) + } + } + return t + }, e.shrinkBuf = function (t, e) { + return t.length === e ? t : t.subarray ? t.subarray(0, e) : (t.length = e, t) + }; + var a = { + arraySet: function (t, e, n, r, i) { + if (e.subarray && t.subarray) return void t.set(e.subarray(n, n + r), i); + for (var a = 0; a < r; a++) t[i + a] = e[n + a] + }, flattenChunks: function (t) { + var e, n, r, i, a, o; + for (r = 0, e = 0, n = t.length; e < n; e++) r += t[e].length; + for (o = new Uint8Array(r), i = 0, e = 0, n = t.length; e < n; e++) a = t[e], o.set(a, i), i += a.length; + return o + } + }, o = { + arraySet: function (t, e, n, r, i) { + for (var a = 0; a < r; a++) t[i + a] = e[n + a] + }, flattenChunks: function (t) { + return [].concat.apply([], t) + } + }; + e.setTyped = function (t) { + t ? (e.Buf8 = Uint8Array, e.Buf16 = Uint16Array, e.Buf32 = Int32Array, e.assign(e, a)) : (e.Buf8 = Array, e.Buf16 = Array, e.Buf32 = Array, e.assign(e, o)) + }, e.setTyped(i) +}, , , , , , , , , function (t, e) { + var n = {}.hasOwnProperty; + t.exports = function (t, e) { + return n.call(t, e) + } +}, function (t, e, n) { + var r = n(119), i = n(179); + t.exports = n(126) ? function (t, e, n) { + return r.f(t, e, i(1, n)) + } : function (t, e, n) { + return t[e] = n, t + } +}, function (t, e, n) { + var r = n(306), i = n(229); + t.exports = Object.keys || function (t) { + return r(t, i) + } +}, function (t, e) { + t.exports = function (t, e, n, r) { + if (!(t instanceof e) || void 0 !== r && r in t) throw TypeError(n + ": incorrect invocation!"); + return t + } +}, function (t, e, n) { + var r = n(107), i = n(324), a = n(251), o = n(78), s = n(88), l = n(267), u = {}, c = {}, + e = t.exports = function (t, e, n, f, h) { + var d, p, v, g, m = h ? function () { + return t + } : l(t), _ = r(n, f, e ? 2 : 1), y = 0; + if ("function" != typeof m) throw TypeError(t + " is not iterable!"); + if (a(m)) { + for (d = s(t.length); d > y; y++) if ((g = e ? _(o(p = t[y])[0], p[1]) : _(t[y])) === u || g === c) return g + } else for (v = m.call(t); !(p = v.next()).done;) if ((g = i(v, _, p.value, e)) === u || g === c) return g + }; + e.BREAK = u, e.RETURN = c +}, function (t, e) { + t.exports = !1 +}, function (t, e, n) { + var r = n(78), i = n(330), a = n(247), o = n(259)("IE_PROTO"), s = function () { + }, l = function () { + var t, e = n(246)("iframe"), r = a.length; + for (e.style.display = "none", n(249).appendChild(e), e.src = "javascript:", t = e.contentWindow.document, t.open(), t.write(" \ No newline at end of file diff --git a/static/chart_main/static/tv-chart.82ee311dc10bb182c736.html b/static/chart_main/static/tv-chart.82ee311dc10bb182c736.html new file mode 100644 index 0000000..60c94a3 --- /dev/null +++ b/static/chart_main/static/tv-chart.82ee311dc10bb182c736.html @@ -0,0 +1,135 @@ + + + + + + + + + + + +
+
+
+
时间
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
涨跌额
+
+
+
+
涨跌幅
+
+
+
+
成交量
+
+
+ +
+ + + + + + + + diff --git a/static/chart_main/ws.js b/static/chart_main/ws.js new file mode 100644 index 0000000..7cc2381 --- /dev/null +++ b/static/chart_main/ws.js @@ -0,0 +1,230 @@ +"use strict"; + + +function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return !!right[Symbol.hasInstance](left); } else { return left instanceof right; } } + +function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _classCallCheck(instance, Constructor) { if (!_instanceof(instance, Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var Ws = /*#__PURE__*/function () { + function Ws(ws, data) { + var _this = this; + + _classCallCheck(this, Ws); + + // [{url, data, method...},,,,] + this._ws = ws; + this._data = data; // 待发送的消息列 + + this._msgs = []; + this.socket = this.doLink(); + this.doOpen(); // 订阅/发布模型 + + this._events = {}; // 是否保持连接 + + this._isLink = true; // 循环检查 + + setInterval(function () { + if (_this._isLink) { + if (_this.socket.readyState == 2 || _this.socket.readyState == 3) { + _this.resetLink(); + } + } + }, 3000); + } // 重连 + + + _createClass(Ws, [{ + key: "resetLink", + value: function resetLink() { + this.socket = this.doLink(); + this.doOpen(); + } // 连接 + + }, { + key: "doLink", + value: function doLink() { + var ws = new WebSocket( this._ws); + return ws; + } + }, { + key: "doOpen", + value: function doOpen() { + var _this2 = this; + + this.socket.addEventListener('open',function (ev) { + _this2.onOpen(ev); + }); + this.socket.addEventListener('message',function (ev) { + _this2.onMessage(ev); + }); + this.socket.addEventListener('close',function (ev) { + _this2.onClose(ev); + }); + this.socket.addEventListener('error',function (ev) { + _this2.onError(ev); + }); + } // 打开 + + }, { + key: "onOpen", + value: function onOpen() { + var _this3 = this; + + // 打开时重发未发出的消息 + var list = Object.assign([], this._msgs); + list.forEach(function (item) { + if (_this3.send(item)) { + var idx = _this3._msgs.indexOf(item); + + if (idx != -1) { + _this3._msgs.splice(idx, 1); + } + } + }); + } // 手动关闭 + + }, { + key: "doClose", + value: function doClose() { + this._isLink = false; + this._events = {}; + this._msgs = []; + this.socket.close({ + success: function success() { + console.log('socket close success'); + } + }); + } // 添加监听 + + }, { + key: "on", + value: function on(name, handler) { + this.subscribe(name, handler); + } // 取消监听 + + }, { + key: "off", + value: function off(name, handler) { + this.unsubscribe(name, handler); + } // 关闭事件 + + }, { + key: "onClose", + value: function onClose() { + var _this4 = this; + + // 是否重新连接 + if (this._isLink) { + setTimeout(function () { + _this4.resetLink(); + }, 3000); + } + } // 错误 + + }, { + key: "onError", + value: function onError(evt) { + this.Notify({ + Event: 'error', + Data: evt + }); + } // 接受数据 + + }, { + key: "onMessage", + value: function onMessage(evt) { + try { + // 解析推送的数据 + var data = JSON.parse(evt.data); // 通知订阅者 + + this.Notify({ + Event: 'message', + Data: data + }); + } catch (err) { + console.error(' >> Data parsing error:', err); // 通知订阅者 + + this.Notify({ + Event: 'error', + Data: err + }); + } + } // 订阅事件的方法 + + }, { + key: "subscribe", + value: function subscribe(name, handler) { + if (this._events.hasOwnProperty(name)) { + this._events[name].push(handler); // 追加事件 + + } else { + this._events[name] = [handler]; // 添加事件 + } + } // 取消订阅事件 + + }, { + key: "unsubscribe", + value: function unsubscribe(name, handler) { + var start = this._events[name].findIndex(function (item) { + return item === handler; + }); // 删除该事件 + + + this._events[name].splice(start, 1); + } // 发布后通知订阅者 + + }, { + key: "Notify", + value: function Notify(entry) { + // 检查是否有订阅者 返回队列 + var cbQueue = this._events[entry.Event]; + + if (cbQueue && cbQueue.length) { + var _iterator = _createForOfIteratorHelper(cbQueue), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var callback = _step.value; + if (_instanceof(callback, Function)) callback(entry.Data); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } + } // 发送消息 + + }, { + key: "send", + value: function send(data) { + if (this.socket.readyState == 1) { + this.socket.send(JSON.stringify(data)); + return true; + } else { + // 保存到待发送信息 + if (!this._msgs.includes(data)) { + this._msgs.push(data); + } + + ; + return false; + } + } + }]); + + return Ws; +}(); + +window.Ws = Ws; \ No newline at end of file diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000..47e16a6 Binary files /dev/null and b/static/favicon.ico differ diff --git a/static/img/13.png b/static/img/13.png new file mode 100644 index 0000000..1ecf716 Binary files /dev/null and b/static/img/13.png differ diff --git a/static/img/13@2x.png b/static/img/13@2x.png new file mode 100644 index 0000000..5d139c1 Binary files /dev/null and b/static/img/13@2x.png differ diff --git a/static/img/4.png b/static/img/4.png new file mode 100644 index 0000000..b3114b5 Binary files /dev/null and b/static/img/4.png differ diff --git a/static/img/4@2x.png b/static/img/4@2x.png new file mode 100644 index 0000000..2557297 Binary files /dev/null and b/static/img/4@2x.png differ diff --git a/static/img/5.png b/static/img/5.png new file mode 100644 index 0000000..4689bc5 Binary files /dev/null and b/static/img/5.png differ diff --git a/static/img/6.png b/static/img/6.png new file mode 100644 index 0000000..a4389ea Binary files /dev/null and b/static/img/6.png differ diff --git a/static/img/8.png b/static/img/8.png new file mode 100644 index 0000000..e6d5cfd Binary files /dev/null and b/static/img/8.png differ diff --git a/static/img/8@2x.png b/static/img/8@2x.png new file mode 100644 index 0000000..bc34b0d Binary files /dev/null and b/static/img/8@2x.png differ diff --git a/static/img/Page1.png b/static/img/Page1.png new file mode 100644 index 0000000..a30ef6e Binary files /dev/null and b/static/img/Page1.png differ diff --git a/static/img/Page10.png b/static/img/Page10.png new file mode 100644 index 0000000..00a607b Binary files /dev/null and b/static/img/Page10.png differ diff --git a/static/img/Page2.png b/static/img/Page2.png new file mode 100644 index 0000000..d941a54 Binary files /dev/null and b/static/img/Page2.png differ diff --git a/static/img/Page3.png b/static/img/Page3.png new file mode 100644 index 0000000..a49f756 Binary files /dev/null and b/static/img/Page3.png differ diff --git a/static/img/Page4.png b/static/img/Page4.png new file mode 100644 index 0000000..564ee44 Binary files /dev/null and b/static/img/Page4.png differ diff --git a/static/img/Page5.png b/static/img/Page5.png new file mode 100644 index 0000000..cb8fbe3 Binary files /dev/null and b/static/img/Page5.png differ diff --git a/static/img/Page6 b/static/img/Page6 new file mode 100644 index 0000000..0ca3690 Binary files /dev/null and b/static/img/Page6 differ diff --git a/static/img/Page6.png b/static/img/Page6.png new file mode 100644 index 0000000..060b10b Binary files /dev/null and b/static/img/Page6.png differ diff --git a/static/img/Page7.png b/static/img/Page7.png new file mode 100644 index 0000000..1847976 Binary files /dev/null and b/static/img/Page7.png differ diff --git a/static/img/Page8.png b/static/img/Page8.png new file mode 100644 index 0000000..48a1cad Binary files /dev/null and b/static/img/Page8.png differ diff --git a/static/img/Page9.png b/static/img/Page9.png new file mode 100644 index 0000000..56636fb Binary files /dev/null and b/static/img/Page9.png differ diff --git a/static/img/Turn.png b/static/img/Turn.png new file mode 100644 index 0000000..ae5c6d2 Binary files /dev/null and b/static/img/Turn.png differ diff --git a/static/img/active_tips.png b/static/img/active_tips.png new file mode 100644 index 0000000..fa9f152 Binary files /dev/null and b/static/img/active_tips.png differ diff --git a/static/img/antFill-apple.png b/static/img/antFill-apple.png new file mode 100644 index 0000000..01c2673 Binary files /dev/null and b/static/img/antFill-apple.png differ diff --git a/static/img/app_st.png b/static/img/app_st.png new file mode 100644 index 0000000..541e57c Binary files /dev/null and b/static/img/app_st.png differ diff --git a/static/img/auth_fanmian.png b/static/img/auth_fanmian.png new file mode 100644 index 0000000..a10a4da Binary files /dev/null and b/static/img/auth_fanmian.png differ diff --git a/static/img/auth_shouchi.png b/static/img/auth_shouchi.png new file mode 100644 index 0000000..fd36b97 Binary files /dev/null and b/static/img/auth_shouchi.png differ diff --git a/static/img/auth_zhengmain.png b/static/img/auth_zhengmain.png new file mode 100644 index 0000000..e082cd8 Binary files /dev/null and b/static/img/auth_zhengmain.png differ diff --git a/static/img/b.png b/static/img/b.png new file mode 100644 index 0000000..1c7a4a1 Binary files /dev/null and b/static/img/b.png differ diff --git a/static/img/base_assets_0.png b/static/img/base_assets_0.png new file mode 100644 index 0000000..a18bd2e Binary files /dev/null and b/static/img/base_assets_0.png differ diff --git a/static/img/base_assets_1.png b/static/img/base_assets_1.png new file mode 100644 index 0000000..a034b16 Binary files /dev/null and b/static/img/base_assets_1.png differ diff --git a/static/img/base_caidan_0.png b/static/img/base_caidan_0.png new file mode 100644 index 0000000..5e38fd4 Binary files /dev/null and b/static/img/base_caidan_0.png differ diff --git a/static/img/base_caidan_1.png b/static/img/base_caidan_1.png new file mode 100644 index 0000000..4a38b30 Binary files /dev/null and b/static/img/base_caidan_1.png differ diff --git a/static/img/base_home_0.png b/static/img/base_home_0.png new file mode 100644 index 0000000..16762bc Binary files /dev/null and b/static/img/base_home_0.png differ diff --git a/static/img/base_home_1.png b/static/img/base_home_1.png new file mode 100644 index 0000000..36f969f Binary files /dev/null and b/static/img/base_home_1.png differ diff --git a/static/img/base_link_0.png b/static/img/base_link_0.png new file mode 100644 index 0000000..e5b9166 Binary files /dev/null and b/static/img/base_link_0.png differ diff --git a/static/img/base_link_1.png b/static/img/base_link_1.png new file mode 100644 index 0000000..b68f4d6 Binary files /dev/null and b/static/img/base_link_1.png differ diff --git a/static/img/base_otc_0.png b/static/img/base_otc_0.png new file mode 100644 index 0000000..ad3b78f Binary files /dev/null and b/static/img/base_otc_0.png differ diff --git a/static/img/base_otc_1.png b/static/img/base_otc_1.png new file mode 100644 index 0000000..883af2c Binary files /dev/null and b/static/img/base_otc_1.png differ diff --git a/static/img/base_qukuai_0.png b/static/img/base_qukuai_0.png new file mode 100644 index 0000000..7d728fa Binary files /dev/null and b/static/img/base_qukuai_0.png differ diff --git a/static/img/base_qukuai_1.png b/static/img/base_qukuai_1.png new file mode 100644 index 0000000..44b112d Binary files /dev/null and b/static/img/base_qukuai_1.png differ diff --git a/static/img/bgb.png b/static/img/bgb.png new file mode 100644 index 0000000..ee4514e Binary files /dev/null and b/static/img/bgb.png differ diff --git a/static/img/bgb2.png b/static/img/bgb2.png new file mode 100644 index 0000000..fc9db20 Binary files /dev/null and b/static/img/bgb2.png differ diff --git a/static/img/bgb3.png b/static/img/bgb3.png new file mode 100644 index 0000000..4982d5e Binary files /dev/null and b/static/img/bgb3.png differ diff --git a/static/img/bgb33.png b/static/img/bgb33.png new file mode 100644 index 0000000..54a004b Binary files /dev/null and b/static/img/bgb33.png differ diff --git a/static/img/bgb4.png b/static/img/bgb4.png new file mode 100644 index 0000000..d6744a2 Binary files /dev/null and b/static/img/bgb4.png differ diff --git a/static/img/bgb5.png b/static/img/bgb5.png new file mode 100644 index 0000000..c3bc176 Binary files /dev/null and b/static/img/bgb5.png differ diff --git a/static/img/bgshare.png b/static/img/bgshare.png new file mode 100644 index 0000000..4bdd953 Binary files /dev/null and b/static/img/bgshare.png differ diff --git a/static/img/border_bottom.png b/static/img/border_bottom.png new file mode 100644 index 0000000..727a514 Binary files /dev/null and b/static/img/border_bottom.png differ diff --git a/static/img/border_bottom_g.png b/static/img/border_bottom_g.png new file mode 100644 index 0000000..0dc75d7 Binary files /dev/null and b/static/img/border_bottom_g.png differ diff --git a/static/img/che.png b/static/img/che.png new file mode 100644 index 0000000..c578336 Binary files /dev/null and b/static/img/che.png differ diff --git a/static/img/down.png b/static/img/down.png new file mode 100644 index 0000000..9daf3af Binary files /dev/null and b/static/img/down.png differ diff --git a/static/img/fab fa-android.png b/static/img/fab fa-android.png new file mode 100644 index 0000000..23a710a Binary files /dev/null and b/static/img/fab fa-android.png differ diff --git a/static/img/fill1.png b/static/img/fill1.png new file mode 100644 index 0000000..1d9033f Binary files /dev/null and b/static/img/fill1.png differ diff --git a/static/img/fill2.png b/static/img/fill2.png new file mode 100644 index 0000000..2848838 Binary files /dev/null and b/static/img/fill2.png differ diff --git a/static/img/fill3.png b/static/img/fill3.png new file mode 100644 index 0000000..0ba04ea Binary files /dev/null and b/static/img/fill3.png differ diff --git a/static/img/fill4.png b/static/img/fill4.png new file mode 100644 index 0000000..8485ac1 Binary files /dev/null and b/static/img/fill4.png differ diff --git a/static/img/fill5.png b/static/img/fill5.png new file mode 100644 index 0000000..f4dd80a Binary files /dev/null and b/static/img/fill5.png differ diff --git a/static/img/fill6.png b/static/img/fill6.png new file mode 100644 index 0000000..440af26 Binary files /dev/null and b/static/img/fill6.png differ diff --git a/static/img/fill7.png b/static/img/fill7.png new file mode 100644 index 0000000..95c13bd Binary files /dev/null and b/static/img/fill7.png differ diff --git a/static/img/homeBtn_2.png b/static/img/homeBtn_2.png new file mode 100644 index 0000000..0434fc4 Binary files /dev/null and b/static/img/homeBtn_2.png differ diff --git a/static/img/homehuiyuan.png b/static/img/homehuiyuan.png new file mode 100644 index 0000000..a6cf261 Binary files /dev/null and b/static/img/homehuiyuan.png differ diff --git a/static/img/homekuanggong.png b/static/img/homekuanggong.png new file mode 100644 index 0000000..96d666f Binary files /dev/null and b/static/img/homekuanggong.png differ diff --git a/static/img/homeqiquanicon.png b/static/img/homeqiquanicon.png new file mode 100644 index 0000000..d014e05 Binary files /dev/null and b/static/img/homeqiquanicon.png differ diff --git a/static/img/homexueyuan.png b/static/img/homexueyuan.png new file mode 100644 index 0000000..c9abd6c Binary files /dev/null and b/static/img/homexueyuan.png differ diff --git a/static/img/hua.png b/static/img/hua.png new file mode 100644 index 0000000..c617f66 Binary files /dev/null and b/static/img/hua.png differ diff --git a/static/img/ico1.svg b/static/img/ico1.svg new file mode 100644 index 0000000..26c2ae8 --- /dev/null +++ b/static/img/ico1.svg @@ -0,0 +1 @@ +资源 90 \ No newline at end of file diff --git a/static/img/ico2.svg b/static/img/ico2.svg new file mode 100644 index 0000000..87aed3c --- /dev/null +++ b/static/img/ico2.svg @@ -0,0 +1 @@ +资源 89 \ No newline at end of file diff --git a/static/img/ico3.svg b/static/img/ico3.svg new file mode 100644 index 0000000..df2c863 --- /dev/null +++ b/static/img/ico3.svg @@ -0,0 +1 @@ +资源 91 \ No newline at end of file diff --git a/static/img/ico4.svg b/static/img/ico4.svg new file mode 100644 index 0000000..6e839c0 --- /dev/null +++ b/static/img/ico4.svg @@ -0,0 +1 @@ +资源 92 \ No newline at end of file diff --git a/static/img/ico5.svg b/static/img/ico5.svg new file mode 100644 index 0000000..212da1b --- /dev/null +++ b/static/img/ico5.svg @@ -0,0 +1 @@ +资源 86 \ No newline at end of file diff --git a/static/img/ico6.svg b/static/img/ico6.svg new file mode 100644 index 0000000..441d267 --- /dev/null +++ b/static/img/ico6.svg @@ -0,0 +1 @@ +资源 85 \ No newline at end of file diff --git a/static/img/ico7.svg b/static/img/ico7.svg new file mode 100644 index 0000000..fc7eb4d --- /dev/null +++ b/static/img/ico7.svg @@ -0,0 +1 @@ +资源 87 \ No newline at end of file diff --git a/static/img/ico8.svg b/static/img/ico8.svg new file mode 100644 index 0000000..d75e72d --- /dev/null +++ b/static/img/ico8.svg @@ -0,0 +1 @@ +资源 88 \ No newline at end of file diff --git a/static/img/icon_1.png b/static/img/icon_1.png new file mode 100644 index 0000000..e1ce228 Binary files /dev/null and b/static/img/icon_1.png differ diff --git a/static/img/icon_2.png b/static/img/icon_2.png new file mode 100644 index 0000000..d15b1f1 Binary files /dev/null and b/static/img/icon_2.png differ diff --git a/static/img/icon_3.png b/static/img/icon_3.png new file mode 100644 index 0000000..48fff99 Binary files /dev/null and b/static/img/icon_3.png differ diff --git a/static/img/illustration-1.png b/static/img/illustration-1.png new file mode 100644 index 0000000..510b384 Binary files /dev/null and b/static/img/illustration-1.png differ diff --git a/static/img/illustration-2.png b/static/img/illustration-2.png new file mode 100644 index 0000000..60da550 Binary files /dev/null and b/static/img/illustration-2.png differ diff --git a/static/img/initve.png b/static/img/initve.png new file mode 100644 index 0000000..3ad6f35 Binary files /dev/null and b/static/img/initve.png differ diff --git a/static/img/invite-1.png b/static/img/invite-1.png new file mode 100644 index 0000000..76152ad Binary files /dev/null and b/static/img/invite-1.png differ diff --git a/static/img/invite-2.png b/static/img/invite-2.png new file mode 100644 index 0000000..ec4a300 Binary files /dev/null and b/static/img/invite-2.png differ diff --git a/static/img/invite-3.png b/static/img/invite-3.png new file mode 100644 index 0000000..757b82f Binary files /dev/null and b/static/img/invite-3.png differ diff --git a/static/img/invite-4.png b/static/img/invite-4.png new file mode 100644 index 0000000..0653bb9 Binary files /dev/null and b/static/img/invite-4.png differ diff --git a/static/img/invite-5.png b/static/img/invite-5.png new file mode 100644 index 0000000..fd89b98 Binary files /dev/null and b/static/img/invite-5.png differ diff --git a/static/img/invite-6.png b/static/img/invite-6.png new file mode 100644 index 0000000..4f21cf3 Binary files /dev/null and b/static/img/invite-6.png differ diff --git a/static/img/invite-bg.png b/static/img/invite-bg.png new file mode 100644 index 0000000..023d99d Binary files /dev/null and b/static/img/invite-bg.png differ diff --git a/static/img/invite-bg1.png b/static/img/invite-bg1.png new file mode 100644 index 0000000..c3ebcf9 Binary files /dev/null and b/static/img/invite-bg1.png differ diff --git a/static/img/invite-fy.png b/static/img/invite-fy.png new file mode 100644 index 0000000..5c1dc9c Binary files /dev/null and b/static/img/invite-fy.png differ diff --git a/static/img/invite-sy.png b/static/img/invite-sy.png new file mode 100644 index 0000000..21c1834 Binary files /dev/null and b/static/img/invite-sy.png differ diff --git a/static/img/invite-tg.png b/static/img/invite-tg.png new file mode 100644 index 0000000..658733d Binary files /dev/null and b/static/img/invite-tg.png differ diff --git a/static/img/invite-yq.png b/static/img/invite-yq.png new file mode 100644 index 0000000..18df6d1 Binary files /dev/null and b/static/img/invite-yq.png differ diff --git a/static/img/ke.png b/static/img/ke.png new file mode 100644 index 0000000..b6aef95 Binary files /dev/null and b/static/img/ke.png differ diff --git a/static/img/light/Page1.png b/static/img/light/Page1.png new file mode 100644 index 0000000..a30ef6e Binary files /dev/null and b/static/img/light/Page1.png differ diff --git a/static/img/light/Page10.png b/static/img/light/Page10.png new file mode 100644 index 0000000..00a607b Binary files /dev/null and b/static/img/light/Page10.png differ diff --git a/static/img/light/Page2.png b/static/img/light/Page2.png new file mode 100644 index 0000000..d941a54 Binary files /dev/null and b/static/img/light/Page2.png differ diff --git a/static/img/light/Page3.png b/static/img/light/Page3.png new file mode 100644 index 0000000..a49f756 Binary files /dev/null and b/static/img/light/Page3.png differ diff --git a/static/img/light/Page4.png b/static/img/light/Page4.png new file mode 100644 index 0000000..564ee44 Binary files /dev/null and b/static/img/light/Page4.png differ diff --git a/static/img/light/Page5.png b/static/img/light/Page5.png new file mode 100644 index 0000000..cb8fbe3 Binary files /dev/null and b/static/img/light/Page5.png differ diff --git a/static/img/light/Page6.png b/static/img/light/Page6.png new file mode 100644 index 0000000..060b10b Binary files /dev/null and b/static/img/light/Page6.png differ diff --git a/static/img/light/Page7.png b/static/img/light/Page7.png new file mode 100644 index 0000000..1847976 Binary files /dev/null and b/static/img/light/Page7.png differ diff --git a/static/img/light/Page8.png b/static/img/light/Page8.png new file mode 100644 index 0000000..ae8bfba Binary files /dev/null and b/static/img/light/Page8.png differ diff --git a/static/img/light/Page9.png b/static/img/light/Page9.png new file mode 100644 index 0000000..5266282 Binary files /dev/null and b/static/img/light/Page9.png differ diff --git a/static/img/light/Turn.png b/static/img/light/Turn.png new file mode 100644 index 0000000..ae5c6d2 Binary files /dev/null and b/static/img/light/Turn.png differ diff --git a/static/img/light/bgb3.png b/static/img/light/bgb3.png new file mode 100644 index 0000000..a0e5306 Binary files /dev/null and b/static/img/light/bgb3.png differ diff --git a/static/img/light/fill3.png b/static/img/light/fill3.png new file mode 100644 index 0000000..4186c5d Binary files /dev/null and b/static/img/light/fill3.png differ diff --git a/static/img/light/fill4.png b/static/img/light/fill4.png new file mode 100644 index 0000000..54840a3 Binary files /dev/null and b/static/img/light/fill4.png differ diff --git a/static/img/light/fill5.png b/static/img/light/fill5.png new file mode 100644 index 0000000..cc62080 Binary files /dev/null and b/static/img/light/fill5.png differ diff --git a/static/img/light/icon1.png b/static/img/light/icon1.png new file mode 100644 index 0000000..628d43c Binary files /dev/null and b/static/img/light/icon1.png differ diff --git a/static/img/light/icon2.png b/static/img/light/icon2.png new file mode 100644 index 0000000..938b524 Binary files /dev/null and b/static/img/light/icon2.png differ diff --git a/static/img/light/icon3.png b/static/img/light/icon3.png new file mode 100644 index 0000000..e336bdb Binary files /dev/null and b/static/img/light/icon3.png differ diff --git a/static/img/light/icon4.png b/static/img/light/icon4.png new file mode 100644 index 0000000..68129da Binary files /dev/null and b/static/img/light/icon4.png differ diff --git a/static/img/light/icon5.png b/static/img/light/icon5.png new file mode 100644 index 0000000..18cca3f Binary files /dev/null and b/static/img/light/icon5.png differ diff --git a/static/img/light/icon6.png b/static/img/light/icon6.png new file mode 100644 index 0000000..7bc5665 Binary files /dev/null and b/static/img/light/icon6.png differ diff --git a/static/img/logo.png b/static/img/logo.png new file mode 100644 index 0000000..effcc12 Binary files /dev/null and b/static/img/logo.png differ diff --git a/static/img/moon.png b/static/img/moon.png new file mode 100644 index 0000000..cfd84b4 Binary files /dev/null and b/static/img/moon.png differ diff --git a/static/img/notData.png b/static/img/notData.png new file mode 100644 index 0000000..92f99ce Binary files /dev/null and b/static/img/notData.png differ diff --git a/static/img/rbox.png b/static/img/rbox.png new file mode 100644 index 0000000..b82bea9 Binary files /dev/null and b/static/img/rbox.png differ diff --git a/static/img/right.png b/static/img/right.png new file mode 100644 index 0000000..cff634d Binary files /dev/null and b/static/img/right.png differ diff --git a/static/img/share.png b/static/img/share.png new file mode 100644 index 0000000..1666ff5 Binary files /dev/null and b/static/img/share.png differ diff --git a/static/img/sun.png b/static/img/sun.png new file mode 100644 index 0000000..2060cec Binary files /dev/null and b/static/img/sun.png differ diff --git a/static/img/trusted-section.png b/static/img/trusted-section.png new file mode 100644 index 0000000..ba9298a Binary files /dev/null and b/static/img/trusted-section.png differ diff --git a/static/img/trusted-section_2.png b/static/img/trusted-section_2.png new file mode 100644 index 0000000..751e643 Binary files /dev/null and b/static/img/trusted-section_2.png differ diff --git a/static/img/trusted-section_3.png b/static/img/trusted-section_3.png new file mode 100644 index 0000000..562fc81 Binary files /dev/null and b/static/img/trusted-section_3.png differ diff --git a/static/img/trusted-section_4.png b/static/img/trusted-section_4.png new file mode 100644 index 0000000..98cd8fc Binary files /dev/null and b/static/img/trusted-section_4.png differ diff --git a/static/img/trusted-section_5.png b/static/img/trusted-section_5.png new file mode 100644 index 0000000..fe46975 Binary files /dev/null and b/static/img/trusted-section_5.png differ diff --git a/static/img/tt.png b/static/img/tt.png new file mode 100644 index 0000000..110cd2d Binary files /dev/null and b/static/img/tt.png differ diff --git a/static/img/user-bar.svg b/static/img/user-bar.svg new file mode 100644 index 0000000..3b43f13 --- /dev/null +++ b/static/img/user-bar.svg @@ -0,0 +1 @@ +资源 84 \ No newline at end of file diff --git a/static/img/vs.png b/static/img/vs.png new file mode 100644 index 0000000..a175536 Binary files /dev/null and b/static/img/vs.png differ diff --git a/static/service.html b/static/service.html new file mode 100644 index 0000000..a2f281f --- /dev/null +++ b/static/service.html @@ -0,0 +1,20 @@ + + + + + + + 在线客服 + + + + + + + + \ No newline at end of file diff --git a/static/tradingview.html b/static/tradingview.html new file mode 100644 index 0000000..e50da7f --- /dev/null +++ b/static/tradingview.html @@ -0,0 +1,31 @@ + + + + + + tradingview + + + +
+ + + + + + + + diff --git a/static/uni.ttf b/static/uni.ttf new file mode 100644 index 0000000..60a1968 Binary files /dev/null and b/static/uni.ttf differ diff --git a/static/verify/0.jpeg b/static/verify/0.jpeg new file mode 100644 index 0000000..e8e2f18 Binary files /dev/null and b/static/verify/0.jpeg differ diff --git a/static/verify/1.jpeg b/static/verify/1.jpeg new file mode 100644 index 0000000..de8bde5 Binary files /dev/null and b/static/verify/1.jpeg differ diff --git a/store/index.js b/store/index.js new file mode 100644 index 0000000..16f7fcd --- /dev/null +++ b/store/index.js @@ -0,0 +1,255 @@ +import Vue from 'vue' +import Vuex from 'vuex' +import Setting from "@/api/setting"; +import i18n from "@/i18n"; +import Socket from '@/api/serve/market-socket' +import themeStyle from '@/plugins/theme-style' +import app from '@/app' + +let socket = new Socket(app.socketUrl) +socket.on('message',(evt)=>{ + if(evt.type=='ping'){ + socket.send({cmd:'pong'}) + } +}) +let socket1 = new Socket(app.socketUrl1) +socket1.on('message',(evt)=>{ + if(evt.cmd=='ping'){ + socket1.send({cmd:'pong'}) + } +}) +Vue.use(Vuex) + +if(uni.getStorageSync('language')=='cn'){ + uni.setStorageSync('language','zh-CN') +} +function defaultTheme() { + // return `dark` + // // 获取当前时间 + // let timeNow = new Date(); + // // 获取当前小时 + // let hours = timeNow.getHours(); + // // 设置默认文字 + // let state = ``; + // // 判断当前时间段 + + // if (hours >= 19 || hours <= 7) { + // state = `dark`; + // } else { + // state = `light`; + // } + uni.setStorageSync('theme','light'); + // uni.setStorageSync('language','zh-CN'); + let state = `light` + return state; +} +// #ifdef APP-PLUS + plus.runtime.getProperty( plus.runtime.appid, function ( wgtinfo ) { + uni.setStorageSync('version',wgtinfo.version) + } ); +// #endif +let store = new Vuex.Store({ + state: { + // 切换动画 + fade: '', + // 区号列表 + countryList: [], + token: uni.getStorageSync('token'), + user: (() => { + if (!uni.getStorageSync('user')) return {}; + return JSON.parse(uni.getStorageSync('user')) + })(), + ws:socket, + ws1:socket1, + wsState: false, + hideMoney: uni.getStorageSync('hideMoney') == 'true', + // logo + logoMap: (() => { + if (!uni.getStorageSync('logoMap')) return {}; + return JSON.parse(uni.getStorageSync('logoMap')) + })(), + lang: uni.getStorageSync('language')||'en', + // lang:'en', + version:uni.getStorageSync('version'), + langList: [ + + { + value: 'en', + label: 'English', + url: require("../assets/img/flag/en.jpg") + }, + // { + // value: 'zh-CN', + // label: '简体中文' + // }, + + + { + value: 'kor', + label: '한국어', + url: require("../assets/img/flag/kor.jpg") + }, + { + value: 'de', + label: 'Deutsch', + url: require("../assets/img/flag/de.jpg") + }, + { + value: 'fra', + label: 'Français', + url: require("../assets/img/flag/fra.png") + }, + { + value: 'spa', + label: 'Español', + url: require("../assets/img/flag/spa.jpg") + }, + { + value: 'it', + label: 'Italiano', + url: require("../assets/img/flag/it.png") + }, + { + value: 'jp', + label: '日本語', + url: require("../assets/img/flag/jp.jpg") + }, + // { + // value: 'ukr', + // label: 'УкраїнськаName' + // }, + // { + // value: 'swe', + // label: 'Svenska' + // }, + // { + // value: 'fin', + // label: 'Suomi' + // }, + // { + // value: 'pl', + // label: 'Polski' + // }, + { + value: 'pt', + label: 'Português', + url: require("../assets/img/flag/pt.png") + }, + { + value: 'tr', + label: 'Türk', + url: require("../assets/img/flag/tr.jpg") + }, + { + value: 'zh-TW', + label: '繁體中文', + url: require("../assets/img/flag/cn_hk.png") + }, + ], + // 主题 + theme:uni.getStorageSync('theme')||defaultTheme(), + // 自定义页面下标 + pageIdx:0 + }, + getters:{ + themeStyle(state){ + return themeStyle[state.theme] + } + }, + mutations: { + FADE(state, data) { + state.fade = data + }, + COUNTRYLIST(state, data) { + state.countryList = data + }, + TOKEN(state, data) { + uni.setStorageSync('token', data) + state.token = data + }, + USER(state, data) { + uni.setStorageSync('user', JSON.stringify(data)) + state.user = data + }, + HIDEMONEY(state, data) { + uni.setStorageSync('hideMoney', data) + state.hideMoney = data + }, + LOGOMAP(state, data) { + uni.setStorageSync('logoMap', JSON.stringify(data)) + state.logoMap = data + }, + LANG(state, data) { + uni.setStorageSync('language', data) + i18n.locale = data + state.lang = data + }, + VANTLANG(state, data) { + let name = 'zh-CN' + }, + THEME(state,data){ + state.theme = data + uni.setStorageSync('theme',data) + }, + PAGEIDX(state,data){ + state.pageIdx++ + } + }, + actions: { + // 页面返回事件 + fadeOut({ commit }) { + commit('FADE', 'fade-out') + setTimeout(() => { + commit('FADE', 'fade-in') + }, 300); + }, + // 设置区号 + countryList({ commit }, data) { + commit('COUNTRYLIST', data) + }, + + token({ commit }, data) { + commit('TOKEN', data) + }, + // 设置用户信息 (登录处) + user({ commit }, data) { + commit('USER', data) + }, + // 过滤资金显示 + hideMoney({ commit }, data) { + commit('HIDEMONEY', data) + }, + // 设置用户信息 + setUserInfo({ commit }) { + Setting.getUserInfo().then(res => { + commit('USER', res.data) + }).catch(() => { }) + }, + // 设置logo + logoMap({ commit }, data) { + commit('LOGOMAP', data) + }, + // 设置当前语言 + setLang({ commit }, data) { + commit('LANG', data) + commit('VANTLANG', data) + }, + // 设置主题 + setTheme({ commit }, data){ + commit('THEME',data) + uni.setNavigationBarColor({ + frontColor:data=='dark'?'#ffffff':'#000000', + backgroundColor:'#666666', + }) + }, + // 页面栈++ + setPageIdx({ commit }, data){ + commit('PAGEIDX',data) + } + }, + modules: { + } +}) + +export default store + diff --git a/uni.scss b/uni.scss new file mode 100644 index 0000000..c7c6e4f --- /dev/null +++ b/uni.scss @@ -0,0 +1,67 @@ + + +/* 颜色变量 */ + +/* 行为相关颜色 */ +$uni-color-primary: #007aff; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + +/* 文字基本颜色 */ +$uni-text-color:#333;//基本色 +$uni-text-color-inverse:#fff;//反色 +$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 +$uni-text-color-placeholder: #808080; +$uni-text-color-disable:#c0c0c0; + +/* 背景颜色 */ +$uni-bg-color:#ffffff; +$uni-bg-color-grey:#f8f8f8; +$uni-bg-color-hover:#f1f1f1;//点击状态颜色 +$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 + +/* 边框颜色 */ +$uni-border-color:#e5e5e5; + +/* 尺寸变量 */ + +/* 文字尺寸 */ +$uni-font-size-sm:24rpx; +$uni-font-size-base:28rpx; +$uni-font-size-lg:32rpx; + +/* 图片尺寸 */ +$uni-img-size-sm:40rpx; +$uni-img-size-base:52rpx; +$uni-img-size-lg:80rpx; + +/* Border Radius */ +$uni-border-radius-sm: 4rpx; +$uni-border-radius-base: 6rpx; +$uni-border-radius-lg: 12rpx; +$uni-border-radius-circle: 50%; + +/* 水平间距 */ +$uni-spacing-row-sm: 10px; +$uni-spacing-row-base: 20rpx; +$uni-spacing-row-lg: 30rpx; + +/* 垂直间距 */ +$uni-spacing-col-sm: 8rpx; +$uni-spacing-col-base: 16rpx; +$uni-spacing-col-lg: 24rpx; + +/* 透明度 */ +$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 + +/* 文章场景相关 */ +$uni-color-title: #2C405A; // 文章标题颜色 +$uni-font-size-title:40rpx; +$uni-color-subtitle: #555555; // 二级标题颜色 +$uni-font-size-subtitle:36rpx; +$uni-color-paragraph: #3F536E; // 文章段落颜色 +$uni-font-size-paragraph:30rpx; + +@import './assets/scss/base.scss' + diff --git a/uni_modules/qiun-data-charts/changelog.md b/uni_modules/qiun-data-charts/changelog.md new file mode 100644 index 0000000..5d7bdc9 --- /dev/null +++ b/uni_modules/qiun-data-charts/changelog.md @@ -0,0 +1,171 @@ +## 2.3.3-20210706(2021-07-06) +- uCharts.js 增加雷达图开启数据点值(opts.dataLabel)的显示 +## 2.3.2-20210627(2021-06-27) +- 秋云图表组件 修复tooltipCustom个别情况下传值不正确报错TypeError: Cannot read property 'name' of undefined的bug +## 2.3.1-20210616(2021-06-16) +- uCharts.js 修复圆角柱状图使用4角圆角时,当数值过大时不正确的bug +## 2.3.0-20210612(2021-06-12) +- uCharts.js 【重要】uCharts增加nvue兼容,可在nvue项目中使用gcanvas组件渲染uCharts,[详见码云uCharts-demo-nvue](https://gitee.com/uCharts/uCharts) +- 秋云图表组件 增加tapLegend属性,是否开启图例点击交互事件 +- 秋云图表组件 getIndex事件中增加返回uCharts实例中的opts参数,以便在页面中调用参数 +- 示例项目 pages/other/other.vue增加app端自定义tooltip的方法,详见showOptsTooltip方法 +## 2.2.1-20210603(2021-06-03) +- uCharts.js 修复饼图、圆环图、玫瑰图,当起始角度不为0时,tooltip位置不准确的bug +- uCharts.js 增加温度计式柱状图开启顶部半圆形的配置 +## 2.2.0-20210529(2021-05-29) +- uCharts.js 增加条状图type="bar" +- 示例项目 pages/ucharts/ucharts.vue增加条状图的demo +## 2.1.7-20210524(2021-05-24) +- uCharts.js 修复大数据量模式下曲线图不平滑的bug +## 2.1.6-20210523(2021-05-23) +- 秋云图表组件 修复小程序端开启滚动条更新数据后滚动条位置不符合预期的bug +## 2.1.5-2021051702(2021-05-17) +- uCharts.js 修复自定义Y轴min和max值为0时不能正确显示的bug +## 2.1.5-20210517(2021-05-17) +- uCharts.js 修复Y轴自定义min和max时,未按指定的最大值最小值显示坐标轴刻度的bug +## 2.1.4-20210516(2021-05-16) +- 秋云图表组件 优化onWindowResize防抖方法 +- 秋云图表组件 修复APP端uCharts更新数据时,清空series显示loading图标后再显示图表,图表抖动的bug +- uCharts.js 修复开启canvas2d后,x轴、y轴、series自定义字体大小未按比例缩放的bug +- 示例项目 修复format-e.vue拼写错误导致app端使用uCharts渲染图表 +## 2.1.3-20210513(2021-05-13) +- 秋云图表组件 修改uCharts变更chartData数据为updateData方法,支持带滚动条的数据动态打点 +- 秋云图表组件 增加onWindowResize防抖方法 fix by ど誓言,如尘般染指流年づ +- 秋云图表组件 H5或者APP变更chartData数据显示loading图表时,原数据闪现的bug +- 秋云图表组件 props增加errorReload禁用错误点击重新加载的方法 +- uCharts.js 增加tooltip显示category(x轴对应点位)标题的功能,opts.extra.tooltip.showCategory,默认为false +- uCharts.js 修复mix混合图只有柱状图时,tooltip的分割线显示位置不正确的bug +- uCharts.js 修复开启滚动条,图表在拖动中动态打点,滚动条位置不正确的bug +- uCharts.js 修复饼图类数据格式为echarts数据格式,series为空数组报错的bug +- 示例项目 修改uCharts.js更新到v2.1.2版本后,@getIndex方法获取索引值变更为e.currentIndex.index +- 示例项目 pages/updata/updata.vue增加滚动条拖动更新(数据动态打点)的demo +- 示例项目 pages/other/other.vue增加errorReload禁用错误点击重新加载的demo +## 2.1.2-20210509(2021-05-09) +秋云图表组件 修复APP端初始化时就传入chartData或lacaldata不显示图表的bug +## 2.1.1-20210509(2021-05-09) +- 秋云图表组件 变更ECharts的eopts配置在renderjs内执行,支持在config-echarts.js配置文件内写function配置。 +- 秋云图表组件 修复APP端报错Prop being mutated: "onmouse"错误的bug。 +- 秋云图表组件 修复APP端报错Error: Not Found:Page[6][-1,27] at view.umd.min.js:1的bug。 +## 2.1.0-20210507(2021-05-07) +- 秋云图表组件 修复初始化时就有数据或者数据更新的时候loading加载动画闪动的bug +- uCharts.js 修复x轴format方法categories为字符串类型时返回NaN的bug +- uCharts.js 修复series.textColor、legend.fontColor未执行全局默认颜色的bug +## 2.1.0-20210506(2021-05-06) +- 秋云图表组件 修复极个别情况下报错item.properties undefined的bug +- 秋云图表组件 修复极个别情况下关闭加载动画reshow不起作用,无法显示图表的bug +- 示例项目 pages/ucharts/ucharts.vue 增加时间轴折线图(type="tline")、时间轴区域图(type="tarea")、散点图(type="scatter")、气泡图demo(type="bubble")、倒三角形漏斗图(opts.extra.funnel.type="triangle")、金字塔形漏斗图(opts.extra.funnel.type="pyramid") +- 示例项目 pages/format-u/format-u.vue 增加X轴format格式化示例 +- uCharts.js 升级至v2.1.0版本 +- uCharts.js 修复 玫瑰图面积模式点击tooltip位置不正确的bug +- uCharts.js 修复 玫瑰图点击图例,只剩一个类别显示空白的bug +- uCharts.js 修复 饼图类图点击图例,其他图表tooltip位置某些情况下不准的bug +- uCharts.js 修复 x轴为矢量轴(时间轴)情况下,点击tooltip位置不正确的bug +- uCharts.js 修复 词云图获取点击索引偶尔不准的bug +- uCharts.js 增加 直角坐标系图表X轴format格式化方法(原生uCharts.js用法请使用formatter) +- uCharts.js 增加 漏斗图扩展配置,倒三角形(opts.extra.funnel.type="triangle"),金字塔形(opts.extra.funnel.type="pyramid") +- uCharts.js 增加 散点图(opts.type="scatter")、气泡图(opts.type="bubble") +- 后期计划 完善散点图、气泡图,增加markPoints标记点,增加横向条状图。 +## 2.0.0-20210502(2021-05-02) +- uCharts.js 修复词云图获取点击索引不正确的bug +## 2.0.0-20210501(2021-05-01) +- 秋云图表组件 修复QQ小程序、百度小程序在关闭动画效果情况下,v-for循环使用图表,显示不正确的bug +## 2.0.0-20210426(2021-04-26) +- 秋云图表组件 修复QQ小程序不支持canvas2d的bug +- 秋云图表组件 修复钉钉小程序某些情况点击坐标计算错误的bug +- uCharts.js 增加 extra.column.categoryGap 参数,柱状图类每个category点位(X轴点)柱子组之间的间距 +- uCharts.js 增加 yAxis.data[i].titleOffsetY 参数,标题纵向偏移距离,负数为向上偏移,正数向下偏移 +- uCharts.js 增加 yAxis.data[i].titleOffsetX 参数,标题横向偏移距离,负数为向左偏移,正数向右偏移 +- uCharts.js 增加 extra.gauge.labelOffset 参数,仪表盘标签文字径向便宜距离,默认13px +## 2.0.0-20210422-2(2021-04-22) +秋云图表组件 修复 formatterAssign 未判断 args[key] == null 的情况导致栈溢出的 bug +## 2.0.0-20210422(2021-04-22) +- 秋云图表组件 修复H5、APP、支付宝小程序、微信小程序canvas2d模式下横屏模式的bug +## 2.0.0-20210421(2021-04-21) +- uCharts.js 修复多行图例的情况下,图例在上方或者下方时,图例float为左侧或者右侧时,第二行及以后的图例对齐方式不正确的bug +## 2.0.0-20210420(2021-04-20) +- 秋云图表组件 修复微信小程序开启canvas2d模式后,windows版微信小程序不支持canvas2d模式的bug +- 秋云图表组件 修改非uni_modules版本为v2.0版本qiun-data-charts组件 +## 2.0.0-20210419(2021-04-19) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX,如仍不好用,请重启电脑; +## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。 +## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。 +## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn) +## 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- uCharts.js 修复混合图中柱状图单独设置颜色不生效的bug +- uCharts.js 修复多Y轴单独设置fontSize时,开启canvas2d后,未对应放大字体的bug +## 2.0.0-20210418(2021-04-18) +- 秋云图表组件 增加directory配置,修复H5端history模式下如果发布到二级目录无法正确加载echarts.min.js的bug +## 2.0.0-20210416(2021-04-16) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX,如仍不好用,请重启电脑; +## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。 +## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。 +## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn) +## 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- 秋云图表组件 修复APP端某些情况下报错`Not Found Page`的bug,fix by 高级bug开发技术员 +- 示例项目 修复APP端v-for循环某些情况下报错`Not Found Page`的bug,fix by 高级bug开发技术员 +- uCharts.js 修复非直角坐标系tooltip提示窗右侧超出未变换方向显示的bug +## 2.0.0-20210415(2021-04-15) +- 秋云图表组件 修复H5端发布到二级目录下echarts无法加载的bug +- 秋云图表组件 修复某些情况下echarts.off('finished')移除监听事件报错的bug +## 2.0.0-20210414(2021-04-14) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX,如仍不好用,请重启电脑; +## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。 +## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。 +## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn) +## 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- 秋云图表组件 修复H5端在cli项目下ECharts引用地址错误的bug +- 示例项目 增加ECharts的formatter用法的示例(详见示例项目format-e.vue) +- uCharts.js 增加圆环图中心背景色的配置extra.ring.centerColor +- uCharts.js 修复微信小程序安卓端柱状图开启透明色后显示不正确的bug +## 2.0.0-20210413(2021-04-13) +- 秋云图表组件 修复百度小程序多个图表真机未能正确获取根元素dom尺寸的bug +- 秋云图表组件 修复百度小程序横屏模式方向不正确的bug +- 秋云图表组件 修改ontouch时,@getTouchStart@getTouchMove@getTouchEnd的触发条件 +- uCharts.js 修复饼图类数据格式series属性不生效的bug +- uCharts.js 增加时序区域图 详见示例项目中ucharts.vue +## 2.0.0-20210412-2(2021-04-12) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX。如仍不好用,请重启电脑,此问题已于DCloud官方确认,HBuilderX下个版本会修复。 +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在uniCloudAdmin中的应用 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- 秋云图表组件 修复uCharts在APP端横屏模式下不能正确渲染的bug +- 示例项目 增加ECharts柱状图渐变色、圆角柱状图、横向柱状图(条状图)的示例 +## 2.0.0-20210412(2021-04-12) +- 秋云图表组件 修复created中判断echarts导致APP端无法识别,改回mounted中判断echarts初始化 +- uCharts.js 修复2d模式下series.textOffset未乘像素比的bug +## 2.0.0-20210411(2021-04-11) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册组件,请重启HBuilderX,并清空小程序开发者工具缓存。 +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在uniCloudAdmin中的应用 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- uCharts.js 折线图区域图增加connectNulls断点续连的功能,详见示例项目中ucharts.vue +- 秋云图表组件 变更初始化方法为created,变更type2d默认值为true,优化2d模式下组件初始化后dom获取不到的bug +- 秋云图表组件 修复左右布局时,右侧图表点击坐标错误的bug,修复tooltip柱状图自定义颜色显示object的bug +## 2.0.0-20210410(2021-04-10) +- 修复左右布局时,右侧图表点击坐标错误的bug,修复柱状图自定义颜色tooltip显示object的bug +- 增加标记线及柱状图自定义颜色的demo +## 2.0.0-20210409(2021-04-08) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧【使用HBuilderX导入插件】即可体验,DEMO演示及在线生成工具(v2.0文档)[https://demo.ucharts.cn](https://demo.ucharts.cn) +## 图表组件在uniCloudAdmin中的应用 [UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- uCharts.js 修复钉钉小程序百度小程序measureText不准确的bug,修复2d模式下饼图类activeRadius为按比例放大的bug +- 修复组件在支付宝小程序端点击位置不准确的bug +## 2.0.0-20210408(2021-04-07) +- 修复组件在支付宝小程序端不能显示的bug(目前支付宝小程不能点击交互,后续修复) +- uCharts.js 修复高分屏下柱状图类,圆弧进度条 自定义宽度不能按比例放大的bug +## 2.0.0-20210407(2021-04-06) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧【使用HBuilderX导入插件】即可体验,DEMO演示及在线生成工具(v2.0文档)[https://demo.ucharts.cn](https://demo.ucharts.cn) +## 增加 通过tofix和unit快速格式化y轴的demo add by `howcode` +## 增加 图表组件在uniCloudAdmin中的应用 [UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +## 2.0.0-20210406(2021-04-05) +# 秋云图表组件+uCharts v2.0版本同步上线,使用方法详见https://demo.ucharts.cn帮助页 +## 2.0.0(2021-04-05) +# 秋云图表组件+uCharts v2.0版本同步上线,使用方法详见https://demo.ucharts.cn帮助页 diff --git a/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue b/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue new file mode 100644 index 0000000..eedd422 --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue @@ -0,0 +1,1553 @@ + + + + + + + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue b/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue new file mode 100644 index 0000000..b15b19f --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue b/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue new file mode 100644 index 0000000..b701394 --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue b/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue new file mode 100644 index 0000000..7541b31 --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue b/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue new file mode 100644 index 0000000..8e14db3 --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue b/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue new file mode 100644 index 0000000..77c55b7 --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue @@ -0,0 +1,222 @@ + + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue b/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue new file mode 100644 index 0000000..cb93a55 --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue @@ -0,0 +1,229 @@ + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue b/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue new file mode 100644 index 0000000..7789060 --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.js b/uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.js new file mode 100644 index 0000000..ff38110 --- /dev/null +++ b/uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.js @@ -0,0 +1,420 @@ +/* + * uCharts® + * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台 + * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved. + * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) + * 复制使用请保留本段注释,感谢支持开源! + * + * uCharts®官方网站 + * https://www.uCharts.cn + * + * 开源地址: + * https://gitee.com/uCharts/uCharts + * + * uni-app插件市场地址: + * http://ext.dcloud.net.cn/plugin?id=271 + * + */ + +// 通用配置项 + +// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性 +const color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc']; + +module.exports = { + //demotype为自定义图表类型 + "type": ["pie", "ring", "rose", "funnel", "line", "column", "area", "radar", "gauge","candle","demotype"], + //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型例如最后的"demotype" + "categories": ["line", "column", "area", "radar", "gauge", "candle","demotype"], + //instance为实例变量承载属性,option为eopts承载属性,不要删除 + "instance": {}, + "option": {}, + //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换 + "formatter":{ + "tooltipDemo1":function(res){ + let result = '' + for (let i in res) { + if (i == 0) { + result += res[i].axisValueLabel + '年销售额' + } + let value = '--' + if (res[i].data !== null) { + value = res[i].data + } + // #ifdef H5 + result += '\n' + res[i].seriesName + ':' + value + ' 万元' + // #endif + + // #ifdef APP-PLUS + result += '
' + res[i].marker + res[i].seriesName + ':' + value + ' 万元' + // #endif + } + return result; + }, + legendFormat:function(name){ + return "自定义图例+"+name; + }, + yAxisFormatDemo:function (value, index) { + return value + '元'; + }, + seriesFormatDemo:function(res){ + return res.name + '年' + res.value + '元'; + } + }, + //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在eopts参数,会将demotype与eopts中option合并后渲染图表。 + "demotype":{ + "color": color, + //在这里填写echarts的option即可 + + }, + //下面是自定义配置,请添加项目所需的通用配置 + "column": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'axis' + }, + "grid": { + "top": 30, + "bottom": 50, + "right": 15, + "left": 40 + }, + "legend": { + "bottom": 'left', + }, + "toolbox": { + "show": false, + }, + "xAxis": { + "type": 'category', + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + "boundaryGap": true, + "data": [] + }, + "yAxis": { + "type": 'value', + "axisTick": { + "show": false, + }, + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + }, + "seriesTemplate": { + "name": '', + "type": 'bar', + "data": [], + "barwidth": 20, + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + }, + }, + "line": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'axis' + }, + "grid": { + "top": 30, + "bottom": 50, + "right": 15, + "left": 40 + }, + "legend": { + "bottom": 'left', + }, + "toolbox": { + "show": false, + }, + "xAxis": { + "type": 'category', + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + "boundaryGap": true, + "data": [] + }, + "yAxis": { + "type": 'value', + "axisTick": { + "show": false, + }, + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + }, + "seriesTemplate": { + "name": '', + "type": 'line', + "data": [], + "barwidth": 20, + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + }, + }, + "area": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'axis' + }, + "grid": { + "top": 30, + "bottom": 50, + "right": 15, + "left": 40 + }, + "legend": { + "bottom": 'left', + }, + "toolbox": { + "show": false, + }, + "xAxis": { + "type": 'category', + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + "boundaryGap": true, + "data": [] + }, + "yAxis": { + "type": 'value', + "axisTick": { + "show": false, + }, + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + }, + "seriesTemplate": { + "name": '', + "type": 'line', + "data": [], + "areaStyle": {}, + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + }, + }, + "pie": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'item' + }, + "grid": { + "top": 40, + "bottom": 30, + "right": 15, + "left": 15 + }, + "legend": { + "bottom": 'left', + }, + "seriesTemplate": { + "name": '', + "type": 'pie', + "data": [], + "radius": '50%', + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + }, + }, + "ring": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'item' + }, + "grid": { + "top": 40, + "bottom": 30, + "right": 15, + "left": 15 + }, + "legend": { + "bottom": 'left', + }, + "seriesTemplate": { + "name": '', + "type": 'pie', + "data": [], + "radius": ['40%', '70%'], + "avoidLabelOverlap": false, + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + "labelLine": { + "show": true + }, + }, + }, + "rose": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'item' + }, + "legend": { + "top": 'bottom' + }, + "seriesTemplate": { + "name": '', + "type": 'pie', + "data": [], + "radius": "55%", + "center": ['50%', '50%'], + "rosetype": 'area', + }, + }, + "funnel": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'item', + "formatter": "{b} : {c}%" + }, + "legend": { + "top": 'bottom' + }, + "seriesTemplate": { + "name": '', + "type": 'funnel', + "left": '10%', + "top": 60, + "bottom": 60, + "width": '80%', + "min": 0, + "max": 100, + "minSize": '0%', + "maxSize": '100%', + "sort": 'descending', + "gap": 2, + "label": { + "show": true, + "position": 'inside' + }, + "labelLine": { + "length": 10, + "lineStyle": { + "width": 1, + "type": 'solid' + } + }, + "itemStyle": { + "bordercolor": '#fff', + "borderwidth": 1 + }, + "emphasis": { + "label": { + "fontSize": 20 + } + }, + "data": [], + }, + }, + "gauge": { + "color": color, + "tooltip": { + "formatter": '{a}
{b} : {c}%' + }, + "seriesTemplate": { + "name": '业务指标', + "type": 'gauge', + "detail": {"formatter": '{value}%'}, + "data": [{"value": 50, "name": '完成率'}] + }, + }, + "candle": { + "xAxis": { + "data": [] + }, + "yAxis": {}, + "color": color, + "title": { + "text": '' + }, + "dataZoom": [{ + "type": 'inside', + "xAxisIndex": [0, 1], + "start": 10, + "end": 100 + }, + { + "show": true, + "xAxisIndex": [0, 1], + "type": 'slider', + "bottom": 10, + "start": 10, + "end": 100 + } + ], + "seriesTemplate": { + "name": '', + "type": 'k', + "data": [], + }, + } +} diff --git a/uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js b/uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js new file mode 100644 index 0000000..40bd4a3 --- /dev/null +++ b/uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js @@ -0,0 +1,767 @@ +/* + * uCharts® + * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台 + * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved. + * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) + * 复制使用请保留本段注释,感谢支持开源! + * + * uCharts®官方网站 + * https://www.uCharts.cn + * + * 开源地址: + * https://gitee.com/uCharts/uCharts + * + * uni-app插件市场地址: + * http://ext.dcloud.net.cn/plugin?id=271 + * + */ + +// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性 +const color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc']; + +//事件转换函数,主要用作格式化x轴为时间轴,根据需求自行修改 +const formatDateTime = (timeStamp, returnType)=>{ + var date = new Date(); + date.setTime(timeStamp * 1000); + var y = date.getFullYear(); + var m = date.getMonth() + 1; + m = m < 10 ? ('0' + m) : m; + var d = date.getDate(); + d = d < 10 ? ('0' + d) : d; + var h = date.getHours(); + h = h < 10 ? ('0' + h) : h; + var minute = date.getMinutes(); + var second = date.getSeconds(); + minute = minute < 10 ? ('0' + minute) : minute; + second = second < 10 ? ('0' + second) : second; + if(returnType == 'full'){return y + '-' + m + '-' + d + ' '+ h +':' + minute + ':' + second;} + if(returnType == 'y-m-d'){return y + '-' + m + '-' + d;} + if(returnType == 'h:m'){return h +':' + minute;} + if(returnType == 'h:m:s'){return h +':' + minute +':' + second;} + return [y, m, d, h, minute, second]; +} + +module.exports = { + //demotype为自定义图表类型,一般不需要自定义图表类型,只需要改根节点上对应的类型即可 + "type":["pie","ring","rose","word","funnel","map","arcbar","line","column","bar","area","radar","gauge","candle","mix","tline","tarea","scatter","bubble","demotype"], + "range":["饼状图","圆环图","玫瑰图","词云图","漏斗图","地图","圆弧进度条","折线图","柱状图","条状图","区域图","雷达图","仪表盘","K线图","混合图","时间轴折线","时间轴区域","散点图","气泡图","自定义类型"], + //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的"demotype" + //自定义类型时需要注意"tline","tarea","scatter","bubble"等时间轴(矢量x轴)类图表,没有categories,不需要加入categories + "categories":["line","column","bar","area","radar","gauge","candle","mix","demotype"], + //instance为实例变量承载属性,不要删除 + "instance":{}, + //option为opts及eopts承载属性,不要删除 + "option":{}, + //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换 + "formatter":{ + "yAxisDemo1":function(val){return val+'元'}, + "yAxisDemo2":function(val){return val.toFixed(2)}, + "xAxisDemo1":function(val){return val+'年'}, + "xAxisDemo2":function(val){return formatDateTime(val,'h:m')}, + "seriesDemo1":function(val){return val+'元'}, + "tooltipDemo1":function(item, category, index, opts){ + if(index==0){ + return '随便用'+item.data+'年' + }else{ + return '其他我没改'+item.data+'天' + } + }, + "pieDemo":function(val, index, series){ + if(index !== undefined){ + return series[index].name+':'+series[index].data+'元' + } + }, + }, + //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。 + "demotype":{ + //我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置 + "type": "line", + "color": color, + "padding": [15,10,0,15], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "gridType": "dash", + "dashLength": 2, + }, + "legend": { + }, + "extra": { + "line": { + "type": "curve", + "width": 2 + }, + } + }, + //下面是自定义配置,请添加项目所需的通用配置 + "pie":{ + "type": "pie", + "color": color, + "padding": [5,5,5,5], + "extra": { + "pie": { + "activeOpacity": 0.5, + "activeRadius": 10, + "offsetAngle": 0, + "labelWidth": 15, + "border": true, + "borderWidth": 3, + "borderColor": "#FFFFFF" + }, + } + }, + "ring":{ + "type": "ring", + "color": color, + "padding": [5,5,5,5], + "rotate": false, + "dataLabel": true, + "legend": { + "show": true, + "position": "right", + "lineHeight": 25, + }, + "title": { + "name": "收益率", + "fontSize": 15, + "color": "#666666" + }, + "subtitle": { + "name": "70%", + "fontSize": 25, + "color": "#7cb5ec" + }, + "extra": { + "ring": { + "ringWidth":30, + "activeOpacity": 0.5, + "activeRadius": 10, + "offsetAngle": 0, + "labelWidth": 15, + "border": true, + "borderWidth": 3, + "borderColor": "#FFFFFF" + }, + }, + }, + "rose":{ + "type": "rose", + "color": color, + "padding": [5,5,5,5], + "legend": { + "show": true, + "position": "left", + "lineHeight": 25, + }, + "extra": { + "rose": { + "type": "area", + "minRadius": 50, + "activeOpacity": 0.5, + "activeRadius": 10, + "offsetAngle": 0, + "labelWidth": 15, + "border": false, + "borderWidth": 2, + "borderColor": "#FFFFFF" + }, + } + }, + "word":{ + "type": "word", + "color": color, + "extra": { + "word": { + "type": "normal", + "autoColors": false + } + } + }, + "funnel":{ + "type": "funnel", + "color": color, + "padding": [15,15,0,15], + "extra": { + "funnel": { + "activeOpacity": 0.3, + "activeWidth": 10, + "border": true, + "borderWidth": 2, + "borderColor": "#FFFFFF", + "fillOpacity": 1, + "labelAlign": "right" + }, + } + }, + "map":{ + "type": "map", + "color": color, + "padding": [0,0,0,0], + "dataLabel": true, + "extra": { + "map": { + "border": true, + "borderWidth": 1, + "borderColor": "#666666", + "fillOpacity": 0.6, + "activeBorderColor": "#F04864", + "activeFillColor": "#FACC14", + "activeFillOpacity": 1 + }, + } + }, + "arcbar":{ + "type": "arcbar", + "color": color, + "title": { + "name": "百分比", + "fontSize": 25, + "color": "#00FF00" + }, + "subtitle": { + "name": "默认标题", + "fontSize": 15, + "color": "#666666" + }, + "extra": { + "arcbar": { + "type": "default", + "width": 12, + "backgroundColor": "#E9E9E9", + "startAngle": 0.75, + "endAngle": 0.25, + "gap": 2 + } + } + }, + "line":{ + "type": "line", + "color": color, + "padding": [15,10,0,15], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "gridType": "dash", + "dashLength": 2, + }, + "legend": { + }, + "extra": { + "line": { + "type": "straight", + "width": 2 + }, + } + }, + "tline":{ + "type": "line", + "color": color, + "padding": [15,10,0,15], + "xAxis": { + "disableGrid": false, + "boundaryGap":"justify", + }, + "yAxis": { + "gridType": "dash", + "dashLength": 2, + "data":[ + { + "min":0, + "max":80 + } + ] + }, + "legend": { + }, + "extra": { + "line": { + "type": "curve", + "width": 2 + }, + } + }, + "tarea":{ + "type": "area", + "canvasId": "", + "canvas2d": false, + "background": "none", + "animation": true, + "timing": "easeOut", + "duration": 1000, + "color":color, + "padding": [ + 25, + 0, + -15, + 10 + ], + "rotate": false, + "errorReload": true, + "fontSize": 13, + "fontColor": "#666666", + "enableScroll": false, + "touchMoveLimit": 60, + "enableMarkLine": false, + "dataLabel": false, + "dataPointShape": false, + "dataPointShapeType": "solid", + "tapLegend": false, + "xAxis": { + "disabled": true, + "axisLine": false, + "axisLineColor": "#CCCCCC", + "calibration": false, + "fontColor": "#666666", + "fontSize": 13, + "rotateLabel": false, + "itemCount": 5, + "boundaryGap": "justify", + "disableGrid": true, + "gridColor": "#CCCCCC", + "gridType": "solid", + "dashLength": 4, + "gridEval": 1, + "scrollShow": false, + "scrollAlign": "left", + "scrollColor": "#A6A6A6", + "scrollBackgroundColor": "#EFEBEF", + "format": "" + }, + "yAxis": { + "disabled": true, + "disableGrid": true, + "splitNumber": 5, + "gridType": "dash", + "dashLength": 2, + "gridColor": "#CCCCCC", + "padding": 10, + "showTitle": false, + "data": [ + { + "min": 0, + "max": 80, + "axisLine": true, + "disabled": false, + "calibration": false + } + ] + }, + "legend": { + "show": false, + "position": "bottom", + "float": "center", + "padding": 5, + "margin": 5, + "backgroundColor": "rgba(0,0,0,0)", + "borderColor": "rgba(0,0,0,0)", + "borderWidth": 0, + "fontSize": 13, + "fontColor": "#666666", + "lineHeight": 11, + "hiddenColor": "#CECECE", + "itemGap": 10 + }, + "extra": { + "area": { + "type": "curve", + "opacity": 1, + "addLine": true, + "width": 0.8, + "gradient": true + }, + "tooltip": { + "showBox": false, + "showArrow": true, + "showCategory": false, + "borderWidth": 0, + "borderRadius": 0, + "borderColor": "#000000", + "borderOpacity": 0.7, + "bgColor": "#000000", + "bgOpacity": 0.7, + "gridType": "solid", + "dashLength": 4, + "gridColor": "#CCCCCC", + "fontColor": "#FFFFFF", + "splitLine": false, + "horizentalLine": false, + "xAxisLabel": false, + "yAxisLabel": false, + "labelBgColor": "#FFFFFF", + "labelBgOpacity": 0.7, + "labelFontColor": "#666666" + }, + "markLine": { + "type": "solid", + "dashLength": 4, + "data": [] + } + } + }, + "column":{ + "type": "column", + "color": color, + "padding": [15,15,0,5], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "data":[{"min":0}] + }, + "legend": { + }, + "extra": { + "column": { + "type": "group", + "width": 30, + "meterBorde": 1, + "meterFillColor": "#FFFFFF", + "activeBgColor": "#000000", + "activeBgOpacity": 0.08 + }, + } + }, + "bar":{ + "type": "bar", + "color": color, + "padding": [15,30,0,5], + "xAxis": { + "boundaryGap":"justify", + "disableGrid":false, + "min":0, + "axisLine":false + }, + "yAxis": { + }, + "legend": { + }, + "extra": { + "bar": { + "type": "group", + "width": 30, + "meterBorde": 1, + "meterFillColor": "#FFFFFF", + "activeBgColor": "#000000", + "activeBgOpacity": 0.08 + }, + } + }, + "area":{ + "type": "area", + "canvasId": "", + "canvas2d": false, + "background": "none", + "animation": true, + "timing": "easeOut", + "duration": 1000, + "color": [ + "#1890FF", + "#91CB74", + "#FAC858", + "#EE6666", + "#73C0DE", + "#3CA272", + "#FC8452", + "#9A60B4", + "#ea7ccc" + ], + "padding": [ + 15, + 15, + 0, + 15 + ], + "rotate": false, + "errorReload": true, + "fontSize": 13, + "fontColor": "#666666", + "enableScroll": false, + "touchMoveLimit": 60, + "enableMarkLine": false, + "dataLabel": false, + "dataPointShape": false, + "dataPointShapeType": "solid", + "tapLegend": true, + "xAxis": { + "disabled": true, + "axisLine": false, + "axisLineColor": "#CCCCCC", + "calibration": false, + "fontColor": "#666666", + "fontSize": 13, + "rotateLabel": false, + "itemCount": 5, + "boundaryGap": "center", + "disableGrid": true, + "gridColor": "#CCCCCC", + "gridType": "solid", + "dashLength": 4, + "gridEval": 1, + "scrollShow": false, + "scrollAlign": "left", + "scrollColor": "#A6A6A6", + "scrollBackgroundColor": "#EFEBEF", + "format": "" + }, + "yAxis": { + "disabled": true, + "disableGrid": true, + "splitNumber": 5, + "gridType": "dash", + "dashLength": 2, + "gridColor": "#CCCCCC", + "padding": 10, + "showTitle": true, + "data": [] + }, + "legend": { + "show": false, + "position": "bottom", + "float": "center", + "padding": 5, + "margin": 5, + "backgroundColor": "rgba(0,0,0,0)", + "borderColor": "rgba(0,0,0,0)", + "borderWidth": 0, + "fontSize": 13, + "fontColor": "#666666", + "lineHeight": 11, + "hiddenColor": "#CECECE", + "itemGap": 10 + }, + "extra": { + "area": { + "type": "straight", + "opacity": 0.2, + "addLine": false, + "width": 2, + "gradient": true + }, + "tooltip": { + "showBox": true, + "showArrow": true, + "showCategory": false, + "borderWidth": 0, + "borderRadius": 0, + "borderColor": "#000000", + "borderOpacity": 0.7, + "bgColor": "#000000", + "bgOpacity": 0.7, + "gridType": "solid", + "dashLength": 4, + "gridColor": "#CCCCCC", + "fontColor": "#FFFFFF", + "splitLine": true, + "horizentalLine": false, + "xAxisLabel": false, + "yAxisLabel": false, + "labelBgColor": "#FFFFFF", + "labelBgOpacity": 0.7, + "labelFontColor": "#666666" + }, + "markLine": { + "type": "solid", + "dashLength": 4, + "data": [] + } + } + }, + "radar":{ + "type": "radar", + "color": color, + "padding": [5,5,5,5], + "dataLabel": false, + "legend": { + "show": true, + "position": "right", + "lineHeight": 25, + }, + "extra": { + "radar": { + "gridType": "radar", + "gridColor": "#CCCCCC", + "gridCount": 3, + "opacity": 0.2, + "max": 200 + }, + } + }, + "gauge":{ + "type": "gauge", + "color": color, + "title": { + "name": "66Km/H", + "fontSize": 25, + "color": "#2fc25b", + "offsetY": 50 + }, + "subtitle": { + "name": "实时速度", + "fontSize": 15, + "color": "#1890ff", + "offsetY": -50 + }, + "extra": { + "gauge": { + "type": "default", + "width": 30, + "labelColor": "#666666", + "startAngle": 0.75, + "endAngle": 0.25, + "startNumber": 0, + "endNumber": 100, + "labelFormat": "", + "splitLine": { + "fixRadius": 0, + "splitNumber": 10, + "width": 30, + "color": "#FFFFFF", + "childNumber": 5, + "childWidth": 12 + }, + "pointer": { + "width": 24, + "color": "auto" + } + } + } + }, + "candle":{ + "type": "candle", + "color": color, + "padding": [15,15,0,15], + "enableScroll": true, + "enableMarkLine": true, + "dataLabel": false, + "xAxis": { + "labelCount": 4, + "itemCount": 40, + "disableGrid": true, + "gridColor": "#CCCCCC", + "gridType": "solid", + "dashLength": 4, + "scrollShow": true, + "scrollAlign": "left", + "scrollColor": "#A6A6A6", + "scrollBackgroundColor": "#EFEBEF" + }, + "yAxis": { + }, + "legend": { + }, + "extra": { + "candle": { + "color": { + "upLine": "#f04864", + "upFill": "#f04864", + "downLine": "#2fc25b", + "downFill": "#2fc25b" + }, + "average": { + "show": true, + "name": ["MA5","MA10","MA30"], + "day": [5,10,20], + "color": ["#1890ff","#2fc25b","#facc14"] + } + }, + "markLine": { + "type": "dash", + "dashLength": 5, + "data": [ + { + "value": 2150, + "lineColor": "#f04864", + "showLabel": true + }, + { + "value": 2350, + "lineColor": "#f04864", + "showLabel": true + } + ] + } + } + }, + "mix":{ + "type": "mix", + "color": color, + "padding": [15,15,0,15], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "disabled": false, + "disableGrid": false, + "splitNumber": 5, + "gridType": "dash", + "dashLength": 4, + "gridColor": "#CCCCCC", + "padding": 10, + "showTitle": true, + "data": [] + }, + "legend": { + }, + "extra": { + "mix": { + "column": { + "width": 20 + } + }, + } + }, + "scatter":{ + "type": "scatter", + "color":color, + "padding":[15,15,0,15], + "dataLabel":false, + "xAxis": { + "disableGrid": false, + "gridType":"dash", + "splitNumber":5, + "boundaryGap":"justify", + "min":0 + }, + "yAxis": { + "disableGrid": false, + "gridType":"dash", + }, + "legend": { + }, + "extra": { + "scatter": { + }, + } + }, + "bubble":{ + "type": "bubble", + "color":color, + "padding":[15,15,0,15], + "xAxis": { + "disableGrid": false, + "gridType":"dash", + "splitNumber":5, + "boundaryGap":"justify", + "min":0, + "max":250 + }, + "yAxis": { + "disableGrid": false, + "gridType":"dash", + "data":[{ + "min":0, + "max":150 + }] + }, + "legend": { + }, + "extra": { + "bubble": { + "border":2, + "opacity": 0.5, + }, + } + } +} \ No newline at end of file diff --git a/uni_modules/qiun-data-charts/js_sdk/u-charts/readme.md b/uni_modules/qiun-data-charts/js_sdk/u-charts/readme.md new file mode 100644 index 0000000..953abed --- /dev/null +++ b/uni_modules/qiun-data-charts/js_sdk/u-charts/readme.md @@ -0,0 +1,12 @@ +# uCharts JSSDK说明 +1、如不使用uCharts组件,可直接引用u-charts.js,打包编译后会`自动压缩`,压缩后体积约为`98kb`。 +2、如果100kb的体积仍需压缩,请手动删除u-charts.js内您不需要的图表类型,如k线图candle。 +3、config-ucharts.js为uCharts组件的用户配置文件,升级前请`自行备份config-ucharts.js`文件,以免被强制覆盖。 +3、config-echarts.js为ECharts组件的用户配置文件,升级前请`自行备份config-echarts.js`文件,以免被强制覆盖。 + +# v1.0转v2.0注意事项 +1、opts.colors变更为opts.color +2、ring圆环图的扩展配置由extra.pie变更为extra.ring +3、混合图借用的扩展配置由extra.column变更为extra.mix.column +4、全部涉及到format的格式化属性变更为formatter +5、不需要再传canvasId及$this参数,如果通过uChats获取context,可能会导致this实例混乱,导致小程序开发者工具报错。如果不使用qiun-data-charts官方组件,需要在new uCharts()实例化之前,自行获取canvas的上下文context(ctx),并传入new中的context(opts.context)。为了能跨更多的端,给您带来的不便敬请谅解。 \ No newline at end of file diff --git a/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js b/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js new file mode 100644 index 0000000..186484f --- /dev/null +++ b/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js @@ -0,0 +1,6816 @@ +/* + * uCharts® + * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台 + * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved. + * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) + * 复制使用请保留本段注释,感谢支持开源! + * + * uCharts®官方网站 + * https://www.uCharts.cn + * + * 开源地址: + * https://gitee.com/uCharts/uCharts + * + * uni-app插件市场地址: + * http://ext.dcloud.net.cn/plugin?id=271 + * + */ + +'use strict'; + +var config = { + version: 'v2.3.3-20210706', + yAxisWidth: 15, + yAxisSplit: 5, + xAxisHeight: 22, + xAxisLineHeight: 22, + legendHeight: 15, + yAxisTitleWidth: 15, + padding: [10, 10, 10, 10], + pixelRatio: 1, + rotate: false, + columePadding: 3, + fontSize: 13, + fontColor: '#666666', + dataPointShape: ['circle', 'circle', 'circle', 'circle'], + color: ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'], + linearColor: ['#0EE2F8', '#2BDCA8', '#FA7D8D', '#EB88E2', '#2AE3A0', '#0EE2F8', '#EB88E2', '#6773E3', '#F78A85'], + pieChartLinePadding: 15, + pieChartTextPadding: 5, + xAxisTextPadding: 3, + titleColor: '#333333', + titleFontSize: 20, + subtitleColor: '#999999', + subtitleFontSize: 15, + toolTipPadding: 3, + toolTipBackground: '#000000', + toolTipOpacity: 0.7, + toolTipLineHeight: 20, + radarLabelTextMargin: 13, + gaugeLabelTextMargin: 13 +}; + +var assign = function(target, ...varArgs) { + if (target == null) { + throw new TypeError('[uCharts] Cannot convert undefined or null to object'); + } + if (!varArgs || varArgs.length <= 0) { + return target; + } + // 深度合并对象 + function deepAssign(obj1, obj2) { + for (let key in obj2) { + obj1[key] = obj1[key] && obj1[key].toString() === "[object Object]" ? + deepAssign(obj1[key], obj2[key]) : obj1[key] = obj2[key]; + } + return obj1; + } + varArgs.forEach(val => { + target = deepAssign(target, val); + }); + return target; +}; + +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; + } +}; + +//兼容H5点击事件 +function getH5Offset(e) { + e.mp = { + changedTouches: [] + }; + e.mp.changedTouches.push({ + x: e.offsetX, + y: e.offsetY + }); + return e; +} + +// 经纬度转墨卡托 +function lonlat2mercator(longitude, latitude) { + var mercator = Array(2); + var x = longitude * 20037508.34 / 180; + var y = Math.log(Math.tan((90 + latitude) * Math.PI / 360)) / (Math.PI / 180); + y = y * 20037508.34 / 180; + mercator[0] = x; + mercator[1] = y; + return mercator; +} + +// 墨卡托转经纬度 +function mercator2lonlat(longitude, latitude) { + var lonlat = Array(2) + var x = longitude / 20037508.34 * 180; + var y = latitude / 20037508.34 * 180; + y = 180 / Math.PI * (2 * Math.atan(Math.exp(y * Math.PI / 180)) - Math.PI / 2); + lonlat[0] = x; + lonlat[1] = y; + return lonlat; +} + +// hex 转 rgba +function hexToRgb(hexValue, opc) { + var rgx = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; + var hex = hexValue.replace(rgx, function(m, r, g, b) { + return r + r + g + g + b + b; + }); + + var rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + var r = parseInt(rgb[1], 16); + var g = parseInt(rgb[2], 16); + var b = parseInt(rgb[3], 16); + return 'rgba(' + r + ',' + g + ',' + b + ',' + opc + ')'; +} + +function findRange(num, type, limit) { + if (isNaN(num)) { + throw new Error('[uCharts] series数据需为Number格式'); + } + 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 calCandleMA(dayArr, nameArr, colorArr, kdata) { + let seriesTemp = []; + for (let k = 0; k < dayArr.length; k++) { + let seriesItem = { + data: [], + name: nameArr[k], + color: colorArr[k] + }; + for (let i = 0, len = kdata.length; i < len; i++) { + if (i < dayArr[k]) { + seriesItem.data.push(null); + continue; + } + let sum = 0; + for (let j = 0; j < dayArr[k]; j++) { + sum += kdata[i - j][1]; + } + seriesItem.data.push(+(sum / dayArr[k]).toFixed(3)); + } + seriesTemp.push(seriesItem); + } + return seriesTemp; +} + +function calValidDistance(self, distance, chartData, config, opts) { + var dataChartAreaWidth = opts.width - opts.area[1] - opts.area[3]; + var dataChartWidth = chartData.eachSpacing * (opts.chartData.xAxisData.xAxisPoints.length - 1); + var validDistance = distance; + if (distance >= 0) { + validDistance = 0; + self.uevent.trigger('scrollLeft'); + self.scrollOption.position = 'left' + opts.xAxis.scrollPosition = 'left'; + } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) { + validDistance = dataChartAreaWidth - dataChartWidth; + self.uevent.trigger('scrollRight'); + self.scrollOption.position = 'right' + opts.xAxis.scrollPosition = 'right'; + } else { + self.scrollOption.position = distance + opts.xAxis.scrollPosition = distance; + } + 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; + } + } + function isNotMiddlePointX(points, i) { + if (points[i - 1] && points[i + 1]) { + return points[i].x >= Math.max(points[i - 1].x, points[i + 1].x) || points[i].x <= Math.min(points[i - 1].x, + points[i + 1].x); + } 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; + } + if (isNotMiddlePoint(points, i + 1)) { + pBy = points[i + 1].y; + } + if (isNotMiddlePoint(points, i)) { + pAy = points[i].y; + } + if (isNotMiddlePointX(points, i + 1)) { + pBx = points[i + 1].x; + } + if (isNotMiddlePointX(points, i)) { + pAx = points[i].x; + } + if (pAy >= Math.max(points[i].y, points[i + 1].y) || pAy <= Math.min(points[i].y, points[i + 1].y)) { + pAy = points[i].y; + } + if (pBy >= Math.max(points[i].y, points[i + 1].y) || pBy <= Math.min(points[i].y, points[i + 1].y)) { + pBy = points[i + 1].y; + } + if (pAx >= Math.max(points[i].x, points[i + 1].x) || pAx <= Math.min(points[i].x, points[i + 1].x)) { + pAx = points[i].x; + } + if (pBx >= Math.max(points[i].x, points[i + 1].x) || pBx <= Math.min(points[i].x, points[i + 1].x)) { + pBx = points[i + 1].x; + } + 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 fixPieSeries(series, opts, config){ + let pieSeriesArr = []; + if(series.length>0 && series[0].data.constructor.toString().indexOf('Array') > -1){ + opts._pieSeries_ = series; + let oldseries = series[0].data; + for (var i = 0; i < oldseries.length; i++) { + oldseries[i].formatter = series[0].formatter; + oldseries[i].data = oldseries[i].value; + pieSeriesArr.push(oldseries[i]); + } + opts.series = pieSeriesArr; + }else{ + pieSeriesArr = series; + } + return pieSeriesArr; +} + +function fillSeries(series, opts, config) { + // console.log(series, opts, config) + var index = 0; + for (var i = 0; i < series.length; i++) { + let item = series[i]; + // console.log(series[i]) + if (!item.color) { + item.color = config.color[index]; + index = (index + 1) % config.color.length; + } + if (!item.linearIndex) { + item.linearIndex = i; + } + if (!item.index) { + item.index = 0; + } + if (!item.type) { + item.type = opts.type; + } + if (typeof item.show == "undefined") { + item.show = true; + } + if (!item.type) { + item.type = opts.type; + } + if (!item.pointShape) { + item.pointShape = "circle"; + } + if (!item.legendShape) { + switch (item.type) { + case 'line': + item.legendShape = "line"; + break; + case 'column': + item.legendShape = "rect"; + break; + case 'area': + item.legendShape = "triangle"; + break; + case 'bar': + item.legendShape = "rect"; + break; + default: + item.legendShape = "circle"; + } + } + } + return series; +} + +function fillCustomColor(linearType, customColor, series, config) { + var newcolor = customColor || []; + if (linearType == 'custom' && newcolor.length == 0 ) { + newcolor = config.linearColor; + } + if (linearType == 'custom' && newcolor.length < series.length) { + let chazhi = series.length - newcolor.length; + for (var i = 0; i < chazhi; i++) { + newcolor.push(config.linearColor[(i + 1) % config.linearColor.length]); + } + } + return newcolor; +} + +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 if (range >= 0.01) { + limit = 0.01; + } else if (range >= 0.001) { + limit = 0.001; + } else if (range >= 0.0001) { + limit = 0.0001; + } else if (range >= 0.00001) { + limit = 0.00001; + } else { + limit = 0.000001; + } + return { + minRange: findRange(minData, 'lower', limit), + maxRange: findRange(maxData, 'upper', limit) + }; +} + +function measureText(text, fontSize, context) { + var width = 0; + text = String(text); + // #ifdef MP-ALIPAY || MP-BAIDU || APP-NVUE + context = false; + // #endif + if (context !== false && context !== undefined && context.setFontSize && context.measureText) { + context.setFontSize(fontSize); + return context.measureText(text).width; + } else { + var text = text.split(''); + for (let i = 0; i < text.length; i++) { + let item = text[i]; + 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 (/:/.test(item)) { + width += 2.5; + } 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 dataCombineStack(series, len) { + var sum = new Array(len); + for (var j = 0; j < sum.length; j++) { + sum[j] = 0; + } + for (var i = 0; i < series.length; i++) { + for (var j = 0; j < sum.length; j++) { + sum[j] += series[i].data[j]; + } + } + return series.reduce(function(a, b) { + return (a.data ? a.data : a).concat(b.data).concat(sum); + }, []); +} + +function getTouches(touches, opts, e) { + let x, y; + if (touches.clientX) { + if (opts.rotate) { + y = opts.height - touches.clientX * opts.pix; + x = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pix / 2) * (opts.pix - 1)) * opts.pix; + } else { + x = touches.clientX * opts.pix; + y = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pix / 2) * (opts.pix - 1)) * opts.pix; + } + } else { + if (opts.rotate) { + y = opts.height - touches.x * opts.pix; + x = touches.y * opts.pix; + } else { + x = touches.x * opts.pix; + y = touches.y * opts.pix; + } + } + return { + x: x, + y: y + } +} + +function getSeriesDataItem(series, index, group) { + var data = []; + var newSeries = []; + var indexIsArr = index.constructor.toString().indexOf('Array') > -1; + if(indexIsArr){ + let tempSeries = filterSeries(series); + for (var i = 0; i < group.length; i++) { + newSeries.push(tempSeries[group[i]]); + } + }else{ + newSeries = series; + }; + for (let i = 0; i < newSeries.length; i++) { + let item = newSeries[i]; + let tmpindex = -1; + if(indexIsArr){ + tmpindex = index[i]; + }else{ + tmpindex = index; + } + if (item.data[tmpindex] !== null && typeof item.data[tmpindex] !== 'undefined' && item.show) { + let seriesItem = {}; + seriesItem.color = item.color; + seriesItem.type = item.type; + seriesItem.style = item.style; + seriesItem.pointShape = item.pointShape; + seriesItem.disableLegend = item.disableLegend; + seriesItem.name = item.name; + seriesItem.show = item.show; + seriesItem.data = item.formatter ? item.formatter(item.data[tmpindex]) : item.data[tmpindex]; + data.push(seriesItem); + } + } + return data; +} + +function getMaxTextListLength(list, fontSize, context) { + var lengthList = list.map(function(item) { + return measureText(item, fontSize, context); + }); + 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, opts, index, group, categories) { + var option = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {}; + var calPoints = opts.chartData.calPoints?opts.chartData.calPoints:[]; + let points = {}; + if(group.length > 0){ + let filterPoints = []; + for (let i = 0; i < group.length; i++) { + filterPoints.push(calPoints[group[i]]) + } + points = filterPoints[0][index[0]]; + }else{ + points = calPoints[0][index]; + }; + var textList = seriesData.map(function(item) { + let titleText = null; + if (opts.categories && opts.categories.length>0) { + titleText = categories[index]; + }; + return { + text: option.formatter ? option.formatter(item, titleText, index, opts) : item.name + ': ' + item.data, + color: item.color + }; + }); + var offset = { + x: Math.round(points.x), + y: Math.round(points.y) + }; + return { + textList: textList, + offset: offset + }; +} + +function getMixToolTipData(seriesData, opts, index, categories) { + var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; + var points = opts.chartData.xAxisPoints[index] + opts.chartData.eachSpacing / 2; + var textList = seriesData.map(function(item) { + return { + text: option.formatter ? option.formatter(item, categories[index], index, opts) : item.name + ': ' + item.data, + color: item.color, + disableLegend: item.disableLegend ? true : false + }; + }); + textList = textList.filter(function(item) { + if (item.disableLegend !== true) { + return item; + } + }); + var offset = { + x: Math.round(points), + y: 0 + }; + return { + textList: textList, + offset: offset + }; +} + +function getCandleToolTipData(series, seriesData, opts, index, categories, extra) { + var option = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {}; + var calPoints = opts.chartData.calPoints; + let upColor = extra.color.upFill; + let downColor = extra.color.downFill; + //颜色顺序为开盘,收盘,最低,最高 + let color = [upColor, upColor, downColor, upColor]; + var textList = []; + seriesData.map(function(item) { + if (index == 0) { + if (item.data[1] - item.data[0] < 0) { + color[1] = downColor; + } else { + color[1] = upColor; + } + } else { + if (item.data[0] < series[index - 1][1]) { + color[0] = downColor; + } + if (item.data[1] < item.data[0]) { + color[1] = downColor; + } + if (item.data[2] > series[index - 1][1]) { + color[2] = upColor; + } + if (item.data[3] < series[index - 1][1]) { + color[3] = downColor; + } + } + let text1 = { + text: '开盘:' + item.data[0], + color: color[0] + }; + let text2 = { + text: '收盘:' + item.data[1], + color: color[1] + }; + let text3 = { + text: '最低:' + item.data[2], + color: color[2] + }; + let text4 = { + text: '最高:' + item.data[3], + color: color[3] + }; + textList.push(text1, text2, text3, text4); + }); + var validCalPoints = []; + var offset = { + x: 0, + y: 0 + }; + for (let i = 0; i < calPoints.length; i++) { + let points = calPoints[i]; + if (typeof points[index] !== 'undefined' && points[index] !== null) { + validCalPoints.push(points[index]); + } + } + offset.x = Math.round(validCalPoints[0][0].x); + return { + textList: textList, + offset: offset + }; +} + +function filterSeries(series) { + let tempSeries = []; + for (let i = 0; i < series.length; i++) { + if (series[i].show == true) { + tempSeries.push(series[i]) + } + } + return tempSeries; +} + +function findCurrentIndex(currentPoints, calPoints, opts, config) { + var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0; + var current={ index:-1, group:[] }; + var spacing = opts.chartData.eachSpacing / 2; + let xAxisPoints = []; + if (calPoints && calPoints.length > 0) { + if (!opts.categories) { + spacing = 0; + }else{ + for (let i = 1; i < opts.chartData.xAxisPoints.length; i++) { + xAxisPoints.push(opts.chartData.xAxisPoints[i] - spacing); + } + if ((opts.type == 'line' || opts.type == 'area') && opts.xAxis.boundaryGap == 'justify') { + xAxisPoints = opts.chartData.xAxisPoints; + } + } + if (isInExactChartArea(currentPoints, opts, config)) { + if (!opts.categories) { + let timePoints = Array(calPoints.length); + for (let i = 0; i < calPoints.length; i++) { + timePoints[i] = Array(calPoints[i].length) + for (let j = 0; j < calPoints[i].length; j++) { + timePoints[i][j] = (Math.abs(calPoints[i][j].x - currentPoints.x)); + } + }; + let pointValue = Array(timePoints.length); + let pointIndex = Array(timePoints.length); + for (let i = 0; i < timePoints.length; i++) { + pointValue[i] = Math.min.apply(null, timePoints[i]); + pointIndex[i] = timePoints[i].indexOf(pointValue[i]); + } + let minValue = Math.min.apply(null, pointValue); + current.index = []; + for (let i = 0; i < pointValue.length; i++) { + if(pointValue[i] == minValue){ + current.group.push(i); + current.index.push(pointIndex[i]); + } + }; + }else{ + xAxisPoints.forEach(function(item, index) { + if (currentPoints.x + offset + spacing > item) { + current.index = index; + } + }); + } + } + } + return current; +} + +function findBarChartCurrentIndex(currentPoints, calPoints, opts, config) { + var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0; + var current={ index:-1, group:[] }; + var spacing = opts.chartData.eachSpacing / 2; + let yAxisPoints = opts.chartData.yAxisPoints; + if (calPoints && calPoints.length > 0) { + if (isInExactChartArea(currentPoints, opts, config)) { + yAxisPoints.forEach(function(item, index) { + if (currentPoints.y + offset + spacing > item) { + current.index = index; + } + }); + } + } + return current; +} + +function findLegendIndex(currentPoints, legendData, opts) { + let currentIndex = -1; + let gap = 0; + if (isInExactLegendArea(currentPoints, legendData.area)) { + let points = legendData.points; + let index = -1; + for (let i = 0, len = points.length; i < len; i++) { + let item = points[i]; + for (let j = 0; j < item.length; j++) { + index += 1; + let area = item[j]['area']; + if (area && currentPoints.x > area[0] - gap && currentPoints.x < area[2] + gap && currentPoints.y > area[1] - gap && currentPoints.y < area[3] + gap) { + currentIndex = index; + break; + } + } + } + return currentIndex; + } + return currentIndex; +} + +function isInExactLegendArea(currentPoints, area) { + return currentPoints.x > area.start.x && currentPoints.x < area.end.x && currentPoints.y > area.start.y && currentPoints.y < area.end.y; +} + +function isInExactChartArea(currentPoints, opts, config) { + return currentPoints.x <= opts.width - opts.area[1] + 10 && currentPoints.x >= opts.area[3] - 10 && currentPoints.y >= opts.area[0] && currentPoints.y <= opts.height - opts.area[2]; +} + +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 findFunnelChartCurrentIndex(currentPoints, funnelData) { + var currentIndex = -1; + for (var i = 0, len = funnelData.series.length; i < len; i++) { + var item = funnelData.series[i]; + if (currentPoints.x > item.funnelArea[0] && currentPoints.x < item.funnelArea[2] && currentPoints.y > item.funnelArea[1] && currentPoints.y < item.funnelArea[3]) { + currentIndex = i; + break; + } + } + return currentIndex; +} + +function findWordChartCurrentIndex(currentPoints, wordData) { + var currentIndex = -1; + for (var i = 0, len = wordData.length; i < len; i++) { + var item = wordData[i]; + if (currentPoints.x > item.area[0] && currentPoints.x < item.area[2] && currentPoints.y > item.area[1] && currentPoints.y < item.area[3]) { + currentIndex = i; + break; + } + } + return currentIndex; +} + +function findMapChartCurrentIndex(currentPoints, opts) { + var currentIndex = -1; + var cData = opts.chartData.mapData; + var data = opts.series; + var tmp = pointToCoordinate(currentPoints.y, currentPoints.x, cData.bounds, cData.scale, cData.xoffset, cData.yoffset); + var poi = [tmp.x, tmp.y]; + for (var i = 0, len = data.length; i < len; i++) { + var item = data[i].geometry.coordinates; + if (isPoiWithinPoly(poi, item, opts.chartData.mapData.mercator)) { + currentIndex = i; + break; + } + } + return currentIndex; +} + +function findRoseChartCurrentIndex(currentPoints, pieData, opts) { + var currentIndex = -1; + var series = getRoseDataPoints(opts._series_, opts.extra.rose.type, pieData.radius, pieData.radius); + if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) { + var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x); + angle = -angle; + if(opts.extra.rose && opts.extra.rose.offsetAngle){ + angle = angle - opts.extra.rose.offsetAngle * Math.PI / 180; + } + for (var i = 0, len = series.length; i < len; i++) { + if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._rose_proportion_ * 2 * Math.PI)) { + currentIndex = i; + break; + } + } + } + return currentIndex; +} + +function findPieChartCurrentIndex(currentPoints, pieData, opts) { + var currentIndex = -1; + var series = getPieDataPoints(pieData.series); + if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) { + var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x); + angle = -angle; + if(opts.extra.pie && opts.extra.pie.offsetAngle){ + angle = angle - opts.extra.pie.offsetAngle * Math.PI / 180; + } + if(opts.extra.ring && opts.extra.ring.offsetAngle){ + angle = angle - opts.extra.ring.offsetAngle * Math.PI / 180; + } + for (var i = 0, len = series.length; i < len; i++) { + if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._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,eachSeries) { + var newPoints = []; + var items = []; + points.forEach(function(item, index) { + if(eachSeries.connectNulls){ + if (item !== null) { + items.push(item); + } + }else{ + 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, chartData, context) { + let legendData = { + area: { + start: { + x: 0, + y: 0 + }, + end: { + x: 0, + y: 0 + }, + width: 0, + height: 0, + wholeWidth: 0, + wholeHeight: 0 + }, + points: [], + widthArr: [], + heightArr: [] + }; + if (opts.legend.show === false) { + chartData.legendData = legendData; + return legendData; + } + let padding = opts.legend.padding * opts.pix; + let margin = opts.legend.margin * opts.pix; + let fontSize = opts.legend.fontSize ? opts.legend.fontSize * opts.pix : config.fontSize; + let shapeWidth = 15 * opts.pix; + let shapeRight = 5 * opts.pix; + let lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize); + if (opts.legend.position == 'top' || opts.legend.position == 'bottom') { + let legendList = []; + let widthCount = 0; + let widthCountArr = []; + let currentRow = []; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + let itemWidth = shapeWidth + shapeRight + measureText(item.name || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix; + if (widthCount + itemWidth > opts.width - opts.area[1] - opts.area[3]) { + legendList.push(currentRow); + widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix); + widthCount = itemWidth; + currentRow = [item]; + } else { + widthCount += itemWidth; + currentRow.push(item); + } + } + if (currentRow.length) { + legendList.push(currentRow); + widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix); + legendData.widthArr = widthCountArr; + let legendWidth = Math.max.apply(null, widthCountArr); + switch (opts.legend.float) { + case 'left': + legendData.area.start.x = opts.area[3]; + legendData.area.end.x = opts.area[3] + legendWidth + 2 * padding; + break; + case 'right': + legendData.area.start.x = opts.width - opts.area[1] - legendWidth - 2 * padding; + legendData.area.end.x = opts.width - opts.area[1]; + break; + default: + legendData.area.start.x = (opts.width - legendWidth) / 2 - padding; + legendData.area.end.x = (opts.width + legendWidth) / 2 + padding; + } + legendData.area.width = legendWidth + 2 * padding; + legendData.area.wholeWidth = legendWidth + 2 * padding; + legendData.area.height = legendList.length * lineHeight + 2 * padding; + legendData.area.wholeHeight = legendList.length * lineHeight + 2 * padding + 2 * margin; + legendData.points = legendList; + } + } else { + let len = series.length; + let maxHeight = opts.height - opts.area[0] - opts.area[2] - 2 * margin - 2 * padding; + let maxLength = Math.min(Math.floor(maxHeight / lineHeight), len); + legendData.area.height = maxLength * lineHeight + padding * 2; + legendData.area.wholeHeight = maxLength * lineHeight + padding * 2; + switch (opts.legend.float) { + case 'top': + legendData.area.start.y = opts.area[0] + margin; + legendData.area.end.y = opts.area[0] + margin + legendData.area.height; + break; + case 'bottom': + legendData.area.start.y = opts.height - opts.area[2] - margin - legendData.area.height; + legendData.area.end.y = opts.height - opts.area[2] - margin; + break; + default: + legendData.area.start.y = (opts.height - legendData.area.height) / 2; + legendData.area.end.y = (opts.height + legendData.area.height) / 2; + } + let lineNum = len % maxLength === 0 ? len / maxLength : Math.floor((len / maxLength) + 1); + let currentRow = []; + for (let i = 0; i < lineNum; i++) { + let temp = series.slice(i * maxLength, i * maxLength + maxLength); + currentRow.push(temp); + } + legendData.points = currentRow; + if (currentRow.length) { + for (let i = 0; i < currentRow.length; i++) { + let item = currentRow[i]; + let maxWidth = 0; + for (let j = 0; j < item.length; j++) { + let itemWidth = shapeWidth + shapeRight + measureText(item[j].name || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix; + if (itemWidth > maxWidth) { + maxWidth = itemWidth; + } + } + legendData.widthArr.push(maxWidth); + legendData.heightArr.push(item.length * lineHeight + padding * 2); + } + let legendWidth = 0 + for (let i = 0; i < legendData.widthArr.length; i++) { + legendWidth += legendData.widthArr[i]; + } + legendData.area.width = legendWidth - opts.legend.itemGap * opts.pix + 2 * padding; + legendData.area.wholeWidth = legendData.area.width + padding; + } + } + switch (opts.legend.position) { + case 'top': + legendData.area.start.y = opts.area[0] + margin; + legendData.area.end.y = opts.area[0] + margin + legendData.area.height; + break; + case 'bottom': + legendData.area.start.y = opts.height - opts.area[2] - legendData.area.height - margin; + legendData.area.end.y = opts.height - opts.area[2] - margin; + break; + case 'left': + legendData.area.start.x = opts.area[3]; + legendData.area.end.x = opts.area[3] + legendData.area.width; + break; + case 'right': + legendData.area.start.x = opts.width - opts.area[1] - legendData.area.width; + legendData.area.end.x = opts.width - opts.area[1]; + break; + } + chartData.legendData = legendData; + return legendData; +} + +function calCategoriesData(categories, opts, config, eachSpacing, context) { + var result = { + angle: 0, + xAxisHeight: config.xAxisHeight + }; + var categoriesTextLenth = categories.map(function(item) { + return measureText(item, opts.xAxis.fontSize * opts.pix || config.fontSize, context); + }); + var maxTextLength = Math.max.apply(this, categoriesTextLenth); + + if (opts.xAxis.rotateLabel == true && maxTextLength + 2 * config.xAxisTextPadding > eachSpacing) { + result.angle = 45 * Math.PI / 180; + result.xAxisHeight = 2 * config.xAxisTextPadding + maxTextLength * Math.sin(result.angle); + } + return result; +} + +function getXAxisTextList(series, opts, config, stack) { + var index = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1; + var data; + if (stack == 'stack') { + data = dataCombineStack(series, opts.categories.length); + } else { + data = dataCombine(series); + } + var sorted = []; + // remove null from data + data = data.filter(function(item) { + //return item !== null; + if (typeof item === 'object' && item !== null) { + if (item.constructor.toString().indexOf('Array') > -1) { + return item !== null; + } else { + return item.value !== null; + } + } else { + return item !== null; + } + }); + data.map(function(item) { + if (typeof item === 'object') { + if (item.constructor.toString().indexOf('Array') > -1) { + if (opts.type == 'candle') { + item.map(function(subitem) { + sorted.push(subitem); + }) + } else { + sorted.push(item[0]); + } + } else { + sorted.push(item.value); + } + } else { + sorted.push(item); + } + }) + + var minData = 0; + var maxData = 0; + if (sorted.length > 0) { + minData = Math.min.apply(this, sorted); + maxData = Math.max.apply(this, sorted); + } + //为了兼容v1.9.0之前的项目 + if (index > -1) { + if (typeof opts.xAxis.data[index].min === 'number') { + minData = Math.min(opts.xAxis.data[index].min, minData); + } + if (typeof opts.xAxis.data[index].max === 'number') { + maxData = Math.max(opts.xAxis.data[index].max, maxData); + } + } else { + if (typeof opts.xAxis.min === 'number') { + minData = Math.min(opts.xAxis.min, minData); + } + if (typeof opts.xAxis.max === 'number') { + maxData = Math.max(opts.xAxis.max, maxData); + } + } + if (minData === maxData) { + var rangeSpan = maxData || 10; + maxData += rangeSpan; + } + //var dataRange = getDataRange(minData, maxData); + var minRange = minData; + var maxRange = maxData; + var range = []; + var eachRange = (maxRange - minRange) / opts.xAxis.splitNumber; + for (var i = 0; i <= opts.xAxis.splitNumber; i++) { + range.push(minRange + eachRange * i); + } + return range; +} + +function calXAxisData(series, opts, config, context) { + //堆叠图重算Y轴 + var columnstyle = assign({}, { + type: "" + }, opts.extra.bar); + var result = { + angle: 0, + xAxisHeight: config.xAxisHeight + }; + result.ranges = getXAxisTextList(series, opts, config, columnstyle.type); + result.rangesFormat = result.ranges.map(function(item) { + //item = opts.xAxis.formatter ? opts.xAxis.formatter(item) : util.toFixed(item, 2); + item = util.toFixed(item, 2); + return item; + }); + var xAxisScaleValues = result.ranges.map(function(item) { + // 如果刻度值是浮点数,则保留两位小数 + item = util.toFixed(item, 2); + // 若有自定义格式则调用自定义的格式化函数 + //item = opts.xAxis.formatter ? opts.xAxis.formatter(Number(item)) : item; + return item; + }); + result = Object.assign(result, getXAxisPoints(xAxisScaleValues, opts, config)); + // 计算X轴刻度的属性譬如每个刻度的间隔,刻度的起始点\结束点以及总长 + var eachSpacing = result.eachSpacing; + var textLength = xAxisScaleValues.map(function(item) { + return measureText(item, opts.xAxis.fontSize * opts.pix || config.fontSize, context); + }); + // get max length of categories text + var maxTextLength = Math.max.apply(this, textLength); + // 如果刻度值文本内容过长,则将其逆时针旋转45° + if (maxTextLength + 2 * config.xAxisTextPadding > eachSpacing) { + result.angle = 45 * Math.PI / 180; + result.xAxisHeight = 2 * config.xAxisTextPadding + maxTextLength * Math.sin(result.angle); + } + if (opts.xAxis.disabled === true) { + result.xAxisHeight = 0; + } + 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 = []; + for (let i = 0; i < series.length; i++) { + let each = series[i]; + let listItem = {}; + listItem.color = each.color; + listItem.legendShape = each.legendShape; + listItem.pointShape = each.pointShape; + listItem.data = []; + each.data.forEach(function(item, index) { + let tmp = {}; + tmp.angle = angleList[index]; + tmp.proportion = item / maxData; + tmp.value = item; + 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, radius) { + var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + var count = 0; + var _start_ = 0; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + count += item.data; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + if (count === 0) { + item._proportion_ = 1 / series.length * process; + } else { + item._proportion_ = item.data / count * process; + } + item._radius_ = radius; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item._start_ = _start_; + _start_ += 2 * item._proportion_ * Math.PI; + } + return series; +} + +function getFunnelDataPoints(series, radius, type, eachSpacing) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + series = series.sort(function(a, b) { + return parseInt(b.data) - parseInt(a.data); + }); + for (let i = 0; i < series.length; i++) { + if(type == 'funnel'){ + series[i].radius = series[i].data / series[0].data * radius * process; + }else{ + series[i].radius = (eachSpacing * (series.length - i)) / (eachSpacing * series.length) * radius * process; + } + series[i]._proportion_ = series[i].data / series[0].data; + } + if(type !== 'pyramid'){ + series.reverse(); + } + return series; +} + +function getRoseDataPoints(series, type, minRadius, radius) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var count = 0; + var _start_ = 0; + var dataArr = []; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + count += item.data; + dataArr.push(item.data); + } + var minData = Math.min.apply(null, dataArr); + var maxData = Math.max.apply(null, dataArr); + var radiusLength = radius - minRadius; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + if (count === 0) { + item._proportion_ = 1 / series.length * process; + item._rose_proportion_ = 1 / series.length * process; + } else { + item._proportion_ = item.data / count * process; + if(type == 'area'){ + item._rose_proportion_ = 1 / series.length * process; + }else{ + item._rose_proportion_ = item.data / count * process; + } + } + item._radius_ = minRadius + radiusLength * ((item.data - minData) / (maxData - minData)) || radius; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item._start_ = _start_; + _start_ += 2 * item._rose_proportion_ * Math.PI; + } + return series; +} + +function getArcbarDataPoints(series, arcbarOption) { + var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + if (process == 1) { + process = 0.999999; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + let totalAngle; + if (arcbarOption.type == 'circle') { + totalAngle = 2; + } else { + if (arcbarOption.endAngle < arcbarOption.startAngle) { + totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle; + } else { + totalAngle = arcbarOption.startAngle - arcbarOption.endAngle; + } + } + item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle; + if (item._proportion_ >= 2) { + item._proportion_ = item._proportion_ % 2; + } + } + return series; +} + +function getGaugeAxisPoints(categories, startAngle, endAngle) { + let totalAngle = startAngle - endAngle + 1; + let tempStartAngle = startAngle; + for (let i = 0; i < categories.length; i++) { + categories[i].value = categories[i].value === null ? 0 : categories[i].value; + categories[i]._startAngle_ = tempStartAngle; + categories[i]._endAngle_ = totalAngle * categories[i].value + startAngle; + if (categories[i]._endAngle_ >= 2) { + categories[i]._endAngle_ = categories[i]._endAngle_ % 2; + } + tempStartAngle = categories[i]._endAngle_; + } + return categories; +} + +function getGaugeDataPoints(series, categories, gaugeOption) { + let process = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + if (gaugeOption.pointer.color == 'auto') { + for (let i = 0; i < categories.length; i++) { + if (item.data <= categories[i].value) { + item.color = categories[i].color; + break; + } + } + } else { + item.color = gaugeOption.pointer.color; + } + let totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1; + item._endAngle_ = totalAngle * item.data + gaugeOption.startAngle; + item._oldAngle_ = gaugeOption.oldAngle; + if (gaugeOption.oldAngle < gaugeOption.endAngle) { + item._oldAngle_ += 2; + } + if (item.data >= gaugeOption.oldData) { + item._proportion_ = (item._endAngle_ - item._oldAngle_) * process + gaugeOption.oldAngle; + } else { + item._proportion_ = item._oldAngle_ - (item._oldAngle_ - item._endAngle_) * process; + } + if (item._proportion_ >= 2) { + item._proportion_ = item._proportion_ % 2; + } + } + return series; +} + +function getPieTextMaxLength(series, config, context, opts) { + series = getPieDataPoints(series); + let maxLength = 0; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + let text = item.formatter ? item.formatter(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%'; + maxLength = Math.max(maxLength, measureText(text, item.textSize * opts.pix || config.fontSize, context)); + } + return maxLength; +} + +function fixColumeData(points, eachSpacing, columnLen, index, config, opts) { + return points.map(function(item) { + if (item === null) { + return null; + } + var seriesGap = 0; + var categoryGap = 0; + if (opts.type == 'mix') { + seriesGap = opts.extra.mix.column.seriesGap * opts.pix || 0; + categoryGap = opts.extra.mix.column.categoryGap * opts.pix || 0; + } else { + seriesGap = opts.extra.column.seriesGap * opts.pix || 0; + categoryGap = opts.extra.column.categoryGap * opts.pix || 0; + } + seriesGap = Math.min(seriesGap, eachSpacing / columnLen) + categoryGap = Math.min(categoryGap, eachSpacing / columnLen) + item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen); + if (opts.extra.mix && opts.extra.mix.column.width && +opts.extra.mix.column.width > 0) { + item.width = Math.min(item.width, +opts.extra.mix.column.width * opts.pix); + } + if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { + item.width = Math.min(item.width, +opts.extra.column.width * opts.pix); + } + if (item.width <= 0) { + item.width = 1; + } + item.x += (index + 0.5 - columnLen / 2) * (item.width + seriesGap); + return item; + }); +} + +function fixBarData(points, eachSpacing, columnLen, index, config, opts) { + return points.map(function(item) { + if (item === null) { + return null; + } + var seriesGap = 0; + var categoryGap = 0; + seriesGap = opts.extra.bar.seriesGap * opts.pix || 0; + categoryGap = opts.extra.bar.categoryGap * opts.pix || 0; + seriesGap = Math.min(seriesGap, eachSpacing / columnLen) + categoryGap = Math.min(categoryGap, eachSpacing / columnLen) + item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen); + if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) { + item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix); + } + if (item.width <= 0) { + item.width = 1; + } + item.y += (index + 0.5 - columnLen / 2) * (item.width + seriesGap); + return item; + }); +} + +function fixColumeMeterData(points, eachSpacing, columnLen, index, config, opts, border) { + var categoryGap = opts.extra.column.categoryGap * opts.pix || 0; + return points.map(function(item) { + if (item === null) { + return null; + } + item.width = Math.ceil(eachSpacing - 2 * categoryGap); + if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { + item.width = Math.min(item.width, +opts.extra.column.width * opts.pix); + } + if (index > 0) { + item.width -= 2 * border; + } + return item; + }); +} + +function fixColumeStackData(points, eachSpacing, columnLen, index, config, opts, series) { + var categoryGap = opts.extra.column.categoryGap * opts.pix || 0; + return points.map(function(item, indexn) { + if (item === null) { + return null; + } + item.width = Math.ceil(eachSpacing - 2 * categoryGap); + if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { + item.width = Math.min(item.width, +opts.extra.column.width * opts.pix); + } + if (item.width <= 0) { + item.width = 1; + } + return item; + }); +} + +function fixBarStackData(points, eachSpacing, columnLen, index, config, opts, series) { + var categoryGap = opts.extra.bar.categoryGap * opts.pix || 0; + return points.map(function(item, indexn) { + if (item === null) { + return null; + } + item.width = Math.ceil(eachSpacing - 2 * categoryGap); + if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) { + item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix); + } + if (item.width <= 0) { + item.width = 1; + } + return item; + }); +} + +function getXAxisPoints(categories, opts, config) { + var spacingValid = opts.width - opts.area[1] - opts.area[3]; + var dataCount = opts.enableScroll ? Math.min(opts.xAxis.itemCount, categories.length) : categories.length; + if ((opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble' || opts.type == 'bar') && dataCount > 1 && opts.xAxis.boundaryGap == 'justify') { + dataCount -= 1; + } + var eachSpacing = spacingValid / dataCount; + var xAxisPoints = []; + var startX = opts.area[3]; + var endX = opts.width - opts.area[1]; + categories.forEach(function(item, index) { + xAxisPoints.push(startX + index * eachSpacing); + }); + if (opts.xAxis.boundaryGap !== 'justify') { + if (opts.enableScroll === true) { + xAxisPoints.push(startX + categories.length * eachSpacing); + } else { + xAxisPoints.push(endX); + } + } + return { + xAxisPoints: xAxisPoints, + startX: startX, + endX: endX, + eachSpacing: eachSpacing + }; +} + +function getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) { + var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var cPoints = []; + item.forEach(function(items, indexs) { + var point = {}; + point.x = xAxisPoints[index] + Math.round(eachSpacing / 2); + var value = items.value || items; + var height = validHeight * (value - minRange) / (maxRange - minRange); + height *= process; + point.y = opts.height - Math.round(height) - opts.area[2]; + cPoints.push(point); + }); + points.push(cPoints); + } + }); + return points; +} + +function getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) { + var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1; + var boundaryGap = 'center'; + if (opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble' ) { + boundaryGap = opts.xAxis.boundaryGap; + } + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + var validWidth = opts.width - opts.area[1] - opts.area[3]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.x = xAxisPoints[index]; + var value = item; + if (typeof item === 'object' && item !== null) { + if (item.constructor.toString().indexOf('Array') > -1) { + let xranges, xminRange, xmaxRange; + xranges = [].concat(opts.chartData.xAxisData.ranges); + xminRange = xranges.shift(); + xmaxRange = xranges.pop(); + value = item[1]; + point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange); + if(opts.type == 'bubble'){ + point.r = item[2]; + point.t = item[3]; + } + } else { + value = item.value; + } + } + if (boundaryGap == 'center') { + point.x += eachSpacing / 2; + } + var height = validHeight * (value - minRange) / (maxRange - minRange); + height *= process; + point.y = opts.height - height - opts.area[2]; + points.push(point); + } + }); + return points; +} + +function getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config) { + var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + var validWidth = opts.width - opts.area[1] - opts.area[3]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.y = yAxisPoints[index]; + var value = item; + if (typeof item === 'object' && item !== null) { + value = item.value; + } + var height = validWidth * (value - minRange) / (maxRange - minRange); + height *= process; + point.height = height; + point.value = value; + point.x = height + opts.area[3]; + points.push(point); + } + }); + return points; +} + +function getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) { + var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.x = xAxisPoints[index] + Math.round(eachSpacing / 2); + + if (seriesIndex > 0) { + var value = 0; + for (let i = 0; i <= seriesIndex; i++) { + value += stackSeries[i].data[index]; + } + var value0 = value - item; + var height = validHeight * (value - minRange) / (maxRange - minRange); + var height0 = validHeight * (value0 - minRange) / (maxRange - minRange); + } else { + var value = item; + var height = validHeight * (value - minRange) / (maxRange - minRange); + var height0 = 0; + } + var heightc = height0; + height *= process; + heightc *= process; + point.y = opts.height - Math.round(height) - opts.area[2]; + point.y0 = opts.height - Math.round(heightc) - opts.area[2]; + points.push(point); + } + }); + return points; +} + +function getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) { + var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1; + var points = []; + var validHeight = opts.width - opts.area[1] - opts.area[3]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.y = yAxisPoints[index]; + if (seriesIndex > 0) { + var value = 0; + for (let i = 0; i <= seriesIndex; i++) { + value += stackSeries[i].data[index]; + } + var value0 = value - item; + var height = validHeight * (value - minRange) / (maxRange - minRange); + var height0 = validHeight * (value0 - minRange) / (maxRange - minRange); + } else { + var value = item; + var height = validHeight * (value - minRange) / (maxRange - minRange); + var height0 = 0; + } + var heightc = height0; + height *= process; + heightc *= process; + point.height = height - heightc; + point.x = opts.area[3] + height; + point.x0 = opts.area[3] + heightc; + points.push(point); + } + }); + return points; +} + +function getYAxisTextList(series, opts, config, stack, yData) { + var index = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : -1; + var data; + if (stack == 'stack') { + data = dataCombineStack(series, opts.categories.length); + } else { + data = dataCombine(series); + } + var sorted = []; + // remove null from data + data = data.filter(function(item) { + //return item !== null; + if (typeof item === 'object' && item !== null) { + if (item.constructor.toString().indexOf('Array') > -1) { + return item !== null; + } else { + return item.value !== null; + } + } else { + return item !== null; + } + }); + data.map(function(item) { + if (typeof item === 'object') { + if (item.constructor.toString().indexOf('Array') > -1) { + if (opts.type == 'candle') { + item.map(function(subitem) { + sorted.push(subitem); + }) + } else { + sorted.push(item[1]); + } + } else { + sorted.push(item.value); + } + } else { + sorted.push(item); + } + }) + var minData = yData.min || 0; + var maxData = yData.max || 0; + if (sorted.length > 0) { + minData = Math.min.apply(this, sorted); + maxData = Math.max.apply(this, sorted); + } + //为了兼容v1.9.0之前的项目 + // if (index > -1) { + // if (typeof opts.yAxis.data[index].min === 'number') { + // minData = Math.min(opts.yAxis.data[index].min, minData); + // } + // if (typeof opts.yAxis.data[index].max === 'number') { + // maxData = Math.max(opts.yAxis.data[index].max, maxData); + // } + // } else { + // 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); + // } + // } + if (minData === maxData) { + var rangeSpan = maxData || 10; + maxData += rangeSpan; + } + var dataRange = getDataRange(minData, maxData); + var minRange = yData.min === undefined || yData.min === null ? dataRange.minRange : yData.min; + var maxRange = yData.max === undefined || yData.min === null ? dataRange.maxRange : yData.max; + var range = []; + var eachRange = (maxRange - minRange) / opts.yAxis.splitNumber; + for (var i = 0; i <= opts.yAxis.splitNumber; i++) { + range.push(minRange + eachRange * i); + } + return range.reverse(); +} + +function calYAxisData(series, opts, config, context) { + //堆叠图重算Y轴 + var columnstyle = assign({}, { + type: "" + }, opts.extra.column); + //如果是多Y轴,重新计算 + var YLength = opts.yAxis.data.length; + var newSeries = new Array(YLength); + if (YLength > 0) { + for (let i = 0; i < YLength; i++) { + newSeries[i] = []; + for (let j = 0; j < series.length; j++) { + if (series[j].index == i) { + newSeries[i].push(series[j]); + } + } + } + var rangesArr = new Array(YLength); + var rangesFormatArr = new Array(YLength); + var yAxisWidthArr = new Array(YLength); + + for (let i = 0; i < YLength; i++) { + let yData = opts.yAxis.data[i]; + //如果总开关不显示,强制每个Y轴为不显示 + if (opts.yAxis.disabled == true) { + yData.disabled = true; + } + if(yData.type === 'categories'){ + if(!yData.formatter){ + yData.formatter = (val) => {return val + (yData.unit || '')}; + } + yData.categories = yData.categories || opts.categories; + rangesArr[i] = yData.categories; + }else{ + if(!yData.formatter){ + yData.formatter = (val) => {return val.toFixed(yData.tofix) + (yData.unit || '')}; + } + rangesArr[i] = getYAxisTextList(newSeries[i], opts, config, columnstyle.type, yData, i); + } + let yAxisFontSizes = yData.fontSize * opts.pix || config.fontSize; + yAxisWidthArr[i] = { + position: yData.position ? yData.position : 'left', + width: 0 + }; + rangesFormatArr[i] = rangesArr[i].map(function(items) { + items = yData.formatter(items); + yAxisWidthArr[i].width = Math.max(yAxisWidthArr[i].width, measureText(items, yAxisFontSizes, context) + 5); + return items; + }); + let calibration = yData.calibration ? 4 * opts.pix : 0; + yAxisWidthArr[i].width += calibration + 3 * opts.pix; + if (yData.disabled === true) { + yAxisWidthArr[i].width = 0; + } + } + } else { + var rangesArr = new Array(1); + var rangesFormatArr = new Array(1); + var yAxisWidthArr = new Array(1); + if(opts.type === 'bar'){ + rangesArr[0] = opts.categories; + if(!opts.yAxis.formatter){ + opts.yAxis.formatter = (val) => {return val + (opts.yAxis.unit || '')} + } + }else{ + if(!opts.yAxis.formatter){ + opts.yAxis.formatter = (val) => {return val.toFixed(opts.yAxis.tofix ) + (opts.yAxis.unit || '')} + } + rangesArr[0] = getYAxisTextList(series, opts, config, columnstyle.type, {}); + } + yAxisWidthArr[0] = { + position: 'left', + width: 0 + }; + var yAxisFontSize = opts.yAxis.fontSize * opts.pix || config.fontSize; + rangesFormatArr[0] = rangesArr[0].map(function(item) { + item = opts.yAxis.formatter(item); + yAxisWidthArr[0].width = Math.max(yAxisWidthArr[0].width, measureText(item, yAxisFontSize, context) + 5); + return item; + }); + yAxisWidthArr[0].width += 3 * opts.pix; + if (opts.yAxis.disabled === true) { + yAxisWidthArr[0] = { + position: 'left', + width: 0 + }; + opts.yAxis.data[0] = { + disabled: true + }; + } else { + opts.yAxis.data[0] = { + disabled: false, + position: 'left', + max: opts.yAxis.max, + min: opts.yAxis.min, + formatter: opts.yAxis.formatter + }; + if(opts.type === 'bar'){ + opts.yAxis.data[0].categories = opts.categories; + opts.yAxis.data[0].type = 'categories'; + } + } + } + return { + rangesFormat: rangesFormatArr, + ranges: rangesArr, + yAxisWidth: yAxisWidthArr + }; +} + +function calTooltipYAxisData(point, series, opts, config, eachSpacing) { + let ranges = [].concat(opts.chartData.yAxisData.ranges); + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + let minAxis = opts.area[0]; + let items = []; + for (let i = 0; i < ranges.length; i++) { + let maxVal = ranges[i].shift(); + let minVal = ranges[i].pop(); + let item = maxVal - (maxVal - minVal) * (point - minAxis) / spacingValid; + item = opts.yAxis.data[i].formatter ? opts.yAxis.data[i].formatter(item) : item.toFixed(0); + items.push(String(item)) + } + return items; +} + +function calMarkLineData(points, opts) { + let minRange, maxRange; + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + for (let i = 0; i < points.length; i++) { + points[i].yAxisIndex = points[i].yAxisIndex ? points[i].yAxisIndex : 0; + let range = [].concat(opts.chartData.yAxisData.ranges[points[i].yAxisIndex]); + minRange = range.pop(); + maxRange = range.shift(); + let height = spacingValid * (points[i].value - minRange) / (maxRange - minRange); + points[i].y = opts.height - Math.round(height) - opts.area[2]; + } + return points; +} + +function contextRotate(context, opts) { + if (opts.rotateLock !== true) { + context.translate(opts.height, 0); + context.rotate(90 * Math.PI / 180); + } else if (opts._rotate_ !== true) { + context.translate(opts.height, 0); + context.rotate(90 * Math.PI / 180); + opts._rotate_ = true; + } +} + +function drawPointShape(points, color, shape, context, opts) { + context.beginPath(); + if (opts.dataPointShapeType == 'hollow') { + context.setStrokeStyle(color); + context.setFillStyle(opts.background); + context.setLineWidth(2 * opts.pix); + } else { + context.setStrokeStyle("#ffffff"); + context.setFillStyle(color); + context.setLineWidth(1 * opts.pix); + } + 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 + 2.5 * opts.pix, item.y); + context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false); + } + }); + } else if (shape === 'square') { + 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); + } + }); + } else if (shape === 'triangle') { + return; + } + context.closePath(); + context.fill(); + context.stroke(); +} + +function drawRingTitle(opts, config, context, center) { + 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 || opts.fontColor; + var subtitleFontColor = opts.subtitle.color || opts.fontColor; + var titleHeight = title ? titlefontSize : 0; + var subtitleHeight = subtitle ? subtitlefontSize : 0; + var margin = 5; + if (subtitle) { + var textWidth = measureText(subtitle, subtitlefontSize * opts.pix, context); + var startX = center.x - textWidth / 2 + (opts.subtitle.offsetX|| 0) * opts.pix ; + var startY = center.y + subtitlefontSize * opts.pix / 2 + (opts.subtitle.offsetY || 0) * opts.pix; + if (title) { + startY += (titleHeight * opts.pix + margin) / 2; + } + context.beginPath(); + context.setFontSize(subtitlefontSize * opts.pix); + context.setFillStyle(subtitleFontColor); + context.fillText(subtitle, startX, startY); + context.closePath(); + context.stroke(); + } + if (title) { + var _textWidth = measureText(title, titlefontSize * opts.pix, context); + var _startX = center.x - _textWidth / 2 + (opts.title.offsetX || 0); + var _startY = center.y + titlefontSize * opts.pix / 2 + (opts.title.offsetY || 0) * opts.pix; + if (subtitle) { + _startY -= (subtitleHeight * opts.pix + margin) / 2; + } + context.beginPath(); + context.setFontSize(titlefontSize * opts.pix); + context.setFillStyle(titleFontColor); + context.fillText(title, _startX, _startY); + context.closePath(); + context.stroke(); + } +} + +function drawPointText(points, series, config, context, opts) { + // 绘制数据文案 + var data = series.data; + var textOffset = series.textOffset ? series.textOffset : 0; + points.forEach(function(item, index) { + if (item !== null) { + context.beginPath(); + var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(series.textColor || opts.fontColor); + var value = data[index] + if (typeof data[index] === 'object' && data[index] !== null) { + if (data[index].constructor.toString().indexOf('Array')>-1) { + value = data[index][1]; + } else { + value = data[index].value + } + } + var formatVal = series.formatter ? series.formatter(value,index) : value; + context.setTextAlign('center'); + context.fillText(String(formatVal), item.x, item.y - 4 + textOffset * opts.pix); + context.closePath(); + context.stroke(); + context.setTextAlign('left'); + } + }); +} + +function drawBarPointText(points, series, config, context, opts) { + // 绘制数据文案 + var data = series.data; + var textOffset = series.textOffset ? series.textOffset : 0; + points.forEach(function(item, index) { + if (item !== null) { + context.beginPath(); + var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(series.textColor || opts.fontColor); + var value = data[index] + if (typeof data[index] === 'object' && data[index] !== null) { + value = data[index].value ; + } + var formatVal = series.formatter ? series.formatter(value,index) : value; + context.setTextAlign('left'); + context.fillText(String(formatVal), item.x + 4 * opts.pix , item.y + fontSize / 2 - 3 ); + context.closePath(); + context.stroke(); + } + }); +} + +function drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context) { + radius -= gaugeOption.width / 2 + gaugeOption.labelOffset * opts.pix; + let totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1; + let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber; + let totalNumber = gaugeOption.endNumber - gaugeOption.startNumber; + let splitNumber = totalNumber / gaugeOption.splitLine.splitNumber; + let nowAngle = gaugeOption.startAngle; + let nowNumber = gaugeOption.startNumber; + for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) { + var pos = { + x: radius * Math.cos(nowAngle * Math.PI), + y: radius * Math.sin(nowAngle * Math.PI) + }; + var labelText = gaugeOption.formatter ? gaugeOption.formatter(nowNumber) : nowNumber; + pos.x += centerPosition.x - measureText(labelText, config.fontSize, context) / 2; + pos.y += centerPosition.y; + var startX = pos.x; + var startY = pos.y; + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(gaugeOption.labelColor || opts.fontColor); + context.fillText(labelText, startX, startY + config.fontSize / 2); + context.closePath(); + context.stroke(); + nowAngle += splitAngle; + if (nowAngle >= 2) { + nowAngle = nowAngle % 2; + } + nowNumber += splitNumber; + } + +} + +function drawRadarLabel(angleList, radius, centerPosition, opts, config, context) { + var radarOption = opts.extra.radar || {}; + radius += config.radarLabelTextMargin * opts.pix; + 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] || '', config.fontSize, context) / 2; + } else if (pos.x < 0) { + startX -= measureText(opts.categories[index] || '', config.fontSize, context); + } + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(radarOption.labelColor || opts.fontColor); + context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2); + context.closePath(); + context.stroke(); + }); + +} + +function drawPieText(series, opts, config, context, radius, center) { + var lineRadius = config.pieChartLinePadding; + var textObjectCollection = []; + var lastTextObject = null; + var seriesConvert = series.map(function(item,index,series) { + var text = item.formatter ? item.formatter(item,index,series) : util.toFixed(item._proportion_.toFixed(4) * 100) + '%'; + var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2); + if (item._rose_proportion_) { + arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._rose_proportion_ / 2); + } + var color = item.color; + var radius = item._radius_; + return { + arc: arc, + text: text, + color: color, + radius: radius, + textColor: item.textColor, + textSize: item.textSize, + }; + }); + for (let i = 0; i < seriesConvert.length; i++) { + let item = seriesConvert[i]; + // line end + let orginX1 = Math.cos(item.arc) * (item.radius + lineRadius); + let orginY1 = Math.sin(item.arc) * (item.radius + lineRadius); + // line start + let orginX2 = Math.cos(item.arc) * item.radius; + let orginY2 = Math.sin(item.arc) * item.radius; + // text start + let orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding; + let orginY3 = orginY1; + let textWidth = measureText(item.text, item.textSize * opts.pix || config.fontSize, context); + let 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; + } + let 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, + textColor: item.textColor, + textSize: item.textSize + }; + lastTextObject = avoidCollision(textObject, lastTextObject); + textObjectCollection.push(lastTextObject); + } + for (let i = 0; i < textObjectCollection.length; i++) { + let item = textObjectCollection[i]; + let lineStartPoistion = convertCoordinateOrigin(item.lineStart.x, item.lineStart.y, center); + let lineEndPoistion = convertCoordinateOrigin(item.lineEnd.x, item.lineEnd.y, center); + let textPosition = convertCoordinateOrigin(item.start.x, item.start.y, center); + context.setLineWidth(1 * opts.pix); + context.setFontSize(item.textSize * opts.pix || config.fontSize); + context.beginPath(); + context.setStrokeStyle(item.color); + context.setFillStyle(item.color); + context.moveTo(lineStartPoistion.x, lineStartPoistion.y); + let curveStartX = item.start.x < 0 ? textPosition.x + item.width : textPosition.x; + let 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.setFontSize(item.textSize * opts.pix || config.fontSize); + context.setFillStyle(item.textColor || opts.fontColor); + context.fillText(item.text, textStartX, textPosition.y + 3); + context.closePath(); + context.stroke(); + context.closePath(); + } +} + +function drawToolTipSplitLine(offsetX, opts, config, context) { + var toolTipOption = opts.extra.tooltip || {}; + toolTipOption.gridType = toolTipOption.gridType == undefined ? 'solid' : toolTipOption.gridType; + toolTipOption.dashLength = toolTipOption.dashLength == undefined ? 4 : toolTipOption.dashLength; + var startY = opts.area[0]; + var endY = opts.height - opts.area[2]; + if (toolTipOption.gridType == 'dash') { + context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]); + } + context.setStrokeStyle(toolTipOption.gridColor || '#cccccc'); + context.setLineWidth(1 * opts.pix); + context.beginPath(); + context.moveTo(offsetX, startY); + context.lineTo(offsetX, endY); + context.stroke(); + context.setLineDash([]); + if (toolTipOption.xAxisLabel) { + let labelText = opts.categories[opts.tooltip.index]; + context.setFontSize(config.fontSize); + let textWidth = measureText(labelText, config.fontSize, context); + let textX = offsetX - 0.5 * textWidth; + let textY = endY; + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity)); + context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground); + context.setLineWidth(1 * opts.pix); + context.rect(textX - config.toolTipPadding, textY, textWidth + 2 * config.toolTipPadding, config.fontSize + 2 * config.toolTipPadding); + context.closePath(); + context.stroke(); + context.fill(); + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor); + context.fillText(String(labelText), textX, textY + config.toolTipPadding + config.fontSize); + context.closePath(); + context.stroke(); + } +} + +function drawMarkLine(opts, config, context) { + let markLineOption = assign({}, { + type: 'solid', + dashLength: 4, + data: [] + }, opts.extra.markLine); + let startX = opts.area[3]; + let endX = opts.width - opts.area[1]; + let points = calMarkLineData(markLineOption.data, opts); + for (let i = 0; i < points.length; i++) { + let item = assign({}, { + lineColor: '#DE4A42', + showLabel: false, + labelFontColor: '#666666', + labelBgColor: '#DFE8FF', + labelBgOpacity: 0.8, + yAxisIndex: 0 + }, points[i]); + if (markLineOption.type == 'dash') { + context.setLineDash([markLineOption.dashLength, markLineOption.dashLength]); + } + context.setStrokeStyle(item.lineColor); + context.setLineWidth(1 * opts.pix); + context.beginPath(); + context.moveTo(startX, item.y); + context.lineTo(endX, item.y); + context.stroke(); + context.setLineDash([]); + if (item.showLabel) { + let labelText = opts.yAxis.formatter ? opts.yAxis.formatter(item.value) : item.value; + context.setFontSize(config.fontSize); + let textWidth = measureText(labelText, config.fontSize, context); + let yAxisWidth = opts.chartData.yAxisData.yAxisWidth[0].width; + let bgStartX = opts.area[3] - textWidth - config.toolTipPadding * 2; + let bgEndX = opts.area[3]; + let bgWidth = bgEndX - bgStartX; + let textX = bgEndX - config.toolTipPadding; + let textY = item.y; + context.setFillStyle(hexToRgb(item.labelBgColor, item.labelBgOpacity)); + context.setStrokeStyle(item.labelBgColor); + context.setLineWidth(1 * opts.pix); + context.beginPath(); + context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 * config.toolTipPadding); + context.closePath(); + context.stroke(); + context.fill(); + context.setFontSize(config.fontSize); + context.setTextAlign('right'); + context.setFillStyle(item.labelFontColor); + context.fillText(String(labelText), textX, textY + 0.5 * config.fontSize); + context.stroke(); + context.setTextAlign('left'); + } + } +} + +function drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) { + var toolTipOption = assign({}, { + gridType: 'solid', + dashLength: 4 + }, opts.extra.tooltip); + var startX = opts.area[3]; + var endX = opts.width - opts.area[1]; + if (toolTipOption.gridType == 'dash') { + context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]); + } + context.setStrokeStyle(toolTipOption.gridColor || '#cccccc'); + context.setLineWidth(1 * opts.pix); + context.beginPath(); + context.moveTo(startX, opts.tooltip.offset.y); + context.lineTo(endX, opts.tooltip.offset.y); + context.stroke(); + context.setLineDash([]); + if (toolTipOption.yAxisLabel) { + let labelText = calTooltipYAxisData(opts.tooltip.offset.y, opts.series, opts, config, eachSpacing); + let widthArr = opts.chartData.yAxisData.yAxisWidth; + let tStartLeft = opts.area[3]; + let tStartRight = opts.width - opts.area[1]; + for (let i = 0; i < labelText.length; i++) { + context.setFontSize(config.fontSize); + let textWidth = measureText(labelText[i], config.fontSize, context); + let bgStartX, bgEndX, bgWidth; + if (widthArr[i].position == 'left') { + bgStartX = tStartLeft - widthArr[i].width; + bgEndX = Math.max(bgStartX, bgStartX + textWidth + config.toolTipPadding * 2); + } else { + bgStartX = tStartRight; + bgEndX = Math.max(bgStartX + widthArr[i].width, bgStartX + textWidth + config.toolTipPadding * 2); + } + bgWidth = bgEndX - bgStartX; + let textX = bgStartX + (bgWidth - textWidth) / 2; + let textY = opts.tooltip.offset.y; + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity)); + context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground); + context.setLineWidth(1 * opts.pix); + context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 * + config.toolTipPadding); + context.closePath(); + context.stroke(); + context.fill(); + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor); + context.fillText(labelText[i], textX, textY + 0.5 * config.fontSize); + context.closePath(); + context.stroke(); + if (widthArr[i].position == 'left') { + tStartLeft -= (widthArr[i].width + opts.yAxis.padding * opts.pix); + } else { + tStartRight += widthArr[i].width + opts.yAxis.padding * opts.pix; + } + } + } +} + +function drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) { + var toolTipOption = assign({}, { + activeBgColor: '#000000', + activeBgOpacity: 0.08 + }, opts.extra.column); + var startY = opts.area[0]; + var endY = opts.height - opts.area[2]; + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity)); + context.rect(offsetX - eachSpacing / 2, startY, eachSpacing, endY - startY); + context.closePath(); + context.fill(); + context.setFillStyle("#FFFFFF"); +} + +function drawBarToolTipSplitArea(offsetX, opts, config, context, eachSpacing) { + var toolTipOption = assign({}, { + activeBgColor: '#000000', + activeBgOpacity: 0.08 + }, opts.extra.bar); + var startX = opts.area[3]; + var endX = opts.width - opts.area[1]; + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity)); + context.rect( startX ,offsetX - eachSpacing / 2 , endX - startX,eachSpacing); + context.closePath(); + context.fill(); + context.setFillStyle("#FFFFFF"); +} + +function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxisPoints) { + var toolTipOption = assign({}, { + showBox: true, + showArrow: true, + showCategory: false, + bgColor: '#000000', + bgOpacity: 0.7, + borderColor: '#000000', + borderWidth: 0, + borderRadius: 0, + borderOpacity: 0.7, + fontColor: '#FFFFFF', + splitLine: true, + }, opts.extra.tooltip); + if(toolTipOption.showCategory==true && opts.categories){ + textList.unshift({text:opts.categories[opts.tooltip.index],color:null}) + } + var legendWidth = 4 * opts.pix; + var legendMarginRight = 5 * opts.pix; + var arrowWidth = toolTipOption.showArrow ? 8 * opts.pix : 0; + var isOverRightBorder = false; + if (opts.type == 'line' || opts.type == 'area' || opts.type == 'candle' || opts.type == 'mix') { + if (toolTipOption.splitLine == true) { + drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context); + } + } + offset = assign({ + x: 0, + y: 0 + }, offset); + offset.y -= 8 * opts.pix; + var textWidth = textList.map(function(item) { + return measureText(item.text, config.fontSize, context); + }); + var toolTipWidth = legendWidth + legendMarginRight + 4 * config.toolTipPadding + Math.max.apply(null, textWidth); + var toolTipHeight = 2 * config.toolTipPadding + textList.length * config.toolTipLineHeight; + if (toolTipOption.showBox == false) { + return + } + // if beyond the right border + if (offset.x - Math.abs(opts._scrollDistance_ || 0) + arrowWidth + toolTipWidth > opts.width) { + isOverRightBorder = true; + } + if (toolTipHeight + offset.y > opts.height) { + offset.y = opts.height - toolTipHeight; + } + // draw background rect + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.bgColor || config.toolTipBackground, toolTipOption.bgOpacity || config.toolTipOpacity)); + context.setLineWidth(toolTipOption.borderWidth * opts.pix); + context.setStrokeStyle(hexToRgb(toolTipOption.borderColor, toolTipOption.borderOpacity)); + var radius = toolTipOption.borderRadius; + if (isOverRightBorder) { + if (toolTipOption.showArrow) { + context.moveTo(offset.x, offset.y + 10 * opts.pix); + context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix); + } + context.arc(offset.x - arrowWidth - radius, offset.y + toolTipHeight - radius, radius, 0, Math.PI / 2, false); + context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + toolTipHeight - radius, radius, + Math.PI / 2, Math.PI, false); + context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false); + context.arc(offset.x - arrowWidth - radius, offset.y + radius, radius, -Math.PI / 2, 0, false); + if (toolTipOption.showArrow) { + context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix); + context.lineTo(offset.x, offset.y + 10 * opts.pix); + } + } else { + if (toolTipOption.showArrow) { + context.moveTo(offset.x, offset.y + 10 * opts.pix); + context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix); + } + context.arc(offset.x + arrowWidth + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false); + context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + radius, radius, -Math.PI / 2, 0, + false); + context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + toolTipHeight - radius, radius, 0, + Math.PI / 2, false); + context.arc(offset.x + arrowWidth + radius, offset.y + toolTipHeight - radius, radius, Math.PI / 2, Math.PI, false); + if (toolTipOption.showArrow) { + context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix); + context.lineTo(offset.x, offset.y + 10 * opts.pix); + } + } + context.closePath(); + context.fill(); + if (toolTipOption.borderWidth > 0) { + context.stroke(); + } + // draw legend + textList.forEach(function(item, index) { + if (item.color !== null) { + 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 + 1; + if (isOverRightBorder) { + startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding; + } + context.fillRect(startX, startY, legendWidth, config.fontSize); + context.closePath(); + } + }); + // draw text list + 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.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(toolTipOption.fontColor); + context.fillText(item.text, startX, startY + config.fontSize); + context.closePath(); + context.stroke(); + }); +} + +function drawColumnDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let columnOption = assign({}, { + type: 'group', + width: eachSpacing / 2, + meterBorder: 4, + meterFillColor: '#FFFFFF', + barBorderCircle: false, + barBorderRadius: [], + seriesGap: 2, + linearType: 'none', + linearOpacity: 1, + customColor: [], + colorStop: 0, + }, opts.extra.column); + let calPoints = []; + context.save(); + let leftNum = -2; + let rightNum = xAxisPoints.length + 2; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2; + rightNum = leftNum + opts.xAxis.itemCount + 4; + } + if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { + drawToolTipSplitArea(opts.tooltip.offset.x, opts, config, context, eachSpacing); + } + columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config); + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + switch (columnOption.type) { + case 'group': + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + var tooltipPoints = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + calPoints.push(tooltipPoints); + points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + //fix issues/I27B1N yyoinge & Joeshu + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - item.width / 2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || eachSeries.color + var strokeColor = item.color || eachSeries.color + if (columnOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]); + //透明渐变 + if (columnOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity)); + grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex],columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + // 圆角边框 + if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle === true) { + const left = startX; + const top = item.y; + const width = item.width; + const height = opts.height - opts.area[2] - item.y; + if (columnOption.barBorderCircle) { + columnOption.barBorderRadius = [width / 2, width / 2, 0, 0]; + } + let [r0, r1, r2, r3] = columnOption.barBorderRadius; + let minRadius = Math.min(width/2,height/2); + r0 = r0 > minRadius ? minRadius : r0; + r1 = r1 > minRadius ? minRadius : r1; + r2 = r2 > minRadius ? minRadius : r2; + r3 = r3 > minRadius ? minRadius : r3; + r0 = r0 < 0 ? 0 : r0; + r1 = r1 < 0 ? 0 : r1; + r2 = r2 < 0 ? 0 : r2; + r3 = r3 < 0 ? 0 : r3; + context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2); + context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0); + context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2); + context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI); + } else { + context.moveTo(startX, item.y); + context.lineTo(startX + item.width - 2, item.y); + context.lineTo(startX + item.width - 2, opts.height - opts.area[2]); + context.lineTo(startX, opts.height - opts.area[2]); + context.lineTo(startX, item.y); + context.setLineWidth(1) + context.setStrokeStyle(strokeColor); + } + context.setFillStyle(fillColor); + context.closePath(); + //context.stroke(); + context.fill(); + } + }; + break; + case 'stack': + // 绘制堆叠数据图 + var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + calPoints.push(points); + points = fixColumeStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + context.beginPath(); + var fillColor = item.color || eachSeries.color; + var startX = item.x - item.width / 2 + 1; + var height = opts.height - item.y - opts.area[2]; + var height0 = opts.height - item.y0 - opts.area[2]; + if (seriesIndex > 0) { + height -= height0; + } + context.setFillStyle(fillColor); + context.moveTo(startX, item.y); + context.fillRect(startX, item.y, item.width - 2, height); + context.closePath(); + context.fill(); + } + }; + break; + case 'meter': + // 绘制温度计数据图 + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + points = fixColumeMeterData(points, eachSpacing, series.length, seriesIndex, config, opts, columnOption.meterBorder); + if (seriesIndex == 0) { + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + //画背景颜色 + context.beginPath(); + context.setFillStyle(columnOption.meterFillColor); + var startX = item.x - item.width / 2; + var height = opts.height - item.y - opts.area[2]; + if (columnOption.barBorderCircle) { + var barBorderRadius = (item.width - columnOption.meterBorder*2) / 2; + if(barBorderRadius>height){ + barBorderRadius = height; + } + context.moveTo(startX + columnOption.meterBorder, opts.height - opts.area[2]); + context.lineTo(startX + columnOption.meterBorder, item.y + barBorderRadius); + context.arc(startX + item.width/2, item.y + barBorderRadius, barBorderRadius, -Math.PI, 0); + context.lineTo(startX + item.width - columnOption.meterBorder , opts.height - opts.area[2]); + context.lineTo(startX, opts.height - opts.area[2]); + context.fill(); + }else{ + context.moveTo(startX, item.y); + context.fillRect(startX, item.y, item.width, height); + context.closePath(); + context.fill(); + } + //画边框线 + if (columnOption.meterBorder > 0) { + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(columnOption.meterBorder * opts.pix); + if (columnOption.barBorderCircle) { + var barBorderRadius = (item.width - columnOption.meterBorder)/ 2; + if(barBorderRadius>height){ + barBorderRadius = height; + } + context.moveTo(startX + columnOption.meterBorder * 0.5, opts.height - opts.area[2]); + context.lineTo(startX + columnOption.meterBorder * 0.5, item.y + barBorderRadius); + context.arc(startX + item.width/2, item.y + barBorderRadius - columnOption.meterBorder * 0.5, barBorderRadius, -Math.PI, 0); + context.lineTo(startX + item.width - columnOption.meterBorder * 0.5, opts.height - opts.area[2]); + }else{ + context.moveTo(startX + columnOption.meterBorder * 0.5, item.y + height); + context.lineTo(startX + columnOption.meterBorder * 0.5, item.y + columnOption.meterBorder * 0.5); + context.lineTo(startX + item.width - columnOption.meterBorder * 0.5, item.y + columnOption.meterBorder * 0.5); + context.lineTo(startX + item.width - columnOption.meterBorder * 0.5, item.y + height); + } + context.stroke(); + } + } + }; + } else { + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + context.beginPath(); + context.setFillStyle(item.color || eachSeries.color); + var startX = item.x - item.width / 2; + var height = opts.height - item.y - opts.area[2]; + if (columnOption.barBorderCircle) { + var barBorderRadius = item.width / 2; + if(barBorderRadius>height){ + barBorderRadius = height; + } + context.moveTo(startX, opts.height - opts.area[2]); + context.arc(startX + barBorderRadius, item.y + barBorderRadius, barBorderRadius, -Math.PI, -Math.PI / 2); + context.arc(startX + item.width - barBorderRadius, item.y + barBorderRadius, barBorderRadius, -Math.PI / 2, 0); + context.lineTo(startX + item.width, opts.height - opts.area[2]); + context.lineTo(startX, opts.height - opts.area[2]); + context.fill(); + }else{ + context.moveTo(startX, item.y); + context.fillRect(startX, item.y, item.width, height); + context.closePath(); + context.fill(); + } + } + }; + } + break; + } + }); + + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + switch (columnOption.type) { + case 'group': + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts); + drawPointText(points, eachSeries, config, context, opts); + break; + case 'stack': + var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + drawPointText(points, eachSeries, config, context, opts); + break; + case 'meter': + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawPointText(points, eachSeries, config, context, opts); + break; + } + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawBarDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let yAxisPoints = []; + let eachSpacing = (opts.height - opts.area[0] - opts.area[2])/opts.categories.length; + for (let i = 0; i < opts.categories.length; i++) { + yAxisPoints.push(opts.area[0] + eachSpacing / 2 + eachSpacing * i); + } + let columnOption = assign({}, { + type: 'group', + width: eachSpacing / 2, + meterBorder: 4, + meterFillColor: '#FFFFFF', + barBorderCircle: false, + barBorderRadius: [], + seriesGap: 2, + linearType: 'none', + linearOpacity: 1, + customColor: [], + colorStop: 0, + }, opts.extra.bar); + let calPoints = []; + context.save(); + let leftNum = -2; + let rightNum = yAxisPoints.length + 2; + if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { + drawBarToolTipSplitArea(opts.tooltip.offset.y, opts, config, context, eachSpacing); + } + columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config); + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.xAxisData.ranges); + maxRange = ranges.pop(); + minRange = ranges.shift(); + var data = eachSeries.data; + switch (columnOption.type) { + case 'group': + var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process); + var tooltipPoints = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + calPoints.push(tooltipPoints); + points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + //fix issues/I27B1N yyoinge & Joeshu + if (item !== null && i > leftNum && i < rightNum) { + //var startX = item.x - item.width / 2; + var startX = opts.area[3]; + var startY = item.y - item.width / 2; + var height = item.height; + context.beginPath(); + var fillColor = item.color || eachSeries.color + var strokeColor = item.color || eachSeries.color + if (columnOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, item.x, item.y); + //透明渐变 + if (columnOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity)); + grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex],columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + // 圆角边框 + if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle === true) { + const left = startX; + const width = item.width; + const top = item.y - item.width / 2; + const height = item.heigh; + if (columnOption.barBorderCircle) { + columnOption.barBorderRadius = [width / 2, width / 2, 0, 0]; + } + let [r0, r1, r2, r3] = columnOption.barBorderRadius; + if (r0 + r2 > height) { + r0 = height; + r2 = 0; + r1 = height; + r3 = 0; + } + if (r0 + r2 > width / 2) { + r0 = width / 2; + r1 = width / 2; + r2 = 0; + r3 = 0; + } + r0 = r0 < 0 ? 0 : r0; + r1 = r1 < 0 ? 0 : r1; + r2 = r2 < 0 ? 0 : r2; + r3 = r3 < 0 ? 0 : r3; + context.arc(left + r3, top + r3, r3, -Math.PI, -Math.PI / 2); + context.arc(item.x - r0, top + r0, r0, -Math.PI / 2, 0); + context.arc(item.x - r1, top + width - r1, r1, 0, Math.PI / 2); + context.arc(left + r2, top + width - r2, r2, Math.PI / 2, Math.PI); + } else { + context.moveTo(startX, startY); + context.lineTo(item.x, startY); + context.lineTo(item.x, startY + item.width - 2); + context.lineTo(startX, startY + item.width - 2); + context.lineTo(startX, startY); + context.setLineWidth(1) + context.setStrokeStyle(strokeColor); + } + context.setFillStyle(fillColor); + context.closePath(); + //context.stroke(); + context.fill(); + } + }; + break; + case 'stack': + // 绘制堆叠数据图 + var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + calPoints.push(points); + points = fixBarStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + context.beginPath(); + var fillColor = item.color || eachSeries.color; + var startX = item.x0; + context.setFillStyle(fillColor); + context.moveTo(startX, item.y - item.width/2); + context.fillRect(startX, item.y - item.width/2, item.height , item.width - 2); + context.closePath(); + context.fill(); + } + }; + break; + } + }); + + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.xAxisData.ranges); + maxRange = ranges.pop(); + minRange = ranges.shift(); + var data = eachSeries.data; + switch (columnOption.type) { + case 'group': + var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process); + points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts); + drawBarPointText(points, eachSeries, config, context, opts); + break; + case 'stack': + var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + drawBarPointText(points, eachSeries, config, context, opts); + break; + } + }); + } + return { + yAxisPoints: yAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawCandleDataPoints(series, seriesMA, opts, config, context) { + var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1; + var candleOption = assign({}, { + color: {}, + average: {} + }, opts.extra.candle); + candleOption.color = assign({}, { + upLine: '#f04864', + upFill: '#f04864', + downLine: '#2fc25b', + downFill: '#2fc25b' + }, candleOption.color); + candleOption.average = assign({}, { + show: false, + name: [], + day: [], + color: config.color + }, candleOption.average); + opts.extra.candle = candleOption; + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let calPoints = []; + context.save(); + let leftNum = -2; + let rightNum = xAxisPoints.length + 2; + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2; + rightNum = leftNum + opts.xAxis.itemCount + 4; + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + //画均线 + if (candleOption.average.show || seriesMA) { //Merge pull request !12 from 邱贵翔 + seriesMA.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + var splitPointList = splitPoints(points,eachSeries); + for (let i = 0; i < splitPointList.length; i++) { + let points = splitPointList[i]; + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(1); + 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); + let startPoint = 0; + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + var ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, + item.y); + } + } + context.moveTo(points[0].x, points[0].y); + } + context.closePath(); + context.stroke(); + } + }); + } + //画K线 + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + var splitPointList = splitPoints(points,eachSeries); + for (let i = 0; i < splitPointList[0].length; i++) { + if (i > leftNum && i < rightNum) { + let item = splitPointList[0][i]; + context.beginPath(); + //如果上涨 + if (data[i][1] - data[i][0] > 0) { + context.setStrokeStyle(candleOption.color.upLine); + context.setFillStyle(candleOption.color.upFill); + context.setLineWidth(1 * opts.pix); + context.moveTo(item[3].x, item[3].y); //顶点 + context.lineTo(item[1].x, item[1].y); //收盘中间点 + context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点 + context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点 + context.lineTo(item[0].x, item[0].y); //开盘中间点 + context.lineTo(item[2].x, item[2].y); //底点 + context.lineTo(item[0].x, item[0].y); //开盘中间点 + context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点 + context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点 + context.lineTo(item[1].x, item[1].y); //收盘中间点 + context.moveTo(item[3].x, item[3].y); //顶点 + } else { + context.setStrokeStyle(candleOption.color.downLine); + context.setFillStyle(candleOption.color.downFill); + context.setLineWidth(1 * opts.pix); + context.moveTo(item[3].x, item[3].y); //顶点 + context.lineTo(item[0].x, item[0].y); //开盘中间点 + context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点 + context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点 + context.lineTo(item[1].x, item[1].y); //收盘中间点 + context.lineTo(item[2].x, item[2].y); //底点 + context.lineTo(item[1].x, item[1].y); //收盘中间点 + context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点 + context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点 + context.lineTo(item[0].x, item[0].y); //开盘中间点 + context.moveTo(item[3].x, item[3].y); //顶点 + } + context.closePath(); + context.fill(); + context.stroke(); + } + } + }); + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawAreaDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var areaOption = assign({}, { + type: 'straight', + opacity: 0.2, + addLine: false, + width: 2, + gradient: false + }, opts.extra.area); + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let endY = opts.height - opts.area[2]; + let calPoints = []; + context.save(); + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + let data = eachSeries.data; + let points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + let splitPointList = splitPoints(points,eachSeries); + for (let i = 0; i < splitPointList.length; i++) { + let points = splitPointList[i]; + // 绘制区域数 + context.beginPath(); + context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity)); + if (areaOption.gradient) { + let gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]); + gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity)); + gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1)); + context.setFillStyle(gradient); + } else { + context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity)); + } + context.setLineWidth(areaOption.width * opts.pix); + if (points.length > 1) { + let firstPoint = points[0]; + let lastPoint = points[points.length - 1]; + context.moveTo(firstPoint.x, firstPoint.y); + let startPoint = 0; + if (areaOption.type === 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + let ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); + } + }; + } + if (areaOption.type === 'straight') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + }; + } + if (areaOption.type === 'step') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, points[j - 1].y); + context.lineTo(item.x, item.y); + } + }; + } + context.lineTo(lastPoint.x, endY); + context.lineTo(firstPoint.x, endY); + context.lineTo(firstPoint.x, firstPoint.y); + } else { + let 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(); + //画连线 + if (areaOption.addLine) { + if (eachSeries.lineType == 'dash') { + let dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8; + dashLength *= opts.pix; + context.setLineDash([dashLength, dashLength]); + } + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(areaOption.width * opts.pix); + 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); + let startPoint = 0; + if (areaOption.type === 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + let ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); + } + }; + } + if (areaOption.type === 'straight') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + }; + } + if (areaOption.type === 'step') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, points[j - 1].y); + context.lineTo(item.x, item.y); + } + }; + } + context.moveTo(points[0].x, points[0].y); + } + context.stroke(); + context.setLineDash([]); + } + } + //画点 + if (opts.dataPointShape !== false) { + drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts); + } + }); + + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawPointText(points, eachSeries, config, context, opts); + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawScatterDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var scatterOption = assign({}, { + type: 'circle' + }, opts.extra.scatter); + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + var calPoints = []; + context.save(); + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setFillStyle(eachSeries.color); + context.setLineWidth(1 * opts.pix); + var shape = eachSeries.pointShape; + 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 + 2.5 * opts.pix, item.y); + context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false); + } + }); + } else if (shape === 'square') { + 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); + } + }); + } else if (shape === 'triangle') { + return; + } + context.closePath(); + context.fill(); + context.stroke(); + }); + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawPointText(points, eachSeries, config, context, opts); + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawBubbleDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var bubbleOption = assign({}, { + opacity: 1, + border:2 + }, opts.extra.bubble); + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + var calPoints = []; + context.save(); + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(bubbleOption.border * opts.pix); + context.setFillStyle(hexToRgb(eachSeries.color, bubbleOption.opacity)); + points.forEach(function(item, index) { + context.moveTo(item.x + item.r, item.y); + context.arc(item.x, item.y, item.r * opts.pix, 0, 2 * Math.PI, false); + }); + context.closePath(); + context.fill(); + context.stroke(); + + if (opts.dataLabel !== false && process === 1) { + points.forEach(function(item, index) { + context.beginPath(); + var fontSize = series.textSize * opts.pix || config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(series.textColor || "#FFFFFF"); + context.setTextAlign('center'); + context.fillText(String(item.t), item.x, item.y + fontSize/2); + context.closePath(); + context.stroke(); + context.setTextAlign('left'); + }); + } + }); + 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 lineOption = assign({}, { + type: 'straight', + width: 2 + }, opts.extra.line); + lineOption.width *= opts.pix; + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + var calPoints = []; + context.save(); + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + var splitPointList = splitPoints(points,eachSeries); + if (eachSeries.lineType == 'dash') { + let dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8; + dashLength *= opts.pix; + context.setLineDash([dashLength, dashLength]); + } + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(lineOption.width); + splitPointList.forEach(function(points, index) { + 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); + let startPoint = 0; + if (lineOption.type === 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + var ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); + } + }; + } + if (lineOption.type === 'straight') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + }; + } + if (lineOption.type === 'step') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, points[j - 1].y); + context.lineTo(item.x, item.y); + } + }; + } + context.moveTo(points[0].x, points[0].y); + } + }); + context.stroke(); + context.setLineDash([]); + if (opts.dataPointShape !== false) { + drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts); + } + }); + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawPointText(points, eachSeries, config, context, opts); + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawMixDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let columnOption = assign({}, { + width: eachSpacing / 2, + barBorderCircle: false, + barBorderRadius: [], + seriesGap: 2, + linearType: 'none', + linearOpacity: 1, + customColor: [], + colorStop: 0, + }, opts.extra.mix.column); + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let endY = opts.height - opts.area[2]; + let calPoints = []; + var columnIndex = 0; + var columnLength = 0; + series.forEach(function(eachSeries, seriesIndex) { + if (eachSeries.type == 'column') { + columnLength += 1; + } + }); + context.save(); + let leftNum = -2; + let rightNum = xAxisPoints.length + 2; + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2; + rightNum = leftNum + opts.xAxis.itemCount + 4; + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config); + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + // 绘制柱状数据图 + if (eachSeries.type == 'column') { + points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - item.width / 2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || eachSeries.color + var strokeColor = item.color || eachSeries.color + if (columnOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]); + //透明渐变 + if (columnOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity)); + grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + // 圆角边框 + if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle) { + const left = startX; + const top = item.y; + const width = item.width; + const height = opts.height - opts.area[2] - item.y; + if (columnOption.barBorderCircle) { + columnOption.barBorderRadius = [width / 2, width / 2, 0, 0]; + } + let [r0, r1, r2, r3] = columnOption.barBorderRadius; + let minRadius = Math.min(width/2,height/2); + r0 = r0 > minRadius ? minRadius : r0; + r1 = r1 > minRadius ? minRadius : r1; + r2 = r2 > minRadius ? minRadius : r2; + r3 = r3 > minRadius ? minRadius : r3; + r0 = r0 < 0 ? 0 : r0; + r1 = r1 < 0 ? 0 : r1; + r2 = r2 < 0 ? 0 : r2; + r3 = r3 < 0 ? 0 : r3; + context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2); + context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0); + context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2); + context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI); + } else { + context.moveTo(startX, item.y); + context.lineTo(startX + item.width - 2, item.y); + context.lineTo(startX + item.width - 2, opts.height - opts.area[2]); + context.lineTo(startX, opts.height - opts.area[2]); + context.lineTo(startX, item.y); + context.setLineWidth(1) + context.setStrokeStyle(strokeColor); + } + context.setFillStyle(fillColor); + context.closePath(); + context.fill(); + } + } + columnIndex += 1; + } + //绘制区域图数据 + if (eachSeries.type == 'area') { + let splitPointList = splitPoints(points,eachSeries); + for (let i = 0; i < splitPointList.length; i++) { + let points = splitPointList[i]; + // 绘制区域数据 + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setFillStyle(hexToRgb(eachSeries.color, 0.2)); + context.setLineWidth(2 * opts.pix); + if (points.length > 1) { + var firstPoint = points[0]; + let lastPoint = points[points.length - 1]; + context.moveTo(firstPoint.x, firstPoint.y); + let startPoint = 0; + if (eachSeries.style === 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + var ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); + } + }; + } else { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + }; + } + context.lineTo(lastPoint.x, endY); + context.lineTo(firstPoint.x, endY); + context.lineTo(firstPoint.x, firstPoint.y); + } else { + let 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(); + } + } + // 绘制折线数据图 + if (eachSeries.type == 'line') { + var splitPointList = splitPoints(points,eachSeries); + splitPointList.forEach(function(points, index) { + if (eachSeries.lineType == 'dash') { + let dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8; + dashLength *= opts.pix; + context.setLineDash([dashLength, dashLength]); + } + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(2 * opts.pix); + 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); + let startPoint = 0; + if (eachSeries.style == 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + var ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, + item.x, item.y); + } + } + } else { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + } + } + context.moveTo(points[0].x, points[0].y); + } + context.stroke(); + context.setLineDash([]); + }); + } + // 绘制点数据图 + if (eachSeries.type == 'point') { + eachSeries.addPoint = true; + } + if (eachSeries.addPoint == true && eachSeries.type !== 'column') { + drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts); + } + }); + if (opts.dataLabel !== false && process === 1) { + var columnIndex = 0; + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + if (eachSeries.type !== 'column') { + drawPointText(points, eachSeries, config, context, opts); + } else { + points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts); + drawPointText(points, eachSeries, config, context, opts); + columnIndex += 1; + } + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing, + } +} + +function drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints) { + var toolTipOption = opts.extra.tooltip || {}; + if (toolTipOption.horizentalLine && opts.tooltip && process === 1 && (opts.type == 'line' || opts.type == 'area' || opts.type == 'column' || opts.type == 'candle' || opts.type == 'mix')) { + drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) + } + 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, eachSpacing, xAxisPoints); + } + context.restore(); + +} + +function drawXAxis(categories, opts, config, context) { + + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + startX = xAxisData.startX, + endX = xAxisData.endX, + eachSpacing = xAxisData.eachSpacing; + var boundaryGap = 'center'; + if (opts.type == 'bar' || opts.type == 'line' || opts.type == 'area'|| opts.type == 'scatter' || opts.type == 'bubble') { + boundaryGap = opts.xAxis.boundaryGap; + } + var startY = opts.height - opts.area[2]; + var endY = opts.area[0]; + + //绘制滚动条 + if (opts.enableScroll && opts.xAxis.scrollShow) { + var scrollY = opts.height - opts.area[2] + config.xAxisHeight; + var scrollScreenWidth = endX - startX; + var scrollTotalWidth = eachSpacing * (xAxisPoints.length - 1); + var scrollWidth = scrollScreenWidth * scrollScreenWidth / scrollTotalWidth; + var scrollLeft = 0; + if (opts._scrollDistance_) { + scrollLeft = -opts._scrollDistance_ * (scrollScreenWidth) / scrollTotalWidth; + } + context.beginPath(); + context.setLineCap('round'); + context.setLineWidth(6 * opts.pix); + context.setStrokeStyle(opts.xAxis.scrollBackgroundColor || "#EFEBEF"); + context.moveTo(startX, scrollY); + context.lineTo(endX, scrollY); + context.stroke(); + context.closePath(); + context.beginPath(); + context.setLineCap('round'); + context.setLineWidth(6 * opts.pix); + context.setStrokeStyle(opts.xAxis.scrollColor || "#A6A6A6"); + context.moveTo(startX + scrollLeft, scrollY); + context.lineTo(startX + scrollLeft + scrollWidth, scrollY); + context.stroke(); + context.closePath(); + context.setLineCap('butt'); + } + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) { + context.translate(opts._scrollDistance_, 0); + } + //绘制X轴刻度线 + if (opts.xAxis.calibration === true) { + context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc"); + context.setLineCap('butt'); + context.setLineWidth(1 * opts.pix); + xAxisPoints.forEach(function(item, index) { + if (index > 0) { + context.beginPath(); + context.moveTo(item - eachSpacing / 2, startY); + context.lineTo(item - eachSpacing / 2, startY + 3 * opts.pix); + context.closePath(); + context.stroke(); + } + }); + } + //绘制X轴网格 + if (opts.xAxis.disableGrid !== true) { + context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc"); + context.setLineCap('butt'); + context.setLineWidth(1 * opts.pix); + if (opts.xAxis.gridType == 'dash') { + context.setLineDash([opts.xAxis.dashLength * opts.pix, opts.xAxis.dashLength * opts.pix]); + } + opts.xAxis.gridEval = opts.xAxis.gridEval || 1; + xAxisPoints.forEach(function(item, index) { + if (index % opts.xAxis.gridEval == 0) { + context.beginPath(); + context.moveTo(item, startY); + context.lineTo(item, endY); + context.stroke(); + } + }); + context.setLineDash([]); + } + //绘制X轴文案 + if (opts.xAxis.disabled !== true) { + // 对X轴列表做抽稀处理 + //默认全部显示X轴标签 + let maxXAxisListLength = categories.length; + //如果设置了X轴单屏数量 + if (opts.xAxis.labelCount) { + //如果设置X轴密度 + if (opts.xAxis.itemCount) { + maxXAxisListLength = Math.ceil(categories.length / opts.xAxis.itemCount * opts.xAxis.labelCount); + } else { + maxXAxisListLength = opts.xAxis.labelCount; + } + maxXAxisListLength -= 1; + } + + let ratio = Math.ceil(categories.length / maxXAxisListLength); + + let newCategories = []; + let cgLength = categories.length; + for (let i = 0; i < cgLength; i++) { + if (i % ratio !== 0) { + newCategories.push(""); + } else { + newCategories.push(categories[i]); + } + } + newCategories[cgLength - 1] = categories[cgLength - 1]; + var xAxisFontSize = opts.xAxis.fontSize * opts.pix || config.fontSize; + if (config._xAxisTextAngle_ === 0) { + newCategories.forEach(function(item, index) { + var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item) : item; + var offset = -measureText(String(xitem), xAxisFontSize, context) / 2; + if (boundaryGap == 'center') { + offset += eachSpacing / 2; + } + var scrollHeight = 0; + if (opts.xAxis.scrollShow) { + scrollHeight = 6 * opts.pix; + } + context.beginPath(); + context.setFontSize(xAxisFontSize); + context.setFillStyle(opts.xAxis.fontColor || opts.fontColor); + context.fillText(String(xitem), xAxisPoints[index] + offset, startY + xAxisFontSize + (config.xAxisHeight - scrollHeight - xAxisFontSize) / 2); + context.closePath(); + context.stroke(); + }); + } else { + newCategories.forEach(function(item, index) { + var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item) : item; + context.save(); + context.beginPath(); + context.setFontSize(xAxisFontSize); + context.setFillStyle(opts.xAxis.fontColor || opts.fontColor); + var textWidth = measureText(String(xitem), xAxisFontSize, context); + var offset = -textWidth; + if (boundaryGap == 'center') { + offset += eachSpacing / 2; + } + var _calRotateTranslate = calRotateTranslate(xAxisPoints[index] + eachSpacing / 2, startY + xAxisFontSize / 2 + 5, opts.height), + transX = _calRotateTranslate.transX, + transY = _calRotateTranslate.transY; + + context.rotate(-1 * config._xAxisTextAngle_); + context.translate(transX, transY); + context.fillText(String(xitem), xAxisPoints[index] + offset, startY + xAxisFontSize + 5); + context.closePath(); + context.stroke(); + context.restore(); + }); + } + } + context.restore(); + //绘制X轴轴线 + if (opts.xAxis.axisLine) { + context.beginPath(); + context.setStrokeStyle(opts.xAxis.axisLineColor); + context.setLineWidth(1 * opts.pix); + context.moveTo(startX, opts.height - opts.area[2]); + context.lineTo(endX, opts.height - opts.area[2]); + context.stroke(); + } +} + +function drawYAxisGrid(categories, opts, config, context) { + if (opts.yAxis.disableGrid === true) { + return; + } + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + let eachSpacing = spacingValid / opts.yAxis.splitNumber; + let startX = opts.area[3]; + let xAxisPoints = opts.chartData.xAxisData.xAxisPoints, + xAxiseachSpacing = opts.chartData.xAxisData.eachSpacing; + let TotalWidth = xAxiseachSpacing * (xAxisPoints.length - 1); + let endX = startX + TotalWidth; + let points = []; + let startY = 1 + if (opts.xAxis.axisLine === false) { + startY = 0 + } + for (let i = startY; i < opts.yAxis.splitNumber + 1; i++) { + points.push(opts.height - opts.area[2] - eachSpacing * i); + } + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) { + context.translate(opts._scrollDistance_, 0); + } + if (opts.yAxis.gridType == 'dash') { + context.setLineDash([opts.yAxis.dashLength * opts.pix, opts.yAxis.dashLength * opts.pix]); + } + context.setStrokeStyle(opts.yAxis.gridColor); + context.setLineWidth(1 * opts.pix); + points.forEach(function(item, index) { + context.beginPath(); + context.moveTo(startX, item); + context.lineTo(endX, item); + context.stroke(); + }); + context.setLineDash([]); + context.restore(); +} + +function drawYAxis(series, opts, config, context) { + if (opts.yAxis.disabled === true) { + return; + } + var spacingValid = opts.height - opts.area[0] - opts.area[2]; + var eachSpacing = spacingValid / opts.yAxis.splitNumber; + var startX = opts.area[3]; + var endX = opts.width - opts.area[1]; + var endY = opts.height - opts.area[2]; + var fillEndY = endY + config.xAxisHeight; + if (opts.xAxis.scrollShow) { + fillEndY -= 3 * opts.pix; + } + if (opts.xAxis.rotateLabel) { + fillEndY = opts.height - opts.area[2] + opts.fontSize * opts.pix / 2; + } + // set YAxis background + context.beginPath(); + context.setFillStyle(opts.background); + if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'left') { + context.fillRect(0, 0, startX, fillEndY); + } + if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'right') { + context.fillRect(endX, 0, opts.width, fillEndY); + } + context.closePath(); + context.stroke(); + + let tStartLeft = opts.area[3]; + let tStartRight = opts.width - opts.area[1]; + let tStartCenter = opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2; + if (opts.yAxis.data) { + for (let i = 0; i < opts.yAxis.data.length; i++) { + let yData = opts.yAxis.data[i]; + var points = []; + if(yData.type === 'categories'){ + for (let i = 0; i <= yData.categories.length; i++) { + points.push(opts.area[0] + spacingValid / yData.categories.length / 2 + spacingValid / yData.categories.length * i); + } + }else{ + for (let i = 0; i <= opts.yAxis.splitNumber; i++) { + points.push(opts.area[0] + eachSpacing * i); + } + } + if (yData.disabled !== true) { + let rangesFormat = opts.chartData.yAxisData.rangesFormat[i]; + let yAxisFontSize = yData.fontSize ? yData.fontSize * opts.pix : config.fontSize; + let yAxisWidth = opts.chartData.yAxisData.yAxisWidth[i]; + let textAlign = yData.textAlign || "right"; + //画Y轴刻度及文案 + rangesFormat.forEach(function(item, index) { + var pos = points[index] ? points[index] : endY; + context.beginPath(); + context.setFontSize(yAxisFontSize); + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(yData.axisLineColor || '#cccccc'); + context.setFillStyle(yData.fontColor || opts.fontColor); + let tmpstrat = 0; + let gapwidth = 4 * opts.pix; + if (yAxisWidth.position == 'left') { + //画刻度线 + if (yData.calibration == true) { + context.moveTo(tStartLeft, pos); + context.lineTo(tStartLeft - 3 * opts.pix, pos); + gapwidth += 3 * opts.pix; + } + //画文字 + switch (textAlign) { + case "left": + context.setTextAlign('left'); + tmpstrat = tStartLeft - yAxisWidth.width + break; + case "right": + context.setTextAlign('right'); + tmpstrat = tStartLeft - gapwidth + break; + default: + context.setTextAlign('center'); + tmpstrat = tStartLeft - yAxisWidth.width / 2 + } + context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix); + + } else if (yAxisWidth.position == 'right') { + //画刻度线 + if (yData.calibration == true) { + context.moveTo(tStartRight, pos); + context.lineTo(tStartRight + 3 * opts.pix, pos); + gapwidth += 3 * opts.pix; + } + switch (textAlign) { + case "left": + context.setTextAlign('left'); + tmpstrat = tStartRight + gapwidth + break; + case "right": + context.setTextAlign('right'); + tmpstrat = tStartRight + yAxisWidth.width + break; + default: + context.setTextAlign('center'); + tmpstrat = tStartRight + yAxisWidth.width / 2 + } + context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix); + } else if (yAxisWidth.position == 'center') { + //画刻度线 + if (yData.calibration == true) { + context.moveTo(tStartCenter, pos); + context.lineTo(tStartCenter - 3 * opts.pix, pos); + gapwidth += 3 * opts.pix; + } + //画文字 + switch (textAlign) { + case "left": + context.setTextAlign('left'); + tmpstrat = tStartCenter - yAxisWidth.width + break; + case "right": + context.setTextAlign('right'); + tmpstrat = tStartCenter - gapwidth + break; + default: + context.setTextAlign('center'); + tmpstrat = tStartCenter - yAxisWidth.width / 2 + } + context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix); + } + context.closePath(); + context.stroke(); + context.setTextAlign('left'); + }); + //画Y轴轴线 + if (yData.axisLine !== false) { + context.beginPath(); + context.setStrokeStyle(yData.axisLineColor || '#cccccc'); + context.setLineWidth(1 * opts.pix); + if (yAxisWidth.position == 'left') { + context.moveTo(tStartLeft, opts.height - opts.area[2]); + context.lineTo(tStartLeft, opts.area[0]); + } else if (yAxisWidth.position == 'right') { + context.moveTo(tStartRight, opts.height - opts.area[2]); + context.lineTo(tStartRight, opts.area[0]); + } else if (yAxisWidth.position == 'center') { + context.moveTo(tStartCenter, opts.height - opts.area[2]); + context.lineTo(tStartCenter, opts.area[0]); + } + context.stroke(); + } + //画Y轴标题 + if (opts.yAxis.showTitle) { + let titleFontSize = yData.titleFontSize * opts.pix || config.fontSize; + let title = yData.title; + context.beginPath(); + context.setFontSize(titleFontSize); + context.setFillStyle(yData.titleFontColor || opts.fontColor); + if (yAxisWidth.position == 'left') { + context.fillText(title, tStartLeft - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix); + } else if (yAxisWidth.position == 'right') { + context.fillText(title, tStartRight - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix); + } else if (yAxisWidth.position == 'center') { + context.fillText(title, tStartCenter - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix); + } + context.closePath(); + context.stroke(); + } + if (yAxisWidth.position == 'left') { + tStartLeft -= (yAxisWidth.width + opts.yAxis.padding * opts.pix); + } else { + tStartRight += yAxisWidth.width + opts.yAxis.padding * opts.pix; + } + } + } + } + +} + +function drawLegend(series, opts, config, context, chartData) { + if (opts.legend.show === false) { + return; + } + let legendData = chartData.legendData; + let legendList = legendData.points; + let legendArea = legendData.area; + let padding = opts.legend.padding * opts.pix; + let fontSize = opts.legend.fontSize * opts.pix; + let shapeWidth = 15 * opts.pix; + let shapeRight = 5 * opts.pix; + let itemGap = opts.legend.itemGap * opts.pix; + let lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize); + //画背景及边框 + context.beginPath(); + context.setLineWidth(opts.legend.borderWidth * opts.pix); + context.setStrokeStyle(opts.legend.borderColor); + context.setFillStyle(opts.legend.backgroundColor); + context.moveTo(legendArea.start.x, legendArea.start.y); + context.rect(legendArea.start.x, legendArea.start.y, legendArea.width, legendArea.height); + context.closePath(); + context.fill(); + context.stroke(); + legendList.forEach(function(itemList, listIndex) { + let width = 0; + let height = 0; + width = legendData.widthArr[listIndex]; + height = legendData.heightArr[listIndex]; + let startX = 0; + let startY = 0; + if (opts.legend.position == 'top' || opts.legend.position == 'bottom') { + switch (opts.legend.float) { + case 'left': + startX = legendArea.start.x + padding; + break; + case 'right': + startX = legendArea.start.x + legendArea.width - width; + break; + default: + startX = legendArea.start.x + (legendArea.width - width) / 2; + } + startY = legendArea.start.y + padding + listIndex * lineHeight; + } else { + if (listIndex == 0) { + width = 0; + } else { + width = legendData.widthArr[listIndex - 1]; + } + startX = legendArea.start.x + padding + width; + startY = legendArea.start.y + padding + (legendArea.height - height) / 2; + } + context.setFontSize(config.fontSize); + for (let i = 0; i < itemList.length; i++) { + let item = itemList[i]; + item.area = [0, 0, 0, 0]; + item.area[0] = startX; + item.area[1] = startY; + item.area[3] = startY + lineHeight; + context.beginPath(); + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(item.show ? item.color : opts.legend.hiddenColor); + context.setFillStyle(item.show ? item.color : opts.legend.hiddenColor); + switch (item.legendShape) { + case 'line': + context.moveTo(startX, startY + 0.5 * lineHeight - 2 * opts.pix); + context.fillRect(startX, startY + 0.5 * lineHeight - 2 * opts.pix, 15 * opts.pix, 4 * opts.pix); + break; + case 'triangle': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix); + context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + break; + case 'diamond': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix); + context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + break; + case 'circle': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight); + context.arc(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight, 5 * opts.pix, 0, 2 * Math.PI); + break; + case 'rect': + context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix); + context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix); + break; + case 'square': + context.moveTo(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + context.fillRect(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix); + break; + case 'none': + break; + default: + context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix); + context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix); + } + context.closePath(); + context.fill(); + context.stroke(); + startX += shapeWidth + shapeRight; + let fontTrans = 0.5 * lineHeight + 0.5 * fontSize - 2; + context.beginPath(); + context.setFontSize(fontSize); + context.setFillStyle(item.show ? opts.legend.fontColor : opts.legend.hiddenColor); + context.fillText(item.name, startX, startY + fontTrans); + context.closePath(); + context.stroke(); + if (opts.legend.position == 'top' || opts.legend.position == 'bottom') { + startX += measureText(item.name, fontSize, context) + itemGap; + item.area[2] = startX; + } else { + item.area[2] = startX + measureText(item.name, fontSize, context) + itemGap;; + startX -= shapeWidth + shapeRight; + startY += lineHeight; + } + } + }); +} + +function drawPieDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var pieOption = assign({}, { + activeOpacity: 0.5, + activeRadius: 10, + offsetAngle: 0, + labelWidth: 15, + ringWidth: 30, + customRadius: 0, + border: false, + borderWidth: 2, + borderColor: '#FFFFFF', + centerColor: '#FFFFFF', + linearType: 'none', + customColor: [], + }, opts.type == "pie" ? opts.extra.pie : opts.extra.ring); + var centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 + }; + if (config.pieChartLinePadding == 0) { + config.pieChartLinePadding = pieOption.activeRadius * opts.pix; + } + + var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding); + if (pieOption.customRadius > 0) { + radius = pieOption.customRadius * opts.pix; + } + series = getPieDataPoints(series, radius, process); + var activeRadius = pieOption.activeRadius * opts.pix; + pieOption.customColor = fillCustomColor(pieOption.linearType, pieOption.customColor, series, config); + series = series.map(function(eachSeries) { + eachSeries._start_ += (pieOption.offsetAngle) * Math.PI / 180; + return eachSeries; + }); + series.forEach(function(eachSeries, seriesIndex) { + if (opts.tooltip) { + if (opts.tooltip.index == seriesIndex) { + context.beginPath(); + context.setFillStyle(hexToRgb(eachSeries.color, pieOption.activeOpacity || 0.5)); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI); + context.closePath(); + context.fill(); + } + } + context.beginPath(); + context.setLineWidth(pieOption.borderWidth * opts.pix); + context.lineJoin = "round"; + context.setStrokeStyle(pieOption.borderColor); + var fillcolor = eachSeries.color; + if (pieOption.linearType == 'custom') { + var grd; + if(context.createCircularGradient){ + grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_) + }else{ + grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0,centerPosition.x, centerPosition.y, eachSeries._radius_) + } + grd.addColorStop(0, hexToRgb(pieOption.customColor[eachSeries.linearIndex], 1)) + grd.addColorStop(1, hexToRgb(eachSeries.color, 1)) + fillcolor = grd + } + context.setFillStyle(fillcolor); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI); + context.closePath(); + context.fill(); + if (pieOption.border == true) { + context.stroke(); + } + }); + if (opts.type === 'ring') { + var innerPieWidth = radius * 0.6; + if (typeof pieOption.ringWidth === 'number' && pieOption.ringWidth > 0) { + innerPieWidth = Math.max(0, radius - pieOption.ringWidth * opts.pix); + } + context.beginPath(); + context.setFillStyle(pieOption.centerColor); + 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) { + 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, centerPosition); + } + return { + center: centerPosition, + radius: radius, + series: series + }; +} + +function drawRoseDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var roseOption = assign({}, { + type: 'area', + activeOpacity: 0.5, + activeRadius: 10, + offsetAngle: 0, + labelWidth: 15, + border: false, + borderWidth: 2, + borderColor: '#FFFFFF', + linearType: 'none', + customColor: [], + }, opts.extra.rose); + if (config.pieChartLinePadding == 0) { + config.pieChartLinePadding = roseOption.activeRadius * opts.pix; + } + var centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 + }; + var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding); + var minRadius = roseOption.minRadius || radius * 0.5; + series = getRoseDataPoints(series, roseOption.type, minRadius, radius, process); + var activeRadius = roseOption.activeRadius * opts.pix; + roseOption.customColor = fillCustomColor(roseOption.linearType, roseOption.customColor, series, config); + series = series.map(function(eachSeries) { + eachSeries._start_ += (roseOption.offsetAngle || 0) * Math.PI / 180; + return eachSeries; + }); + series.forEach(function(eachSeries, seriesIndex) { + if (opts.tooltip) { + if (opts.tooltip.index == seriesIndex) { + context.beginPath(); + context.setFillStyle(hexToRgb(eachSeries.color, roseOption.activeOpacity || 0.5)); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, activeRadius + eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI); + context.closePath(); + context.fill(); + } + } + context.beginPath(); + context.setLineWidth(roseOption.borderWidth * opts.pix); + context.lineJoin = "round"; + context.setStrokeStyle(roseOption.borderColor); + var fillcolor = eachSeries.color; + if (roseOption.linearType == 'custom') { + var grd; + if(context.createCircularGradient){ + grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_) + }else{ + grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0,centerPosition.x, centerPosition.y, eachSeries._radius_) + } + grd.addColorStop(0, hexToRgb(roseOption.customColor[eachSeries.linearIndex], 1)) + grd.addColorStop(1, hexToRgb(eachSeries.color, 1)) + fillcolor = grd + } + context.setFillStyle(fillcolor); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI); + context.closePath(); + context.fill(); + if (roseOption.border == true) { + context.stroke(); + } + }); + + if (opts.dataLabel !== false && process === 1) { + 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); + } + } + return { + center: centerPosition, + radius: radius, + series: series + }; +} + +function drawArcbarDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var arcbarOption = assign({}, { + startAngle: 0.75, + endAngle: 0.25, + type: 'default', + width: 12 , + gap: 2 , + linearType: 'none', + customColor: [], + }, opts.extra.arcbar); + series = getArcbarDataPoints(series, arcbarOption, process); + var centerPosition; + if (arcbarOption.centerX || arcbarOption.centerY) { + centerPosition = { + x: arcbarOption.centerX ? arcbarOption.centerX : opts.width / 2, + y: arcbarOption.centerY ? arcbarOption.centerY : opts.height / 2 + }; + } else { + centerPosition = { + x: opts.width / 2, + y: opts.height / 2 + }; + } + var radius; + if (arcbarOption.radius) { + radius = arcbarOption.radius; + } else { + radius = Math.min(centerPosition.x, centerPosition.y); + radius -= 5 * opts.pix; + radius -= arcbarOption.width / 2; + } + arcbarOption.customColor = fillCustomColor(arcbarOption.linearType, arcbarOption.customColor, series, config); + + for (let i = 0; i < series.length; i++) { + let eachSeries = series[i]; + //背景颜色 + context.setLineWidth(arcbarOption.width * opts.pix); + context.setStrokeStyle(arcbarOption.backgroundColor || '#E9E9E9'); + context.setLineCap('round'); + context.beginPath(); + if (arcbarOption.type == 'default') { + context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle * Math.PI, false); + } else { + context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, 0, 2 * Math.PI, false); + } + context.stroke(); + //进度条 + var fillColor = eachSeries.color + if(arcbarOption.linearType == 'custom'){ + var grd = context.createLinearGradient(centerPosition.x - radius, centerPosition.y, centerPosition.x + radius, centerPosition.y); + grd.addColorStop(1, hexToRgb(arcbarOption.customColor[eachSeries.linearIndex], 1)) + grd.addColorStop(0, hexToRgb(eachSeries.color, 1)) + fillColor = grd; + } + context.setLineWidth(arcbarOption.width * opts.pix); + context.setStrokeStyle(fillColor); + context.setLineCap('round'); + context.beginPath(); + context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ * Math.PI, false); + context.stroke(); + } + drawRingTitle(opts, config, context, centerPosition); + return { + center: centerPosition, + radius: radius, + series: series + }; +} + +function drawGaugeDataPoints(categories, series, opts, config, context) { + var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1; + var gaugeOption = assign({}, { + type: 'default', + startAngle: 0.75, + endAngle: 0.25, + width: 15, + labelOffset:13, + splitLine: { + fixRadius: 0, + splitNumber: 10, + width: 15, + color: '#FFFFFF', + childNumber: 5, + childWidth: 5 + }, + pointer: { + width: 15, + color: 'auto' + } + }, opts.extra.gauge); + if (gaugeOption.oldAngle == undefined) { + gaugeOption.oldAngle = gaugeOption.startAngle; + } + if (gaugeOption.oldData == undefined) { + gaugeOption.oldData = 0; + } + categories = getGaugeAxisPoints(categories, gaugeOption.startAngle, gaugeOption.endAngle); + var centerPosition = { + x: opts.width / 2, + y: opts.height / 2 + }; + var radius = Math.min(centerPosition.x, centerPosition.y); + radius -= 5 * opts.pix; + radius -= gaugeOption.width / 2; + var innerRadius = radius - gaugeOption.width; + var totalAngle = 0; + //判断仪表盘的样式:default百度样式,progress新样式 + if (gaugeOption.type == 'progress') { + //## 第一步画中心圆形背景和进度条背景 + //中心圆形背景 + var pieRadius = radius - gaugeOption.width * 3; + context.beginPath(); + let gradient = context.createLinearGradient(centerPosition.x, centerPosition.y - pieRadius, centerPosition.x, centerPosition.y + pieRadius); + //配置渐变填充(起点:中心点向上减半径;结束点中心点向下加半径) + gradient.addColorStop('0', hexToRgb(series[0].color, 0.3)); + gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1)); + context.setFillStyle(gradient); + context.arc(centerPosition.x, centerPosition.y, pieRadius, 0, 2 * Math.PI, false); + context.fill(); + //画进度条背景 + context.setLineWidth(gaugeOption.width); + context.setStrokeStyle(hexToRgb(series[0].color, 0.3)); + context.setLineCap('round'); + context.beginPath(); + context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, gaugeOption.endAngle * Math.PI, false); + context.stroke(); + //## 第二步画刻度线 + totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1; + let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber; + let childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber; + let startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius; + let endX = -radius - gaugeOption.width - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width; + context.save(); + context.translate(centerPosition.x, centerPosition.y); + context.rotate((gaugeOption.startAngle - 1) * Math.PI); + let len = gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; + let proc = series[0].data * process; + for (let i = 0; i < len; i++) { + context.beginPath(); + //刻度线随进度变色 + if (proc > (i / len)) { + context.setStrokeStyle(hexToRgb(series[0].color, 1)); + } else { + context.setStrokeStyle(hexToRgb(series[0].color, 0.3)); + } + context.setLineWidth(3 * opts.pix); + context.moveTo(startX, 0); + context.lineTo(endX, 0); + context.stroke(); + context.rotate(childAngle * Math.PI); + } + context.restore(); + //## 第三步画进度条 + series = getArcbarDataPoints(series, gaugeOption, process); + context.setLineWidth(gaugeOption.width); + context.setStrokeStyle(series[0].color); + context.setLineCap('round'); + context.beginPath(); + context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, series[0]._proportion_ * Math.PI, false); + context.stroke(); + //## 第四步画指针 + let pointerRadius = radius - gaugeOption.width * 2.5; + context.save(); + context.translate(centerPosition.x, centerPosition.y); + context.rotate((series[0]._proportion_ - 1) * Math.PI); + context.beginPath(); + context.setLineWidth(gaugeOption.width / 3); + let gradient3 = context.createLinearGradient(0, -pointerRadius * 0.6, 0, pointerRadius * 0.6); + gradient3.addColorStop('0', hexToRgb('#FFFFFF', 0)); + gradient3.addColorStop('0.5', hexToRgb(series[0].color, 1)); + gradient3.addColorStop('1.0', hexToRgb('#FFFFFF', 0)); + context.setStrokeStyle(gradient3); + context.arc(0, 0, pointerRadius, 0.85 * Math.PI, 1.15 * Math.PI, false); + context.stroke(); + context.beginPath(); + context.setLineWidth(1); + context.setStrokeStyle(series[0].color); + context.setFillStyle(series[0].color); + context.moveTo(-pointerRadius - gaugeOption.width / 3 / 2, -4); + context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2 - 4, 0); + context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, 4); + context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, -4); + context.stroke(); + context.fill(); + context.restore(); + //default百度样式 + } else { + //画背景 + context.setLineWidth(gaugeOption.width); + context.setLineCap('butt'); + for (let i = 0; i < categories.length; i++) { + let eachCategories = categories[i]; + context.beginPath(); + context.setStrokeStyle(eachCategories.color); + context.arc(centerPosition.x, centerPosition.y, radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ * Math.PI, false); + context.stroke(); + } + context.save(); + //画刻度线 + totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1; + let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber; + let childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber; + let startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius; + let endX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width; + let childendX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.childWidth; + context.translate(centerPosition.x, centerPosition.y); + context.rotate((gaugeOption.startAngle - 1) * Math.PI); + for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) { + context.beginPath(); + context.setStrokeStyle(gaugeOption.splitLine.color); + context.setLineWidth(2 * opts.pix); + context.moveTo(startX, 0); + context.lineTo(endX, 0); + context.stroke(); + context.rotate(splitAngle * Math.PI); + } + context.restore(); + context.save(); + context.translate(centerPosition.x, centerPosition.y); + context.rotate((gaugeOption.startAngle - 1) * Math.PI); + for (let i = 0; i < gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; i++) { + context.beginPath(); + context.setStrokeStyle(gaugeOption.splitLine.color); + context.setLineWidth(1 * opts.pix); + context.moveTo(startX, 0); + context.lineTo(childendX, 0); + context.stroke(); + context.rotate(childAngle * Math.PI); + } + context.restore(); + //画指针 + series = getGaugeDataPoints(series, categories, gaugeOption, process); + for (let i = 0; i < series.length; i++) { + let eachSeries = series[i]; + context.save(); + context.translate(centerPosition.x, centerPosition.y); + context.rotate((eachSeries._proportion_ - 1) * Math.PI); + context.beginPath(); + context.setFillStyle(eachSeries.color); + context.moveTo(gaugeOption.pointer.width, 0); + context.lineTo(0, -gaugeOption.pointer.width / 2); + context.lineTo(-innerRadius, 0); + context.lineTo(0, gaugeOption.pointer.width / 2); + context.lineTo(gaugeOption.pointer.width, 0); + context.closePath(); + context.fill(); + context.beginPath(); + context.setFillStyle('#FFFFFF'); + context.arc(0, 0, gaugeOption.pointer.width / 6, 0, 2 * Math.PI, false); + context.fill(); + context.restore(); + } + if (opts.dataLabel !== false) { + drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context); + } + } + //画仪表盘标题,副标题 + drawRingTitle(opts, config, context, centerPosition); + if (process === 1 && opts.type === 'gauge') { + opts.extra.gauge.oldAngle = series[0]._proportion_; + opts.extra.gauge.oldData = series[0].data; + } + return { + center: centerPosition, + radius: radius, + innerRadius: innerRadius, + categories: categories, + totalAngle: totalAngle + }; +} + +function drawRadarDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var radarOption = assign({}, { + gridColor: '#cccccc', + gridType: 'radar', + opacity: 0.2, + gridCount: 3, + border:false, + borderWidth:2 + }, opts.extra.radar); + var coordinateAngle = getRadarCoordinateSeries(opts.categories.length); + var centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 + }; + var xr = (opts.width - opts.area[1] - opts.area[3]) / 2 + var yr = (opts.height - opts.area[0] - opts.area[2]) / 2 + var radius = Math.min(xr - (getMaxTextListLength(opts.categories, config.fontSize, context) + config.radarLabelTextMargin), yr - config.radarLabelTextMargin); + radius -= config.radarLabelTextMargin * opts.pix; + // 画分割线 + context.beginPath(); + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(radarOption.gridColor); + 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(); + + // 画背景网格 + var _loop = function _loop(i) { + var startPos = {}; + context.beginPath(); + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(radarOption.gridColor); + if (radarOption.gridType == 'radar') { + coordinateAngle.forEach(function(angle, index) { + var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(angle), radius / + radarOption.gridCount * 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); + } else { + var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(1.5), radius / radarOption.gridCount * i * Math.sin(1.5), centerPosition); + context.arc(centerPosition.x, centerPosition.y, centerPosition.y - pos.y, 0, 2 * Math.PI, false); + } + context.stroke(); + context.closePath(); + }; + for (var i = 1; i <= radarOption.gridCount; i++) { + _loop(i); + } + var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process); + radarDataPoints.forEach(function(eachSeries, seriesIndex) { + // 绘制区域数据 + context.beginPath(); + context.setLineWidth(radarOption.borderWidth * opts.pix); + context.setStrokeStyle(eachSeries.color); + context.setFillStyle(hexToRgb(eachSeries.color, radarOption.opacity)); + 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(); + if(radarOption.border === true){ + context.stroke(); + } + context.closePath(); + if (opts.dataPointShape !== false) { + var points = eachSeries.data.map(function(item) { + return item.position; + }); + drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts); + } + }); + // draw label text + drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context); + + // draw dataLabel + if (opts.dataLabel !== false && process === 1) { + radarDataPoints.forEach(function(eachSeries, seriesIndex) { + context.beginPath(); + var fontSize = eachSeries.textSize * opts.pix || config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(eachSeries.textColor || opts.fontColor); + eachSeries.data.forEach(function(item, index) { + //如果是中心点垂直的上下点位 + if(Math.abs(item.position.x - centerPosition.x)<2){ + //如果在上面 + if(item.position.y < centerPosition.y){ + context.setTextAlign('center'); + context.fillText(item.value, item.position.x, item.position.y - 4); + }else{ + context.setTextAlign('center'); + context.fillText(item.value, item.position.x, item.position.y + fontSize + 2); + } + }else{ + //如果在左侧 + if(item.position.x < centerPosition.x){ + context.setTextAlign('right'); + context.fillText(item.value, item.position.x - 4, item.position.y + fontSize / 2 - 2); + }else{ + context.setTextAlign('left'); + context.fillText(item.value, item.position.x + 4, item.position.y + fontSize / 2 - 2); + } + } + }); + context.closePath(); + context.stroke(); + }); + context.setTextAlign('left'); + } + + return { + center: centerPosition, + radius: radius, + angleList: coordinateAngle + }; +} + +function normalInt(min, max, iter) { + iter = iter == 0 ? 1 : iter; + var arr = []; + for (var i = 0; i < iter; i++) { + arr[i] = Math.random(); + }; + return Math.floor(arr.reduce(function(i, j) { + return i + j + }) / iter * (max - min)) + min; +}; + +function collisionNew(area, points, width, height) { + var isIn = false; + for (let i = 0; i < points.length; i++) { + if (points[i].area) { + if (area[3] < points[i].area[1] || area[0] > points[i].area[2] || area[1] > points[i].area[3] || area[2] < points[i].area[0]) { + if (area[0] < 0 || area[1] < 0 || area[2] > width || area[3] > height) { + isIn = true; + break; + } else { + isIn = false; + } + } else { + isIn = true; + break; + } + } + } + return isIn; +}; + +function getBoundingBox(data) { + var bounds = {},coords; + bounds.xMin = 180; + bounds.xMax = 0; + bounds.yMin = 90; + bounds.yMax = 0 + for (var i = 0; i < data.length; i++) { + var coorda = data[i].geometry.coordinates + for (var k = 0; k < coorda.length; k++) { + coords = coorda[k]; + if (coords.length == 1) { + coords = coords[0] + } + for (var j = 0; j < coords.length; j++) { + var longitude = coords[j][0]; + var latitude = coords[j][1]; + var point = { + x: longitude, + y: latitude + } + bounds.xMin = bounds.xMin < point.x ? bounds.xMin : point.x; + bounds.xMax = bounds.xMax > point.x ? bounds.xMax : point.x; + bounds.yMin = bounds.yMin < point.y ? bounds.yMin : point.y; + bounds.yMax = bounds.yMax > point.y ? bounds.yMax : point.y; + } + } + } + return bounds; +} + +function coordinateToPoint(latitude, longitude, bounds, scale, xoffset, yoffset) { + return { + x: (longitude - bounds.xMin) * scale + xoffset, + y: (bounds.yMax - latitude) * scale + yoffset + }; +} + +function pointToCoordinate(pointY, pointX, bounds, scale, xoffset, yoffset) { + return { + x: (pointX - xoffset) / scale + bounds.xMin, + y: bounds.yMax - (pointY - yoffset) / scale + }; +} + +function isRayIntersectsSegment(poi, s_poi, e_poi) { + if (s_poi[1] == e_poi[1]) { + return false; + } + if (s_poi[1] > poi[1] && e_poi[1] > poi[1]) { + return false; + } + if (s_poi[1] < poi[1] && e_poi[1] < poi[1]) { + return false; + } + if (s_poi[1] == poi[1] && e_poi[1] > poi[1]) { + return false; + } + if (e_poi[1] == poi[1] && s_poi[1] > poi[1]) { + return false; + } + if (s_poi[0] < poi[0] && e_poi[1] < poi[1]) { + return false; + } + let xseg = e_poi[0] - (e_poi[0] - s_poi[0]) * (e_poi[1] - poi[1]) / (e_poi[1] - s_poi[1]); + if (xseg < poi[0]) { + return false; + } else { + return true; + } +} + +function isPoiWithinPoly(poi, poly, mercator) { + let sinsc = 0; + for (let i = 0; i < poly.length; i++) { + let epoly = poly[i][0]; + if (poly.length == 1) { + epoly = poly[i][0] + } + for (let j = 0; j < epoly.length - 1; j++) { + let s_poi = epoly[j]; + let e_poi = epoly[j + 1]; + if (mercator) { + s_poi = lonlat2mercator(epoly[j][0], epoly[j][1]); + e_poi = lonlat2mercator(epoly[j + 1][0], epoly[j + 1][1]); + } + if (isRayIntersectsSegment(poi, s_poi, e_poi)) { + sinsc += 1; + } + } + } + if (sinsc % 2 == 1) { + return true; + } else { + return false; + } +} + + +function drawMapDataPoints(series, opts, config, context) { + var mapOption = assign({}, { + border: true, + mercator: false, + borderWidth: 1, + borderColor: '#666666', + fillOpacity: 0.6, + activeBorderColor: '#f04864', + activeFillColor: '#facc14', + activeFillOpacity: 1 + }, opts.extra.map); + var coords, point; + var data = series; + var bounds = getBoundingBox(data); + if (mapOption.mercator) { + var max = lonlat2mercator(bounds.xMax, bounds.yMax) + var min = lonlat2mercator(bounds.xMin, bounds.yMin) + bounds.xMax = max[0] + bounds.yMax = max[1] + bounds.xMin = min[0] + bounds.yMin = min[1] + } + var xScale = opts.width / Math.abs(bounds.xMax - bounds.xMin); + var yScale = opts.height / Math.abs(bounds.yMax - bounds.yMin); + var scale = xScale < yScale ? xScale : yScale; + var xoffset = opts.width / 2 - Math.abs(bounds.xMax - bounds.xMin) / 2 * scale; + var yoffset = opts.height / 2 - Math.abs(bounds.yMax - bounds.yMin) / 2 * scale; + for (var i = 0; i < data.length; i++) { + context.beginPath(); + context.setLineWidth(mapOption.borderWidth * opts.pix); + context.setStrokeStyle(mapOption.borderColor); + context.setFillStyle(hexToRgb(series[i].color, mapOption.fillOpacity)); + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.setStrokeStyle(mapOption.activeBorderColor); + context.setFillStyle(hexToRgb(mapOption.activeFillColor, mapOption.activeFillOpacity)); + } + } + var coorda = data[i].geometry.coordinates + for (var k = 0; k < coorda.length; k++) { + coords = coorda[k]; + if (coords.length == 1) { + coords = coords[0] + } + for (var j = 0; j < coords.length; j++) { + var gaosi = Array(2); + if (mapOption.mercator) { + gaosi = lonlat2mercator(coords[j][0], coords[j][1]) + } else { + gaosi = coords[j] + } + point = coordinateToPoint(gaosi[1], gaosi[0], bounds, scale, xoffset, yoffset) + if (j === 0) { + context.beginPath(); + context.moveTo(point.x, point.y); + } else { + context.lineTo(point.x, point.y); + } + } + context.fill(); + if (mapOption.border == true) { + context.stroke(); + } + } + if (opts.dataLabel == true) { + var centerPoint = data[i].properties.centroid; + if (centerPoint) { + if (mapOption.mercator) { + centerPoint = lonlat2mercator(data[i].properties.centroid[0], data[i].properties.centroid[1]) + } + point = coordinateToPoint(centerPoint[1], centerPoint[0], bounds, scale, xoffset, yoffset); + let fontSize = data[i].textSize * opts.pix || config.fontSize; + let text = data[i].properties.name; + context.beginPath(); + context.setFontSize(fontSize) + context.setFillStyle(data[i].textColor || opts.fontColor) + context.fillText(text, point.x - measureText(text, fontSize, context) / 2, point.y + fontSize / 2); + context.closePath(); + context.stroke(); + } + } + } + opts.chartData.mapData = { + bounds: bounds, + scale: scale, + xoffset: xoffset, + yoffset: yoffset, + mercator: mapOption.mercator + } + drawToolTipBridge(opts, config, context, 1); + context.draw(); +} + +function getWordCloudPoint(opts, type, context) { + let points = opts.series; + switch (type) { + case 'normal': + for (let i = 0; i < points.length; i++) { + let text = points[i].name; + let tHeight = points[i].textSize * opts.pix; + let tWidth = measureText(text, tHeight, context); + let x, y; + let area; + let breaknum = 0; + while (true) { + breaknum++; + x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2; + y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2; + area = [x - 5 + opts.width / 2, y - 5 - tHeight + opts.height / 2, x + tWidth + 5 + opts.width / 2, y + 5 + + opts.height / 2 + ]; + let isCollision = collisionNew(area, points, opts.width, opts.height); + if (!isCollision) break; + if (breaknum == 1000) { + area = [-100, -100, -100, -100]; + break; + } + }; + points[i].area = area; + } + break; + case 'vertical': + function Spin() { + //获取均匀随机值,是否旋转,旋转的概率为(1-0.5) + if (Math.random() > 0.7) { + return true; + } else { + return false + }; + }; + for (let i = 0; i < points.length; i++) { + let text = points[i].name; + let tHeight = points[i].textSize * opts.pix; + let tWidth = measureText(text, tHeight, context); + let isSpin = Spin(); + let x, y, area, areav; + let breaknum = 0; + while (true) { + breaknum++; + let isCollision; + if (isSpin) { + x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2; + y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2; + area = [y - 5 - tWidth + opts.width / 2, (-x - 5 + opts.height / 2), y + 5 + opts.width / 2, (-x + tHeight + 5 + opts.height / 2)]; + areav = [opts.width - (opts.width / 2 - opts.height / 2) - (-x + tHeight + 5 + opts.height / 2) - 5, (opts.height / 2 - opts.width / 2) + (y - 5 - tWidth + opts.width / 2) - 5, opts.width - (opts.width / 2 - opts.height / 2) - (-x + tHeight + 5 + opts.height / 2) + tHeight, (opts.height / 2 - opts.width / 2) + (y - 5 - tWidth + opts.width / 2) + tWidth + 5]; + isCollision = collisionNew(areav, points, opts.height, opts.width); + } else { + x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2; + y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2; + area = [x - 5 + opts.width / 2, y - 5 - tHeight + opts.height / 2, x + tWidth + 5 + opts.width / 2, y + 5 + opts.height / 2]; + isCollision = collisionNew(area, points, opts.width, opts.height); + } + if (!isCollision) break; + if (breaknum == 1000) { + area = [-1000, -1000, -1000, -1000]; + break; + } + }; + if (isSpin) { + points[i].area = areav; + points[i].areav = area; + } else { + points[i].area = area; + } + points[i].rotate = isSpin; + }; + break; + } + return points; +} + + +function drawWordCloudDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let wordOption = assign({}, { + type: 'normal', + autoColors: true + }, opts.extra.word); + if (!opts.chartData.wordCloudData) { + opts.chartData.wordCloudData = getWordCloudPoint(opts, wordOption.type, context); + } + context.beginPath(); + context.setFillStyle(opts.background); + context.rect(0, 0, opts.width, opts.height); + context.fill(); + context.save(); + let points = opts.chartData.wordCloudData; + context.translate(opts.width / 2, opts.height / 2); + for (let i = 0; i < points.length; i++) { + context.save(); + if (points[i].rotate) { + context.rotate(90 * Math.PI / 180); + } + let text = points[i].name; + let tHeight = points[i].textSize * opts.pix; + let tWidth = measureText(text, tHeight, context); + context.beginPath(); + context.setStrokeStyle(points[i].color); + context.setFillStyle(points[i].color); + context.setFontSize(tHeight); + if (points[i].rotate) { + if (points[i].areav[0] > 0) { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.strokeText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process); + } else { + context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process); + } + } else { + context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process); + } + } + } else { + if (points[i].area[0] > 0) { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.strokeText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process); + } else { + context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process); + } + } else { + context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process); + } + } + } + context.stroke(); + context.restore(); + } + context.restore(); +} + +function drawFunnelDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let funnelOption = assign({}, { + type:'funnel', + activeWidth: 10, + activeOpacity: 0.3, + border: false, + borderWidth: 2, + borderColor: '#FFFFFF', + fillOpacity: 1, + labelAlign: 'right', + linearType: 'none', + customColor: [], + }, opts.extra.funnel); + let eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / series.length; + let centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.height - opts.area[2] + }; + let activeWidth = funnelOption.activeWidth * opts.pix; + let radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - activeWidth, (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth); + series = getFunnelDataPoints(series, radius, funnelOption.type, eachSpacing, process); + context.save(); + context.translate(centerPosition.x, centerPosition.y); + funnelOption.customColor = fillCustomColor(funnelOption.linearType, funnelOption.customColor, series, config); + if(funnelOption.type == 'pyramid'){ + for (let i = 0; i < series.length; i++) { + if (i == series.length -1) { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.beginPath(); + context.setFillStyle(hexToRgb(series[i].color, funnelOption.activeOpacity)); + context.moveTo(-activeWidth, -eachSpacing); + context.lineTo(-series[i].radius - activeWidth, 0); + context.lineTo(series[i].radius + activeWidth, 0); + context.lineTo(activeWidth, -eachSpacing); + context.lineTo(-activeWidth, -eachSpacing); + context.closePath(); + context.fill(); + } + } + series[i].funnelArea = [centerPosition.x - series[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + series[i].radius, centerPosition.y - eachSpacing * i]; + context.beginPath(); + context.setLineWidth(funnelOption.borderWidth * opts.pix); + context.setStrokeStyle(funnelOption.borderColor); + var fillColor = hexToRgb(series[i].color, funnelOption.fillOpacity); + if (funnelOption.linearType == 'custom') { + var grd = context.createLinearGradient(series[i].radius, -eachSpacing, -series[i].radius, -eachSpacing); + grd.addColorStop(0, hexToRgb(series[i].color, funnelOption.fillOpacity)); + grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[i].linearIndex], funnelOption.fillOpacity)); + grd.addColorStop(1, hexToRgb(series[i].color, funnelOption.fillOpacity)); + fillColor = grd + } + context.setFillStyle(fillColor); + context.moveTo(0, -eachSpacing); + context.lineTo(-series[i].radius, 0); + context.lineTo(series[i].radius, 0); + context.lineTo(0, -eachSpacing); + context.closePath(); + context.fill(); + if (funnelOption.border == true) { + context.stroke(); + } + } else { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.beginPath(); + context.setFillStyle(hexToRgb(series[i].color, funnelOption.activeOpacity)); + context.moveTo(0, 0); + context.lineTo(-series[i].radius - activeWidth, 0); + context.lineTo(-series[i + 1].radius - activeWidth, -eachSpacing); + context.lineTo(series[i + 1].radius + activeWidth, -eachSpacing); + context.lineTo(series[i].radius + activeWidth, 0); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + } + } + series[i].funnelArea = [centerPosition.x - series[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + series[i].radius, centerPosition.y - eachSpacing * i]; + context.beginPath(); + context.setLineWidth(funnelOption.borderWidth * opts.pix); + context.setStrokeStyle(funnelOption.borderColor); + var fillColor = hexToRgb(series[i].color, funnelOption.fillOpacity); + if (funnelOption.linearType == 'custom') { + var grd = context.createLinearGradient(series[i].radius, -eachSpacing, -series[i].radius, -eachSpacing); + grd.addColorStop(0, hexToRgb(series[i].color, funnelOption.fillOpacity)); + grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[i].linearIndex], funnelOption.fillOpacity)); + grd.addColorStop(1, hexToRgb(series[i].color, funnelOption.fillOpacity)); + fillColor = grd + } + context.setFillStyle(fillColor); + context.moveTo(0, 0); + context.lineTo(-series[i].radius, 0); + context.lineTo(-series[i + 1].radius, -eachSpacing); + context.lineTo(series[i + 1].radius, -eachSpacing); + context.lineTo(series[i].radius, 0); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + if (funnelOption.border == true) { + context.stroke(); + } + } + context.translate(0, -eachSpacing) + } + }else{ + for (let i = 0; i < series.length; i++) { + if (i == 0) { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.beginPath(); + context.setFillStyle(hexToRgb(series[i].color, funnelOption.activeOpacity)); + context.moveTo(-activeWidth, 0); + context.lineTo(-series[i].radius - activeWidth, -eachSpacing); + context.lineTo(series[i].radius + activeWidth, -eachSpacing); + context.lineTo(activeWidth, 0); + context.lineTo(-activeWidth, 0); + context.closePath(); + context.fill(); + } + } + series[i].funnelArea = [centerPosition.x - series[i].radius, centerPosition.y - eachSpacing, centerPosition.x + series[i].radius, centerPosition.y]; + context.beginPath(); + context.setLineWidth(funnelOption.borderWidth * opts.pix); + context.setStrokeStyle(funnelOption.borderColor); + var fillColor = hexToRgb(series[i].color, funnelOption.fillOpacity); + if (funnelOption.linearType == 'custom') { + var grd = context.createLinearGradient(series[i].radius, -eachSpacing, -series[i].radius, -eachSpacing); + grd.addColorStop(0, hexToRgb(series[i].color, funnelOption.fillOpacity)); + grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[i].linearIndex], funnelOption.fillOpacity)); + grd.addColorStop(1, hexToRgb(series[i].color, funnelOption.fillOpacity)); + fillColor = grd + } + context.setFillStyle(fillColor); + context.moveTo(0, 0); + context.lineTo(-series[i].radius, -eachSpacing); + context.lineTo(series[i].radius, -eachSpacing); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + if (funnelOption.border == true) { + context.stroke(); + } + } else { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.beginPath(); + context.setFillStyle(hexToRgb(series[i].color, funnelOption.activeOpacity)); + context.moveTo(0, 0); + context.lineTo(-series[i - 1].radius - activeWidth, 0); + context.lineTo(-series[i].radius - activeWidth, -eachSpacing); + context.lineTo(series[i].radius + activeWidth, -eachSpacing); + context.lineTo(series[i - 1].radius + activeWidth, 0); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + } + } + series[i].funnelArea = [centerPosition.x - series[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + series[i].radius, centerPosition.y - eachSpacing * i]; + context.beginPath(); + context.setLineWidth(funnelOption.borderWidth * opts.pix); + context.setStrokeStyle(funnelOption.borderColor); + var fillColor = hexToRgb(series[i].color, funnelOption.fillOpacity); + if (funnelOption.linearType == 'custom') { + var grd = context.createLinearGradient(series[i].radius, -eachSpacing, -series[i].radius, -eachSpacing); + grd.addColorStop(0, hexToRgb(series[i].color, funnelOption.fillOpacity)); + grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[i].linearIndex], funnelOption.fillOpacity)); + grd.addColorStop(1, hexToRgb(series[i].color, funnelOption.fillOpacity)); + fillColor = grd + } + context.setFillStyle(fillColor); + context.moveTo(0, 0); + context.lineTo(-series[i - 1].radius, 0); + context.lineTo(-series[i].radius, -eachSpacing); + context.lineTo(series[i].radius, -eachSpacing); + context.lineTo(series[i - 1].radius, 0); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + if (funnelOption.border == true) { + context.stroke(); + } + } + context.translate(0, -eachSpacing) + } + } + + context.restore(); + if (opts.dataLabel !== false && process === 1) { + drawFunnelText(series, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition); + } + return { + center: centerPosition, + radius: radius, + series: series + }; +} + +function drawFunnelText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) { + for (let i = 0; i < series.length; i++) { + let item = series[i]; + let startX, endX, startY, fontSize; + let text = item.formatter ? item.formatter(item,i,series) : util.toFixed(item._proportion_ * 100) + '%'; + if (labelAlign == 'right') { + if(opts.extra.funnel.type === 'pyramid'){ + if (i == series.length -1) { + startX = (item.funnelArea[2] + centerPosition.x) / 2; + } else { + startX = (item.funnelArea[2] + series[i + 1].funnelArea[2]) / 2; + } + }else{ + if (i == 0) { + startX = (item.funnelArea[2] + centerPosition.x) / 2; + } else { + startX = (item.funnelArea[2] + series[i - 1].funnelArea[2]) / 2; + } + } + endX = startX + activeWidth * 2; + startY = item.funnelArea[1] + eachSpacing / 2; + fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix; + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(item.color); + context.setFillStyle(item.color); + context.beginPath(); + context.moveTo(startX, startY); + context.lineTo(endX, startY); + context.stroke(); + context.closePath(); + context.beginPath(); + context.moveTo(endX, startY); + context.arc(endX, startY, 2, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + context.beginPath(); + context.setFontSize(fontSize); + context.setFillStyle(item.textColor || opts.fontColor); + context.fillText(text, endX + 5, startY + fontSize / 2 - 2); + context.closePath(); + context.stroke(); + context.closePath(); + } else { + if(opts.extra.funnel.type === 'pyramid'){ + if (i == series.length -1) { + startX = (item.funnelArea[0] + centerPosition.x) / 2; + } else { + startX = (item.funnelArea[0] + series[i + 1].funnelArea[0]) / 2; + } + }else{ + if (i == 0) { + startX = (item.funnelArea[0] + centerPosition.x) / 2; + } else { + startX = (item.funnelArea[0] + series[i - 1].funnelArea[0]) / 2; + } + } + endX = startX - activeWidth * 2; + startY = item.funnelArea[1] + eachSpacing / 2; + fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix; + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(item.color); + context.setFillStyle(item.color); + context.beginPath(); + context.moveTo(startX, startY); + context.lineTo(endX, startY); + context.stroke(); + context.closePath(); + context.beginPath(); + context.moveTo(endX, startY); + context.arc(endX, startY, 2, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + context.beginPath(); + context.setFontSize(fontSize); + context.setFillStyle(item.textColor || opts.fontColor); + context.fillText(text, endX - 5 - measureText(text, fontSize, context), startY + fontSize / 2 - 2); + context.closePath(); + context.stroke(); + context.closePath(); + } + + } +} + +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 || 'easeInOut'; + var delay = 17; + function createAnimationFrame() { + if (typeof setTimeout !== 'undefined') { + return function(step, delay) { + setTimeout(function() { + var timeStamp = +new Date(); + step(timeStamp); + }, delay); + }; + } else if (typeof requestAnimationFrame !== 'undefined') { + return requestAnimationFrame; + } 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); +} + +Animation.prototype.stop = function() { + this.isStop = true; +}; + +function drawCharts(type, opts, config, context) { + var _this = this; + var series = opts.series; + //兼容ECharts饼图类数据格式 + if (type === 'pie' || type === 'ring' || type === 'rose' || type === 'funnel') { + series = fixPieSeries(series, opts, config); + } + var categories = opts.categories; + series = fillSeries(series, opts, config); + var duration = opts.animation ? opts.duration : 0; + _this.animationInstance && _this.animationInstance.stop(); + var seriesMA = null; + if (type == 'candle') { + let average = assign({}, opts.extra.candle.average); + if (average.show) { + seriesMA = calCandleMA(average.day, average.name, average.color, series[0].data); + seriesMA = fillSeries(seriesMA, opts, config); + opts.seriesMA = seriesMA; + } else if (opts.seriesMA) { + seriesMA = opts.seriesMA = fillSeries(opts.seriesMA, opts, config); + } else { + seriesMA = series; + } + } else { + seriesMA = series; + } + /* 过滤掉show=false的series */ + opts._series_ = series = filterSeries(series); + //重新计算图表区域 + opts.area = new Array(4); + //复位绘图区域 + for (let j = 0; j < 4; j++) { + opts.area[j] = opts.padding[j] * opts.pix; + } + //通过计算三大区域:图例、X轴、Y轴的大小,确定绘图区域 + var _calLegendData = calLegendData(seriesMA, opts, config, opts.chartData, context), + legendHeight = _calLegendData.area.wholeHeight, + legendWidth = _calLegendData.area.wholeWidth; + + switch (opts.legend.position) { + case 'top': + opts.area[0] += legendHeight; + break; + case 'bottom': + opts.area[2] += legendHeight; + break; + case 'left': + opts.area[3] += legendWidth; + break; + case 'right': + opts.area[1] += legendWidth; + break; + } + + let _calYAxisData = {}, + yAxisWidth = 0; + if (opts.type === 'line' || opts.type === 'column' || opts.type === 'area' || opts.type === 'mix' || opts.type === 'candle' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') { + _calYAxisData = calYAxisData(series, opts, config, context); + yAxisWidth = _calYAxisData.yAxisWidth; + //如果显示Y轴标题 + if (opts.yAxis.showTitle) { + let maxTitleHeight = 0; + for (let i = 0; i < opts.yAxis.data.length; i++) { + maxTitleHeight = Math.max(maxTitleHeight, opts.yAxis.data[i].titleFontSize ? opts.yAxis.data[i].titleFontSize * opts.pix : config.fontSize) + } + opts.area[0] += maxTitleHeight; + } + let rightIndex = 0, + leftIndex = 0; + //计算主绘图区域左右位置 + for (let i = 0; i < yAxisWidth.length; i++) { + if (yAxisWidth[i].position == 'left') { + if (leftIndex > 0) { + opts.area[3] += yAxisWidth[i].width + opts.yAxis.padding * opts.pix; + } else { + opts.area[3] += yAxisWidth[i].width; + } + leftIndex += 1; + } else if (yAxisWidth[i].position == 'right') { + if (rightIndex > 0) { + opts.area[1] += yAxisWidth[i].width + opts.yAxis.padding * opts.pix; + } else { + opts.area[1] += yAxisWidth[i].width; + } + rightIndex += 1; + } + } + } else { + config.yAxisWidth = yAxisWidth; + } + opts.chartData.yAxisData = _calYAxisData; + + if (opts.categories && opts.categories.length && opts.type !== 'radar' && opts.type !== 'gauge' && opts.type !== 'bar') { + opts.chartData.xAxisData = getXAxisPoints(opts.categories, opts, config); + let _calCategoriesData = calCategoriesData(opts.categories, opts, config, opts.chartData.xAxisData.eachSpacing, context), + xAxisHeight = _calCategoriesData.xAxisHeight, + angle = _calCategoriesData.angle; + config.xAxisHeight = xAxisHeight; + config._xAxisTextAngle_ = angle; + opts.area[2] += xAxisHeight; + opts.chartData.categoriesData = _calCategoriesData; + } else { + if (opts.type === 'line' || opts.type === 'area' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') { + opts.chartData.xAxisData = calXAxisData(series, opts, config, context); + categories = opts.chartData.xAxisData.rangesFormat; + let _calCategoriesData = calCategoriesData(categories, opts, config, opts.chartData.xAxisData.eachSpacing, context), + xAxisHeight = _calCategoriesData.xAxisHeight, + angle = _calCategoriesData.angle; + config.xAxisHeight = xAxisHeight; + config._xAxisTextAngle_ = angle; + opts.area[2] += xAxisHeight; + opts.chartData.categoriesData = _calCategoriesData; + } else { + opts.chartData.xAxisData = { + xAxisPoints: [] + }; + } + } + //计算右对齐偏移距离 + if (opts.enableScroll && opts.xAxis.scrollAlign == 'right' && opts._scrollDistance_ === undefined) { + let offsetLeft = 0, + xAxisPoints = opts.chartData.xAxisData.xAxisPoints, + startX = opts.chartData.xAxisData.startX, + endX = opts.chartData.xAxisData.endX, + eachSpacing = opts.chartData.xAxisData.eachSpacing; + let totalWidth = eachSpacing * (xAxisPoints.length - 1); + let screenWidth = endX - startX; + offsetLeft = screenWidth - totalWidth; + _this.scrollOption = { + currentOffset: offsetLeft, + startTouchX: offsetLeft, + distance: 0, + lastMoveTime: 0 + }; + opts._scrollDistance_ = offsetLeft; + } + + if (type === 'pie' || type === 'ring' || type === 'rose') { + config._pieTextMaxLength_ = opts.dataLabel === false ? 0 : getPieTextMaxLength(seriesMA, config, context, opts); + } + switch (type) { + case 'word': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawWordCloudDataPoints(series, opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'map': + context.clearRect(0, 0, opts.width, opts.height); + drawMapDataPoints(series, opts, config, context); + break; + case 'funnel': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.funnelData = drawFunnelDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'line': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawLineDataPoints = drawLineDataPoints(series, opts, config, context, process), + xAxisPoints = _drawLineDataPoints.xAxisPoints, + calPoints = _drawLineDataPoints.calPoints, + eachSpacing = _drawLineDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'scatter': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawScatterDataPoints = drawScatterDataPoints(series, opts, config, context, process), + xAxisPoints = _drawScatterDataPoints.xAxisPoints, + calPoints = _drawScatterDataPoints.calPoints, + eachSpacing = _drawScatterDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'bubble': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawBubbleDataPoints = drawBubbleDataPoints(series, opts, config, context, process), + xAxisPoints = _drawBubbleDataPoints.xAxisPoints, + calPoints = _drawBubbleDataPoints.calPoints, + eachSpacing = _drawBubbleDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'mix': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawMixDataPoints = drawMixDataPoints(series, opts, config, context, process), + xAxisPoints = _drawMixDataPoints.xAxisPoints, + calPoints = _drawMixDataPoints.calPoints, + eachSpacing = _drawMixDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'column': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawColumnDataPoints = drawColumnDataPoints(series, opts, config, context, process), + xAxisPoints = _drawColumnDataPoints.xAxisPoints, + calPoints = _drawColumnDataPoints.calPoints, + eachSpacing = _drawColumnDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'bar': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawXAxis(categories, opts, config, context); + var _drawBarDataPoints = drawBarDataPoints(series, opts, config, context, process), + yAxisPoints = _drawBarDataPoints.yAxisPoints, + calPoints = _drawBarDataPoints.calPoints, + eachSpacing = _drawBarDataPoints.eachSpacing; + opts.chartData.yAxisPoints = yAxisPoints; + opts.chartData.xAxisPoints = opts.chartData.xAxisData.xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, yAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'area': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawAreaDataPoints = drawAreaDataPoints(series, opts, config, context, process), + xAxisPoints = _drawAreaDataPoints.xAxisPoints, + calPoints = _drawAreaDataPoints.calPoints, + eachSpacing = _drawAreaDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'ring': + case 'pie': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'rose': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.pieData = drawRoseDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'radar': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.radarData = drawRadarDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'arcbar': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.arcbarData = drawArcbarDataPoints(series, opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'gauge': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.gaugeData = drawGaugeDataPoints(categories, series, opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'candle': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawCandleDataPoints = drawCandleDataPoints(series, seriesMA, opts, config, context, process), + xAxisPoints = _drawCandleDataPoints.xAxisPoints, + calPoints = _drawCandleDataPoints.calPoints, + eachSpacing = _drawCandleDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + if (seriesMA) { + drawLegend(seriesMA, opts, config, context, opts.chartData); + } else { + drawLegend(opts.series, opts, config, context, opts.chartData); + } + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + } +} + +function uChartsEvent() { + this.events = {}; +} + +uChartsEvent.prototype.addEventListener = function(type, listener) { + this.events[type] = this.events[type] || []; + this.events[type].push(listener); +}; + +uChartsEvent.prototype.delEventListener = function(type) { + this.events[type] = []; +}; + +uChartsEvent.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.log('[uCharts] '+e); + } + }); + } +}; + +var uCharts = function uCharts(opts) { + opts.pix = opts.pixelRatio ? opts.pixelRatio : 1; + opts.fontSize = opts.fontSize ? opts.fontSize : 13; + opts.fontColor = opts.fontColor ? opts.fontColor : config.fontColor; + if (opts.background == "" || opts.background == "none") { + opts.background = "#FFFFFF" + } + opts.title = assign({}, opts.title); + opts.subtitle = assign({}, opts.subtitle); + opts.duration = opts.duration ? opts.duration : 1000; + opts.yAxis = assign({}, { + data: [], + showTitle: false, + disabled: false, + disableGrid: false, + splitNumber: 5, + gridType: 'solid', + dashLength: 4 * opts.pix, + gridColor: '#cccccc', + padding: 10, + fontColor: '#666666' + }, opts.yAxis); + opts.xAxis = assign({}, { + rotateLabel: false, + disabled: false, + disableGrid: false, + splitNumber: 5, + calibration:false, + gridType: 'solid', + dashLength: 4, + scrollAlign: 'left', + boundaryGap: 'center', + axisLine: true, + axisLineColor: '#cccccc' + }, opts.xAxis); + opts.xAxis.scrollPosition = opts.xAxis.scrollAlign; + opts.legend = assign({}, { + show: true, + position: 'bottom', + float: 'center', + backgroundColor: 'rgba(0,0,0,0)', + borderColor: 'rgba(0,0,0,0)', + borderWidth: 0, + padding: 5, + margin: 5, + itemGap: 10, + fontSize: opts.fontSize, + lineHeight: opts.fontSize, + fontColor: opts.fontColor, + formatter: {}, + hiddenColor: '#CECECE' + }, opts.legend); + opts.extra = assign({}, opts.extra); + opts.rotate = opts.rotate ? true : false; + opts.animation = opts.animation ? true : false; + opts.rotate = opts.rotate ? true : false; + opts.canvas2d = opts.canvas2d ? true : false; + + let config$$1 = JSON.parse(JSON.stringify(config)); + config$$1.color = opts.color ? opts.color : config$$1.color; + config$$1.yAxisTitleWidth = opts.yAxis.disabled !== true && opts.yAxis.title ? config$$1.yAxisTitleWidth : 0; + if (opts.type == 'pie') { + config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.pie.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix; + } + if (opts.type == 'ring') { + config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.ring.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix; + } + if (opts.type == 'rose') { + config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.rose.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix; + } + config$$1.pieChartTextPadding = opts.dataLabel === false ? 0 : config$$1.pieChartTextPadding * opts.pix; + config$$1.yAxisSplit = opts.yAxis.splitNumber ? opts.yAxis.splitNumber : config.yAxisSplit; + + //屏幕旋转 + config$$1.rotate = opts.rotate; + if (opts.rotate) { + let tempWidth = opts.width; + let tempHeight = opts.height; + opts.width = tempHeight; + opts.height = tempWidth; + } + + //适配高分屏 + opts.padding = opts.padding ? opts.padding : config$$1.padding; + config$$1.yAxisWidth = config.yAxisWidth * opts.pix; + config$$1.xAxisHeight = config.xAxisHeight * opts.pix; + if (opts.enableScroll && opts.xAxis.scrollShow) { + config$$1.xAxisHeight += 6 * opts.pix; + } + config$$1.xAxisLineHeight = config.xAxisLineHeight * opts.pix; + config$$1.fontSize = opts.fontSize * opts.pix; + config$$1.titleFontSize = config.titleFontSize * opts.pix; + config$$1.subtitleFontSize = config.subtitleFontSize * opts.pix; + config$$1.toolTipPadding = config.toolTipPadding * opts.pix; + config$$1.toolTipLineHeight = config.toolTipLineHeight * opts.pix; + config$$1.columePadding = config.columePadding * opts.pix; + //this.context = opts.context ? opts.context : uni.createCanvasContext(opts.canvasId, opts.$this); + //v2.0版本后需要自行获取context并传入opts进行初始化,这么做是为了确保uCharts可以跨更多端使用,并保证了自定义组件this实例不被循环嵌套。如果您觉得不便请取消上面注释,采用v1.0版本的方式使用,对此给您带来的不便敬请谅解! + if(!opts.context){ + throw new Error('[uCharts] 未获取到context!注意:v2.0版本后,需要自行获取canvas的绘图上下文并传入opts.context!'); + } + this.context = opts.context; + if (!this.context.setTextAlign) { + this.context.setStrokeStyle = function(e) { + return this.strokeStyle = e; + } + this.context.setLineWidth = function(e) { + return this.lineWidth = e; + } + this.context.setLineCap = function(e) { + return this.lineCap = e; + } + this.context.setFontSize = function(e) { + return this.font = e + "px sans-serif"; + } + this.context.setFillStyle = function(e) { + return this.fillStyle = e; + } + this.context.setTextAlign = function(e) { + return this.textAlign = e; + } + this.context.draw = function() {} + } + //兼容NVUEsetLineDash + if(!this.context.setLineDash){ + this.context.setLineDash = function(e) {} + } + opts.chartData = {}; + this.uevent = new uChartsEvent(); + this.scrollOption = { + currentOffset: 0, + startTouchX: 0, + distance: 0, + lastMoveTime: 0 + }; + this.opts = opts; + this.config = config$$1; + drawCharts.call(this, opts.type, opts, config$$1, this.context); +}; + +uCharts.prototype.updateData = function() { + let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + this.opts = assign({}, this.opts, data); + this.opts.updateData = true; + let scrollPosition = data.scrollPosition || 'current'; + switch (scrollPosition) { + case 'current': + //this.opts._scrollDistance_ = this.scrollOption.currentOffset; + break; + case 'left': + this.opts._scrollDistance_ = 0; + this.scrollOption = { + currentOffset: 0, + startTouchX: 0, + distance: 0, + lastMoveTime: 0 + }; + break; + case 'right': + let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context), yAxisWidth = _calYAxisData.yAxisWidth; + this.config.yAxisWidth = yAxisWidth; + let offsetLeft = 0; + let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config), xAxisPoints = _getXAxisPoints0.xAxisPoints, + startX = _getXAxisPoints0.startX, + endX = _getXAxisPoints0.endX, + eachSpacing = _getXAxisPoints0.eachSpacing; + let totalWidth = eachSpacing * (xAxisPoints.length - 1); + let screenWidth = endX - startX; + offsetLeft = screenWidth - totalWidth; + this.scrollOption = { + currentOffset: offsetLeft, + startTouchX: offsetLeft, + distance: 0, + lastMoveTime: 0 + }; + this.opts._scrollDistance_ = offsetLeft; + break; + } + drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); +}; + +uCharts.prototype.zoom = function() { + var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.opts.xAxis.itemCount; + if (this.opts.enableScroll !== true) { + // console.log('[uCharts] 请启用滚动条后使用') + return; + } + //当前屏幕中间点 + let centerPoint = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round(this.opts.xAxis.itemCount / 2); + this.opts.animation = false; + this.opts.xAxis.itemCount = val.itemCount; + //重新计算x轴偏移距离 + let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context), + yAxisWidth = _calYAxisData.yAxisWidth; + this.config.yAxisWidth = yAxisWidth; + let offsetLeft = 0; + let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config), + xAxisPoints = _getXAxisPoints0.xAxisPoints, + startX = _getXAxisPoints0.startX, + endX = _getXAxisPoints0.endX, + eachSpacing = _getXAxisPoints0.eachSpacing; + let centerLeft = eachSpacing * centerPoint; + let screenWidth = endX - startX; + let MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1); + offsetLeft = screenWidth / 2 - centerLeft; + if (offsetLeft > 0) { + offsetLeft = 0; + } + if (offsetLeft < MaxLeft) { + offsetLeft = MaxLeft; + } + this.scrollOption = { + currentOffset: offsetLeft, + startTouchX: offsetLeft, + distance: 0, + lastMoveTime: 0 + }; + this.opts._scrollDistance_ = offsetLeft; + drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); +}; + +uCharts.prototype.stopAnimation = function() { + this.animationInstance && this.animationInstance.stop(); +}; + +uCharts.prototype.addEventListener = function(type, listener) { + this.uevent.addEventListener(type, listener); +}; + +uCharts.prototype.delEventListener = function(type) { + this.uevent.delEventListener(type); +}; + +uCharts.prototype.getCurrentDataIndex = function(e) { + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches) { + let _touches$ = getTouches(touches, this.opts, e); + if (this.opts.type === 'pie' || this.opts.type === 'ring') { + return findPieChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.pieData, this.opts); + } else if (this.opts.type === 'rose') { + return findRoseChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.pieData, this.opts); + } else if (this.opts.type === 'radar') { + return findRadarChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.radarData, this.opts.categories.length); + } else if (this.opts.type === 'funnel') { + return findFunnelChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.funnelData); + } else if (this.opts.type === 'map') { + return findMapChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts); + } else if (this.opts.type === 'word') { + return findWordChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.wordCloudData); + } else if (this.opts.type === 'bar') { + return findBarChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset)); + } else { + return findCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset)); + } + } + return -1; +}; + +uCharts.prototype.getLegendDataIndex = function(e) { + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches) { + let _touches$ = getTouches(touches, this.opts, e); + return findLegendIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.legendData); + } + return -1; +}; + +uCharts.prototype.touchLegend = function(e) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches) { + var _touches$ = getTouches(touches, this.opts, e); + var index = this.getLegendDataIndex(e); + if (index >= 0) { + if (this.opts.type == 'candle') { + this.opts.seriesMA[index].show = !this.opts.seriesMA[index].show; + } else { + this.opts.series[index].show = !this.opts.series[index].show; + } + this.opts.animation = option.animation ? true : false; + this.opts._scrollDistance_ = this.scrollOption.currentOffset; + drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); + } + } + +}; + +uCharts.prototype.showToolTip = function(e) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (!touches) { + // console.log("[uCharts] 未获取到event坐标信息"); + } + var _touches$ = getTouches(touches, this.opts, e); + var currentOffset = this.scrollOption.currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset, + animation: false + }); + if (this.opts.type === 'line' || this.opts.type === 'area' || this.opts.type === 'column' || this.opts.type === 'scatter' || this.opts.type === 'bubble') { + var current = this.getCurrentDataIndex(e); + var index = option.index == undefined ? current.index : option.index; + if (index > -1 || index.length>0) { + var seriesData = getSeriesDataItem(this.opts.series, index, current.group); + if (seriesData.length !== 0) { + var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option), + textList = _getToolTipData.textList, + offset = _getToolTipData.offset; + offset.y = _touches$.y; + opts.tooltip = { + textList: option.textList !== undefined ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'bar') { + var current = this.getCurrentDataIndex(e); + var index = option.index == undefined ? current.index : option.index; + if (index > -1 || index.length>0) { + var seriesData = getSeriesDataItem(this.opts.series, index, current.group); + if (seriesData.length !== 0) { + var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option), + textList = _getToolTipData.textList, + offset = _getToolTipData.offset; + offset.x = _touches$.x; + opts.tooltip = { + textList: option.textList !== undefined ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'mix') { + var current = this.getCurrentDataIndex(e); + var index = option.index == undefined ? current.index : option.index; + if (index > -1) { + var currentOffset = this.scrollOption.currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset, + animation: false + }); + var seriesData = getSeriesDataItem(this.opts.series, index); + if (seriesData.length !== 0) { + var _getMixToolTipData = getMixToolTipData(seriesData, this.opts, index, this.opts.categories, option), + textList = _getMixToolTipData.textList, + offset = _getMixToolTipData.offset; + offset.y = _touches$.y; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'candle') { + var current = this.getCurrentDataIndex(e); + var index = option.index == undefined ? current.index : option.index; + if (index > -1) { + var currentOffset = this.scrollOption.currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset, + animation: false + }); + var seriesData = getSeriesDataItem(this.opts.series, index); + if (seriesData.length !== 0) { + var _getToolTipData = getCandleToolTipData(this.opts.series[0].data, seriesData, this.opts, index, this.opts.categories, this.opts.extra.candle, option), + textList = _getToolTipData.textList, + offset = _getToolTipData.offset; + offset.y = _touches$.y; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose' || this.opts.type === 'funnel') { + var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index; + if (index > -1) { + var opts = assign({}, this.opts, {animation: false}); + var seriesData = assign({}, opts._series_[index]); + var textList = [{ + text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data, + color: seriesData.color + }]; + var offset = { + x: _touches$.x, + y: _touches$.y + }; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'map') { + var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index; + if (index > -1) { + var opts = assign({}, this.opts, {animation: false}); + var seriesData = assign({}, this.opts.series[index]); + seriesData.name = seriesData.properties.name + var textList = [{ + text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name, + color: seriesData.color + }]; + var offset = { + x: _touches$.x, + y: _touches$.y + }; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + opts.updateData = false; + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'word') { + var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index; + if (index > -1) { + var opts = assign({}, this.opts, {animation: false}); + var seriesData = assign({}, this.opts.series[index]); + var textList = [{ + text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name, + color: seriesData.color + }]; + var offset = { + x: _touches$.x, + y: _touches$.y + }; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + opts.updateData = false; + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'radar') { + var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index; + if (index > -1) { + var opts = assign({}, this.opts, {animation: false}); + var seriesData = getSeriesDataItem(this.opts.series, index); + if (seriesData.length !== 0) { + var textList = seriesData.map((item) => { + return { + text: option.formatter ? option.formatter(item, this.opts.categories[index], index, this.opts) : item.name + ': ' + item.data, + color: item.color + }; + }); + var offset = { + x: _touches$.x, + y: _touches$.y + }; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } +}; + +uCharts.prototype.translate = function(distance) { + this.scrollOption = { + currentOffset: distance, + startTouchX: distance, + distance: 0, + lastMoveTime: 0 + }; + let opts = assign({}, this.opts, { + _scrollDistance_: distance, + animation: false + }); + drawCharts.call(this, this.opts.type, opts, this.config, this.context); +}; + +uCharts.prototype.scrollStart = function(e) { + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + var _touches$ = getTouches(touches, this.opts, e); + if (touches && this.opts.enableScroll === true) { + this.scrollOption.startTouchX = _touches$.x; + } +}; + +uCharts.prototype.scroll = function(e) { + if (this.scrollOption.lastMoveTime === 0) { + this.scrollOption.lastMoveTime = Date.now(); + } + let Limit = this.opts.touchMoveLimit || 60; + let currMoveTime = Date.now(); + let duration = currMoveTime - this.scrollOption.lastMoveTime; + if (duration < Math.floor(1000 / Limit)) return; + this.scrollOption.lastMoveTime = currMoveTime; + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches && this.opts.enableScroll === true) { + var _touches$ = getTouches(touches, this.opts, e); + var _distance; + _distance = _touches$.x - this.scrollOption.startTouchX; + var currentOffset = this.scrollOption.currentOffset; + var validDistance = calValidDistance(this, currentOffset + _distance, this.opts.chartData, this.config, this.opts); + this.scrollOption.distance = _distance = validDistance - currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset + _distance, + animation: false + }); + this.opts = opts; + drawCharts.call(this, opts.type, opts, this.config, this.context); + return currentOffset + _distance; + } +}; + +uCharts.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; + } +}; + +if (typeof module === "object" && typeof module.exports === "object") { + module.exports = uCharts; + //export default uCharts;//建议使用nodejs的module导出方式,如报错请使用export方式导出 +} diff --git a/uni_modules/qiun-data-charts/license.md b/uni_modules/qiun-data-charts/license.md new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/uni_modules/qiun-data-charts/license.md @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. diff --git a/uni_modules/qiun-data-charts/package.json b/uni_modules/qiun-data-charts/package.json new file mode 100644 index 0000000..8e913f8 --- /dev/null +++ b/uni_modules/qiun-data-charts/package.json @@ -0,0 +1,80 @@ +{ + "id": "qiun-data-charts", + "displayName": "秋云 ucharts echarts 高性能跨全端图表组件", + "version": "2.3.3-20210706", + "description": "uCharts v2.3上线,支持nvue!全新官方图表组件,支持H5及APP用ECharts渲染图表,uniapp可视化首选组件", + "keywords": [ + "ucharts", + "echarts", + "f2", + "图表", + "可视化" +], + "repository": "https://gitee.com/uCharts/uCharts", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "474119" + }, + "declaration": { + "ads": "无", + "data": "插件不采集任何数据", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/qiun-data-charts/readme.md b/uni_modules/qiun-data-charts/readme.md new file mode 100644 index 0000000..faf360b --- /dev/null +++ b/uni_modules/qiun-data-charts/readme.md @@ -0,0 +1,451 @@ +## [uCharts官方网站](https://www.ucharts.cn) +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [优秀的nvue全端组件与模版库nPro](https://ext.dcloud.net.cn/plugin?id=5169) +## [图表组件在项目中的应用 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +### [v1.0文档(将在9月30日作废,请尽快转v2.0)](http://doc.ucharts.cn) +## [如何安装、更新 uni_modules 插件点这里,必看,必看,必看](https://uniapp.dcloud.io/uni_modules?id=%e4%bd%bf%e7%94%a8-uni_modules-%e6%8f%92%e4%bb%b6) +## 点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用不显示问题详见[常见问题选项卡](https://demo.ucharts.cn) +## 新手请先完整阅读【帮助文档】及【常见问题】3遍,右侧蓝色按钮【示例项目】请看2遍! +## 关于NVUE兼容的说明: uCharts.js从2.3.0开始支持nuve(暂时只能通过原生canvas写法调用uCharts,nuve版本组件请见码云示例项目[uCharts-demo-nvue](https://gitee.com/uCharts/uCharts)),因其渲染方式是通过nvue的gcanvas组件来渲染,理论上性能不及renderjs的qiun-data-charts组件性能。官方仍然建议NVUE使用图表的页面改为vue页面,在App端,从性能来讲,由于通讯阻塞的问题,nvue的canvas性能不可能达到使用renderjs的vue页面的canvas。在App端,仍然推荐使用qiun-data-charts组件。[详见uni-app官方说明](https://uniapp.dcloud.io/component/canvas?id=canvas) + +[![uCharts/uCharts](https://gitee.com/uCharts/uCharts/widgets/widget_card.svg?colors=393222,ebdfc1,fffae5,d8ca9f,393222,a28b40)](https://gitee.com/uCharts/uCharts) + +## 秋云图表组件使用帮助 + +全新图表组件,全端全平台支持,开箱即用,可选择uCharts引擎全端渲染,也可指定PC端或APP端`单独使用ECharts`引擎渲染图表。支持极简单的调用方式,只需指定图表类型及传入符合标准的图表数据即可,使开发者只需专注业务及数据。同时也支持datacom组件读取uniClinetDB,无需关心如何拼接数据等不必要的重复工作,大大缩短开发时间。 + +## 为何使用官方封装的组件? + +封装组件并不难,谁都会,但组件调试却是一件令人掉头发的事,尤其是canvas封装成组件会带来一系列问题:例如封装后不显示,图表多次初始化导致抖动问题,单页面多个图表点击事件错乱,组件放在scroll-view中无法点击,在图表上滑动时页面无法滚动等等一系列问题。为解决开发者使用可视化组件的困扰,uCharts官方特推出可视化通用组件,本组件具备以下特点: + +- 极简单的调用方式,默认配置下只需要传入`图表类型`及`图表数据`即可全端显示。 +- 提供强大的`在线配置生成工具`,可视化中的可视化,鼠标点一点就可以生成图表,可视化从此不再难配。 +- 兼容ECharts,可选择`PC端或APP端单独使用ECharts`引擎渲染图表。 +- H5及App采用`renderjs`渲染图表,动画流畅、性能翻倍。 +- 根据父容器尺寸`弹性显示图表`,再也不必为宽高匹配及多端适配问题发愁。 +- 支持`加载状态loading及error展示`,避免数据读取显示空白的尴尬。 +- chartData`配置与数据解耦`,即便使用ECharts引擎也不必担心拼接option的困扰。 +- localdata`后端数据直接渲染`,无需自行拼接chartData的categories及series,从后端拿回的数据简单处理即可生成图表。 +- 小程序端不必担心包体积过大问题,ECharts引擎将不会编译到各小程序端,u-charts.js编译后`仅为93kb`。 +- 未来将支持通过HbuilderX的[schema2code自动生成全端全平台图表](https://ext.dcloud.net.cn/plugin?id=4684),敬请期待!!! +- uCharts官方拥有3个2000人的QQ群支持,庞大的用户量证明我们一直在努力,本组件将持续更新,请各位放心使用,本组件问题请在`QQ3群`反馈,您的宝贵建议是我们努力的动力!! + + +## 致开发者 + +感谢各位开发者`两年`来对秋云及uCharts的支持,uCharts的进步离不开各位开发者的鼓励与贡献,为更好的帮助各位开发者在uni-app生态系统更好的应用图表,uCharts始终坚持开源,并提供社群帮助开发者解决问题。 为确保您能更好的应用图表组件,建议您先`仔细阅读本页文档`以及uCharts官方文档,而不是下载下来`直接使用`。 如遇到问题请先阅读文档,如仍然不能解决,请加入QQ群咨询,如群友均不能解决或者您有特殊需求,请在群内私聊我,因工作原因,回复不一定很及时,您可直接说问题,有时间一定会回复您。 + +uCharts的开源图表组件的开发,付出了大量的个人时间与精力,经过两年来的考验,不会有比较明显的bug,请各位放心使用。不求您5星评价,也不求您赞赏,`只求您对开源贡献的支持态度`,所以,当您想给`1星评价`的时候,秋云真的会`含泪希望您绕路而行……`。如果您有更好的想法,可以在`码云提交Pull Requests`以帮助更多开发者完成需求,再次感谢各位对uCharts的鼓励与支持! + +## 快速体验 + +一套代码编到7个平台,依次扫描二维码,亲自体验uCharts图表跨平台效果!IOS因demo比较简单无法上架,请自行编译。 +![](https://box.kancloud.cn/58092090f2bccc6871ca54dbec268811_654x479.png) + +## 快速上手 +### 注意前提条件【版本要求:HBuilderX 3.1.0+】 +- 1、插件市场点击右侧绿色按钮【使用HBuilderX导入插件】,或者【使用HBuilderX导入示例项目】查看完整示例工程 +- 2、依赖uniapp的vue-cli项目:请将uni-modules目录复制到src目录,即src/uni_modules。(请升级uniapp依赖为最新版本) +- 3、页面中直接按下面用法直接调用即可,无需在页面中注册组件qiun-data-charts +- 4、注意父元素class='charts-box'这个样式需要有宽高 + +## 基本用法 + +- template代码:([建议使用在线工具生成](https://demo.ucharts.cn)) + +``` + + + +``` + +- 标准数据格式1:(折线图、柱状图、区域图等需要categories的直角坐标系图表类型) + +``` +chartData:{ + categories: ["2016", "2017", "2018", "2019", "2020", "2021"], + series: [{ + name: "目标值", + data: [35, 36, 31, 33, 13, 34] + }, { + name: "完成量", + data: [18, 27, 21, 24, 6, 28] + }] +} +``` + +- 标准数据格式2:(饼图、圆环图、漏斗图等不需要categories的图表类型) + +``` +chartData:{ + series: [{ + data: [ + { + name: "一班", + value: 50 + }, { + name: "二班", + value: 30 + }, { + name: "三班", + value: 20 + }, { + name: "四班", + value: 18 + }, { + name: "五班", + value: 8 + } + ] + }] +} +``` + +注:其他特殊图表类型,请参考mockdata文件夹下的数据格式,v2.0版本的uCharts已兼容ECharts的数据格式,v2.0版本仍然支持v1.0版本的数据格式。 + +## localdata数据渲染用法 + +- 使用localdata数据格式渲染图表的优势:数据结构简单,无需自行拼接chartData的categories及series,从后端拿回的数据简单处理即可生成图表。 +- localdata数据的缺点:并不是所有的图表类型均可通过localdata渲染图表,例如混合图,组件并不能识别哪个series分组需要渲染成折线还是柱状图,涉及到复杂的图表,仍需要由chartData传入。 + +- template代码:([建议使用在线工具生成](https://demo.ucharts.cn)) + +``` + + + +``` + + +- 标准数据格式1:(折线图、柱状图、区域图等需要categories的直角坐标系图表类型) + +其中value代表数据的数值,text代表X轴的categories数据点,group代表series分组的类型名称即series[i].name。 + +``` +localdata:[ + {value:35, text:"2016", group:"目标值"}, + {value:18, text:"2016", group:"完成量"}, + {value:36, text:"2017", group:"目标值"}, + {value:27, text:"2017", group:"完成量"}, + {value:31, text:"2018", group:"目标值"}, + {value:21, text:"2018", group:"完成量"}, + {value:33, text:"2019", group:"目标值"}, + {value:24, text:"2019", group:"完成量"}, + {value:13, text:"2020", group:"目标值"}, + {value:6, text:"2020", group:"完成量"}, + {value:34, text:"2021", group:"目标值"}, + {value:28, text:"2021", group:"完成量"} +] +``` + +- 标准数据格式2:(饼图、圆环图、漏斗图等不需要categories的图表类型) + +其中value代表数据的数值,text代表value数值对应的描述。 + +``` +localdata:[ + {value:50, text:"一班"}, + {value:30, text:"二班"}, + {value:20, text:"三班"}, + {value:18, text:"四班"}, + {value:8, text:"五班"}, +] +``` + +- 注意,localdata的数据格式必需要符合datacom组件规范[【详见datacom组件】](https://uniapp.dcloud.io/component/datacom?id=mixindatacom)。 + +## 进阶用法读取uniCloud数据库并渲染图表 + +- 组件基于uniCloud的[clientDB](https://uniapp.dcloud.net.cn/uniCloud/clientdb)技术,无需云函数,在前端对数据库通过where查询条件及group和count统计即可渲染图表。 +- 具体可参考/pages/unicloud/unicloud.vue中的demo例子,使用前,请先关联云服务空间,然后在uniCloud/database/db_init.json文件上点右键,初始化云数据库,当控制台显示“初始化云数据库完成”即完成示例数据的导入,之后方可运行uniCloud的demo。 + +- template代码: + +``` + +``` + +- 注意,从uniCloud读取出的数据,需要符合localdata的标准结果数据格式(参考上部分localdata),并需要把输出的字段as成规定的别名(value、text、group)。 + + +## 示例文件地址: + +### 强烈建议先看本页帮助,再看下面示例文件源码! + +``` +/pages/ucharts/ucharts.vue(展示用uCharts全端运行的例子) + +/pages/echarts/echarts.vue(展示H5和App用ECharts,小程序端用uCharts的例子) + +/pages/unicloud/unicloud.vue(展示读取uniCloud数据库后直接渲染图表的例子) + +/pages/updata/updata.vue(展示动态更新图表数据的例子) + +/pages/other/other.vue(展示图表交互的例子:动态更新图表数据,渲染完成事件,获取点击索引,自定义tooltip,图表保存为图片,强制展示错误信息等) + +/pages/format-u/format-u.vue(展示uCharts的formatter用法的例子) + +/pages/format-e/format-e.vue(展示ECharts的formatter用法的例子) + +/pages/tab/tab.vue(展示再tab选项卡中用法的例子,即父容器采用v-show或v-if时需要注意的问题) + +/pages/layout/layout.vue(展示特殊布局用法的例子:swiper、scroll-view、绝对定位等布局) + +/pages/canvas/canvas.vue(展示uCharts v2.0版本原生js用法的例子) + +``` + + +## 组件基本API参数 + +|属性名|类型|默认值|必填|说明| +| -- | -- | -- | -- | -- | +|type|String|null|`是`|图表类型,如全端用uCharts,可选值为pie、ring、rose、word、funnel、map、arcbar、line、column、bar、area、radar、gauge、candle、mix、tline、tarea、scatter、bubble (您也可以根据需求自定义新图表类型,需要在config-ucharts.js或config-echarts.js内添加,可参考config-ucharts.js内的"demotype"类型)| +|chartData|Object|见说明|`是`|图表数据,常用的标准数据格式为{categories: [],series: []},请按不同图表类型传入对应的标准数据。| +|localdata|Array|[]|`是`|图表数据,如果您觉得拼接上面chartData比较繁琐,可以通过使用localdata渲染,组件会根据传入的type类型,自动拼接categories或series数据(使用localdata就不必再传入chartData,详见 /pages/other/other.vue 中使用localdata渲染图表的例子)。【localdata和collection(uniCloud数据库)同时存在,优先使用localdata;如果localdata和chartData同时存在,优先使用chartData。 即chartData>localdata>collection的优先级渲染图表】。| +|opts|Object|{}|否|uCharts图表配置参数(option),请参考[【在线生成工具】](https://demo.ucharts.cn)注:传入的opts会覆盖默认config-ucharts.js中的配置,只需传入与config-ucharts.js中属性不一致的opts即可实现【同类型的图表显示不同的样式】。| +|eopts|Object|{}|否|ECharts图表配置参数(option),请参考[【ECharts配置手册】](https://echarts.apache.org/zh/option.html)传入eopts。注:1、传入的eopts会覆盖默认config-echarts.js中的配置,以实现同类型的图表显示不同的样式。2、eopts不能传递function,如果option配置参数需要function,请将option写在config-echarts.js中即可实现。| +|loadingType|Number|2|否|加载动画样式,0为不显示加载动画,1-5为不同的样式,见下面示例。| +|errorShow|Boolean|true|否|是否在页面上显示错误提示,true为显示错误提示图片,false时会显示空白区域| +|errorReload|Boolean|true|否|是否启用点击错误提示图表重新加载,true为允许点击重新加载,false为禁用点击重新加载事件| +|errorMessage|String|null|否|自定义错误信息,强制显示错误图片及错误信息,当上面errorShow为true时可用。(组件会监听该属性的变化,只要有变化,就会强制显示错误信息!)。说明:1、一般用于页面网络不好或其他情况导致图表loading动画一直显示,可以传任意(不为null或者"null"或者空"")字符串强制显示错误图片及说明。2、如果组件使用了data-come属性读取uniCloud数据,组件会自动判断错误状态并展示错误图标,不必使用此功能。3、当状态从非null改变为null或者空时,会强制调用reload重新加载并渲染图表数据。| +|echartsH5|Boolean|false|否|是否在H5端使用ECharts引擎渲染图表| +|directory|String|'/'|否|二级目录名称,如果开启上面echartsH5即H5端用ECharts引擎渲染图表,并且项目未发布在website根目录,需要填写此项配置。例如二级目录是h5,则需要填写`/h5/`,左右两侧需要带`/`,发布到三级或更多层目录示例`/web/v2/h5/`| +|echartsApp|Boolean|false|否|是否在APP端使用ECharts引擎渲染图表| +|canvasId|String|见说明|否|默认生成32位随机字符串。如果指定canvasId,可方便后面调用指定图表实例,否则需要通过渲染完成事件获取自动生成随机的canvasId| +|canvas2d|Boolean|false|否|是否开启canvas2d模式,用于解决微信小程序层级过高问题,仅微信小程序端可用,其他端会强制关闭canvas2d模式。注:开启canvas2d模式,必须要传入上面的canvasId(随机字符串,不能是动态绑定的值,不能是数字),否则微信小程序可能会获取不到dom导致无法渲染图表!**开启后,开发者工具显示不正常,预览正常(不能“真机调试”,不能“真机调试”,不能“真机调试”)**| +|background|String|none|否|背景颜色,默认透明none,可选css的16进制color值,如#FFFFFF| +|animation|Boolean|true|否|是否开启图表动画效果| +|inScrollView|Boolean|false|否|图表组件是否在scroll-view中,如果在请传true,否则会出现点击事件坐标不准确的现象| +|pageScrollTop|Number|0|否|如果图表组件是在scroll-view中,并且整个页面还存在滚动条,这个值应为绑定为页面滚动条滚动的距离,否则会出现点击事件坐标不准确的现象| +|reshow|Boolean|false|否|强制重新渲染属性,如果图表组件父级用v-show包裹,初始化的时候会获取不到元素的宽高值,导致渲染失败,此时需要把父元素的v-show方法复制到reshow中,组件检测到reshow值变化并且为true的时候会强制重新渲染| +|reload|Boolean|false|否|强制重新加载属性,与上面的reshow区别在于:1、reload会重新显示loading动画;2、如果组件绑定了uniCloud数据查询,通过reload会重新执行SQL语句查询,重新请求网络。而reshow则不会显示loading动画,只是应用现有的chartData数据进行重新渲染| +|disableScroll|Boolean|false|否|当在canvas中移动时,且有绑定手势事件时,禁止屏幕滚动以及下拉刷新(赋值为true时,在图表区域内无法拖动页面滚动)| +|tooltipShow|Boolean|true|否|点击或者鼠标经过图表时,是否显示tooltip提示窗,默认显示| +|tooltipFormat|String|undefined|否|自定义格式化Tooltip显示内容,详见下面【tooltipFormat格式化】| +|tooltipCustom|Object|undefined|否|(仅uCharts)如果以上系统自带的Tooltip格式化方案仍然不满足您,您可以用此属性实现更多需求,详见下面【tooltipCustom自定义】| +|startDate|String|undefined|否|需为标准时间格式,例如"2021-02-14"。用于配合uniClinetDB自动生成categories使用| +|endDate|String|undefined|否|需为标准时间格式,例如"2021-03-31"。用于配合uniClinetDB自动生成categories使用| +|groupEnum|Array|[]|否|当使用到uniCloud数据库时,group字段属性如果遇到统计枚举属性的字段,需要通过将DB Schema中的enum的描述定义指派给该属性,具体格式为[{value: 1,text: "男"},{value: 2,text: "女"}]| +|textEnum|Array|[]|否|当使用到uniCloud数据库时,text字段属性如果遇到统计枚举属性的字段,需要通过将DB Schema中的enum的描述定义指派给该属性,具体格式为[{value: 1,text: "男"},{value: 2,text: "女"}]| +|ontap|Boolean|true|否|是否监听@tap@cilck事件,禁用后不会触发组件点击事件| +|ontouch|Boolean|false|否|(仅uCharts)是否监听@touchstart@touchmove@touchend事件(赋值为true时,非PC端在图表区域内无法拖动页面滚动)| +|onmouse|Boolean|true|否|是否监听@mousedown@mousemove@mouseup事件,禁用后鼠标经过图表上方不会显示tooltip| +|on movetip|Boolean|false|否|(仅uCharts)是否开启跟手显示tooltip功能(前提条件,1、需要开启touch功能,即:ontouch="true";2、并且opts.enableScroll=false即关闭图表的滚动条功能)(建议微信小程序开启canvas2d功能,否则原生canvas组件会很卡)| +|tapLegend|Boolean|true|否|(仅uCharts)是否开启图例点击交互事件 | + +## 组件事件及方法 + +|事件名|说明| +| --| --| +|@complete|图表渲染完成事件,渲染完成会返回图表实例{complete: true, id:"xxxxx"(canvasId), type:"complete"}。可以引入config-ucharts.js/config-echarts.js来根据返回的id,调用uCharts或者ECharts实例的相关方法,详见other.vue其他图表高级应用。| +|@getIndex|获取点击数据索引,点击后返回图表索引currentIndex,图例索引(仅uCharts)legendIndex,等信息。返回数据:{type: "getIndex", currentIndex: 3, legendIndex: -1, id:"xxxxx"(canvasId), event: {x: 100, y: 100}(点击坐标值)}| +|@error|当组件发生错误时会触发该事件。返回数据:返回数据:{type:"error",errorShow:true/false(组件props中的errorShow状态值) , msg:"错误消息xxxx", id: "xxxxx"(canvasId)}| +|@getTouchStart|(仅uCharts)拖动开始监听事件。返回数据:{type:"touchStart",event:{x: 100, y: 100}(点击坐标值),id:"xxxxx"(canvasId)}| +|@getTouchMove|(仅uCharts)拖动中监听事件。返回数据:{type:"touchMove",event:{x: 100, y: 100}(点击坐标值),id:"xxxxx"(canvasId)}| +|@getTouchEnd|(仅uCharts)拖动结束监听事件。返回数据:{type:"touchEnd",event:{x: 100, y: 100}(点击坐标值),id:"xxxxx"(canvasId)}| +|@scrollLeft|(仅uCharts)开启滚动条后,滚动条到最左侧触发的事件,用于动态打点,需要自行编写防抖方法。返回数据:{type:"scrollLeft", scrollLeft: true, id: "xxxxx"(canvasId)}| +|@scrollRight|(仅uCharts)开启滚动条后,滚动条到最右侧触发的事件,用于动态打点,需要自行编写防抖方法。返回数据:返回数据:{type:"scrollRight", scrollRight: true, id: "xxxxx"(canvasId)}| + +## tooltipFormat格式化(uCharts和ECharts) + +tooltipFormat类型为string字符串类型,需要指定config-ucharts.js/config-echarts.js中formatter下的属性值。因各小程序及app端通过组件均不能传递function类型参数,因此请先在config-ucharts.js/config-echarts.js内定义您想格式化的数据,然后在这里传入formatter下的key值,组件会自动匹配与其对应的function。如不定义该属性,组件会调用默认的tooltip方案,标准的tooltipFormat使用姿势如下: + +``` + +================== +config-ucharts.js +formatter:{ + tooltipDemo1:function(item, category, index, opts){return item.data+'天'} +} +================== +config-echarts.js +formatter:{ + tooltipDemo1:function(){ + + } +} +``` + +注意,config-ucharts.js内的formatter下的function需要携带(item, category, index, opts)参数,这4个参数都是uCharts实例内传递过来的数据,具体定义如下: + +|属性名|说明| +| -- | -- | +|item|组件内计算好的当前点位的series[index]数据,其属性有data(继承series[index].format属性),color,type,style,pointShape,disableLegend,name,show| +|category|当前点位的X轴categories[index]分类名称(如果图表类型没有category,其值则为undefined)| +|index|当前点位的索引值| +|opts|全部uCharts的opts配置,包含categories、series等一切你需要的都在里面,可以根据index索引值获取其他相关数据。您可以在渲染完成后打印一下opts,看看里面都有什么,也可以自定义一些你需要的挂载到opts上,这样就可以根据需求更方便的显示自定义内容了。| + +## tooltipCustom自定义(仅uCharts) + +上面仅仅展示了Tooltip的自定义格式化,如果仍然仍然还不能还不能满足您的需求,只能看这里的方法了。tooltipCustom可以自定义在任何位置显示任何内容的文本,当然tooltipCustom可以和tooltipFormat格式化同时使用以达到更多不同的需求,下面展示了tooltip固定位置显示的方法: + +``` + +``` + +tooltipCustom属性如下: + +|属性名|类型|默认值|说明| +| -- | -- | -- | -- | +|x|Number|undefined|tooltip左上角相对于画布的X坐标| +|y|Number|undefined|tooltip左上角相对于画布的Y坐标| +|index|Number|undefined|相对于series或者categories中的索引值。当没有定义index或者index定义为undefined的时候,组件会自动获取当前点击的索引,并根据上面的xy位置绘制tooltip提示框。如果为0及以上的数字时,会根据您传的索引自动计算x轴方向的偏移量(仅直角坐标系有效)| +|textList|Array.Object|undefined|多对象数组,tooltip的文字组。当没有定义textList或者textList定义为undefined的时候,会调自动获取点击索引并拼接相应的textList。如传递[{text:'默认显示的tooltip',color:null},{text:'类别1:某个值xxx',color:'#2fc25b'},{text:'类别2:某个值xxx',color:'#facc14'},{text:'类别3:某个值xxx',color:'#f04864'}]这样定义好的数组,则会只显示该数组。| +|textList[i].text|String| |显示的文字| +|textList[i].color|Color| |左侧图表颜色| + +## datacome属性及说明 + +- 通过配置datacome属性,可直接获取uniCloud云数据,并快速自动生成图表,使开发者只需专注业务及数据,无需关心如何拼接数据等不必要的重复工作,大大缩短开发时间。datacome属性及说明,详见[datacom组件规范](https://uniapp.dcloud.io/component/datacom?id=mixindatacom) + +|属性名|类型|默认值|说明| +| -- | -- | -- | -- | +|collection|String| |表名。支持输入多个表名,用 , 分割| +|field|String| |查询字段,多个字段用 , 分割| +|where|String| |查询条件,内容较多,另见jql文档:[详情](https://uniapp.dcloud.net.cn/uniCloud/uni-clientDB?id=jsquery)| +|orderby|String| |排序字段及正序倒叙设置| +|groupby|String| |对数据进行分组| +|group-field|String| |对数据进行分组统计| +|distinct|Boolean|false|是否对数据查询结果中重复的记录进行去重| +|action|string| |云端执行数据库查询的前或后,触发某个action函数操作,进行预处理或后处理,详情。场景:前端无权操作的数据,比如阅读数+1| +|page-data|string|add|分页策略选择。值为 add 代表下一页的数据追加到之前的数据中,常用于滚动到底加载下一页;值为 replace 时则替换当前data数据,常用于PC式交互,列表底部有页码分页按钮| +|page-current|Number|0|当前页| +|page-size|Number|0|每页数据数量| +|getcount|Boolean|false|是否查询总数据条数,默认 false,需要分页模式时指定为 true| +|getone|Boolean|false|指定查询结果是否仅返回数组第一条数据,默认 false。在false情况下返回的是数组,即便只有一条结果,也需要[0]的方式获取。在值为 true 时,直接返回结果数据,少一层数组。一般用于非列表页,比如详情页| +|gettree|Boolean|false|是否查询树状数据,默认 false| +|startwith|String|''|gettree的第一层级条件,此初始条件可以省略,不传startWith时默认从最顶级开始查询| +|limitlevel|Number|10|gettree查询返回的树的最大层级。超过设定层级的节点不会返回。默认10级,最大15,最小1| + +## uni_modules目录说明 + +``` +├── components +│ └── qiun-data-chatrs──────────# 组件主入口模块 +│ └── qiun-error────────────────# 加载动画组件文件目录(可以修改错误提示图标以减少包体积) +│ └── qiun-loading──────────────# 加载动画组件文件目录(可以删除您不需要的动画效果以减少包体积) +├── js_skd +│ └── u-charts +│ ── └──config-echarts.js ──────# ECharts默认配置文件(非APP端内可作为实例公用中转) +│ ── └──config-ucharts.js ──────# uCharts默认配置文件(非APP端内可作为实例公用中转) +│ ── └──u-charts-v2.0.0.js──────# uCharts基础库v2.0.0版本,部分API与之前版本不同 +├── static +│ └── app-plus──────────────────# 条件编译目录,仅编译到APP端 +│ ── └──echarts.min.js──────────# Echarts基础库v4.2.1 +│ └── h5────────────────────────# 条件编译目录,仅编译到H5端 +│ ── └──echarts.min.js──────────# Echarts基础库v4.2.1 +``` + + +## 加载动画及错误提示 +- 为保证编译后的包体积,加载动画引用作者wkiwi提供的[w-loading](https://ext.dcloud.net.cn/plugin?id=504)中选取5种,如需其他样式请看下面说明。 +- loading的展示逻辑: + * 1、如果是uniCloud数据,从发送网络请求到返回数据期间展示。 + * 2、如果是自行传入的chartData,当chartData.series=[]空数组的时候展示loading,也就是说初始化图表的时候,如果您没有数据,可以通过先传个空数组来展示loading效果,当chartData.series有数据后会自动隐藏loading图标。 +- 如您修改了qiun-data-charts.vue组件文件,请务必在升级前备份您的文件,以免被覆盖!!!建议将加载状态显示做成组件,避免下次升级时丢失后无法找到。 + + +## 配置文件说明 + +- 注意,config-echarts.js和config-ucharts.js内只需要配置符合您项目整体UI的整体默认配置,根据需求,先用[【在线工具】](http://demo.ucharts.cn)调试好默认配置,并粘贴到配置文件中。 +- 如果需要与configjs中不同的配置,只需要在组件上绑定:opts或者:eopts传入与默认配置不同的某个属性及值即可覆盖默认配置,极大降低了代码量。 + +- ECharts默认配置文件:config-echarts.js + + i、如您修改了默认配置文件,请务必在升级前备份您的配置文件,以免被覆盖!!! + + ii、ECharts配置手册:[https://echarts.apache.org/zh/option.html](https://echarts.apache.org/zh/option.html) + + iii、"type"及"categories"属性为支持的图表属性,您可参照ECharts配置手册,配置您更多的图表类型,并将对应的图表配置添加至下面 + + iv、"formatter"属性,因各小程序及app端通过组件均不能传递function类型参数,因此请先在此属性下定义您想格式化的数据,组件会自动匹配与其对应的function + + v、"seriesTemplate"属性,因ECharts的大部分配置均在series内,seriesTemplate作为series的模板,这样只需要在这里做好模板配置,组件的数组层chartData(或者localdata或者collection)的series会自动挂载模板配置。如需临时或动态改变seriesTemplate,可在:eopts中传递seriesTemplate,详见pages/echarts/echarts.vue中的曲线图。 + + vi、ECharts配置仅可用于H5或者APP端,并且配置`echartsH5`或`echartsApp`为`true`时可用 + +- uCharts默认配置文件:config-ucharts.js + + i、如您修改了默认配置文件,请务必在升级前备份您的配置文件,以免被覆盖!!! + + ii、v2版本后的uCharts基础库不提供配置手册,您可以使用在线配置生成工具来快速生成配置:[http://demo.ucharts.cn](http://demo.ucharts.cn) + + iii、"type"及"categories"属性为支持的图表属性,不支持添加uCharts基础库没有的图表类型 + + iv、"formatter"属性因各小程序及app端通过组件均不能传递function类型参数,因此请先在此属性下定义您想格式化的数据,组件会自动匹配与其对应的function + + v、uCharts配置可跨全端使用 + + +## 常见问题及注意事项 + +- `图表无法显示问题`: + * 请先检查您的HBuilderX版本,要求高于3.1.0+。 + * 1、如果是首次导入插件不显示,或者报以下未注册`qiun-data-charts`的错误: + > Unknown custom element: < qiun-data-charts > - did you register the component correctly? For recursive components, make sure to provide the "name" option. + * 2、请【重启HBuilderX】或者【重启项目】或者【重启开发者工具】或者【删除APP基座】重新运行,避免缓存问题导致不能显示。 + * 3、如果是基于uniapp的vue-cli项目,1、请 npm update 升级uniapp依赖为最新版本;2、请尝试清理node-modules,重新install,还不行就删除项目,再重新install。如果仍然不行,请检查uniapp依赖是否为最新版本,再重试以上步骤。如果仍然不行,请使用【非uni_modules版本】组件,最新非uni_modules版本在码云发布,[点击此处获取](https://gitee.com/uCharts/uCharts/tree/master/qiun-data-charts%EF%BC%88%E9%9D%9Euni-modules%EF%BC%89)。。 + * 4、请检查控制台是否有报错或提示信息,如果没有报错,也没有提示信息,并且检查视图中class="charts-box"这个元素的宽高均为0,请修改父元素的css样式或进行下面第4步检查。 + * 5、检查父级是否使用了v-show来控制显示。如果页面初始化时组件处于隐藏状态,组件则无法正确获取宽高尺寸,此时需要组件内绑定reshow属性(逻辑应与父级的v-show的逻辑相同),强制重新渲染图表,例如:reshow="父级v-show绑定的事件"。 + * 6、如果在微信小程序端开启了canvas2d模式(不能使用真机调试,请直接预览)不显示图表: + * a、请务必在组件上定义canvasId,不能为纯数字、不能为变量、不能重复、尽量长一些。 + * b、请检查微信小程序的基础库,修改至2.16.0或者最新版本的基础库。 + * c、请检查父元素或父组件是否用v-if来控制显示,如有请改为v-show,并将v-show的逻辑绑定至组件。 +- `formatter格式化问题`:无论是uCharts还是ECharts,因为组件不能传递function,所有的formatter均需要变成别名format来定义,并在config-ucharts.js或config-echarts.js配置对应的formatter方法,组件会根据format的值自动替换配置文件中的formatter方法。(参考示例项目pages/format/format.vue) +- `图表抖动问题`:如果开启了animation动画效果,由于组件内开启了chartData和opts的监听,当数据变化时会重新渲染图表,建议整体改变chartData及opts的属性值,而不要通过循环或遍历来改变this实例下的chartData及opts,例如先定义一个临时变量,拼接好数据后再整体赋值。(参考示例项目pages/updata/updata.vue) +- `微信小程序报错Maximum call stack size exceeded问题`:由于组件内开启了chartData和opts的监听,当数据变化时会重新渲染图表,建议整体改变chartData及opts的属性值,而不要通过循环或遍历来改变this实例下的chartData及opts,例如先定义一个临时变量,拼接好数据后再整体赋值。(参考示例项目pages/updata/updata.vue) +- `Loading状态问题`:如不使用uniClinetDB获取数据源,并且需要展示Loading状态,请先清空series,使组件变更为Loading状态,即this.chartData.series=[]即可展示,然后再从服务端获取数据,拼接完成后再传入this.chartData。如果不需要展示Loading状态,则不需要以上步骤,获取到数据,拼接好标准格式后,直接赋值即可。 +- `微信小程序图表层级过高问题`:因canvas在微信小程序是原生组件,如果使用自定义tabbar或者自定义导航栏,图表则会超出预期,此时需要给组件的canvas2d传值true来使用type='2d'的功能,开启此模式后,一定要在组件上自定义canvasId,不能为数字,不能动态绑定,要为随机字符串!不能“真机调试”,不能“真机调试”,不能“真机调试”开发者工具显示不正常,图表层级会变高,而正常预览或者发布上线则是正常状态,开发者不必担心,一切以真机预览为准(因微信开发者工具显示不正确,canvas2d这种模式下给调试带来了困难,开发时,可以先用:canvas2d="false"来调试,预览无误后再改成true)。 +- `开启canvas2d后图表不显示问题`:开启canvas2d后,需要手动指定canvasId,并且父元素不能含有v-if,否则会导致获取不到dom节点问题,请将v-if改成v-show,更多开启canvas2d不显示问题,请参考示例项目pages/layout/layout.vue文件,对照示例项目修改您的项目。 +- `MiniPorgramError U.createEvent is ot a function`:此问题一般是微信小程序开启了canvas2d,并点击了“真机调试导致”,参考上面【微信小程序图表层级过高问题】解决办法,开启2d后,不可以真机调试,只能开发者工具调试或者扫二维码“预览”。 +- `在图表上滑动无法使页面滚动问题`:此问题是因为监听了touchstart、touchmove和touchend三个事件,或者开启了disableScroll属性,如果您的图表不需要开启图表内的滚动条功能,请禁用这三个方法的监听,即:ontouch="false"或者:disableScroll="false"即可(此时图表组件默认通过@tap事件来监听点击,可正常显示Tooltip提示窗)。 +- `开启滚动条无法拖动图表问题`:此问题正与以上问题相反,是因为禁用了监听touchstart、touchmove和touchend三个事件,请启用这三个方法的监听,即在组件上加入 :ontouch="true" 即可。注意,不要忘记在opts里需要配置enableScroll:true,另外如果需要显示滚动条,需要在xAxis中配置scrollShow:ture,及itemCount(单屏数据密度)数量的配置。 +- `开启滚动条后图表两侧有白边问题`:此问题是因为组件上的background为none或者没有指定,请在组件上加入background="#000000"(您的背景色)。如果父元素为图片,尽量不要开启滚动条,此时图表是透明色,可以显示父元素背景图片。 +- `开启滚动条后动态打点更新数据滚动条位置问题`:开启滚动条后动态打点,需要把opts中update需要赋值为true,来启用uCharts的updateData方法来更新视图,详见示例项目pages/updata/updata.vue。 +- `地图变形问题`:此问题是因为您引用的geojson地图数据的坐标系可能是地球坐标(WGS84)导致,需要开启【是否进行WGS84转墨卡托投影】功能。开启后因大量的数据运算tooltip可能会不跟手,建议自行转换为墨卡托坐标系,可参照源码内function lonlat2mercator()。其他地图数据下载地址:[http://datav.aliyun.com/tools/atlas/](http://datav.aliyun.com/tools/atlas/) +- `支付宝(钉钉)小程序无法点击问题`:请检查支付宝小程序开发者工具中,点击【详情】,在弹出的【项目详情】中【取消】启用小程序基础库 2.0 构建,一定不要勾选此项。 +- `uni-simple-router中使用问题`:如果使用uni-simple-router路由插件,H5开启完全路由模式(即h5:{vueRouterDev:true})时,会导致组件内uni.xxx部分方法失效,引发节点获取不正常报错,请使用普通模式即可。 +- `Y轴刻度标签数字重复问题`:此问题一般是series数据内数值较小,而Y轴网格数量较多,并且Y轴刻度点显示整数导致。解决方法1,Y轴刻度值保留两位小数,组件上传值 :opts="{yAxis:{data:[{tofix:2}]}}";解决方法2,修改Y轴网格数量为series中的最大值的数量,例如series中最大值为3,那么修改yAxis.splitNumber=3即可;解决方法3,根据Y轴网格数量修改Y轴最大值 :opts="{yAxis:{data:[{max:5}]}}"。 +- `柱状图柱子高度不符合预期问题`:此问题是Y轴最小值未默认为0的问题导致,组件上传值 :opts="{yAxis:{data:[{min:0}]}}"即可解决。 +- `饼图类百分比改其他文案的问题`:参考示例项目pages/format-u/format-u.vue,在chartData的series中使用format。 + +## [更多常见问题以官方网站【常见问题】为准](http://demo.ucharts.cn) + +## QQ群号码 +## 请先完整阅读【帮助文档】及【常见问题】3遍,右侧蓝色按钮【示例项目】请看2遍!不看文档不看常见问题进群就问的拒绝回答问题!咨询量太大请理解作者! +- 放在下面是为了让您先看文档,看好群分类,再进群!! +- 交流群1:371774600(已满) +- 交流群2:619841586(不回答本组件问题,只回答uCharts基础库问题) +- 交流群3:955340127(优先解答本组件问题,其他问题群友互助) +- 口令`uniapp` + + +## 相关链接 +- [DCloud插件市场地址](https://ext.dcloud.net.cn/plugin?id=271) +- [uCharts官网](https://www.ucharts.cn) +- [uCharts在线生成工具](http://demo.ucharts.cn)(注:v2.0版本后将不提供配置手册,请通过在线生成工具生成图表配置) +- [uCharts码云开源托管地址](https://gitee.com/uCharts/uCharts) [![star](https://gitee.com/uCharts/uCharts/badge/star.svg?theme=gvp)](https://gitee.com/uCharts/uCharts/stargazers) +- [uCharts基础库更新记录](https://gitee.com/uCharts/uCharts/wikis/%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95?sort_id=1535998) +- [uCharts改造教程](https://gitee.com/uCharts/uCharts/wikis/%E6%94%B9%E9%80%A0uCharts%E6%89%93%E9%80%A0%E4%B8%93%E5%B1%9E%E5%9B%BE%E8%A1%A8?sort_id=1535997) +- [图表组件在项目中的应用 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- [ECharts官网](https://echarts.apache.org/zh/index.html) +- [ECharts配置手册](https://echarts.apache.org/zh/option.html) +- [`wkiwi`提供的w-loading组件地址](https://ext.dcloud.net.cn/plugin?id=504) \ No newline at end of file diff --git a/uni_modules/qiun-data-charts/static/app-plus/echarts.min.js b/uni_modules/qiun-data-charts/static/app-plus/echarts.min.js new file mode 100644 index 0000000..5396a03 --- /dev/null +++ b/uni_modules/qiun-data-charts/static/app-plus/echarts.min.js @@ -0,0 +1,23 @@ + +/* +* 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. +* 版本为4.2.1,修改一处源码:this.el.hide() 改为 this.el?this.el.hide():true +*/ + + +!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,a,r,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||Mb[e]?e:"left";var i=t.textVerticalAlign||t.textBaseline;"center"===i&&(i="middle"),t.textVerticalAlign=null==i||Ib[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&&r),e.__attrCachedBy=s?rb.NONE:rb.PLAIN_TEXT):u&&(e.__attrCachedBy=rb.NONE);var h=n.font||Sb;l&&h===(r.font||Sb)||(e.font=h);var c=t.__computedFont;t.__styleFont!==h&&(t.__styleFont=h,c=t.__computedFont=e.font);var d=n.textPadding,f=n.textLineHeight,p=t.__textCotentBlock;p&&!t.__dirtyText||(p=t.__textCotentBlock=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||Sb);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 Cb.copy(t.getBoundingRect()),t.transform&&Cb.applyTransform(t.transform),Lb.width=e,Lb.height=i,!Cb.intersect(Lb)}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();Zb(t,function(t,i){var n=t.exist;n&&e.set(n.id,t)}),Zb(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={})}),Zb(t,function(t,i){var n=t.exist,o=t.option,a=t.keyInfo;if(Ub(o)){if(a.name=null!=o.name?o.name+"":n?n.name:jb+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(jb))}function Ei(t){return Ub(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-rS&&trS||t<-rS}function tn(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 en(t,e,i,n,o){var a=1-o;return 3*(((e-t)*a+2*(i-e)*o)*a+(n-i)*o*o)}function nn(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(Ji(h)&&Ji(c))Ji(s)?a[0]=0:(M=-l/s)>=0&&M<=1&&(a[f++]=M);else{var p=c*c-4*h*d;if(Ji(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=aS(p),y=h*s+1.5*r*(-c+v),x=h*s+1.5*r*(-c-v);(M=(-s-((y=y<0?-oS(-y,uS):oS(y,uS))+(x=x<0?-oS(-x,uS):oS(x,uS))))/(3*r))>=0&&M<=1&&(a[f++]=M)}else{var _=(2*h*s-3*r*c)/(2*aS(h*h*h)),w=Math.acos(_)/3,b=aS(h),S=Math.cos(w),M=(-s-2*b*S)/(3*r),m=(-s+b*(S+lS*Math.sin(w)))/(3*r),I=(-s+b*(S-lS*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 on(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(Ji(r))Qi(a)&&(c=-s/a)>=0&&c<=1&&(o[l++]=c);else{var u=a*a-4*r*s;if(Ji(u))o[0]=-a/(2*r);else if(u>0){var h=aS(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 an(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 rn(t,e,i,n,o,a,r,s,l,u,h){var c,d,f,p,g,m=.005,v=1/0;hS[0]=l,hS[1]=u;for(var y=0;y<1;y+=.05)cS[0]=tn(t,i,o,r,y),cS[1]=tn(e,n,a,s,y),(p=hw(hS,cS))=0&&p=0&&c<=1&&(o[l++]=c);else{var u=r*r-4*a*s;if(Ji(u))(c=-r/(2*a))>=0&&c<=1&&(o[l++]=c);else if(u>0){var h=aS(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 hn(t,e,i){var n=t+i-2*e;return 0===n?.5:(t-e)/n}function cn(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 dn(t,e,i,n,o,a,r,s,l){var u,h=.005,c=1/0;hS[0]=r,hS[1]=s;for(var d=0;d<1;d+=.05)cS[0]=sn(t,i,o,d),cS[1]=sn(e,n,a,d),(m=hw(hS,cS))=0&&m1e-4)return s[0]=t-i,s[1]=e-n,l[0]=t+i,void(l[1]=e+n);if(yS[0]=mS(o)*i+t,yS[1]=gS(o)*n+e,xS[0]=mS(a)*i+t,xS[1]=gS(a)*n+e,u(s,yS,xS),h(l,yS,xS),(o%=vS)<0&&(o+=vS),(a%=vS)<0&&(a+=vS),o>a&&!r?a+=vS:oo&&(_S[0]=mS(f)*i+t,_S[1]=gS(f)*n+e,u(s,_S,s),h(l,_S,l))}function yn(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+=zS);var d=Math.atan2(l,s);return d<0&&(d+=zS),d>=n&&d<=o||d+zS>=n&&d+zS<=o}function Sn(t,e,i,n,o,a){if(a>e&&a>n||ao?r:0}function Mn(t,e){return Math.abs(t-e)e&&u>n&&u>a&&u>s||u1&&In(),c=tn(e,n,a,s,WS[0]),p>1&&(d=tn(e,n,a,s,WS[1]))),2===p?me&&s>n&&s>a||s=0&&u<=1){for(var h=0,c=sn(e,n,a,u),d=0;di||s<-i)return 0;u=Math.sqrt(i*i-s*s);FS[0]=-u,FS[1]=u;var l=Math.abs(n-o);if(l<1e-4)return 0;if(l%VS<1e-4){n=0,o=VS;p=a?1:-1;return r>=FS[0]+t&&r<=FS[1]+t?p:0}if(a){var u=n;n=wn(o),o=wn(u)}else n=wn(n),o=wn(o);n>o&&(o+=VS);for(var h=0,c=0;c<2;c++){var d=FS[c];if(d+t>r){var f=Math.atan2(s,d),p=a?1:-1;f<0&&(f=VS+f),(f>=n&&f<=o||f+VS>=n&&f+VS<=o)&&(f>Math.PI/2&&f<1.5*Math.PI&&(p=-p),h+=p)}}return h}function Cn(t,e,i,n,o){for(var a=0,r=0,s=0,l=0,u=0,h=0;h1&&(i||(a+=Sn(r,s,l,u,n,o))),1===h&&(l=r=t[h],u=s=t[h+1]),c){case BS.M:r=l=t[h++],s=u=t[h++];break;case BS.L:if(i){if(yn(r,s,t[h],t[h+1],e,n,o))return!0}else a+=Sn(r,s,t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.C:if(i){if(xn(r,s,t[h++],t[h++],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++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.Q:if(i){if(_n(r,s,t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=An(r,s,t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.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+=Sn(r,s,x,_,n,o):(l=x,u=_);var w=(n-d)*g/p+d;if(i){if(bn(d,f,g,m,m+v,y,e,w,o))return!0}else a+=Dn(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 BS.R:l=r=t[h++],u=s=t[h++];var x=l+t[h++],_=u+t[h++];if(i){if(yn(l,u,x,u,e,n,o)||yn(x,u,x,_,e,n,o)||yn(x,_,l,_,e,n,o)||yn(l,_,l,u,e,n,o))return!0}else a+=Sn(x,u,x,_,n,o),a+=Sn(l,_,l,u,n,o);break;case BS.Z:if(i){if(yn(r,s,l,u,e,n,o))return!0}else a+=Sn(r,s,l,u,n,o);r=l,s=u}}return i||Mn(s,u)||(a+=Sn(r,s,l,u,n,o)||0),0!==a}function Ln(t,e,i){return Cn(t,0,!1,e,i)}function kn(t,e,i,n){return Cn(t,e,!0,i,n)}function Pn(t){di.call(this,t),this.path=null}function Nn(t,e,i,n,o,a,r,s,l,u,h){var c=l*(tM/180),d=QS(c)*(t-i)/2+JS(c)*(e-n)/2,f=-1*JS(c)*(t-i)/2+QS(c)*(e-n)/2,p=d*d/(r*r)+f*f/(s*s);p>1&&(r*=$S(p),s*=$S(p));var g=(o===a?-1:1)*$S((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+QS(c)*m-JS(c)*v,x=(e+n)/2+JS(c)*m+QS(c)*v,_=nM([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=nM(w,b);iM(w,b)<=-1&&(S=tM),iM(w,b)>=1&&(S=0),0===a&&S>0&&(S-=2*tM),1===a&&S<0&&(S+=2*tM),h.addData(u,y,x,r,s,_,S,c,a)}function On(t){if(!t)return new ES;for(var e,i=0,n=0,o=i,a=n,r=new ES,s=ES.CMD,l=t.match(oM),u=0;u=2){if(o&&"spline"!==o){var a=fM(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=dM(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 bo(t){var e=t.insideRollback;e&&(t.textFill=e.textFill,t.textStroke=e.textStroke,t.textStrokeWidth=e.textStrokeWidth,t.insideRollback=null)}function So(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 Mo(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 Io(t,e,i,n,o){Mo(!0,t,e,i,n,o)}function To(t,e,i,n,o){Mo(!1,t,e,i,n,o)}function Ao(t,e){for(var i=_t([]);t&&t!==e;)bt(i,t.getLocalTransform(),i),t=t.parent;return i}function Do(t,e,i){return e&&!c(e)&&(e=Tw.getLocalTransform(e)),i&&(e=Tt([],e)),Q([],t,e)}function Co(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=Do(a,e,i),Math.abs(a[0])>Math.abs(a[1])?a[0]>0?"right":"left":a[1]>0?"bottom":"top"}function Lo(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)),Io(t,n,i,t.dataIndex)}}})}}function ko(t,e){return f(t,function(t){var i=t[0];i=LM(i,e.x),i=kM(i,e.x+e.width);var n=t[1];return n=LM(n,e.y),n=kM(n,e.y+e.height),[i,n]})}function Po(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)):Xn(t.replace("path://",""),e,i,"center")}function No(t,e,i){this.parentModel=e,this.ecModel=i,this.option=t}function Oo(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 Vo(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?zo(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t}function Go(t,e,i){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),i?t:+t}function Fo(t){return t.sort(function(t,e){return t-e}),t}function Wo(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 Ho(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 Zo(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 Uo(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 Xo(t){var e=2*Math.PI;return(t%e+e)%e}function jo(t){return t>-UM&&t=-20?+t.toFixed(n<0?-n:0):t}function Jo(t){function e(t,i,n){return t.interval[n]=0}function ta(t){return isNaN(t)?"-":(t=(t+"").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:"")}function ea(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 ia(t){return null==t?"":(t+"").replace(KM,function(t,e){return $M[e]})}function na(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 ra(t,e){return t+="","0000".substr(0,e-t.length)+t}function sa(t,e,i){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var n=Yo(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",ra(r,2)).replace("M",r).replace("yyyy",a).replace("yy",a%100).replace("dd",ra(s,2)).replace("d",s).replace("hh",ra(l,2)).replace("h",l).replace("mm",ra(u,2)).replace("m",u).replace("ss",ra(h,2)).replace("s",h).replace("SSS",ra(c,3))}function la(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t}function ua(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 ha(t,e,i){var n=e.width,o=e.height,a=Vo(t.x,n),r=Vo(t.y,o),s=Vo(t.x2,n),l=Vo(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=qM(i||0),{width:Math.max(s-a-i[1]-i[3],0),height:Math.max(l-r-i[0]-i[2],0)}}function ca(t,e,i){i=qM(i||0);var n=e.width,o=e.height,a=Vo(t.left,n),r=Vo(t.top,o),s=Vo(t.right,n),l=Vo(t.bottom,o),u=Vo(t.width,n),h=Vo(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 da(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=ca(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 fa(t,e){return null!=t[oI[e][0]]||null!=t[oI[e][1]]&&null!=t[oI[e][2]]}function pa(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 ya(t){var e=t.get("coordinateSystem"),i={coordSysName:e,coordSysDims:[],axisMap:R(),categoryAxisMap:R()},n=fI[e];if(n)return n(t,i,i.axisMap,i.categoryAxisMap),i}function xa(t){return"category"===t.get("type")}function _a(t){this.fromDataset=t.fromDataset,this.data=t.data||(t.sourceFormat===vI?{}:[]),this.sourceFormat=t.sourceFormat||yI,this.seriesLayoutBy=t.seriesLayoutBy||_I,this.dimensionsDefine=t.dimensionsDefine,this.encodeDefine=t.encodeDefine&&R(t.encodeDefine),this.startIndex=t.startIndex||0,this.dimensionsDetectCount=t.dimensionsDetectCount}function wa(t){var e=t.option.source,i=yI;if(S(e))i=xI;else if(y(e)){0===e.length&&(i=gI);for(var n=0,o=e.length;n=e:"max"===i?t<=e:t===e}function Xa(t,e){return t.join(",")===e.join(",")}function ja(t,e){AI(e=e||{},function(e,i){if(null!=e){var n=t[i];if(lI.hasClass(i)){e=Di(e);var o=Pi(n=Di(n),e);t[i]=CI(o,function(t){return t.option&&t.exist?LI(t.exist,t.option,!0):t.exist||t.option})}else t[i]=LI(n,e,!0)}})}function Ya(t){var e=t&&t.itemStyle;if(e)for(var i=0,o=OI.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 rr(t,e){_a.isInstance(t)||(t=_a.seriesDataToSource(t)),this._source=t;var i=this._data=t.data,n=t.sourceFormat;n===xI&&(this._offset=0,this._dimSize=e,this._data=i),a(this,GI[n===gI?n+"_"+t.seriesLayoutBy:n])}function sr(){return this._data.length}function lr(t){return this._data[t]}function ur(t){for(var e=0;ee.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function Mr(t,e){d(t.CHANGABLE_METHODS,function(i){t.wrapMethod(i,v(Ir,e))})}function Ir(t){var e=Tr(t);e&&e.setOutputEnd(this.count())}function Tr(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 Ar(){this.group=new tb,this.uid=Ro("viewChart"),this.renderTask=gr({plan:Lr,reset:kr}),this.renderTask.context={view:this}}function Dr(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 Nr(t,e,i,n){var o=t[e];if(o){var a=o[iT]||o,r=o[oT];if(o[nT]!==i||r!==n){if(null==i||!n)return t[e]=a;(o=t[e]=Pr(a,i,"debounce"===n))[iT]=a,o[oT]=n,o[nT]=i}return o}}function Or(t,e){var i=t[e];i&&i[iT]&&(t[e]=i[iT])}function Er(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 Rr(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(),hT(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),hT(s,n),r|=s.perform(u)})}}),t.unfinished|=r}function zr(t,e,i,n,o){function a(i){var a=i.uid,s=r.get(a)||r.set(a,gr({plan:Hr,reset:Zr,count:Xr}));s.context={model:i,ecModel:n,api:o,useClearVisual:e.isVisual&&!e.isLayout,plan:e.plan,reset:e.reset,scheduler:t},jr(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 Br(t,e,i,n,o){function a(e){var i=e.uid,n=s.get(i);n||(n=s.set(i,gr({reset:Gr,onDirty:Wr})),r.dirty()),n.context={model:e,overallProgress:h,modifyOutputEnd:c},n.agent=r,n.__block=h,jr(t,e,n)}var r=i.overallTask=i.overallTask||gr({reset:Vr});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 Vr(t){t.overallReset(t.ecModel,t.api,t.payload)}function Gr(t,e){return t.overallProgress&&Fr}function Fr(){this.agent.dirty(),this.getDownstream().dirty()}function Wr(){this.agent&&this.agent.dirty()}function Hr(t){return t.plan&&t.plan(t.model,t.ecModel,t.api,t.payload)}function Zr(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 Ur(e)}):cT}function Ur(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 Qr(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),r(e.__inheritedStyle,t.__inheritedStyle))}function ts(t){for(var e=P(t).split(_T),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(_T),St(n,n,[parseFloat(r[0]),parseFloat(r[1]||0)]);break;case"scale":r=P(r).split(_T),It(n,n,[parseFloat(r[0]),parseFloat(r[1]||r[0])]);break;case"rotate":r=P(r).split(_T),Mt(n,n,parseFloat(r[0]));break;case"skew":r=P(r).split(_T),console.warn("Skew transform is not supported yet");break;case"matrix":r=P(r).split(_T);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 os(t){var e=t.getAttribute("style"),i={};if(!e)return i;var n={};TT.lastIndex=0;for(var o;null!=(o=TT.exec(e));)n[o[1]]=o[2];for(var a in ST)ST.hasOwnProperty(a)&&null!=n[a]&&(i[ST[a]]=n[a]);return i}function as(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 rs(t,e){return(new $r).parse(t,e)}function ss(t){return function(e,i,n){e=e&&e.toLowerCase(),fw.prototype[t].call(this,e,i,n)}}function ls(){fw.call(this)}function us(t,e,n){function o(t,e){return t.__prio-e.__prio}n=n||{},"string"==typeof e&&(e=JT[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=Pr(m(a.flush,a),17),(e=i(e))&&BI(e,!0),this._theme=e,this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._coordSysMgr=new Fa;var r=this._api=As(this);_e($T,o),_e(YT,o),this._scheduler=new Er(this,r,YT,$T),fw.call(this,this._ecEventProcessor=new Ds),this._messageCenter=new ls,this._initEvents(),this.resize=m(this.resize,this),this._pendingActions=[],a.animation.on("frame",this._onframe,this),vs(a,this),N(this)}function hs(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 Is(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 Ts(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 As(t){var e=t._coordSysMgr;return a(new Ga(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 Ds(){this.eventInfo}function Cs(t){function e(t,e){for(var n=0;n65535?dA:pA}function Js(t){var e=t.constructor;return e===Array?t.slice():new e(t)}function Qs(t,e){d(gA.concat(e.__wrappedMethods||[]),function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t.__wrappedMethods=e.__wrappedMethods,d(mA,function(n){t[n]=i(e[n])}),t._calculationInfo=a(e._calculationInfo)}function tl(t,e,i,n,o){var a=cA[e.type],r=n-1,s=e.name,l=t[s][r];if(l&&l.length=0?this._indices[t]:-1}function al(t,e){var i=t._idList[e];return null==i&&(i=il(t,t._idDimIdx,e)),null==i&&(i=hA+e),i}function rl(t){return y(t)||(t=[t]),t}function sl(t,e){var i=t.dimensions,n=new vA(f(i,t.getDimensionInfo,t),t.hostModel);Qs(n,t);for(var o=n._storage={},a=t._storage,r=0;r=0?(o[s]=ll(a[s]),n._rawExtent[s]=ul(),n._extent[s]=null):o[s]=a[s])}return n}function ll(t){for(var e=new Array(t.length),i=0;in&&(r=o.interval=n);var s=o.intervalPrecision=Ml(r);return Tl(o.niceTickExtent=[MA(Math.ceil(t[0]/r)*r,s),MA(Math.floor(t[1]/r)*r,s)],t),o}function Ml(t){return Ho(t)+2}function Il(t,e,i){t[e]=Math.max(Math.min(t[e],i[1]),i[0])}function Tl(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),Il(t,0,e),Il(t,1,e),t[0]>t[1]&&(t[0]=t[1])}function Al(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 Dl(t){return t.get("stack")||AA+t.seriesIndex}function Cl(t){return t.dim+t.index}function Ll(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 Vl(t,e){return VA(t,BA(e))}function Gl(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]=Vo(n[0],1),n[1]=Vo(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=kl("bar",c);if(d(p,function(t){f|=t.getBaseAxis()===e.axis}),f){var g=Pl(p),m=Fl(r,s,e,g);r=m.min,s=m.max}}return[r,s]}function Fl(t,e,i,n){var o=i.axis.getExtent(),a=o[1]-o[0],r=Ol(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 Wl(t,e){var i=Gl(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 Hl(t,e){if(e=e||t.get("type"))switch(e){case"category":return new SA(t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),[1/0,-1/0]);case"value":return new TA;default:return(xl.getClass(e)||TA).create(t)}}function Zl(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(i>0&&n>0||i<0&&n<0)}function Ul(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(Xl(t,n),o)}:function(e){return t.scale.getLabel(e)}}function Xl(t,e){return"category"===t.type?t.scale.getLabel(e):e}function jl(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=Ul(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 ou(t){return"category"===t.type?ru(t):uu(t)}function au(t,e){return"category"===t.type?lu(t,e):{ticks:t.scale.getTicks()}}function ru(t){var e=t.getLabelModel(),i=su(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:i.labelCategoryInterval}:i}function su(t,e){var i=hu(t,"labels"),n=ql(e),o=cu(i,n);if(o)return o;var a,r;return a=x(n)?vu(t,n):mu(t,r="auto"===n?fu(t):n),du(i,n,{labels:a,labelCategoryInterval:r})}function lu(t,e){var i=hu(t,"ticks"),n=ql(e),o=cu(i,n);if(o)return o;var a,r;if(e.get("show")&&!t.scale.isBlank()||(a=[]),x(n))a=vu(t,n,!0);else if("auto"===n){var s=su(t,t.getLabelModel());r=s.labelCategoryInterval,a=f(s.labels,function(t){return t.tickValue})}else a=mu(t,r=n,!0);return du(i,n,{ticks:a,tickCategoryInterval:r})}function uu(t){var e=t.scale.getTicks(),i=Ul(t);return{labels:f(e,function(e,n){return{formattedLabel:i(e,n),rawLabel:t.scale.getLabel(e),tickValue:e}})}}function hu(t,e){return nD(t)[e]||(nD(t)[e]=[])}function cu(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))),_=nD(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 gu(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 mu(t,e,i){function n(t){l.push(i?t:{formattedLabel:o(t),rawLabel:a.getLabel(t),tickValue:t})}var o=Ul(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=Kl(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 vu(t,e,i){var n=t.scale,o=Ul(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 yu(t,e){var i=(t[1]-t[0])/e/2;t[0]+=i,t[1]-=i}function xu(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 _u(t,e){var i=t.mapDimension("defaultedLabel",!0),n=i.length;if(1===n)return fr(t,e,i[0]);if(n){for(var o=[],a=0;a0?i=n[0]:n[1]<0&&(i=n[1]),i}function Ou(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 Eu(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 Ru(t){return isNaN(t[0])||isNaN(t[1])}function zu(t,e,i,n,o,a,r,s,l,u,h){return"none"!==u&&u?Bu.apply(this,arguments):Vu.apply(this,arguments)}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(Ru(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;_D(bD,g),bD[m]=g[m]+v,_D(SD,p),SD[m]=p[m]-v,t.bezierCurveTo(bD[0],bD[1],SD[0],SD[1],p[0],p[1])}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Vu(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(Ru(p)){if(h){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]),_D(bD,p);else if(l>0){var g=d+a,m=e[g];if(h)for(;m&&Ru(e[g]);)m=e[g+=a];var v=.5,y=e[c];if(!(m=e[g])||Ru(m))_D(SD,p);else{Ru(m)&&!h&&(m=p),U(wD,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);xD(SD,p,wD,-l*(1-(v=_/(_+x))))}vD(bD,bD,s),yD(bD,bD,r),vD(SD,SD,s),yD(SD,SD,r),t.bezierCurveTo(bD[0],bD[1],SD[0],SD[1],p[0],p[1]),xD(bD,p,wD,l*v)}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Gu(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 Fu(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 Zu(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 hM({shape:{cx:Go(t.cx,1),cy:Go(t.cy,1),r0:Go(a[0],1),r:Go(a[1],1),startAngle:-r[0]*s,endAngle:-r[1]*s,clockwise:o.inverse}});return e&&(l.shape.endAngle=-r[0]*s,To(l,{shape:{endAngle:-r[1]*s}},n)),l}function ju(t,e,i,n){return"polar"===t.type?Xu(t,e,i,n):Uu(t,e,i,n)}function Yu(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 TM(0,0,0,0,h,!0);return y[n]=g,y[n+"2"]=m,y}}}function Ku(t,e,i){var n=t.get("showAllSymbol"),o="auto"===n;if(!n||o){var a=i.getAxesByScale("ordinal")[0];if(a&&(!o||!$u(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 $u(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 Ju(t){return this._axes[t]}function Qu(t){LD.call(this,t)}function th(t,e){return e.type||(e.data?"category":"value")}function eh(t,e,i){return t.getCoordSysModel()===e}function ih(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this.model=t}function nh(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)oh(r[u])&&(a=r[u]);else for(var h in r)if(r.hasOwnProperty(h)&&oh(r[h])&&!n[o(r[h])]){a=r[h];break}a&&(n[o(a)]=!0)}}function oh(t){return t&&"category"!==t.type&&"time"!==t.type&&Zl(t)}function ah(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 rh(t,e){return f(VD,function(e){return t.getReferringComponents(e)[0]})}function sh(t){return"cartesian2d"===t.get("coordinateSystem")}function lh(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e}function uh(t,e,i,n){var o,a,r=Xo(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;return jo(r-GD/2)?(a=l?"bottom":"top",o="center"):jo(r-1.5*GD)?(a=l?"top":"bottom",o="center"):(a="middle",o=r<1.5*GD&&r>GD/2?l?"left":"right":l?"right":"left"),{rotation:r,textAlign:o,textVerticalAlign:a}}function hh(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}function ch(t,e,i){if(!Kl(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?(dh(a),dh(u)):fh(a,r)&&(n?(dh(r),dh(h)):(dh(a),dh(u))),!1===o?(dh(s),dh(c)):fh(l,s)&&(o?(dh(l),dh(d)):(dh(s),dh(c)))}}function dh(t){t&&(t.ignore=!0)}function fh(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 ph(t){return"middle"===t||"center"===t}function gh(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 Sh(t){var e=Mh(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=Th(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||kh(t.style,d,n,u,a,i,p),fo(t,d)}function Rh(t,e){var i=t.get(tC)||0;return Math.min(i,Math.abs(e.width),Math.abs(e.height))}function zh(t,e,i){var n=t.getData(),o=[],a=n.getLayout("valueAxisHorizontal")?1:0;o[1-a]=n.getLayout("valueAxisStart");var r=new nC({shape:{points:n.getLayout("largePoints")},incremental:!!i,__startPoint:o,__valueIdx:a});e.add(r),Bh(r,t,n)}function Bh(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 Vh(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){Gh(o.getItemGraphicEl(t),o.getItemLayout(t),e.isSelected(o.getName(t)),s,i)})}function Gh(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 Fh(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 hM({z2:2}),a=new gM,r=new rM;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 Wh(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 Hh(t,e,i,n,o,a){for(var r=[],s=[],l=0;l3?1.4:o>1?1.2:1.1;hc(this,"zoom","zoomOnMouseWheel",t,{scale:n>0?s:1/s,originX:a,originY:r})}if(i){var l=Math.abs(n);hc(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(n>0?1:-1)*(l>3?.4:l>1?.15:.05),originX:a,originY:r})}}}function uc(t){ic(this._zr,"globalPan")||hc(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY})}function hc(t,e,i,n,o){t.pointerChecker&&t.pointerChecker(n,o.originX,o.originY)&&(mw(n.event),cc(t,e,i,n,o))}function cc(t,e,i,n,o){o.isAvailableBehavior=m(dc,null,i,n),t.trigger(e,o)}function dc(t,e,i){var n=i[t];return!t||n&&(!_(n)||e.event[n+"Key"])}function fc(t,e,i){var n=t.target,o=n.position;o[0]+=e,o[1]+=i,n.dirty()}function pc(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 gc(t,e,i){var n=e.getComponentByElement(t.topTarget),o=n&&n.coordinateSystem;return n&&n!==i&&!RC[n.mainType]&&o&&o.model!==i}function mc(t,e){var i=t.getItemStyle(),n=t.get("areaColor");return null!=n&&(i.fill=n),i}function vc(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),yc(e,i)}}}))}function yc(t,e){e.eachChild(function(e){d(e.__regions,function(i){e.trigger(t.isSelected(i.name)?"emphasis":"normal")})})}function xc(t,e){var i=new tb;this.uid=Ro("ec_map_draw"),this._controller=new oc(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 _c(t){var e=this[zC];e&&e.recordVersion===this[BC]&&wc(e,t)}function wc(t,e){var i=t.circle,n=t.labelModel,o=t.hoverLabelModel,a=t.emphasisText,r=t.normalText;e?(i.style.extendFrom(mo({},o,{text:o.get("show")?a:null},{isRectText:!0,useInsideStyle:!1},!0)),i.__mapOriginalZ2=i.z2,i.z2+=NM):(mo(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 bc(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 Sc(){Tw.call(this)}function Mc(t){this.name=t,this.zoomLimit,Tw.call(this),this._roamTransformable=new Sc,this._rawTransformable=new Sc,this._center,this._zoom}function Ic(t,e,i,n){var o=i.seriesModel,a=o?o.coordinateSystem:null;return a===this?a[t](n):null}function Tc(t,e,i,n){Mc.call(this,t),this.map=e;var o=OC.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 Ac(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 Dc(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=[Vo(s[0],u),Vo(s[1],h)],l=Vo(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=ca(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 Cc(t,e){d(e.get("geoCoord"),function(e,i){t.addGeoCoord(i,e)})}function Lc(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 Wc(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){jc(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=Yc(t,o,t.parentNode.hierNode.defaultAncestor||n[0],e)}function Hc(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t.setLayout({x:e},!0),t.hierNode.modifier+=t.parentNode.hierNode.modifier}function Zc(t){return arguments.length?t:Qc}function Uc(t,e){var i={};return t-=Math.PI/2,i.x=e*Math.cos(t),i.y=e*Math.sin(t),i}function Xc(t,e){return ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function jc(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 Yc(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=qc(s),a=Kc(a),s&&a;){o=qc(o),r=Kc(r),o.hierNode.ancestor=t;var d=s.hierNode.prelim+c-a.hierNode.prelim-u+n(s,a);d>0&&(Jc($c(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&&!qc(o)&&(o.hierNode.thread=s,o.hierNode.modifier+=c-l),a&&!Kc(r)&&(r.hierNode.thread=a,r.hierNode.modifier+=u-h,i=t)}return i}function qc(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1]:t.hierNode.thread}function Kc(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierNode.thread}function $c(t,e,i){return t.hierNode.ancestor.parentNode===e.parentNode?t.hierNode.ancestor:i}function Jc(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 Qc(t,e){return t.parentNode===e.parentNode?1:2}function td(t,e){var i=t.getItemLayout(e);return i&&!isNaN(i.x)&&!isNaN(i.y)&&"none"!==t.getItemVisual(e,"symbol")}function ed(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 id(t,e,i,n,o,a){var s=!i,l=t.tree.getNodeByDataIndex(e),a=ed(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 wu(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),Io(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 bM({shape:od(a,f,f),style:r({opacity:0,strokeNoScale:!0},a.lineStyle)})),Io(S,{shape:od(a,d,p),style:{opacity:1}},o),n.add(S)}}function nd(t,e,i,n,o,a){for(var r,s=t.tree.getNodeByDataIndex(e),l=t.tree.root,a=ed(s,s.getModel(),a),u=s.parentNode===l?s:s.parentNode||s;null==(r=u.getLayout());)u=u.parentNode===l?u:u.parentNode||u;Io(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&&Io(h,{shape:od(a,r,r),style:{opacity:0}},o,function(){n.remove(h)})}function od(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=Uc(s,u),f=Uc(s,u+(h-u)*t.curvature),p=Uc(l,h+(u-h)*t.curvature),g=Uc(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 ad(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 sd(t,e){var i=Xc(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=Zc(function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth})):(o=i.width,a=i.height,r=Zc());var s=t.getData().tree.root,l=s.children[0];if(l){Fc(s),ad(l,Wc,r),s.hierNode.modifier=-l.hierNode.prelim,rd(l,Hc);var u=l,h=l,c=l;rd(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),rd(l,function(t){m=(t.getLayout().x+f)*p,v=(t.depth-1)*g;var e=Uc(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),rd(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),rd(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 ld(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 ud(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function hd(t,e){return l(ud(t),e)>=0}function cd(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 dd(t){var e=0;d(t.children,function(t){dd(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 fd(t,e){var i=e.get("color");if(i){var n;return d(t=t||[],function(t){var e=new No(t),i=e.get("color");(e.get("itemStyle.color")||i&&"none"!==i)&&(n=!0)}),n||((t[0]||(t[0]={})).color=i.slice()),t}}function pd(t){this.group=new tb,t.add(this.group)}function gd(t,e,i,n,o,a){var r=[[o?t:t-UC,e],[t+i,e],[t+i,e+n],[o?t:t-UC,e+n]];return!a&&r.splice(2,0,[t+i+UC,e+n/2]),!o&&r.push([t,e+n/2]),r}function md(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&&cd(i,e)}}function vd(){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 bd(t,e){var i=t.visual,n=[];w(i)?sL(i,function(t){n.push(t)}):null!=i&&n.push(i);var o={color:1,symbol:1};e||1!==n.length||o.hasOwnProperty(t.type)||(n[1]=n[0]),Ld(t,n)}function Sd(t){return{applyVisual:function(e,i,n){e=this.mapValueToVisual(e),n("color",t(i("color"),e))},_doMap:Dd([0,1])}}function Md(t){var e=this.option.visual;return e[Math.round(Bo(t,[0,1],[0,e.length-1],!0))]||{}}function Id(t){return function(e,i,n){n(t,this.mapValueToVisual(e))}}function Td(t){var e=this.option.visual;return e[this.option.loop&&t!==uL?t%e.length:t]}function Ad(){return this.option.visual[0]}function Dd(t){return{linear:function(e){return Bo(e,t,this.option.visual,!0)},category:Td,piecewise:function(e,i){var n=Cd.call(this,i);return null==n&&(n=Bo(e,t,this.option.visual,!0)),n},fixed:Ad}}function Cd(t){var e=this.option,i=e.pieceList;if(e.hasSpecialVisual){var n=i[hL.findPieceIndex(t,i)];if(n&&n.visual)return n.visual[this.type]}}function Ld(t,e){return t.visual=e,"color"===t.type&&(t.parsedVisual=f(e,function(t){return Gt(t)})),e}function kd(t,e,i){return t?e<=i:e=o.length||t===o[t.depth])&&Pd(t,Vd(r,h,t,e,g,a),i,n,o,a)})}else l=Od(h),t.setVisual("color",l)}}function Nd(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 Od(t){var e=Rd(t,"color");if(e){var i=Rd(t,"colorAlpha"),n=Rd(t,"colorSaturation");return n&&(e=jt(e,null,null,n)),i&&(e=Yt(e,i)),e}}function Ed(t,e){return null!=e?jt(e,null,null,t):null}function Rd(t,e){var i=t[e];if(null!=i&&"none"!==i)return i}function zd(t,e,i,n,o,a){if(a&&a.length){var r=Bd(e,"color")||null!=o.color&&"none"!==o.color&&(Bd(e,"colorAlpha")||Bd(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 hL(c);return d.__drColorMappingBy=h,d}}}function Bd(t,e){var i=t.get(e);return fL(i)&&i.length?{name:e,range:i}:null}function Vd(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 Gd(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(_L),l=f.get(wL)/2,u=Kd(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=mL(o-2*c,0))*(a=mL(a-c-d,0)),g=Fd(t,f,p,e,i,n);if(g.length){var m={x:c,y:d,width:o,height:a},v=vL(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 Ud(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?mL(u*o/l,l/(u*a)):1/0}function Xd(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;cXM&&(u=XM),a=s}u=0?n+=u:n-=u:p>=0?n-=u:n+=u}return n}function pf(t,e){return t.getVisual("opacity")||t.getModel().get(e)}function gf(t,e,i){var n=t.getGraphicEl(),o=pf(t,e);null!=i&&(null==o&&(o=1),o*=i),n.downplay&&n.downplay(),n.traverse(function(t){if("group"!==t.type){var e=t.lineLabelOriginalOpacity;null!=e&&null==i||(e=o),t.setStyle("opacity",e)}})}function mf(t,e){var i=pf(t,e),n=t.getGraphicEl();n.highlight&&n.highlight(),n.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",i)})}function vf(t){return t instanceof Array||(t=[t,t]),t}function yf(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")])}),xf(i)}}function xf(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 _f(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 wf(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 Pf(t,e){return Math.min(e[1],Math.max(e[0],t))}function Nf(t,e,i){this._axesMap=R(),this._axesLayout={},this.dimensions=t.dimensions,this._rect,this._model=t,this._init(t,e,i)}function Of(t,e){return ek(ik(t,e[0]),e[1])}function Ef(t,e){var i=e.layoutLength/(e.axisCount-1);return{position:i*t,axisNameAvailableWidth:i,axisLabelShow:!0}}function Rf(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 tmk}function $f(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function Jf(t,e,i,n){var o=new tb;return o.add(new yM({name:"main",style:ip(i),silent:!0,draggable:!0,cursor:"move",drift:uk(t,e,o,"nswe"),ondragend:uk(qf,e,{isEnd:!0})})),hk(n,function(i){o.add(new yM({name:i,style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:uk(t,e,o,i),ondragend:uk(qf,e,{isEnd:!0})}))}),o}function Qf(t,e,i,n){var o=n.brushStyle.lineWidth||0,a=fk(o,vk),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;ep(t,e,"main",r,s,p,g),n.transformable&&(ep(t,e,"w",l,u,a,v),ep(t,e,"e",d,u,a,v),ep(t,e,"n",l,u,m,a),ep(t,e,"s",l,f,m,a),ep(t,e,"nw",l,u,a,a),ep(t,e,"ne",d,u,a,a),ep(t,e,"sw",l,f,a,a),ep(t,e,"se",d,f,a,a))}function tp(t,e){var i=e.__brushOption,n=i.transformable,o=e.childAt(0);o.useStyle(ip(i)),o.attr({silent:!n,cursor:n?"move":"default"}),hk(["w","e","n","s","se","sw","ne","nw"],function(i){var o=e.childOfName(i),a=ap(t,i);o&&o.attr({silent:!n,invisible:!n,cursor:n?_k[a]+"-resize":null})})}function ep(t,e,i,n,o,a,r){var s=e.childOfName(i);s&&s.setShape(hp(up(t,e,[[n,o],[n+a,o+r]])))}function ip(t){return r({strokeNoScale:!0},t.brushStyle)}function np(t,e,i,n){var o=[dk(t,i),dk(e,n)],a=[fk(t,i),fk(e,n)];return[[o[0],a[0]],[o[1],a[1]]]}function op(t){return Ao(t.group)}function ap(t,e){if(e.length>1)return("e"===(n=[ap(t,(e=e.split(""))[0]),ap(t,e[1])])[0]||"w"===n[0])&&n.reverse(),n.join("");var i={left:"w",right:"e",top:"n",bottom:"s"},n=Co({w:"left",e:"right",n:"top",s:"bottom"}[e],op(t));return i[n]}function rp(t,e,i,n,o,a,r,s){var l=n.__brushOption,u=t(l.range),h=lp(i,a,r);hk(o.split(""),function(t){var e=xk[t];u[e[0]][e[1]]+=h[e[0]]}),l.range=e(np(u[0][0],u[1][0],u[0][1],u[1][1])),Zf(i,n),qf(i,{isEnd:!1})}function sp(t,e,i,n,o){var a=e.__brushOption.range,r=lp(t,i,n);hk(a,function(t){t[0]+=r[0],t[1]+=r[1]}),Zf(t,e),qf(t,{isEnd:!1})}function lp(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 up(t,e,n){var o=jf(t,e);return o&&!0!==o?o.clipPath(n,t._transform):i(n)}function hp(t){var e=dk(t[0][0],t[1][0]),i=dk(t[0][1],t[1][1]);return{x:e,y:i,width:fk(t[0][0],t[1][0])-e,height:fk(t[0][1],t[1][1])-i}}function cp(t,e,i){if(t._brushType){var n=t._zr,o=t._covers,a=Xf(t,e,i);if(!t._dragging)for(var r=0;r0;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,e){var i=[],n="vertical"===e?"y":"x",o=Zi(t,function(t){return t.getLayout()[n]});return o.keys.sort(function(t,e){return t-e}),d(o.keys,function(t){i.push(o.buckets.get(t))}),i}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(Gk).getItemStyle(Wk);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=Vo(A(t.get("barMaxWidth"),o),o),r=Vo(A(t.get("barMinWidth"),1),o),s=t.get("barWidth");return null!=s?Vo(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 wu(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=[Vo(f[0],d[0]),Vo(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]=Vo(f[c.index],d),f[h.index]=Vo(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(cP)||0;a&&(fP.attr({scale:e.slice(),rotation:i}),fP.updateTransform(),a/=fP.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=Vo(x,e[p.index]);var w=Math.max(m+2*x,0),b=_?0:2*x,S=Qo(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=Jl(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;kh(d.style,h,a,n,e.seriesModel,o,c),fo(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]];var h={horizontal:0,vertical:1};o.rotation=Math.PI/2*h[r];var c={top:-1,bottom:1,right:1,left:-1};o.labelDirection=o.tickDirection=o.nameDirection=c[a],t.get("axisTick.inside")&&(o.tickDirection=-o.tickDirection),T(e.labelInside,t.get("axisLabel.inside"))&&(o.labelDirection=-o.labelDirection);var d=e.rotate;return null==d&&(d=t.get("axisLabel.rotate")),o.labelRotation="top"===a?-d:d,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 _P(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),_P(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=Ah(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=[];_P(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=bP(n).axisPointerLastHighlights||{},a=bP(n).axisPointerLastHighlights={};_P(t,function(t,e){var i=t.axisPointerModel.option;"show"===i.status&&_P(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();SP(n).records||(SP(n).records={}),hm(n,e),(SP(n).records[t]||(SP(n).records[t]={})).handler=i}}function hm(t,e){function i(i,n){t.on(i,function(i){var o=pm(e);MP(SP(t).records,function(t){t&&n(t,i,o.dispatchAction)}),cm(o.pendings,e)})}SP(t).initialized||(SP(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();(SP(i).records||{})[t]&&(SP(i).records[t]=null)}}function mm(){}function vm(t,e,i,n){ym(TP(i).lastProp,n)||(TP(i).lastProp=n,e?Io(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=qM(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:Xl(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),Do([t.dataToCoord(e),(i.labelOffset||0)+(i.labelDirection||1)*(i.labelMargin||0)],n)}function Am(t,e,i,n,o,a){var r=FD.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[kP[e]],i[kP[e]]+i[PP[e]]]}function Em(t,e,i){var n=new yM({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return To(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 hM({z2:zP});a.seriesIndex=e.seriesIndex;var r=new rM({z2:BP,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!==RP.NONE&&(i===RP.SELF?t===e:i===RP.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=Xn(a,null,o,n.layout||"center")).__customPathData=a}else"image"===i?(e=new fi({})).__customImagePath=t.style.image:"text"===i?(e=new rM({})).__customText=t.style.text:e=new(0,zM[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),To(t,{style:{opacity:c}},o,e)}r?t.attr(l):Io(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||(ro(t,f),t.__cusHasEmphStl=!p),s&&po(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(UP),f=c.getModel(XP),p=e.getItemVisual(t,"color"),v=!1)}var s=t.get("renderItem"),l=t.coordinateSystem,u={};l&&(u=l.prepareCustoms?l.prepareCustoms():YP[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(HP).getItemStyle();null!=p&&(r.fill=p);var s=e.getItemVisual(n,"opacity");return null!=s&&(r.opacity=s),mo(r,d,null,{autoColor:p,isRectText:!0}),r.text=d.getShallow("show")?A(t.getFormattedLabel(n,"normal"),_u(e,n)):null,i&&a(r,i),r},styleEmphasis:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(ZP).getItemStyle();return mo(r,f,null,{isRectText:!0},!0),r.text=f.getShallow("show")?D(t.getFormattedLabel(n,"emphasis"),t.getFormattedLabel(n,"normal"),_u(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 Ll(r({axis:l.getBaseAxis()},t),n)},currentSeriesIndices:function(){return i.getCurrentSeriesIndices()},font:function(t){return So(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=Vo(t.get("barWidth"),r),c=Vo(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=Vo(t.categoryGap,o),r=Vo(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=Do([r,-o],d);var f=e.getModel("axisLabel").get("rotate")||0,p=FD.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",Es(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 MN(e,function(e){var r=a[e]=o();MN(t[e],function(t,o){if(hL.isValidType(o)){var a={type:o,visual:t};n&&n(a,e),r[o]=new hL(a),"opacity"===o&&((a=i(a)).type="colorAlpha",r.__hidden.__alphaForOpacity=new hL(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);TN(PN,function(t,e){(!i||!i.include||AN(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:LN})}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[VN]||(a[BN]||(a[BN]=yy),Nr(a,BN,i,e)(t,n))}}function yy(t,e){if(!t.isDisposed()){var i=t.getZr();i[VN]=!0,t.dispatchAction({type:"brushSelect",batch:e}),i[VN]=!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 $N(i,function(t){var i=t.getData();i&&$N(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=Zo(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;$N(["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"]=Bo(a[0]+o,a,[0,100],!0)}})}function By(t){var e={};return tO(["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");tO([["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),Nr(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[fO]||(e[fO]={})}function Xy(t,e){var i=new oc(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=hL.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&&YO[e.type]&&r.baseAxis&&r.valueAxis){var s=XO(a,r.baseAxis.dim),l=XO(a,r.valueAxis.dim);e.coord=YO[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++)YO[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(pE),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 gE(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[mE]=null}function i_(t){return n_(t).length}function n_(t){var e=t[mE];return e||(e=t[mE]=[{}]),e}function o_(t,e,i){(this._brushController=new zf(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 SE(t)}function h_(){if(!TE&&AE){TE=!0;var t=AE.styleSheets;t.length<31?AE.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(sR,t)}function g_(t){return cR(1e4*t)/1e4}function m_(t){return t-vR}function v_(t,e){var i=e?t.textFill:t.fill;return null!=i&&i!==hR}function y_(t,e){var i=e?t.textStroke:t.stroke;return null!=i&&i!==hR}function x_(t,e){e&&__(t,"transform","matrix("+uR.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?hR:o,"none"!==t.getAttribute("clip-path")&&o===hR&&(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",hR);if(y_(e,i)){var a=i?e.textStroke:e.stroke;__(t,"stroke",a="transparent"===a?hR: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",cR(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",hR)}function S_(t){for(var e=[],i=t.data,n=t.len(),o=0;o=gR||!m_(g)&&(d>-pR&&d<0||d>pR)==!!p;var y=g_(s+u*fR(c)),x=g_(l+h*dR(c));m&&(d=p?gR-1e-4:1e-4-gR,v=!0,9===o&&e.push("M",y,x));var _=g_(s+u*fR(c+d)),w=g_(l+h*dR(c+d));e.push("A",g_(u),g_(h),cR(f*mR),+v,+p,_,w);break;case lR.Z:a="Z";break;case lR.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}},tS=Qb([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),eS={getLineStyle:function(t){var e=tS(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]}},iS=Qb([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),nS={getAreaStyle:function(t,e){return iS(this,t,e)}},oS=Math.pow,aS=Math.sqrt,rS=1e-8,sS=1e-4,lS=aS(3),uS=1/3,hS=V(),cS=V(),dS=V(),fS=Math.min,pS=Math.max,gS=Math.sin,mS=Math.cos,vS=2*Math.PI,yS=V(),xS=V(),_S=V(),wS=[],bS=[],SS={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},MS=[],IS=[],TS=[],AS=[],DS=Math.min,CS=Math.max,LS=Math.cos,kS=Math.sin,PS=Math.sqrt,NS=Math.abs,OS="undefined"!=typeof Float32Array,ES=function(t){this._saveData=!t,this._saveData&&(this.data=[]),this._ctx=null};ES.prototype={constructor:ES,_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=NS(1/Xw/t)||0,this._uy=NS(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(SS.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=NS(t-this._xi)>this._ux||NS(e-this._yi)>this._uy||this._len<5;return this.addData(SS.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(SS.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(SS.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(SS.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=LS(o)*i+t,this._yi=kS(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(SS.R,t,e,i,n),this},closePath:function(){this.addData(SS.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?DS(f,t):CS(f,t),c>=0?DS(p,e):CS(p,e));h=f-t,c=p-e,this._dashOffset=-PS(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=tn,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+=PS(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=-PS(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,OS&&(this.data=new Float32Array(t)))},getBoundingRect:function(){MS[0]=MS[1]=TS[0]=TS[1]=Number.MAX_VALUE,IS[0]=IS[1]=AS[0]=AS[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,i=0,n=0,o=0,a=0;al||NS(r-o)>u||c===h-1)&&(t.lineTo(a,r),n=a,o=r);break;case SS.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 SS.Q:t.quadraticCurveTo(s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case SS.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=LS(v)*g+f,i=kS(v)*m+p),n=LS(M)*g+f,o=kS(M)*m+p;break;case SS.R:e=n=s[c],i=o=s[c+1],t.rect(s[c++],s[c++],s[c++],s[c++]);break;case SS.Z:t.closePath(),n=e,o=i}}}},ES.CMD=SS;var RS=2*Math.PI,zS=2*Math.PI,BS=ES.CMD,VS=2*Math.PI,GS=1e-4,FS=[-1,-1,-1],WS=[-1,-1],HS=fb.prototype.getCanvasPattern,ZS=Math.abs,US=new ES(!0);Pn.prototype={constructor:Pn,type:"path",__dirtyPath:!0,strokeContainThreshold:5,subPixelOptimize:!1,brush:function(t,e){var i=this.style,n=this.path||US,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=HS.call(r,t)),u?t.strokeStyle=this._strokeGradient:c&&(t.strokeStyle=HS.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 ES},getBoundingRect:function(){var t=this._rect,e=this.style,i=!t;if(i){var n=this.path;n||(n=this.path=new ES),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)),kn(a,r/s,t,e)))return!0}if(o.hasFill())return Ln(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&&ZS(t[0]-1)>1e-10&&ZS(t[3]-1)>1e-10?Math.sqrt(ZS(t[0]*t[3]-t[2]*t[1])):1}},Pn.extend=function(t){var e=function(e){Pn.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,Pn);for(var i in t)"style"!==i&&"shape"!==i&&(e.prototype[i]=t[i]);return e},u(Pn,di);var XS=ES.CMD,jS=[[],[],[]],YS=Math.sqrt,qS=Math.atan2,KS=function(t,e){var i,n,o,a,r,s,l=t.data,u=XS.M,h=XS.C,c=XS.L,d=XS.R,f=XS.A,p=XS.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([Bn(s[0],f[0],l[0],u[0],d,p,g),Bn(s[1],f[1],l[1],u[1],d,p,g)])}return n},fM=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:Po,Group:tb,Image:fi,Text:rM,Circle:sM,Sector:hM,Ring:cM,Polygon:pM,Polyline:gM,Rect:yM,Line:_M,BezierCurve:bM,Arc:SM,IncrementalDisplayable:Zn,CompoundPath:MM,LinearGradient:TM,RadialGradient:AM,BoundingRect:de}),BM=["textStyle","color"],VM={getTextColor:function(t){var e=this.ecModel;return this.getShallow("color")||(!t&&e?e.get(BM):null)},getFont:function(){return So({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("lineHeight"),this.getShallow("rich"),this.getShallow("truncateText"))}},GM=Qb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]),FM={getItemStyle:function(t,e){var i=GM(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]}},WM=h,HM=Bi();No.prototype={constructor:No,init:null,mergeOption:function(t){n(this.option,t,!0)},get:function(t,e){return null==t?this.option:Oo(this.option,this.parsePath(t),!e&&Eo(this,t))},getShallow:function(t,e){var i=this.option,n=null==i?i:i[t],o=!e&&Eo(this,t);return null==n&&o&&(n=o.getShallow(t)),n},getModel:function(t,e){var i,n=null==t?this.option:Oo(this.option,t=this.parsePath(t));return e=e||(i=Eo(this,t))&&i.getModel(t),new No(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){HM(this).getParent=t},isAnimationEnabled:function(){if(!U_.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},ji(No),Yi(No),WM(No,eS),WM(No,nS),WM(No,VM),WM(No,FM);var ZM=0,UM=1e-4,XM=9007199254740991,jM=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/,YM=(Object.freeze||Object)({linearMap:Bo,parsePercent:Vo,round:Go,asc:Fo,getPrecision:Wo,getPrecisionSafe:Ho,getPixelPrecision:Zo,getPercentWithPrecision:Uo,MAX_SAFE_INTEGER:XM,remRadian:Xo,isRadianAroundZero:jo,parseDate:Yo,quantity:qo,nice:$o,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:Jo,isNumeric:Qo}),qM=L,KM=/([&<>"'])/g,$M={"&":"&","<":"<",">":">",'"':""","'":"'"},JM=["a","b","c","d","e","f","g"],QM=function(t,e){return"{"+t+(null==e?"":e)+"}"},tI=ze,eI=(Object.freeze||Object)({addCommas:ta,toCamelCase:ea,normalizeCssArray:qM,encodeHTML:ia,formatTpl:na,formatTplSimple:oa,getTooltipMarker:aa,formatTime:sa,capitalFirst:la,truncateText:tI,getTextBoundingRect:function(t){return ke(t.text,t.font,t.textAlign,t.textVerticalAlign,t.textPadding,t.textLineHeight,t.rich,t.truncate)},getTextRect:function(t,e,i,n,o,a,r,s){return ke(t,e,i,n,o,s,a,r)}}),iI=d,nI=["left","right","top","bottom","width","height"],oI=[["width","left","right"],["height","top","bottom"]],aI=ua,rI=(v(ua,"vertical"),v(ua,"horizontal"),{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")}}}),sI=Bi(),lI=No.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,i,n){No.call(this,t,e,i,n),this.uid=Ro("ec_cpt_model")},init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i)},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,o=i?ga(t):{};n(t,e.getTheme().get(this.mainType)),n(t,this.getDefaultOption()),i&&pa(t,o,i)},mergeOption:function(t,e){n(this.option,t,!0);var i=this.layoutMode;i&&pa(this.option,t,i)},optionUpdated:function(t,e){},getDefaultOption:function(){var t=sI(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)})}});$i(lI,{registerWhenExtend:!0}),function(t){var e={};t.registerSubTypeDefaulter=function(t,i){t=Ui(t),e[t.main]=i},t.determineSubType=function(i,n){var o=n.type;if(!o){var a=Ui(i).main;t.hasSubTypes(i)&&e[a]&&(o=e[a](n))}return o}}(lI),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")})}}}(lI,function(t){var e=[];return d(lI.getClassesByMainType(t),function(t){e=e.concat(t.prototype.dependencies||[])}),e=f(e,function(t){return Ui(t).main}),"dataset"!==t&&l(e,"dataset")<=0&&e.unshift("dataset"),e}),h(lI,rI);var uI="";"undefined"!=typeof navigator&&(uI=navigator.platform||"");var hI={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],gradientColor:["#f6efa6","#d88273","#bf444c"],textStyle:{fontFamily:uI.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},cI=Bi(),dI={clearColorPalette:function(){cI(this).colorIdx=0,cI(this).colorNameMap={}},getColorFromPalette:function(t,e,i){var n=cI(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?va(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}}},fI={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),xa(o)&&(n.set("x",o),e.firstCategoryDimIndex=0),xa(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),xa(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),xa(a)&&(n.set("radius",a),e.firstCategoryDimIndex=0),xa(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),xa(s)&&null==e.firstCategoryDimIndex&&(n.set(l,s),e.firstCategoryDimIndex=a)})}},pI="original",gI="arrayRows",mI="objectRows",vI="keyedColumns",yI="unknown",xI="typedArray",_I="column",wI="row";_a.seriesDataToSource=function(t){return new _a({data:t,sourceFormat:S(t)?xI:pI,fromDataset:!1})},Yi(_a);var bI=Bi(),SI="\0_ec_inner",MI=No.extend({init:function(t,e,i,n){i=i||{},this.option=null,this._theme=new No(i),this._optionManager=n},setOption:function(t,e){k(!(SI 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)):Ea.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=[];Sa(this),d(t,function(t,o){null!=t&&(lI.hasClass(o)?o&&r.push(o):e[o]=null==e[o]?i(t):n(e[o],t,!0))}),lI.topologicalTravel(r,lI.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=za(i,n,t.exist))});var l=Ra(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=lI.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&&Ba(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(lI.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[SI],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 Va(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}(Va(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){Ba(this,g(this._componentsMap.get("series"),t,e))},restoreData:function(t){var e=this._componentsMap;Ba(this,e.get("series"));var i=[];e.each(function(t,e){i.push(e)}),lI.topologicalTravel(i,lI.getAllClassMainTypes(),function(i,n){d(e.get(i),function(e){("series"!==i||!Na(e,t))&&e.restoreData()})})}});h(MI,dI);var II=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption","getViewOfComponentModel","getViewOfSeriesModel"],TI={};Fa.prototype={constructor:Fa,create:function(t,e){var i=[];d(TI,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()}},Fa.register=function(t,e){TI[t]=e},Fa.get=function(t){return TI[t]};var AI=d,DI=i,CI=f,LI=n,kI=/^(min|max)?(.+)$/;Wa.prototype={constructor:Wa,setOption:function(t,e){t&&d(Di(t.series),function(t){t&&t.data&&S(t.data)&&N(t.data)}),t=DI(t,!0);var i=this._optionBackup,n=Ha.call(this,t,e,!i);this._newBaseOption=n.baseOption,i?(ja(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=CI(e.timelineOptions,DI),this._mediaList=CI(e.mediaList,DI),this._mediaDefault=DI(e.mediaDefault),this._currentMediaIndices=[],DI(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i.length){var n=t.getComponent("timeline");n&&(e=DI(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=yr(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}();UI.dirty=function(){this._dirty=!0,this._onDirty&&this._onDirty(this.context)},UI.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=aa({color:v,type:"subItem",renderMode:n,markerId:d}),g="string"==typeof p?p:p.content,m=(r?g+ia(o.displayName||"-")+": ":"")+ia("ordinal"===c?t+"":"time"===c?e?"":sa("yyyy/MM/dd hh:mm:ss",t):ta(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(fr(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?fr(h,t,c[0]):m?g[0]:g)).content,_=a.seriesIndex+"at"+u,b=aa({color:v,type:"item",renderMode:n,markerId:_});l[_]=v,++u;var S=h.getName(t),M=this.name;Oi(this)||(M=""),M=M?ia(M)+(e?": ":r):"";var I="string"==typeof b?b:b.content;return{html:e?I+M+x:M+I+(S?ia(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=dI.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(YI,ZI),h(YI,dI);var qI=function(){this.group=new tb,this.uid=Ro("viewComponent")};qI.prototype={constructor:qI,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){},filterForExposedEvent:null};var KI=qI.prototype;KI.updateView=KI.updateLayout=KI.updateVisual=function(t,e,i,n){},ji(qI),$i(qI,{registerWhenExtend:!0});var $I=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"}},JI=Bi(),QI=$I();Ar.prototype={type:"chart",init:function(t,e){},render:function(t,e,i,n){},highlight:function(t,e,i,n){Cr(t.getData(),n,"emphasis")},downplay:function(t,e,i,n){Cr(t.getData(),n,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){},incrementalPrepareRender:null,incrementalRender:null,updateTransform:null,filterForExposedEvent:null};var tT=Ar.prototype;tT.updateView=tT.updateLayout=tT.updateVisual=function(t,e,i,n){this.render(t,e,i,n)},ji(Ar),$i(Ar,{registerWhenExtend:!0}),Ar.markUpdateMethod=function(t,e){JI(t).updateMethod=e};var eT={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)}}},iT="\0__throttleOriginMethod",nT="\0__throttleRate",oT="\0__throttleType",aT={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 IM||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}}}},rT={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:""}}}},sT=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=rT.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}}},uT.getPipeline=function(t){return this._pipelineMap.get(t)},uT.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}},uT.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}),jr(e,t,t.dataTask)})},uT.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&&zr(this,n,o,e,i),n.overallReset&&Br(this,n,o,e,i)},this)},uT.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,jr(this,e,o)},uT.performDataProcessorTasks=function(t,e){Rr(this,this._dataProcessorHandlers,t,e,{block:!0})},uT.performVisualTasks=function(t,e,i){Rr(this,this._visualHandlers,t,e,i)},uT.performSeriesTasks=function(t){var e;t.eachSeries(function(t){e|=t.dataTask.perform()}),this.unfinished|=e},uT.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 hT=uT.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},cT=Ur(0);Er.wrapStageHandler=function(t,e){return x(t)&&(t={overallReset:t,seriesType:Yr(t)}),t.uid=Ro("stageHandler"),e&&(t.visualType=e),t};var dT,fT={},pT={};qr(fT,MI),qr(pT,Ga),fT.eachSeriesByType=fT.eachRawSeriesByType=function(t){dT=t},fT.eachComponent=function(t){"series"===t.mainType&&t.subType&&(dT=t.subType)};var gT=["#37A2DA","#32C5E9","#67E0E3","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#E062AE","#E690D1","#e7bcf3","#9d96f5","#8378EA","#96BFFF"],mT={color:gT,colorLayer:[["#37A2DA","#ffd85c","#fd7b5f"],["#37A2DA","#67E0E3","#FFDB5C","#ff9f7f","#E062AE","#9d96f5"],["#37A2DA","#32C5E9","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#e7bcf3","#8378EA","#96BFFF"],gT]},vT=["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53","#eedd78","#73a373","#73b9bc","#7289ab","#91ca8c","#f49f42"],yT={color:vT,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:vT[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:vT},gauge:{title:{textStyle:{color:"#eee"}}},candlestick:{itemStyle:{normal:{color:"#FD1050",color0:"#0CF49B",borderColor:"#FD1050",borderColor0:"#0CF49B"}}}};yT.categoryAxis.splitLine.show=!1,lI.extend({type:"dataset",defaultOption:{seriesLayoutBy:_I,sourceHeader:null,dimensions:null,source:null},optionUpdated:function(){wa(this)}}),qI.extend({type:"dataset"});var xT=Pn.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()}}),_T=/[\s,]+/;$r.prototype.parse=function(t,e){e=e||{};var i=Kr(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),es(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(_T);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=as(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 yM({shape:{x:0,y:0,width:a,height:r}})),{root:n,width:a,height:r,viewBoxRect:l,viewBoxTransform:u}},$r.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=bT[i]){var o=r.call(this,t),a=t.getAttribute("id");a&&(this._defs[a]=o)}}else{var r=wT[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)},$r.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 rM({style:{text:t.textContent,transformText:!0},position:[this._textX||0,this._textY||0]});Qr(e,o),es(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 wT={g:function(t,e){var i=new tb;return Qr(e,i),es(t,i,this._defs),i},rect:function(t,e){var i=new yM;return Qr(e,i),es(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 sM;return Qr(e,i),es(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 _M;return Qr(e,i),es(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 xT;return Qr(e,i),es(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=ts(i));var n=new pM({shape:{points:i||[]}});return Qr(e,n),es(t,n,this._defs),n},polyline:function(t,e){var i=new Pn;Qr(e,i),es(t,i,this._defs);var n=t.getAttribute("points");return n&&(n=ts(n)),new gM({shape:{points:n||[]}})},image:function(t,e){var i=new fi;return Qr(e,i),es(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 Qr(e,r),es(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 Qr(e,r),es(t,r,this._defs),this._textX+=o,this._textY+=a,r},path:function(t,e){var i=Rn(t.getAttribute("d")||"");return Qr(e,i),es(t,i,this._defs),i}},bT={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 TM(e,i,n,o);return Jr(t,a),a},radialgradient:function(t){}},ST={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"},MT=/url\(\s*#(.*?)\)/,IT=/(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g,TT=/([^\s:;]+)\s*:\s*([^:;]+)/g,AT=R(),DT={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,CT[e])(t)}),AT.set(t,n)},retrieveMap:function(t){return AT.get(t)}},CT={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=Kr(t.source)}},LT=k,kT=d,PT=x,NT=w,OT=lI.parseClassType,ET={zrender:"4.0.6"},RT=1e3,zT=1e3,BT=3e3,VT={PROCESSOR:{FILTER:RT,STATISTIC:5e3},VISUAL:{LAYOUT:zT,GLOBAL:2e3,CHART:BT,COMPONENT:4e3,BRUSH:5e3}},GT="__flagInMainProcess",FT="__optionUpdated",WT=/^[a-zA-Z0-9_]+$/;ls.prototype.on=ss("on"),ls.prototype.off=ss("off"),ls.prototype.one=ss("one"),h(ls,fw);var HT=us.prototype;HT._onframe=function(){if(!this._disposed){var t=this._scheduler;if(this[FT]){var e=this[FT].silent;this[GT]=!0,cs(this),ZT.update.call(this),this[GT]=!1,this[FT]=!1,gs.call(this,e),ms.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),fs(this,n),t.performVisualTasks(n),bs(this,this._model,0,"remain"),i-=+new Date-o}while(i>0&&t.unfinished);t.unfinished||this._zr.flush()}}},HT.getDom=function(){return this._dom},HT.getZr=function(){return this._zr},HT.setOption=function(t,e,i){var n;if(NT(e)&&(i=e.lazyUpdate,n=e.silent,e=e.notMerge),this[GT]=!0,!this._model||e){var o=new Wa(this._api),a=this._theme,r=this._model=new MI(null,null,a,o);r.scheduler=this._scheduler,r.init(null,null,a,o)}this._model.setOption(t,qT),i?(this[FT]={silent:n},this[GT]=!1):(cs(this),ZT.update.call(this),this._zr.flush(),this[FT]=!1,this[GT]=!1,gs.call(this,n),ms.call(this,n))},HT.setTheme=function(){console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},HT.getModel=function(){return this._model},HT.getOption=function(){return this._model&&this._model.getOption()},HT.getWidth=function(){return this._zr.getWidth()},HT.getHeight=function(){return this._zr.getHeight()},HT.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},HT.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)},HT.getSvgDataUrl=function(){if(U_.svgSupported){var t=this._zr;return d(t.storage.getDisplayList(),function(t){t.stopAnimation(!0)}),t.painter.pathToDataUrl()}},HT.getDataURL=function(t){var e=(t=t||{}).excludeComponents,i=this._model,n=[],o=this;kT(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 kT(n,function(t){t.group.ignore=!1}),a},HT.getConnectedDataURL=function(t){if(U_.canvasSupported){var e=this.group,n=Math.min,o=Math.max;if(eA[e]){var a=1/0,r=1/0,s=-1/0,l=-1/0,u=[],h=t&&t.pixelRatio||1;d(tA,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 kT(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)}},HT.convertToPixel=v(hs,"convertToPixel"),HT.convertFromPixel=v(hs,"convertFromPixel"),HT.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},HT.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)},HT.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},HT.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var ZT={prepareAndUpdate:function(t){cs(this),ZT.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),fs(this,e),o.update(e,i),xs(e),a.performVisualTasks(e,t),_s(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")}Ss(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)}),xs(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0,dirtyMap:a}),bs(i,e,0,t,a),Ss(e,this._api)}},updateView:function(t){var e=this._model;e&&(Ar.markUpdateMethod(t,"updateView"),xs(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0}),_s(this,this._model,this._api,t),Ss(e,this._api))},updateVisual:function(t){ZT.update.call(this,t)},updateLayout:function(t){ZT.update.call(this,t)}};HT.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[GT]=!0,i&&cs(this),ZT.update.call(this),this[GT]=!1,gs.call(this,n),ms.call(this,n)}},HT.showLoading=function(t,e){if(NT(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),QT[t]){var i=QT[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},HT.hideLoading=function(){this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},HT.makeActionFromEvent=function(t){var e=a({},t);return e.type=jT[t.type],e},HT.dispatchAction=function(t,e){NT(e)||(e={silent:!!e}),XT[t.type]&&this._model&&(this[GT]?this._pendingActions.push(t):(ps.call(this,t,e.silent),e.flush?this._zr.flush(!0):!1!==e.flush&&U_.browser.weChat&&this._throttledZrFlush(),gs.call(this,e.silent),ms.call(this,e.silent)))},HT.appendData=function(t){var e=t.seriesIndex;this.getModel().getSeriesByIndex(e).appendData(t),this._scheduler.unfinished=!0},HT.on=ss("on"),HT.off=ss("off"),HT.one=ss("one");var UT=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];HT._initEvents=function(){kT(UT,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),kT(jT,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},HT.isDisposed=function(){return this._disposed},HT.clear=function(){this.setOption({series:[]},!0)},HT.dispose=function(){if(!this._disposed){this._disposed=!0,Fi(this.getDom(),oA,"");var t=this._api,e=this._model;kT(this._componentsViews,function(i){i.dispose(e,t)}),kT(this._chartsViews,function(i){i.dispose(e,t)}),this._zr.dispose(),delete tA[this.id]}},h(us,fw),Ds.prototype={constructor:Ds,normalizeQuery:function(t){var e={},i={},n={};if(_(t)){var o=OT(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 XT={},jT={},YT=[],qT=[],KT=[],$T=[],JT={},QT={},tA={},eA={},iA=new Date-0,nA=new Date-0,oA="_echarts_instance_",aA=Ls;Bs(2e3,aT),Ns(BI),Os(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(ar)}),Gs("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 yM({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4}),n=new SM({shape:{startAngle:-lT/2,endAngle:-lT/2+.1,r:10},style:{stroke:e.color,lineCap:"round",lineWidth:5},zlevel:e.zlevel,z:10001}),o=new yM({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*lT/2}).start("circularInOut"),n.animateShape(!0).when(1e3,{startAngle:3*lT/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}),Es({type:"highlight",event:"highlight",update:"highlight"},B),Es({type:"downplay",event:"downplay",update:"downplay"},B),Ps("light",mT),Ps("dark",yT);var rA={};Xs.prototype={constructor:Xs,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(js(t,{},n,"_oldKeyGetter",this),js(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={},el(this)},yA._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={},el(this)}},yA.count=function(){return this._count},yA.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},yA.getApproximateExtent=function(t){return t=this.getDimension(t),this._approximateExtent[t]||this.getDataExtent(t)},yA.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},yA.getCalculationInfo=function(t){return this._calculationInfo[t]},yA.setCalculationInfo=function(t,e){lA(t)?a(this._calculationInfo,t):this._calculationInfo[t]=e},yA.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},yA.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},yA.getRawIndex=nl,yA.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},yA.downSample=function(t,e,i,n){for(var o=sl(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($s(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=ol,o},yA.getItemModel=function(t){var e=this.hostModel;return new No(this.getRawDataItem(t),e,e&&e.ecModel)},yA.diff=function(t){var e=this;return new Xs(t?t.getIndices():[],this.getIndices(),function(e){return al(t,e)},function(t){return al(e,t)})},yA.getVisual=function(t){var e=this._visual;return e&&e[t]},yA.setVisual=function(t,e){if(lA(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},yA.setLayout=function(t,e){if(lA(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},yA.getLayout=function(t){return this._layout[t]},yA.getItemLayout=function(t){return this._itemLayouts[t]},yA.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?a(this._itemLayouts[t]||{},e):e},yA.clearItemLayouts=function(){this._itemLayouts.length=0},yA.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],o=n&&n[e];return null!=o||i?o:this.getVisual(e)},yA.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{},o=this.hasItemVisual;if(this._itemVisuals[t]=n,lA(e))for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a],o[a]=!0);else n[e]=i,o[e]=!0},yA.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};var xA=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};yA.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(xA,e)),this._graphicEls[t]=e},yA.getItemGraphicEl=function(t){return this._graphicEls[t]},yA.eachItemGraphicEl=function(t,e){d(this._graphicEls,function(i,n){i&&t&&t.call(e,i,n)})},yA.cloneShallow=function(t){if(!t){var e=f(this.dimensions,this.getDimensionInfo,this);t=new vA(e,this.hostModel)}if(t._storage=this._storage,Qs(t,this),this._indices){var i=this._indices.constructor;t._indices=new i(this._indices)}else t._indices=null;return t.getRawIndex=t._indices?ol:nl,t},yA.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)))})},yA.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],yA.CHANGABLE_METHODS=["filterSelf","selectRange"];var _A=function(t,e){return e=e||{},hl(e.coordDimensions||[],t,{dimsDef:e.dimensionsDefine||t.dimensionsDefine,encodeDef:e.encodeDefine||t.encodeDefine,dimCount:e.dimensionsCount,generateCoord:e.generateCoord,generateCoordCount:e.generateCoordCount})};xl.prototype.parse=function(t){return t},xl.prototype.getSetting=function(t){return this._setting[t]},xl.prototype.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},xl.prototype.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},xl.prototype.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},xl.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1])},xl.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},xl.prototype.getExtent=function(){return this._extent.slice()},xl.prototype.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},xl.prototype.isBlank=function(){return this._isBlank},xl.prototype.setBlank=function(t){this._isBlank=t},xl.prototype.getLabel=null,ji(xl),$i(xl,{registerWhenExtend:!0}),_l.createByAxisModel=function(t){var e=t.option,i=e.data,n=i&&f(i,bl);return new _l({categories:n,needCollect:!n,deduplication:!1!==e.dedplication})};var wA=_l.prototype;wA.getOrdinal=function(t){return wl(this).get(t)},wA.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=wl(this);return null==(e=n.get(t))&&(i?(e=this.categories.length,this.categories[e]=t,n.set(t,e)):e=NaN),e};var bA=xl.prototype,SA=xl.extend({type:"ordinal",init:function(t,e){t&&!y(t)||(t=new _l({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),bA.contain.call(this,t)&&null!=this._ordinalMeta.categories[t]},normalize:function(t){return bA.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(bA.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});SA.create=function(){return new SA};var MA=Go,IA=Go,TA=xl.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]),TA.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=Ml(t)},getTicks:function(){return Al(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=Ho(t)||0:"auto"===i&&(i=this._intervalPrecision),t=IA(t,i,!0),ta(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=Sl(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]=IA(Math.floor(e[0]/o)*o)),t.fixMax||(e[1]=IA(Math.ceil(e[1]/o)*o))}});TA.create=function(){return new TA};var AA="__ec_stack_",DA="undefined"!=typeof Float32Array?Float32Array:Array,CA={seriesType:"bar",plan:$I(),reset:function(t){if(Rl(t)&&zl(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=Ol(Pl([t]),n,t).width;return u>.5||(u=.5),{progress:function(t,e){for(var n,h=new DA(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:Bl(0,o),valueAxisHorizontal:s})}}}}},LA=TA.prototype,kA=Math.ceil,PA=Math.floor,NA=function(t,e,i,n){for(;i>>1;t[o][1]i&&(a=i);var r=EA.length,s=NA(EA,a,0,r),l=EA[Math.min(s,r-1)],u=l[1];"year"===l[0]&&(u*=$o(o/u/t,!0));var h=this.getSetting("useUTC")?0:60*new Date(+n[0]||+n[1]).getTimezoneOffset()*1e3,c=[Math.round(kA((n[0]-h)/u)*u+h),Math.round(PA((n[1]-h)/u)*u+h)];Tl(c,n),this._stepLvl=l,this._interval=u,this._niceExtent=c},parse:function(t){return+Yo(t)}});d(["contain","normalize"],function(t){OA.prototype[t]=function(e){return LA[t].call(this,this.parse(e))}});var EA=[["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]];OA.create=function(t){return new OA({useUTC:t.ecModel.get("useUTC")})};var RA=xl.prototype,zA=TA.prototype,BA=Ho,VA=Go,GA=Math.floor,FA=Math.ceil,WA=Math.pow,HA=Math.log,ZA=xl.extend({type:"log",base:10,$constructor:function(){xl.apply(this,arguments),this._originalScale=new TA},getTicks:function(){var t=this._originalScale,e=this._extent,i=t.getExtent();return f(zA.getTicks.call(this),function(n){var o=Go(WA(this.base,n));return o=n===e[0]&&t.__fixMin?Vl(o,i[0]):o,o=n===e[1]&&t.__fixMax?Vl(o,i[1]):o},this)},getLabel:zA.getLabel,scale:function(t){return t=RA.scale.call(this,t),WA(this.base,t)},setExtent:function(t,e){var i=this.base;t=HA(t)/HA(i),e=HA(e)/HA(i),zA.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=RA.getExtent.call(this);e[0]=WA(t,e[0]),e[1]=WA(t,e[1]);var i=this._originalScale,n=i.getExtent();return i.__fixMin&&(e[0]=Vl(e[0],n[0])),i.__fixMax&&(e[1]=Vl(e[1],n[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=HA(t[0])/HA(e),t[1]=HA(t[1])/HA(e),RA.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=qo(i);for(t/i*n<=.5&&(n*=10);!isNaN(n)&&Math.abs(n)<1&&Math.abs(n)>0;)n*=10;var o=[Go(FA(e[0]/n)*n),Go(GA(e[1]/n)*n)];this._interval=n,this._niceExtent=o}},niceExtent:function(t){zA.niceExtent.call(this,t);var e=this._originalScale;e.__fixMin=t.fixMin,e.__fixMax=t.fixMax}});d(["contain","normalize"],function(t){ZA.prototype[t]=function(e){return e=HA(e)/HA(this.base),RA[t].call(this,e)}}),ZA.create=function(){return new ZA};var UA={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}},XA=Un({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()}}),jA=Un({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()}}),YA=Un({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()}}),qA=Un({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()}}),KA={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}},$A={};d({line:_M,rect:yM,roundRect:yM,square:yM,circle:sM,diamond:jA,pin:YA,arrow:qA,triangle:XA},function(t,e){$A[e]=new t});var JA=Un({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=$A[n];"none"!==e.symbolType&&(o||(o=$A[n="rect"]),KA[n](e.x,e.y,e.width,e.height,o.shape),o.buildPath(t,o.shape,i))}}),QA={isDimensionStacked:pl,enableDataStack:fl,getStackedDimension:gl},tD=(Object.freeze||Object)({createList:function(t){return ml(t.getSource(),t)},getLayoutRect:ca,dataStack:QA,createScale:function(t,e){var i=e;No.isInstance(e)||h(i=new No(e),UA);var n=Hl(i);return n.setExtent(t[0],t[1]),Wl(n,i),n},mixinAxisModelCommonMethods:function(t){h(t,UA)},completeDimensions:hl,createDimensions:_A,createSymbol:Jl}),eD=1e-8;eu.prototype={constructor:eu,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 eu(e.name,o,e.cp);return a.properties=e,a})},nD=Bi(),oD=[0,1],aD=function(t,e,i){this.dim=t,this.scale=e,this._extent=i||[0,0],this.inverse=!1,this.onBand=!1};aD.prototype={constructor:aD,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 Zo(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&&yu(i=i.slice(),n.count()),Bo(t,oD,i,e)},coordToData:function(t,e){var i=this._extent,n=this.scale;this.onBand&&"ordinal"===n.type&&yu(i=i.slice(),n.count());var o=Bo(t,i,oD,e);return this.scale.scale(o)},pointToData:function(t,e){},getTicksCoords:function(t){var e=(t=t||{}).tickModel||this.getTickModel(),i=au(this,e),n=f(i.ticks,function(t){return{coord:this.dataToCoord(t),tickValue:t}},this),o=e.get("alignWithLabel");return xu(this,n,i.tickCategoryInterval,o,t.clamp),n},getViewLabels:function(){return ou(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 pu(this)}};var rD=iD,sD={};d(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],function(t){sD[t]=aw[t]});var lD={};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){lD[t]=zM[t]}),YI.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return ml(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 uD=wu.prototype,hD=wu.getSymbolSize=function(t,e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array?i.slice():[+i,+i]};uD._createSymbol=function(t,e,i,n,o){this.removeAll();var a=Jl(t,-1,-1,2,2,e.getItemVisual(i,"color"),o);a.attr({z2:100,culling:!0,scale:bu(n)}),a.drift=Su,this._symbolType=t,this.add(a)},uD.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(t)},uD.getSymbolPath=function(){return this.childAt(0)},uD.getScale=function(){return this.childAt(0).scale},uD.highlight=function(){this.childAt(0).trigger("emphasis")},uD.downplay=function(){this.childAt(0).trigger("normal")},uD.setZ=function(t,e){var i=this.childAt(0);i.zlevel=t,i.z=e},uD.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":"pointer"},uD.updateData=function(t,e,i){this.silent=!1;var n=t.getItemVisual(e,"symbol")||"circle",o=t.hostModel,a=hD(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,Io(l,{scale:bu(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),To(l,h,o,e)}this._seriesModel=o};var cD=["itemStyle"],dD=["emphasis","itemStyle"],fD=["label"],pD=["emphasis","label"];uD._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(cD).getItemStyle(["color"]),u=m.getModel(dD).getItemStyle(),h=m.getShallow("symbolRotate"),c=m.getShallow("symbolOffset"),d=m.getModel(fD),f=m.getModel(pD),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",[Vo(c[0],i[0]),Vo(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;go(v,u,d,f,{labelFetcher:r,labelDataIndex:e,defaultText:function(e,i){return w?t.getName(e):_u(t,e)},isRectText:!0,autoColor:s}),o.off("mouseover").off("mouseout").off("emphasis").off("normal"),o.hoverStyle=u,fo(o),o.__symbolOriginalScale=bu(i),p&&r.isAnimationEnabled()&&o.on("mouseover",Mu).on("mouseout",Iu).on("emphasis",Tu).on("normal",Au)},uD.fadeOut=function(t,e){var i=this.childAt(0);this.silent=i.silent=!0,!(e&&e.keepLabel)&&(i.style.text=null),Io(i,{style:{opacity:0},scale:[0,0]},this._seriesModel,this.dataIndex,t)},u(wu,tb);var gD=Du.prototype;gD.updateData=function(t,e){e=Lu(e);var i=this.group,n=t.hostModel,o=this._data,a=this._symbolCtor,r=ku(t);o||i.removeAll(),t.diff(o).add(function(n){var o=t.getItemLayout(n);if(Cu(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);Cu(t,h,s,e)?(u?(u.updateData(t,s,r),Io(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},gD.isPersistent=function(){return!0},gD.updateLayout=function(){var t=this._data;t&&t.eachItemGraphicEl(function(e,i){var n=t.getItemLayout(i);e.attr("position",n)})},gD.incrementalPrepareUpdate=function(t){this._seriesScope=ku(t),this._data=null,this.group.removeAll()},gD.incrementalUpdate=function(t,e,i){i=Lu(i);for(var n=t.start;n0&&Ru(i[o-1]);o--);for(;n0&&Ru(i[a-1]);a--);for(;o=0){var r=o.getItemGraphicEl(a);if(!r){var s=o.getItemLayout(a);if(!s)return;(r=new wu(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 Ar.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 Ar.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new MD({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 ID({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=mD(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=Yu(u.current,i,o),c=Yu(u.stackedOnCurrent,i,o),d=Yu(u.next,i,o),f=Yu(u.stackedOnNext,i,o)),r.shape.__points=u.current,r.shape.points=h,Io(r,{shape:{points:d}},l),s&&(s.setShape({points:h,stackedOnPoints:c}),Io(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(kD,aD);var PD={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)"]}}},ND={};ND.categoryAxis=n({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},PD),ND.valueAxis=n({boundaryGap:[0,0],splitNumber:5},PD),ND.timeAxis=r({scale:!0,min:"dataMin",max:"dataMax"},ND.valueAxis),ND.logAxis=r({scale:!0,logBase:10},ND.valueAxis);var OD=["value","category","time","log"],ED=function(t,e,i,a){d(OD,function(r){e.extend({type:t+"Axis."+r,mergeDefaultAndTheme:function(e,o){var a=this.layoutMode,s=a?ga(e):{};n(e,o.getTheme().get(r+"Axis")),n(e,this.getDefaultOption()),e.type=i(t,e),a&&pa(e,s,a)},optionUpdated:function(){"category"===this.option.type&&(this.__ordinalMeta=_l.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([{},ND[r+"Axis"],a],!0)})}),lI.registerSubTypeDefaulter(t+"Axis",v(i,t))},RD=lI.extend({type:"cartesian2dAxis",axis:null,init:function(){RD.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){RD.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){RD.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});n(RD.prototype,UA);var zD={offset:0};ED("x",RD,th,zD),ED("y",RD,th,zD),lI.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 BD=ih.prototype;BD.type="grid",BD.axisPointerEnabled=!0,BD.getRect=function(){return this._rect},BD.update=function(t,e){var i=this._axesMap;this._updateScale(t,this.model),d(i.x,function(t){Wl(t.scale,t.model)}),d(i.y,function(t){Wl(t.scale,t.model)});var n={};d(i.x,function(t){nh(i,"y",t,n)}),d(i.y,function(t){nh(i,"x",t,n)}),this.resize(this.model,e)},BD.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]),ah(t,e?o.x:o.y)})}var o=ca(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=jl(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())},BD.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]}},BD.getAxes=function(){return this._axesList.slice()},BD.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,ph(o)?t.labelOffset+r*l:0],d=e.get("nameRotate");null!=d&&(d=d*GD/180);var f;ph(o)?n=HD(t.rotation,null!=d?d:t.rotation,r):(n=uh(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?tI(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 rM({anid:"name",__fullText:i,__truncatedText:y,position:c,rotation:n.rotation,silent:hh(e),z2:1,tooltip:x&&x.show?a({content:i,formatter:function(){return i},formatterParams:w},x):null});mo(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=lh(e),b.eventData.targetType="axisName",b.eventData.name=i),this._dumbGroup.add(b),b.updateTransform(),this.group.add(b),b.decomposeTransform()}}},HD=FD.innerTextLayout=function(t,e,i){var n,o,a=Xo(e-t);return jo(a)?(o=i>0?"top":"bottom",n="center"):jo(a-GD)?(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}},ZD=d,UD=v,XD=Ws({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,i,n){this.axisPointerClass&&Sh(t),XD.superApply(this,"render",arguments),Dh(this,t,0,i,0,!0)},updateAxisPointer:function(t,e,i,n,o){Dh(this,t,0,i,0,!1)},remove:function(t,e){var i=this._axisPointer;i&&i.remove(e),XD.superApply(this,"remove",arguments)},dispose:function(t,e){Ch(this,e),XD.superApply(this,"dispose",arguments)}}),jD=[];XD.registerAxisPointerClass=function(t,e){jD[t]=e},XD.getAxisPointerClass=function(t){return t&&jD[t]};var YD=["axisLine","axisTickLabel","axisName"],qD=["splitArea","splitLine"],KD=XD.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=Lh(a,t),s=new FD(t,r);d(YD,s.add,s),this._axisGroup.add(s.getGroup()),d(qD,function(e){t.get(e+".show")&&this["_"+e](t,a)},this),Lo(o,this._axisGroup,t),KD.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=DD[o]:"function"==typeof o&&(c=o),c&&t.setData(n.downSample(n.mapDimension(s.dim),1/h,c,CD))}}}}}("line"));var $D=YI.extend({type:"series.__base_bar__",getInitialData:function(t,e){return ml(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:{}}});$D.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 JD=Qb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),QD={getBarItemStyle:function(t){var e=JD(this,t);if(this.getBorderLineDash){var i=this.getBorderLineDash();i&&(e.lineDash=i)}return e}},tC=["itemStyle","barBorderWidth"];a(No.prototype,QD),Zs({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=iC[s.type](a,e,i),l=eC[s.type](a,e,i,r,n,u);a.setItemGraphicEl(e,l),o.add(l),Eh(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=iC[s.type](a,e,h);l?Io(l,{shape:c},u,e):l=eC[s.type](a,e,h,c,n,u,!0),a.setItemGraphicEl(e,l),o.add(l),Eh(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&&Nh(t,u,e):e&&Oh(t,u,e)}).execute(),this._data=a},_renderLarge:function(t,e,i){this._clear(),zh(t,this.group)},_incrementalRenderLarge:function(t,e){zh(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?Oh(e.dataIndex,t,e):Nh(e.dataIndex,t,e)}):e.removeAll(),this._data=null}});var eC={cartesian2d:function(t,e,i,n,o,r,s){var l=new yM({shape:a({},n)});if(r){var u=l.shape,h=o?"height":"width",c={};u[h]=0,c[h]=n[h],zM[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}}},nC=Pn.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 hM({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:o}});return To(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 lC=function(t,e){d(e,function(e){e.update="updateView",Es(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}})})},uC=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)}})}}},hC=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")&&Hh(s,o,a,e,i,n)},cC=2*Math.PI,dC=Math.PI/180,fC=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}}),gC=Uh.prototype;gC.isPersistent=function(){return!this._incremental},gC.updateData=function(t){this.group.removeAll();var e=new pC({rectHover:!0,cursor:"default"});e.setShape({points:t.getLayout("symbolPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},gC.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)})}},gC.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>2e6?(this._incremental||(this._incremental=new Zn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},gC.incrementalUpdate=function(t,e){var i;this._incremental?(i=new pC,this._incremental.addDisplayable(i,!0)):((i=new pC({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)},gC._setCommon=function(t,e,i){var n=e.hostModel,o=e.getVisual("symbolSize");t.setShape("size",o instanceof Array?o:[o,o]),t.symbolProxy=Jl(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))}))},gC.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},gC._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()},Zs({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=AD().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 Uh:new Du,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(){}}),Bs(TD("scatter","circle")),zs(AD("scatter")),u(Xh,aD),jh.prototype.getIndicatorAxes=function(){return this._indicatorAxes},jh.prototype.dataToPoint=function(t,e){var i=this._indicatorAxes[e];return this.coordToPoint(i.dataToCoord(t),e)},jh.prototype.coordToPoint=function(t,e){var i=this._indicatorAxes[e].angle;return[this.cx+t*Math.cos(i),this.cy-t*Math.sin(i)]},jh.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(Go(d-f*u),Go(d+(a-f)*u)),r.setInterval(u)}})},jh.dimensions=[],jh.create=function(t,e){var i=[];return t.eachComponent("radar",function(n){var o=new jh(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},Fa.register("radar",jh);var mC=ND.valueAxis,vC=(Fs({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 No(f,null,this.ecModel),UA);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"}},mC.axisLine),axisLabel:Yh(mC.axisLabel,!1),axisTick:Yh(mC.axisTick,!1),splitLine:Yh(mC.splitLine,!0),splitArea:Yh(mC.splitArea,!0),indicator:[]}}),["axisLine","axisTickLabel","axisName"]);Ws({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 FD(t.model,{position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})}),function(t){d(vC,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 ia(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}});Zs({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=qh(t.getItemVisual(e,"symbolSize")),a=Jl(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"+ia(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)"}}}}),aC);var EC="\0_ec_interaction_mutex";Es({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},function(){}),h(oc,fw);var RC={axisPointer:1,tooltip:1,brush:1};xc.prototype={constructor:xc,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):Io(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 MM({shape:{paths:[]}});i.add(n);var o,s=(C=t.getRegionModel(e.name)||t).getModel(f),u=C.getModel(p),c=mc(s),y=mc(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 pM({shape:{points:t.exterior}}));for(var e=0;e<(t.interiors?t.interiors.length:0);e++)n.shape.paths.push(new pM({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 rM({position:e.center.slice(),scale:[1/h[0],1/h[1]],z2:10,silent:!0});go(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),fo(i,y,{hoverSilentOnTouch:!!t.get("selectedMode")}),l.add(i)}),this._updateController(t,e,i),vc(this,t,l,i,n),yc(t,l)},remove:function(){this._regionsGroup.removeAll(),this._backgroundGroup.removeAll(),this._controller.dispose(),this._mapName&&OC.removeGraphic(this._mapName,this.uid),this._mapName=null,this._controllerHost={}},_updateBackground:function(t){var e=t.map;this._mapName!==e&&d(OC.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,fc(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,pc(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)&&!gc(e,i,t)})}};var zC="__seriesMapHighDown",BC="__seriesMapCallKey";Zs({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 xc(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 sM({style:{fill:t.getData().getVisual("color")},shape:{cx:s[0]+9*l,cy:s[1],r:3},silent:!0,z2:8+(l?0:NM+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[zC],w=Math.random();if(!_){_=m[zC]={};var b=v(_c,!0),S=v(_c,!1);m.on("mouseover",b).on("mouseout",S).on("emphasis",b).on("normal",S)}m[BC]=w,a(_,{recordVersion:w,circle:u,labelModel:p,hoverLabelModel:g,emphasisText:x,normalText:y}),wc(_,!1)}o.add(u)}}})}}),Es({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=bc(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 VC=Q;h(Sc,Tw),Mc.prototype={constructor:Mc,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?VC(i,t,n):G(i,t)},pointToData:function(t){var e=this.invTransform;return e?VC([],t,e):[t[0],t[1]]},convertToPixel:v(Ic,"dataToPoint"),convertFromPixel:v(Ic,"pointToData"),containPoint:function(t){return this.getViewRectAfterRoam().contain(t[0],t[1])}},h(Mc,Tw),Tc.prototype={constructor:Tc,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)}},Vc.prototype={constructor:Vc,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 ia(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}}),Zs({type:"tree",init:function(t,e){this._oldTree,this._mainGroup=new tb,this._controller=new oc(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){td(o,e)&&id(o,e,null,r,t,u)}).update(function(e,i){var n=l.getItemGraphicEl(i);td(o,e)?id(o,e,n,r,t,u):n&&nd(l,i,n,r,t,u)}).remove(function(e){var i=l.getItemGraphicEl(e);i&&nd(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=[];fn(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 Mc;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)&&!gc(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){fc(o,e.dx,e.dy),i.dispatchAction({seriesId:t.id,type:"treeRoam",dx:e.dx,dy:e.dy})},this).on("zoom",function(e){pc(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}}),Es({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})}),Es({type:"treeRoam",event:"treeRoam",update:"none"},function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},function(e){var i=bc(e.coordinateSystem,t);e.setCenter&&e.setCenter(i.center),e.setZoom&&e.setZoom(i.zoom)})});Bs(TD("tree","circle")),zs(function(t,e){t.eachSeriesByType("tree",function(t){sd(t,e)})}),YI.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};dd(i);var n=t.levels||[];n=t.levels=fd(n,e);var o={};return o.levels=n,Vc.createTree(i,this,o).data},optionUpdated:function(){this.resetViewRoot()},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=ta(y(i)?i[0]:i);return ia(e.getName(t)+": "+n)},getDataParams:function(t){var e=YI.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return e.treePathInfo=cd(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 UC=5;pd.prototype={constructor:pd,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),da(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=ha(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 pM({shape:{points:gd(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),md(y,t,p),a+=g+8}},remove:function(){this.group.removeAll()}};var XC=m,jC=tb,YC=yM,qC=d,KC=["label"],$C=["emphasis","label"],JC=["upperLabel"],QC=["emphasis","upperLabel"],tL=10,eL=1,iL=2,nL=Qb([["fill","color"],["stroke","strokeColor"],["lineWidth","strokeWidth"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),oL=function(t){var e=nL(t);return e.stroke=e.fill=e.lineWidth=null,e};Zs({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=ld(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 jC,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,qC(t,function(t,e){!t.isRemoved()&&s(e,e)})):new Xs(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(yd,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&&qC(t,function(t,i){var n=e[i];qC(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(){qC(c,function(t){qC(t,function(t){t.parent&&t.parent.remove(t)})}),qC(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=vd();qC(e.willDeleteEls,function(t,e){qC(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)}})}),qC(this._storage,function(t,i){qC(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(XC(function(){this._state="ready",e.renderFinally()},this)).start()}},_resetController:function(t){var e=this._controller;e||((e=this._controller=new oc(t.getZr())).enable(this.seriesModel.get("roam")),e.on("pan",XC(this._onPan,this)),e.on("zoom",XC(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 pd(this.group))).render(t,e,i.node,XC(function(e){"animating"!==this._state&&(hd(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 aL=["treemapZoomToNode","treemapRender","treemapMove"],rL=0;rL=0&&t.call(e,i[o],o)},TL.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)},TL.breadthFirstTraverse=function(t,e,i,n){if(Jd.isInstance(e)||(e=this._nodesMap[$d(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(Jd,AL("hostGraph","data")),h(Qd,AL("hostGraph","edgeData")),IL.Node=Jd,IL.Edge=Qd,Yi(Jd),Yi(Qd);var DL=function(t,e,i,n,o){for(var a=new IL(n),r=0;r "+f)),h++)}var p,g=i.get("coordinateSystem");if("cartesian2d"===g||"polar"===g)p=ml(t,i);else{var m=Fa.get(g),v=m&&"view"!==m.type?m.dimensions||[]:[];l(v,"value")<0&&v.concat(["value"]);var y=_A(t,{coordDimensions:v});(p=new vA(y,i)).initData(t)}var x=new vA(["value"],i);return x.initData(u,s),o&&o(p,x),kc({mainData:p,struct:a,structAttr:"graph",datas:{node:p,edge:x},datasAttr:{node:"data",edge:"edgeData"}}),a.update(),a},CL=Hs({type:"series.graph",init:function(t){CL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this._categoriesData},this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeOption:function(t){CL.superApply(this,"mergeOption",arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeDefaultAndTheme:function(t){CL.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 DL(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 No({label:a.option},a.parentModel,e),s=o.getModel("emphasis.edgeLabel"),l=new No({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=ia(l.join(" > ")),o.value&&(l+=" : "+ia(o.value)),l}return CL.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 vA(["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 CL.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}}}}),LL=_M.prototype,kL=bM.prototype,PL=Un({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){(tf(e)?LL:kL).buildPath(t,e)},pointAt:function(t){return tf(this.shape)?LL.pointAt.call(this,t):kL.pointAt.call(this,t)},tangentAt:function(t){var e=this.shape,i=tf(e)?[e.x2-e.x1,e.y2-e.y1]:kL.tangentAt.call(this,t);return q(i,i)}}),NL=["fromSymbol","toSymbol"],OL=rf.prototype;OL.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]})}}}},OL._createLine=function(t,e,i){var n=t.hostModel,o=of(t.getItemLayout(e));o.shape.percent=0,To(o,{shape:{percent:1}},n,e),this.add(o);var a=new rM({name:"label",lineLabelOriginalOpacity:1});this.add(a),d(NL,function(i){var n=nf(i,t,e);this.add(n),this[ef(i)]=t.getItemVisual(e,i)},this),this._updateCommonStl(t,e,i)},OL.updateData=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=t.getItemLayout(e),r={shape:{}};af(r.shape,a),Io(o,r,n,e),d(NL,function(i){var n=t.getItemVisual(e,i),o=ef(i);if(this[o]!==n){this.remove(this.childOfName(i));var a=nf(i,t,e);this.add(a)}this[o]=n},this),this._updateCommonStl(t,e,i)},OL._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(NL,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)?Go(x):x}var _=m?g:null,w=v?A(n.getFormattedLabel(e,"emphasis",t.dataType),g):null,b=y.style;null==_&&null==w||(mo(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,fo(this)},OL.highlight=function(){this.trigger("emphasis")},OL.downplay=function(){this.trigger("normal")},OL.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},OL.setLinePoints=function(t){var e=this.childOfName("line");af(e.shape,t),e.dirty()},u(rf,tb);var EL=sf.prototype;EL.isPersistent=function(){return!0},EL.updateData=function(t){var e=this,i=e.group,n=e._lineData;e._lineData=t,n||i.removeAll();var o=hf(t);t.diff(n).add(function(i){lf(e,t,i,o)}).update(function(i,a){uf(e,n,t,a,i,o)}).remove(function(t){i.remove(n.getItemGraphicEl(t))}).execute()},EL.updateLayout=function(){var t=this._lineData;t&&t.eachItemGraphicEl(function(e,i){e.updateLayout(t,i)},this)},EL.incrementalPrepareUpdate=function(t){this._seriesScope=hf(t),this._lineData=null,this.group.removeAll()},EL.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)}}),YL=2*Math.PI,qL=(Ar.extend({type:"gauge",render:function(t,e,i){this.group.removeAll();var n=t.get("axisLine.lineStyle.color"),o=Sf(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)%YL,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 _M({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 jL({shape:{angle:a}});To(i,{shape:{angle:Bo(d.get(f,e),h,c,!0)}},t),l.add(i),d.setItemGraphicEl(e,i)}).update(function(e,i){var n=u.getItemGraphicEl(i);Io(n,{shape:{angle:Bo(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:Vo(a.get("width"),o.r),r:Vo(a.get("length"),o.r)}),t.useStyle(i.getModel("itemStyle").getItemStyle()),"auto"===t.style.fill&&t.setStyle("fill",n(Bo(d.get(f,e),h,[0,1],!0))),fo(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+Vo(l[0],o.r),h=o.cy+Vo(l[1],o.r),c=+t.get("min"),d=+t.get("max"),f=n(Bo(t.getData().get(r,0),[c,d],[0,1],!0));this.group.add(new rM({silent:!0,style:mo({},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+Vo(l[0],o.r),h=o.cy+Vo(l[1],o.r),c=Vo(a.get("width"),o.r),d=Vo(a.get("height"),o.r),f=t.getData(),p=f.get(f.mapDimension("value"),0),g=n(Bo(p,[r,s],[0,1],!0));this.group.add(new rM({silent:!0,style:mo({},a,{x:u,y:h,text:Mf(p,a.get("formatter")),textWidth:isNaN(c)?null:c,textHeight:isNaN(d)?null:d,textAlign:"center",textVerticalAlign:"middle"},{autoColor:g,forceRich:!0})}))}}}),Hs({type:"series.funnel",init:function(t){qL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this._defaultLabelLine(t)},getInitialData:function(t,e){return oC(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=qL.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}}}})),KL=If.prototype,$L=["itemStyle","opacity"];KL.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($L);l=null==l?1:l,n.useStyle({}),i?(n.setShape({points:s.points}),n.setStyle({opacity:0}),To(n,{style:{opacity:l}},o,e)):Io(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),fo(this)},KL._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");Io(i,{shape:{points:r.linePoints||r.linePoints}},o,e),Io(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");go(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(If,tb);Ar.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 If(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(){}});Bs(uC("funnel")),zs(function(t,e,i){t.eachSeriesByType("funnel",function(t){var i=t.getData(),n=i.mapDimension("value"),o=t.get("sort"),a=Tf(t,e),r=Af(i,o),s=[Vo(t.get("minSize"),a.width),Vo(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=Bo(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},tk=d,ek=Math.min,ik=Math.max,nk=Math.floor,ok=Math.ceil,ak=Go,rk=Math.PI;Nf.prototype={type:"parallel",constructor:Nf,_init:function(t,e,i){var n=t.dimensions,o=t.parallelAxisIndex;tk(n,function(t,i){var n=o[i],a=e.getComponent("parallelAxis",n),r=this._axesMap.set(t,new JL(t,Hl(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();tk(this.dimensions,function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(n,n.mapDimension(t)),Wl(e.scale,e.model)},this)}},this)},resize:function(t,e){this._rect=ca(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=Of(e.get("axisExpandWidth"),l),c=Of(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=Of(f[1]-f[0],l),f[1]=f[0]+t):(t=Of(h*(c-1),l),(f=[h*(e.get("axisExpandCenter")||nk(u/2))-t/2])[1]=f[0]+t);var p=(s-t)/(u-c);p<3&&(p=0);var g=[nk(ak(f[0]/h,1))+1,ok(ak(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])}),tk(i,function(e,i){var a=(n.axisExpandable?Rf:Ef)(i,n),r={horizontal:{x:a.position,y:n.axisLength},vertical:{x:0,y:a.position}},s={horizontal:rk/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=[ik(0,a[1]*s/o-o/2)])[1]=ek(a[1],n[0]+o),n[0]=n[1]-o}return{axisExpandWindow:n,behavior:l}}},Fa.register("parallel",{create:function(t,e){var i=[];return t.eachComponent("parallel",function(n,o){var a=new Nf(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 sk=lI.extend({type:"baseParallelAxis",axis:null,activeIntervals:[],getAreaSelectStyle:function(){return Qb([["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--)Fo(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&&Ip(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})}}};Ns(function(t){Cf(t),Lf(t)}),YI.extend({type:"series.parallel",dependencies:["parallel"],visualColorAccessPath:"lineStyle.color",getInitialData:function(t,e){var i=this.getSource();return Tp(i,this),ml(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 Dk=.3,Ck=(Ar.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=kp(t);if(a.diff(r).add(function(t){Pp(Lp(a,o,t,l,s),a,t,u)}).update(function(e,i){var o=r.getItemGraphicEl(i),h=Cp(a,e,l,s);a.setItemGraphicEl(e,o),Io(o,{shape:{points:h}},n&&!1===n.animation?null:t,e),Pp(o,a,e,u)}).remove(function(t){var e=r.getItemGraphicEl(t);o.remove(e)}).execute(),!this._initialized){this._initialized=!0;var h=Dp(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=kp(e),s=t.start;sn&&(n=e)}),d(e,function(e){var o=new hL({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 Ok={_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 oC(this,{coordDimensions:[{name:h,type:qs(p),ordinalMeta:i,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:c,type:qs(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(YI.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}}),Ok,!0);var Ek=["itemStyle"],Rk=["emphasis","itemStyle"],zk=(Ar.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}),Pn.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?jk:Yk)}function n(t,e){return e.get(t>0?Uk:Xk)}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)})}}}}},Kk="undefined"!=typeof Float32Array?Float32Array:Array,$k={seriesType:"candlestick",plan:$I(),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 Kk(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]=Jn(a[o]+n/2,1,!1),r[o]=Jn(r[o]-n/2,1,!0),i?t.push(a,r):t.push(r,a)}function f(t){return t[o]=Jn(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)})}}}}};Ns(function(t){t&&y(t.series)&&d(t.series,function(t){w(t)&&"k"===t.type&&(t.type="candlestick")})}),Bs(qk),zs($k),YI.extend({type:"series.effectScatter",dependencies:["grid","polar"],getInitialData:function(t,e){return ml(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=Jl(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}}}),iP=xg.prototype;iP.createLine=function(t,e,i){return new rf(t,e,i)},iP._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=Jl(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))},iP._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}},iP.getLineLength=function(t){return uw(t.__p1,t.__cp1)+uw(t.__cp1,t.__p2)},iP.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]},iP.updateData=function(t,e,i){this.childAt(0).updateData(t,e,i),this._updateEffectSymbol(t,e)},iP.updateSymbolPosition=function(t){var e=t.__p1,i=t.__p2,n=t.__cp1,o=t.__t,a=t.position,r=sn,s=ln;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},iP.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 nP=_g.prototype;nP._createPolyline=function(t,e,i){var n=t.getItemLayout(e),o=new gM({shape:{points:n}});this.add(o),this._updateCommonStl(t,e,i)},nP.updateData=function(t,e,i){var n=t.hostModel;Io(this.childAt(0),{shape:{points:t.getItemLayout(e)}},n,e),this._updateCommonStl(t,e,i)},nP._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,fo(this)},nP.updateLayout=function(t,e){this.childAt(0).setShape("points",t.getItemLayout(e))},u(_g,tb);var oP=wg.prototype;oP.createLine=function(t,e,i){return new _g(t,e,i)},oP.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 aP=Un({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(_n(l,u,(l+c)/2-(u-d)*o,(u+d)/2-(c-l)*o,c,d))return a}else if(yn(l,u,c,d))return a;a++}return-1}}),rP=bg.prototype;rP.isPersistent=function(){return!this._incremental},rP.updateData=function(t){this.group.removeAll();var e=new aP({rectHover:!0,cursor:"default"});e.setShape({segs:t.getLayout("linesPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},rP.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>5e5?(this._incremental||(this._incremental=new Zn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},rP.incrementalUpdate=function(t,e){var i=new aP;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))},rP.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},rP._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)}))},rP._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()};var sP={seriesType:"lines",plan:$I(),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}},Zs({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}},Fa.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 gP=["axisLine","axisTickLabel","axisName"],mP=XD.extend({type:"singleAxis",axisPointerClass:"SingleAxisPointer",render:function(t,e,i,n){var o=this.group;o.removeAll();var a=Jg(t),r=new FD(t,a);d(gP,r.add,r),o.add(r.getGroup()),t.get("splitLine.show")&&this._splitLine(t),mP.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"),IP.superApply(this._model,"remove",arguments)},dispose:function(t,e){gm("axisPointer",e),IP.superApply(this._model,"dispose",arguments)}}),TP=Bi(),AP=i,DP=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=Mh(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=TP(t).pointerEl=new zM[o.type](AP(e.pointer));t.add(a)}},createLabelEl:function(t,e,i,n){if(e.label){var o=TP(t).labelEl=new yM(AP(e.label));t.add(o),xm(o,n)}},updatePointerEl:function(t,e,i){var n=TP(t).pointerEl;n&&(n.setStyle(e.pointer.style),i(n,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,i,n){var o=TP(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=Po(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){mw(t.event)},onmousedown:DP(this._onHandleDragMove,this,0,0),drift:DP(this._onHandleDragMove,this),ondragend:DP(this._onHandleDragEnd,this)}),i.add(n)),wm(n,e,!1);var s=["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"];n.setStyle(o.getItemStyle(null,s));var l=o.get("size");y(l)||(l=[l,l]),n.attr("scale",[l[0]/2,l[1]/2]),Nr(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)),TP(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,ji(mm);var CP=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=LP[s](a,u,l,h);c.style=h,t.graphicKey=c.type,t.pointer=c}Am(e,t,Lh(r.model,i),i,n,o)},getHandleTransform:function(t,e,i){var n=Lh(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];var d=[{verticalAlign:"middle"},{align:"center"}];return{position:u,rotation:t.rotation,cursorPoint:c,tooltipOption:d[l]}}}),LP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Pm(t));return Kn({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))}}};XD.registerAxisPointerClass("CartesianAxisPointer",CP),Ns(function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!y(e)&&(t.axisPointer.link=[e])}}),Os(VT.PROCESSOR.STATISTIC,function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=vh(t,e)}),Es({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=xP({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:wP(em,f),showTooltip:wP(im,p)};_P(s.coordSysMap,function(t,e){var i=l||t.containPoint(o);_P(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 _P(h,function(t,e){var i=t.linkGroup;i&&!f[e]&&_P(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}})}),_P(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 kP=["x","y"],PP=["width","height"],NP=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=OP[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"}}}}),OP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Nm(t));return Kn({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))}}};XD.registerAxisPointerClass("SingleAxisPointer",NP),Ws({type:"single"});var EP=YI.extend({type:"series.themeRiver",dependencies:["singleAxis"],nameMap:null,init:function(t){EP.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()}},fixData:function(t){var e=t.length,i=[];Zi(t,function(t){return t[2]}).buckets.each(function(t,e){i.push({name:e,dataList:t})});for(var 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)},VP._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);Ar.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 Xs(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 GP="sunburstRootToNode";Es({type:GP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=ld(t,[GP],e);if(n){var o=e.getViewRoot();o&&(t.direction=hd(o,n.node)?"rollUp":"drillDown"),e.resetViewRoot(n.node)}})});var FP="sunburstHighlight";Es({type:FP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=ld(t,[FP],e);n&&(t.highlight=n.node)})});Es({type:"sunburstUnhighlight",update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){t.unhighlight=!0})});var WP=Math.PI/180;Bs(v(uC,"sunburst")),zs(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=Vo(e[0],o),l=Vo(e[1],a),u=Vo(n[0],r/2),h=Vo(n[1],r/2),c=-t.get("startAngle")*WP,f=t.get("minAngle")*WP,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)}}}}};YI.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 ml(this.getSource(),this)},getDataParams:function(t,e,i){var n=YI.prototype.getDataParams.apply(this,arguments);return i&&(n.info=i.info),n}}),Ar.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}});Ws({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;da(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 KP=Fs({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){KP.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}}});Es("legendToggleSelect","legendselectchanged",v(xv,"toggleSelected")),Es("legendSelect","legendselected",v(xv,"select")),Es("legendUnSelect","legendunselected",v(xv,"unSelect"));var $P=v,JP=d,QP=tb,tN=Ws({type:"legend.plain",newlineDisabled:!1,init:function(){this.group.add(this._contentGroup=new QP),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=ca(a,s,l),h=this.layoutInner(t,o,u,n),c=ca(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)}),JP(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",$P(bv,h,n)).on("mouseover",$P(Sv,c.name,null,n,s)).on("mouseout",$P(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",$P(bv,h,n)).on("mouseover",$P(Sv,null,h,n,s)).on("mouseout",$P(Mv,null,h,n,s)),a.set(h,!0)}},this)}else o.add(new QP({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 QP,m=i.getModel("textStyle"),v=i.get("icon"),y=i.getModel("tooltip"),x=y.parentModel;if(o=v||o,g.add(Jl(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(Jl(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 rM({style:mo({},m,{text:M,x:w,y:c/2,textFill:p?m.getTextColor():d,textAlign:b,textVerticalAlign:"middle"})}));var I=new yM({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),fo(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}});Os(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 yM({shape:x})),a.__rectSize=x[l]}else r.eachChild(function(t){t.attr({invisible:!0,silent:!0})});var _=this._getPageInfo(t);return null!=_.pageIndex&&Io(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=nN[r],l=oN[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 rM({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?this.el.hide():true,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 uN=m,hN=d,cN=Vo,dN=new yM({shape:{x:-1,y:-1,width:2,height:2}});Ws({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,uN(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=dN;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=xP(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={};hN(t,function(t){hN(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=Xl(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?ia(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 No(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=na(h,i,!0);else if("function"==typeof h){var d=uN(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=cN(e[0],s),n=cN(e[1],l);else if(w(e)){e.width=u[0],e.height=u[1];var f=ca(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&&hN(e,function(e,n){var o=e.dataByAxis||{},a=(t[n]||{}).dataByAxis||[];(i&=o.length===a.length)&&hN(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)&&hN(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))}}),Es({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),Es({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:aD.prototype.dataToCoord,radiusToData:aD.prototype.coordToData},u(Gv,aD);var fN=Bi();Fv.prototype={constructor:Fv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToAngle:aD.prototype.dataToCoord,angleToData:aD.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=fN(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,aD);var pN=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};pN.prototype={type:"polar",axisPointerEnabled:!0,constructor:pN,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 gN=lI.extend({type:"polarAxis",axis:null,getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"polar",index:this.option.polarIndex,id:this.option.polarId})[0]}});n(gN.prototype,UA);var mN={angle:{startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:!1}},radius:{splitNumber:5}};ED("angle",gN,Wv,mN.angle),ED("radius",gN,Wv,mN.radius),Fs({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 vN={dimensions:pN.prototype.dimensions,create:function(t,e){var i=[];return t.eachComponent("polar",function(t,n){var o=new pN(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}};Fa.register("polar",vN);var yN=["axisLine","axisLabel","axisTick","splitLine","splitArea"];XD.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(yN,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 sM({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 _M({shape:Xv(e,[s,s+a],t.coord)})});this.group.add(OM(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 No(a[u].textStyle,r,r.ecModel));var m=new rM({silent:!0});this.group.add(m),mo(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},kN.findTargetInfo=function(t,e){for(var i=this._targetInfoList,n=dy(e,t),o=0;o=0||AN(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:ON.grid,xAxisDeclared:r[t.id],yAxisDeclared:s[t.id]})}))},geo:function(t,e){TN(t.geoModels,function(t){var i=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:i,coordSyses:[i],getPanelRect:ON.geo})})}},NN=[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}],ON={grid:function(){return this.coordSys.grid.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(Ao(t)),e}},EN={lineX:DN(fy,0),lineY:DN(fy,1),rect:function(t,e,i){var n=e[CN[t]]([i[0][0],i[1][0]]),o=e[CN[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[CN[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}}},RN={lineX:DN(py,0),lineY:DN(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]]})}},zN=["inBrush","outOfBrush"],BN="__ecBrushSelect",VN="__ecInBrushSelectEvent",GN=VT.VISUAL.BRUSH;zs(GN,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)})}),Bs(GN,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:FN[t.brushType](t)},t))}),S=ty(e.option,zN,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(zN,S,a,r)})}),vy(e,o,a,s,n)});var FN={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)}},WN=["#ddd"];Fs({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:WN},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}});Ws({type:"brush",init:function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new zf(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})}}),Es({type:"brush",event:"brush"},function(t,e){e.eachComponent({mainType:"brush",query:t},function(e){e.setAreas(t.areas)})}),Es({type:"brushSelect",event:"brushSelected",update:"none"},function(){});var HN={},ZN=rT.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(ZN.title)};var UN=Dy.prototype;UN.render=UN.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")})},UN.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},UN.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),Ns(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,SN)}});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=Yo(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=ca(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},Fa.register("calendar",Cy);var XN=lI.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=ga(t);XN.superApply(this,"init",arguments),ky(t,o)},mergeOption:function(t,e){XN.superApply(this,"mergeOption",arguments),ky(this.option,t)}}),jN={EN:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CN:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},YN={EN:["S","M","T","W","T","F","S"],CN:["日","一","二","三","四","五","六"]};Ws({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 yM({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 gM({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?oa(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 rM({z2:30});mo(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=jN[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&&$N(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}):$N(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)}}),$N(o,function(t){e.setApproximateExtent(r,t)}))})}}};var tO=d,eO=KN,iO=Fs({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),tO([["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 QN(e.name,i,this,o));t[e.name+"_"+i]=r},this)},_resetTarget:function(){var t=this.option,e=this._judgeAutoMode();eO(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;eO(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):tO(n.singleAxis,function(n){t&&n.get("orient",!0)===e&&(i.singleAxisIndex=[n.componentIndex],t=!1)})}t&&eO(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 eO(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;eO(function(n){tO(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;tO([["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()}}),nO=qI.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:aO(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 pM({shape:{points:c},style:r({fill:m.get("dataBackgroundColor")},m.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new gM({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(cO,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 oO({draggable:!0,cursor:Fy(this._orient),drift:sO(this._onDragMove,this,"all"),onmousemove:function(t){mw(t.event)},ondragstart:sO(this._showDataInfo,this,!0),ondragend:sO(this._onDragEnd,this),onmouseover:sO(this._showDataInfo,this,!0),onmouseout:sO(this._showDataInfo,this,!1),style:{fill:a.get("fillerColor"),textPosition:"inside"}})),n.add(new oO($n({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)"}}))),lO([0,1],function(t){var o=Po(a.get("handleIcon"),{cursor:Fy(this._orient),draggable:!0,drift:sO(this._onDragMove,this,t),onmousemove:function(t){mw(t.event)},ondragend:sO(this._onDragEnd,this),onmouseover:sO(this._showDataInfo,this,!0),onmouseout:sO(this._showDataInfo,this,!1)},{x:-1,y:0,width:2,height:2}),r=o.getBoundingRect();this._handleHeight=Vo(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 rM({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=[aO(t[0],[0,100],e,!0),aO(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?aO(a.minSpan,r,o,!0):null,null!=a.maxSpan?aO(a.maxSpan,r,o,!0):null);var s=this._range,l=this._range=rO([aO(n[0],o,r,!0),aO(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=rO(i.slice()),o=this._size;lO([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=Ao(n.handles[t].parent,this.group),i=Co(0===t?"right":"left",e),s=this._handleWidth/2+hO,l=Do([c[t]+(0===t?-s:s),this._size[1]/2],e);o[t].setStyle({x:l[0],y:l[1],textVerticalAlign:a===uO?"middle":i,textAlign:a===uO?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=rO(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=Do([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(lO(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}});iO.extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}});var fO="\0_ec_dataZoom_roams",pO=m,gO=nO.extend({type:"dataZoom.inside",init:function(t,e){this._range},render:function(t,e,i,n){gO.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]=pO(mO[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),gO.superApply(this,"dispose",arguments),this._range=null}}),mO={zoom:function(t,e,i,n){var o=this._range,a=o.slice(),r=t.axisModels[0];if(r){var s=vO[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=vO[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 vO[n]([0,0],[a.scrollDelta,a.scrollDelta],e,o,i).signal*(t[1]-t[0])*a.scrollDelta})},vO={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}};Os({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)})}}),Es("dataZoom",function(t,e){var i=Ny(m(e.eachComponent,e,"dataZoom"),KN,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 yO=d,xO=function(t){var e=t&&t.visualMap;y(e)||(e=e?[e]:[]),yO(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)&&yO(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))})}})};lI.registerSubTypeDefaulter("visualMap",function(t){return t.categories||(t.pieces?t.pieces.length>0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"});var _O=VT.VISUAL.COMPONENT;Bs(_O,{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}}),Bs(_O,{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 wO={get:function(t,e,n){var o=i((bO[t]||{})[e]);return n&&y(o)?o[o.length-1]:o}},bO={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]}},SO=hL.mapVisual,MO=hL.eachVisual,IO=y,TO=d,AO=Fo,DO=Bo,CO=B,LO=Fs({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=AO([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){IO(o.color)&&!t.inRange&&(t.inRange={color:o.color.slice().reverse()}),t.inRange=t.inRange||{color:e.get("gradientColor")},TO(this.stateList,function(e){var i=t[e];if(_(i)){var n=wO.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]={},TO(n,function(t,e){if(hL.isValidType(e)){var i=wO.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");TO(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=SO(s.symbol,function(t){return"none"===t||"square"===t?"roundRect":t});var u=s.symbolSize;if(null!=u){var h=-1/0;MO(u,function(t){t>h&&(h=t)}),s.symbolSize=SO(u,function(t){return DO(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:CO,getValueState:CO,getVisualMeta:CO}),kO=[20,140],PO=LO.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){PO.superApply(this,"optionUpdated",arguments),this.resetExtent(),this.resetVisual(function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()}),this._resetRange()},resetItemSize:function(){PO.superApply(this,"resetItemSize",arguments);var t=this.itemSize;"horizontal"===this._orient&&t.reverse(),(null==t[0]||isNaN(t[0]))&&(t[0]=kO[0]),(null==t[1]||isNaN(t[1]))&&(t[1]=kO[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(){LO.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=Fo((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;EO([0,1],function(r){var s=o[r];s.setStyle("fill",e.handlesColor[r]),s.position[1]=t[r];var l=Do(i.handleLabelPoints[r],Ao(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=OO(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={convertOpacityToAlpha:!0},d=this.getControllerVisual(t,"color",c);h.setStyle("fill",d);var f=Do(u.indicatorLabelPoint,Ao(h,this.group)),p=u.indicatorLabel;p.attr("invisible",!1);var g=this._applyTransform("left",u.barGroup),m=this._orient;p.setStyle({text:(i||"")+o.formatValueText(e),textVerticalAlign:"horizontal"===m?g:"middle",textAlign:"horizontal"===m?"center":g,x:f[0],y:f[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]=RO(zO(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=RO(zO(o[0],t),o[1]);var r=ax(i,a,o),s=[t-r,t+r],l=OO(t,o,a,!0),u=[OO(s[0],o,a,!0),OO(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=Ao(e,n?null:this.group);return zM[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()}});Es({type:"selectDataRange",event:"dataRangeSelected",update:"update"},function(t,e){e.eachComponent({mainType:"visualMap",query:t},function(e){e.setSelected(t.selected)})}),Ns(xO);var FO=LO.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){FO.superApply(this,"optionUpdated",arguments),this._pieceList=[],this.resetExtent();var n=this._mode=this._determineMode();WO[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=hL.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]=wO.get(n,"inRange"===t?"active":"inactive",o)})},this),LO.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=hL.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){hL.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}}}}),WO={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)}};NO.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 rM({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 rM({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(Jl(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})}});Ns(xO);var HO=ta,ZO=ia,UO=Fs({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,HO).join(", "):HO(i),o=e.getName(t),a=ZO(this.name);return(null!=i||o)&&(a+="
"),o&&(a+=ZO(o),null!=i&&(a+=" : ")),null!=i&&(a+=ZO(n)),a},getData:function(){return this._data},setData:function(t){this._data=t}});h(UO,ZI),UO.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 XO=l,jO=v,YO={min:jO(dx,"min"),max:jO(dx,"max"),average:jO(dx,"average")},qO=Ws({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(){}});qO.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 Du),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")}}),Ns(function(t){t.markPoint=t.markPoint||{}}),UO.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 KO=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};qO.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 sf);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")}}),Ns(function(t){t.markLine=t.markLine||{}}),UO.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 $O=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},JO=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];qO.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(JO,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(JO,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 pM({shape:{points:h.getItemLayout(t)}});h.setItemGraphicEl(t,e),u.group.add(e)}).update(function(t,i){var n=u.__data.getItemGraphicEl(i);Io(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(),go(t.style,t.hoverStyle,o,a,{labelFetcher:e,labelDataIndex:i,defaultText:h.getName(i)||"",isRectText:!0,autoColor:s}),fo(t,{}),t.dataModel=e}),u.__data=h,u.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markArea=t.markArea||{}});lI.registerSubTypeDefaulter("timeline",function(){return"slider"}),Es({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)}),Es({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var i=e.getComponent("timeline");i&&null!=t.playState&&i.setPlayState(t.playState)});var QO=lI.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){QO.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 vA([{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(QO.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:[]}}),ZI);var tE=qI.extend({type:"timeline"}),eE=function(t,e,i,n){aD.call(this,t,e,i),this.type=n||"value",this.model=null};eE.prototype={constructor:eE,getLabelModel:function(){return this.model.getModel("label")},isHorizontal:function(){return"horizontal"===this.model.get("orient")}},u(eE,aD);var iE=m,nE=d,oE=Math.PI;tE.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 ia(s.scale.getLabel(t))},nE(["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:oE/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*oE/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,-oE/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=Hl(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 eE("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 _M({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();nE(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:iE(this._changeTimeline,this,t)},h=zx(r,s,e,u);fo(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();nE(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 rM({position:[u,0],rotation:t.labelRotation-t.rotation,onclick:iE(this._changeTimeline,this,a),silent:!1});mo(h.style,s,{text:n.formattedLabel,textAlign:t.labelAlign,textVerticalAlign:t.labelBaseline}),e.add(h),fo(h,mo({},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),fo(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",iE(this._changeTimeline,this,c?"-":"+")),o(t.prevBtnPosition,"controlStyle.prevIcon",iE(this._changeTimeline,this,c?"+":"-")),o(t.playPosition,"controlStyle."+(h?"stopIcon":"playIcon"),iE(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=iE(s._handlePointerDrag,s),t.ondragend=iE(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=Fo(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 rE=rT.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:rE.title,type:"png",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:rE.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 sE=rT.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(sE.title),option:{},seriesIndex:{}};var lE=Fx.prototype;lE.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 uE={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)}},hE=[["line","bar"],["stack","tiled"]];lE.onclick=function(t,e,i){var n=this.model,o=n.get("seriesIndex."+i);if(uE[i]){var a={series:[]};d(hE,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=uE[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})}},Es({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),Ty("magicType",Fx);var cE=rT.toolbox.dataView,dE=new Array(60).join("-"),fE="\t",pE=new RegExp("["+fE+"]+","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(cE.title),lang:i(cE.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)+fE+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),Es({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 gE=d,mE="\0_ec_hist_store";iO.extend({type:"dataZoom.select"}),nO.extend({type:"dataZoom.select"});var vE=rT.toolbox.dataZoom,yE=d,xE="\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(vE.title)};var _E=o_.prototype;_E.render=function(t,e,i,n){this.model=t,this.ecModel=e,this.api=i,s_(t,e,this,n,i),r_(t,e)},_E.onclick=function(t,e,i){wE[i].call(this)},_E.remove=function(t,e){this._brushController.unmount()},_E.dispose=function(t,e){this._brushController.dispose()};var wE={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(t_(this.ecModel))}};_E._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)}},_E._dispatchZoomAction=function(t){var e=[];yE(t,function(t,n){e.push(i(t))}),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},Ty("dataZoom",o_),Ns(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:xE+t+i};r[o]=i,n.push(r)}})}}function i(e,i){var n=t[e];y(n)||(n=n?[n]:[]),yE(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 bE=rT.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:bE.title},l_.prototype.onclick=function(t,e,i){e_(t),e.dispatchAction({type:"restore",from:this.uid})},Ty("restore",l_),Es({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")});var SE,ME="urn:schemas-microsoft-com:vml",IE="undefined"==typeof window?null:window,TE=!1,AE=IE&&IE.document;if(AE&&!U_.canvasSupported)try{!AE.namespaces.zrvml&&AE.namespaces.add("zrvml",ME),SE=function(t){return AE.createElement("')}}catch(t){SE=function(t){return AE.createElement("<"+t+' xmlns="'+ME+'" class="zrvml">')}}var DE=ES.CMD,CE=Math.round,LE=Math.sqrt,kE=Math.abs,PE=Math.cos,NE=Math.sin,OE=Math.max;if(!U_.canvasSupported){var EE=21600,RE=EE/2,zE=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=EE+","+EE,t.coordorigin="0,0"},BE=function(t){return String(t).replace(/&/g,"&").replace(/"/g,""")},VE=function(t,e,i){return"rgb("+[t,e,i].join(",")+")"},GE=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},FE=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},WE=function(t,e,i){return 1e5*(parseFloat(t)||0)+1e3*(parseFloat(e)||0)+i},HE=function(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t},ZE=function(t,e,i){var n=Gt(e);i=+i,isNaN(i)&&(i=1),n&&(t.color=VE(n[0],n[1],n[2]),t.opacity=i*n[3])},UE=function(t){var e=Gt(t);return[VE(e[0],e[1],e[2]),e[3]]},XE=function(t,e,i){var n=e.fill;if(null!=n)if(n instanceof IM){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]*EE,x/=v[1]*EE;var _=OE(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 ZE(t,n,e.opacity)},jE=function(t,e){null!=e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof IM||ZE(t,e.stroke,e.opacity)},YE=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 IM&&FE(t,a),a||(a=u_(e)),o?XE(a,i,n):jE(a,i),GE(t,a)):(t[o?"filled":"stroked"]="false",FE(t,a))},qE=[[],[],[]],KE=function(t,e){var i,n,o,a,r,s,l=DE.M,u=DE.C,h=DE.L,c=DE.A,d=DE.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,CE(((A-C)*M+b)*EE-RE),",",CE(((D-L)*I+S)*EE-RE),",",CE(((A+C)*M+b)*EE-RE),",",CE(((D+L)*I+S)*EE-RE),",",CE((O*M+b)*EE-RE),",",CE((E*I+S)*EE-RE),",",CE((y*M+b)*EE-RE),",",CE((x*I+S)*EE-RE)),r=y,s=x;break;case DE.R:var z=qE[0],B=qE[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]=CE(z[0]*EE-RE),B[0]=CE(B[0]*EE-RE),z[1]=CE(z[1]*EE-RE),B[1]=CE(B[1]*EE-RE),f.push(" m ",z[0],",",z[1]," l ",B[0],",",z[1]," l ",B[0],",",B[1]," l ",z[0],",",B[1]);break;case DE.Z:f.push(" x ")}if(i>0){f.push(n);for(var V=0;V100&&(tR=0,QE={});var i,n=eR.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"},QE[t]=e,tR++}return e};!function(t,e){bb[t]=e}("measureText",function(t,e){var i=AE;JE||((JE=i.createElement("div")).style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",AE.body.appendChild(JE));try{JE.style.font=e}catch(t){}return JE.innerHTML="",JE.appendChild(i.createTextNode(t)),{width:JE.offsetWidth}});for(var nR=new de,oR=[Db,di,fi,Pn,rM],aR=0;aR=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 Pn?yR:t instanceof fi?xR:t instanceof rM?_R:yR},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 IR=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=[]};IR.prototype={constructor:IR,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){IR.prototype[t]=F_(t)}),Ti("svg",IR),t.version="4.2.1",t.dependencies=ET,t.PRIORITY=VT,t.init=function(t,e,i){var n=ks(t);if(n)return n;var o=new us(t,e,i);return o.id="ec_"+iA++,tA[o.id]=o,Fi(t,oA,o.id),Cs(o),o},t.connect=function(t){if(y(t)){var e=t;t=null,kT(e,function(e){null!=e.group&&(t=e.group)}),t=t||"g_"+nA++,kT(e,function(e){e.group=t})}return eA[t]=!0,t},t.disConnect=Ls,t.disconnect=aA,t.dispose=function(t){"string"==typeof t?t=tA[t]:t instanceof us||(t=ks(t)),t instanceof us&&!t.isDisposed()&&t.dispose()},t.getInstanceByDom=ks,t.getInstanceById=function(t){return tA[t]},t.registerTheme=Ps,t.registerPreprocessor=Ns,t.registerProcessor=Os,t.registerPostUpdate=function(t){KT.push(t)},t.registerAction=Es,t.registerCoordinateSystem=Rs,t.getCoordinateSystemDimensions=function(t){var e=Fa.get(t);if(e)return e.getDimensionsInfo?e.getDimensionsInfo():e.dimensions.slice()},t.registerLayout=zs,t.registerVisual=Bs,t.registerLoading=Gs,t.extendComponentModel=Fs,t.extendComponentView=Ws,t.extendSeriesModel=Hs,t.extendChartView=Zs,t.setCanvasCreator=function(t){e("createCanvas",t)},t.registerMap=function(t,e,i){DT.registerMap(t,e,i)},t.getMap=function(t){var e=DT.retrieveMap(t);return e&&e[0]&&{geoJson:e[0].geoJSON,specialAreas:e[0].specialAreas}},t.dataTool=rA,t.zrender=Hb,t.number=YM,t.format=eI,t.throttle=Pr,t.helper=tD,t.matrix=Sw,t.vector=cw,t.color=Ww,t.parseGeoJSON=iD,t.parseGeoJson=rD,t.util=sD,t.graphic=lD,t.List=vA,t.Model=No,t.Axis=aD,t.env=U_}); \ No newline at end of file diff --git a/uni_modules/qiun-data-charts/static/h5/echarts.min.js b/uni_modules/qiun-data-charts/static/h5/echarts.min.js new file mode 100644 index 0000000..5396a03 --- /dev/null +++ b/uni_modules/qiun-data-charts/static/h5/echarts.min.js @@ -0,0 +1,23 @@ + +/* +* 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. +* 版本为4.2.1,修改一处源码:this.el.hide() 改为 this.el?this.el.hide():true +*/ + + +!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,a,r,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||Mb[e]?e:"left";var i=t.textVerticalAlign||t.textBaseline;"center"===i&&(i="middle"),t.textVerticalAlign=null==i||Ib[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&&r),e.__attrCachedBy=s?rb.NONE:rb.PLAIN_TEXT):u&&(e.__attrCachedBy=rb.NONE);var h=n.font||Sb;l&&h===(r.font||Sb)||(e.font=h);var c=t.__computedFont;t.__styleFont!==h&&(t.__styleFont=h,c=t.__computedFont=e.font);var d=n.textPadding,f=n.textLineHeight,p=t.__textCotentBlock;p&&!t.__dirtyText||(p=t.__textCotentBlock=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||Sb);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 Cb.copy(t.getBoundingRect()),t.transform&&Cb.applyTransform(t.transform),Lb.width=e,Lb.height=i,!Cb.intersect(Lb)}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();Zb(t,function(t,i){var n=t.exist;n&&e.set(n.id,t)}),Zb(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={})}),Zb(t,function(t,i){var n=t.exist,o=t.option,a=t.keyInfo;if(Ub(o)){if(a.name=null!=o.name?o.name+"":n?n.name:jb+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(jb))}function Ei(t){return Ub(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-rS&&trS||t<-rS}function tn(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 en(t,e,i,n,o){var a=1-o;return 3*(((e-t)*a+2*(i-e)*o)*a+(n-i)*o*o)}function nn(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(Ji(h)&&Ji(c))Ji(s)?a[0]=0:(M=-l/s)>=0&&M<=1&&(a[f++]=M);else{var p=c*c-4*h*d;if(Ji(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=aS(p),y=h*s+1.5*r*(-c+v),x=h*s+1.5*r*(-c-v);(M=(-s-((y=y<0?-oS(-y,uS):oS(y,uS))+(x=x<0?-oS(-x,uS):oS(x,uS))))/(3*r))>=0&&M<=1&&(a[f++]=M)}else{var _=(2*h*s-3*r*c)/(2*aS(h*h*h)),w=Math.acos(_)/3,b=aS(h),S=Math.cos(w),M=(-s-2*b*S)/(3*r),m=(-s+b*(S+lS*Math.sin(w)))/(3*r),I=(-s+b*(S-lS*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 on(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(Ji(r))Qi(a)&&(c=-s/a)>=0&&c<=1&&(o[l++]=c);else{var u=a*a-4*r*s;if(Ji(u))o[0]=-a/(2*r);else if(u>0){var h=aS(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 an(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 rn(t,e,i,n,o,a,r,s,l,u,h){var c,d,f,p,g,m=.005,v=1/0;hS[0]=l,hS[1]=u;for(var y=0;y<1;y+=.05)cS[0]=tn(t,i,o,r,y),cS[1]=tn(e,n,a,s,y),(p=hw(hS,cS))=0&&p=0&&c<=1&&(o[l++]=c);else{var u=r*r-4*a*s;if(Ji(u))(c=-r/(2*a))>=0&&c<=1&&(o[l++]=c);else if(u>0){var h=aS(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 hn(t,e,i){var n=t+i-2*e;return 0===n?.5:(t-e)/n}function cn(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 dn(t,e,i,n,o,a,r,s,l){var u,h=.005,c=1/0;hS[0]=r,hS[1]=s;for(var d=0;d<1;d+=.05)cS[0]=sn(t,i,o,d),cS[1]=sn(e,n,a,d),(m=hw(hS,cS))=0&&m1e-4)return s[0]=t-i,s[1]=e-n,l[0]=t+i,void(l[1]=e+n);if(yS[0]=mS(o)*i+t,yS[1]=gS(o)*n+e,xS[0]=mS(a)*i+t,xS[1]=gS(a)*n+e,u(s,yS,xS),h(l,yS,xS),(o%=vS)<0&&(o+=vS),(a%=vS)<0&&(a+=vS),o>a&&!r?a+=vS:oo&&(_S[0]=mS(f)*i+t,_S[1]=gS(f)*n+e,u(s,_S,s),h(l,_S,l))}function yn(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+=zS);var d=Math.atan2(l,s);return d<0&&(d+=zS),d>=n&&d<=o||d+zS>=n&&d+zS<=o}function Sn(t,e,i,n,o,a){if(a>e&&a>n||ao?r:0}function Mn(t,e){return Math.abs(t-e)e&&u>n&&u>a&&u>s||u1&&In(),c=tn(e,n,a,s,WS[0]),p>1&&(d=tn(e,n,a,s,WS[1]))),2===p?me&&s>n&&s>a||s=0&&u<=1){for(var h=0,c=sn(e,n,a,u),d=0;di||s<-i)return 0;u=Math.sqrt(i*i-s*s);FS[0]=-u,FS[1]=u;var l=Math.abs(n-o);if(l<1e-4)return 0;if(l%VS<1e-4){n=0,o=VS;p=a?1:-1;return r>=FS[0]+t&&r<=FS[1]+t?p:0}if(a){var u=n;n=wn(o),o=wn(u)}else n=wn(n),o=wn(o);n>o&&(o+=VS);for(var h=0,c=0;c<2;c++){var d=FS[c];if(d+t>r){var f=Math.atan2(s,d),p=a?1:-1;f<0&&(f=VS+f),(f>=n&&f<=o||f+VS>=n&&f+VS<=o)&&(f>Math.PI/2&&f<1.5*Math.PI&&(p=-p),h+=p)}}return h}function Cn(t,e,i,n,o){for(var a=0,r=0,s=0,l=0,u=0,h=0;h1&&(i||(a+=Sn(r,s,l,u,n,o))),1===h&&(l=r=t[h],u=s=t[h+1]),c){case BS.M:r=l=t[h++],s=u=t[h++];break;case BS.L:if(i){if(yn(r,s,t[h],t[h+1],e,n,o))return!0}else a+=Sn(r,s,t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.C:if(i){if(xn(r,s,t[h++],t[h++],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++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.Q:if(i){if(_n(r,s,t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=An(r,s,t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.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+=Sn(r,s,x,_,n,o):(l=x,u=_);var w=(n-d)*g/p+d;if(i){if(bn(d,f,g,m,m+v,y,e,w,o))return!0}else a+=Dn(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 BS.R:l=r=t[h++],u=s=t[h++];var x=l+t[h++],_=u+t[h++];if(i){if(yn(l,u,x,u,e,n,o)||yn(x,u,x,_,e,n,o)||yn(x,_,l,_,e,n,o)||yn(l,_,l,u,e,n,o))return!0}else a+=Sn(x,u,x,_,n,o),a+=Sn(l,_,l,u,n,o);break;case BS.Z:if(i){if(yn(r,s,l,u,e,n,o))return!0}else a+=Sn(r,s,l,u,n,o);r=l,s=u}}return i||Mn(s,u)||(a+=Sn(r,s,l,u,n,o)||0),0!==a}function Ln(t,e,i){return Cn(t,0,!1,e,i)}function kn(t,e,i,n){return Cn(t,e,!0,i,n)}function Pn(t){di.call(this,t),this.path=null}function Nn(t,e,i,n,o,a,r,s,l,u,h){var c=l*(tM/180),d=QS(c)*(t-i)/2+JS(c)*(e-n)/2,f=-1*JS(c)*(t-i)/2+QS(c)*(e-n)/2,p=d*d/(r*r)+f*f/(s*s);p>1&&(r*=$S(p),s*=$S(p));var g=(o===a?-1:1)*$S((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+QS(c)*m-JS(c)*v,x=(e+n)/2+JS(c)*m+QS(c)*v,_=nM([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=nM(w,b);iM(w,b)<=-1&&(S=tM),iM(w,b)>=1&&(S=0),0===a&&S>0&&(S-=2*tM),1===a&&S<0&&(S+=2*tM),h.addData(u,y,x,r,s,_,S,c,a)}function On(t){if(!t)return new ES;for(var e,i=0,n=0,o=i,a=n,r=new ES,s=ES.CMD,l=t.match(oM),u=0;u=2){if(o&&"spline"!==o){var a=fM(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=dM(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 bo(t){var e=t.insideRollback;e&&(t.textFill=e.textFill,t.textStroke=e.textStroke,t.textStrokeWidth=e.textStrokeWidth,t.insideRollback=null)}function So(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 Mo(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 Io(t,e,i,n,o){Mo(!0,t,e,i,n,o)}function To(t,e,i,n,o){Mo(!1,t,e,i,n,o)}function Ao(t,e){for(var i=_t([]);t&&t!==e;)bt(i,t.getLocalTransform(),i),t=t.parent;return i}function Do(t,e,i){return e&&!c(e)&&(e=Tw.getLocalTransform(e)),i&&(e=Tt([],e)),Q([],t,e)}function Co(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=Do(a,e,i),Math.abs(a[0])>Math.abs(a[1])?a[0]>0?"right":"left":a[1]>0?"bottom":"top"}function Lo(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)),Io(t,n,i,t.dataIndex)}}})}}function ko(t,e){return f(t,function(t){var i=t[0];i=LM(i,e.x),i=kM(i,e.x+e.width);var n=t[1];return n=LM(n,e.y),n=kM(n,e.y+e.height),[i,n]})}function Po(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)):Xn(t.replace("path://",""),e,i,"center")}function No(t,e,i){this.parentModel=e,this.ecModel=i,this.option=t}function Oo(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 Vo(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?zo(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t}function Go(t,e,i){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),i?t:+t}function Fo(t){return t.sort(function(t,e){return t-e}),t}function Wo(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 Ho(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 Zo(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 Uo(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 Xo(t){var e=2*Math.PI;return(t%e+e)%e}function jo(t){return t>-UM&&t=-20?+t.toFixed(n<0?-n:0):t}function Jo(t){function e(t,i,n){return t.interval[n]=0}function ta(t){return isNaN(t)?"-":(t=(t+"").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:"")}function ea(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 ia(t){return null==t?"":(t+"").replace(KM,function(t,e){return $M[e]})}function na(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 ra(t,e){return t+="","0000".substr(0,e-t.length)+t}function sa(t,e,i){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var n=Yo(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",ra(r,2)).replace("M",r).replace("yyyy",a).replace("yy",a%100).replace("dd",ra(s,2)).replace("d",s).replace("hh",ra(l,2)).replace("h",l).replace("mm",ra(u,2)).replace("m",u).replace("ss",ra(h,2)).replace("s",h).replace("SSS",ra(c,3))}function la(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t}function ua(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 ha(t,e,i){var n=e.width,o=e.height,a=Vo(t.x,n),r=Vo(t.y,o),s=Vo(t.x2,n),l=Vo(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=qM(i||0),{width:Math.max(s-a-i[1]-i[3],0),height:Math.max(l-r-i[0]-i[2],0)}}function ca(t,e,i){i=qM(i||0);var n=e.width,o=e.height,a=Vo(t.left,n),r=Vo(t.top,o),s=Vo(t.right,n),l=Vo(t.bottom,o),u=Vo(t.width,n),h=Vo(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 da(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=ca(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 fa(t,e){return null!=t[oI[e][0]]||null!=t[oI[e][1]]&&null!=t[oI[e][2]]}function pa(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 ya(t){var e=t.get("coordinateSystem"),i={coordSysName:e,coordSysDims:[],axisMap:R(),categoryAxisMap:R()},n=fI[e];if(n)return n(t,i,i.axisMap,i.categoryAxisMap),i}function xa(t){return"category"===t.get("type")}function _a(t){this.fromDataset=t.fromDataset,this.data=t.data||(t.sourceFormat===vI?{}:[]),this.sourceFormat=t.sourceFormat||yI,this.seriesLayoutBy=t.seriesLayoutBy||_I,this.dimensionsDefine=t.dimensionsDefine,this.encodeDefine=t.encodeDefine&&R(t.encodeDefine),this.startIndex=t.startIndex||0,this.dimensionsDetectCount=t.dimensionsDetectCount}function wa(t){var e=t.option.source,i=yI;if(S(e))i=xI;else if(y(e)){0===e.length&&(i=gI);for(var n=0,o=e.length;n=e:"max"===i?t<=e:t===e}function Xa(t,e){return t.join(",")===e.join(",")}function ja(t,e){AI(e=e||{},function(e,i){if(null!=e){var n=t[i];if(lI.hasClass(i)){e=Di(e);var o=Pi(n=Di(n),e);t[i]=CI(o,function(t){return t.option&&t.exist?LI(t.exist,t.option,!0):t.exist||t.option})}else t[i]=LI(n,e,!0)}})}function Ya(t){var e=t&&t.itemStyle;if(e)for(var i=0,o=OI.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 rr(t,e){_a.isInstance(t)||(t=_a.seriesDataToSource(t)),this._source=t;var i=this._data=t.data,n=t.sourceFormat;n===xI&&(this._offset=0,this._dimSize=e,this._data=i),a(this,GI[n===gI?n+"_"+t.seriesLayoutBy:n])}function sr(){return this._data.length}function lr(t){return this._data[t]}function ur(t){for(var e=0;ee.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function Mr(t,e){d(t.CHANGABLE_METHODS,function(i){t.wrapMethod(i,v(Ir,e))})}function Ir(t){var e=Tr(t);e&&e.setOutputEnd(this.count())}function Tr(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 Ar(){this.group=new tb,this.uid=Ro("viewChart"),this.renderTask=gr({plan:Lr,reset:kr}),this.renderTask.context={view:this}}function Dr(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 Nr(t,e,i,n){var o=t[e];if(o){var a=o[iT]||o,r=o[oT];if(o[nT]!==i||r!==n){if(null==i||!n)return t[e]=a;(o=t[e]=Pr(a,i,"debounce"===n))[iT]=a,o[oT]=n,o[nT]=i}return o}}function Or(t,e){var i=t[e];i&&i[iT]&&(t[e]=i[iT])}function Er(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 Rr(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(),hT(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),hT(s,n),r|=s.perform(u)})}}),t.unfinished|=r}function zr(t,e,i,n,o){function a(i){var a=i.uid,s=r.get(a)||r.set(a,gr({plan:Hr,reset:Zr,count:Xr}));s.context={model:i,ecModel:n,api:o,useClearVisual:e.isVisual&&!e.isLayout,plan:e.plan,reset:e.reset,scheduler:t},jr(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 Br(t,e,i,n,o){function a(e){var i=e.uid,n=s.get(i);n||(n=s.set(i,gr({reset:Gr,onDirty:Wr})),r.dirty()),n.context={model:e,overallProgress:h,modifyOutputEnd:c},n.agent=r,n.__block=h,jr(t,e,n)}var r=i.overallTask=i.overallTask||gr({reset:Vr});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 Vr(t){t.overallReset(t.ecModel,t.api,t.payload)}function Gr(t,e){return t.overallProgress&&Fr}function Fr(){this.agent.dirty(),this.getDownstream().dirty()}function Wr(){this.agent&&this.agent.dirty()}function Hr(t){return t.plan&&t.plan(t.model,t.ecModel,t.api,t.payload)}function Zr(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 Ur(e)}):cT}function Ur(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 Qr(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),r(e.__inheritedStyle,t.__inheritedStyle))}function ts(t){for(var e=P(t).split(_T),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(_T),St(n,n,[parseFloat(r[0]),parseFloat(r[1]||0)]);break;case"scale":r=P(r).split(_T),It(n,n,[parseFloat(r[0]),parseFloat(r[1]||r[0])]);break;case"rotate":r=P(r).split(_T),Mt(n,n,parseFloat(r[0]));break;case"skew":r=P(r).split(_T),console.warn("Skew transform is not supported yet");break;case"matrix":r=P(r).split(_T);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 os(t){var e=t.getAttribute("style"),i={};if(!e)return i;var n={};TT.lastIndex=0;for(var o;null!=(o=TT.exec(e));)n[o[1]]=o[2];for(var a in ST)ST.hasOwnProperty(a)&&null!=n[a]&&(i[ST[a]]=n[a]);return i}function as(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 rs(t,e){return(new $r).parse(t,e)}function ss(t){return function(e,i,n){e=e&&e.toLowerCase(),fw.prototype[t].call(this,e,i,n)}}function ls(){fw.call(this)}function us(t,e,n){function o(t,e){return t.__prio-e.__prio}n=n||{},"string"==typeof e&&(e=JT[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=Pr(m(a.flush,a),17),(e=i(e))&&BI(e,!0),this._theme=e,this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._coordSysMgr=new Fa;var r=this._api=As(this);_e($T,o),_e(YT,o),this._scheduler=new Er(this,r,YT,$T),fw.call(this,this._ecEventProcessor=new Ds),this._messageCenter=new ls,this._initEvents(),this.resize=m(this.resize,this),this._pendingActions=[],a.animation.on("frame",this._onframe,this),vs(a,this),N(this)}function hs(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 Is(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 Ts(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 As(t){var e=t._coordSysMgr;return a(new Ga(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 Ds(){this.eventInfo}function Cs(t){function e(t,e){for(var n=0;n65535?dA:pA}function Js(t){var e=t.constructor;return e===Array?t.slice():new e(t)}function Qs(t,e){d(gA.concat(e.__wrappedMethods||[]),function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t.__wrappedMethods=e.__wrappedMethods,d(mA,function(n){t[n]=i(e[n])}),t._calculationInfo=a(e._calculationInfo)}function tl(t,e,i,n,o){var a=cA[e.type],r=n-1,s=e.name,l=t[s][r];if(l&&l.length=0?this._indices[t]:-1}function al(t,e){var i=t._idList[e];return null==i&&(i=il(t,t._idDimIdx,e)),null==i&&(i=hA+e),i}function rl(t){return y(t)||(t=[t]),t}function sl(t,e){var i=t.dimensions,n=new vA(f(i,t.getDimensionInfo,t),t.hostModel);Qs(n,t);for(var o=n._storage={},a=t._storage,r=0;r=0?(o[s]=ll(a[s]),n._rawExtent[s]=ul(),n._extent[s]=null):o[s]=a[s])}return n}function ll(t){for(var e=new Array(t.length),i=0;in&&(r=o.interval=n);var s=o.intervalPrecision=Ml(r);return Tl(o.niceTickExtent=[MA(Math.ceil(t[0]/r)*r,s),MA(Math.floor(t[1]/r)*r,s)],t),o}function Ml(t){return Ho(t)+2}function Il(t,e,i){t[e]=Math.max(Math.min(t[e],i[1]),i[0])}function Tl(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),Il(t,0,e),Il(t,1,e),t[0]>t[1]&&(t[0]=t[1])}function Al(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 Dl(t){return t.get("stack")||AA+t.seriesIndex}function Cl(t){return t.dim+t.index}function Ll(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 Vl(t,e){return VA(t,BA(e))}function Gl(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]=Vo(n[0],1),n[1]=Vo(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=kl("bar",c);if(d(p,function(t){f|=t.getBaseAxis()===e.axis}),f){var g=Pl(p),m=Fl(r,s,e,g);r=m.min,s=m.max}}return[r,s]}function Fl(t,e,i,n){var o=i.axis.getExtent(),a=o[1]-o[0],r=Ol(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 Wl(t,e){var i=Gl(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 Hl(t,e){if(e=e||t.get("type"))switch(e){case"category":return new SA(t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),[1/0,-1/0]);case"value":return new TA;default:return(xl.getClass(e)||TA).create(t)}}function Zl(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(i>0&&n>0||i<0&&n<0)}function Ul(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(Xl(t,n),o)}:function(e){return t.scale.getLabel(e)}}function Xl(t,e){return"category"===t.type?t.scale.getLabel(e):e}function jl(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=Ul(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 ou(t){return"category"===t.type?ru(t):uu(t)}function au(t,e){return"category"===t.type?lu(t,e):{ticks:t.scale.getTicks()}}function ru(t){var e=t.getLabelModel(),i=su(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:i.labelCategoryInterval}:i}function su(t,e){var i=hu(t,"labels"),n=ql(e),o=cu(i,n);if(o)return o;var a,r;return a=x(n)?vu(t,n):mu(t,r="auto"===n?fu(t):n),du(i,n,{labels:a,labelCategoryInterval:r})}function lu(t,e){var i=hu(t,"ticks"),n=ql(e),o=cu(i,n);if(o)return o;var a,r;if(e.get("show")&&!t.scale.isBlank()||(a=[]),x(n))a=vu(t,n,!0);else if("auto"===n){var s=su(t,t.getLabelModel());r=s.labelCategoryInterval,a=f(s.labels,function(t){return t.tickValue})}else a=mu(t,r=n,!0);return du(i,n,{ticks:a,tickCategoryInterval:r})}function uu(t){var e=t.scale.getTicks(),i=Ul(t);return{labels:f(e,function(e,n){return{formattedLabel:i(e,n),rawLabel:t.scale.getLabel(e),tickValue:e}})}}function hu(t,e){return nD(t)[e]||(nD(t)[e]=[])}function cu(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))),_=nD(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 gu(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 mu(t,e,i){function n(t){l.push(i?t:{formattedLabel:o(t),rawLabel:a.getLabel(t),tickValue:t})}var o=Ul(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=Kl(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 vu(t,e,i){var n=t.scale,o=Ul(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 yu(t,e){var i=(t[1]-t[0])/e/2;t[0]+=i,t[1]-=i}function xu(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 _u(t,e){var i=t.mapDimension("defaultedLabel",!0),n=i.length;if(1===n)return fr(t,e,i[0]);if(n){for(var o=[],a=0;a0?i=n[0]:n[1]<0&&(i=n[1]),i}function Ou(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 Eu(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 Ru(t){return isNaN(t[0])||isNaN(t[1])}function zu(t,e,i,n,o,a,r,s,l,u,h){return"none"!==u&&u?Bu.apply(this,arguments):Vu.apply(this,arguments)}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(Ru(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;_D(bD,g),bD[m]=g[m]+v,_D(SD,p),SD[m]=p[m]-v,t.bezierCurveTo(bD[0],bD[1],SD[0],SD[1],p[0],p[1])}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Vu(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(Ru(p)){if(h){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]),_D(bD,p);else if(l>0){var g=d+a,m=e[g];if(h)for(;m&&Ru(e[g]);)m=e[g+=a];var v=.5,y=e[c];if(!(m=e[g])||Ru(m))_D(SD,p);else{Ru(m)&&!h&&(m=p),U(wD,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);xD(SD,p,wD,-l*(1-(v=_/(_+x))))}vD(bD,bD,s),yD(bD,bD,r),vD(SD,SD,s),yD(SD,SD,r),t.bezierCurveTo(bD[0],bD[1],SD[0],SD[1],p[0],p[1]),xD(bD,p,wD,l*v)}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Gu(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 Fu(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 Zu(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 hM({shape:{cx:Go(t.cx,1),cy:Go(t.cy,1),r0:Go(a[0],1),r:Go(a[1],1),startAngle:-r[0]*s,endAngle:-r[1]*s,clockwise:o.inverse}});return e&&(l.shape.endAngle=-r[0]*s,To(l,{shape:{endAngle:-r[1]*s}},n)),l}function ju(t,e,i,n){return"polar"===t.type?Xu(t,e,i,n):Uu(t,e,i,n)}function Yu(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 TM(0,0,0,0,h,!0);return y[n]=g,y[n+"2"]=m,y}}}function Ku(t,e,i){var n=t.get("showAllSymbol"),o="auto"===n;if(!n||o){var a=i.getAxesByScale("ordinal")[0];if(a&&(!o||!$u(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 $u(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 Ju(t){return this._axes[t]}function Qu(t){LD.call(this,t)}function th(t,e){return e.type||(e.data?"category":"value")}function eh(t,e,i){return t.getCoordSysModel()===e}function ih(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this.model=t}function nh(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)oh(r[u])&&(a=r[u]);else for(var h in r)if(r.hasOwnProperty(h)&&oh(r[h])&&!n[o(r[h])]){a=r[h];break}a&&(n[o(a)]=!0)}}function oh(t){return t&&"category"!==t.type&&"time"!==t.type&&Zl(t)}function ah(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 rh(t,e){return f(VD,function(e){return t.getReferringComponents(e)[0]})}function sh(t){return"cartesian2d"===t.get("coordinateSystem")}function lh(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e}function uh(t,e,i,n){var o,a,r=Xo(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;return jo(r-GD/2)?(a=l?"bottom":"top",o="center"):jo(r-1.5*GD)?(a=l?"top":"bottom",o="center"):(a="middle",o=r<1.5*GD&&r>GD/2?l?"left":"right":l?"right":"left"),{rotation:r,textAlign:o,textVerticalAlign:a}}function hh(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}function ch(t,e,i){if(!Kl(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?(dh(a),dh(u)):fh(a,r)&&(n?(dh(r),dh(h)):(dh(a),dh(u))),!1===o?(dh(s),dh(c)):fh(l,s)&&(o?(dh(l),dh(d)):(dh(s),dh(c)))}}function dh(t){t&&(t.ignore=!0)}function fh(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 ph(t){return"middle"===t||"center"===t}function gh(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 Sh(t){var e=Mh(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=Th(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||kh(t.style,d,n,u,a,i,p),fo(t,d)}function Rh(t,e){var i=t.get(tC)||0;return Math.min(i,Math.abs(e.width),Math.abs(e.height))}function zh(t,e,i){var n=t.getData(),o=[],a=n.getLayout("valueAxisHorizontal")?1:0;o[1-a]=n.getLayout("valueAxisStart");var r=new nC({shape:{points:n.getLayout("largePoints")},incremental:!!i,__startPoint:o,__valueIdx:a});e.add(r),Bh(r,t,n)}function Bh(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 Vh(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){Gh(o.getItemGraphicEl(t),o.getItemLayout(t),e.isSelected(o.getName(t)),s,i)})}function Gh(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 Fh(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 hM({z2:2}),a=new gM,r=new rM;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 Wh(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 Hh(t,e,i,n,o,a){for(var r=[],s=[],l=0;l3?1.4:o>1?1.2:1.1;hc(this,"zoom","zoomOnMouseWheel",t,{scale:n>0?s:1/s,originX:a,originY:r})}if(i){var l=Math.abs(n);hc(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(n>0?1:-1)*(l>3?.4:l>1?.15:.05),originX:a,originY:r})}}}function uc(t){ic(this._zr,"globalPan")||hc(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY})}function hc(t,e,i,n,o){t.pointerChecker&&t.pointerChecker(n,o.originX,o.originY)&&(mw(n.event),cc(t,e,i,n,o))}function cc(t,e,i,n,o){o.isAvailableBehavior=m(dc,null,i,n),t.trigger(e,o)}function dc(t,e,i){var n=i[t];return!t||n&&(!_(n)||e.event[n+"Key"])}function fc(t,e,i){var n=t.target,o=n.position;o[0]+=e,o[1]+=i,n.dirty()}function pc(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 gc(t,e,i){var n=e.getComponentByElement(t.topTarget),o=n&&n.coordinateSystem;return n&&n!==i&&!RC[n.mainType]&&o&&o.model!==i}function mc(t,e){var i=t.getItemStyle(),n=t.get("areaColor");return null!=n&&(i.fill=n),i}function vc(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),yc(e,i)}}}))}function yc(t,e){e.eachChild(function(e){d(e.__regions,function(i){e.trigger(t.isSelected(i.name)?"emphasis":"normal")})})}function xc(t,e){var i=new tb;this.uid=Ro("ec_map_draw"),this._controller=new oc(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 _c(t){var e=this[zC];e&&e.recordVersion===this[BC]&&wc(e,t)}function wc(t,e){var i=t.circle,n=t.labelModel,o=t.hoverLabelModel,a=t.emphasisText,r=t.normalText;e?(i.style.extendFrom(mo({},o,{text:o.get("show")?a:null},{isRectText:!0,useInsideStyle:!1},!0)),i.__mapOriginalZ2=i.z2,i.z2+=NM):(mo(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 bc(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 Sc(){Tw.call(this)}function Mc(t){this.name=t,this.zoomLimit,Tw.call(this),this._roamTransformable=new Sc,this._rawTransformable=new Sc,this._center,this._zoom}function Ic(t,e,i,n){var o=i.seriesModel,a=o?o.coordinateSystem:null;return a===this?a[t](n):null}function Tc(t,e,i,n){Mc.call(this,t),this.map=e;var o=OC.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 Ac(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 Dc(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=[Vo(s[0],u),Vo(s[1],h)],l=Vo(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=ca(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 Cc(t,e){d(e.get("geoCoord"),function(e,i){t.addGeoCoord(i,e)})}function Lc(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 Wc(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){jc(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=Yc(t,o,t.parentNode.hierNode.defaultAncestor||n[0],e)}function Hc(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t.setLayout({x:e},!0),t.hierNode.modifier+=t.parentNode.hierNode.modifier}function Zc(t){return arguments.length?t:Qc}function Uc(t,e){var i={};return t-=Math.PI/2,i.x=e*Math.cos(t),i.y=e*Math.sin(t),i}function Xc(t,e){return ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function jc(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 Yc(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=qc(s),a=Kc(a),s&&a;){o=qc(o),r=Kc(r),o.hierNode.ancestor=t;var d=s.hierNode.prelim+c-a.hierNode.prelim-u+n(s,a);d>0&&(Jc($c(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&&!qc(o)&&(o.hierNode.thread=s,o.hierNode.modifier+=c-l),a&&!Kc(r)&&(r.hierNode.thread=a,r.hierNode.modifier+=u-h,i=t)}return i}function qc(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1]:t.hierNode.thread}function Kc(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierNode.thread}function $c(t,e,i){return t.hierNode.ancestor.parentNode===e.parentNode?t.hierNode.ancestor:i}function Jc(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 Qc(t,e){return t.parentNode===e.parentNode?1:2}function td(t,e){var i=t.getItemLayout(e);return i&&!isNaN(i.x)&&!isNaN(i.y)&&"none"!==t.getItemVisual(e,"symbol")}function ed(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 id(t,e,i,n,o,a){var s=!i,l=t.tree.getNodeByDataIndex(e),a=ed(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 wu(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),Io(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 bM({shape:od(a,f,f),style:r({opacity:0,strokeNoScale:!0},a.lineStyle)})),Io(S,{shape:od(a,d,p),style:{opacity:1}},o),n.add(S)}}function nd(t,e,i,n,o,a){for(var r,s=t.tree.getNodeByDataIndex(e),l=t.tree.root,a=ed(s,s.getModel(),a),u=s.parentNode===l?s:s.parentNode||s;null==(r=u.getLayout());)u=u.parentNode===l?u:u.parentNode||u;Io(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&&Io(h,{shape:od(a,r,r),style:{opacity:0}},o,function(){n.remove(h)})}function od(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=Uc(s,u),f=Uc(s,u+(h-u)*t.curvature),p=Uc(l,h+(u-h)*t.curvature),g=Uc(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 ad(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 sd(t,e){var i=Xc(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=Zc(function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth})):(o=i.width,a=i.height,r=Zc());var s=t.getData().tree.root,l=s.children[0];if(l){Fc(s),ad(l,Wc,r),s.hierNode.modifier=-l.hierNode.prelim,rd(l,Hc);var u=l,h=l,c=l;rd(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),rd(l,function(t){m=(t.getLayout().x+f)*p,v=(t.depth-1)*g;var e=Uc(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),rd(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),rd(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 ld(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 ud(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function hd(t,e){return l(ud(t),e)>=0}function cd(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 dd(t){var e=0;d(t.children,function(t){dd(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 fd(t,e){var i=e.get("color");if(i){var n;return d(t=t||[],function(t){var e=new No(t),i=e.get("color");(e.get("itemStyle.color")||i&&"none"!==i)&&(n=!0)}),n||((t[0]||(t[0]={})).color=i.slice()),t}}function pd(t){this.group=new tb,t.add(this.group)}function gd(t,e,i,n,o,a){var r=[[o?t:t-UC,e],[t+i,e],[t+i,e+n],[o?t:t-UC,e+n]];return!a&&r.splice(2,0,[t+i+UC,e+n/2]),!o&&r.push([t,e+n/2]),r}function md(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&&cd(i,e)}}function vd(){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 bd(t,e){var i=t.visual,n=[];w(i)?sL(i,function(t){n.push(t)}):null!=i&&n.push(i);var o={color:1,symbol:1};e||1!==n.length||o.hasOwnProperty(t.type)||(n[1]=n[0]),Ld(t,n)}function Sd(t){return{applyVisual:function(e,i,n){e=this.mapValueToVisual(e),n("color",t(i("color"),e))},_doMap:Dd([0,1])}}function Md(t){var e=this.option.visual;return e[Math.round(Bo(t,[0,1],[0,e.length-1],!0))]||{}}function Id(t){return function(e,i,n){n(t,this.mapValueToVisual(e))}}function Td(t){var e=this.option.visual;return e[this.option.loop&&t!==uL?t%e.length:t]}function Ad(){return this.option.visual[0]}function Dd(t){return{linear:function(e){return Bo(e,t,this.option.visual,!0)},category:Td,piecewise:function(e,i){var n=Cd.call(this,i);return null==n&&(n=Bo(e,t,this.option.visual,!0)),n},fixed:Ad}}function Cd(t){var e=this.option,i=e.pieceList;if(e.hasSpecialVisual){var n=i[hL.findPieceIndex(t,i)];if(n&&n.visual)return n.visual[this.type]}}function Ld(t,e){return t.visual=e,"color"===t.type&&(t.parsedVisual=f(e,function(t){return Gt(t)})),e}function kd(t,e,i){return t?e<=i:e=o.length||t===o[t.depth])&&Pd(t,Vd(r,h,t,e,g,a),i,n,o,a)})}else l=Od(h),t.setVisual("color",l)}}function Nd(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 Od(t){var e=Rd(t,"color");if(e){var i=Rd(t,"colorAlpha"),n=Rd(t,"colorSaturation");return n&&(e=jt(e,null,null,n)),i&&(e=Yt(e,i)),e}}function Ed(t,e){return null!=e?jt(e,null,null,t):null}function Rd(t,e){var i=t[e];if(null!=i&&"none"!==i)return i}function zd(t,e,i,n,o,a){if(a&&a.length){var r=Bd(e,"color")||null!=o.color&&"none"!==o.color&&(Bd(e,"colorAlpha")||Bd(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 hL(c);return d.__drColorMappingBy=h,d}}}function Bd(t,e){var i=t.get(e);return fL(i)&&i.length?{name:e,range:i}:null}function Vd(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 Gd(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(_L),l=f.get(wL)/2,u=Kd(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=mL(o-2*c,0))*(a=mL(a-c-d,0)),g=Fd(t,f,p,e,i,n);if(g.length){var m={x:c,y:d,width:o,height:a},v=vL(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 Ud(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?mL(u*o/l,l/(u*a)):1/0}function Xd(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;cXM&&(u=XM),a=s}u=0?n+=u:n-=u:p>=0?n-=u:n+=u}return n}function pf(t,e){return t.getVisual("opacity")||t.getModel().get(e)}function gf(t,e,i){var n=t.getGraphicEl(),o=pf(t,e);null!=i&&(null==o&&(o=1),o*=i),n.downplay&&n.downplay(),n.traverse(function(t){if("group"!==t.type){var e=t.lineLabelOriginalOpacity;null!=e&&null==i||(e=o),t.setStyle("opacity",e)}})}function mf(t,e){var i=pf(t,e),n=t.getGraphicEl();n.highlight&&n.highlight(),n.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",i)})}function vf(t){return t instanceof Array||(t=[t,t]),t}function yf(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")])}),xf(i)}}function xf(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 _f(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 wf(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 Pf(t,e){return Math.min(e[1],Math.max(e[0],t))}function Nf(t,e,i){this._axesMap=R(),this._axesLayout={},this.dimensions=t.dimensions,this._rect,this._model=t,this._init(t,e,i)}function Of(t,e){return ek(ik(t,e[0]),e[1])}function Ef(t,e){var i=e.layoutLength/(e.axisCount-1);return{position:i*t,axisNameAvailableWidth:i,axisLabelShow:!0}}function Rf(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 tmk}function $f(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function Jf(t,e,i,n){var o=new tb;return o.add(new yM({name:"main",style:ip(i),silent:!0,draggable:!0,cursor:"move",drift:uk(t,e,o,"nswe"),ondragend:uk(qf,e,{isEnd:!0})})),hk(n,function(i){o.add(new yM({name:i,style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:uk(t,e,o,i),ondragend:uk(qf,e,{isEnd:!0})}))}),o}function Qf(t,e,i,n){var o=n.brushStyle.lineWidth||0,a=fk(o,vk),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;ep(t,e,"main",r,s,p,g),n.transformable&&(ep(t,e,"w",l,u,a,v),ep(t,e,"e",d,u,a,v),ep(t,e,"n",l,u,m,a),ep(t,e,"s",l,f,m,a),ep(t,e,"nw",l,u,a,a),ep(t,e,"ne",d,u,a,a),ep(t,e,"sw",l,f,a,a),ep(t,e,"se",d,f,a,a))}function tp(t,e){var i=e.__brushOption,n=i.transformable,o=e.childAt(0);o.useStyle(ip(i)),o.attr({silent:!n,cursor:n?"move":"default"}),hk(["w","e","n","s","se","sw","ne","nw"],function(i){var o=e.childOfName(i),a=ap(t,i);o&&o.attr({silent:!n,invisible:!n,cursor:n?_k[a]+"-resize":null})})}function ep(t,e,i,n,o,a,r){var s=e.childOfName(i);s&&s.setShape(hp(up(t,e,[[n,o],[n+a,o+r]])))}function ip(t){return r({strokeNoScale:!0},t.brushStyle)}function np(t,e,i,n){var o=[dk(t,i),dk(e,n)],a=[fk(t,i),fk(e,n)];return[[o[0],a[0]],[o[1],a[1]]]}function op(t){return Ao(t.group)}function ap(t,e){if(e.length>1)return("e"===(n=[ap(t,(e=e.split(""))[0]),ap(t,e[1])])[0]||"w"===n[0])&&n.reverse(),n.join("");var i={left:"w",right:"e",top:"n",bottom:"s"},n=Co({w:"left",e:"right",n:"top",s:"bottom"}[e],op(t));return i[n]}function rp(t,e,i,n,o,a,r,s){var l=n.__brushOption,u=t(l.range),h=lp(i,a,r);hk(o.split(""),function(t){var e=xk[t];u[e[0]][e[1]]+=h[e[0]]}),l.range=e(np(u[0][0],u[1][0],u[0][1],u[1][1])),Zf(i,n),qf(i,{isEnd:!1})}function sp(t,e,i,n,o){var a=e.__brushOption.range,r=lp(t,i,n);hk(a,function(t){t[0]+=r[0],t[1]+=r[1]}),Zf(t,e),qf(t,{isEnd:!1})}function lp(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 up(t,e,n){var o=jf(t,e);return o&&!0!==o?o.clipPath(n,t._transform):i(n)}function hp(t){var e=dk(t[0][0],t[1][0]),i=dk(t[0][1],t[1][1]);return{x:e,y:i,width:fk(t[0][0],t[1][0])-e,height:fk(t[0][1],t[1][1])-i}}function cp(t,e,i){if(t._brushType){var n=t._zr,o=t._covers,a=Xf(t,e,i);if(!t._dragging)for(var r=0;r0;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,e){var i=[],n="vertical"===e?"y":"x",o=Zi(t,function(t){return t.getLayout()[n]});return o.keys.sort(function(t,e){return t-e}),d(o.keys,function(t){i.push(o.buckets.get(t))}),i}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(Gk).getItemStyle(Wk);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=Vo(A(t.get("barMaxWidth"),o),o),r=Vo(A(t.get("barMinWidth"),1),o),s=t.get("barWidth");return null!=s?Vo(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 wu(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=[Vo(f[0],d[0]),Vo(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]=Vo(f[c.index],d),f[h.index]=Vo(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(cP)||0;a&&(fP.attr({scale:e.slice(),rotation:i}),fP.updateTransform(),a/=fP.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=Vo(x,e[p.index]);var w=Math.max(m+2*x,0),b=_?0:2*x,S=Qo(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=Jl(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;kh(d.style,h,a,n,e.seriesModel,o,c),fo(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]];var h={horizontal:0,vertical:1};o.rotation=Math.PI/2*h[r];var c={top:-1,bottom:1,right:1,left:-1};o.labelDirection=o.tickDirection=o.nameDirection=c[a],t.get("axisTick.inside")&&(o.tickDirection=-o.tickDirection),T(e.labelInside,t.get("axisLabel.inside"))&&(o.labelDirection=-o.labelDirection);var d=e.rotate;return null==d&&(d=t.get("axisLabel.rotate")),o.labelRotation="top"===a?-d:d,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 _P(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),_P(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=Ah(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=[];_P(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=bP(n).axisPointerLastHighlights||{},a=bP(n).axisPointerLastHighlights={};_P(t,function(t,e){var i=t.axisPointerModel.option;"show"===i.status&&_P(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();SP(n).records||(SP(n).records={}),hm(n,e),(SP(n).records[t]||(SP(n).records[t]={})).handler=i}}function hm(t,e){function i(i,n){t.on(i,function(i){var o=pm(e);MP(SP(t).records,function(t){t&&n(t,i,o.dispatchAction)}),cm(o.pendings,e)})}SP(t).initialized||(SP(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();(SP(i).records||{})[t]&&(SP(i).records[t]=null)}}function mm(){}function vm(t,e,i,n){ym(TP(i).lastProp,n)||(TP(i).lastProp=n,e?Io(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=qM(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:Xl(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),Do([t.dataToCoord(e),(i.labelOffset||0)+(i.labelDirection||1)*(i.labelMargin||0)],n)}function Am(t,e,i,n,o,a){var r=FD.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[kP[e]],i[kP[e]]+i[PP[e]]]}function Em(t,e,i){var n=new yM({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return To(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 hM({z2:zP});a.seriesIndex=e.seriesIndex;var r=new rM({z2:BP,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!==RP.NONE&&(i===RP.SELF?t===e:i===RP.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=Xn(a,null,o,n.layout||"center")).__customPathData=a}else"image"===i?(e=new fi({})).__customImagePath=t.style.image:"text"===i?(e=new rM({})).__customText=t.style.text:e=new(0,zM[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),To(t,{style:{opacity:c}},o,e)}r?t.attr(l):Io(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||(ro(t,f),t.__cusHasEmphStl=!p),s&&po(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(UP),f=c.getModel(XP),p=e.getItemVisual(t,"color"),v=!1)}var s=t.get("renderItem"),l=t.coordinateSystem,u={};l&&(u=l.prepareCustoms?l.prepareCustoms():YP[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(HP).getItemStyle();null!=p&&(r.fill=p);var s=e.getItemVisual(n,"opacity");return null!=s&&(r.opacity=s),mo(r,d,null,{autoColor:p,isRectText:!0}),r.text=d.getShallow("show")?A(t.getFormattedLabel(n,"normal"),_u(e,n)):null,i&&a(r,i),r},styleEmphasis:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(ZP).getItemStyle();return mo(r,f,null,{isRectText:!0},!0),r.text=f.getShallow("show")?D(t.getFormattedLabel(n,"emphasis"),t.getFormattedLabel(n,"normal"),_u(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 Ll(r({axis:l.getBaseAxis()},t),n)},currentSeriesIndices:function(){return i.getCurrentSeriesIndices()},font:function(t){return So(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=Vo(t.get("barWidth"),r),c=Vo(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=Vo(t.categoryGap,o),r=Vo(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=Do([r,-o],d);var f=e.getModel("axisLabel").get("rotate")||0,p=FD.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",Es(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 MN(e,function(e){var r=a[e]=o();MN(t[e],function(t,o){if(hL.isValidType(o)){var a={type:o,visual:t};n&&n(a,e),r[o]=new hL(a),"opacity"===o&&((a=i(a)).type="colorAlpha",r.__hidden.__alphaForOpacity=new hL(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);TN(PN,function(t,e){(!i||!i.include||AN(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:LN})}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[VN]||(a[BN]||(a[BN]=yy),Nr(a,BN,i,e)(t,n))}}function yy(t,e){if(!t.isDisposed()){var i=t.getZr();i[VN]=!0,t.dispatchAction({type:"brushSelect",batch:e}),i[VN]=!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 $N(i,function(t){var i=t.getData();i&&$N(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=Zo(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;$N(["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"]=Bo(a[0]+o,a,[0,100],!0)}})}function By(t){var e={};return tO(["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");tO([["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),Nr(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[fO]||(e[fO]={})}function Xy(t,e){var i=new oc(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=hL.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&&YO[e.type]&&r.baseAxis&&r.valueAxis){var s=XO(a,r.baseAxis.dim),l=XO(a,r.valueAxis.dim);e.coord=YO[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++)YO[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(pE),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 gE(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[mE]=null}function i_(t){return n_(t).length}function n_(t){var e=t[mE];return e||(e=t[mE]=[{}]),e}function o_(t,e,i){(this._brushController=new zf(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 SE(t)}function h_(){if(!TE&&AE){TE=!0;var t=AE.styleSheets;t.length<31?AE.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(sR,t)}function g_(t){return cR(1e4*t)/1e4}function m_(t){return t-vR}function v_(t,e){var i=e?t.textFill:t.fill;return null!=i&&i!==hR}function y_(t,e){var i=e?t.textStroke:t.stroke;return null!=i&&i!==hR}function x_(t,e){e&&__(t,"transform","matrix("+uR.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?hR:o,"none"!==t.getAttribute("clip-path")&&o===hR&&(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",hR);if(y_(e,i)){var a=i?e.textStroke:e.stroke;__(t,"stroke",a="transparent"===a?hR: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",cR(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",hR)}function S_(t){for(var e=[],i=t.data,n=t.len(),o=0;o=gR||!m_(g)&&(d>-pR&&d<0||d>pR)==!!p;var y=g_(s+u*fR(c)),x=g_(l+h*dR(c));m&&(d=p?gR-1e-4:1e-4-gR,v=!0,9===o&&e.push("M",y,x));var _=g_(s+u*fR(c+d)),w=g_(l+h*dR(c+d));e.push("A",g_(u),g_(h),cR(f*mR),+v,+p,_,w);break;case lR.Z:a="Z";break;case lR.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}},tS=Qb([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),eS={getLineStyle:function(t){var e=tS(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]}},iS=Qb([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),nS={getAreaStyle:function(t,e){return iS(this,t,e)}},oS=Math.pow,aS=Math.sqrt,rS=1e-8,sS=1e-4,lS=aS(3),uS=1/3,hS=V(),cS=V(),dS=V(),fS=Math.min,pS=Math.max,gS=Math.sin,mS=Math.cos,vS=2*Math.PI,yS=V(),xS=V(),_S=V(),wS=[],bS=[],SS={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},MS=[],IS=[],TS=[],AS=[],DS=Math.min,CS=Math.max,LS=Math.cos,kS=Math.sin,PS=Math.sqrt,NS=Math.abs,OS="undefined"!=typeof Float32Array,ES=function(t){this._saveData=!t,this._saveData&&(this.data=[]),this._ctx=null};ES.prototype={constructor:ES,_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=NS(1/Xw/t)||0,this._uy=NS(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(SS.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=NS(t-this._xi)>this._ux||NS(e-this._yi)>this._uy||this._len<5;return this.addData(SS.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(SS.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(SS.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(SS.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=LS(o)*i+t,this._yi=kS(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(SS.R,t,e,i,n),this},closePath:function(){this.addData(SS.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?DS(f,t):CS(f,t),c>=0?DS(p,e):CS(p,e));h=f-t,c=p-e,this._dashOffset=-PS(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=tn,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+=PS(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=-PS(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,OS&&(this.data=new Float32Array(t)))},getBoundingRect:function(){MS[0]=MS[1]=TS[0]=TS[1]=Number.MAX_VALUE,IS[0]=IS[1]=AS[0]=AS[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,i=0,n=0,o=0,a=0;al||NS(r-o)>u||c===h-1)&&(t.lineTo(a,r),n=a,o=r);break;case SS.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 SS.Q:t.quadraticCurveTo(s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case SS.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=LS(v)*g+f,i=kS(v)*m+p),n=LS(M)*g+f,o=kS(M)*m+p;break;case SS.R:e=n=s[c],i=o=s[c+1],t.rect(s[c++],s[c++],s[c++],s[c++]);break;case SS.Z:t.closePath(),n=e,o=i}}}},ES.CMD=SS;var RS=2*Math.PI,zS=2*Math.PI,BS=ES.CMD,VS=2*Math.PI,GS=1e-4,FS=[-1,-1,-1],WS=[-1,-1],HS=fb.prototype.getCanvasPattern,ZS=Math.abs,US=new ES(!0);Pn.prototype={constructor:Pn,type:"path",__dirtyPath:!0,strokeContainThreshold:5,subPixelOptimize:!1,brush:function(t,e){var i=this.style,n=this.path||US,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=HS.call(r,t)),u?t.strokeStyle=this._strokeGradient:c&&(t.strokeStyle=HS.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 ES},getBoundingRect:function(){var t=this._rect,e=this.style,i=!t;if(i){var n=this.path;n||(n=this.path=new ES),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)),kn(a,r/s,t,e)))return!0}if(o.hasFill())return Ln(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&&ZS(t[0]-1)>1e-10&&ZS(t[3]-1)>1e-10?Math.sqrt(ZS(t[0]*t[3]-t[2]*t[1])):1}},Pn.extend=function(t){var e=function(e){Pn.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,Pn);for(var i in t)"style"!==i&&"shape"!==i&&(e.prototype[i]=t[i]);return e},u(Pn,di);var XS=ES.CMD,jS=[[],[],[]],YS=Math.sqrt,qS=Math.atan2,KS=function(t,e){var i,n,o,a,r,s,l=t.data,u=XS.M,h=XS.C,c=XS.L,d=XS.R,f=XS.A,p=XS.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([Bn(s[0],f[0],l[0],u[0],d,p,g),Bn(s[1],f[1],l[1],u[1],d,p,g)])}return n},fM=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:Po,Group:tb,Image:fi,Text:rM,Circle:sM,Sector:hM,Ring:cM,Polygon:pM,Polyline:gM,Rect:yM,Line:_M,BezierCurve:bM,Arc:SM,IncrementalDisplayable:Zn,CompoundPath:MM,LinearGradient:TM,RadialGradient:AM,BoundingRect:de}),BM=["textStyle","color"],VM={getTextColor:function(t){var e=this.ecModel;return this.getShallow("color")||(!t&&e?e.get(BM):null)},getFont:function(){return So({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("lineHeight"),this.getShallow("rich"),this.getShallow("truncateText"))}},GM=Qb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]),FM={getItemStyle:function(t,e){var i=GM(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]}},WM=h,HM=Bi();No.prototype={constructor:No,init:null,mergeOption:function(t){n(this.option,t,!0)},get:function(t,e){return null==t?this.option:Oo(this.option,this.parsePath(t),!e&&Eo(this,t))},getShallow:function(t,e){var i=this.option,n=null==i?i:i[t],o=!e&&Eo(this,t);return null==n&&o&&(n=o.getShallow(t)),n},getModel:function(t,e){var i,n=null==t?this.option:Oo(this.option,t=this.parsePath(t));return e=e||(i=Eo(this,t))&&i.getModel(t),new No(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){HM(this).getParent=t},isAnimationEnabled:function(){if(!U_.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},ji(No),Yi(No),WM(No,eS),WM(No,nS),WM(No,VM),WM(No,FM);var ZM=0,UM=1e-4,XM=9007199254740991,jM=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/,YM=(Object.freeze||Object)({linearMap:Bo,parsePercent:Vo,round:Go,asc:Fo,getPrecision:Wo,getPrecisionSafe:Ho,getPixelPrecision:Zo,getPercentWithPrecision:Uo,MAX_SAFE_INTEGER:XM,remRadian:Xo,isRadianAroundZero:jo,parseDate:Yo,quantity:qo,nice:$o,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:Jo,isNumeric:Qo}),qM=L,KM=/([&<>"'])/g,$M={"&":"&","<":"<",">":">",'"':""","'":"'"},JM=["a","b","c","d","e","f","g"],QM=function(t,e){return"{"+t+(null==e?"":e)+"}"},tI=ze,eI=(Object.freeze||Object)({addCommas:ta,toCamelCase:ea,normalizeCssArray:qM,encodeHTML:ia,formatTpl:na,formatTplSimple:oa,getTooltipMarker:aa,formatTime:sa,capitalFirst:la,truncateText:tI,getTextBoundingRect:function(t){return ke(t.text,t.font,t.textAlign,t.textVerticalAlign,t.textPadding,t.textLineHeight,t.rich,t.truncate)},getTextRect:function(t,e,i,n,o,a,r,s){return ke(t,e,i,n,o,s,a,r)}}),iI=d,nI=["left","right","top","bottom","width","height"],oI=[["width","left","right"],["height","top","bottom"]],aI=ua,rI=(v(ua,"vertical"),v(ua,"horizontal"),{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")}}}),sI=Bi(),lI=No.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,i,n){No.call(this,t,e,i,n),this.uid=Ro("ec_cpt_model")},init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i)},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,o=i?ga(t):{};n(t,e.getTheme().get(this.mainType)),n(t,this.getDefaultOption()),i&&pa(t,o,i)},mergeOption:function(t,e){n(this.option,t,!0);var i=this.layoutMode;i&&pa(this.option,t,i)},optionUpdated:function(t,e){},getDefaultOption:function(){var t=sI(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)})}});$i(lI,{registerWhenExtend:!0}),function(t){var e={};t.registerSubTypeDefaulter=function(t,i){t=Ui(t),e[t.main]=i},t.determineSubType=function(i,n){var o=n.type;if(!o){var a=Ui(i).main;t.hasSubTypes(i)&&e[a]&&(o=e[a](n))}return o}}(lI),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")})}}}(lI,function(t){var e=[];return d(lI.getClassesByMainType(t),function(t){e=e.concat(t.prototype.dependencies||[])}),e=f(e,function(t){return Ui(t).main}),"dataset"!==t&&l(e,"dataset")<=0&&e.unshift("dataset"),e}),h(lI,rI);var uI="";"undefined"!=typeof navigator&&(uI=navigator.platform||"");var hI={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],gradientColor:["#f6efa6","#d88273","#bf444c"],textStyle:{fontFamily:uI.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},cI=Bi(),dI={clearColorPalette:function(){cI(this).colorIdx=0,cI(this).colorNameMap={}},getColorFromPalette:function(t,e,i){var n=cI(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?va(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}}},fI={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),xa(o)&&(n.set("x",o),e.firstCategoryDimIndex=0),xa(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),xa(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),xa(a)&&(n.set("radius",a),e.firstCategoryDimIndex=0),xa(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),xa(s)&&null==e.firstCategoryDimIndex&&(n.set(l,s),e.firstCategoryDimIndex=a)})}},pI="original",gI="arrayRows",mI="objectRows",vI="keyedColumns",yI="unknown",xI="typedArray",_I="column",wI="row";_a.seriesDataToSource=function(t){return new _a({data:t,sourceFormat:S(t)?xI:pI,fromDataset:!1})},Yi(_a);var bI=Bi(),SI="\0_ec_inner",MI=No.extend({init:function(t,e,i,n){i=i||{},this.option=null,this._theme=new No(i),this._optionManager=n},setOption:function(t,e){k(!(SI 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)):Ea.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=[];Sa(this),d(t,function(t,o){null!=t&&(lI.hasClass(o)?o&&r.push(o):e[o]=null==e[o]?i(t):n(e[o],t,!0))}),lI.topologicalTravel(r,lI.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=za(i,n,t.exist))});var l=Ra(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=lI.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&&Ba(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(lI.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[SI],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 Va(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}(Va(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){Ba(this,g(this._componentsMap.get("series"),t,e))},restoreData:function(t){var e=this._componentsMap;Ba(this,e.get("series"));var i=[];e.each(function(t,e){i.push(e)}),lI.topologicalTravel(i,lI.getAllClassMainTypes(),function(i,n){d(e.get(i),function(e){("series"!==i||!Na(e,t))&&e.restoreData()})})}});h(MI,dI);var II=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption","getViewOfComponentModel","getViewOfSeriesModel"],TI={};Fa.prototype={constructor:Fa,create:function(t,e){var i=[];d(TI,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()}},Fa.register=function(t,e){TI[t]=e},Fa.get=function(t){return TI[t]};var AI=d,DI=i,CI=f,LI=n,kI=/^(min|max)?(.+)$/;Wa.prototype={constructor:Wa,setOption:function(t,e){t&&d(Di(t.series),function(t){t&&t.data&&S(t.data)&&N(t.data)}),t=DI(t,!0);var i=this._optionBackup,n=Ha.call(this,t,e,!i);this._newBaseOption=n.baseOption,i?(ja(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=CI(e.timelineOptions,DI),this._mediaList=CI(e.mediaList,DI),this._mediaDefault=DI(e.mediaDefault),this._currentMediaIndices=[],DI(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i.length){var n=t.getComponent("timeline");n&&(e=DI(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=yr(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}();UI.dirty=function(){this._dirty=!0,this._onDirty&&this._onDirty(this.context)},UI.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=aa({color:v,type:"subItem",renderMode:n,markerId:d}),g="string"==typeof p?p:p.content,m=(r?g+ia(o.displayName||"-")+": ":"")+ia("ordinal"===c?t+"":"time"===c?e?"":sa("yyyy/MM/dd hh:mm:ss",t):ta(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(fr(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?fr(h,t,c[0]):m?g[0]:g)).content,_=a.seriesIndex+"at"+u,b=aa({color:v,type:"item",renderMode:n,markerId:_});l[_]=v,++u;var S=h.getName(t),M=this.name;Oi(this)||(M=""),M=M?ia(M)+(e?": ":r):"";var I="string"==typeof b?b:b.content;return{html:e?I+M+x:M+I+(S?ia(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=dI.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(YI,ZI),h(YI,dI);var qI=function(){this.group=new tb,this.uid=Ro("viewComponent")};qI.prototype={constructor:qI,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){},filterForExposedEvent:null};var KI=qI.prototype;KI.updateView=KI.updateLayout=KI.updateVisual=function(t,e,i,n){},ji(qI),$i(qI,{registerWhenExtend:!0});var $I=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"}},JI=Bi(),QI=$I();Ar.prototype={type:"chart",init:function(t,e){},render:function(t,e,i,n){},highlight:function(t,e,i,n){Cr(t.getData(),n,"emphasis")},downplay:function(t,e,i,n){Cr(t.getData(),n,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){},incrementalPrepareRender:null,incrementalRender:null,updateTransform:null,filterForExposedEvent:null};var tT=Ar.prototype;tT.updateView=tT.updateLayout=tT.updateVisual=function(t,e,i,n){this.render(t,e,i,n)},ji(Ar),$i(Ar,{registerWhenExtend:!0}),Ar.markUpdateMethod=function(t,e){JI(t).updateMethod=e};var eT={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)}}},iT="\0__throttleOriginMethod",nT="\0__throttleRate",oT="\0__throttleType",aT={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 IM||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}}}},rT={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:""}}}},sT=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=rT.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}}},uT.getPipeline=function(t){return this._pipelineMap.get(t)},uT.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}},uT.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}),jr(e,t,t.dataTask)})},uT.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&&zr(this,n,o,e,i),n.overallReset&&Br(this,n,o,e,i)},this)},uT.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,jr(this,e,o)},uT.performDataProcessorTasks=function(t,e){Rr(this,this._dataProcessorHandlers,t,e,{block:!0})},uT.performVisualTasks=function(t,e,i){Rr(this,this._visualHandlers,t,e,i)},uT.performSeriesTasks=function(t){var e;t.eachSeries(function(t){e|=t.dataTask.perform()}),this.unfinished|=e},uT.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 hT=uT.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},cT=Ur(0);Er.wrapStageHandler=function(t,e){return x(t)&&(t={overallReset:t,seriesType:Yr(t)}),t.uid=Ro("stageHandler"),e&&(t.visualType=e),t};var dT,fT={},pT={};qr(fT,MI),qr(pT,Ga),fT.eachSeriesByType=fT.eachRawSeriesByType=function(t){dT=t},fT.eachComponent=function(t){"series"===t.mainType&&t.subType&&(dT=t.subType)};var gT=["#37A2DA","#32C5E9","#67E0E3","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#E062AE","#E690D1","#e7bcf3","#9d96f5","#8378EA","#96BFFF"],mT={color:gT,colorLayer:[["#37A2DA","#ffd85c","#fd7b5f"],["#37A2DA","#67E0E3","#FFDB5C","#ff9f7f","#E062AE","#9d96f5"],["#37A2DA","#32C5E9","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#e7bcf3","#8378EA","#96BFFF"],gT]},vT=["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53","#eedd78","#73a373","#73b9bc","#7289ab","#91ca8c","#f49f42"],yT={color:vT,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:vT[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:vT},gauge:{title:{textStyle:{color:"#eee"}}},candlestick:{itemStyle:{normal:{color:"#FD1050",color0:"#0CF49B",borderColor:"#FD1050",borderColor0:"#0CF49B"}}}};yT.categoryAxis.splitLine.show=!1,lI.extend({type:"dataset",defaultOption:{seriesLayoutBy:_I,sourceHeader:null,dimensions:null,source:null},optionUpdated:function(){wa(this)}}),qI.extend({type:"dataset"});var xT=Pn.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()}}),_T=/[\s,]+/;$r.prototype.parse=function(t,e){e=e||{};var i=Kr(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),es(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(_T);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=as(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 yM({shape:{x:0,y:0,width:a,height:r}})),{root:n,width:a,height:r,viewBoxRect:l,viewBoxTransform:u}},$r.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=bT[i]){var o=r.call(this,t),a=t.getAttribute("id");a&&(this._defs[a]=o)}}else{var r=wT[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)},$r.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 rM({style:{text:t.textContent,transformText:!0},position:[this._textX||0,this._textY||0]});Qr(e,o),es(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 wT={g:function(t,e){var i=new tb;return Qr(e,i),es(t,i,this._defs),i},rect:function(t,e){var i=new yM;return Qr(e,i),es(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 sM;return Qr(e,i),es(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 _M;return Qr(e,i),es(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 xT;return Qr(e,i),es(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=ts(i));var n=new pM({shape:{points:i||[]}});return Qr(e,n),es(t,n,this._defs),n},polyline:function(t,e){var i=new Pn;Qr(e,i),es(t,i,this._defs);var n=t.getAttribute("points");return n&&(n=ts(n)),new gM({shape:{points:n||[]}})},image:function(t,e){var i=new fi;return Qr(e,i),es(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 Qr(e,r),es(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 Qr(e,r),es(t,r,this._defs),this._textX+=o,this._textY+=a,r},path:function(t,e){var i=Rn(t.getAttribute("d")||"");return Qr(e,i),es(t,i,this._defs),i}},bT={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 TM(e,i,n,o);return Jr(t,a),a},radialgradient:function(t){}},ST={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"},MT=/url\(\s*#(.*?)\)/,IT=/(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g,TT=/([^\s:;]+)\s*:\s*([^:;]+)/g,AT=R(),DT={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,CT[e])(t)}),AT.set(t,n)},retrieveMap:function(t){return AT.get(t)}},CT={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=Kr(t.source)}},LT=k,kT=d,PT=x,NT=w,OT=lI.parseClassType,ET={zrender:"4.0.6"},RT=1e3,zT=1e3,BT=3e3,VT={PROCESSOR:{FILTER:RT,STATISTIC:5e3},VISUAL:{LAYOUT:zT,GLOBAL:2e3,CHART:BT,COMPONENT:4e3,BRUSH:5e3}},GT="__flagInMainProcess",FT="__optionUpdated",WT=/^[a-zA-Z0-9_]+$/;ls.prototype.on=ss("on"),ls.prototype.off=ss("off"),ls.prototype.one=ss("one"),h(ls,fw);var HT=us.prototype;HT._onframe=function(){if(!this._disposed){var t=this._scheduler;if(this[FT]){var e=this[FT].silent;this[GT]=!0,cs(this),ZT.update.call(this),this[GT]=!1,this[FT]=!1,gs.call(this,e),ms.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),fs(this,n),t.performVisualTasks(n),bs(this,this._model,0,"remain"),i-=+new Date-o}while(i>0&&t.unfinished);t.unfinished||this._zr.flush()}}},HT.getDom=function(){return this._dom},HT.getZr=function(){return this._zr},HT.setOption=function(t,e,i){var n;if(NT(e)&&(i=e.lazyUpdate,n=e.silent,e=e.notMerge),this[GT]=!0,!this._model||e){var o=new Wa(this._api),a=this._theme,r=this._model=new MI(null,null,a,o);r.scheduler=this._scheduler,r.init(null,null,a,o)}this._model.setOption(t,qT),i?(this[FT]={silent:n},this[GT]=!1):(cs(this),ZT.update.call(this),this._zr.flush(),this[FT]=!1,this[GT]=!1,gs.call(this,n),ms.call(this,n))},HT.setTheme=function(){console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},HT.getModel=function(){return this._model},HT.getOption=function(){return this._model&&this._model.getOption()},HT.getWidth=function(){return this._zr.getWidth()},HT.getHeight=function(){return this._zr.getHeight()},HT.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},HT.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)},HT.getSvgDataUrl=function(){if(U_.svgSupported){var t=this._zr;return d(t.storage.getDisplayList(),function(t){t.stopAnimation(!0)}),t.painter.pathToDataUrl()}},HT.getDataURL=function(t){var e=(t=t||{}).excludeComponents,i=this._model,n=[],o=this;kT(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 kT(n,function(t){t.group.ignore=!1}),a},HT.getConnectedDataURL=function(t){if(U_.canvasSupported){var e=this.group,n=Math.min,o=Math.max;if(eA[e]){var a=1/0,r=1/0,s=-1/0,l=-1/0,u=[],h=t&&t.pixelRatio||1;d(tA,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 kT(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)}},HT.convertToPixel=v(hs,"convertToPixel"),HT.convertFromPixel=v(hs,"convertFromPixel"),HT.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},HT.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)},HT.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},HT.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var ZT={prepareAndUpdate:function(t){cs(this),ZT.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),fs(this,e),o.update(e,i),xs(e),a.performVisualTasks(e,t),_s(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")}Ss(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)}),xs(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0,dirtyMap:a}),bs(i,e,0,t,a),Ss(e,this._api)}},updateView:function(t){var e=this._model;e&&(Ar.markUpdateMethod(t,"updateView"),xs(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0}),_s(this,this._model,this._api,t),Ss(e,this._api))},updateVisual:function(t){ZT.update.call(this,t)},updateLayout:function(t){ZT.update.call(this,t)}};HT.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[GT]=!0,i&&cs(this),ZT.update.call(this),this[GT]=!1,gs.call(this,n),ms.call(this,n)}},HT.showLoading=function(t,e){if(NT(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),QT[t]){var i=QT[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},HT.hideLoading=function(){this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},HT.makeActionFromEvent=function(t){var e=a({},t);return e.type=jT[t.type],e},HT.dispatchAction=function(t,e){NT(e)||(e={silent:!!e}),XT[t.type]&&this._model&&(this[GT]?this._pendingActions.push(t):(ps.call(this,t,e.silent),e.flush?this._zr.flush(!0):!1!==e.flush&&U_.browser.weChat&&this._throttledZrFlush(),gs.call(this,e.silent),ms.call(this,e.silent)))},HT.appendData=function(t){var e=t.seriesIndex;this.getModel().getSeriesByIndex(e).appendData(t),this._scheduler.unfinished=!0},HT.on=ss("on"),HT.off=ss("off"),HT.one=ss("one");var UT=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];HT._initEvents=function(){kT(UT,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),kT(jT,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},HT.isDisposed=function(){return this._disposed},HT.clear=function(){this.setOption({series:[]},!0)},HT.dispose=function(){if(!this._disposed){this._disposed=!0,Fi(this.getDom(),oA,"");var t=this._api,e=this._model;kT(this._componentsViews,function(i){i.dispose(e,t)}),kT(this._chartsViews,function(i){i.dispose(e,t)}),this._zr.dispose(),delete tA[this.id]}},h(us,fw),Ds.prototype={constructor:Ds,normalizeQuery:function(t){var e={},i={},n={};if(_(t)){var o=OT(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 XT={},jT={},YT=[],qT=[],KT=[],$T=[],JT={},QT={},tA={},eA={},iA=new Date-0,nA=new Date-0,oA="_echarts_instance_",aA=Ls;Bs(2e3,aT),Ns(BI),Os(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(ar)}),Gs("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 yM({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4}),n=new SM({shape:{startAngle:-lT/2,endAngle:-lT/2+.1,r:10},style:{stroke:e.color,lineCap:"round",lineWidth:5},zlevel:e.zlevel,z:10001}),o=new yM({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*lT/2}).start("circularInOut"),n.animateShape(!0).when(1e3,{startAngle:3*lT/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}),Es({type:"highlight",event:"highlight",update:"highlight"},B),Es({type:"downplay",event:"downplay",update:"downplay"},B),Ps("light",mT),Ps("dark",yT);var rA={};Xs.prototype={constructor:Xs,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(js(t,{},n,"_oldKeyGetter",this),js(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={},el(this)},yA._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={},el(this)}},yA.count=function(){return this._count},yA.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},yA.getApproximateExtent=function(t){return t=this.getDimension(t),this._approximateExtent[t]||this.getDataExtent(t)},yA.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},yA.getCalculationInfo=function(t){return this._calculationInfo[t]},yA.setCalculationInfo=function(t,e){lA(t)?a(this._calculationInfo,t):this._calculationInfo[t]=e},yA.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},yA.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},yA.getRawIndex=nl,yA.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},yA.downSample=function(t,e,i,n){for(var o=sl(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($s(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=ol,o},yA.getItemModel=function(t){var e=this.hostModel;return new No(this.getRawDataItem(t),e,e&&e.ecModel)},yA.diff=function(t){var e=this;return new Xs(t?t.getIndices():[],this.getIndices(),function(e){return al(t,e)},function(t){return al(e,t)})},yA.getVisual=function(t){var e=this._visual;return e&&e[t]},yA.setVisual=function(t,e){if(lA(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},yA.setLayout=function(t,e){if(lA(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},yA.getLayout=function(t){return this._layout[t]},yA.getItemLayout=function(t){return this._itemLayouts[t]},yA.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?a(this._itemLayouts[t]||{},e):e},yA.clearItemLayouts=function(){this._itemLayouts.length=0},yA.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],o=n&&n[e];return null!=o||i?o:this.getVisual(e)},yA.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{},o=this.hasItemVisual;if(this._itemVisuals[t]=n,lA(e))for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a],o[a]=!0);else n[e]=i,o[e]=!0},yA.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};var xA=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};yA.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(xA,e)),this._graphicEls[t]=e},yA.getItemGraphicEl=function(t){return this._graphicEls[t]},yA.eachItemGraphicEl=function(t,e){d(this._graphicEls,function(i,n){i&&t&&t.call(e,i,n)})},yA.cloneShallow=function(t){if(!t){var e=f(this.dimensions,this.getDimensionInfo,this);t=new vA(e,this.hostModel)}if(t._storage=this._storage,Qs(t,this),this._indices){var i=this._indices.constructor;t._indices=new i(this._indices)}else t._indices=null;return t.getRawIndex=t._indices?ol:nl,t},yA.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)))})},yA.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],yA.CHANGABLE_METHODS=["filterSelf","selectRange"];var _A=function(t,e){return e=e||{},hl(e.coordDimensions||[],t,{dimsDef:e.dimensionsDefine||t.dimensionsDefine,encodeDef:e.encodeDefine||t.encodeDefine,dimCount:e.dimensionsCount,generateCoord:e.generateCoord,generateCoordCount:e.generateCoordCount})};xl.prototype.parse=function(t){return t},xl.prototype.getSetting=function(t){return this._setting[t]},xl.prototype.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},xl.prototype.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},xl.prototype.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},xl.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1])},xl.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},xl.prototype.getExtent=function(){return this._extent.slice()},xl.prototype.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},xl.prototype.isBlank=function(){return this._isBlank},xl.prototype.setBlank=function(t){this._isBlank=t},xl.prototype.getLabel=null,ji(xl),$i(xl,{registerWhenExtend:!0}),_l.createByAxisModel=function(t){var e=t.option,i=e.data,n=i&&f(i,bl);return new _l({categories:n,needCollect:!n,deduplication:!1!==e.dedplication})};var wA=_l.prototype;wA.getOrdinal=function(t){return wl(this).get(t)},wA.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=wl(this);return null==(e=n.get(t))&&(i?(e=this.categories.length,this.categories[e]=t,n.set(t,e)):e=NaN),e};var bA=xl.prototype,SA=xl.extend({type:"ordinal",init:function(t,e){t&&!y(t)||(t=new _l({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),bA.contain.call(this,t)&&null!=this._ordinalMeta.categories[t]},normalize:function(t){return bA.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(bA.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});SA.create=function(){return new SA};var MA=Go,IA=Go,TA=xl.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]),TA.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=Ml(t)},getTicks:function(){return Al(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=Ho(t)||0:"auto"===i&&(i=this._intervalPrecision),t=IA(t,i,!0),ta(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=Sl(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]=IA(Math.floor(e[0]/o)*o)),t.fixMax||(e[1]=IA(Math.ceil(e[1]/o)*o))}});TA.create=function(){return new TA};var AA="__ec_stack_",DA="undefined"!=typeof Float32Array?Float32Array:Array,CA={seriesType:"bar",plan:$I(),reset:function(t){if(Rl(t)&&zl(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=Ol(Pl([t]),n,t).width;return u>.5||(u=.5),{progress:function(t,e){for(var n,h=new DA(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:Bl(0,o),valueAxisHorizontal:s})}}}}},LA=TA.prototype,kA=Math.ceil,PA=Math.floor,NA=function(t,e,i,n){for(;i>>1;t[o][1]i&&(a=i);var r=EA.length,s=NA(EA,a,0,r),l=EA[Math.min(s,r-1)],u=l[1];"year"===l[0]&&(u*=$o(o/u/t,!0));var h=this.getSetting("useUTC")?0:60*new Date(+n[0]||+n[1]).getTimezoneOffset()*1e3,c=[Math.round(kA((n[0]-h)/u)*u+h),Math.round(PA((n[1]-h)/u)*u+h)];Tl(c,n),this._stepLvl=l,this._interval=u,this._niceExtent=c},parse:function(t){return+Yo(t)}});d(["contain","normalize"],function(t){OA.prototype[t]=function(e){return LA[t].call(this,this.parse(e))}});var EA=[["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]];OA.create=function(t){return new OA({useUTC:t.ecModel.get("useUTC")})};var RA=xl.prototype,zA=TA.prototype,BA=Ho,VA=Go,GA=Math.floor,FA=Math.ceil,WA=Math.pow,HA=Math.log,ZA=xl.extend({type:"log",base:10,$constructor:function(){xl.apply(this,arguments),this._originalScale=new TA},getTicks:function(){var t=this._originalScale,e=this._extent,i=t.getExtent();return f(zA.getTicks.call(this),function(n){var o=Go(WA(this.base,n));return o=n===e[0]&&t.__fixMin?Vl(o,i[0]):o,o=n===e[1]&&t.__fixMax?Vl(o,i[1]):o},this)},getLabel:zA.getLabel,scale:function(t){return t=RA.scale.call(this,t),WA(this.base,t)},setExtent:function(t,e){var i=this.base;t=HA(t)/HA(i),e=HA(e)/HA(i),zA.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=RA.getExtent.call(this);e[0]=WA(t,e[0]),e[1]=WA(t,e[1]);var i=this._originalScale,n=i.getExtent();return i.__fixMin&&(e[0]=Vl(e[0],n[0])),i.__fixMax&&(e[1]=Vl(e[1],n[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=HA(t[0])/HA(e),t[1]=HA(t[1])/HA(e),RA.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=qo(i);for(t/i*n<=.5&&(n*=10);!isNaN(n)&&Math.abs(n)<1&&Math.abs(n)>0;)n*=10;var o=[Go(FA(e[0]/n)*n),Go(GA(e[1]/n)*n)];this._interval=n,this._niceExtent=o}},niceExtent:function(t){zA.niceExtent.call(this,t);var e=this._originalScale;e.__fixMin=t.fixMin,e.__fixMax=t.fixMax}});d(["contain","normalize"],function(t){ZA.prototype[t]=function(e){return e=HA(e)/HA(this.base),RA[t].call(this,e)}}),ZA.create=function(){return new ZA};var UA={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}},XA=Un({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()}}),jA=Un({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()}}),YA=Un({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()}}),qA=Un({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()}}),KA={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}},$A={};d({line:_M,rect:yM,roundRect:yM,square:yM,circle:sM,diamond:jA,pin:YA,arrow:qA,triangle:XA},function(t,e){$A[e]=new t});var JA=Un({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=$A[n];"none"!==e.symbolType&&(o||(o=$A[n="rect"]),KA[n](e.x,e.y,e.width,e.height,o.shape),o.buildPath(t,o.shape,i))}}),QA={isDimensionStacked:pl,enableDataStack:fl,getStackedDimension:gl},tD=(Object.freeze||Object)({createList:function(t){return ml(t.getSource(),t)},getLayoutRect:ca,dataStack:QA,createScale:function(t,e){var i=e;No.isInstance(e)||h(i=new No(e),UA);var n=Hl(i);return n.setExtent(t[0],t[1]),Wl(n,i),n},mixinAxisModelCommonMethods:function(t){h(t,UA)},completeDimensions:hl,createDimensions:_A,createSymbol:Jl}),eD=1e-8;eu.prototype={constructor:eu,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 eu(e.name,o,e.cp);return a.properties=e,a})},nD=Bi(),oD=[0,1],aD=function(t,e,i){this.dim=t,this.scale=e,this._extent=i||[0,0],this.inverse=!1,this.onBand=!1};aD.prototype={constructor:aD,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 Zo(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&&yu(i=i.slice(),n.count()),Bo(t,oD,i,e)},coordToData:function(t,e){var i=this._extent,n=this.scale;this.onBand&&"ordinal"===n.type&&yu(i=i.slice(),n.count());var o=Bo(t,i,oD,e);return this.scale.scale(o)},pointToData:function(t,e){},getTicksCoords:function(t){var e=(t=t||{}).tickModel||this.getTickModel(),i=au(this,e),n=f(i.ticks,function(t){return{coord:this.dataToCoord(t),tickValue:t}},this),o=e.get("alignWithLabel");return xu(this,n,i.tickCategoryInterval,o,t.clamp),n},getViewLabels:function(){return ou(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 pu(this)}};var rD=iD,sD={};d(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],function(t){sD[t]=aw[t]});var lD={};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){lD[t]=zM[t]}),YI.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return ml(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 uD=wu.prototype,hD=wu.getSymbolSize=function(t,e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array?i.slice():[+i,+i]};uD._createSymbol=function(t,e,i,n,o){this.removeAll();var a=Jl(t,-1,-1,2,2,e.getItemVisual(i,"color"),o);a.attr({z2:100,culling:!0,scale:bu(n)}),a.drift=Su,this._symbolType=t,this.add(a)},uD.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(t)},uD.getSymbolPath=function(){return this.childAt(0)},uD.getScale=function(){return this.childAt(0).scale},uD.highlight=function(){this.childAt(0).trigger("emphasis")},uD.downplay=function(){this.childAt(0).trigger("normal")},uD.setZ=function(t,e){var i=this.childAt(0);i.zlevel=t,i.z=e},uD.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":"pointer"},uD.updateData=function(t,e,i){this.silent=!1;var n=t.getItemVisual(e,"symbol")||"circle",o=t.hostModel,a=hD(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,Io(l,{scale:bu(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),To(l,h,o,e)}this._seriesModel=o};var cD=["itemStyle"],dD=["emphasis","itemStyle"],fD=["label"],pD=["emphasis","label"];uD._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(cD).getItemStyle(["color"]),u=m.getModel(dD).getItemStyle(),h=m.getShallow("symbolRotate"),c=m.getShallow("symbolOffset"),d=m.getModel(fD),f=m.getModel(pD),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",[Vo(c[0],i[0]),Vo(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;go(v,u,d,f,{labelFetcher:r,labelDataIndex:e,defaultText:function(e,i){return w?t.getName(e):_u(t,e)},isRectText:!0,autoColor:s}),o.off("mouseover").off("mouseout").off("emphasis").off("normal"),o.hoverStyle=u,fo(o),o.__symbolOriginalScale=bu(i),p&&r.isAnimationEnabled()&&o.on("mouseover",Mu).on("mouseout",Iu).on("emphasis",Tu).on("normal",Au)},uD.fadeOut=function(t,e){var i=this.childAt(0);this.silent=i.silent=!0,!(e&&e.keepLabel)&&(i.style.text=null),Io(i,{style:{opacity:0},scale:[0,0]},this._seriesModel,this.dataIndex,t)},u(wu,tb);var gD=Du.prototype;gD.updateData=function(t,e){e=Lu(e);var i=this.group,n=t.hostModel,o=this._data,a=this._symbolCtor,r=ku(t);o||i.removeAll(),t.diff(o).add(function(n){var o=t.getItemLayout(n);if(Cu(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);Cu(t,h,s,e)?(u?(u.updateData(t,s,r),Io(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},gD.isPersistent=function(){return!0},gD.updateLayout=function(){var t=this._data;t&&t.eachItemGraphicEl(function(e,i){var n=t.getItemLayout(i);e.attr("position",n)})},gD.incrementalPrepareUpdate=function(t){this._seriesScope=ku(t),this._data=null,this.group.removeAll()},gD.incrementalUpdate=function(t,e,i){i=Lu(i);for(var n=t.start;n0&&Ru(i[o-1]);o--);for(;n0&&Ru(i[a-1]);a--);for(;o=0){var r=o.getItemGraphicEl(a);if(!r){var s=o.getItemLayout(a);if(!s)return;(r=new wu(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 Ar.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 Ar.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new MD({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 ID({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=mD(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=Yu(u.current,i,o),c=Yu(u.stackedOnCurrent,i,o),d=Yu(u.next,i,o),f=Yu(u.stackedOnNext,i,o)),r.shape.__points=u.current,r.shape.points=h,Io(r,{shape:{points:d}},l),s&&(s.setShape({points:h,stackedOnPoints:c}),Io(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(kD,aD);var PD={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)"]}}},ND={};ND.categoryAxis=n({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},PD),ND.valueAxis=n({boundaryGap:[0,0],splitNumber:5},PD),ND.timeAxis=r({scale:!0,min:"dataMin",max:"dataMax"},ND.valueAxis),ND.logAxis=r({scale:!0,logBase:10},ND.valueAxis);var OD=["value","category","time","log"],ED=function(t,e,i,a){d(OD,function(r){e.extend({type:t+"Axis."+r,mergeDefaultAndTheme:function(e,o){var a=this.layoutMode,s=a?ga(e):{};n(e,o.getTheme().get(r+"Axis")),n(e,this.getDefaultOption()),e.type=i(t,e),a&&pa(e,s,a)},optionUpdated:function(){"category"===this.option.type&&(this.__ordinalMeta=_l.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([{},ND[r+"Axis"],a],!0)})}),lI.registerSubTypeDefaulter(t+"Axis",v(i,t))},RD=lI.extend({type:"cartesian2dAxis",axis:null,init:function(){RD.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){RD.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){RD.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});n(RD.prototype,UA);var zD={offset:0};ED("x",RD,th,zD),ED("y",RD,th,zD),lI.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 BD=ih.prototype;BD.type="grid",BD.axisPointerEnabled=!0,BD.getRect=function(){return this._rect},BD.update=function(t,e){var i=this._axesMap;this._updateScale(t,this.model),d(i.x,function(t){Wl(t.scale,t.model)}),d(i.y,function(t){Wl(t.scale,t.model)});var n={};d(i.x,function(t){nh(i,"y",t,n)}),d(i.y,function(t){nh(i,"x",t,n)}),this.resize(this.model,e)},BD.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]),ah(t,e?o.x:o.y)})}var o=ca(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=jl(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())},BD.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]}},BD.getAxes=function(){return this._axesList.slice()},BD.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,ph(o)?t.labelOffset+r*l:0],d=e.get("nameRotate");null!=d&&(d=d*GD/180);var f;ph(o)?n=HD(t.rotation,null!=d?d:t.rotation,r):(n=uh(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?tI(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 rM({anid:"name",__fullText:i,__truncatedText:y,position:c,rotation:n.rotation,silent:hh(e),z2:1,tooltip:x&&x.show?a({content:i,formatter:function(){return i},formatterParams:w},x):null});mo(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=lh(e),b.eventData.targetType="axisName",b.eventData.name=i),this._dumbGroup.add(b),b.updateTransform(),this.group.add(b),b.decomposeTransform()}}},HD=FD.innerTextLayout=function(t,e,i){var n,o,a=Xo(e-t);return jo(a)?(o=i>0?"top":"bottom",n="center"):jo(a-GD)?(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}},ZD=d,UD=v,XD=Ws({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,i,n){this.axisPointerClass&&Sh(t),XD.superApply(this,"render",arguments),Dh(this,t,0,i,0,!0)},updateAxisPointer:function(t,e,i,n,o){Dh(this,t,0,i,0,!1)},remove:function(t,e){var i=this._axisPointer;i&&i.remove(e),XD.superApply(this,"remove",arguments)},dispose:function(t,e){Ch(this,e),XD.superApply(this,"dispose",arguments)}}),jD=[];XD.registerAxisPointerClass=function(t,e){jD[t]=e},XD.getAxisPointerClass=function(t){return t&&jD[t]};var YD=["axisLine","axisTickLabel","axisName"],qD=["splitArea","splitLine"],KD=XD.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=Lh(a,t),s=new FD(t,r);d(YD,s.add,s),this._axisGroup.add(s.getGroup()),d(qD,function(e){t.get(e+".show")&&this["_"+e](t,a)},this),Lo(o,this._axisGroup,t),KD.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=DD[o]:"function"==typeof o&&(c=o),c&&t.setData(n.downSample(n.mapDimension(s.dim),1/h,c,CD))}}}}}("line"));var $D=YI.extend({type:"series.__base_bar__",getInitialData:function(t,e){return ml(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:{}}});$D.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 JD=Qb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),QD={getBarItemStyle:function(t){var e=JD(this,t);if(this.getBorderLineDash){var i=this.getBorderLineDash();i&&(e.lineDash=i)}return e}},tC=["itemStyle","barBorderWidth"];a(No.prototype,QD),Zs({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=iC[s.type](a,e,i),l=eC[s.type](a,e,i,r,n,u);a.setItemGraphicEl(e,l),o.add(l),Eh(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=iC[s.type](a,e,h);l?Io(l,{shape:c},u,e):l=eC[s.type](a,e,h,c,n,u,!0),a.setItemGraphicEl(e,l),o.add(l),Eh(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&&Nh(t,u,e):e&&Oh(t,u,e)}).execute(),this._data=a},_renderLarge:function(t,e,i){this._clear(),zh(t,this.group)},_incrementalRenderLarge:function(t,e){zh(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?Oh(e.dataIndex,t,e):Nh(e.dataIndex,t,e)}):e.removeAll(),this._data=null}});var eC={cartesian2d:function(t,e,i,n,o,r,s){var l=new yM({shape:a({},n)});if(r){var u=l.shape,h=o?"height":"width",c={};u[h]=0,c[h]=n[h],zM[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}}},nC=Pn.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 hM({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:o}});return To(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 lC=function(t,e){d(e,function(e){e.update="updateView",Es(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}})})},uC=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)}})}}},hC=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")&&Hh(s,o,a,e,i,n)},cC=2*Math.PI,dC=Math.PI/180,fC=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}}),gC=Uh.prototype;gC.isPersistent=function(){return!this._incremental},gC.updateData=function(t){this.group.removeAll();var e=new pC({rectHover:!0,cursor:"default"});e.setShape({points:t.getLayout("symbolPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},gC.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)})}},gC.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>2e6?(this._incremental||(this._incremental=new Zn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},gC.incrementalUpdate=function(t,e){var i;this._incremental?(i=new pC,this._incremental.addDisplayable(i,!0)):((i=new pC({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)},gC._setCommon=function(t,e,i){var n=e.hostModel,o=e.getVisual("symbolSize");t.setShape("size",o instanceof Array?o:[o,o]),t.symbolProxy=Jl(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))}))},gC.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},gC._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()},Zs({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=AD().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 Uh:new Du,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(){}}),Bs(TD("scatter","circle")),zs(AD("scatter")),u(Xh,aD),jh.prototype.getIndicatorAxes=function(){return this._indicatorAxes},jh.prototype.dataToPoint=function(t,e){var i=this._indicatorAxes[e];return this.coordToPoint(i.dataToCoord(t),e)},jh.prototype.coordToPoint=function(t,e){var i=this._indicatorAxes[e].angle;return[this.cx+t*Math.cos(i),this.cy-t*Math.sin(i)]},jh.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(Go(d-f*u),Go(d+(a-f)*u)),r.setInterval(u)}})},jh.dimensions=[],jh.create=function(t,e){var i=[];return t.eachComponent("radar",function(n){var o=new jh(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},Fa.register("radar",jh);var mC=ND.valueAxis,vC=(Fs({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 No(f,null,this.ecModel),UA);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"}},mC.axisLine),axisLabel:Yh(mC.axisLabel,!1),axisTick:Yh(mC.axisTick,!1),splitLine:Yh(mC.splitLine,!0),splitArea:Yh(mC.splitArea,!0),indicator:[]}}),["axisLine","axisTickLabel","axisName"]);Ws({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 FD(t.model,{position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})}),function(t){d(vC,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 ia(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}});Zs({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=qh(t.getItemVisual(e,"symbolSize")),a=Jl(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"+ia(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)"}}}}),aC);var EC="\0_ec_interaction_mutex";Es({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},function(){}),h(oc,fw);var RC={axisPointer:1,tooltip:1,brush:1};xc.prototype={constructor:xc,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):Io(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 MM({shape:{paths:[]}});i.add(n);var o,s=(C=t.getRegionModel(e.name)||t).getModel(f),u=C.getModel(p),c=mc(s),y=mc(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 pM({shape:{points:t.exterior}}));for(var e=0;e<(t.interiors?t.interiors.length:0);e++)n.shape.paths.push(new pM({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 rM({position:e.center.slice(),scale:[1/h[0],1/h[1]],z2:10,silent:!0});go(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),fo(i,y,{hoverSilentOnTouch:!!t.get("selectedMode")}),l.add(i)}),this._updateController(t,e,i),vc(this,t,l,i,n),yc(t,l)},remove:function(){this._regionsGroup.removeAll(),this._backgroundGroup.removeAll(),this._controller.dispose(),this._mapName&&OC.removeGraphic(this._mapName,this.uid),this._mapName=null,this._controllerHost={}},_updateBackground:function(t){var e=t.map;this._mapName!==e&&d(OC.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,fc(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,pc(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)&&!gc(e,i,t)})}};var zC="__seriesMapHighDown",BC="__seriesMapCallKey";Zs({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 xc(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 sM({style:{fill:t.getData().getVisual("color")},shape:{cx:s[0]+9*l,cy:s[1],r:3},silent:!0,z2:8+(l?0:NM+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[zC],w=Math.random();if(!_){_=m[zC]={};var b=v(_c,!0),S=v(_c,!1);m.on("mouseover",b).on("mouseout",S).on("emphasis",b).on("normal",S)}m[BC]=w,a(_,{recordVersion:w,circle:u,labelModel:p,hoverLabelModel:g,emphasisText:x,normalText:y}),wc(_,!1)}o.add(u)}}})}}),Es({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=bc(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 VC=Q;h(Sc,Tw),Mc.prototype={constructor:Mc,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?VC(i,t,n):G(i,t)},pointToData:function(t){var e=this.invTransform;return e?VC([],t,e):[t[0],t[1]]},convertToPixel:v(Ic,"dataToPoint"),convertFromPixel:v(Ic,"pointToData"),containPoint:function(t){return this.getViewRectAfterRoam().contain(t[0],t[1])}},h(Mc,Tw),Tc.prototype={constructor:Tc,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)}},Vc.prototype={constructor:Vc,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 ia(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}}),Zs({type:"tree",init:function(t,e){this._oldTree,this._mainGroup=new tb,this._controller=new oc(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){td(o,e)&&id(o,e,null,r,t,u)}).update(function(e,i){var n=l.getItemGraphicEl(i);td(o,e)?id(o,e,n,r,t,u):n&&nd(l,i,n,r,t,u)}).remove(function(e){var i=l.getItemGraphicEl(e);i&&nd(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=[];fn(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 Mc;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)&&!gc(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){fc(o,e.dx,e.dy),i.dispatchAction({seriesId:t.id,type:"treeRoam",dx:e.dx,dy:e.dy})},this).on("zoom",function(e){pc(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}}),Es({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})}),Es({type:"treeRoam",event:"treeRoam",update:"none"},function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},function(e){var i=bc(e.coordinateSystem,t);e.setCenter&&e.setCenter(i.center),e.setZoom&&e.setZoom(i.zoom)})});Bs(TD("tree","circle")),zs(function(t,e){t.eachSeriesByType("tree",function(t){sd(t,e)})}),YI.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};dd(i);var n=t.levels||[];n=t.levels=fd(n,e);var o={};return o.levels=n,Vc.createTree(i,this,o).data},optionUpdated:function(){this.resetViewRoot()},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=ta(y(i)?i[0]:i);return ia(e.getName(t)+": "+n)},getDataParams:function(t){var e=YI.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return e.treePathInfo=cd(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 UC=5;pd.prototype={constructor:pd,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),da(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=ha(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 pM({shape:{points:gd(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),md(y,t,p),a+=g+8}},remove:function(){this.group.removeAll()}};var XC=m,jC=tb,YC=yM,qC=d,KC=["label"],$C=["emphasis","label"],JC=["upperLabel"],QC=["emphasis","upperLabel"],tL=10,eL=1,iL=2,nL=Qb([["fill","color"],["stroke","strokeColor"],["lineWidth","strokeWidth"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),oL=function(t){var e=nL(t);return e.stroke=e.fill=e.lineWidth=null,e};Zs({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=ld(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 jC,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,qC(t,function(t,e){!t.isRemoved()&&s(e,e)})):new Xs(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(yd,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&&qC(t,function(t,i){var n=e[i];qC(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(){qC(c,function(t){qC(t,function(t){t.parent&&t.parent.remove(t)})}),qC(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=vd();qC(e.willDeleteEls,function(t,e){qC(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)}})}),qC(this._storage,function(t,i){qC(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(XC(function(){this._state="ready",e.renderFinally()},this)).start()}},_resetController:function(t){var e=this._controller;e||((e=this._controller=new oc(t.getZr())).enable(this.seriesModel.get("roam")),e.on("pan",XC(this._onPan,this)),e.on("zoom",XC(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 pd(this.group))).render(t,e,i.node,XC(function(e){"animating"!==this._state&&(hd(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 aL=["treemapZoomToNode","treemapRender","treemapMove"],rL=0;rL=0&&t.call(e,i[o],o)},TL.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)},TL.breadthFirstTraverse=function(t,e,i,n){if(Jd.isInstance(e)||(e=this._nodesMap[$d(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(Jd,AL("hostGraph","data")),h(Qd,AL("hostGraph","edgeData")),IL.Node=Jd,IL.Edge=Qd,Yi(Jd),Yi(Qd);var DL=function(t,e,i,n,o){for(var a=new IL(n),r=0;r "+f)),h++)}var p,g=i.get("coordinateSystem");if("cartesian2d"===g||"polar"===g)p=ml(t,i);else{var m=Fa.get(g),v=m&&"view"!==m.type?m.dimensions||[]:[];l(v,"value")<0&&v.concat(["value"]);var y=_A(t,{coordDimensions:v});(p=new vA(y,i)).initData(t)}var x=new vA(["value"],i);return x.initData(u,s),o&&o(p,x),kc({mainData:p,struct:a,structAttr:"graph",datas:{node:p,edge:x},datasAttr:{node:"data",edge:"edgeData"}}),a.update(),a},CL=Hs({type:"series.graph",init:function(t){CL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this._categoriesData},this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeOption:function(t){CL.superApply(this,"mergeOption",arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeDefaultAndTheme:function(t){CL.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 DL(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 No({label:a.option},a.parentModel,e),s=o.getModel("emphasis.edgeLabel"),l=new No({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=ia(l.join(" > ")),o.value&&(l+=" : "+ia(o.value)),l}return CL.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 vA(["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 CL.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}}}}),LL=_M.prototype,kL=bM.prototype,PL=Un({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){(tf(e)?LL:kL).buildPath(t,e)},pointAt:function(t){return tf(this.shape)?LL.pointAt.call(this,t):kL.pointAt.call(this,t)},tangentAt:function(t){var e=this.shape,i=tf(e)?[e.x2-e.x1,e.y2-e.y1]:kL.tangentAt.call(this,t);return q(i,i)}}),NL=["fromSymbol","toSymbol"],OL=rf.prototype;OL.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]})}}}},OL._createLine=function(t,e,i){var n=t.hostModel,o=of(t.getItemLayout(e));o.shape.percent=0,To(o,{shape:{percent:1}},n,e),this.add(o);var a=new rM({name:"label",lineLabelOriginalOpacity:1});this.add(a),d(NL,function(i){var n=nf(i,t,e);this.add(n),this[ef(i)]=t.getItemVisual(e,i)},this),this._updateCommonStl(t,e,i)},OL.updateData=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=t.getItemLayout(e),r={shape:{}};af(r.shape,a),Io(o,r,n,e),d(NL,function(i){var n=t.getItemVisual(e,i),o=ef(i);if(this[o]!==n){this.remove(this.childOfName(i));var a=nf(i,t,e);this.add(a)}this[o]=n},this),this._updateCommonStl(t,e,i)},OL._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(NL,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)?Go(x):x}var _=m?g:null,w=v?A(n.getFormattedLabel(e,"emphasis",t.dataType),g):null,b=y.style;null==_&&null==w||(mo(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,fo(this)},OL.highlight=function(){this.trigger("emphasis")},OL.downplay=function(){this.trigger("normal")},OL.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},OL.setLinePoints=function(t){var e=this.childOfName("line");af(e.shape,t),e.dirty()},u(rf,tb);var EL=sf.prototype;EL.isPersistent=function(){return!0},EL.updateData=function(t){var e=this,i=e.group,n=e._lineData;e._lineData=t,n||i.removeAll();var o=hf(t);t.diff(n).add(function(i){lf(e,t,i,o)}).update(function(i,a){uf(e,n,t,a,i,o)}).remove(function(t){i.remove(n.getItemGraphicEl(t))}).execute()},EL.updateLayout=function(){var t=this._lineData;t&&t.eachItemGraphicEl(function(e,i){e.updateLayout(t,i)},this)},EL.incrementalPrepareUpdate=function(t){this._seriesScope=hf(t),this._lineData=null,this.group.removeAll()},EL.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)}}),YL=2*Math.PI,qL=(Ar.extend({type:"gauge",render:function(t,e,i){this.group.removeAll();var n=t.get("axisLine.lineStyle.color"),o=Sf(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)%YL,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 _M({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 jL({shape:{angle:a}});To(i,{shape:{angle:Bo(d.get(f,e),h,c,!0)}},t),l.add(i),d.setItemGraphicEl(e,i)}).update(function(e,i){var n=u.getItemGraphicEl(i);Io(n,{shape:{angle:Bo(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:Vo(a.get("width"),o.r),r:Vo(a.get("length"),o.r)}),t.useStyle(i.getModel("itemStyle").getItemStyle()),"auto"===t.style.fill&&t.setStyle("fill",n(Bo(d.get(f,e),h,[0,1],!0))),fo(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+Vo(l[0],o.r),h=o.cy+Vo(l[1],o.r),c=+t.get("min"),d=+t.get("max"),f=n(Bo(t.getData().get(r,0),[c,d],[0,1],!0));this.group.add(new rM({silent:!0,style:mo({},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+Vo(l[0],o.r),h=o.cy+Vo(l[1],o.r),c=Vo(a.get("width"),o.r),d=Vo(a.get("height"),o.r),f=t.getData(),p=f.get(f.mapDimension("value"),0),g=n(Bo(p,[r,s],[0,1],!0));this.group.add(new rM({silent:!0,style:mo({},a,{x:u,y:h,text:Mf(p,a.get("formatter")),textWidth:isNaN(c)?null:c,textHeight:isNaN(d)?null:d,textAlign:"center",textVerticalAlign:"middle"},{autoColor:g,forceRich:!0})}))}}}),Hs({type:"series.funnel",init:function(t){qL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this._defaultLabelLine(t)},getInitialData:function(t,e){return oC(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=qL.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}}}})),KL=If.prototype,$L=["itemStyle","opacity"];KL.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($L);l=null==l?1:l,n.useStyle({}),i?(n.setShape({points:s.points}),n.setStyle({opacity:0}),To(n,{style:{opacity:l}},o,e)):Io(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),fo(this)},KL._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");Io(i,{shape:{points:r.linePoints||r.linePoints}},o,e),Io(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");go(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(If,tb);Ar.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 If(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(){}});Bs(uC("funnel")),zs(function(t,e,i){t.eachSeriesByType("funnel",function(t){var i=t.getData(),n=i.mapDimension("value"),o=t.get("sort"),a=Tf(t,e),r=Af(i,o),s=[Vo(t.get("minSize"),a.width),Vo(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=Bo(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},tk=d,ek=Math.min,ik=Math.max,nk=Math.floor,ok=Math.ceil,ak=Go,rk=Math.PI;Nf.prototype={type:"parallel",constructor:Nf,_init:function(t,e,i){var n=t.dimensions,o=t.parallelAxisIndex;tk(n,function(t,i){var n=o[i],a=e.getComponent("parallelAxis",n),r=this._axesMap.set(t,new JL(t,Hl(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();tk(this.dimensions,function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(n,n.mapDimension(t)),Wl(e.scale,e.model)},this)}},this)},resize:function(t,e){this._rect=ca(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=Of(e.get("axisExpandWidth"),l),c=Of(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=Of(f[1]-f[0],l),f[1]=f[0]+t):(t=Of(h*(c-1),l),(f=[h*(e.get("axisExpandCenter")||nk(u/2))-t/2])[1]=f[0]+t);var p=(s-t)/(u-c);p<3&&(p=0);var g=[nk(ak(f[0]/h,1))+1,ok(ak(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])}),tk(i,function(e,i){var a=(n.axisExpandable?Rf:Ef)(i,n),r={horizontal:{x:a.position,y:n.axisLength},vertical:{x:0,y:a.position}},s={horizontal:rk/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=[ik(0,a[1]*s/o-o/2)])[1]=ek(a[1],n[0]+o),n[0]=n[1]-o}return{axisExpandWindow:n,behavior:l}}},Fa.register("parallel",{create:function(t,e){var i=[];return t.eachComponent("parallel",function(n,o){var a=new Nf(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 sk=lI.extend({type:"baseParallelAxis",axis:null,activeIntervals:[],getAreaSelectStyle:function(){return Qb([["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--)Fo(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&&Ip(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})}}};Ns(function(t){Cf(t),Lf(t)}),YI.extend({type:"series.parallel",dependencies:["parallel"],visualColorAccessPath:"lineStyle.color",getInitialData:function(t,e){var i=this.getSource();return Tp(i,this),ml(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 Dk=.3,Ck=(Ar.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=kp(t);if(a.diff(r).add(function(t){Pp(Lp(a,o,t,l,s),a,t,u)}).update(function(e,i){var o=r.getItemGraphicEl(i),h=Cp(a,e,l,s);a.setItemGraphicEl(e,o),Io(o,{shape:{points:h}},n&&!1===n.animation?null:t,e),Pp(o,a,e,u)}).remove(function(t){var e=r.getItemGraphicEl(t);o.remove(e)}).execute(),!this._initialized){this._initialized=!0;var h=Dp(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=kp(e),s=t.start;sn&&(n=e)}),d(e,function(e){var o=new hL({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 Ok={_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 oC(this,{coordDimensions:[{name:h,type:qs(p),ordinalMeta:i,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:c,type:qs(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(YI.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}}),Ok,!0);var Ek=["itemStyle"],Rk=["emphasis","itemStyle"],zk=(Ar.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}),Pn.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?jk:Yk)}function n(t,e){return e.get(t>0?Uk:Xk)}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)})}}}}},Kk="undefined"!=typeof Float32Array?Float32Array:Array,$k={seriesType:"candlestick",plan:$I(),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 Kk(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]=Jn(a[o]+n/2,1,!1),r[o]=Jn(r[o]-n/2,1,!0),i?t.push(a,r):t.push(r,a)}function f(t){return t[o]=Jn(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)})}}}}};Ns(function(t){t&&y(t.series)&&d(t.series,function(t){w(t)&&"k"===t.type&&(t.type="candlestick")})}),Bs(qk),zs($k),YI.extend({type:"series.effectScatter",dependencies:["grid","polar"],getInitialData:function(t,e){return ml(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=Jl(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}}}),iP=xg.prototype;iP.createLine=function(t,e,i){return new rf(t,e,i)},iP._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=Jl(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))},iP._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}},iP.getLineLength=function(t){return uw(t.__p1,t.__cp1)+uw(t.__cp1,t.__p2)},iP.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]},iP.updateData=function(t,e,i){this.childAt(0).updateData(t,e,i),this._updateEffectSymbol(t,e)},iP.updateSymbolPosition=function(t){var e=t.__p1,i=t.__p2,n=t.__cp1,o=t.__t,a=t.position,r=sn,s=ln;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},iP.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 nP=_g.prototype;nP._createPolyline=function(t,e,i){var n=t.getItemLayout(e),o=new gM({shape:{points:n}});this.add(o),this._updateCommonStl(t,e,i)},nP.updateData=function(t,e,i){var n=t.hostModel;Io(this.childAt(0),{shape:{points:t.getItemLayout(e)}},n,e),this._updateCommonStl(t,e,i)},nP._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,fo(this)},nP.updateLayout=function(t,e){this.childAt(0).setShape("points",t.getItemLayout(e))},u(_g,tb);var oP=wg.prototype;oP.createLine=function(t,e,i){return new _g(t,e,i)},oP.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 aP=Un({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(_n(l,u,(l+c)/2-(u-d)*o,(u+d)/2-(c-l)*o,c,d))return a}else if(yn(l,u,c,d))return a;a++}return-1}}),rP=bg.prototype;rP.isPersistent=function(){return!this._incremental},rP.updateData=function(t){this.group.removeAll();var e=new aP({rectHover:!0,cursor:"default"});e.setShape({segs:t.getLayout("linesPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},rP.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>5e5?(this._incremental||(this._incremental=new Zn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},rP.incrementalUpdate=function(t,e){var i=new aP;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))},rP.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},rP._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)}))},rP._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()};var sP={seriesType:"lines",plan:$I(),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}},Zs({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}},Fa.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 gP=["axisLine","axisTickLabel","axisName"],mP=XD.extend({type:"singleAxis",axisPointerClass:"SingleAxisPointer",render:function(t,e,i,n){var o=this.group;o.removeAll();var a=Jg(t),r=new FD(t,a);d(gP,r.add,r),o.add(r.getGroup()),t.get("splitLine.show")&&this._splitLine(t),mP.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"),IP.superApply(this._model,"remove",arguments)},dispose:function(t,e){gm("axisPointer",e),IP.superApply(this._model,"dispose",arguments)}}),TP=Bi(),AP=i,DP=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=Mh(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=TP(t).pointerEl=new zM[o.type](AP(e.pointer));t.add(a)}},createLabelEl:function(t,e,i,n){if(e.label){var o=TP(t).labelEl=new yM(AP(e.label));t.add(o),xm(o,n)}},updatePointerEl:function(t,e,i){var n=TP(t).pointerEl;n&&(n.setStyle(e.pointer.style),i(n,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,i,n){var o=TP(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=Po(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){mw(t.event)},onmousedown:DP(this._onHandleDragMove,this,0,0),drift:DP(this._onHandleDragMove,this),ondragend:DP(this._onHandleDragEnd,this)}),i.add(n)),wm(n,e,!1);var s=["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"];n.setStyle(o.getItemStyle(null,s));var l=o.get("size");y(l)||(l=[l,l]),n.attr("scale",[l[0]/2,l[1]/2]),Nr(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)),TP(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,ji(mm);var CP=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=LP[s](a,u,l,h);c.style=h,t.graphicKey=c.type,t.pointer=c}Am(e,t,Lh(r.model,i),i,n,o)},getHandleTransform:function(t,e,i){var n=Lh(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];var d=[{verticalAlign:"middle"},{align:"center"}];return{position:u,rotation:t.rotation,cursorPoint:c,tooltipOption:d[l]}}}),LP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Pm(t));return Kn({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))}}};XD.registerAxisPointerClass("CartesianAxisPointer",CP),Ns(function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!y(e)&&(t.axisPointer.link=[e])}}),Os(VT.PROCESSOR.STATISTIC,function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=vh(t,e)}),Es({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=xP({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:wP(em,f),showTooltip:wP(im,p)};_P(s.coordSysMap,function(t,e){var i=l||t.containPoint(o);_P(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 _P(h,function(t,e){var i=t.linkGroup;i&&!f[e]&&_P(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}})}),_P(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 kP=["x","y"],PP=["width","height"],NP=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=OP[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"}}}}),OP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Nm(t));return Kn({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))}}};XD.registerAxisPointerClass("SingleAxisPointer",NP),Ws({type:"single"});var EP=YI.extend({type:"series.themeRiver",dependencies:["singleAxis"],nameMap:null,init:function(t){EP.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()}},fixData:function(t){var e=t.length,i=[];Zi(t,function(t){return t[2]}).buckets.each(function(t,e){i.push({name:e,dataList:t})});for(var 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)},VP._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);Ar.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 Xs(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 GP="sunburstRootToNode";Es({type:GP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=ld(t,[GP],e);if(n){var o=e.getViewRoot();o&&(t.direction=hd(o,n.node)?"rollUp":"drillDown"),e.resetViewRoot(n.node)}})});var FP="sunburstHighlight";Es({type:FP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=ld(t,[FP],e);n&&(t.highlight=n.node)})});Es({type:"sunburstUnhighlight",update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){t.unhighlight=!0})});var WP=Math.PI/180;Bs(v(uC,"sunburst")),zs(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=Vo(e[0],o),l=Vo(e[1],a),u=Vo(n[0],r/2),h=Vo(n[1],r/2),c=-t.get("startAngle")*WP,f=t.get("minAngle")*WP,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)}}}}};YI.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 ml(this.getSource(),this)},getDataParams:function(t,e,i){var n=YI.prototype.getDataParams.apply(this,arguments);return i&&(n.info=i.info),n}}),Ar.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}});Ws({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;da(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 KP=Fs({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){KP.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}}});Es("legendToggleSelect","legendselectchanged",v(xv,"toggleSelected")),Es("legendSelect","legendselected",v(xv,"select")),Es("legendUnSelect","legendunselected",v(xv,"unSelect"));var $P=v,JP=d,QP=tb,tN=Ws({type:"legend.plain",newlineDisabled:!1,init:function(){this.group.add(this._contentGroup=new QP),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=ca(a,s,l),h=this.layoutInner(t,o,u,n),c=ca(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)}),JP(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",$P(bv,h,n)).on("mouseover",$P(Sv,c.name,null,n,s)).on("mouseout",$P(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",$P(bv,h,n)).on("mouseover",$P(Sv,null,h,n,s)).on("mouseout",$P(Mv,null,h,n,s)),a.set(h,!0)}},this)}else o.add(new QP({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 QP,m=i.getModel("textStyle"),v=i.get("icon"),y=i.getModel("tooltip"),x=y.parentModel;if(o=v||o,g.add(Jl(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(Jl(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 rM({style:mo({},m,{text:M,x:w,y:c/2,textFill:p?m.getTextColor():d,textAlign:b,textVerticalAlign:"middle"})}));var I=new yM({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),fo(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}});Os(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 yM({shape:x})),a.__rectSize=x[l]}else r.eachChild(function(t){t.attr({invisible:!0,silent:!0})});var _=this._getPageInfo(t);return null!=_.pageIndex&&Io(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=nN[r],l=oN[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 rM({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?this.el.hide():true,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 uN=m,hN=d,cN=Vo,dN=new yM({shape:{x:-1,y:-1,width:2,height:2}});Ws({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,uN(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=dN;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=xP(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={};hN(t,function(t){hN(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=Xl(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?ia(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 No(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=na(h,i,!0);else if("function"==typeof h){var d=uN(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=cN(e[0],s),n=cN(e[1],l);else if(w(e)){e.width=u[0],e.height=u[1];var f=ca(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&&hN(e,function(e,n){var o=e.dataByAxis||{},a=(t[n]||{}).dataByAxis||[];(i&=o.length===a.length)&&hN(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)&&hN(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))}}),Es({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),Es({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:aD.prototype.dataToCoord,radiusToData:aD.prototype.coordToData},u(Gv,aD);var fN=Bi();Fv.prototype={constructor:Fv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToAngle:aD.prototype.dataToCoord,angleToData:aD.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=fN(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,aD);var pN=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};pN.prototype={type:"polar",axisPointerEnabled:!0,constructor:pN,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 gN=lI.extend({type:"polarAxis",axis:null,getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"polar",index:this.option.polarIndex,id:this.option.polarId})[0]}});n(gN.prototype,UA);var mN={angle:{startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:!1}},radius:{splitNumber:5}};ED("angle",gN,Wv,mN.angle),ED("radius",gN,Wv,mN.radius),Fs({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 vN={dimensions:pN.prototype.dimensions,create:function(t,e){var i=[];return t.eachComponent("polar",function(t,n){var o=new pN(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}};Fa.register("polar",vN);var yN=["axisLine","axisLabel","axisTick","splitLine","splitArea"];XD.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(yN,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 sM({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 _M({shape:Xv(e,[s,s+a],t.coord)})});this.group.add(OM(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 No(a[u].textStyle,r,r.ecModel));var m=new rM({silent:!0});this.group.add(m),mo(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},kN.findTargetInfo=function(t,e){for(var i=this._targetInfoList,n=dy(e,t),o=0;o=0||AN(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:ON.grid,xAxisDeclared:r[t.id],yAxisDeclared:s[t.id]})}))},geo:function(t,e){TN(t.geoModels,function(t){var i=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:i,coordSyses:[i],getPanelRect:ON.geo})})}},NN=[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}],ON={grid:function(){return this.coordSys.grid.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(Ao(t)),e}},EN={lineX:DN(fy,0),lineY:DN(fy,1),rect:function(t,e,i){var n=e[CN[t]]([i[0][0],i[1][0]]),o=e[CN[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[CN[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}}},RN={lineX:DN(py,0),lineY:DN(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]]})}},zN=["inBrush","outOfBrush"],BN="__ecBrushSelect",VN="__ecInBrushSelectEvent",GN=VT.VISUAL.BRUSH;zs(GN,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)})}),Bs(GN,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:FN[t.brushType](t)},t))}),S=ty(e.option,zN,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(zN,S,a,r)})}),vy(e,o,a,s,n)});var FN={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)}},WN=["#ddd"];Fs({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:WN},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}});Ws({type:"brush",init:function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new zf(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})}}),Es({type:"brush",event:"brush"},function(t,e){e.eachComponent({mainType:"brush",query:t},function(e){e.setAreas(t.areas)})}),Es({type:"brushSelect",event:"brushSelected",update:"none"},function(){});var HN={},ZN=rT.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(ZN.title)};var UN=Dy.prototype;UN.render=UN.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")})},UN.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},UN.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),Ns(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,SN)}});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=Yo(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=ca(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},Fa.register("calendar",Cy);var XN=lI.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=ga(t);XN.superApply(this,"init",arguments),ky(t,o)},mergeOption:function(t,e){XN.superApply(this,"mergeOption",arguments),ky(this.option,t)}}),jN={EN:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CN:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},YN={EN:["S","M","T","W","T","F","S"],CN:["日","一","二","三","四","五","六"]};Ws({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 yM({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 gM({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?oa(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 rM({z2:30});mo(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=jN[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&&$N(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}):$N(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)}}),$N(o,function(t){e.setApproximateExtent(r,t)}))})}}};var tO=d,eO=KN,iO=Fs({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),tO([["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 QN(e.name,i,this,o));t[e.name+"_"+i]=r},this)},_resetTarget:function(){var t=this.option,e=this._judgeAutoMode();eO(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;eO(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):tO(n.singleAxis,function(n){t&&n.get("orient",!0)===e&&(i.singleAxisIndex=[n.componentIndex],t=!1)})}t&&eO(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 eO(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;eO(function(n){tO(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;tO([["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()}}),nO=qI.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:aO(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 pM({shape:{points:c},style:r({fill:m.get("dataBackgroundColor")},m.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new gM({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(cO,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 oO({draggable:!0,cursor:Fy(this._orient),drift:sO(this._onDragMove,this,"all"),onmousemove:function(t){mw(t.event)},ondragstart:sO(this._showDataInfo,this,!0),ondragend:sO(this._onDragEnd,this),onmouseover:sO(this._showDataInfo,this,!0),onmouseout:sO(this._showDataInfo,this,!1),style:{fill:a.get("fillerColor"),textPosition:"inside"}})),n.add(new oO($n({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)"}}))),lO([0,1],function(t){var o=Po(a.get("handleIcon"),{cursor:Fy(this._orient),draggable:!0,drift:sO(this._onDragMove,this,t),onmousemove:function(t){mw(t.event)},ondragend:sO(this._onDragEnd,this),onmouseover:sO(this._showDataInfo,this,!0),onmouseout:sO(this._showDataInfo,this,!1)},{x:-1,y:0,width:2,height:2}),r=o.getBoundingRect();this._handleHeight=Vo(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 rM({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=[aO(t[0],[0,100],e,!0),aO(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?aO(a.minSpan,r,o,!0):null,null!=a.maxSpan?aO(a.maxSpan,r,o,!0):null);var s=this._range,l=this._range=rO([aO(n[0],o,r,!0),aO(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=rO(i.slice()),o=this._size;lO([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=Ao(n.handles[t].parent,this.group),i=Co(0===t?"right":"left",e),s=this._handleWidth/2+hO,l=Do([c[t]+(0===t?-s:s),this._size[1]/2],e);o[t].setStyle({x:l[0],y:l[1],textVerticalAlign:a===uO?"middle":i,textAlign:a===uO?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=rO(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=Do([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(lO(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}});iO.extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}});var fO="\0_ec_dataZoom_roams",pO=m,gO=nO.extend({type:"dataZoom.inside",init:function(t,e){this._range},render:function(t,e,i,n){gO.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]=pO(mO[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),gO.superApply(this,"dispose",arguments),this._range=null}}),mO={zoom:function(t,e,i,n){var o=this._range,a=o.slice(),r=t.axisModels[0];if(r){var s=vO[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=vO[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 vO[n]([0,0],[a.scrollDelta,a.scrollDelta],e,o,i).signal*(t[1]-t[0])*a.scrollDelta})},vO={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}};Os({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)})}}),Es("dataZoom",function(t,e){var i=Ny(m(e.eachComponent,e,"dataZoom"),KN,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 yO=d,xO=function(t){var e=t&&t.visualMap;y(e)||(e=e?[e]:[]),yO(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)&&yO(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))})}})};lI.registerSubTypeDefaulter("visualMap",function(t){return t.categories||(t.pieces?t.pieces.length>0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"});var _O=VT.VISUAL.COMPONENT;Bs(_O,{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}}),Bs(_O,{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 wO={get:function(t,e,n){var o=i((bO[t]||{})[e]);return n&&y(o)?o[o.length-1]:o}},bO={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]}},SO=hL.mapVisual,MO=hL.eachVisual,IO=y,TO=d,AO=Fo,DO=Bo,CO=B,LO=Fs({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=AO([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){IO(o.color)&&!t.inRange&&(t.inRange={color:o.color.slice().reverse()}),t.inRange=t.inRange||{color:e.get("gradientColor")},TO(this.stateList,function(e){var i=t[e];if(_(i)){var n=wO.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]={},TO(n,function(t,e){if(hL.isValidType(e)){var i=wO.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");TO(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=SO(s.symbol,function(t){return"none"===t||"square"===t?"roundRect":t});var u=s.symbolSize;if(null!=u){var h=-1/0;MO(u,function(t){t>h&&(h=t)}),s.symbolSize=SO(u,function(t){return DO(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:CO,getValueState:CO,getVisualMeta:CO}),kO=[20,140],PO=LO.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){PO.superApply(this,"optionUpdated",arguments),this.resetExtent(),this.resetVisual(function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()}),this._resetRange()},resetItemSize:function(){PO.superApply(this,"resetItemSize",arguments);var t=this.itemSize;"horizontal"===this._orient&&t.reverse(),(null==t[0]||isNaN(t[0]))&&(t[0]=kO[0]),(null==t[1]||isNaN(t[1]))&&(t[1]=kO[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(){LO.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=Fo((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;EO([0,1],function(r){var s=o[r];s.setStyle("fill",e.handlesColor[r]),s.position[1]=t[r];var l=Do(i.handleLabelPoints[r],Ao(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=OO(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={convertOpacityToAlpha:!0},d=this.getControllerVisual(t,"color",c);h.setStyle("fill",d);var f=Do(u.indicatorLabelPoint,Ao(h,this.group)),p=u.indicatorLabel;p.attr("invisible",!1);var g=this._applyTransform("left",u.barGroup),m=this._orient;p.setStyle({text:(i||"")+o.formatValueText(e),textVerticalAlign:"horizontal"===m?g:"middle",textAlign:"horizontal"===m?"center":g,x:f[0],y:f[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]=RO(zO(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=RO(zO(o[0],t),o[1]);var r=ax(i,a,o),s=[t-r,t+r],l=OO(t,o,a,!0),u=[OO(s[0],o,a,!0),OO(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=Ao(e,n?null:this.group);return zM[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()}});Es({type:"selectDataRange",event:"dataRangeSelected",update:"update"},function(t,e){e.eachComponent({mainType:"visualMap",query:t},function(e){e.setSelected(t.selected)})}),Ns(xO);var FO=LO.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){FO.superApply(this,"optionUpdated",arguments),this._pieceList=[],this.resetExtent();var n=this._mode=this._determineMode();WO[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=hL.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]=wO.get(n,"inRange"===t?"active":"inactive",o)})},this),LO.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=hL.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){hL.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}}}}),WO={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)}};NO.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 rM({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 rM({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(Jl(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})}});Ns(xO);var HO=ta,ZO=ia,UO=Fs({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,HO).join(", "):HO(i),o=e.getName(t),a=ZO(this.name);return(null!=i||o)&&(a+="
"),o&&(a+=ZO(o),null!=i&&(a+=" : ")),null!=i&&(a+=ZO(n)),a},getData:function(){return this._data},setData:function(t){this._data=t}});h(UO,ZI),UO.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 XO=l,jO=v,YO={min:jO(dx,"min"),max:jO(dx,"max"),average:jO(dx,"average")},qO=Ws({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(){}});qO.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 Du),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")}}),Ns(function(t){t.markPoint=t.markPoint||{}}),UO.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 KO=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};qO.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 sf);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")}}),Ns(function(t){t.markLine=t.markLine||{}}),UO.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 $O=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},JO=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];qO.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(JO,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(JO,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 pM({shape:{points:h.getItemLayout(t)}});h.setItemGraphicEl(t,e),u.group.add(e)}).update(function(t,i){var n=u.__data.getItemGraphicEl(i);Io(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(),go(t.style,t.hoverStyle,o,a,{labelFetcher:e,labelDataIndex:i,defaultText:h.getName(i)||"",isRectText:!0,autoColor:s}),fo(t,{}),t.dataModel=e}),u.__data=h,u.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markArea=t.markArea||{}});lI.registerSubTypeDefaulter("timeline",function(){return"slider"}),Es({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)}),Es({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var i=e.getComponent("timeline");i&&null!=t.playState&&i.setPlayState(t.playState)});var QO=lI.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){QO.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 vA([{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(QO.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:[]}}),ZI);var tE=qI.extend({type:"timeline"}),eE=function(t,e,i,n){aD.call(this,t,e,i),this.type=n||"value",this.model=null};eE.prototype={constructor:eE,getLabelModel:function(){return this.model.getModel("label")},isHorizontal:function(){return"horizontal"===this.model.get("orient")}},u(eE,aD);var iE=m,nE=d,oE=Math.PI;tE.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 ia(s.scale.getLabel(t))},nE(["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:oE/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*oE/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,-oE/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=Hl(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 eE("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 _M({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();nE(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:iE(this._changeTimeline,this,t)},h=zx(r,s,e,u);fo(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();nE(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 rM({position:[u,0],rotation:t.labelRotation-t.rotation,onclick:iE(this._changeTimeline,this,a),silent:!1});mo(h.style,s,{text:n.formattedLabel,textAlign:t.labelAlign,textVerticalAlign:t.labelBaseline}),e.add(h),fo(h,mo({},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),fo(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",iE(this._changeTimeline,this,c?"-":"+")),o(t.prevBtnPosition,"controlStyle.prevIcon",iE(this._changeTimeline,this,c?"+":"-")),o(t.playPosition,"controlStyle."+(h?"stopIcon":"playIcon"),iE(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=iE(s._handlePointerDrag,s),t.ondragend=iE(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=Fo(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 rE=rT.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:rE.title,type:"png",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:rE.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 sE=rT.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(sE.title),option:{},seriesIndex:{}};var lE=Fx.prototype;lE.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 uE={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)}},hE=[["line","bar"],["stack","tiled"]];lE.onclick=function(t,e,i){var n=this.model,o=n.get("seriesIndex."+i);if(uE[i]){var a={series:[]};d(hE,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=uE[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})}},Es({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),Ty("magicType",Fx);var cE=rT.toolbox.dataView,dE=new Array(60).join("-"),fE="\t",pE=new RegExp("["+fE+"]+","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(cE.title),lang:i(cE.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)+fE+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),Es({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 gE=d,mE="\0_ec_hist_store";iO.extend({type:"dataZoom.select"}),nO.extend({type:"dataZoom.select"});var vE=rT.toolbox.dataZoom,yE=d,xE="\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(vE.title)};var _E=o_.prototype;_E.render=function(t,e,i,n){this.model=t,this.ecModel=e,this.api=i,s_(t,e,this,n,i),r_(t,e)},_E.onclick=function(t,e,i){wE[i].call(this)},_E.remove=function(t,e){this._brushController.unmount()},_E.dispose=function(t,e){this._brushController.dispose()};var wE={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(t_(this.ecModel))}};_E._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)}},_E._dispatchZoomAction=function(t){var e=[];yE(t,function(t,n){e.push(i(t))}),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},Ty("dataZoom",o_),Ns(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:xE+t+i};r[o]=i,n.push(r)}})}}function i(e,i){var n=t[e];y(n)||(n=n?[n]:[]),yE(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 bE=rT.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:bE.title},l_.prototype.onclick=function(t,e,i){e_(t),e.dispatchAction({type:"restore",from:this.uid})},Ty("restore",l_),Es({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")});var SE,ME="urn:schemas-microsoft-com:vml",IE="undefined"==typeof window?null:window,TE=!1,AE=IE&&IE.document;if(AE&&!U_.canvasSupported)try{!AE.namespaces.zrvml&&AE.namespaces.add("zrvml",ME),SE=function(t){return AE.createElement("')}}catch(t){SE=function(t){return AE.createElement("<"+t+' xmlns="'+ME+'" class="zrvml">')}}var DE=ES.CMD,CE=Math.round,LE=Math.sqrt,kE=Math.abs,PE=Math.cos,NE=Math.sin,OE=Math.max;if(!U_.canvasSupported){var EE=21600,RE=EE/2,zE=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=EE+","+EE,t.coordorigin="0,0"},BE=function(t){return String(t).replace(/&/g,"&").replace(/"/g,""")},VE=function(t,e,i){return"rgb("+[t,e,i].join(",")+")"},GE=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},FE=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},WE=function(t,e,i){return 1e5*(parseFloat(t)||0)+1e3*(parseFloat(e)||0)+i},HE=function(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t},ZE=function(t,e,i){var n=Gt(e);i=+i,isNaN(i)&&(i=1),n&&(t.color=VE(n[0],n[1],n[2]),t.opacity=i*n[3])},UE=function(t){var e=Gt(t);return[VE(e[0],e[1],e[2]),e[3]]},XE=function(t,e,i){var n=e.fill;if(null!=n)if(n instanceof IM){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]*EE,x/=v[1]*EE;var _=OE(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 ZE(t,n,e.opacity)},jE=function(t,e){null!=e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof IM||ZE(t,e.stroke,e.opacity)},YE=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 IM&&FE(t,a),a||(a=u_(e)),o?XE(a,i,n):jE(a,i),GE(t,a)):(t[o?"filled":"stroked"]="false",FE(t,a))},qE=[[],[],[]],KE=function(t,e){var i,n,o,a,r,s,l=DE.M,u=DE.C,h=DE.L,c=DE.A,d=DE.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,CE(((A-C)*M+b)*EE-RE),",",CE(((D-L)*I+S)*EE-RE),",",CE(((A+C)*M+b)*EE-RE),",",CE(((D+L)*I+S)*EE-RE),",",CE((O*M+b)*EE-RE),",",CE((E*I+S)*EE-RE),",",CE((y*M+b)*EE-RE),",",CE((x*I+S)*EE-RE)),r=y,s=x;break;case DE.R:var z=qE[0],B=qE[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]=CE(z[0]*EE-RE),B[0]=CE(B[0]*EE-RE),z[1]=CE(z[1]*EE-RE),B[1]=CE(B[1]*EE-RE),f.push(" m ",z[0],",",z[1]," l ",B[0],",",z[1]," l ",B[0],",",B[1]," l ",z[0],",",B[1]);break;case DE.Z:f.push(" x ")}if(i>0){f.push(n);for(var V=0;V100&&(tR=0,QE={});var i,n=eR.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"},QE[t]=e,tR++}return e};!function(t,e){bb[t]=e}("measureText",function(t,e){var i=AE;JE||((JE=i.createElement("div")).style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",AE.body.appendChild(JE));try{JE.style.font=e}catch(t){}return JE.innerHTML="",JE.appendChild(i.createTextNode(t)),{width:JE.offsetWidth}});for(var nR=new de,oR=[Db,di,fi,Pn,rM],aR=0;aR=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 Pn?yR:t instanceof fi?xR:t instanceof rM?_R:yR},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 IR=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=[]};IR.prototype={constructor:IR,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){IR.prototype[t]=F_(t)}),Ti("svg",IR),t.version="4.2.1",t.dependencies=ET,t.PRIORITY=VT,t.init=function(t,e,i){var n=ks(t);if(n)return n;var o=new us(t,e,i);return o.id="ec_"+iA++,tA[o.id]=o,Fi(t,oA,o.id),Cs(o),o},t.connect=function(t){if(y(t)){var e=t;t=null,kT(e,function(e){null!=e.group&&(t=e.group)}),t=t||"g_"+nA++,kT(e,function(e){e.group=t})}return eA[t]=!0,t},t.disConnect=Ls,t.disconnect=aA,t.dispose=function(t){"string"==typeof t?t=tA[t]:t instanceof us||(t=ks(t)),t instanceof us&&!t.isDisposed()&&t.dispose()},t.getInstanceByDom=ks,t.getInstanceById=function(t){return tA[t]},t.registerTheme=Ps,t.registerPreprocessor=Ns,t.registerProcessor=Os,t.registerPostUpdate=function(t){KT.push(t)},t.registerAction=Es,t.registerCoordinateSystem=Rs,t.getCoordinateSystemDimensions=function(t){var e=Fa.get(t);if(e)return e.getDimensionsInfo?e.getDimensionsInfo():e.dimensions.slice()},t.registerLayout=zs,t.registerVisual=Bs,t.registerLoading=Gs,t.extendComponentModel=Fs,t.extendComponentView=Ws,t.extendSeriesModel=Hs,t.extendChartView=Zs,t.setCanvasCreator=function(t){e("createCanvas",t)},t.registerMap=function(t,e,i){DT.registerMap(t,e,i)},t.getMap=function(t){var e=DT.retrieveMap(t);return e&&e[0]&&{geoJson:e[0].geoJSON,specialAreas:e[0].specialAreas}},t.dataTool=rA,t.zrender=Hb,t.number=YM,t.format=eI,t.throttle=Pr,t.helper=tD,t.matrix=Sw,t.vector=cw,t.color=Ww,t.parseGeoJSON=iD,t.parseGeoJson=rD,t.util=sD,t.graphic=lD,t.List=vA,t.Model=No,t.Axis=aD,t.env=U_}); \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/changelog.md b/uni_modules/uni-datetime-picker/changelog.md new file mode 100644 index 0000000..1e82f46 --- /dev/null +++ b/uni_modules/uni-datetime-picker/changelog.md @@ -0,0 +1,140 @@ +## 2.2.24(2023-06-02) +- 修复 部分情况修改时间,开始、结束时间显示异常的Bug [详情](https://ask.dcloud.net.cn/question/171146) +- 优化 当前月可以选择上月、下月的日期 +## 2.2.23(2023-05-02) +- 修复 部分情况修改时间,开始时间未更新 [详情](https://github.com/dcloudio/uni-ui/issues/737) +- 修复 部分平台及设备第一次点击无法显示弹框 +- 修复 ios 日期格式未补零显示及使用异常 [详情](https://ask.dcloud.net.cn/question/162979) +## 2.2.22(2023-03-30) +- 修复 日历 picker 修改年月后,自动选中当月1日 [详情](https://ask.dcloud.net.cn/question/165937) +- 修复 小程序端 低版本 ios NaN [详情](https://ask.dcloud.net.cn/question/162979) +## 2.2.21(2023-02-20) +- 修复 firefox 浏览器显示区域点击无法拉起日历弹框的Bug [详情](https://ask.dcloud.net.cn/question/163362) +## 2.2.20(2023-02-17) +- 优化 值为空依然选中当天问题 +- 优化 提供 default-value 属性支持配置选择器打开时默认显示的时间 +- 优化 非范围选择未选择日期时间,点击确认按钮选中当前日期时间 +- 优化 字节小程序日期时间范围选择,底部日期换行问题 +## 2.2.19(2023-02-09) +- 修复 2.2.18 引起范围选择配置 end 选择无效的Bug [详情](https://github.com/dcloudio/uni-ui/issues/686) +## 2.2.18(2023-02-08) +- 修复 移动端范围选择change事件触发异常的Bug [详情](https://github.com/dcloudio/uni-ui/issues/684) +- 优化 PC端输入日期格式错误时返回当前日期时间 +- 优化 PC端输入日期时间超出 start、end 限制的Bug +- 优化 移动端日期时间范围用法时间展示不完整问题 +## 2.2.17(2023-02-04) +- 修复 小程序端绑定 Date 类型报错的Bug [详情](https://github.com/dcloudio/uni-ui/issues/679) +- 修复 vue3 time-picker 无法显示绑定时分秒的Bug +## 2.2.16(2023-02-02) +- 修复 字节小程序报错的Bug +## 2.2.15(2023-02-02) +- 修复 某些情况切换月份错误的Bug +## 2.2.14(2023-01-30) +- 修复 某些情况切换月份错误的Bug [详情](https://ask.dcloud.net.cn/question/162033) +## 2.2.13(2023-01-10) +- 修复 多次加载组件造成内存占用的Bug +## 2.2.12(2022-12-01) +- 修复 vue3 下 i18n 国际化初始值不正确的Bug +## 2.2.11(2022-09-19) +- 修复 支付宝小程序样式错乱的Bug [详情](https://github.com/dcloudio/uni-app/issues/3861) +## 2.2.10(2022-09-19) +- 修复 反向选择日期范围,日期显示异常的Bug [详情](https://ask.dcloud.net.cn/question/153401?item_id=212892&rf=false) +## 2.2.9(2022-09-16) +- 可以使用 uni-scss 控制主题色 +## 2.2.8(2022-09-08) +- 修复 close事件无效的Bug +## 2.2.7(2022-09-05) +- 修复 移动端 maskClick 无效的Bug [详情](https://ask.dcloud.net.cn/question/140824) +## 2.2.6(2022-06-30) +- 优化 组件样式,调整了组件图标大小、高度、颜色等,与uni-ui风格保持一致 +## 2.2.5(2022-06-24) +- 修复 日历顶部年月及底部确认未国际化的Bug +## 2.2.4(2022-03-31) +- 修复 Vue3 下动态赋值,单选类型未响应的Bug +## 2.2.3(2022-03-28) +- 修复 Vue3 下动态赋值未响应的Bug +## 2.2.2(2021-12-10) +- 修复 clear-icon 属性在小程序平台不生效的Bug +## 2.2.1(2021-12-10) +- 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的Bug +## 2.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源 [详情](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移 [https://uniapp.dcloud.io/component/uniui/uni-datetime-picker](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) +## 2.1.5(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 2.1.4(2021-09-10) +- 修复 hide-second 在移动端的Bug +- 修复 单选赋默认值时,赋值日期未高亮的Bug +- 修复 赋默认值时,移动端未正确显示时间的Bug +## 2.1.3(2021-09-09) +- 新增 hide-second 属性,支持只使用时分,隐藏秒 +## 2.1.2(2021-09-03) +- 优化 取消选中时(范围选)直接开始下一次选择, 避免多点一次 +- 优化 移动端支持清除按钮,同时支持通过 ref 调用组件的 clear 方法 +- 优化 调整字号大小,美化日历界面 +- 修复 因国际化导致的 placeholder 失效的Bug +## 2.1.1(2021-08-24) +- 新增 支持国际化 +- 优化 范围选择器在 pc 端过宽的问题 +## 2.1.0(2021-08-09) +- 新增 适配 vue3 +## 2.0.19(2021-08-09) +- 新增 支持作为 uni-forms 子组件相关功能 +- 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的Bug +## 2.0.18(2021-08-05) +- 修复 type 属性动态赋值无效的Bug +- 修复 ‘确认’按钮被 tabbar 遮盖 bug +- 修复 组件未赋值时范围选左、右日历相同的Bug +## 2.0.17(2021-08-04) +- 修复 范围选未正确显示当前值的Bug +- 修复 h5 平台(移动端)报错 'cale' of undefined 的Bug +## 2.0.16(2021-07-21) +- 新增 return-type 属性支持返回 date 日期对象 +## 2.0.15(2021-07-14) +- 修复 单选日期类型,初始赋值后不在当前日历的Bug +- 新增 clearIcon 属性,显示框的清空按钮可配置显示隐藏(仅 pc 有效) +- 优化 移动端移除显示框的清空按钮,无实际用途 +## 2.0.14(2021-07-14) +- 修复 组件赋值为空,界面未更新的Bug +- 修复 start 和 end 不能动态赋值的Bug +- 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的Bug +## 2.0.13(2021-07-08) +- 修复 范围选择不能动态赋值的Bug +## 2.0.12(2021-07-08) +- 修复 范围选择的初始时间在一个月内时,造成无法选择的bug +## 2.0.11(2021-07-08) +- 优化 弹出层在超出视窗边缘定位不准确的问题 +## 2.0.10(2021-07-08) +- 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的Bug +- 优化 弹出层在超出视窗边缘被遮盖的问题 +## 2.0.9(2021-07-07) +- 新增 maskClick 事件 +- 修复 特殊情况日历 rpx 布局错误的Bug,rpx -> px +- 修复 范围选择时清空返回值不合理的bug,['', ''] -> [] +## 2.0.8(2021-07-07) +- 新增 日期时间显示框支持插槽 +## 2.0.7(2021-07-01) +- 优化 添加 uni-icons 依赖 +## 2.0.6(2021-05-22) +- 修复 图标在小程序上不显示的Bug +- 优化 重命名引用组件,避免潜在组件命名冲突 +## 2.0.5(2021-05-20) +- 优化 代码目录扁平化 +## 2.0.4(2021-05-12) +- 新增 组件示例地址 +## 2.0.3(2021-05-10) +- 修复 ios 下不识别 '-' 日期格式的Bug +- 优化 pc 下弹出层添加边框和阴影 +## 2.0.2(2021-05-08) +- 修复 在 admin 中获取弹出层定位错误的bug +## 2.0.1(2021-05-08) +- 修复 type 属性向下兼容,默认值从 date 变更为 datetime +## 2.0.0(2021-04-30) +- 支持日历形式的日期+时间的范围选择 + > 注意:此版本不向后兼容,不再支持单独时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker) +## 1.0.6(2021-03-18) +- 新增 hide-second 属性,时间支持仅选择时、分 +- 修复 选择跟显示的日期不一样的Bug +- 修复 chang事件触发2次的Bug +- 修复 分、秒 end 范围错误的Bug +- 优化 更好的 nvue 适配 diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue new file mode 100644 index 0000000..dba9887 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue new file mode 100644 index 0000000..259a52a --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue @@ -0,0 +1,929 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json new file mode 100644 index 0000000..024f22f --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "select date", + "uni-datetime-picker.selectTime": "select time", + "uni-datetime-picker.selectDateTime": "select date and time", + "uni-datetime-picker.startDate": "start date", + "uni-datetime-picker.endDate": "end date", + "uni-datetime-picker.startTime": "start time", + "uni-datetime-picker.endTime": "end time", + "uni-datetime-picker.ok": "ok", + "uni-datetime-picker.clear": "clear", + "uni-datetime-picker.cancel": "cancel", + "uni-datetime-picker.year": "-", + "uni-datetime-picker.month": "", + "uni-calender.MON": "MON", + "uni-calender.TUE": "TUE", + "uni-calender.WED": "WED", + "uni-calender.THU": "THU", + "uni-calender.FRI": "FRI", + "uni-calender.SAT": "SAT", + "uni-calender.SUN": "SUN", + "uni-calender.confirm": "confirm" +} diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json new file mode 100644 index 0000000..4009491 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "选择日期", + "uni-datetime-picker.selectTime": "选择时间", + "uni-datetime-picker.selectDateTime": "选择日期时间", + "uni-datetime-picker.startDate": "开始日期", + "uni-datetime-picker.endDate": "结束日期", + "uni-datetime-picker.startTime": "开始时间", + "uni-datetime-picker.endTime": "结束时间", + "uni-datetime-picker.ok": "Define", + "uni-datetime-picker.clear": "Clear", + "uni-datetime-picker.cancel": "Cancel", + "uni-datetime-picker.year": "/", + "uni-datetime-picker.month": "", + "uni-calender.SUN": "Sun", + "uni-calender.MON": "Mon", + "uni-calender.TUE": "Tue", + "uni-calender.WED": "Wed", + "uni-calender.THU": "Thu", + "uni-calender.FRI": "Fri", + "uni-calender.SAT": "Sat", + "uni-calender.confirm": "Confirm" +} diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json new file mode 100644 index 0000000..1b2d06c --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "選擇日期", + "uni-datetime-picker.selectTime": "選擇時間", + "uni-datetime-picker.selectDateTime": "選擇日期時間", + "uni-datetime-picker.startDate": "開始日期", + "uni-datetime-picker.endDate": "結束日期", + "uni-datetime-picker.startTime": "開始时间", + "uni-datetime-picker.endTime": "結束时间", + "uni-datetime-picker.ok": "確定", + "uni-datetime-picker.clear": "清除", + "uni-datetime-picker.cancel": "取消", + "uni-datetime-picker.year": "年", + "uni-datetime-picker.month": "月", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六", + "uni-calender.confirm": "確認" +} diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue new file mode 100644 index 0000000..81a042a --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue @@ -0,0 +1,934 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue new file mode 100644 index 0000000..8769e83 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue @@ -0,0 +1,1032 @@ + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js new file mode 100644 index 0000000..fc98623 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js @@ -0,0 +1,453 @@ +class Calendar { + constructor({ + selected, + startDate, + endDate, + range, + } = {}) { + // 当前日期 + this.date = this.getDateObj(new Date()) // 当前初入日期 + // 打点信息 + this.selected = selected || []; + // 起始时间 + this.startDate = startDate + // 终止时间 + this.endDate = endDate + // 是否范围选择 + this.range = range + // 多选状态 + this.cleanMultipleStatus() + // 每周日期 + this.weeks = {} + this.lastHover = false + } + /** + * 设置日期 + * @param {Object} date + */ + setDate(date) { + const selectDate = this.getDateObj(date) + this.getWeeks(selectDate.fullDate) + } + + /** + * 清理多选状态 + */ + cleanMultipleStatus() { + this.multipleStatus = { + before: '', + after: '', + data: [] + } + } + + setStartDate(startDate) { + this.startDate = startDate + } + + setEndDate(endDate) { + this.endDate = endDate + } + + getPreMonthObj(date){ + date = fixIosDateFormat(date) + date = new Date(date) + + const oldMonth = date.getMonth() + date.setMonth(oldMonth - 1) + const newMonth = date.getMonth() + if(oldMonth !== 0 && newMonth - oldMonth === 0){ + date.setMonth(newMonth - 1) + } + return this.getDateObj(date) + } + getNextMonthObj(date){ + date = fixIosDateFormat(date) + date = new Date(date) + + const oldMonth = date.getMonth() + date.setMonth(oldMonth + 1) + const newMonth = date.getMonth() + if(newMonth - oldMonth > 1){ + date.setMonth(newMonth - 1) + } + return this.getDateObj(date) + } + + /** + * 获取指定格式Date对象 + */ + getDateObj(date) { + date = fixIosDateFormat(date) + date = new Date(date) + + return { + fullDate: getDate(date), + year: date.getFullYear(), + month: addZero(date.getMonth() + 1), + date: addZero(date.getDate()), + day: date.getDay() + } + } + + /** + * 获取上一个月日期集合 + */ + getPreMonthDays(amount, dateObj) { + const result = [] + for (let i = amount - 1; i >= 0; i--) { + const month = dateObj.month > 1 ? dateObj.month -1 : 12 + const year = month === 12 ? dateObj.year - 1 : dateObj.year + const date = new Date(year,month,-i).getDate() + const fullDate = `${year}-${addZero(month)}-${addZero(date)}` + let multiples = this.multipleStatus.data + let multiplesStatus = -1 + if (this.range && multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, fullDate) + }) + } + const checked = multiplesStatus !== -1 + // 获取打点信息 + const extraInfo = this.selected && this.selected.find((item) => { + if (this.dateEqual(fullDate, item.date)) { + return item + } + }) + result.push({ + fullDate, + year, + month, + date, + multiple: this.range ? checked : false, + beforeMultiple: this.isLogicBefore(fullDate, this.multipleStatus.before, this.multipleStatus.after), + afterMultiple: this.isLogicAfter(fullDate, this.multipleStatus.before, this.multipleStatus.after), + disable: (this.startDate && !dateCompare(this.startDate, fullDate)) || (this.endDate && !dateCompare(fullDate,this.endDate)), + isToday: fullDate === this.date.fullDate, + userChecked: false, + extraInfo + }) + } + return result + } + /** + * 获取本月日期集合 + */ + getCurrentMonthDays(amount, dateObj) { + const result = [] + const fullDate = this.date.fullDate + for (let i = 1; i <= amount; i++) { + const currentDate = `${dateObj.year}-${dateObj.month}-${addZero(i)}` + const isToday = fullDate === currentDate + // 获取打点信息 + const extraInfo = this.selected && this.selected.find((item) => { + if (this.dateEqual(currentDate, item.date)) { + return item + } + }) + + // 日期禁用 + let disableBefore = true + let disableAfter = true + if (this.startDate) { + disableBefore = dateCompare(this.startDate, currentDate) + } + + if (this.endDate) { + disableAfter = dateCompare(currentDate, this.endDate) + } + + let multiples = this.multipleStatus.data + let multiplesStatus = -1 + if (this.range && multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, currentDate) + }) + } + const checked = multiplesStatus !== -1 + + result.push({ + fullDate: currentDate, + year: dateObj.year, + month: dateObj.month, + date: i, + multiple: this.range ? checked : false, + beforeMultiple: this.isLogicBefore(currentDate, this.multipleStatus.before, this.multipleStatus.after), + afterMultiple: this.isLogicAfter(currentDate, this.multipleStatus.before, this.multipleStatus.after), + disable: (this.startDate && !dateCompare(this.startDate, currentDate)) || (this.endDate && !dateCompare(currentDate,this.endDate)), + isToday, + userChecked: false, + extraInfo + }) + } + return result + } + /** + * 获取下一个月日期集合 + */ + _getNextMonthDays(amount, dateObj) { + const result = [] + const month = dateObj.month + 1 + for (let i = 1; i <= amount; i++) { + const month = dateObj.month === 12 ? 1 : dateObj.month*1 + 1 + const year = month === 1 ? dateObj.year + 1 : dateObj.year + const fullDate = `${year}-${addZero(month)}-${addZero(i)}` + let multiples = this.multipleStatus.data + let multiplesStatus = -1 + if (this.range && multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, fullDate) + }) + } + const checked = multiplesStatus !== -1 + // 获取打点信息 + const extraInfo = this.selected && this.selected.find((item) => { + if (this.dateEqual(fullDate, item.date)) { + return item + } + }) + result.push({ + fullDate, + year, + date: i, + month, + multiple: this.range ? checked : false, + beforeMultiple: this.isLogicBefore(fullDate, this.multipleStatus.before, this.multipleStatus.after), + afterMultiple: this.isLogicAfter(fullDate, this.multipleStatus.before, this.multipleStatus.after), + disable: (this.startDate && !dateCompare(this.startDate, fullDate)) || (this.endDate && !dateCompare(fullDate,this.endDate)), + isToday: fullDate === this.date.fullDate, + userChecked: false, + extraInfo + }) + } + return result + } + + /** + * 获取当前日期详情 + * @param {Object} date + */ + getInfo(date) { + if (!date) { + date = new Date() + } + + return this.calendar.find(item => item.fullDate === this.getDateObj(date).fullDate) + } + + /** + * 比较时间是否相等 + */ + dateEqual(before, after) { + before = new Date(fixIosDateFormat(before)) + after = new Date(fixIosDateFormat(after)) + return before.valueOf() === after.valueOf() + } + + /** + * 比较真实起始日期 + */ + + isLogicBefore(currentDate, before, after) { + let logicBefore = before + if (before && after) { + logicBefore = dateCompare(before, after) ? before : after + } + return this.dateEqual(logicBefore, currentDate) + } + + isLogicAfter(currentDate, before, after) { + let logicAfter = after + if (before && after) { + logicAfter = dateCompare(before, after) ? after : before + } + return this.dateEqual(logicAfter, currentDate) + } + + /** + * 获取日期范围内所有日期 + * @param {Object} begin + * @param {Object} end + */ + geDateAll(begin, end) { + var arr = [] + var ab = begin.split('-') + var ae = end.split('-') + var db = new Date() + db.setFullYear(ab[0], ab[1] - 1, ab[2]) + var de = new Date() + de.setFullYear(ae[0], ae[1] - 1, ae[2]) + var unixDb = db.getTime() - 24 * 60 * 60 * 1000 + var unixDe = de.getTime() - 24 * 60 * 60 * 1000 + for (var k = unixDb; k <= unixDe;) { + k = k + 24 * 60 * 60 * 1000 + arr.push(this.getDateObj(new Date(parseInt(k))).fullDate) + } + return arr + } + + /** + * 获取多选状态 + */ + setMultiple(fullDate) { + if (!this.range) return + + let { + before, + after + } = this.multipleStatus + if (before && after) { + if (!this.lastHover) { + this.lastHover = true + return + } + this.multipleStatus.before = fullDate + this.multipleStatus.after = '' + this.multipleStatus.data = [] + this.multipleStatus.fulldate = '' + this.lastHover = false + } else { + if (!before) { + this.multipleStatus.before = fullDate + this.lastHover = false + } else { + this.multipleStatus.after = fullDate + if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus + .after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus + .before); + } + this.lastHover = true + } + } + this.getWeeks(fullDate) + } + + /** + * 鼠标 hover 更新多选状态 + */ + setHoverMultiple(fullDate) { + if (!this.range || this.lastHover) return + + const { before } = this.multipleStatus + + if (!before) { + this.multipleStatus.before = fullDate + } else { + this.multipleStatus.after = fullDate + if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before); + } + } + this.getWeeks(fullDate) + } + + /** + * 更新默认值多选状态 + */ + setDefaultMultiple(before, after) { + this.multipleStatus.before = before + this.multipleStatus.after = after + if (before && after) { + if (dateCompare(before, after)) { + this.multipleStatus.data = this.geDateAll(before, after); + this.getWeeks(after) + } else { + this.multipleStatus.data = this.geDateAll(after, before); + this.getWeeks(before) + } + } + } + + /** + * 获取每周数据 + * @param {Object} dateData + */ + getWeeks(dateData) { + const { + year, + month, + } = this.getDateObj(dateData) + + const preMonthDayAmount = new Date(year, month - 1, 1).getDay() + const preMonthDays = this.getPreMonthDays(preMonthDayAmount, this.getDateObj(dateData)) + + const currentMonthDayAmount = new Date(year, month, 0).getDate() + const currentMonthDays = this.getCurrentMonthDays(currentMonthDayAmount, this.getDateObj(dateData)) + + const nextMonthDayAmount = 42 - preMonthDayAmount - currentMonthDayAmount + const nextMonthDays = this._getNextMonthDays(nextMonthDayAmount, this.getDateObj(dateData)) + + const calendarDays = [...preMonthDays, ...currentMonthDays, ...nextMonthDays] + + const weeks = new Array(6) + for (let i = 0; i < calendarDays.length; i++) { + const index = Math.floor(i / 7) + if(!weeks[index]){ + weeks[index] = new Array(7) + } + weeks[index][i % 7] = calendarDays[i] + } + + this.calendar = calendarDays + this.weeks = weeks + } +} + +function getDateTime(date, hideSecond){ + return `${getDate(date)} ${getTime(date, hideSecond)}` +} + +function getDate(date) { + date = fixIosDateFormat(date) + date = new Date(date) + const year = date.getFullYear() + const month = date.getMonth()+1 + const day = date.getDate() + return `${year}-${addZero(month)}-${addZero(day)}` +} + +function getTime(date, hideSecond){ + date = fixIosDateFormat(date) + date = new Date(date) + const hour = date.getHours() + const minute = date.getMinutes() + const second = date.getSeconds() + return hideSecond ? `${addZero(hour)}:${addZero(minute)}` : `${addZero(hour)}:${addZero(minute)}:${addZero(second)}` +} + +function addZero(num) { + if(num < 10){ + num = `0${num}` + } + return num +} + +function getDefaultSecond(hideSecond) { + return hideSecond ? '00:00' : '00:00:00' +} + +function dateCompare(startDate, endDate) { + startDate = new Date(fixIosDateFormat(startDate)) + endDate = new Date(fixIosDateFormat(endDate)) + return startDate <= endDate +} + +function checkDate(date){ + const dateReg = /((19|20)\d{2})(-|\/)\d{1,2}(-|\/)\d{1,2}/g + return date.match(dateReg) +} + +const dateTimeReg = /^\d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])( [0-5]?[0-9]:[0-5]?[0-9]:[0-5]?[0-9])?$/ +function fixIosDateFormat(value) { + if (typeof value === 'string' && dateTimeReg.test(value)) { + value = value.replace(/-/g, '/') + } + return value +} + +export {Calendar, getDateTime, getDate, getTime, addZero, getDefaultSecond, dateCompare, checkDate, fixIosDateFormat} \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/package.json b/uni_modules/uni-datetime-picker/package.json new file mode 100644 index 0000000..cabb668 --- /dev/null +++ b/uni_modules/uni-datetime-picker/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-datetime-picker", + "displayName": "uni-datetime-picker 日期选择器", + "version": "2.2.24", + "description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择", + "keywords": [ + "uni-datetime-picker", + "uni-ui", + "uniui", + "日期时间选择器", + "日期时间" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-datetime-picker/readme.md b/uni_modules/uni-datetime-picker/readme.md new file mode 100644 index 0000000..162fbef --- /dev/null +++ b/uni_modules/uni-datetime-picker/readme.md @@ -0,0 +1,21 @@ + + +> `重要通知:组件升级更新 2.0.0 后,支持日期+时间范围选择,组件 ui 将使用日历选择日期,ui 变化较大,同时支持 PC 和 移动端。此版本不向后兼容,不再支持单独的时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)。若仍需使用旧版本,可在插件市场下载*非uni_modules版本*,旧版本将不再维护` + +## DatetimePicker 时间选择器 + +> **组件名:uni-datetime-picker** +> 代码块: `uDatetimePicker` + + +该组件的优势是,支持**时间戳**输入和输出(起始时间、终止时间也支持时间戳),可**同时选择**日期和时间。 + +若只是需要单独选择日期和时间,不需要时间戳输入和输出,可使用原生的 picker 组件。 + +**_点击 picker 默认值规则:_** + +- 若设置初始值 value, 会显示在 picker 显示框中 +- 若无初始值 value,则初始值 value 为当前本地时间 Date.now(), 但不会显示在 picker 显示框中 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-icons/changelog.md b/uni_modules/uni-icons/changelog.md new file mode 100644 index 0000000..6449885 --- /dev/null +++ b/uni_modules/uni-icons/changelog.md @@ -0,0 +1,22 @@ +## 1.3.5(2022-01-24) +- 优化 size 属性可以传入不带单位的字符串数值 +## 1.3.4(2022-01-24) +- 优化 size 支持其他单位 +## 1.3.3(2022-01-17) +- 修复 nvue 有些图标不显示的bug,兼容老版本图标 +## 1.3.2(2021-12-01) +- 优化 示例可复制图标名称 +## 1.3.1(2021-11-23) +- 优化 兼容旧组件 type 值 +## 1.3.0(2021-11-19) +- 新增 更多图标 +- 优化 自定义图标使用方式 +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-icons](https://uniapp.dcloud.io/component/uniui/uni-icons) +## 1.1.7(2021-11-08) +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.5(2021-05-12) +- 新增 组件示例地址 +## 1.1.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-icons/components/uni-icons/icons.js b/uni_modules/uni-icons/components/uni-icons/icons.js new file mode 100644 index 0000000..7889936 --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/icons.js @@ -0,0 +1,1169 @@ +export default { + "id": "2852637", + "name": "uniui图标库", + "font_family": "uniicons", + "css_prefix_text": "uniui-", + "description": "", + "glyphs": [ + { + "icon_id": "25027049", + "name": "yanse", + "font_class": "color", + "unicode": "e6cf", + "unicode_decimal": 59087 + }, + { + "icon_id": "25027048", + "name": "wallet", + "font_class": "wallet", + "unicode": "e6b1", + "unicode_decimal": 59057 + }, + { + "icon_id": "25015720", + "name": "settings-filled", + "font_class": "settings-filled", + "unicode": "e6ce", + "unicode_decimal": 59086 + }, + { + "icon_id": "25015434", + "name": "shimingrenzheng-filled", + "font_class": "auth-filled", + "unicode": "e6cc", + "unicode_decimal": 59084 + }, + { + "icon_id": "24934246", + "name": "shop-filled", + "font_class": "shop-filled", + "unicode": "e6cd", + "unicode_decimal": 59085 + }, + { + "icon_id": "24934159", + "name": "staff-filled-01", + "font_class": "staff-filled", + "unicode": "e6cb", + "unicode_decimal": 59083 + }, + { + "icon_id": "24932461", + "name": "VIP-filled", + "font_class": "vip-filled", + "unicode": "e6c6", + "unicode_decimal": 59078 + }, + { + "icon_id": "24932462", + "name": "plus_circle_fill", + "font_class": "plus-filled", + "unicode": "e6c7", + "unicode_decimal": 59079 + }, + { + "icon_id": "24932463", + "name": "folder_add-filled", + "font_class": "folder-add-filled", + "unicode": "e6c8", + "unicode_decimal": 59080 + }, + { + "icon_id": "24932464", + "name": "yanse-filled", + "font_class": "color-filled", + "unicode": "e6c9", + "unicode_decimal": 59081 + }, + { + "icon_id": "24932465", + "name": "tune-filled", + "font_class": "tune-filled", + "unicode": "e6ca", + "unicode_decimal": 59082 + }, + { + "icon_id": "24932455", + "name": "a-rilidaka-filled", + "font_class": "calendar-filled", + "unicode": "e6c0", + "unicode_decimal": 59072 + }, + { + "icon_id": "24932456", + "name": "notification-filled", + "font_class": "notification-filled", + "unicode": "e6c1", + "unicode_decimal": 59073 + }, + { + "icon_id": "24932457", + "name": "wallet-filled", + "font_class": "wallet-filled", + "unicode": "e6c2", + "unicode_decimal": 59074 + }, + { + "icon_id": "24932458", + "name": "paihangbang-filled", + "font_class": "medal-filled", + "unicode": "e6c3", + "unicode_decimal": 59075 + }, + { + "icon_id": "24932459", + "name": "gift-filled", + "font_class": "gift-filled", + "unicode": "e6c4", + "unicode_decimal": 59076 + }, + { + "icon_id": "24932460", + "name": "fire-filled", + "font_class": "fire-filled", + "unicode": "e6c5", + "unicode_decimal": 59077 + }, + { + "icon_id": "24928001", + "name": "refreshempty", + "font_class": "refreshempty", + "unicode": "e6bf", + "unicode_decimal": 59071 + }, + { + "icon_id": "24926853", + "name": "location-ellipse", + "font_class": "location-filled", + "unicode": "e6af", + "unicode_decimal": 59055 + }, + { + "icon_id": "24926735", + "name": "person-filled", + "font_class": "person-filled", + "unicode": "e69d", + "unicode_decimal": 59037 + }, + { + "icon_id": "24926703", + "name": "personadd-filled", + "font_class": "personadd-filled", + "unicode": "e698", + "unicode_decimal": 59032 + }, + { + "icon_id": "24923351", + "name": "back", + "font_class": "back", + "unicode": "e6b9", + "unicode_decimal": 59065 + }, + { + "icon_id": "24923352", + "name": "forward", + "font_class": "forward", + "unicode": "e6ba", + "unicode_decimal": 59066 + }, + { + "icon_id": "24923353", + "name": "arrowthinright", + "font_class": "arrow-right", + "unicode": "e6bb", + "unicode_decimal": 59067 + }, + { + "icon_id": "24923353", + "name": "arrowthinright", + "font_class": "arrowthinright", + "unicode": "e6bb", + "unicode_decimal": 59067 + }, + { + "icon_id": "24923354", + "name": "arrowthinleft", + "font_class": "arrow-left", + "unicode": "e6bc", + "unicode_decimal": 59068 + }, + { + "icon_id": "24923354", + "name": "arrowthinleft", + "font_class": "arrowthinleft", + "unicode": "e6bc", + "unicode_decimal": 59068 + }, + { + "icon_id": "24923355", + "name": "arrowthinup", + "font_class": "arrow-up", + "unicode": "e6bd", + "unicode_decimal": 59069 + }, + { + "icon_id": "24923355", + "name": "arrowthinup", + "font_class": "arrowthinup", + "unicode": "e6bd", + "unicode_decimal": 59069 + }, + { + "icon_id": "24923356", + "name": "arrowthindown", + "font_class": "arrow-down", + "unicode": "e6be", + "unicode_decimal": 59070 + },{ + "icon_id": "24923356", + "name": "arrowthindown", + "font_class": "arrowthindown", + "unicode": "e6be", + "unicode_decimal": 59070 + }, + { + "icon_id": "24923349", + "name": "arrowdown", + "font_class": "bottom", + "unicode": "e6b8", + "unicode_decimal": 59064 + },{ + "icon_id": "24923349", + "name": "arrowdown", + "font_class": "arrowdown", + "unicode": "e6b8", + "unicode_decimal": 59064 + }, + { + "icon_id": "24923346", + "name": "arrowright", + "font_class": "right", + "unicode": "e6b5", + "unicode_decimal": 59061 + }, + { + "icon_id": "24923346", + "name": "arrowright", + "font_class": "arrowright", + "unicode": "e6b5", + "unicode_decimal": 59061 + }, + { + "icon_id": "24923347", + "name": "arrowup", + "font_class": "top", + "unicode": "e6b6", + "unicode_decimal": 59062 + }, + { + "icon_id": "24923347", + "name": "arrowup", + "font_class": "arrowup", + "unicode": "e6b6", + "unicode_decimal": 59062 + }, + { + "icon_id": "24923348", + "name": "arrowleft", + "font_class": "left", + "unicode": "e6b7", + "unicode_decimal": 59063 + }, + { + "icon_id": "24923348", + "name": "arrowleft", + "font_class": "arrowleft", + "unicode": "e6b7", + "unicode_decimal": 59063 + }, + { + "icon_id": "24923334", + "name": "eye", + "font_class": "eye", + "unicode": "e651", + "unicode_decimal": 58961 + }, + { + "icon_id": "24923335", + "name": "eye-filled", + "font_class": "eye-filled", + "unicode": "e66a", + "unicode_decimal": 58986 + }, + { + "icon_id": "24923336", + "name": "eye-slash", + "font_class": "eye-slash", + "unicode": "e6b3", + "unicode_decimal": 59059 + }, + { + "icon_id": "24923337", + "name": "eye-slash-filled", + "font_class": "eye-slash-filled", + "unicode": "e6b4", + "unicode_decimal": 59060 + }, + { + "icon_id": "24923305", + "name": "info-filled", + "font_class": "info-filled", + "unicode": "e649", + "unicode_decimal": 58953 + }, + { + "icon_id": "24923299", + "name": "reload-01", + "font_class": "reload", + "unicode": "e6b2", + "unicode_decimal": 59058 + }, + { + "icon_id": "24923195", + "name": "mic_slash_fill", + "font_class": "micoff-filled", + "unicode": "e6b0", + "unicode_decimal": 59056 + }, + { + "icon_id": "24923165", + "name": "map-pin-ellipse", + "font_class": "map-pin-ellipse", + "unicode": "e6ac", + "unicode_decimal": 59052 + }, + { + "icon_id": "24923166", + "name": "map-pin", + "font_class": "map-pin", + "unicode": "e6ad", + "unicode_decimal": 59053 + }, + { + "icon_id": "24923167", + "name": "location", + "font_class": "location", + "unicode": "e6ae", + "unicode_decimal": 59054 + }, + { + "icon_id": "24923064", + "name": "starhalf", + "font_class": "starhalf", + "unicode": "e683", + "unicode_decimal": 59011 + }, + { + "icon_id": "24923065", + "name": "star", + "font_class": "star", + "unicode": "e688", + "unicode_decimal": 59016 + }, + { + "icon_id": "24923066", + "name": "star-filled", + "font_class": "star-filled", + "unicode": "e68f", + "unicode_decimal": 59023 + }, + { + "icon_id": "24899646", + "name": "a-rilidaka", + "font_class": "calendar", + "unicode": "e6a0", + "unicode_decimal": 59040 + }, + { + "icon_id": "24899647", + "name": "fire", + "font_class": "fire", + "unicode": "e6a1", + "unicode_decimal": 59041 + }, + { + "icon_id": "24899648", + "name": "paihangbang", + "font_class": "medal", + "unicode": "e6a2", + "unicode_decimal": 59042 + }, + { + "icon_id": "24899649", + "name": "font", + "font_class": "font", + "unicode": "e6a3", + "unicode_decimal": 59043 + }, + { + "icon_id": "24899650", + "name": "gift", + "font_class": "gift", + "unicode": "e6a4", + "unicode_decimal": 59044 + }, + { + "icon_id": "24899651", + "name": "link", + "font_class": "link", + "unicode": "e6a5", + "unicode_decimal": 59045 + }, + { + "icon_id": "24899652", + "name": "notification", + "font_class": "notification", + "unicode": "e6a6", + "unicode_decimal": 59046 + }, + { + "icon_id": "24899653", + "name": "staff", + "font_class": "staff", + "unicode": "e6a7", + "unicode_decimal": 59047 + }, + { + "icon_id": "24899654", + "name": "VIP", + "font_class": "vip", + "unicode": "e6a8", + "unicode_decimal": 59048 + }, + { + "icon_id": "24899655", + "name": "folder_add", + "font_class": "folder-add", + "unicode": "e6a9", + "unicode_decimal": 59049 + }, + { + "icon_id": "24899656", + "name": "tune", + "font_class": "tune", + "unicode": "e6aa", + "unicode_decimal": 59050 + }, + { + "icon_id": "24899657", + "name": "shimingrenzheng", + "font_class": "auth", + "unicode": "e6ab", + "unicode_decimal": 59051 + }, + { + "icon_id": "24899565", + "name": "person", + "font_class": "person", + "unicode": "e699", + "unicode_decimal": 59033 + }, + { + "icon_id": "24899566", + "name": "email-filled", + "font_class": "email-filled", + "unicode": "e69a", + "unicode_decimal": 59034 + }, + { + "icon_id": "24899567", + "name": "phone-filled", + "font_class": "phone-filled", + "unicode": "e69b", + "unicode_decimal": 59035 + }, + { + "icon_id": "24899568", + "name": "phone", + "font_class": "phone", + "unicode": "e69c", + "unicode_decimal": 59036 + }, + { + "icon_id": "24899570", + "name": "email", + "font_class": "email", + "unicode": "e69e", + "unicode_decimal": 59038 + }, + { + "icon_id": "24899571", + "name": "personadd", + "font_class": "personadd", + "unicode": "e69f", + "unicode_decimal": 59039 + }, + { + "icon_id": "24899558", + "name": "chatboxes-filled", + "font_class": "chatboxes-filled", + "unicode": "e692", + "unicode_decimal": 59026 + }, + { + "icon_id": "24899559", + "name": "contact", + "font_class": "contact", + "unicode": "e693", + "unicode_decimal": 59027 + }, + { + "icon_id": "24899560", + "name": "chatbubble-filled", + "font_class": "chatbubble-filled", + "unicode": "e694", + "unicode_decimal": 59028 + }, + { + "icon_id": "24899561", + "name": "contact-filled", + "font_class": "contact-filled", + "unicode": "e695", + "unicode_decimal": 59029 + }, + { + "icon_id": "24899562", + "name": "chatboxes", + "font_class": "chatboxes", + "unicode": "e696", + "unicode_decimal": 59030 + }, + { + "icon_id": "24899563", + "name": "chatbubble", + "font_class": "chatbubble", + "unicode": "e697", + "unicode_decimal": 59031 + }, + { + "icon_id": "24881290", + "name": "upload-filled", + "font_class": "upload-filled", + "unicode": "e68e", + "unicode_decimal": 59022 + }, + { + "icon_id": "24881292", + "name": "upload", + "font_class": "upload", + "unicode": "e690", + "unicode_decimal": 59024 + }, + { + "icon_id": "24881293", + "name": "weixin", + "font_class": "weixin", + "unicode": "e691", + "unicode_decimal": 59025 + }, + { + "icon_id": "24881274", + "name": "compose", + "font_class": "compose", + "unicode": "e67f", + "unicode_decimal": 59007 + }, + { + "icon_id": "24881275", + "name": "qq", + "font_class": "qq", + "unicode": "e680", + "unicode_decimal": 59008 + }, + { + "icon_id": "24881276", + "name": "download-filled", + "font_class": "download-filled", + "unicode": "e681", + "unicode_decimal": 59009 + }, + { + "icon_id": "24881277", + "name": "pengyouquan", + "font_class": "pyq", + "unicode": "e682", + "unicode_decimal": 59010 + }, + { + "icon_id": "24881279", + "name": "sound", + "font_class": "sound", + "unicode": "e684", + "unicode_decimal": 59012 + }, + { + "icon_id": "24881280", + "name": "trash-filled", + "font_class": "trash-filled", + "unicode": "e685", + "unicode_decimal": 59013 + }, + { + "icon_id": "24881281", + "name": "sound-filled", + "font_class": "sound-filled", + "unicode": "e686", + "unicode_decimal": 59014 + }, + { + "icon_id": "24881282", + "name": "trash", + "font_class": "trash", + "unicode": "e687", + "unicode_decimal": 59015 + }, + { + "icon_id": "24881284", + "name": "videocam-filled", + "font_class": "videocam-filled", + "unicode": "e689", + "unicode_decimal": 59017 + }, + { + "icon_id": "24881285", + "name": "spinner-cycle", + "font_class": "spinner-cycle", + "unicode": "e68a", + "unicode_decimal": 59018 + }, + { + "icon_id": "24881286", + "name": "weibo", + "font_class": "weibo", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "24881288", + "name": "videocam", + "font_class": "videocam", + "unicode": "e68c", + "unicode_decimal": 59020 + }, + { + "icon_id": "24881289", + "name": "download", + "font_class": "download", + "unicode": "e68d", + "unicode_decimal": 59021 + }, + { + "icon_id": "24879601", + "name": "help", + "font_class": "help", + "unicode": "e679", + "unicode_decimal": 59001 + }, + { + "icon_id": "24879602", + "name": "navigate-filled", + "font_class": "navigate-filled", + "unicode": "e67a", + "unicode_decimal": 59002 + }, + { + "icon_id": "24879603", + "name": "plusempty", + "font_class": "plusempty", + "unicode": "e67b", + "unicode_decimal": 59003 + }, + { + "icon_id": "24879604", + "name": "smallcircle", + "font_class": "smallcircle", + "unicode": "e67c", + "unicode_decimal": 59004 + }, + { + "icon_id": "24879605", + "name": "minus-filled", + "font_class": "minus-filled", + "unicode": "e67d", + "unicode_decimal": 59005 + }, + { + "icon_id": "24879606", + "name": "micoff", + "font_class": "micoff", + "unicode": "e67e", + "unicode_decimal": 59006 + }, + { + "icon_id": "24879588", + "name": "closeempty", + "font_class": "closeempty", + "unicode": "e66c", + "unicode_decimal": 58988 + }, + { + "icon_id": "24879589", + "name": "clear", + "font_class": "clear", + "unicode": "e66d", + "unicode_decimal": 58989 + }, + { + "icon_id": "24879590", + "name": "navigate", + "font_class": "navigate", + "unicode": "e66e", + "unicode_decimal": 58990 + }, + { + "icon_id": "24879591", + "name": "minus", + "font_class": "minus", + "unicode": "e66f", + "unicode_decimal": 58991 + }, + { + "icon_id": "24879592", + "name": "image", + "font_class": "image", + "unicode": "e670", + "unicode_decimal": 58992 + }, + { + "icon_id": "24879593", + "name": "mic", + "font_class": "mic", + "unicode": "e671", + "unicode_decimal": 58993 + }, + { + "icon_id": "24879594", + "name": "paperplane", + "font_class": "paperplane", + "unicode": "e672", + "unicode_decimal": 58994 + }, + { + "icon_id": "24879595", + "name": "close", + "font_class": "close", + "unicode": "e673", + "unicode_decimal": 58995 + }, + { + "icon_id": "24879596", + "name": "help-filled", + "font_class": "help-filled", + "unicode": "e674", + "unicode_decimal": 58996 + }, + { + "icon_id": "24879597", + "name": "plus-filled", + "font_class": "paperplane-filled", + "unicode": "e675", + "unicode_decimal": 58997 + }, + { + "icon_id": "24879598", + "name": "plus", + "font_class": "plus", + "unicode": "e676", + "unicode_decimal": 58998 + }, + { + "icon_id": "24879599", + "name": "mic-filled", + "font_class": "mic-filled", + "unicode": "e677", + "unicode_decimal": 58999 + }, + { + "icon_id": "24879600", + "name": "image-filled", + "font_class": "image-filled", + "unicode": "e678", + "unicode_decimal": 59000 + }, + { + "icon_id": "24855900", + "name": "locked-filled", + "font_class": "locked-filled", + "unicode": "e668", + "unicode_decimal": 58984 + }, + { + "icon_id": "24855901", + "name": "info", + "font_class": "info", + "unicode": "e669", + "unicode_decimal": 58985 + }, + { + "icon_id": "24855903", + "name": "locked", + "font_class": "locked", + "unicode": "e66b", + "unicode_decimal": 58987 + }, + { + "icon_id": "24855884", + "name": "camera-filled", + "font_class": "camera-filled", + "unicode": "e658", + "unicode_decimal": 58968 + }, + { + "icon_id": "24855885", + "name": "chat-filled", + "font_class": "chat-filled", + "unicode": "e659", + "unicode_decimal": 58969 + }, + { + "icon_id": "24855886", + "name": "camera", + "font_class": "camera", + "unicode": "e65a", + "unicode_decimal": 58970 + }, + { + "icon_id": "24855887", + "name": "circle", + "font_class": "circle", + "unicode": "e65b", + "unicode_decimal": 58971 + }, + { + "icon_id": "24855888", + "name": "checkmarkempty", + "font_class": "checkmarkempty", + "unicode": "e65c", + "unicode_decimal": 58972 + }, + { + "icon_id": "24855889", + "name": "chat", + "font_class": "chat", + "unicode": "e65d", + "unicode_decimal": 58973 + }, + { + "icon_id": "24855890", + "name": "circle-filled", + "font_class": "circle-filled", + "unicode": "e65e", + "unicode_decimal": 58974 + }, + { + "icon_id": "24855891", + "name": "flag", + "font_class": "flag", + "unicode": "e65f", + "unicode_decimal": 58975 + }, + { + "icon_id": "24855892", + "name": "flag-filled", + "font_class": "flag-filled", + "unicode": "e660", + "unicode_decimal": 58976 + }, + { + "icon_id": "24855893", + "name": "gear-filled", + "font_class": "gear-filled", + "unicode": "e661", + "unicode_decimal": 58977 + }, + { + "icon_id": "24855894", + "name": "home", + "font_class": "home", + "unicode": "e662", + "unicode_decimal": 58978 + }, + { + "icon_id": "24855895", + "name": "home-filled", + "font_class": "home-filled", + "unicode": "e663", + "unicode_decimal": 58979 + }, + { + "icon_id": "24855896", + "name": "gear", + "font_class": "gear", + "unicode": "e664", + "unicode_decimal": 58980 + }, + { + "icon_id": "24855897", + "name": "smallcircle-filled", + "font_class": "smallcircle-filled", + "unicode": "e665", + "unicode_decimal": 58981 + }, + { + "icon_id": "24855898", + "name": "map-filled", + "font_class": "map-filled", + "unicode": "e666", + "unicode_decimal": 58982 + }, + { + "icon_id": "24855899", + "name": "map", + "font_class": "map", + "unicode": "e667", + "unicode_decimal": 58983 + }, + { + "icon_id": "24855825", + "name": "refresh-filled", + "font_class": "refresh-filled", + "unicode": "e656", + "unicode_decimal": 58966 + }, + { + "icon_id": "24855826", + "name": "refresh", + "font_class": "refresh", + "unicode": "e657", + "unicode_decimal": 58967 + }, + { + "icon_id": "24855808", + "name": "cloud-upload", + "font_class": "cloud-upload", + "unicode": "e645", + "unicode_decimal": 58949 + }, + { + "icon_id": "24855809", + "name": "cloud-download-filled", + "font_class": "cloud-download-filled", + "unicode": "e646", + "unicode_decimal": 58950 + }, + { + "icon_id": "24855810", + "name": "cloud-download", + "font_class": "cloud-download", + "unicode": "e647", + "unicode_decimal": 58951 + }, + { + "icon_id": "24855811", + "name": "cloud-upload-filled", + "font_class": "cloud-upload-filled", + "unicode": "e648", + "unicode_decimal": 58952 + }, + { + "icon_id": "24855813", + "name": "redo", + "font_class": "redo", + "unicode": "e64a", + "unicode_decimal": 58954 + }, + { + "icon_id": "24855814", + "name": "images-filled", + "font_class": "images-filled", + "unicode": "e64b", + "unicode_decimal": 58955 + }, + { + "icon_id": "24855815", + "name": "undo-filled", + "font_class": "undo-filled", + "unicode": "e64c", + "unicode_decimal": 58956 + }, + { + "icon_id": "24855816", + "name": "more", + "font_class": "more", + "unicode": "e64d", + "unicode_decimal": 58957 + }, + { + "icon_id": "24855817", + "name": "more-filled", + "font_class": "more-filled", + "unicode": "e64e", + "unicode_decimal": 58958 + }, + { + "icon_id": "24855818", + "name": "undo", + "font_class": "undo", + "unicode": "e64f", + "unicode_decimal": 58959 + }, + { + "icon_id": "24855819", + "name": "images", + "font_class": "images", + "unicode": "e650", + "unicode_decimal": 58960 + }, + { + "icon_id": "24855821", + "name": "paperclip", + "font_class": "paperclip", + "unicode": "e652", + "unicode_decimal": 58962 + }, + { + "icon_id": "24855822", + "name": "settings", + "font_class": "settings", + "unicode": "e653", + "unicode_decimal": 58963 + }, + { + "icon_id": "24855823", + "name": "search", + "font_class": "search", + "unicode": "e654", + "unicode_decimal": 58964 + }, + { + "icon_id": "24855824", + "name": "redo-filled", + "font_class": "redo-filled", + "unicode": "e655", + "unicode_decimal": 58965 + }, + { + "icon_id": "24841702", + "name": "list", + "font_class": "list", + "unicode": "e644", + "unicode_decimal": 58948 + }, + { + "icon_id": "24841489", + "name": "mail-open-filled", + "font_class": "mail-open-filled", + "unicode": "e63a", + "unicode_decimal": 58938 + }, + { + "icon_id": "24841491", + "name": "hand-thumbsdown-filled", + "font_class": "hand-down-filled", + "unicode": "e63c", + "unicode_decimal": 58940 + }, + { + "icon_id": "24841492", + "name": "hand-thumbsdown", + "font_class": "hand-down", + "unicode": "e63d", + "unicode_decimal": 58941 + }, + { + "icon_id": "24841493", + "name": "hand-thumbsup-filled", + "font_class": "hand-up-filled", + "unicode": "e63e", + "unicode_decimal": 58942 + }, + { + "icon_id": "24841494", + "name": "hand-thumbsup", + "font_class": "hand-up", + "unicode": "e63f", + "unicode_decimal": 58943 + }, + { + "icon_id": "24841496", + "name": "heart-filled", + "font_class": "heart-filled", + "unicode": "e641", + "unicode_decimal": 58945 + }, + { + "icon_id": "24841498", + "name": "mail-open", + "font_class": "mail-open", + "unicode": "e643", + "unicode_decimal": 58947 + }, + { + "icon_id": "24841488", + "name": "heart", + "font_class": "heart", + "unicode": "e639", + "unicode_decimal": 58937 + }, + { + "icon_id": "24839963", + "name": "loop", + "font_class": "loop", + "unicode": "e633", + "unicode_decimal": 58931 + }, + { + "icon_id": "24839866", + "name": "pulldown", + "font_class": "pulldown", + "unicode": "e632", + "unicode_decimal": 58930 + }, + { + "icon_id": "24813798", + "name": "scan", + "font_class": "scan", + "unicode": "e62a", + "unicode_decimal": 58922 + }, + { + "icon_id": "24813786", + "name": "bars", + "font_class": "bars", + "unicode": "e627", + "unicode_decimal": 58919 + }, + { + "icon_id": "24813788", + "name": "cart-filled", + "font_class": "cart-filled", + "unicode": "e629", + "unicode_decimal": 58921 + }, + { + "icon_id": "24813790", + "name": "checkbox", + "font_class": "checkbox", + "unicode": "e62b", + "unicode_decimal": 58923 + }, + { + "icon_id": "24813791", + "name": "checkbox-filled", + "font_class": "checkbox-filled", + "unicode": "e62c", + "unicode_decimal": 58924 + }, + { + "icon_id": "24813794", + "name": "shop", + "font_class": "shop", + "unicode": "e62f", + "unicode_decimal": 58927 + }, + { + "icon_id": "24813795", + "name": "headphones", + "font_class": "headphones", + "unicode": "e630", + "unicode_decimal": 58928 + }, + { + "icon_id": "24813796", + "name": "cart", + "font_class": "cart", + "unicode": "e631", + "unicode_decimal": 58929 + } + ] +} diff --git a/uni_modules/uni-icons/components/uni-icons/uni-icons.vue b/uni_modules/uni-icons/components/uni-icons/uni-icons.vue new file mode 100644 index 0000000..86e7444 --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uni-icons.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.css b/uni_modules/uni-icons/components/uni-icons/uniicons.css new file mode 100644 index 0000000..2f56eab --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uniicons.css @@ -0,0 +1,663 @@ +.uniui-color:before { + content: "\e6cf"; +} + +.uniui-wallet:before { + content: "\e6b1"; +} + +.uniui-settings-filled:before { + content: "\e6ce"; +} + +.uniui-auth-filled:before { + content: "\e6cc"; +} + +.uniui-shop-filled:before { + content: "\e6cd"; +} + +.uniui-staff-filled:before { + content: "\e6cb"; +} + +.uniui-vip-filled:before { + content: "\e6c6"; +} + +.uniui-plus-filled:before { + content: "\e6c7"; +} + +.uniui-folder-add-filled:before { + content: "\e6c8"; +} + +.uniui-color-filled:before { + content: "\e6c9"; +} + +.uniui-tune-filled:before { + content: "\e6ca"; +} + +.uniui-calendar-filled:before { + content: "\e6c0"; +} + +.uniui-notification-filled:before { + content: "\e6c1"; +} + +.uniui-wallet-filled:before { + content: "\e6c2"; +} + +.uniui-medal-filled:before { + content: "\e6c3"; +} + +.uniui-gift-filled:before { + content: "\e6c4"; +} + +.uniui-fire-filled:before { + content: "\e6c5"; +} + +.uniui-refreshempty:before { + content: "\e6bf"; +} + +.uniui-location-filled:before { + content: "\e6af"; +} + +.uniui-person-filled:before { + content: "\e69d"; +} + +.uniui-personadd-filled:before { + content: "\e698"; +} + +.uniui-back:before { + content: "\e6b9"; +} + +.uniui-forward:before { + content: "\e6ba"; +} + +.uniui-arrow-right:before { + content: "\e6bb"; +} + +.uniui-arrowthinright:before { + content: "\e6bb"; +} + +.uniui-arrow-left:before { + content: "\e6bc"; +} + +.uniui-arrowthinleft:before { + content: "\e6bc"; +} + +.uniui-arrow-up:before { + content: "\e6bd"; +} + +.uniui-arrowthinup:before { + content: "\e6bd"; +} + +.uniui-arrow-down:before { + content: "\e6be"; +} + +.uniui-arrowthindown:before { + content: "\e6be"; +} + +.uniui-bottom:before { + content: "\e6b8"; +} + +.uniui-arrowdown:before { + content: "\e6b8"; +} + +.uniui-right:before { + content: "\e6b5"; +} + +.uniui-arrowright:before { + content: "\e6b5"; +} + +.uniui-top:before { + content: "\e6b6"; +} + +.uniui-arrowup:before { + content: "\e6b6"; +} + +.uniui-left:before { + content: "\e6b7"; +} + +.uniui-arrowleft:before { + content: "\e6b7"; +} + +.uniui-eye:before { + content: "\e651"; +} + +.uniui-eye-filled:before { + content: "\e66a"; +} + +.uniui-eye-slash:before { + content: "\e6b3"; +} + +.uniui-eye-slash-filled:before { + content: "\e6b4"; +} + +.uniui-info-filled:before { + content: "\e649"; +} + +.uniui-reload:before { + content: "\e6b2"; +} + +.uniui-micoff-filled:before { + content: "\e6b0"; +} + +.uniui-map-pin-ellipse:before { + content: "\e6ac"; +} + +.uniui-map-pin:before { + content: "\e6ad"; +} + +.uniui-location:before { + content: "\e6ae"; +} + +.uniui-starhalf:before { + content: "\e683"; +} + +.uniui-star:before { + content: "\e688"; +} + +.uniui-star-filled:before { + content: "\e68f"; +} + +.uniui-calendar:before { + content: "\e6a0"; +} + +.uniui-fire:before { + content: "\e6a1"; +} + +.uniui-medal:before { + content: "\e6a2"; +} + +.uniui-font:before { + content: "\e6a3"; +} + +.uniui-gift:before { + content: "\e6a4"; +} + +.uniui-link:before { + content: "\e6a5"; +} + +.uniui-notification:before { + content: "\e6a6"; +} + +.uniui-staff:before { + content: "\e6a7"; +} + +.uniui-vip:before { + content: "\e6a8"; +} + +.uniui-folder-add:before { + content: "\e6a9"; +} + +.uniui-tune:before { + content: "\e6aa"; +} + +.uniui-auth:before { + content: "\e6ab"; +} + +.uniui-person:before { + content: "\e699"; +} + +.uniui-email-filled:before { + content: "\e69a"; +} + +.uniui-phone-filled:before { + content: "\e69b"; +} + +.uniui-phone:before { + content: "\e69c"; +} + +.uniui-email:before { + content: "\e69e"; +} + +.uniui-personadd:before { + content: "\e69f"; +} + +.uniui-chatboxes-filled:before { + content: "\e692"; +} + +.uniui-contact:before { + content: "\e693"; +} + +.uniui-chatbubble-filled:before { + content: "\e694"; +} + +.uniui-contact-filled:before { + content: "\e695"; +} + +.uniui-chatboxes:before { + content: "\e696"; +} + +.uniui-chatbubble:before { + content: "\e697"; +} + +.uniui-upload-filled:before { + content: "\e68e"; +} + +.uniui-upload:before { + content: "\e690"; +} + +.uniui-weixin:before { + content: "\e691"; +} + +.uniui-compose:before { + content: "\e67f"; +} + +.uniui-qq:before { + content: "\e680"; +} + +.uniui-download-filled:before { + content: "\e681"; +} + +.uniui-pyq:before { + content: "\e682"; +} + +.uniui-sound:before { + content: "\e684"; +} + +.uniui-trash-filled:before { + content: "\e685"; +} + +.uniui-sound-filled:before { + content: "\e686"; +} + +.uniui-trash:before { + content: "\e687"; +} + +.uniui-videocam-filled:before { + content: "\e689"; +} + +.uniui-spinner-cycle:before { + content: "\e68a"; +} + +.uniui-weibo:before { + content: "\e68b"; +} + +.uniui-videocam:before { + content: "\e68c"; +} + +.uniui-download:before { + content: "\e68d"; +} + +.uniui-help:before { + content: "\e679"; +} + +.uniui-navigate-filled:before { + content: "\e67a"; +} + +.uniui-plusempty:before { + content: "\e67b"; +} + +.uniui-smallcircle:before { + content: "\e67c"; +} + +.uniui-minus-filled:before { + content: "\e67d"; +} + +.uniui-micoff:before { + content: "\e67e"; +} + +.uniui-closeempty:before { + content: "\e66c"; +} + +.uniui-clear:before { + content: "\e66d"; +} + +.uniui-navigate:before { + content: "\e66e"; +} + +.uniui-minus:before { + content: "\e66f"; +} + +.uniui-image:before { + content: "\e670"; +} + +.uniui-mic:before { + content: "\e671"; +} + +.uniui-paperplane:before { + content: "\e672"; +} + +.uniui-close:before { + content: "\e673"; +} + +.uniui-help-filled:before { + content: "\e674"; +} + +.uniui-paperplane-filled:before { + content: "\e675"; +} + +.uniui-plus:before { + content: "\e676"; +} + +.uniui-mic-filled:before { + content: "\e677"; +} + +.uniui-image-filled:before { + content: "\e678"; +} + +.uniui-locked-filled:before { + content: "\e668"; +} + +.uniui-info:before { + content: "\e669"; +} + +.uniui-locked:before { + content: "\e66b"; +} + +.uniui-camera-filled:before { + content: "\e658"; +} + +.uniui-chat-filled:before { + content: "\e659"; +} + +.uniui-camera:before { + content: "\e65a"; +} + +.uniui-circle:before { + content: "\e65b"; +} + +.uniui-checkmarkempty:before { + content: "\e65c"; +} + +.uniui-chat:before { + content: "\e65d"; +} + +.uniui-circle-filled:before { + content: "\e65e"; +} + +.uniui-flag:before { + content: "\e65f"; +} + +.uniui-flag-filled:before { + content: "\e660"; +} + +.uniui-gear-filled:before { + content: "\e661"; +} + +.uniui-home:before { + content: "\e662"; +} + +.uniui-home-filled:before { + content: "\e663"; +} + +.uniui-gear:before { + content: "\e664"; +} + +.uniui-smallcircle-filled:before { + content: "\e665"; +} + +.uniui-map-filled:before { + content: "\e666"; +} + +.uniui-map:before { + content: "\e667"; +} + +.uniui-refresh-filled:before { + content: "\e656"; +} + +.uniui-refresh:before { + content: "\e657"; +} + +.uniui-cloud-upload:before { + content: "\e645"; +} + +.uniui-cloud-download-filled:before { + content: "\e646"; +} + +.uniui-cloud-download:before { + content: "\e647"; +} + +.uniui-cloud-upload-filled:before { + content: "\e648"; +} + +.uniui-redo:before { + content: "\e64a"; +} + +.uniui-images-filled:before { + content: "\e64b"; +} + +.uniui-undo-filled:before { + content: "\e64c"; +} + +.uniui-more:before { + content: "\e64d"; +} + +.uniui-more-filled:before { + content: "\e64e"; +} + +.uniui-undo:before { + content: "\e64f"; +} + +.uniui-images:before { + content: "\e650"; +} + +.uniui-paperclip:before { + content: "\e652"; +} + +.uniui-settings:before { + content: "\e653"; +} + +.uniui-search:before { + content: "\e654"; +} + +.uniui-redo-filled:before { + content: "\e655"; +} + +.uniui-list:before { + content: "\e644"; +} + +.uniui-mail-open-filled:before { + content: "\e63a"; +} + +.uniui-hand-down-filled:before { + content: "\e63c"; +} + +.uniui-hand-down:before { + content: "\e63d"; +} + +.uniui-hand-up-filled:before { + content: "\e63e"; +} + +.uniui-hand-up:before { + content: "\e63f"; +} + +.uniui-heart-filled:before { + content: "\e641"; +} + +.uniui-mail-open:before { + content: "\e643"; +} + +.uniui-heart:before { + content: "\e639"; +} + +.uniui-loop:before { + content: "\e633"; +} + +.uniui-pulldown:before { + content: "\e632"; +} + +.uniui-scan:before { + content: "\e62a"; +} + +.uniui-bars:before { + content: "\e627"; +} + +.uniui-cart-filled:before { + content: "\e629"; +} + +.uniui-checkbox:before { + content: "\e62b"; +} + +.uniui-checkbox-filled:before { + content: "\e62c"; +} + +.uniui-shop:before { + content: "\e62f"; +} + +.uniui-headphones:before { + content: "\e630"; +} + +.uniui-cart:before { + content: "\e631"; +} diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.ttf b/uni_modules/uni-icons/components/uni-icons/uniicons.ttf new file mode 100644 index 0000000..835f33b Binary files /dev/null and b/uni_modules/uni-icons/components/uni-icons/uniicons.ttf differ diff --git a/uni_modules/uni-icons/package.json b/uni_modules/uni-icons/package.json new file mode 100644 index 0000000..d1c4e77 --- /dev/null +++ b/uni_modules/uni-icons/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-icons", + "displayName": "uni-icons 图标", + "version": "1.3.5", + "description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。", + "keywords": [ + "uni-ui", + "uniui", + "icon", + "图标" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.2.14" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-icons/readme.md b/uni_modules/uni-icons/readme.md new file mode 100644 index 0000000..86234ba --- /dev/null +++ b/uni_modules/uni-icons/readme.md @@ -0,0 +1,8 @@ +## Icons 图标 +> **组件名:uni-icons** +> 代码块: `uIcons` + +用于展示 icons 图标 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-scss/changelog.md b/uni_modules/uni-scss/changelog.md new file mode 100644 index 0000000..b863bb0 --- /dev/null +++ b/uni_modules/uni-scss/changelog.md @@ -0,0 +1,8 @@ +## 1.0.3(2022-01-21) +- 优化 组件示例 +## 1.0.2(2021-11-22) +- 修复 / 符号在 vue 不同版本兼容问题引起的报错问题 +## 1.0.1(2021-11-22) +- 修复 vue3中scss语法兼容问题 +## 1.0.0(2021-11-18) +- init diff --git a/uni_modules/uni-scss/index.scss b/uni_modules/uni-scss/index.scss new file mode 100644 index 0000000..1744a5f --- /dev/null +++ b/uni_modules/uni-scss/index.scss @@ -0,0 +1 @@ +@import './styles/index.scss'; diff --git a/uni_modules/uni-scss/package.json b/uni_modules/uni-scss/package.json new file mode 100644 index 0000000..7cc0ccb --- /dev/null +++ b/uni_modules/uni-scss/package.json @@ -0,0 +1,82 @@ +{ + "id": "uni-scss", + "displayName": "uni-scss 辅助样式", + "version": "1.0.3", + "description": "uni-sass是uni-ui提供的一套全局样式 ,通过一些简单的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。", + "keywords": [ + "uni-scss", + "uni-ui", + "辅助样式" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "category": [ + "JS SDK", + "通用 SDK" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "n", + "联盟": "n" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-scss/readme.md b/uni_modules/uni-scss/readme.md new file mode 100644 index 0000000..b7d1c25 --- /dev/null +++ b/uni_modules/uni-scss/readme.md @@ -0,0 +1,4 @@ +`uni-sass` 是 `uni-ui`提供的一套全局样式 ,通过一些简单的类名和`sass`变量,实现简单的页面布局操作,比如颜色、边距、圆角等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-sass) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/index.scss b/uni_modules/uni-scss/styles/index.scss new file mode 100644 index 0000000..ffac4fe --- /dev/null +++ b/uni_modules/uni-scss/styles/index.scss @@ -0,0 +1,7 @@ +@import './setting/_variables.scss'; +@import './setting/_border.scss'; +@import './setting/_color.scss'; +@import './setting/_space.scss'; +@import './setting/_radius.scss'; +@import './setting/_text.scss'; +@import './setting/_styles.scss'; diff --git a/uni_modules/uni-scss/styles/setting/_border.scss b/uni_modules/uni-scss/styles/setting/_border.scss new file mode 100644 index 0000000..12a11c3 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_border.scss @@ -0,0 +1,3 @@ +.uni-border { + border: 1px $uni-border-1 solid; +} \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/setting/_color.scss b/uni_modules/uni-scss/styles/setting/_color.scss new file mode 100644 index 0000000..1ededd9 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_color.scss @@ -0,0 +1,66 @@ + +// TODO 暂时不需要 class ,需要用户使用变量实现 ,如果使用类名其实并不推荐 +// @mixin get-styles($k,$c) { +// @if $k == size or $k == weight{ +// font-#{$k}:#{$c} +// }@else{ +// #{$k}:#{$c} +// } +// } +$uni-ui-color:( + // 主色 + primary: $uni-primary, + primary-disable: $uni-primary-disable, + primary-light: $uni-primary-light, + // 辅助色 + success: $uni-success, + success-disable: $uni-success-disable, + success-light: $uni-success-light, + warning: $uni-warning, + warning-disable: $uni-warning-disable, + warning-light: $uni-warning-light, + error: $uni-error, + error-disable: $uni-error-disable, + error-light: $uni-error-light, + info: $uni-info, + info-disable: $uni-info-disable, + info-light: $uni-info-light, + // 中性色 + main-color: $uni-main-color, + base-color: $uni-base-color, + secondary-color: $uni-secondary-color, + extra-color: $uni-extra-color, + // 背景色 + bg-color: $uni-bg-color, + // 边框颜色 + border-1: $uni-border-1, + border-2: $uni-border-2, + border-3: $uni-border-3, + border-4: $uni-border-4, + // 黑色 + black:$uni-black, + // 白色 + white:$uni-white, + // 透明 + transparent:$uni-transparent +) !default; +@each $key, $child in $uni-ui-color { + .uni-#{"" + $key} { + color: $child; + } + .uni-#{"" + $key}-bg { + background-color: $child; + } +} +.uni-shadow-sm { + box-shadow: $uni-shadow-sm; +} +.uni-shadow-base { + box-shadow: $uni-shadow-base; +} +.uni-shadow-lg { + box-shadow: $uni-shadow-lg; +} +.uni-mask { + background-color:$uni-mask; +} diff --git a/uni_modules/uni-scss/styles/setting/_radius.scss b/uni_modules/uni-scss/styles/setting/_radius.scss new file mode 100644 index 0000000..9a0428b --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_radius.scss @@ -0,0 +1,55 @@ +@mixin radius($r,$d:null ,$important: false){ + $radius-value:map-get($uni-radius, $r) if($important, !important, null); + // Key exists within the $uni-radius variable + @if (map-has-key($uni-radius, $r) and $d){ + @if $d == t { + border-top-left-radius:$radius-value; + border-top-right-radius:$radius-value; + }@else if $d == r { + border-top-right-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == b { + border-bottom-left-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == l { + border-top-left-radius:$radius-value; + border-bottom-left-radius:$radius-value; + }@else if $d == tl { + border-top-left-radius:$radius-value; + }@else if $d == tr { + border-top-right-radius:$radius-value; + }@else if $d == br { + border-bottom-right-radius:$radius-value; + }@else if $d == bl { + border-bottom-left-radius:$radius-value; + } + }@else{ + border-radius:$radius-value; + } +} + +@each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $key} { + @include radius($key) + } + }@else{ + .uni-radius { + @include radius($key) + } + } +} + +@each $direction in t, r, b, l,tl, tr, br, bl { + @each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $direction}-#{"" + $key} { + @include radius($key,$direction,false) + } + }@else{ + .uni-radius-#{$direction} { + @include radius($key,$direction,false) + } + } + } +} diff --git a/uni_modules/uni-scss/styles/setting/_space.scss b/uni_modules/uni-scss/styles/setting/_space.scss new file mode 100644 index 0000000..3c89528 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_space.scss @@ -0,0 +1,56 @@ + +@mixin fn($space,$direction,$size,$n) { + @if $n { + #{$space}-#{$direction}: #{$size*$uni-space-root}px + } @else { + #{$space}-#{$direction}: #{-$size*$uni-space-root}px + } +} +@mixin get-styles($direction,$i,$space,$n){ + @if $direction == t { + @include fn($space, top,$i,$n); + } + @if $direction == r { + @include fn($space, right,$i,$n); + } + @if $direction == b { + @include fn($space, bottom,$i,$n); + } + @if $direction == l { + @include fn($space, left,$i,$n); + } + @if $direction == x { + @include fn($space, left,$i,$n); + @include fn($space, right,$i,$n); + } + @if $direction == y { + @include fn($space, top,$i,$n); + @include fn($space, bottom,$i,$n); + } + @if $direction == a { + @if $n { + #{$space}:#{$i*$uni-space-root}px; + } @else { + #{$space}:#{-$i*$uni-space-root}px; + } + } +} + +@each $orientation in m,p { + $space: margin; + @if $orientation == m { + $space: margin; + } @else { + $space: padding; + } + @for $i from 0 through 16 { + @each $direction in t, r, b, l, x, y, a { + .uni-#{$orientation}#{$direction}-#{$i} { + @include get-styles($direction,$i,$space,true); + } + .uni-#{$orientation}#{$direction}-n#{$i} { + @include get-styles($direction,$i,$space,false); + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/setting/_styles.scss b/uni_modules/uni-scss/styles/setting/_styles.scss new file mode 100644 index 0000000..689afec --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_styles.scss @@ -0,0 +1,167 @@ +/* #ifndef APP-NVUE */ + +$-color-white:#fff; +$-color-black:#000; +@mixin base-style($color) { + color: #fff; + background-color: $color; + border-color: mix($-color-black, $color, 8%); + &:not([hover-class]):active { + background: mix($-color-black, $color, 10%); + border-color: mix($-color-black, $color, 20%); + color: $-color-white; + outline: none; + } +} +@mixin is-color($color) { + @include base-style($color); + &[loading] { + @include base-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &[loading], + &:not([hover-class]):active { + color: $-color-white; + border-color: mix(darken($color,10%), $-color-white); + background-color: mix($color, $-color-white); + } + } + +} +@mixin base-plain-style($color) { + color:$color; + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 70%); + &:not([hover-class]):active { + background: mix($-color-white, $color, 80%); + color: $color; + outline: none; + border-color: mix($-color-white, $color, 50%); + } +} +@mixin is-plain($color){ + &[plain] { + @include base-plain-style($color); + &[loading] { + @include base-plain-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &:active { + color: mix($-color-white, $color, 40%); + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 80%); + } + } + } +} + + +.uni-btn { + margin: 5px; + color: #393939; + border:1px solid #ccc; + font-size: 16px; + font-weight: 200; + background-color: #F9F9F9; + // TODO 暂时处理边框隐藏一边的问题 + overflow: visible; + &::after{ + border: none; + } + + &:not([type]),&[type=default] { + color: #999; + &[loading] { + background: none; + &::before { + margin-right:5px; + } + } + + + + &[disabled]{ + color: mix($-color-white, #999, 60%); + &, + &[loading], + &:active { + color: mix($-color-white, #999, 60%); + background-color: mix($-color-white,$-color-black , 98%); + border-color: mix($-color-white, #999, 85%); + } + } + + &[plain] { + color: #999; + background: none; + border-color: $uni-border-1; + &:not([hover-class]):active { + background: none; + color: mix($-color-white, $-color-black, 80%); + border-color: mix($-color-white, $-color-black, 90%); + outline: none; + } + &[disabled]{ + &, + &[loading], + &:active { + background: none; + color: mix($-color-white, #999, 60%); + border-color: mix($-color-white, #999, 85%); + } + } + } + } + + &:not([hover-class]):active { + color: mix($-color-white, $-color-black, 50%); + } + + &[size=mini] { + font-size: 16px; + font-weight: 200; + border-radius: 8px; + } + + + + &.uni-btn-small { + font-size: 14px; + } + &.uni-btn-mini { + font-size: 12px; + } + + &.uni-btn-radius { + border-radius: 999px; + } + &[type=primary] { + @include is-color($uni-primary); + @include is-plain($uni-primary) + } + &[type=success] { + @include is-color($uni-success); + @include is-plain($uni-success) + } + &[type=error] { + @include is-color($uni-error); + @include is-plain($uni-error) + } + &[type=warning] { + @include is-color($uni-warning); + @include is-plain($uni-warning) + } + &[type=info] { + @include is-color($uni-info); + @include is-plain($uni-info) + } +} +/* #endif */ diff --git a/uni_modules/uni-scss/styles/setting/_text.scss b/uni_modules/uni-scss/styles/setting/_text.scss new file mode 100644 index 0000000..a34d08f --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_text.scss @@ -0,0 +1,24 @@ +@mixin get-styles($k,$c) { + @if $k == size or $k == weight{ + font-#{$k}:#{$c} + }@else{ + #{$k}:#{$c} + } +} + +@each $key, $child in $uni-headings { + /* #ifndef APP-NVUE */ + .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ + /* #ifdef APP-NVUE */ + .container .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ +} diff --git a/uni_modules/uni-scss/styles/setting/_variables.scss b/uni_modules/uni-scss/styles/setting/_variables.scss new file mode 100644 index 0000000..557d3d7 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_variables.scss @@ -0,0 +1,146 @@ +// @use "sass:math"; +@import '../tools/functions.scss'; +// 间距基础倍数 +$uni-space-root: 2 !default; +// 边框半径默认值 +$uni-radius-root:5px !default; +$uni-radius: () !default; +// 边框半径断点 +$uni-radius: map-deep-merge( + ( + 0: 0, + // TODO 当前版本暂时不支持 sm 属性 + // 'sm': math.div($uni-radius-root, 2), + null: $uni-radius-root, + 'lg': $uni-radius-root * 2, + 'xl': $uni-radius-root * 6, + 'pill': 9999px, + 'circle': 50% + ), + $uni-radius +); +// 字体家族 +$body-font-family: 'Roboto', sans-serif !default; +// 文本 +$heading-font-family: $body-font-family !default; +$uni-headings: () !default; +$letterSpacing: -0.01562em; +$uni-headings: map-deep-merge( + ( + 'h1': ( + size: 32px, + weight: 300, + line-height: 50px, + // letter-spacing:-0.01562em + ), + 'h2': ( + size: 28px, + weight: 300, + line-height: 40px, + // letter-spacing: -0.00833em + ), + 'h3': ( + size: 24px, + weight: 400, + line-height: 32px, + // letter-spacing: normal + ), + 'h4': ( + size: 20px, + weight: 400, + line-height: 30px, + // letter-spacing: 0.00735em + ), + 'h5': ( + size: 16px, + weight: 400, + line-height: 24px, + // letter-spacing: normal + ), + 'h6': ( + size: 14px, + weight: 500, + line-height: 18px, + // letter-spacing: 0.0125em + ), + 'subtitle': ( + size: 12px, + weight: 400, + line-height: 20px, + // letter-spacing: 0.00937em + ), + 'body': ( + font-size: 14px, + font-weight: 400, + line-height: 22px, + // letter-spacing: 0.03125em + ), + 'caption': ( + 'size': 12px, + 'weight': 400, + 'line-height': 20px, + // 'letter-spacing': 0.03333em, + // 'text-transform': false + ) + ), + $uni-headings +); + + + +// 主色 +$uni-primary: #2979ff !default; +$uni-primary-disable:lighten($uni-primary,20%) !default; +$uni-primary-light: lighten($uni-primary,25%) !default; + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37 !default; +$uni-success-disable:lighten($uni-success,20%) !default; +$uni-success-light: lighten($uni-success,25%) !default; + +$uni-warning: #f3a73f !default; +$uni-warning-disable:lighten($uni-warning,20%) !default; +$uni-warning-light: lighten($uni-warning,25%) !default; + +$uni-error: #e43d33 !default; +$uni-error-disable:lighten($uni-error,20%) !default; +$uni-error-light: lighten($uni-error,25%) !default; + +$uni-info: #8f939c !default; +$uni-info-disable:lighten($uni-info,20%) !default; +$uni-info-light: lighten($uni-info,25%) !default; + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a !default; // 主要文字 +$uni-base-color: #6a6a6a !default; // 常规文字 +$uni-secondary-color: #909399 !default; // 次要文字 +$uni-extra-color: #c7c7c7 !default; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0 !default; +$uni-border-2: #EDEDED !default; +$uni-border-3: #DCDCDC !default; +$uni-border-4: #B9B9B9 !default; + +// 常规色 +$uni-black: #000000 !default; +$uni-white: #ffffff !default; +$uni-transparent: rgba($color: #000000, $alpha: 0) !default; + +// 背景色 +$uni-bg-color: #f7f7f7 !default; + +/* 水平间距 */ +$uni-spacing-sm: 8px !default; +$uni-spacing-base: 15px !default; +$uni-spacing-lg: 30px !default; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5) !default; +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default; +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5) !default; + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4) !default; diff --git a/uni_modules/uni-scss/styles/tools/functions.scss b/uni_modules/uni-scss/styles/tools/functions.scss new file mode 100644 index 0000000..ac6f63e --- /dev/null +++ b/uni_modules/uni-scss/styles/tools/functions.scss @@ -0,0 +1,19 @@ +// 合并 map +@function map-deep-merge($parent-map, $child-map){ + $result: $parent-map; + @each $key, $child in $child-map { + $parent-has-key: map-has-key($result, $key); + $parent-value: map-get($result, $key); + $parent-type: type-of($parent-value); + $child-type: type-of($child); + $parent-is-map: $parent-type == map; + $child-is-map: $child-type == map; + + @if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){ + $result: map-merge($result, ( $key: $child )); + }@else { + $result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) )); + } + } + @return $result; +}; diff --git a/uni_modules/uni-scss/theme.scss b/uni_modules/uni-scss/theme.scss new file mode 100644 index 0000000..80ee62f --- /dev/null +++ b/uni_modules/uni-scss/theme.scss @@ -0,0 +1,31 @@ +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; +// 主色 +$uni-primary: #2979ff; +// 辅助色 +$uni-success: #4cd964; +// 警告色 +$uni-warning: #f0ad4e; +// 错误色 +$uni-error: #dd524d; +// 描述色 +$uni-info: #909399; +// 中性色 +$uni-main-color: #303133; +$uni-base-color: #606266; +$uni-secondary-color: #909399; +$uni-extra-color: #C0C4CC; +// 背景色 +$uni-bg-color: #f5f5f5; +// 边框颜色 +$uni-border-1: #DCDFE6; +$uni-border-2: #E4E7ED; +$uni-border-3: #EBEEF5; +$uni-border-4: #F2F6FC; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); diff --git a/uni_modules/uni-scss/variables.scss b/uni_modules/uni-scss/variables.scss new file mode 100644 index 0000000..1c062d4 --- /dev/null +++ b/uni_modules/uni-scss/variables.scss @@ -0,0 +1,62 @@ +@import './styles/setting/_variables.scss'; +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; + +// 主色 +$uni-primary: #2979ff; +$uni-primary-disable:mix(#fff,$uni-primary,50%); +$uni-primary-light: mix(#fff,$uni-primary,80%); + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37; +$uni-success-disable:mix(#fff,$uni-success,50%); +$uni-success-light: mix(#fff,$uni-success,80%); + +$uni-warning: #f3a73f; +$uni-warning-disable:mix(#fff,$uni-warning,50%); +$uni-warning-light: mix(#fff,$uni-warning,80%); + +$uni-error: #e43d33; +$uni-error-disable:mix(#fff,$uni-error,50%); +$uni-error-light: mix(#fff,$uni-error,80%); + +$uni-info: #8f939c; +$uni-info-disable:mix(#fff,$uni-info,50%); +$uni-info-light: mix(#fff,$uni-info,80%); + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a; // 主要文字 +$uni-base-color: #6a6a6a; // 常规文字 +$uni-secondary-color: #909399; // 次要文字 +$uni-extra-color: #c7c7c7; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0; +$uni-border-2: #EDEDED; +$uni-border-3: #DCDCDC; +$uni-border-4: #B9B9B9; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); + +// 背景色 +$uni-bg-color: #f7f7f7; + +/* 水平间距 */ +$uni-spacing-sm: 8px; +$uni-spacing-base: 15px; +$uni-spacing-lg: 30px; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5); +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2); +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5); + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4); diff --git a/utils/class/array.js b/utils/class/array.js new file mode 100644 index 0000000..3e9334e --- /dev/null +++ b/utils/class/array.js @@ -0,0 +1,46 @@ +/** + * 数组模块方法的扩展 + * + * @author lautin + * @created 2019-11-22 15:32:05 + */ + +/** + * 计算数组差值,非变异方法 + * @param {array} a + * @param {array} b + */ +function differ(a, b) { + // 拷贝原数组,避免变异 + const _a = a.slice(); + for (let i = 0; i < b.length; i++) { + for (let j = 0; j < _a.length; j++) { + if (_a[j] === b[i]) { + _a.splice(j, 1) + j = j - 1 + } + } + } + return _a; +} + + +// 利用set集合的特性实现数组去重 +function unique(arr) { + return [...new Set(arr)] +} + + +Array.prototype.differ = function (arr) { + return differ(this, arr); +} + +Array.prototype.unique = function () { + return unique(this); +} + +// 他们都是在webpack初始时加载 默认使用node模块系统,不加default +export default { + differ, + unique, +} diff --git a/utils/class/config-ucharts.js b/utils/class/config-ucharts.js new file mode 100644 index 0000000..68667eb --- /dev/null +++ b/utils/class/config-ucharts.js @@ -0,0 +1,120 @@ +"area":{ + "type": "area", + "canvasId": "", + "canvas2d": false, + "background": "none", + "animation": true, + "timing": "easeOut", + "duration": 1000, + "color": [ + "#1890FF", + "#91CB74", + "#FAC858", + "#EE6666", + "#73C0DE", + "#3CA272", + "#FC8452", + "#9A60B4", + "#ea7ccc" + ], + "padding": [ + 15, + 15, + 0, + 15 + ], + "rotate": false, + "errorReload": true, + "fontSize": 13, + "fontColor": "#666666", + "enableScroll": false, + "touchMoveLimit": 60, + "enableMarkLine": false, + "dataLabel": false, + "dataPointShape": true, + "dataPointShapeType": "solid", + "tapLegend": true, + "xAxis": { + "disabled": true, + "axisLine": true, + "axisLineColor": "#CCCCCC", + "calibration": false, + "fontColor": "#666666", + "fontSize": 13, + "rotateLabel": false, + "itemCount": 5, + "boundaryGap": "center", + "disableGrid": true, + "gridColor": "#CCCCCC", + "gridType": "solid", + "dashLength": 4, + "gridEval": 1, + "scrollShow": false, + "scrollAlign": "left", + "scrollColor": "#A6A6A6", + "scrollBackgroundColor": "#EFEBEF", + "format": "" + }, + "yAxis": { + "disabled": false, + "disableGrid": false, + "splitNumber": 5, + "gridType": "dash", + "dashLength": 2, + "gridColor": "#CCCCCC", + "padding": 10, + "showTitle": false, + "data": [] + }, + "legend": { + "show": true, + "position": "bottom", + "float": "center", + "padding": 5, + "margin": 5, + "backgroundColor": "rgba(0,0,0,0)", + "borderColor": "rgba(0,0,0,0)", + "borderWidth": 0, + "fontSize": 13, + "fontColor": "#666666", + "lineHeight": 11, + "hiddenColor": "#CECECE", + "itemGap": 10 + }, + "extra": { + "area": { + "type": "straight", + "opacity": 0.2, + "addLine": true, + "width": 2, + "gradient": false + }, + "tooltip": { + "showBox": true, + "showArrow": true, + "showCategory": false, + "borderWidth": 0, + "borderRadius": 0, + "borderColor": "#000000", + "borderOpacity": 0.7, + "bgColor": "#000000", + "bgOpacity": 0.7, + "gridType": "solid", + "dashLength": 4, + "gridColor": "#CCCCCC", + "fontColor": "#FFFFFF", + "splitLine": true, + "horizentalLine": false, + "xAxisLabel": false, + "yAxisLabel": false, + "labelBgColor": "#FFFFFF", + "labelBgOpacity": 0.7, + "labelFontColor": "#666666" + }, + "markLine": { + "type": "solid", + "dashLength": 4, + "data": [] + } + } +} \ No newline at end of file diff --git a/utils/class/copy.js b/utils/class/copy.js new file mode 100644 index 0000000..8c1d880 --- /dev/null +++ b/utils/class/copy.js @@ -0,0 +1,22 @@ + +import Clipboard from 'clipboard' + +export function handleClipboard (text, event, onSuccess, onError) { + event = event || {} + const clipboard = new Clipboard(event.target, { + text: () => text + }) + clipboard.on('success', () => { + onSuccess() + clipboard.off('error') + clipboard.off('success') + clipboard.destroy() + }) + clipboard.on('error', () => { + onError() + clipboard.off('error') + clipboard.off('success') + clipboard.destroy() + }) + clipboard.onClick(event) +} \ No newline at end of file diff --git a/utils/class/date.js b/utils/class/date.js new file mode 100644 index 0000000..1858e37 --- /dev/null +++ b/utils/class/date.js @@ -0,0 +1,130 @@ +/** + * 日期时间处理的工具库 + * + * @author lautin + * @created 2019-11-19 11:36:02 + */ +function getTimeZoneOffset(time) { + const date = new Date(time); + // 获取时区偏移值,返回分钟数 + let offset = date.getTimezoneOffset(); + return time + offset * 60 * 1000; +} + +/** + * 将时间戳转化成时间对象的方法 + * @param {mixed} time 传入一个时间戳或者时间对象 + */ +function time2Date(time, isOffset = false) { + + let date; + + if (time.constructor == Date) { // 传入一个时间对象 + date = time; + + } else { // 传入一个时间戳 + // 检测时间戳的长度,确保为ms + if (time.toString().length <= 10) { + time = Number(time) * 1000; + } + let timeN; + // 是否对时差进行转化 + if (isOffset) { + timeN = getTimeZoneOffset(time); + }else{ + // 这也是对时差进行转换,不需要在每个处理时间格式的组件中修改isOffset为true + timeN = time-(-28800000)+(new Date(new Date().getTime()).getTimezoneOffset()* 60 * 1000); + } + + // 转化成日期时间对象 + date = new Date(timeN); + } + return date; +} + + +/** + * 将指定日期格式化输出, + * @param string|object time 输入日期,为一个Date.now()或者Date.UTC返回的时间戳 + * @param string format 输出的格式 + * @param boolean isOffset 是否考虑时区 + */ +function parseTime(time, isOffset = false, cformat = null) { + + // 设置默认格式 + // let format = cformat || '{y}-{m}-{d} {h}:{i}:{s}'; + let format = cformat || '{m}/{d}/{y} {h}:{i}:{s}'; + + const date = time2Date(time, isOffset); + + // 将日期时间值存入对象中 + const dataObj = { + y: date.getFullYear(), + m: date.getMonth() + 1, // 显示月份值需要+1 + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + a: date.getDay() + }; + + // 星期值需要转化为中文 + dataObj.a = '星期' + ['日', '一', '二', '三', '四', '五', '六'][dataObj.a]; + + // 匹配{}中的y|m|d...部分,分别替换不同的值 + const result = format.replace(/{(y|m|d|h|i|s|a)+}/g, (segment, key) => { + // 由索引提取值 + let value = dataObj[key]; + // 给值添加前导0 + if (segment.length > 0 && value < 10) value = '0' + value; + return value || 0; + }); + return result; +} + + +/** + * 发布日期的特定显示方式, + * @param {string|number} time 显示日期的时间戳 + * @param {string} option 可选参数显示日期 + */ +function pubTime(time, isOffset = false, format = null) { + + const date = time2Date(time, isOffset); + + const current = isOffset ? getTimeZoneOffset(Date.now()) : Date.now(); + + // 计算时间的差值,返回s为单位的值 + let diff = (current - date.valueOf()) / 1000; + + // 2天以内显示距今时间 + if (diff < 30) { // 30s- + return '刚刚'; + + } else if (diff < 3600) { // 1h- + return Math.ceil(diff / 60) + '分钟前'; + + } else if (diff < 3600 * 24) { // 1d- + return Math.ceil(diff / 3600) + '小时前'; + + } else if (diff < 3600 * 24 * 2) { // 2d- + return '1天前'; + + } else { // 超过2天显示发布日期 + if (!format) format = '{y}年{m}月{d}日 {h}:{i}'; + return parseTime(time, isOffset, format); + } +} + +// 将方法写入构造函数 便于全局使用 +Object.assign(Date, { + time2Date, + parseTime, + pubTime, +}); + +export default{ + time2Date, + parseTime, + pubTime +} diff --git a/utils/class/math.js b/utils/class/math.js new file mode 100644 index 0000000..4615de1 --- /dev/null +++ b/utils/class/math.js @@ -0,0 +1,258 @@ +/** + * 数学模块,主要针对浮点型数据,在运算时的精度问题: + * 1| 两个小数相加 0.1 + 0.2 = 0.30000000000000004 + * 2| 两个小数相乘 2.12 * 3.14 = 6.6568000000000005; + * 3| ... + * 4| ... + * 5| 数值长度大于13位时 显示科学计数法 + * @author lautin + * @created 2019-11-19 17:15:04 + */ + +/** + * 检测小数点精度 + * @param {number} num 传入的数值 + */ +function countDecimals(num) { + let precision; + try { + precision = num.toString().split(".")[1].length; + } catch (e) { + precision = 0; + } + return precision; +} + +/** + * js在以下情景会自动将数值转换为科学计数法: + * 小数点前的数字个数大于等于22位; + * 小数点前边是0,小数点后十分位(包含十分位)之后连续0的个数>=6时 + * @param {number} 科学计数法显示的数值 1.2e-8 + * @return {number} 返回实际的数值 1.00000002 + */ +function scientific2No(val) { //-7.50375e-8 + + // 正则匹配科学计数法的数字 + if (/\d+\.?\d*e[+-]*\d+/i.test(val)) { + + let zero = '0', + parts = String(val).toLowerCase().split('e'), // ['-7.50375', '-8'] + e = parts.pop(), // 存储指数 -8 + l = Math.abs(e), // 0的个数 8 + sign = e / l, // 判断正负 - + // 将系数按照小数点拆分 + coeff_array = parts[0].split('.'); // [-7, 50375] 去除中间的. + // 如果恰好为8位 那么第二个数默认为undefined 需要重置为'' + if (!coeff_array[1]) coeff_array[1] = ''; + if (sign === -1) { // 小数 + // debugger; + // 正数或者负数 + if (coeff_array[0] < 0) { + val = '-' + zero + '.' + zero.repeat(l - 1) + coeff_array[0].slice(1) + coeff_array[1]; + } else { + val = zero + '.' + zero.repeat(l - 1) + coeff_array.join(''); //拼接字符串,如果是小数,拼接0和小数点 + } + + } else { + + let dec = coeff_array[1]; + + // 如果是整数,将整数除第一位之外的非零数字计入位数,相应的减少0的个数 + if (dec) l = l - dec.length; + + // 拼接字符串,如果是整数,不需要拼接小数点 + val = coeff_array.join('') + new Array(l + 1).join(zero); + + } + } + + + try { + return val.toString(); + } catch (e) { + return ''; + } +} + +/** + * 截取小数点后n位 + * @param {number} val 截取的数值 + * @param {number} scale 保留的小数点位数 + */ +function omitTo(val, scale) { + + // 转化科学计数法 + val = scientific2No(val); + + let ret; + // 检测浮点数 + if (val.toString().indexOf(".") > -1) { + // 提取实体集和精度值 + let [entity, precisionVal] = val.toString().split("."); + + if (precisionVal.length > scale) { + // trunc() 方法会将数字的小数部分去掉,只保留整数部分。 + let tmp = scientific2No(Math.trunc(val * Math.pow(10, scale))); + // 处理零值 + if (tmp == 0) ret = scientific2No('0.' + '0'.repeat(scale)); + else { + // ret = tmp / ; + ret = division(tmp, Math.pow(10, scale)); + try { // 小数 + + let [a, b] = ret.toString().split("."); + a = scientific2No(a), + b = scientific2No(b); + + if (b.length < scale) { + ret = a + '.' + b.padEnd(scale, '0'); + } + } catch (e) { // 整数 + ret = ret + '.' + '0'.padEnd(scale, '0'); + } + } + + } else if (precisionVal.length == scale) { // 精度 + + ret = val; + + } else { + // 补全小数点 + ret = entity + '.' + precisionVal.padEnd(scale, '0'); + } + + // 检测整型值 + } else ret = val + '.' + '0'.repeat(scale); + + // 去除末尾可能产生的多余的. + if (ret.toString().endsWith('.')) ret = ret.slice(0, -1); + + return ret; +} + +/** + * 计算两个数的和 + * @param {number} num1 + * @param {number} num2 + */ +function add(num1, num2, scale = null) { + + num1 = scientific2No(num1); + num2 = scientific2No(num2); + + let amplification, // 放大率 + precision1 = countDecimals(num1), // 精度1 + precision2 = countDecimals(num2); // 精度2 + amplification = Math.pow(10, Math.max(precision1, precision2)); + + // 先放大再相加,然后除以放大率 + let val = (num1 * amplification + num2 * amplification) / amplification; + + // 转化科学计数法 + let result = scientific2No(val); + + // 控制显示长度 + if (scale) result = omitTo(result, scale); + + return result; +} + + +/** + * 计算两个数的差值 + * @param {number} num1 + * @param {number} num2 + */ +function subtr(num1, num2, scale = null) { + num1 = scientific2No(num1); + num2 = scientific2No(num2); + + let amplification, // 放大率 + precision1 = countDecimals(num1), // 精度1 + precision2 = countDecimals(num2); // 精度2 + + let precision = Math.max(precision1, precision2) + amplification = Math.pow(10, precision); + + // 动态控制精度长度 + let val = ((num1 * amplification - num2 * amplification) / amplification).toFixed(precision); + + // 转化科学计数法 + let result = scientific2No(val); + + // 控制显示长度 + if (scale) result = omitTo(result, scale); + + return result; +} + +/** + * 计算两个数的乘积 + * @param {number} num1 + * @param {number} num2 + */ +function multiple(num1, num2, scale = null) { + num1 = scientific2No(num1); + num2 = scientific2No(num2); + + let precision = 0; + precision += countDecimals(num1); + precision += countDecimals(num2); + + let val = Number(num1.toString().replace(".", "")) * Number(num2.toString().replace(".", "")) / Math.pow(10, precision); + + + let result = scientific2No(val); + + if (scale) result = omitTo(result, scale); + + return result; +} + + +/** + * 两个数相除 + * @param {number} num1 + * @param {number} num2 + * @param {optional} d + */ +function division(num1, num2, scale = null) { + num1 = scientific2No(num1); + num2 = scientific2No(num2); + + let precision1 = countDecimals(num1), + precision2 = countDecimals(num2), + m = precision1 > precision2 ? precision1 : precision2; + + // 两个整数相除 无需计算精度 + if (m <= 1) m = 1; + + let val = multiple(num1, m) / multiple(num2, m); + + let result = scientific2No(val); + + if (scale) result = omitTo(result, scale); + + return result; +} + + +Object.assign(Math, { + countDecimals, + add, + subtr, + multiple, + division, + scientific2No, + omitTo +}) + +export default { + countDecimals, + add, + subtr, + multiple, + division, + scientific2No, + omitTo +} \ No newline at end of file diff --git a/utils/class/object.js b/utils/class/object.js new file mode 100644 index 0000000..81c9805 --- /dev/null +++ b/utils/class/object.js @@ -0,0 +1,38 @@ + +function clone(target, source, isDeep = true) { + // 浅拷贝使用内置方法 + if (!isDeep) { + return Object.assign(target, source); + } + + // 递归遍历拷贝成员 + for (let item in source) { + if (source[item] instanceof Object) { + // 检测对象还是数组 + target[item] = + Object.prototype.toString.call(source[item]) === '[object Array]' ? [] : {}; + clone(target[item], source[item], isDeep); + } else { + target[item] = source[item]; + } + } + + return target; +} + +function cloneWithSelf(target, source, isDeep = true) { + // 先拷贝target自身 + const o = Object.clone({}, target, isDeep); + return Object.clone(o, source, isDeep) +} + +// 给原型对象扩展方法 +Object.assign(Object, { + clone, + cloneWithSelf +}) + +export default { + clone, + cloneWithSelf +} diff --git a/utils/class/string.js b/utils/class/string.js new file mode 100644 index 0000000..9e0172c --- /dev/null +++ b/utils/class/string.js @@ -0,0 +1,59 @@ +/** + * 字符串方法的扩展 + * + * @author lautin + * @created 2019-11-22 15:24:20 + */ + +/** + * 生成一组随机值的方法,用于上传文件名等场景 + * @param {number} len + */ +function random(count = null) { + let len = count || 32, + $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678', + ret = '', + time = new Date().getTime().toString(); + + if (len / 2 > time.length) { + // 控制总长度不超出 + len = len - time.length + } else { + len = len / 2 + } + for (let i = 0; i < len; i++) { + ret += $chars.charAt(Math.floor(Math.random() * $chars.length)) + if (time[i]) { + ret += time[time.length - i - 1] + } + } + return ret; +} +/** + * 截取字符串之前之后 + * @param {string} str + * @param {string} targe + * @param {number} index + */ +function getCaptionLength(str, targe, index) { + if (!index) { + return str.substring(0, str.indexOf(targe)) + } else { + return str.substring(str.lastIndexOf(targe) + 1) + } + +} + +// 绑定为静态方法 +Object.assign(String, { + random, + getCaptionLength +}); + +// fontcolor设置别名 +String.prototype.color = Object.prototype.fontcolor; + +export default { + random, + getCaptionLength +} diff --git a/utils/funcs/debounce.js b/utils/funcs/debounce.js new file mode 100644 index 0000000..f726bf0 --- /dev/null +++ b/utils/funcs/debounce.js @@ -0,0 +1,58 @@ +/** + * 函数防抖模块封装 + * @author lautin + * @created 2019-11-20 18:44:32 + */ + + +/** + * 防抖函数,在一个时段内反复触发时 更新定时器为最后一次延迟执行 + * 该操作欠缺的地方在于 延迟执行,响应比较慢 最好是先执行 + * @param {function} func 事件回调函数 + * @param {number} wait 延迟等待时间,建议100-300ms左右 + */ +function debounceA(func, wait) { + // 初始化定时器为空 + let timer = null; + // 返回一个防抖的闭包函数,使用闭包来持久存储定时器 + return function () { + const context = this, // this为事件源DOM + args = arguments; // arguments包含event + // 如果已有定时器 则取消上次的任务 + if (timer) clearTimeout(timer); + // 更新定时器,本次(最后)任务n毫秒后触发 + timer = setTimeout(() => { + // 还原事件回调函数触发时的环境 + func.apply(context, args); + }, wait); + } +} + +/** + * 防抖函数,在一个时段内反复触发时 更新定时器为最后一次延迟执行 + * 该方法 先执行 后延迟 响应灵敏更高 + * @param {function} func 事件回调函数 + * @param {number} wait 延迟等待时间,建议100-300ms左右 + */ +function debounceB(func, wait) { + let timer = null; + return function () { + const context = this, + args = arguments; + + // 首先取消中间的定时器,重新开始计时 + if (timer) clearTimeout(timer); + + //先加载本次任务, + if (!timer) func.apply(context, args); + + // 再进行定时器控制 + timer = setTimeout(() => { + timer = null; + }, wait); + } +} + +export default function debounce(func, wait, immediate = false) { + return immediate ? debounceB(func, wait) : debounceA(func, wait); +} \ No newline at end of file diff --git a/utils/funcs/throttle.js b/utils/funcs/throttle.js new file mode 100644 index 0000000..2e7010b --- /dev/null +++ b/utils/funcs/throttle.js @@ -0,0 +1,62 @@ +/** + * 函数节流模块封装 + * + * @author lautin + * @created 2019-11-20 18:46:01 + */ + + +/** + * 节流方法,在指定时间内只执行一次,使用时间戳控制时间 + * @param {function} func 事件回调函数 + * @param {number} wait 限定输出的时间,建议100-300ms + */ +function throttleA(func, wait) { + // 上次执行时间 + let previous = 0; + return function () { + // 本次执行时间 + let now = Date.now(), + context = this, + args = arguments; + // 定时器以外执行 + if (now - previous > wait) { + func.apply(context, args); + // 更新上次时间 + previous = now; + } + } +} + +/** + * 节流方法,在指定时间内只执行一次,使用定时器控制时间 + * @param {function} func 事件回调函数 + * @param {number} wait 限定输出的时间,建议100-300ms + */ +function throttleB(func, wait) { + // 记录上个定时器 + let timer; + + return function () { + const context = this, + args = arguments; + // 如果没有定时器则执行 + if (!timer) { + func.apply(context, args); + // 更新定时器 + timer = setTimeout(() => { + timer = null; + }, wait); + } + } +} + +/** + * 兼容执行 + * @param {function} func 事件处理函数 + * @param {number} wait 节流时间 + * @param {mixed} flag 标识符 选择类型 + */ +export default function throttle(func, wait, flag = null) { + return flag ? throttleB(func, wait) : throttleA(func, wait); +} diff --git a/utils/index.js b/utils/index.js new file mode 100644 index 0000000..31a53c9 --- /dev/null +++ b/utils/index.js @@ -0,0 +1,38 @@ +// 系统类的方法扩展 +import math from './class/math'; + +import date from './class/date'; + +import array from './class/array'; + +import clone from './class/object'; + +import random from './class/string'; + +// 载入防抖和节流的方法 +import debounce from './funcs/debounce'; +import throttle from './funcs/throttle'; + + +import validate from './vendor/validate'; + +// 文件上传处理方法 +import upload from './vendor/upload'; + +// 通用的一些方法 +import common from './vendor/common'; + +// webpack 全局加载的模块 以`export`而非`export default`导出, +// 她类似于module.exports或者exports的规则 +export default { + ...math, // omit, ,,, + ...date, + ...array, + ...clone, + ...random, + debounce, + throttle, + validate, + upload, + ...common +} \ No newline at end of file diff --git a/utils/rules.js b/utils/rules.js new file mode 100644 index 0000000..db1a0be --- /dev/null +++ b/utils/rules.js @@ -0,0 +1,51 @@ +/** + * 常用正则库,用于快速匹配 + * + * @author lautin + * @created 2019-11-21 02:02:39 + */ + +// url地址 + +const isUrl = /^(https?:\/\/)?([0-9a-zA-Z\.]+)\.([a-z\.]{2,6})([\/\w\.-]*)?$/ + +// 小写字母 +const isLower = /^[a-z]+$/ + +// 大写字母 +const isUpper = /^[A-Z]+$/ + + +// 大小写字母 +const isAlpha = /^[A-Za-z]+$/ + +// 邮箱 +const isEmail = /^(?:[\w\-\.]+)@(?:[\w\.\-]+).(?:[a-z\.]{2,6})$/ + +// 手机号 +const isPhone = /^\d{9,17}$/ + +// 32位的加密token +const isToken = /^[a-z0-9]{32}$/ + +// 固话 - 国内的格式 +const isTel = /^0\d{2,3}\-?\d{7,8}$/ + +// html标签 +const isTag = /<\/?\w+[\w\s='"]\/?>/g + +// 一段html +const isHtml = /<([^\s]+)[\w\s='"]*>[\d\D]*?<\/\1>/g + +export default { + isAlpha, + isEmail, + isHtml, + isLower, + isPhone, + isToken, + isTag, + isTel, + isUpper, + isUrl +} diff --git a/utils/vendor/common.js b/utils/vendor/common.js new file mode 100644 index 0000000..00af20b --- /dev/null +++ b/utils/vendor/common.js @@ -0,0 +1,118 @@ + +// commons在DOM操作完毕后插入 + +// 获取可视窗宽高 +function getViewPortWH() { + return { + clientW: document.documentElement.clientWidth || document.body.clientWidth, + clientH: document.documentElement.clientHeight || document.body.clientHeight + } +} + +function isMobile() { + const regex_match = /(nokia|iphone|android|motorola|^mot-|softbank|foma|docomo|kddi|up.browser|up.link|htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte-|longcos|pantech|gionee|^sie-|portalmmm|jigs browser|hiptop|^benq|haier|^lct|operas*mobi|opera*mini|320x320|240x320|176x220)/i; + const u = navigator.userAgent; + + if (null == u) { + return true; + } + + let result = regex_match.exec(u); + + return null == result ? false : true; + +} + +/** + * css属性的动画设置 + * @param {object} settings 动画效果配置参数 + */ +function cssAnimate(settings) { + // 使用解构赋值 提取参数值到变量中 + let { + ele, + transform, + duration, + whendone = null + } = settings + + if (ele.timer) return // 如果已有定时器 则点击无效 + + let frames = 0, + numFrames = duration / 100 + + const beginAt = {}, + increment = {} + + /* + * 1| 计算初始样式和动画增量 + */ + const cssProps = getComputedStyle(ele) + for (let item in transform) { + beginAt[item] = parseInt(cssProps[item]) + increment[item] = (transform[item] - beginAt[item]) / numFrames + } + + /* + * 2| 设置定时任务执行动画 + */ + ele.timer = setInterval(function () { + frames++; + // 判断临界条件 + if (frames > numFrames) { + // 取消定时器 + clearInterval(ele.timer) + delete ele.timer; + if (whendone instanceof Function) whendone.call(ele); + return false; + } + + for (let item in transform) { + ele.style[item] = (beginAt[item] + increment[item] * frames) + 'px'; + } + }, 100); +} + +function timeTD(resolve, reject, seconds = null) { + let total = seconds || 60; + resolve(total); + let timer = setInterval(function () { + if (--total < 1) { + clearInterval(timer); + reject(); + } else { + resolve(total); + } + + }, 1000); + +} + +function curryTimeTD(resolve, seconds = null) { + return function (reject) { + let total = seconds || 60; + resolve(total); + let timer = setInterval(function () { + if (--total < 1) { + clearInterval(timer); + reject(); + } else { + resolve(total); + } + + }, 1000); + return timer; + } +} + + + + + +export default { + getViewPortWH, + cssAnimate, + timeTD, + curryTimeTD, + isMobile +} diff --git a/utils/vendor/upload.js b/utils/vendor/upload.js new file mode 100644 index 0000000..04fb101 --- /dev/null +++ b/utils/vendor/upload.js @@ -0,0 +1,129 @@ + +/** + * 上传文件处理,验证文件类型和大小 验证通过返回数据 + * { + * errCode : 0为通过,1为类型错误,2为大小超出, + * url : base64位的文件数据 + * } + * @author lautin + * @created 2019-11-22 17:20:32 + */ + +// 将buffer转化成utf-8格式 +function iconvToUtf8(bufferArr, encoding) { + let x = new Uint8Array(bufferArr); + let ret = new TextDecoder(encoding).decode(x); + return ret; +} + +class Upload { + + constructor(conf) { + // 获取文件DOM对象 + if (!conf.ele.nodeType) conf.ele = document.querySelector(conf.ele); + + // 将配置信息写入实例对象中 + Object.assign(this, { + file: conf.ele.files[0], // 文件对象 + name: conf.ele.files[0].name, // 文件名称 + + error: '', // 错误代号 + data: '', // 存储数据 + + // 类型检测 + isIMG: null, + isTXT: null, + }, conf); + + } + + checkType() { + // 验证文件类型,allowType需要设置['images/jpg', 'image/png'...] + if (this.allowType) { + if (!this.allowType.includes(this.file.type)) { + this.error = `${this.file.type}类型文件不合法`; + this.errno = 101; + } + } + this.isIMG = this.file.type.startsWith("image"); + this.isTXT = this.file.type.startsWith("text"); + } + + checkSize() { + // 验证文件类型,allowSize传入的值以M为单位 + if (this.allowSize) { + const maxByte = this.allowSize * 1024 * 1024; + if (this.file.size > maxByte) { + this.error = `文件大小不能超出${this.allowSize}M`; + this.errno = 102; + } + } + } + + readFile() { + + return new Promise((resolve, reject) => { + + const fr = new FileReader; + + fr.onloadend = function () { + + // 如果为文本 返回文件内容 + let data; + + switch (true) { + case this.isIMG : + data = fr.result; + break; + case this.isTXT : + data = iconvToUtf8(fr.result, "gbk"); + break; + default : + data = null; + break; + } + + resolve(data); + + }.bind(this); + + + fr.onabort = function () { + // 上传意外被中断 + reject(new Error(103)); + } + + fr.onerror = function () { + // 上传过程发生错误 + reject(new Error(104)); + } + + // 如果是图片的话 则返回base64 URL格式数据 否则返回ArrayBuffer + this.isIMG ? fr.readAsDataURL(this.file) : fr.readAsArrayBuffer(this.file); + + }); + + } + + static async start(settings) { + // 创建实例 + const ins = new Upload(settings); + // 验证类型 + ins.checkType(); + // 验证大小 + ins.checkSize(); + + console.log(ins.errno); + // 验证不通过 则直接触发reject + console.log() + if (ins.error) throw new Error(ins.errno); + + else { + // 读取文件的操作 发生错误会进入catch 成功则返回data数据 + ins.data = await ins.readFile(); + return ins; + } + } +} + +export default Upload.start; diff --git a/utils/vendor/validate.js b/utils/vendor/validate.js new file mode 100644 index 0000000..fb389af --- /dev/null +++ b/utils/vendor/validate.js @@ -0,0 +1,204 @@ +/** + * H5表单验证 适用所有,当同时存在多个逻辑时 有先后顺序 + * 注意:凡是设置了正则表达式验证的 需在后面指出具体规则以告知用户 + * @author lautin + * @created 2019-11-22 14:14:20 + */ + +class Validate { + + // 初始化验证元素 + constructor(root) { + // 提取表单中的输入控件 + if (!root.nodeType) root = document.querySelector(root); + + // 将nodeList以及标识符 写入全局对象中 + Object.assign(this, { + flag: true, + }, { + fields: this.extractInputs(root), + }); + } + + /** + * 遍历节点 提取输入控件 + * @param {dom}} node + * @param {nodeList} result 返回DOM集合对象 + */ + extractInputs(node, result = null) { + let fields = result || []; + const types = ["text", "password", "file", "number", "range", "search", "email", "url"]; + + for (let x = node.firstChild; x != null; x = x.nextSibling) { + // 如果是元素节点 则检测节点名称并递归 + if (x.nodeType == node.ELEMENT_NODE) { + switch (x.nodeName.toLowerCase()) { + case "input": + if (types.includes(x.type)) { + if (getComputedStyle(x, false).display != "none") { + fields.push(x); //放入该节点 + } + + } + break; + case "select": + case "textarea": + fields.push(x); //放入该节点 + break; + } + // 继续递归 + this.extractInputs(x, fields); + } + } + return fields; + } + + /** + * text验证maxLength和minLength + * @param {object} state + * @param {dom} item + */ + textTask(state, item) { + let result = ''; + switch (true) { + case state.tooLong: + result = `${item.name} 不能超过${item.maxLength}位`; + break; + + case state.tooShort: + result = `${item.name} 不能少于${item.minLength}位`; + break; + + case state.patternMismatch: + result = item.dataset.message || item.placeholder || `输入不符合要求`; + break; + } + return result; + } + + /** + * password验证pattern + * @param {object} state + */ + pwdTask(state, item) { + let result = ''; + if (state.patternMismatch) { + result = item.dataset.message || `输入不符合规则要求` + } + return result; + } + + /** + * number和range类型 先验证min和max,再验证step + * @param {object} state + * @param {dom} item + */ + numberTask(state, item) { + let result = ''; + switch (true) { + case state.rangeOverflow: + result = `不能超出${item.max}的上限`; + break; + + case state.rangeUnderflow: + result = `不能低于${item.min}的下限`; + break; + + case state.stepMismatch: + result = item.dataset.message || `${item.value} 不是合法值,需要以${item.step}递增`; + break; + } + return result; + } + + /** + * email和url类型 先验证type 再验证pattern + * @param {object} state + * @param {dom} item + */ + emailAndUrl(state, item) { + let result = ''; + switch (true) { + case state.typeMismatch: // 适合number、email、url + result = item.dataset.message || item.placeholder || `${item.name} 格式不正确`; + break; + + case state.patternMismatch: + result = item.dataset.message || item.placeholder || `输入不符合规则要求`; + break; + } + return result; + } + + /** + * 执行验证的方法 + */ + validate() { + [...this.fields].reverse().forEach((item) => { + // 验证通过 则跳过本次循环 + if (item.checkValidity()) return; + // 返回validityState对象 + let state = item.validity, + message = ''; + + // 首先检测值是否为空 + if (state.valueMissing) { + message = item.dataset.has || item.placeholder || `${item.name} 不能为空`; + } else { + // 根据类型执行不同验证 + switch (item.type) { + case "text": + case "search": + message = this.textTask(state, item); + break; + case "password": + message = this.pwdTask(state, item); + break; + case "number": + case "range": + message = this.numberTask(state, item); + break; + case "email": + case "url": + message = this.emailAndUrl(state, item); + break; + } + } + + // 未知的类型验证 + if (state.badInput) { + message = `输入了的值无效`; + } + + //设置验证提示信息 + item.setCustomValidity(message); + + if (message) { + + // 手动报告验证的结果 触发元素的focus事件 等待用户输入 + item.reportValidity(); + // 如果用户有输入 则清除提示信息,最好监听change 避免破坏原有的v-model + item.addEventListener("change", function () { + + this.blur(); + }) + + this.flag = false; + } + + }); + + return this.flag; + } + + /** + * 调用执行的静态方法 + * @param {dom} root + */ + static start(root) { + const obj = new Validate(root); + return obj.validate(); + } +} + +export default Validate.start; \ No newline at end of file diff --git a/wxcomponents/vant/action-sheet/index.d.ts b/wxcomponents/vant/action-sheet/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/wxcomponents/vant/action-sheet/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/wxcomponents/vant/action-sheet/index.js b/wxcomponents/vant/action-sheet/index.js new file mode 100644 index 0000000..f3f6d0f --- /dev/null +++ b/wxcomponents/vant/action-sheet/index.js @@ -0,0 +1,62 @@ +import { VantComponent } from '../common/component'; +import { button } from '../mixins/button'; +import { openType } from '../mixins/open-type'; +VantComponent({ + mixins: [button, openType], + props: { + show: Boolean, + title: String, + cancelText: String, + description: String, + round: { + type: Boolean, + value: true, + }, + zIndex: { + type: Number, + value: 100, + }, + actions: { + type: Array, + value: [], + }, + overlay: { + type: Boolean, + value: true, + }, + closeOnClickOverlay: { + type: Boolean, + value: true, + }, + closeOnClickAction: { + type: Boolean, + value: true, + }, + safeAreaInsetBottom: { + type: Boolean, + value: true, + }, + }, + methods: { + onSelect(event) { + const { index } = event.currentTarget.dataset; + const item = this.data.actions[index]; + if (item && !item.disabled && !item.loading) { + this.$emit('select', item); + if (this.data.closeOnClickAction) { + this.onClose(); + } + } + }, + onCancel() { + this.$emit('cancel'); + }, + onClose() { + this.$emit('close'); + }, + onClickOverlay() { + this.$emit('click-overlay'); + this.onClose(); + }, + }, +}); diff --git a/wxcomponents/vant/action-sheet/index.json b/wxcomponents/vant/action-sheet/index.json new file mode 100644 index 0000000..19bf989 --- /dev/null +++ b/wxcomponents/vant/action-sheet/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "../icon/index", + "van-popup": "../popup/index", + "van-loading": "../loading/index" + } +} diff --git a/wxcomponents/vant/action-sheet/index.vue b/wxcomponents/vant/action-sheet/index.vue new file mode 100644 index 0000000..68e1474 --- /dev/null +++ b/wxcomponents/vant/action-sheet/index.vue @@ -0,0 +1,100 @@ + + + + \ No newline at end of file diff --git a/wxcomponents/vant/action-sheet/index.wxml b/wxcomponents/vant/action-sheet/index.wxml new file mode 100644 index 0000000..7ed2819 --- /dev/null +++ b/wxcomponents/vant/action-sheet/index.wxml @@ -0,0 +1,67 @@ + + + + + {{ title }} + + + + {{ description }} + + + + + + + + {{ cancelText }} + + diff --git a/wxcomponents/vant/action-sheet/index.wxss b/wxcomponents/vant/action-sheet/index.wxss new file mode 100644 index 0000000..dc54840 --- /dev/null +++ b/wxcomponents/vant/action-sheet/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-action-sheet{max-height:90%!important;max-height:var(--action-sheet-max-height,90%)!important;color:#323233;color:var(--action-sheet-item-text-color,#323233)}.van-action-sheet__cancel,.van-action-sheet__item{text-align:center;font-size:16px;font-size:var(--action-sheet-item-font-size,16px);line-height:50px;line-height:var(--action-sheet-item-height,50px);background-color:#fff;background-color:var(--action-sheet-item-background,#fff)}.van-action-sheet__cancel--hover,.van-action-sheet__item--hover{background-color:#f2f3f5;background-color:var(--active-color,#f2f3f5)}.van-action-sheet__cancel:before{display:block;content:" ";height:8px;height:var(--action-sheet-cancel-padding-top,8px);background-color:#f7f8fa;background-color:var(--action-sheet-cancel-padding-color,#f7f8fa)}.van-action-sheet__item--disabled{color:#c8c9cc;color:var(--action-sheet-item-disabled-text-color,#c8c9cc)}.van-action-sheet__item--disabled.van-action-sheet__item--hover{background-color:#fff;background-color:var(--action-sheet-item-background,#fff)}.van-action-sheet__subname{margin-left:4px;margin-left:var(--padding-base,4px);font-size:12px;font-size:var(--action-sheet-subname-font-size,12px);color:#646566;color:var(--action-sheet-subname-color,#646566)}.van-action-sheet__header{text-align:center;font-weight:500;font-weight:var(--font-weight-bold,500);font-size:16px;font-size:var(--action-sheet-header-font-size,16px);line-height:44px;line-height:var(--action-sheet-header-height,44px)}.van-action-sheet__description{text-align:center;padding:16px;padding:var(--padding-md,16px);color:#646566;color:var(--action-sheet-description-color,#646566);font-size:14px;font-size:var(--action-sheet-description-font-size,14px);line-height:20px;line-height:var(--action-sheet-description-line-height,20px)}.van-action-sheet__close{position:absolute!important;top:0;right:0;line-height:inherit!important;padding:0 12px;padding:var(--action-sheet-close-icon-padding,0 12px);font-size:18px!important;font-size:var(--action-sheet-close-icon-size,18px)!important;color:#969799;color:var(--action-sheet-close-icon-color,#969799)}.van-action-sheet__loading{display:-webkit-flex!important;display:flex!important;height:50px;height:var(--action-sheet-item-height,50px)} \ No newline at end of file diff --git a/wxcomponents/vant/area/index.d.ts b/wxcomponents/vant/area/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/wxcomponents/vant/area/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/wxcomponents/vant/area/index.js b/wxcomponents/vant/area/index.js new file mode 100644 index 0000000..c621682 --- /dev/null +++ b/wxcomponents/vant/area/index.js @@ -0,0 +1,229 @@ +import { VantComponent } from '../common/component'; +import { pickerProps } from '../picker/shared'; +const COLUMNSPLACEHOLDERCODE = '000000'; +VantComponent({ + classes: ['active-class', 'toolbar-class', 'column-class'], + props: Object.assign(Object.assign({}, pickerProps), { + value: { + type: String, + observer(value) { + this.code = value; + this.setValues(); + }, + }, + areaList: { + type: Object, + value: {}, + observer: 'setValues', + }, + columnsNum: { + type: null, + value: 3, + observer(value) { + this.setData({ + displayColumns: this.data.columns.slice(0, +value), + }); + }, + }, + columnsPlaceholder: { + type: Array, + observer(val) { + this.setData({ + typeToColumnsPlaceholder: { + province: val[0] || '', + city: val[1] || '', + county: val[2] || '', + }, + }); + }, + }, + }), + data: { + columns: [{ values: [] }, { values: [] }, { values: [] }], + displayColumns: [{ values: [] }, { values: [] }, { values: [] }], + typeToColumnsPlaceholder: {}, + }, + mounted() { + setTimeout(() => { + this.setValues(); + }, 0); + }, + methods: { + getPicker() { + if (this.picker == null) { + this.picker = this.selectComponent('.van-area__picker'); + } + return this.picker; + }, + onCancel(event) { + this.emit('cancel', event.detail); + }, + onConfirm(event) { + const { index } = event.detail; + let { value } = event.detail; + value = this.parseOutputValues(value); + this.emit('confirm', { value, index }); + }, + emit(type, detail) { + detail.values = detail.value; + delete detail.value; + this.$emit(type, detail); + }, + // parse output columns data + parseOutputValues(values) { + const { columnsPlaceholder } = this.data; + return values.map((value, index) => { + // save undefined value + if (!value) return value; + value = JSON.parse(JSON.stringify(value)); + if (!value.code || value.name === columnsPlaceholder[index]) { + value.code = ''; + value.name = ''; + } + return value; + }); + }, + onChange(event) { + const { index, picker, value } = event.detail; + this.code = value[index].code; + this.setValues().then(() => { + this.$emit('change', { + picker, + values: this.parseOutputValues(picker.getValues()), + index, + }); + }); + }, + getConfig(type) { + const { areaList } = this.data; + return (areaList && areaList[`${type}_list`]) || {}; + }, + getList(type, code) { + const { typeToColumnsPlaceholder } = this.data; + let result = []; + if (type !== 'province' && !code) { + return result; + } + const list = this.getConfig(type); + result = Object.keys(list).map((code) => ({ + code, + name: list[code], + })); + if (code) { + // oversea code + if (code[0] === '9' && type === 'city') { + code = '9'; + } + result = result.filter((item) => item.code.indexOf(code) === 0); + } + if (typeToColumnsPlaceholder[type] && result.length) { + // set columns placeholder + const codeFill = + type === 'province' + ? '' + : type === 'city' + ? COLUMNSPLACEHOLDERCODE.slice(2, 4) + : COLUMNSPLACEHOLDERCODE.slice(4, 6); + result.unshift({ + code: `${code}${codeFill}`, + name: typeToColumnsPlaceholder[type], + }); + } + return result; + }, + getIndex(type, code) { + let compareNum = type === 'province' ? 2 : type === 'city' ? 4 : 6; + const list = this.getList(type, code.slice(0, compareNum - 2)); + // oversea code + if (code[0] === '9' && type === 'province') { + compareNum = 1; + } + code = code.slice(0, compareNum); + for (let i = 0; i < list.length; i++) { + if (list[i].code.slice(0, compareNum) === code) { + return i; + } + } + return 0; + }, + setValues() { + const county = this.getConfig('county'); + let { code } = this; + if (!code) { + if (this.data.columnsPlaceholder.length) { + code = COLUMNSPLACEHOLDERCODE; + } else if (Object.keys(county)[0]) { + code = Object.keys(county)[0]; + } else { + code = ''; + } + } + const province = this.getList('province'); + const city = this.getList('city', code.slice(0, 2)); + const picker = this.getPicker(); + if (!picker) { + return; + } + const stack = []; + const indexes = []; + const { columnsNum } = this.data; + if (columnsNum >= 1) { + stack.push(picker.setColumnValues(0, province, false)); + indexes.push(this.getIndex('province', code)); + } + if (columnsNum >= 2) { + stack.push(picker.setColumnValues(1, city, false)); + indexes.push(this.getIndex('city', code)); + if (city.length && code.slice(2, 4) === '00') { + [{ code }] = city; + } + } + if (columnsNum === 3) { + stack.push( + picker.setColumnValues( + 2, + this.getList('county', code.slice(0, 4)), + false + ) + ); + indexes.push(this.getIndex('county', code)); + } + return Promise.all(stack) + .catch(() => {}) + .then(() => picker.setIndexes(indexes)) + .catch(() => {}); + }, + getValues() { + const picker = this.getPicker(); + return picker ? picker.getValues().filter((value) => !!value) : []; + }, + getDetail() { + const values = this.getValues(); + const area = { + code: '', + country: '', + province: '', + city: '', + county: '', + }; + if (!values.length) { + return area; + } + const names = values.map((item) => item.name); + area.code = values[values.length - 1].code; + if (area.code[0] === '9') { + area.country = names[1] || ''; + area.province = names[2] || ''; + } else { + area.province = names[0] || ''; + area.city = names[1] || ''; + area.county = names[2] || ''; + } + return area; + }, + reset(code) { + this.code = code || ''; + return this.setValues(); + }, + }, +}); diff --git a/wxcomponents/vant/area/index.json b/wxcomponents/vant/area/index.json new file mode 100644 index 0000000..a778e91 --- /dev/null +++ b/wxcomponents/vant/area/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-picker": "../picker/index" + } +} diff --git a/wxcomponents/vant/area/index.vue b/wxcomponents/vant/area/index.vue new file mode 100644 index 0000000..048dedd --- /dev/null +++ b/wxcomponents/vant/area/index.vue @@ -0,0 +1,243 @@ + + + + \ No newline at end of file diff --git a/wxcomponents/vant/area/index.wxml b/wxcomponents/vant/area/index.wxml new file mode 100644 index 0000000..6075794 --- /dev/null +++ b/wxcomponents/vant/area/index.wxml @@ -0,0 +1,18 @@ + diff --git a/wxcomponents/vant/area/index.wxss b/wxcomponents/vant/area/index.wxss new file mode 100644 index 0000000..99694d6 --- /dev/null +++ b/wxcomponents/vant/area/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss'; \ No newline at end of file diff --git a/wxcomponents/vant/button/index-loadingColor.wxs b/wxcomponents/vant/button/index-loadingColor.wxs new file mode 100644 index 0000000..be28f00 --- /dev/null +++ b/wxcomponents/vant/button/index-loadingColor.wxs @@ -0,0 +1,13 @@ + +function get(type, color,plain) { + if(plain) { + return color ? color: '#c9c9c9'; + } + + if(type === 'default') { + return '#c9c9c9'; + } + return 'white'; +} + +module.exports = get; diff --git a/wxcomponents/vant/button/index.d.ts b/wxcomponents/vant/button/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/wxcomponents/vant/button/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/wxcomponents/vant/button/index.js b/wxcomponents/vant/button/index.js new file mode 100644 index 0000000..1c42f46 --- /dev/null +++ b/wxcomponents/vant/button/index.js @@ -0,0 +1,80 @@ +import { VantComponent } from '../common/component'; +import { button } from '../mixins/button'; +import { openType } from '../mixins/open-type'; +import { canIUseFormFieldButton } from '../common/version'; +const mixins = [button, openType]; +if (canIUseFormFieldButton()) { + mixins.push('wx://form-field-button'); +} + +VantComponent({ + mixins, + classes: ['hover-class', 'loading-class'], + data: { + baseStyle: '', + }, + props: { + formType: String, + icon: String, + classPrefix: { + type: String, + value: 'van-icon', + }, + plain: Boolean, + block: Boolean, + round: Boolean, + square: Boolean, + loading: Boolean, + hairline: Boolean, + disabled: Boolean, + loadingText: String, + customStyle: String, + loadingType: { + type: String, + value: 'circular', + }, + type: { + type: String, + value: 'default', + }, + dataset: null, + size: { + type: String, + value: 'normal', + }, + loadingSize: { + type: String, + value: '20px', + }, + color: { + type: String, + observer(color) { + let style = ''; + if (color) { + style += `color: ${this.data.plain ? color : 'white'};`; + if (!this.data.plain) { + // Use background instead of backgroundColor to make linear-gradient work + style += `background: ${color};`; + } + // hide border when color is linear-gradient + if (color.indexOf('gradient') !== -1) { + style += 'border: 0;'; + } else { + style += `border-color: ${color};`; + } + } + if (style !== this.data.baseStyle) { + this.setData({ baseStyle: style }); + } + }, + }, + }, + methods: { + onClick() { + if (!this.data.loading) { + this.$emit('click'); + } + }, + noop() {}, + }, +}); diff --git a/wxcomponents/vant/button/index.json b/wxcomponents/vant/button/index.json new file mode 100644 index 0000000..e00a588 --- /dev/null +++ b/wxcomponents/vant/button/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "../icon/index", + "van-loading": "../loading/index" + } +} diff --git a/wxcomponents/vant/button/index.vue b/wxcomponents/vant/button/index.vue new file mode 100644 index 0000000..6b89d9c --- /dev/null +++ b/wxcomponents/vant/button/index.vue @@ -0,0 +1,108 @@ + + + + \ No newline at end of file diff --git a/wxcomponents/vant/button/index.wxml b/wxcomponents/vant/button/index.wxml new file mode 100644 index 0000000..ab393e8 --- /dev/null +++ b/wxcomponents/vant/button/index.wxml @@ -0,0 +1,68 @@ + + + + + + +function get(type, color,plain) { + if(plain) { + return color ? color: '#c9c9c9'; + } + + if(type === 'default') { + return '#c9c9c9'; + } + return 'white'; +} + +module.exports = get; + diff --git a/wxcomponents/vant/button/index.wxss b/wxcomponents/vant/button/index.wxss new file mode 100644 index 0000000..2c2cfe0 --- /dev/null +++ b/wxcomponents/vant/button/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-button{position:relative;display:-webkit-inline-flex;display:inline-flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;padding:0;text-align:center;vertical-align:middle;-webkit-appearance:none;-webkit-text-size-adjust:100%;height:44px;height:var(--button-default-height,44px);line-height:20px;line-height:var(--button-line-height,20px);font-size:16px;font-size:var(--button-default-font-size,16px);transition:opacity .2s;transition:opacity var(--animation-duration-fast,.2s);border-radius:2px;border-radius:var(--button-border-radius,2px)}.van-button:before{position:absolute;top:50%;left:50%;width:100%;height:100%;border:inherit;border-radius:inherit;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);opacity:0;content:" ";background-color:#000;background-color:var(--black,#000);border-color:#000;border-color:var(--black,#000)}.van-button:after{border-width:0}.van-button--active:before{opacity:.15}.van-button--unclickable:after{display:none}.van-button--default{color:#323233;color:var(--button-default-color,#323233);background:#fff;background:var(--button-default-background-color,#fff);border:1px solid #ebedf0;border:var(--button-border-width,1px) solid var(--button-default-border-color,#ebedf0)}.van-button--primary{color:#fff;color:var(--button-primary-color,#fff);background:#07c160;background:var(--button-primary-background-color,#07c160);border:1px solid #07c160;border:var(--button-border-width,1px) solid var(--button-primary-border-color,#07c160)}.van-button--info{color:#fff;color:var(--button-info-color,#fff);background:#1989fa;background:var(--button-info-background-color,#1989fa);border:1px solid #1989fa;border:var(--button-border-width,1px) solid var(--button-info-border-color,#1989fa)}.van-button--danger{color:#fff;color:var(--button-danger-color,#fff);background:#ce5b67;background:var(--button-danger-background-color,#ce5b67);border:1px solid #ce5b67;border:var(--button-border-width,1px) solid var(--button-danger-border-color,#ce5b67)}.van-button--warning{color:#fff;color:var(--button-warning-color,#fff);background:#ff976a;background:var(--button-warning-background-color,#ff976a);border:1px solid #ff976a;border:var(--button-border-width,1px) solid var(--button-warning-border-color,#ff976a)}.van-button--plain{background:#fff;background:var(--button-plain-background-color,#fff)}.van-button--plain.van-button--primary{color:#07c160;color:var(--button-primary-background-color,#07c160)}.van-button--plain.van-button--info{color:#1989fa;color:var(--button-info-background-color,#1989fa)}.van-button--plain.van-button--danger{color:#ce5b67;color:var(--button-danger-background-color,#ce5b67)}.van-button--plain.van-button--warning{color:#ff976a;color:var(--button-warning-background-color,#ff976a)}.van-button--large{width:100%;height:50px;height:var(--button-large-height,50px)}.van-button--normal{padding:0 15px;font-size:14px;font-size:var(--button-normal-font-size,14px)}.van-button--small{min-width:60px;min-width:var(--button-small-min-width,60px);height:30px;height:var(--button-small-height,30px);padding:0 8px;padding:0 var(--padding-xs,8px);font-size:12px;font-size:var(--button-small-font-size,12px)}.van-button--mini{display:inline-block;min-width:50px;min-width:var(--button-mini-min-width,50px);height:22px;height:var(--button-mini-height,22px);font-size:10px;font-size:var(--button-mini-font-size,10px)}.van-button--mini+.van-button--mini{margin-left:5px}.van-button--block{display:-webkit-flex;display:flex;width:100%}.van-button--round{border-radius:999px;border-radius:var(--button-round-border-radius,999px)}.van-button--square{border-radius:0}.van-button--disabled{opacity:.5;opacity:var(--button-disabled-opacity,.5)}.van-button__text{display:inline}.van-button__icon+.van-button__text:not(:empty),.van-button__loading-text{margin-left:4px}.van-button__icon{min-width:1em;line-height:inherit!important;vertical-align:top}.van-button--hairline{padding-top:1px;border-width:0}.van-button--hairline:after{border-color:inherit;border-width:1px;border-radius:4px;border-radius:calc(var(--button-border-radius, 2px)*2)}.van-button--hairline.van-button--round:after{border-radius:999px;border-radius:var(--button-round-border-radius,999px)}.van-button--hairline.van-button--square:after{border-radius:0} \ No newline at end of file diff --git a/wxcomponents/vant/calendar/calendar.vue b/wxcomponents/vant/calendar/calendar.vue new file mode 100644 index 0000000..ae5b251 --- /dev/null +++ b/wxcomponents/vant/calendar/calendar.vue @@ -0,0 +1,35 @@ + + + + \ No newline at end of file diff --git a/wxcomponents/vant/calendar/calendar.wxml b/wxcomponents/vant/calendar/calendar.wxml new file mode 100644 index 0000000..09a60b3 --- /dev/null +++ b/wxcomponents/vant/calendar/calendar.wxml @@ -0,0 +1,57 @@ + + + diff --git a/wxcomponents/vant/calendar/components/header/index.d.ts b/wxcomponents/vant/calendar/components/header/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/wxcomponents/vant/calendar/components/header/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/wxcomponents/vant/calendar/components/header/index.js b/wxcomponents/vant/calendar/components/header/index.js new file mode 100644 index 0000000..bf9243f --- /dev/null +++ b/wxcomponents/vant/calendar/components/header/index.js @@ -0,0 +1,16 @@ +import { VantComponent } from '../../../common/component'; +VantComponent({ + props: { + title: { + type: String, + value: '日期选择', + }, + subtitle: String, + showTitle: Boolean, + showSubtitle: Boolean, + }, + data: { + weekdays: ['日', '一', '二', '三', '四', '五', '六'], + }, + methods: {}, +}); diff --git a/wxcomponents/vant/calendar/components/header/index.json b/wxcomponents/vant/calendar/components/header/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/wxcomponents/vant/calendar/components/header/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/wxcomponents/vant/calendar/components/header/index.vue b/wxcomponents/vant/calendar/components/header/index.vue new file mode 100644 index 0000000..e92d1bc --- /dev/null +++ b/wxcomponents/vant/calendar/components/header/index.vue @@ -0,0 +1,43 @@ + + + + \ No newline at end of file diff --git a/wxcomponents/vant/calendar/components/header/index.wxml b/wxcomponents/vant/calendar/components/header/index.wxml new file mode 100644 index 0000000..eb8e4b4 --- /dev/null +++ b/wxcomponents/vant/calendar/components/header/index.wxml @@ -0,0 +1,16 @@ + + + + {{ title }} + + + + {{ subtitle }} + + + + + {{ item }} + + + diff --git a/wxcomponents/vant/calendar/components/header/index.wxss b/wxcomponents/vant/calendar/components/header/index.wxss new file mode 100644 index 0000000..4075e48 --- /dev/null +++ b/wxcomponents/vant/calendar/components/header/index.wxss @@ -0,0 +1 @@ +@import '../../../common/index.wxss';.van-calendar__header{-webkit-flex-shrink:0;flex-shrink:0;box-shadow:0 2px 10px rgba(125,126,128,.16);box-shadow:var(--calendar-header-box-shadow,0 2px 10px rgba(125,126,128,.16))}.van-calendar__header-subtitle,.van-calendar__header-title{text-align:center;height:44px;height:var(--calendar-header-title-height,44px);font-weight:500;font-weight:var(--font-weight-bold,500);line-height:44px;line-height:var(--calendar-header-title-height,44px)}.van-calendar__header-title+.van-calendar__header-title,.van-calendar__header-title:empty{display:none}.van-calendar__header-title:empty+.van-calendar__header-title{display:block!important}.van-calendar__weekdays{display:-webkit-flex;display:flex}.van-calendar__weekday{-webkit-flex:1;flex:1;text-align:center;font-size:12px;font-size:var(--calendar-weekdays-font-size,12px);line-height:30px;line-height:var(--calendar-weekdays-height,30px)} \ No newline at end of file diff --git a/wxcomponents/vant/calendar/components/month/index.d.ts b/wxcomponents/vant/calendar/components/month/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/wxcomponents/vant/calendar/components/month/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/wxcomponents/vant/calendar/components/month/index.js b/wxcomponents/vant/calendar/components/month/index.js new file mode 100644 index 0000000..90f5957 --- /dev/null +++ b/wxcomponents/vant/calendar/components/month/index.js @@ -0,0 +1,157 @@ +import { VantComponent } from '../../../common/component'; +import { + getMonthEndDay, + compareDay, + getPrevDay, + getNextDay, +} from '../../utils'; +VantComponent({ + props: { + date: { + type: null, + observer: 'setDays', + }, + type: { + type: String, + observer: 'setDays', + }, + color: String, + minDate: { + type: null, + observer: 'setDays', + }, + maxDate: { + type: null, + observer: 'setDays', + }, + showMark: Boolean, + rowHeight: [Number, String], + formatter: { + type: null, + observer: 'setDays', + }, + currentDate: { + type: [null, Array], + observer: 'setDays', + }, + allowSameDay: Boolean, + showSubtitle: Boolean, + showMonthTitle: Boolean, + }, + data: { + visible: true, + days: [], + }, + methods: { + onClick(event) { + const { index } = event.currentTarget.dataset; + const item = this.data.days[index]; + if (item.type !== 'disabled') { + this.$emit('click', item); + } + }, + setDays() { + const days = []; + const startDate = new Date(this.data.date); + const year = startDate.getFullYear(); + const month = startDate.getMonth(); + const totalDay = getMonthEndDay( + startDate.getFullYear(), + startDate.getMonth() + 1 + ); + for (let day = 1; day <= totalDay; day++) { + const date = new Date(year, month, day); + const type = this.getDayType(date); + let config = { + date, + type, + text: day, + bottomInfo: this.getBottomInfo(type), + }; + if (this.data.formatter) { + config = this.data.formatter(config); + } + days.push(config); + } + this.setData({ days }); + }, + getMultipleDayType(day) { + const { currentDate } = this.data; + if (!Array.isArray(currentDate)) { + return ''; + } + const isSelected = (date) => + currentDate.some((item) => compareDay(item, date) === 0); + if (isSelected(day)) { + const prevDay = getPrevDay(day); + const nextDay = getNextDay(day); + const prevSelected = isSelected(prevDay); + const nextSelected = isSelected(nextDay); + if (prevSelected && nextSelected) { + return 'multiple-middle'; + } + if (prevSelected) { + return 'end'; + } + return nextSelected ? 'start' : 'multiple-selected'; + } + return ''; + }, + getRangeDayType(day) { + const { currentDate, allowSameDay } = this.data; + if (!Array.isArray(currentDate)) { + return; + } + const [startDay, endDay] = currentDate; + if (!startDay) { + return; + } + const compareToStart = compareDay(day, startDay); + if (!endDay) { + return compareToStart === 0 ? 'start' : ''; + } + const compareToEnd = compareDay(day, endDay); + if (compareToStart === 0 && compareToEnd === 0 && allowSameDay) { + return 'start-end'; + } + if (compareToStart === 0) { + return 'start'; + } + if (compareToEnd === 0) { + return 'end'; + } + if (compareToStart > 0 && compareToEnd < 0) { + return 'middle'; + } + }, + getDayType(day) { + const { type, minDate, maxDate, currentDate } = this.data; + if (compareDay(day, minDate) < 0 || compareDay(day, maxDate) > 0) { + return 'disabled'; + } + if (type === 'single') { + return compareDay(day, currentDate) === 0 ? 'selected' : ''; + } + if (type === 'multiple') { + return this.getMultipleDayType(day); + } + /* istanbul ignore else */ + if (type === 'range') { + return this.getRangeDayType(day); + } + }, + getBottomInfo(type) { + if (this.data.type === 'range') { + if (type === 'start') { + return '开始'; + } + if (type === 'end') { + return '结束'; + } + if (type === 'start-end') { + return '开始/结束'; + } + } + }, + }, +}); diff --git a/wxcomponents/vant/calendar/components/month/index.json b/wxcomponents/vant/calendar/components/month/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/wxcomponents/vant/calendar/components/month/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/wxcomponents/vant/calendar/components/month/index.vue b/wxcomponents/vant/calendar/components/month/index.vue new file mode 100644 index 0000000..3857feb --- /dev/null +++ b/wxcomponents/vant/calendar/components/month/index.vue @@ -0,0 +1,197 @@ + + + + \ No newline at end of file diff --git a/wxcomponents/vant/calendar/components/month/index.wxml b/wxcomponents/vant/calendar/components/month/index.wxml new file mode 100644 index 0000000..55bab83 --- /dev/null +++ b/wxcomponents/vant/calendar/components/month/index.wxml @@ -0,0 +1,39 @@ + + + + + + {{ computed.formatMonthTitle(date) }} + + + + + {{ computed.getMark(date) }} + + + + + {{ item.topInfo }} + {{ item.text }} + + {{ item.bottomInfo }} + + + + + {{ item.topInfo }} + {{ item.text }} + + {{ item.bottomInfo }} + + + + + diff --git a/wxcomponents/vant/calendar/components/month/index.wxs b/wxcomponents/vant/calendar/components/month/index.wxs new file mode 100644 index 0000000..a057079 --- /dev/null +++ b/wxcomponents/vant/calendar/components/month/index.wxs @@ -0,0 +1,67 @@ +/* eslint-disable */ +var utils = require('../../utils.wxs'); + +function getMark(date) { + return getDate(date).getMonth() + 1; +} + +var ROW_HEIGHT = 64; + +function getDayStyle(type, index, date, rowHeight, color) { + var style = []; + var offset = getDate(date).getDay(); + + if (index === 0) { + style.push(['margin-left', (100 * offset) / 7 + '%']); + } + + if (rowHeight !== ROW_HEIGHT) { + style.push(['height', rowHeight + 'px']); + } + + if (color) { + if ( + type === 'start' || + type === 'end' || + type === 'multiple-selected' || + type === 'multiple-middle' + ) { + style.push(['background', color]); + } else if (type === 'middle') { + style.push(['color', color]); + } + } + + return style + .map(function(item) { + return item.join(':'); + }) + .join(';'); +} + +function formatMonthTitle(date) { + date = getDate(date); + return date.getFullYear() + '年' + (date.getMonth() + 1) + '月'; +} + +function getMonthStyle(visible, date, rowHeight) { + if (!visible) { + date = getDate(date); + + var totalDay = utils.getMonthEndDay( + date.getFullYear(), + date.getMonth() + 1 + ); + var offset = getDate(date).getDay(); + var padding = Math.ceil((totalDay + offset) / 7) * rowHeight; + + return 'padding-bottom:' + padding + 'px'; + } +} + +module.exports = { + getMark: getMark, + getDayStyle: getDayStyle, + formatMonthTitle: formatMonthTitle, + getMonthStyle: getMonthStyle +}; diff --git a/wxcomponents/vant/calendar/components/month/index.wxss b/wxcomponents/vant/calendar/components/month/index.wxss new file mode 100644 index 0000000..87e43a4 --- /dev/null +++ b/wxcomponents/vant/calendar/components/month/index.wxss @@ -0,0 +1 @@ +@import '../../../common/index.wxss';.van-calendar{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;height:100%;background-color:#fff;background-color:var(--calendar-background-color,#fff)}.van-calendar__month-title{text-align:center;height:44px;height:var(--calendar-header-title-height,44px);font-weight:500;font-weight:var(--font-weight-bold,500);font-size:14px;font-size:var(--calendar-month-title-font-size,14px);line-height:44px;line-height:var(--calendar-header-title-height,44px)}.van-calendar__days{position:relative;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-user-select:none;user-select:none}.van-calendar__month-mark{position:absolute;top:50%;left:50%;z-index:0;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);pointer-events:none;color:rgba(242,243,245,.8);color:var(--calendar-month-mark-color,rgba(242,243,245,.8));font-size:160px;font-size:var(--calendar-month-mark-font-size,160px)}.van-calendar__day,.van-calendar__selected-day{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;text-align:center}.van-calendar__day{position:relative;width:14.285%;height:64px;height:var(--calendar-day-height,64px);font-size:16px;font-size:var(--calendar-day-font-size,16px)}.van-calendar__day--end,.van-calendar__day--multiple-middle,.van-calendar__day--multiple-selected,.van-calendar__day--start,.van-calendar__day--start-end{color:#fff;color:var(--calendar-range-edge-color,#fff);background-color:#ce5b67;background-color:var(--calendar-range-edge-background-color,#ce5b67)}.van-calendar__day--start{border-radius:4px 0 0 4px;border-radius:var(--border-radius-md,4px) 0 0 var(--border-radius-md,4px)}.van-calendar__day--end{border-radius:0 4px 4px 0;border-radius:0 var(--border-radius-md,4px) var(--border-radius-md,4px) 0}.van-calendar__day--multiple-selected,.van-calendar__day--start-end{border-radius:4px;border-radius:var(--border-radius-md,4px)}.van-calendar__day--middle{color:#ce5b67;color:var(--calendar-range-middle-color,#ce5b67)}.van-calendar__day--middle:after{position:absolute;top:0;right:0;bottom:0;left:0;background-color:currentColor;content:"";opacity:.1;opacity:var(--calendar-range-middle-background-opacity,.1)}.van-calendar__day--disabled{cursor:default;color:#c8c9cc;color:var(--calendar-day-disabled-color,#c8c9cc)}.van-calendar__bottom-info,.van-calendar__top-info{position:absolute;right:0;left:0;font-size:10px;font-size:var(--calendar-info-font-size,10px);line-height:14px;line-height:var(--calendar-info-line-height,14px)}@media (max-width:350px){.van-calendar__bottom-info,.van-calendar__top-info{font-size:9px}}.van-calendar__top-info{top:6px}.van-calendar__bottom-info{bottom:6px}.van-calendar__selected-day{width:54px;width:var(--calendar-selected-day-size,54px);height:54px;height:var(--calendar-selected-day-size,54px);color:#fff;color:var(--calendar-selected-day-color,#fff);background-color:#ce5b67;background-color:var(--calendar-selected-day-background-color,#ce5b67);border-radius:4px;border-radius:var(--border-radius-md,4px)} \ No newline at end of file diff --git a/wxcomponents/vant/calendar/index.d.ts b/wxcomponents/vant/calendar/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/wxcomponents/vant/calendar/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/wxcomponents/vant/calendar/index.js b/wxcomponents/vant/calendar/index.js new file mode 100644 index 0000000..e953c6f --- /dev/null +++ b/wxcomponents/vant/calendar/index.js @@ -0,0 +1,290 @@ +import { VantComponent } from '../common/component'; +import { + ROW_HEIGHT, + getNextDay, + compareDay, + copyDates, + calcDateNum, + formatMonthTitle, + compareMonth, + getMonths, + getDayByOffset, +} from './utils'; +import Toast from '../toast/toast'; +VantComponent({ + props: { + title: { + type: String, + value: '日期选择', + }, + color: String, + show: { + type: Boolean, + observer(val) { + if (val) { + this.initRect(); + this.scrollIntoView(); + } + }, + }, + formatter: null, + confirmText: { + type: String, + value: '确定', + }, + rangePrompt: String, + defaultDate: { + type: [Number, Array], + observer(val) { + this.setData({ currentDate: val }); + this.scrollIntoView(); + }, + }, + allowSameDay: Boolean, + confirmDisabledText: String, + type: { + type: String, + value: 'single', + observer: 'reset', + }, + minDate: { + type: null, + value: Date.now(), + }, + maxDate: { + type: null, + value: new Date( + new Date().getFullYear(), + new Date().getMonth() + 6, + new Date().getDate() + ).getTime(), + }, + position: { + type: String, + value: 'bottom', + }, + rowHeight: { + type: [Number, String], + value: ROW_HEIGHT, + }, + round: { + type: Boolean, + value: true, + }, + poppable: { + type: Boolean, + value: true, + }, + showMark: { + type: Boolean, + value: true, + }, + showTitle: { + type: Boolean, + value: true, + }, + showConfirm: { + type: Boolean, + value: true, + }, + showSubtitle: { + type: Boolean, + value: true, + }, + safeAreaInsetBottom: { + type: Boolean, + value: true, + }, + closeOnClickOverlay: { + type: Boolean, + value: true, + }, + maxRange: { + type: [Number, String], + value: null, + }, + }, + data: { + subtitle: '', + currentDate: null, + scrollIntoView: '', + }, + created() { + this.setData({ + currentDate: this.getInitialDate(), + }); + }, + mounted() { + if (this.data.show || !this.data.poppable) { + this.initRect(); + this.scrollIntoView(); + } + }, + methods: { + reset() { + this.setData({ currentDate: this.getInitialDate() }); + this.scrollIntoView(); + }, + initRect() { + if (this.contentObserver != null) { + this.contentObserver.disconnect(); + } + const contentObserver = this.createIntersectionObserver({ + thresholds: [0, 0.1, 0.9, 1], + observeAll: true, + }); + this.contentObserver = contentObserver; + contentObserver.relativeTo('.van-calendar__body'); + contentObserver.observe('.month', (res) => { + if (res.boundingClientRect.top <= res.relativeRect.top) { + // @ts-ignore + this.setData({ subtitle: formatMonthTitle(res.dataset.date) }); + } + }); + }, + getInitialDate() { + const { type, defaultDate, minDate } = this.data; + if (type === 'range') { + const [startDay, endDay] = defaultDate || []; + return [ + startDay || minDate, + endDay || getNextDay(new Date(minDate)).getTime(), + ]; + } + if (type === 'multiple') { + return defaultDate || [minDate]; + } + return defaultDate || minDate; + }, + scrollIntoView() { + setTimeout(() => { + const { + currentDate, + type, + show, + poppable, + minDate, + maxDate, + } = this.data; + const targetDate = type === 'single' ? currentDate : currentDate[0]; + const displayed = show || !poppable; + if (!targetDate || !displayed) { + return; + } + const months = getMonths(minDate, maxDate); + months.some((month, index) => { + if (compareMonth(month, targetDate) === 0) { + this.setData({ scrollIntoView: `month${index}` }); + return true; + } + return false; + }); + }, 100); + }, + onOpen() { + this.$emit('open'); + }, + onOpened() { + this.$emit('opened'); + }, + onClose() { + this.$emit('close'); + }, + onClosed() { + this.$emit('closed'); + }, + onClickDay(event) { + const { date } = event.detail; + const { type, currentDate, allowSameDay } = this.data; + if (type === 'range') { + const [startDay, endDay] = currentDate; + if (startDay && !endDay) { + const compareToStart = compareDay(date, startDay); + if (compareToStart === 1) { + this.select([startDay, date], true); + } else if (compareToStart === -1) { + this.select([date, null]); + } else if (allowSameDay) { + this.select([date, date]); + } + } else { + this.select([date, null]); + } + } else if (type === 'multiple') { + let selectedIndex; + const selected = currentDate.some((dateItem, index) => { + const equal = compareDay(dateItem, date) === 0; + if (equal) { + selectedIndex = index; + } + return equal; + }); + if (selected) { + const cancelDate = currentDate.splice(selectedIndex, 1); + this.setData({ currentDate }); + this.unselect(cancelDate); + } else { + this.select([...currentDate, date]); + } + } else { + this.select(date, true); + } + }, + unselect(dateArray) { + const date = dateArray[0]; + if (date) { + this.$emit('unselect', copyDates(date)); + } + }, + select(date, complete) { + if (complete && this.data.type === 'range') { + const valid = this.checkRange(date); + if (!valid) { + // auto selected to max range if showConfirm + if (this.data.showConfirm) { + this.emit([ + date[0], + getDayByOffset(date[0], this.data.maxRange - 1), + ]); + } else { + this.emit(date); + } + return; + } + } + this.emit(date); + if (complete && !this.data.showConfirm) { + this.onConfirm(); + } + }, + emit(date) { + const getTime = (date) => (date instanceof Date ? date.getTime() : date); + this.setData({ + currentDate: Array.isArray(date) ? date.map(getTime) : getTime(date), + }); + this.$emit('select', copyDates(date)); + }, + checkRange(date) { + const { maxRange, rangePrompt } = this.data; + if (maxRange && calcDateNum(date) > maxRange) { + Toast({ + context: this, + message: rangePrompt || `选择天数不能超过 ${maxRange} 天`, + }); + return false; + } + return true; + }, + onConfirm() { + if ( + this.data.type === 'range' && + !this.checkRange(this.data.currentDate) + ) { + return; + } + wx.nextTick(() => { + this.$emit('confirm', copyDates(this.data.currentDate)); + }); + }, + }, +}); diff --git a/wxcomponents/vant/calendar/index.json b/wxcomponents/vant/calendar/index.json new file mode 100644 index 0000000..397d5ae --- /dev/null +++ b/wxcomponents/vant/calendar/index.json @@ -0,0 +1,10 @@ +{ + "component": true, + "usingComponents": { + "header": "./components/header/index", + "month": "./components/month/index", + "van-button": "../button/index", + "van-popup": "../popup/index", + "van-toast": "../toast/index" + } +} diff --git a/wxcomponents/vant/calendar/index.vue b/wxcomponents/vant/calendar/index.vue new file mode 100644 index 0000000..1c1dc54 --- /dev/null +++ b/wxcomponents/vant/calendar/index.vue @@ -0,0 +1,318 @@ + + + + \ No newline at end of file diff --git a/wxcomponents/vant/calendar/index.wxml b/wxcomponents/vant/calendar/index.wxml new file mode 100644 index 0000000..d4849cc --- /dev/null +++ b/wxcomponents/vant/calendar/index.wxml @@ -0,0 +1,31 @@ + + + + + +